Cách virus xâm nhập vào máy tính: bảo mật máy tính. Phần mềm độc hại. Làm thế nào để nhìn thấy chúng

Virus tệp chỉ có thể được nhúng trong các tệp thực thi: tập tin hàng loạt(các tệp bao gồm các lệnh của hệ điều hành), các tệp tự giải nén, các chương trình người dùng và hệ thống trong mã máy, cũng như vào các tài liệu (bảng) có lệnh macro (macro).

Đối với các PC tương thích với IBM, virus có thể được nhúng vào các tệp các loại sau: tệp bó (BAT), trình điều khiển có thể tải xuống (SYS), chương trình trong mã máy (nhị phân) (EXE, COM), tài liệu Word (DOC) từ phiên bản 6.0 trở lên, bảng EXCEL (XLS). Virus macro cũng có thể được nhúng vào các tệp khác chứa lệnh macro.

Virus tập tin có thể nằm ở đầu, giữa và cuối của tập tin bị nhiễm.

Bất kể vị trí của vi-rút trong phần nội dung của tệp bị nhiễm, sau khi quyền điều khiển được chuyển đến tệp, các lệnh vi-rút sẽ được thực thi trước tiên.

Về đầu tập tin Virus được đưa vào theo một trong ba cách:

cách đầu tiên là viết lại tập tin đến cuối và vi-rút được ghi vào vùng trống;

thứ hai liên quan đến việc đọc vi-rút và tệp bị nhiễm vào RAM, kết hợp chúng thành một tệp và ghi nó vào vị trí của tệp;

thứ ba - vi-rút được ghi vào đầu tệp mà không lưu nội dung (trong trường hợp này, tệp bị nhiễm sẽ không thể hoạt động được).

Đến giữa tập tin Virus cũng có thể được viết theo nhiều cách khác nhau:

đầu tiên - tệp có thể được "mở rộng" và vi-rút có thể được ghi vào không gian trống;

thứ hai - vi-rút có thể được nhúng vào giữa tệp mà không lưu phần tệp nơi vi-rút được đặt;

loại thứ ba (vi-rút "Mutant") sử dụng phương pháp nén các phần riêng lẻ của tệp và độ dài của tệp có thể không thay đổi sau khi vi-rút xâm nhập.

Thông thường virus được giới thiệu đến cuối tập tin, trong khi các lệnh đầu tiên của tệp được thay thế bằng các lệnh đi vào phần thân của vi-rút.

Thuật toán tìm virus tập tin có thể như sau:

1) virus thường trú kiểm tra xem ĐẬP, và nếu cần thiết sẽ lây nhiễm cho cô ấy. Một loại vi-rút không cư trú sẽ tìm kiếm các tệp không bị nhiễm và lây nhiễm chúng;

2) các hành động được thực hiện để duy trì chức năng của chương trình mà vi-rút được nhúng vào (khôi phục các byte đầu tiên của chương trình, đặt địa chỉ chương trình, v.v.);

3) chức năng phá hủy của virus được thực hiện nếu đáp ứng các điều kiện thích hợp;

4) quyền kiểm soát được chuyển đến chương trình có tệp chứa vi-rút.

Vì sự tồn tại virus macrovirus(vi-rút được viết bằng ngôn ngữ macro, được tích hợp trong trình soạn thảo văn bản, bảng tính, v.v.) trong một hệ thống (trình soạn thảo) cụ thể, ngôn ngữ macro được tích hợp trong đó cần phải có các khả năng sau:

Liên kết chương trình bằng ngôn ngữ macro với một tệp cụ thể;

Sao chép các chương trình macro từ tệp này sang tệp khác;

Giành quyền kiểm soát chương trình macro mà không cần sự can thiệp của người dùng.

Các điều kiện này được đáp ứng bởi các trình soạn thảo MS Word, MS Office, Ami Pro và bộ xử lý bảng tính MS Excel (các hệ thống này sử dụng ngôn ngữ macro Word Basic và Visual Basic).

Bằng cách làm hành động nhất định Macro tệp được thực thi tự động trên các tệp chứa chương trình macro (mở, lưu, đóng, v.v.). Trong trường hợp này, quyền kiểm soát được trao cho vi-rút macro, vi-rút này vẫn hoạt động miễn là trình soạn thảo (bộ xử lý) tương ứng còn hoạt động. Do đó, khi làm việc với một tệp khác trong “trình soạn thảo (bộ xử lý) bị nhiễm”, tệp đó cũng bị nhiễm.

Như bạn đã biết, virus máy tính đầu tiên là tài liệu. Chúng là những thứ thường được phân phối trên đĩa mềm khi trao đổi trò chơi. Ngày nay có nhiều hơn virus nguy hiểm Tuy nhiên, virus tập tin có thể gây ra tác hại đáng kể.

Nguyên lý hoạt động của virus tập tin là gì?

Tập tin virusđại diện virus máy tính, gắn mã của nó vào phần nội dung của tài liệu hoặc chương trình và bắt đầu hoạt động và tái tạo khi nó được sử dụng. Sau khi nhận được quyền kiểm soát, anh ta có thể chuyển nội dung của mình sang bất kỳ tệp nào nằm trên đĩa. Khi lây nhiễm vào một tập tin, nó có thể tự gắn vào phần đầu, phần giữa hoặc phần cuối của nó. Sau khi được đính kèm vào một tệp, vi-rút có khả năng lây nhiễm các tệp khác, để lại các mô-đun thường trú của nó trong bộ nhớ hoặc thực hiện các hành động độc hại khác.

Thường xuyên, virus tập tinảnh hưởng đến tất cả các loại đối tượng thực thi DOS tiêu chuẩn: trình điều khiển, tệp lệnh và nhị phân thực thi cũng như các tệp thư viện động và khác. Trong trường hợp này, người dùng có thể không nhận thấy tác động của virus. Để không đánh mất chính mình, vi-rút này ban đầu có thể ghi lại ngày và giờ phiên bản mới nhất và đặc điểm các thuộc tính của tệp bị nhiễm nhằm khôi phục thông tin này sau khi bị nhiễm.

Các loại virus tập tin:

1. Virus tàng hình(Vi rút vô hình) - vi rút bằng cách chặn thông tin về các tệp bị nhiễm và bị thay đổi, che giấu một phần hoặc toàn bộ sự hiện diện của chúng trong hệ thống.

2. Virus đa hình- vi-rút mã hóa mã của chúng và cũng sử dụng phương pháp giải mã đặc biệt tự sửa đổi trong mỗi bản sao mới của vi-rút.

3. Virus vệ tinh(đồng hành) - vi-rút khi được phân phối sẽ tạo trong một thư mục tập tin bổ sung có cùng tên và phần mở rộng COM. File chứa mã virus này đóng vai trò đồng hành với file EXE.

4. Virus vĩ mô- virus lây nhiễm vào các tập tin được tạo bởi chương trình Phần mềm soạn thảo văn bản, Excel và các trình soạn thảo phổ biến khác.

Việc cài đặt sẽ giúp bạn tránh bị nhiễm virus. phần mềm diệt virus chất lượng cao và cập nhật thường xuyên cũng như lướt Internet cẩn thận. Nếu PC của bạn bị xâm nhập virus tập tin, đừng vội tự mình loại bỏ nó; tốt hơn hết bạn nên liên hệ với các chuyên gia về vấn đề này -.

Vì vậy, hôm nay chúng tôi sẽ nói chuyện với bạn về cách loại bỏ vi-rút khỏi máy tính của bạn theo cách thủ công. Ngoài ra, chúng ta sẽ xem xét những gì Trojan có thể được tìm thấy, cách chúng biểu hiện và nơi chúng có thể được đưa vào máy tính. Hãy nhanh chóng bắt đầu nghiên cứu chủ đề của chúng tôi ngày hôm nay.

Các loại virus

Chà, nhưng trước khi bạn loại bỏ vi-rút khỏi máy tính theo cách thủ công, bạn nên trao đổi với bạn về loại lây nhiễm thường thấy trên máy tính của bạn. Thật vậy, trong hầu hết các trường hợp, điều này quyết định cách thức điều trị nên được thực hiện. Vậy hãy bắt đầu.

Virus đầu tiên là Trojan. Đại diện cho chính nó tập tin độc hại, thứ này “lắng đọng” trong hệ điều hành và thậm chí gây hại cho nó. Ví dụ, nó làm hỏng hoặc phá hủy các tài liệu quan trọng. Bây giờ có rất nhiều trong số họ.

Loại virus khá phổ biến thứ hai là nhiều loại ransomware. Đây là những tập tin xâm nhập vào hệ thống và chặn nó. Nhưng không phải bằng cách phá hủy mà chỉ bằng cách mã hóa tài liệu. Khi kết thúc mật mã như vậy, theo quy định, e-mail của người tạo sẽ được để lại, phải chuyển một số tiền nhất định để đưa tài liệu về dạng ban đầu.

Tất nhiên, loại vi-rút thứ ba mà bạn có thể phát hiện là nhiều tiện ích bổ sung của trình duyệt hoặc thư rác. Theo quy định, chúng can thiệp rất nhiều vào công việc của bạn trên Internet. Điều này xảy ra do trang bắt đầu của người dùng có thể thay đổi, cộng với mọi thứ trong trình duyệt sẽ được định vị biểu ngữ quảng cáo. Khi người dùng nhìn thấy hình ảnh này, họ nghĩ ngay đến việc làm thế nào để tìm ra virus trên máy tính của mình một cách thủ công rồi loại bỏ chúng. Bây giờ chúng ta sẽ cố gắng tìm ra điều này.

Dấu hiệu nhiễm trùng

Vì vậy, trước khi bạn tìm thấy vi-rút theo cách thủ công và loại bỏ chúng một lần và mãi mãi, chúng ta hãy cố gắng tìm hiểu điều gì có thể cho bạn biết rằng có sự lây nhiễm máy tính trong hệ thống. Rốt cuộc, nếu bạn phát hiện tín hiệu kịp thời, bạn có thể tránh được thiệt hại số lượng lớn tập tin và mất hệ điều hành.

Đầu tiên, hầu hết một dấu hiệu rõ ràng- đây không gì khác hơn là những tin nhắn từ chương trình chống vi-rút của bạn. Nó sẽ "chửi thề" trước một số tài liệu và tập tin, cho bạn biết tên của loại virus được cho là. Đúng, đôi khi phần mềm chống vi-rút hoạt động theo cách này liên quan đến nhiều vết nứt và "máy tính bảng" khác nhau trò chơi máy tính. Tuy nhiên, điều này không thể bỏ qua.

Tình huống thứ hai là máy tính của bạn bắt đầu chạy chậm lại. Đây là lúc người dùng bắt đầu tích cực suy nghĩ về cách loại bỏ vi-rút theo cách thủ công, đặc biệt nếu họ không có phần mềm chống vi-rút. Vì vậy, ngay khi bạn nhận thấy hệ thống của mình đã trở nên chậm chạp, hãy bắt đầu phát ra âm thanh cảnh báo.

Tình huống tiếp theo là các chương trình mới mà bạn không cài đặt bắt đầu xuất hiện trên máy tính của bạn. Một động thái khá phổ biến trong số các trường hợp lây nhiễm máy tính.

Ngoài ra, quảng cáo trên trình duyệt cũng có thể cho thấy máy tính của bạn đã bị nhiễm virus. Thay đổi trang chủ không có khả năng phục hồi, các biểu ngữ quảng cáo khắp nơi - tất cả đều là những tín hiệu khá đáng báo động. Vì vậy, hãy nhanh chóng xem cách nó hoạt động từ máy tính theo cách thủ công.

Tìm kiếm

Chà, điều đầu tiên cần làm là bắt đầu bằng cách tìm kiếm những nơi bị nhiễm trùng. Đôi khi điều này rất khó thực hiện. Đặc biệt nếu bạn không có chương trình chống vi-rút. Nói chung, hãy xem những gì có thể được thực hiện trong tình huống này.

Vì vậy, khi bạn quyết định tự mình đánh bại vi-rút, bạn sẽ phải tìm thư mục trên máy tính nơi nó được lưu trữ. Đôi khi sự lây nhiễm tự bộc lộ bằng cách tạo các quy trình riêng trong Mở nó (Ctrl + Alt + Del), sau đó chuyển đến tab “quy trình”. Bây giờ hãy tìm bất kỳ dòng đáng ngờ nào ở đó (nó sẽ có tên lạ hoặc thậm chí được ký bằng chữ tượng hình) và nhấp vào nút “hiển thị vị trí tệp”. Xong, virus đã được tìm thấy.

Đúng, không phải mọi thứ luôn dễ dàng và đơn giản như vậy. Nếu bạn đang nghĩ cách loại bỏ vi-rút khỏi máy tính theo cách thủ công thì bạn cũng nên biết rằng việc lây nhiễm vi-rút trên máy tính thường được ẩn giấu rất kỹ. Trong phần hiển thị các thư mục, hãy chọn hộp "hiển thị và thư mục". Bây giờ việc tìm kiếm sẽ dễ dàng hơn nhiều.

Cũng nên nhớ rằng họ rất thường xuyên “ổn định” thư mục Windows. Ví dụ: hầu hết các Trojan đều được tìm thấy trong System32. Một số bệnh nhiễm trùng có thể “đăng ký” trong tập tin máy chủ. Chúng tôi biết những nơi ưa thích của virus. Nhưng làm thế nào để thoát khỏi chúng?

Séc

Kịch bản đầu tiên là tự động loại bỏ sự lây nhiễm. Chính xác hơn là bán tự động. Đó là về o về sự hiện diện của vi-rút khi sử dụng chương trình chống vi-rút.

Để cung cấp cho mình bảo vệ đáng tin cậy dữ liệu, tích trữ một phần mềm diệt virus tốt. Dr.Web thật tuyệt vời. Nếu không thích, bạn cũng có thể thử Nod32. Anh ấy làm việc cũng khá tốt.

Vuốt kiểm tra sâu. Sau khi chương trình cung cấp cho bạn kết quả, hãy thử khử trùng tài liệu một cách tự động. Không thành công? Sau đó xóa chúng. Đúng, nếu bạn đang nghĩ về cách loại bỏ vi-rút khỏi máy tính của mình theo cách thủ công thì rất có thể việc quét vi-rút không giúp ích được gì cho bạn. Hãy xem những gì khác có thể được thực hiện.

Xóa chương trình

Tất nhiên, bước thứ hai để chữa lành hệ thống là xóa các nội dung khác nhau mà vi-rút đã dạy cho bạn. Điều này khá phổ biến. Vì vậy, hãy nhìn vào “bảng điều khiển” và từ đó chuyển đến “thêm hoặc xóa chương trình”. Đợi một chút trong khi quá trình quét nội dung trên máy tính của bạn hoàn tất.

Khi danh sách các chương trình xuất hiện trước mặt bạn, hãy xóa mọi thứ bạn không sử dụng. Đặc biệt chú ý chú ý đến nội dung mà bạn không cài đặt. Hoặc thực tế là nó xuất hiện dưới dạng một “đoạn giới thiệu” sau khi quá trình cài đặt một số “chương trình” khác hoàn tất. Bấm vào dòng cần thiết click chuột phải chuột, sau đó chọn lệnh “xóa”. Sẵn sàng? Sau đó, bạn có thể suy nghĩ thêm về cách loại bỏ vi-rút khỏi máy tính của mình theo cách thủ công.

Tổng số lần quét

Bây giờ chúng ta hãy sử dụng một số dịch vụ và kỹ thuật chắc chắn sẽ giúp ích cho chúng ta. Nếu bạn biết tên của vi-rút (đặc biệt nếu bạn gặp phải thư rác), thì việc tìm kiếm sự lây nhiễm bằng sổ đăng ký máy tính là phù hợp với bạn.

Để đi đến dịch vụ cần thiết, nhấn tổ hợp Giành chìa khóa+R rồi chạy lệnh "regedit". Hãy xem những gì xuất hiện trước mặt bạn. Bên trái cửa sổ có các thư mục có tên dài và không rõ ràng. Chính trong đó virus thường ẩn náu. Nhưng chúng tôi sẽ làm cho công việc tìm kiếm của mình dễ dàng hơn một chút. Chỉ cần vào “chỉnh sửa” và sau đó nhấp vào “tìm kiếm”. Nhập tên của virus và sau đó thực hiện quét.

Sau khi nhận được kết quả, tất cả các dòng xuất hiện phải được xóa. Để thực hiện việc này, hãy nhấp vào từng cái lần lượt, sau đó chọn lệnh cần thiết. Tất cả đã sẵn sàng? Sau đó khởi động lại máy tính của bạn. Bây giờ bạn đã biết cách loại bỏ vi-rút khỏi máy tính theo cách thủ công.

Virus máy tính- một chủ đề sẽ không bao giờ ngừng có liên quan. Cụ thể hơn là cuộc chiến chống lại chúng và chương trình nào bảo vệ máy tính của bạn tốt nhất.

Tất nhiên, một số người dùng đọc bài viết này tự tin rằng hệ thống của họ đáng tin cậy và được bảo vệ 100%. Đây là những người dùng tin rằng phần mềm diệt virus tốt nhất là "thẳng" chỉ sử dụng và cài đặt các tiện ích bảo mật để kiểm tra các thay đổi trong quá trình khởi động, đăng ký và những thứ khác. Bài viết này phần lớn được viết dành cho những người dùng như vậy.

Bạn đã bao giờ tự hỏi nguồn cầu về các chương trình diệt virus đến từ đâu chưa? Rốt cuộc, tất cả các bạn đều đã nghe nói về các bài kiểm tra xác định rằng phần mềm chống vi-rút này tốt hơn phần mềm chống vi-rút khác dựa trên các đặc điểm này và đặc điểm khác.

Tôi đã nói về phần mềm chống vi-rút trong video này:

Phần mềm diệt virus nào tốt hơn? Ý kiến ​​của các YouTuber IT

Tất cả những bài kiểm tra này được hình thành như thế nào? Lý tưởng nhất là bức tranh như thế này: các chuyên gia của công ty đã viết virus khác nhau những người đang cố gắng lây nhiễm phiên bản khác nhau hệ điều hành mà chúng được cài đặt trên đó phần mềm diệt virus khác nhau và điều kiện cũng khác nhau. Sau khi thử nghiệm quy mô lớn như vậy, kết quả sẽ được tổng hợp và viết báo cáo. Đồng ý, mọi thứ đều hợp lý. Và kết quả kiểm tra của mỗi chuyên gia cũng có thể khác nhau, vì họ có các điều kiện hoàn toàn khác nhau để kiểm tra chương trình chống vi-rút.

Hiện nay có các trang web trên Internet nơi bạn có thể tải xuống vi-rút để kiểm tra hệ thống của chính bạn để tìm kiếm những điều trên. Tôi chắc chắn bạn hiểu điều này có thể dẫn đến điều gì.

Hãy rõ ràng ngay lập tức. Tất cả các bạn đều suy nghĩ hợp lý và là chủ sở hữu của PC của mình. Do đó, nếu sau khi tải xuống một loại vi-rút như vậy từ trang web mà tôi đề xuất, toàn bộ hệ thống, ảnh, video, mật khẩu, v.v. của bạn gặp sự cố, đừng đổ lỗi cho tôi về điều này. Bạn chỉ tải xuống vi-rút và chịu rủi ro. Sử dụng thông tin nhận được một cách chính xác. Không đưa link tải cho bạn bè, trẻ em, phụ nữ mang thai và động vật))). Bạn không nên hoàn toàn tin tưởng vào hệ thống của mình vì bạn không biết những loại virus này ẩn chứa điều gì. Nhìn chung, bài viết này chỉ nhằm mục đích cung cấp thông tin chứ không nhằm mục đích áp dụng kiến ​​thức đã học vào thực tế.

Đã trở lại năm 2013, Kaspersky"đã tạo ra virus thử nghiệm đầu tiên của mình" Eicar". Nhiệm vụ chính của anh là nắm quyền điều khiển hệ thống, hiển thị tin nhắn đúng, và một lần nữa trao toàn bộ sức mạnh cho hệ thống. Bạn có thể tải nó từ liên kết này. bạn sẽ tìm thấy vi-rút để quét PC của mình, có vi-rút đủ màu sắc và mùi vị. Liên kết để tải chúng nằm trong cột "Miền""Bạn chỉ cần mở link ở cửa sổ mới. Đây là một địa chỉ khác có vi-rút, liên kết đến địa chỉ này nằm trong cột “Nguồn”.

Để tải xuống vi-rút từ dịch vụ này, có thể cần phải đăng ký. Nếu liên kết được đánh dấu màu xanh lá, nghĩa là có virus ở đó. Màu vàng có nghĩa là hầu hết virus trong kho lưu trữ đã bị loại bỏ. Như bạn đã hiểu, các liên kết có màu đỏ không có vi-rút.

http://www.virusign.com là một dịch vụ khác hoàn toàn bằng tiếng Nga.

Bằng cách nhấp vào liên kết này http://openmalware.org, bạn chắc chắn cần biết tên của vi-rút để tìm thấy nó trong cơ sở dữ liệu. Cần thiết trên trang tải xuống đăng ký bắt buộcđể tải xuống.

Và cuối cùng, một kho lưu trữ chứa 20.000 vi-rút - mật khẩu 111. Vâng, có những sinh vật rất xấu xa ở đó và không phải tất cả các phần mềm chống vi-rút đều có thể cứu bạn khỏi chúng!

Tôi nghĩ số tiền này sẽ đủ cho bạn cơ sở dữ liệu virus. Đừng đánh giá thấp những loại vi-rút này và cho rằng chúng chỉ có khả năng làm căng thẳng phần mềm chống vi-rút của bạn một chút. Rất có thể, có những chương trình độc hại mà phần mềm chống vi-rút thậm chí có thể không nhận thấy. Vì vậy, tôi nhắc lại, trước tiên hãy suy nghĩ ba lần trước khi sắp xếp các cuộc kiểm tra như vậy đối với bạn. chương trình chống vi rút. Nếu máy tính của bạn gặp sự cố thì chỉ có bạn phải chịu trách nhiệm!Tất cả các virus trên trang này chỉ nhằm mục đích cung cấp thông tin!

Nếu bạn vẫn bị lây nhiễm, hãy xem danh sách phát loại bỏ vi-rút này:

Loại bỏ tất cả virus khỏi máy tính của bạn


Cảm ơn bạn đã ở bên chúng tôi và không bao giờ bị nhiễm bệnh!

Hãy nói về virus máy tính? Không, không phải về những gì phần mềm chống vi-rút của bạn phát hiện được ngày hôm qua. Không phải về những gì bạn đã tải xuống dưới dạng trình cài đặt cho Photoshop tiếp theo. Không phải về rootkit-e nằm trên máy chủ của bạn, giả dạng quy trình hệ thống. Không phải về thanh tìm kiếm, trình tải xuống và phần mềm độc hại khác. Không phải về mã làm những điều xấu thay mặt bạn và muốn tiền của bạn. Không, tất cả chỉ là thương mại, không có chuyện tình cảm...

Chúng ta sẽ nói về virus máy tính như một loại mã có khả năng tạo ra các bản sao của riêng nó, thay đổi từ thế hệ này sang thế hệ khác. Giống như các đối tác sinh học của nó, nó yêu cầu một tệp mang có chức năng và duy trì chức năng để mang lại sự sống cho các thế hệ vi rút mới. Việc tái tạo đòi hỏi một môi trường màu mỡ, nhiều tệp thực thi ngon lành, cũng như nhiều thứ ngu ngốc và người dùng đang hoạt độngđể họ có thể phóng chúng. Vì vậy cái tên “virus” không chỉ là một cái tên đẹp đẽ để mô tả nó phần mềm độc hại, virus máy tính, theo nghĩa cổ điển, là một thực thể rất gần với đối tác sinh học của nó. Nhân loại, như đã được chứng minh nhiều lần, có khả năng tạo ra những giải pháp rất tinh vi, đặc biệt là khi tạo ra thứ gì đó có hại cho người khác.

Vì vậy, cách đây rất lâu, sau khi DOS đến với mọi người và mỗi lập trình viên có vũ trụ nhỏ của riêng mình, nơi không gian địa chỉ giống nhau và quyền truy cập tệp luôn là rwx, ý tưởng nảy sinh về việc liệu một chương trình có thể tự sao chép hay không. “Tất nhiên là có thể!” lập trình viên nói và viết mã sao chép tệp thực thi của chính nó. Ý nghĩ tiếp theo là “hai chương trình có thể kết hợp thành một được không?” “Tất nhiên là họ có thể!” lập trình viên nói và viết kẻ lây nhiễm đầu tiên. "Nhưng tại sao?" - anh nghĩ, và đây trở thành sự khởi đầu của kỷ nguyên virus máy tính. Hóa ra, việc làm hỏng máy tính và cố gắng bằng mọi cách có thể để tránh bị phát hiện là một điều thú vị, và việc tạo ra vi-rút là một công việc rất thú vị theo quan điểm của một lập trình viên hệ thống. Ngoài ra, các phần mềm chống vi-rút xuất hiện trên thị trường đã đặt ra cho những người tạo vi-rút một thách thức nghiêm trọng đối với tính chuyên nghiệp của họ.

Nói chung lời bài hát cũng khá đủ rồi, bắt tay vào công việc thôi. Tôi muốn nói về loại virus cổ điển, cấu trúc của nó, các khái niệm cơ bản, phương pháp phát hiện và thuật toán được cả hai bên sử dụng để giành chiến thắng.

Giải phẫu của virus

Chúng ta sẽ nói về các loại vi-rút sống trong các tệp thực thi ở định dạng PE và ELF, tức là các loại vi-rút có phần thân là mã thực thi cho nền tảng x86. Ngoài ra, cầu mong virus của chúng ta không phá hủy tập tin gốc, duy trì đầy đủ chức năng của nó và lây nhiễm chính xác bất kỳ tệp thực thi phù hợp nào. Đúng, nó dễ bị phá vỡ hơn nhiều, nhưng chúng ta đã đồng ý nói về các loại virus phù hợp, phải không? Để giữ cho tài liệu phù hợp, tôi sẽ không lãng phí thời gian để xem xét những kẻ lây nhiễm ở định dạng COM cũ, mặc dù trên đó đã thử nghiệm các kỹ thuật tiên tiến đầu tiên để làm việc với mã thực thi.

Các phần chính của mã virus là kẻ lây nhiễm và tải trọng. Infector là một mã tìm kiếm các tệp phù hợp để lây nhiễm và tiêm vi-rút vào chúng, cố gắng che giấu sự thật về việc tiêm càng nhiều càng tốt mà không làm hỏng chức năng của tệp. Tải trọng là một mã thực hiện các hành động thực tế mà kẻ tạo vi-rút yêu cầu, chẳng hạn như gửi thư rác, DoSing ai đó hoặc đơn giản là để lại tệp văn bản “Virya đã ở đây” trên máy. Đối với chúng tôi, nó hoàn toàn không quan trọng những gì bên trong tải trọng, vấn đề chính là kẻ tạo vi-rút đang cố gắng bằng mọi cách có thể để che giấu nội dung của nó.

Hãy bắt đầu với các thuộc tính của mã virus. Để làm cho mã thuận tiện hơn khi triển khai, bạn không muốn tách mã và dữ liệu, do đó, việc tích hợp dữ liệu trực tiếp vào mã thực thi thường được sử dụng. Vâng, ví dụ như thế này:
jmp nhắn the_back: mov eax, 0x4 mov ebx, 0x1 pop ecx ; Địa chỉ “Hello, World” sẽ được lấy từ ngăn xếp mov edx, 0xF int 0x80 ... message: call the_back ; sau khi thực thi, địa chỉ "trả về" sẽ nằm trên ngăn xếp, tức là địa chỉ "Xin chào thế giới\n" db "Xin chào thế giới!", 0Dh, 0Ah
Hoặc như thế này:
đẩy 0x68732f2f; “hs//” đẩy 0x6e69622f ; “ngòi/” mov ebx, đặc biệt ; trong ESP địa chỉ của chuỗi bây giờ là “/bin/sh” mov al, 11 int 0x80

Tất cả các biến thể mã này, trong những điều kiện nhất định, có thể được sao chép đơn giản vào bộ nhớ và tạo JMP theo lệnh đầu tiên. Sau khi viết mã này một cách chính xác, quan tâm đến độ lệch chính xác, cuộc gọi hệ thống, độ sạch của ngăn xếp trước và sau khi thực thi, v.v., nó có thể được nhúng vào bên trong bộ đệm với mã của người khác.

Giả sử một kẻ tạo vi-rút có khả năng viết mã vi-rút theo kiểu này và bây giờ anh ta cần đưa mã vi-rút đó vào một tệp thực thi hiện có. Anh ấy cần phải quan tâm đến hai điều:

  • Đặt virus ở đâu? Cần phải tìm đủ không gian cho vi-rút xâm nhập vào đó, ghi nó vào đó mà không phá vỡ tệp nếu có thể và để việc thực thi mã được cho phép trong khu vực mà vi-rút xuất hiện.
  • Làm thế nào để chuyển quyền kiểm soát sang virus? Chỉ đặt vi-rút vào một tệp là chưa đủ; bạn còn phải thực hiện quá trình chuyển đổi sang phần thân của nó và sau khi hoàn thành công việc của nó, hãy trả lại quyền kiểm soát cho chương trình nạn nhân. Hoặc theo một thứ tự khác, nhưng trong mọi trường hợp, chúng ta đã đồng ý không phá vỡ bất cứ thứ gì, phải không?
Vì vậy, chúng ta hãy xem xét việc nhúng vào một tập tin. Các định dạng thực thi hiện đại cho nền tảng x86 trên Windows và Linux là PE ( Thực thi di động) và ELF (Định dạng có thể thực thi và có thể liên kết). Bạn có thể dễ dàng tìm thấy thông số kỹ thuật của chúng trong tài liệu hệ thống và nếu bạn xử lý các vấn đề về bảo vệ mã thực thi, bạn chắc chắn sẽ không bỏ lỡ chúng. Các định dạng thực thi và bộ tải khởi động (mã hệ điều hành chạy tập tin thực thi) là một trong những “con voi” mà hệ điều hành đứng trên đó. Quy trình khởi chạy tệp .exe là một quy trình thuật toán rất phức tạp với nhiều sắc thái và bạn có thể nói về vấn đề này trong hàng tá bài viết mà bạn chắc chắn sẽ tìm thấy nếu chủ đề này khiến bạn quan tâm. Tôi sẽ giới hạn bản thân ở một bài đánh giá đơn giản, đủ để hiểu cơ bản về quá trình khởi động. Để họ không ném cà chua vào tôi, trong phần tiếp theo, theo trình biên dịch, tôi muốn nói đến toàn bộ tổ hợp các chương trình chuyển đổi nguồn thành một tệp thực thi được tạo sẵn, trên thực tế, đó là một trình biên dịch + trình liên kết.

Tệp thực thi (PE hoặc ELF) bao gồm tiêu đề và tập hợp các phần. Các phần được căn chỉnh (xem bên dưới) bộ đệm chứa mã hoặc dữ liệu. Khi một tệp được khởi chạy, các phần sẽ được sao chép vào bộ nhớ và bộ nhớ được phân bổ cho chúng chứ không nhất thiết phải là dung lượng mà chúng chiếm trên đĩa. Tiêu đề chứa bố cục phần và cho trình tải biết cách các phần được đặt trong tệp khi nó ở trên đĩa và cách chúng cần được sắp xếp trong bộ nhớ trước khi chuyển quyền điều khiển sang mã bên trong tệp. Chúng tôi quan tâm đến ba thông số chính cho từng phần: psize, vsize và flags. Psize (kích thước vật lý) thể hiện kích thước của phần trên đĩa. Vsize (kích thước ảo) – kích thước của phần trong bộ nhớ sau khi tải tệp. Cờ – thuộc tính phần (rwx). Psize và Vsize có thể khác nhau đáng kể, ví dụ: nếu lập trình viên khai báo một mảng gồm một triệu phần tử trong chương trình, nhưng có ý định điền nó trong khi thực thi, trình biên dịch sẽ không tăng psize (không cần lưu trữ nội dung của mảng trên đĩa trước khi khởi chạy), nhưng vsize sẽ tăng thêm một triệu thứ gì đó ở đó (trong thời gian chạy, phải phân bổ đủ bộ nhớ cho mảng).

Cờ (thuộc tính truy cập) sẽ được gán cho các trang bộ nhớ mà phần đó sẽ được ánh xạ vào đó. Ví dụ: phần có mã thực thi sẽ có thuộc tính r_x (đọc, thực thi) và phần dữ liệu sẽ có thuộc tính rw_ (đọc, ghi). Bộ xử lý cố gắng thực thi mã trên một trang không có cờ thực thi sẽ tạo ra một ngoại lệ, điều tương tự cũng áp dụng cho nỗ lực ghi vào một trang không có thuộc tính w, do đó, khi đặt mã vi-rút, người tạo vi-rút phải tính đến thuộc tính của các trang bộ nhớ chứa mã virus. Cho đến gần đây, các phần tiêu chuẩn của dữ liệu chưa được khởi tạo (ví dụ: vùng ngăn xếp của chương trình) có thuộc tính rwx (đọc, ghi, thực thi), giúp sao chép mã trực tiếp vào ngăn xếp và thực thi mã ở đó. Ngày nay nó được coi là không hợp thời trang và không an toàn, và trong thời gian gần đây các hệ điều hành Vùng ngăn xếp chỉ dành cho dữ liệu. Tất nhiên, bản thân chương trình có thể thay đổi các thuộc tính của trang bộ nhớ khi chạy, nhưng điều này làm phức tạp việc triển khai.

Ngoài ra, tiêu đề còn chứa Điểm vào - địa chỉ của lệnh đầu tiên mà từ đó việc thực thi tệp bắt đầu.

Cũng cần phải kể đến một thuộc tính quan trọng như vậy của các tập tin thực thi đối với người tạo virus đó là căn chỉnh. Để tệp được đọc từ đĩa và hiển thị trong bộ nhớ một cách tối ưu, các phần trong tệp thực thi được căn chỉnh dọc theo các ranh giới là bội số của hai và nơi miễn phí, phần còn lại của phần đệm được lấp đầy bằng thứ gì đó theo quyết định của trình biên dịch. Ví dụ: việc căn chỉnh các phần theo kích thước của trang bộ nhớ là hợp lý - sau đó sẽ thuận tiện khi sao chép toàn bộ vào bộ nhớ và gán thuộc tính. Tôi thậm chí sẽ không nhớ về tất cả những sự sắp xếp này; bất cứ nơi nào có một đoạn dữ liệu hoặc mã tiêu chuẩn ít nhiều thì nó đều được căn chỉnh (bất kỳ lập trình viên nào cũng biết rằng có chính xác 1024 mét trong một km). Vâng, mô tả về các tiêu chuẩn Định dạng Linux có thể thực thi được (PE) và Định dạng Linux có thể thực thi được (ELF) dành cho mã thực thi làm việc với các phương pháp bảo mật là những cuốn sổ tay.

Vì các địa chỉ bên trong tất cả các phần này được kết nối nên chỉ cần nhét một đoạn mã vào giữa một phần và “băng bó” nó bằng JMP sẽ không hoạt động; Vì vậy, những nơi tiêm virus virus phổ biến là:

  • phần mã chính (do virus viết lại phần đầu của mã thực thi bắt đầu ngay từ Entry Point).
  • đệm giữa phần cuối của tiêu đề và phần đầu tiên. Không có gì ở đó và hoàn toàn có thể chứa một loại virus nhỏ (hoặc trình tải của nó) ở đó mà không làm hỏng tệp.
  • một phần mới có thể được thêm vào tiêu đề và đặt vào tệp sau tất cả những phần khác. Trong trường hợp này, sẽ không có chuyển vị bên trong nào bị phá vỡ và cũng không có vấn đề gì với vị trí đó. Đúng, tất nhiên, phần cuối cùng trong tệp được phép thực thi sẽ thu hút sự chú ý của người theo dõi.
  • đệm giữa phần cuối của nội dung của phần và phần cuối được căn chỉnh của nó. Điều này khó khăn hơn nhiều, vì trước tiên chúng ta cần phải tìm ra chính “kết thúc” này, và thực tế không phải là chúng ta sẽ may mắn và sẽ có đủ không gian. Nhưng đối với một số trình biên dịch, vị trí này có thể được phát hiện đơn giản bằng các byte đặc trưng
Có nhiều cách xảo quyệt hơn, một số cách tôi sẽ mô tả trong bài viết thứ hai.

Bây giờ về việc chuyển giao quyền kiểm soát. Để virus hoạt động, mã của nó phải bằng cách nào đó giành được quyền kiểm soát. Cách rõ ràng nhất: đầu tiên virus chiếm quyền kiểm soát, sau đó, sau khi nó hoạt động, chương trình chủ sẽ hoạt động. Đây là phương pháp đơn giản nhất, nhưng cũng có những lựa chọn khi vi-rút giành quyền kiểm soát, chẳng hạn như sau khi máy chủ tắt hoặc đang thực thi giữa chừng, “thay thế” việc thực thi một số chức năng. Dưới đây là một số kỹ thuật để chuyển điều khiển (thuật ngữ Entry Point hoặc EP, được sử dụng bên dưới, là điểm vào, nghĩa là địa chỉ mà bộ tải khởi động hệ thống sẽ chuyển quyền điều khiển sau khi nó chuẩn bị tệp thực thi để khởi chạy):

  1. JMP thay thế các byte đầu tiên trong Entry Point của tệp bằng phần thân virus. Virus lưu trữ các byte bị xóa trong cơ thể của nó và sau khi hoàn thành công việc riêng tư, khôi phục chúng và chuyển quyền điều khiển về phần đầu của bộ đệm được khôi phục.
  2. Một phương thức tương tự như phương pháp trước, nhưng thay vì byte, vi-rút lưu trữ một số lệnh máy hoàn chỉnh trong Điểm đầu vào, sau đó nó có thể thực thi chúng sau khi hoàn thành công việc của chính nó mà không cần khôi phục bất kỳ thứ gì (chỉ giám sát việc xóa ngăn xếp chính xác). và chuyển điều khiển tới địa chỉ của lệnh sau khi bị "đánh cắp".
  3. Như trong trường hợp thực hiện, có nhiều cách xảo quyệt hơn, nhưng chúng tôi cũng sẽ xem xét chúng ở bên dưới, hoặc hoãn lại cho đến bài viết tiếp theo.
Tất cả đều là những cách để chèn chính xác bộ đệm có mã vào tệp thực thi. Trong trường hợp này, đoạn 2 và 3. ngụ ý chức năng cho phép bạn hiểu byte nào là hướng dẫn và ranh giới giữa các hướng dẫn ở đâu. Suy cho cùng, chúng ta không thể “xé” hướng dẫn làm đôi, nếu không mọi thứ sẽ hỏng. Vì vậy, chúng ta dễ dàng chuyển sang xem xét các trình phân tách trong virus. Chúng ta sẽ cần khái niệm về cách hoạt động của trình dịch ngược để xem xét tất cả các kỹ thuật thông thường để làm việc với mã thực thi, vì vậy bây giờ tôi sẽ mô tả nó một chút.

Nếu chúng tôi triển khai mã của mình ở vị trí chính xác giữa các hướng dẫn, chúng tôi có thể lưu ngữ cảnh (ngăn xếp, cờ) và sau khi thực thi mã vi-rút, khôi phục mọi thứ trở lại, trả lại quyền kiểm soát cho chương trình máy chủ. Tất nhiên, đây cũng có thể là một vấn đề nếu sử dụng các công cụ giám sát tính toàn vẹn mã, tính năng chống gỡ lỗi, v.v., nhưng vấn đề này cũng sẽ được thảo luận trong bài viết thứ hai. Để tìm một vị trí như vậy, chúng ta cần điều này:

  • đặt con trỏ chính xác vào đầu một số lệnh (bạn không thể chỉ lấy một vị trí ngẫu nhiên trong phần thực thi và bắt đầu tách nó ra; cùng một byte có thể vừa là mã lệnh vừa là dữ liệu)
  • xác định độ dài của lệnh (đối với kiến ​​trúc x86, các lệnh có độ dài khác nhau)
  • di chuyển con trỏ về phía trước theo chiều dài này. Chúng ta sẽ thấy mình ở phần đầu của hướng dẫn tiếp theo.
  • lặp lại cho đến khi chúng tôi quyết định dừng lại
Đây là chức năng tối thiểu cần có để tránh bị kẹt ở giữa lệnh và hàm lấy con trỏ tới chuỗi byte và trả về độ dài của lệnh được gọi là trình phân tách độ dài. Ví dụ: thuật toán lây nhiễm có thể như thế này:
  1. Chúng tôi chọn một tệp thực thi ngon (đủ dày để chứa phần thân của vi-rút, với sự phân bố các phần mong muốn, v.v.).
  2. Chúng tôi đọc mã của chúng tôi (mã cơ thể virus).
  3. Chúng tôi lấy một số hướng dẫn đầu tiên từ tệp nạn nhân.
  4. Chúng tôi thêm chúng vào mã vi-rút (chúng tôi lưu thông tin cần thiết để khôi phục chức năng).
  5. Chúng tôi thêm vào mã vi-rút một quá trình chuyển đổi sang hướng dẫn tiếp tục thực thi mã nạn nhân. Như vậy, sau khi thực thi mã của chính mình, virus sẽ thực thi chính xác đoạn mở đầu của mã nạn nhân.
  6. Chúng tôi tạo một phần mới, viết mã vi-rút ở đó và chỉnh sửa tiêu đề.
  7. Thay cho những hướng dẫn đầu tiên này, chúng tôi chuyển sang mã vi-rút.
Đây là một biến thể của một loại vi-rút hoàn toàn chính xác, có thể xâm nhập vào tệp thực thi, không phá vỡ gì, bí mật thực thi mã của nó và trả lại quyền thực thi cho chương trình máy chủ. Bây giờ chúng ta hãy bắt hắn.

Cấu tạo của máy dò

Đột nhiên, không biết từ đâu, một hiệp sĩ xuất hiện trên một chiếc máy tính màu trắng, tay trái anh ta cầm một trình gỡ lỗi, còn tay phải là một trình dịch ngược, một lập trình viên cho một công ty chống vi-rút. Nơi mà ông đến từ đâu? Tất nhiên là bạn đã đoán được rồi. Với khả năng cao là anh ta đã xuất hiện ở đó từ “khu vực lân cận”. Lĩnh vực chống virus về mặt lập trình được những người am hiểu rất coi trọng, bởi những người này phải mày mò với những thuật toán rất phức tạp và trong những điều kiện khá chật chội. Hãy tự đánh giá: bạn có hàng trăm nghìn bản sao của bất kỳ sự lây nhiễm nào và một tệp thực thi ở đầu vào, bạn phải làm việc gần như trong thời gian thực và chi phí cho một lỗi là rất cao.

Đối với phần mềm chống vi-rút, cũng như đối với bất kỳ máy trạng thái hữu hạn, đưa ra quyết định nhị phân “có/không” (bị nhiễm/khỏe mạnh), có hai loại lỗi - dương tính giả và âm tính giả (nhận sai tệp là tệp lây nhiễm, nhầm lẫn tệp bị nhiễm). Rõ ràng là Tổng số Trong mọi trường hợp, lỗi phải được giảm bớt, nhưng kết quả âm tính giả sẽ gây khó chịu cho phần mềm chống vi-rút hơn nhiều so với kết quả dương tính giả. “Sau khi tải xuống torrent, hãy tắt phần mềm chống vi-rút của bạn trước khi cài đặt trò chơi” - nghe có quen không? Đây là một "dương tính giả" - crack.exe viết nội dung nào đó vào một tệp .exe thực thi trông giống như một loại vi-rút đối với một máy phân tích chẩn đoán khá thông minh (xem bên dưới). Như người ta vẫn nói: “Thà an toàn còn hơn xin lỗi”.

Mình nghĩ không cần mô tả thành phần cho bạn đâu phần mềm diệt virus hiện đại, tất cả đều xoay quanh một chức năng - trình phát hiện virus. Màn hình kiểm tra các tập tin một cách nhanh chóng, quét đĩa, kiểm tra tệp đính kèm thư, cách ly và ghi nhớ các tệp đã được quét - tất cả điều này được gắn với lõi phát hiện chính. Thành phần quan trọng thứ hai của phần mềm chống vi-rút là cơ sở dữ liệu tính năng được cập nhật, nếu không có cơ sở dữ liệu này thì không thể cập nhật phần mềm chống vi-rút. Thành phần thứ ba, khá quan trọng nhưng xứng đáng với một loạt bài viết riêng biệt là giám sát hệ thống để phát hiện hoạt động đáng ngờ.

Vì vậy (chúng tôi đang xem xét các loại vi-rút cổ điển), ở đầu vào, chúng tôi có một tệp thực thi và một trong hàng trăm nghìn vi-rút tiềm ẩn trong đó. Hãy phát hiện. Hãy coi đây là một đoạn mã virus có thể thực thi được:
XX XX XX XX XX XX ; phần đầu của virus dài N byte. . . 68 2F 2F 73 68 đẩy 0x68732f2f; “hs//” 68 2F 62 69 6E đẩy 0x6e69622f ; “ngòi/” 8B DC mov ebx, đặc biệt ; trong ESP địa chỉ của dòng bây giờ là “/bin/sh” B0 11 mov al, 11 CD 80 int 0x80 XX XX XX XX ; phần cuối của virus dài M byte. . .
Tôi ngay lập tức muốn lấy một gói opcode (68 2F 2F 73 68 68 2F 62 69 6E 8B DC B0 11 CD 80) và tìm chuỗi byte này trong tệp. Nếu bị phát hiện thì bắt được, đồ khốn. Nhưng than ôi, hóa ra gói byte tương tự lại được tìm thấy trong các tệp khác (à, bạn không bao giờ biết ai gọi thông dịch lệnh), và thậm chí có “hàng trăm” chuỗi như vậy để tìm kiếm, nếu bạn tìm kiếm từng chuỗi thì việc tối ưu hóa sẽ không giúp được gì. Người duy nhất, nhanh chóng và Đúng cáchđể kiểm tra sự hiện diện của một dòng như vậy trong một tệp là kiểm tra sự tồn tại của nó ở phần bù CỐ ĐỊNH. Tôi có thể lấy nó từ đâu?

Chúng ta hãy nhớ đến “khu vực lân cận” - đặc biệt là những nơi virus xâm nhập và cách nó chuyển quyền kiểm soát cho chính nó:

  • virus được nhúng vào phần đệm giữa tiêu đề và phần đầu của phần đầu tiên. Trong trường hợp này, bạn có thể kiểm tra sự tồn tại của chuỗi byte này bằng offset
    “độ dài tiêu đề” + N (trong đó N là số byte từ đầu virus đến chuỗi byte)
  • virus nằm trong một phần mới, riêng biệt. Trong trường hợp này, bạn có thể kiểm tra sự tồn tại của chuỗi byte từ đầu tất cả các phần bằng mã
  • virus đã xâm nhập vào phần đệm giữa phần cuối mã và phần cuối mã. Bạn có thể sử dụng offset âm từ cuối phần, chẳng hạn như “cuối phần mã” - M (trong đó M là số byte từ cuối chuỗi byte đến cuối mã virus) - “chuỗi byte chiều dài"
Bây giờ từ đó về việc chuyển giao quyền kiểm soát:
  • virus đã viết các hướng dẫn của nó trực tiếp trên các hướng dẫn trong Entry Point. Trong trường hợp này, chúng tôi tìm kiếm một chuỗi byte chỉ bằng phần bù “Điểm vào” + N (trong đó N là số byte từ đầu virus đến chuỗi byte)
  • virus được ghi lại trong Entry Point JMP trên cơ thể của nó. Trong trường hợp này, trước tiên bạn phải tính toán xem JMP này đang tìm kiếm ở đâu, sau đó tìm chuỗi byte ở offset “Địa chỉ nhảy JMP” + N (trong đó N là số byte từ đầu virus đến chuỗi byte)
Vì lý do nào đó, tôi cảm thấy mệt mỏi khi viết một “chuỗi byte”, nó có độ dài thay đổi, việc lưu trữ nó trong cơ sở dữ liệu là bất tiện và hoàn toàn không cần thiết, vì vậy thay vì chuỗi byte, chúng tôi sẽ sử dụng độ dài của nó cộng với CRC32 từ nó. Bản ghi này rất ngắn và việc so sánh diễn ra nhanh chóng vì thuật toán CRC32 không chậm. Theo đuổi khả năng chống va chạm tổng kiểm tra không có ích gì, vì xác suất xảy ra va chạm dựa trên độ lệch cố định là không đáng kể. Ngoài ra, ngay cả trong trường hợp va chạm, lỗi sẽ thuộc loại “dương tính giả”, không quá đáng sợ. Hãy tóm tắt tất cả những điều trên, đây là cấu trúc gần đúng của mục trong cơ sở dữ liệu chống virus:
  1. ID vi-rút
  2. cờ cho biết nơi đọc phần bù (từ EP, từ cuối tiêu đề, từ cuối phần đầu tiên, từ đầu tất cả các phần, từ địa chỉ chuyển đổi lệnh JMP sang EP, v.v.)
  3. bù lại
  4. độ dài chữ ký (Lsig)
  5. Chữ ký CRC32 (CRCsig)
Chúng tôi tối ưu hóa đầu vào (chúng tôi chỉ để lại những chữ ký “phù hợp” với tập tin này, ngay từ tiêu đề, chúng tôi chuẩn bị một tập hợp các giá trị bù trừ cần thiết) và hơn thế nữa:
( # cho tất cả các bản ghi khớp - dựa trên các cờ, chúng tôi tính toán độ lệch cơ sở trong tệp (bắt đầu phần mã, điểm nhập, v.v.) - thêm phần bù vào nó - đọc byte Lsig - đếm CRC32 từ chúng - nếu có trận đấu, chúng tôi đã nhiễm virus)
Hoan hô, đây là phần mềm diệt virus đầu tiên của chúng tôi. Nó khá thú vị, vì với sự trợ giúp của cơ sở dữ liệu chữ ký khá đầy đủ, cờ thường được chọn và tối ưu hóa tốt, trình phát hiện này có thể nhanh chóng phát hiện 95% tất cả các loại lây nhiễm (phần lớn phần mềm độc hại hiện đại chỉ đơn giản là các tệp thực thi). , không có khả năng biến đổi). Sau đó, trò chơi bắt đầu với việc “ai sẽ cập nhật cơ sở dữ liệu chữ ký nhanh hơn” và “ai sẽ được gửi một bản sao mới của thứ khó chịu nào đó trước tiên”.

Thu thập và lập danh mục “muck” này là một nhiệm vụ không hề tầm thường, nhưng hoàn toàn cần thiết để kiểm tra chất lượng cao của máy dò. Thu thập cơ sở dữ liệu tham chiếu của các tệp thực thi không phải là một nhiệm vụ dễ dàng: cố gắng tìm tất cả các trường hợp của tệp bị nhiễm (đối với các trường hợp phức tạp có nhiều bản sao), lập danh mục, trộn chúng với các tệp “sạch” và thường xuyên chạy trình phát hiện trên chúng để phát hiện. xác định lỗi phát hiện. Cơ sở dữ liệu như vậy đã được thu thập trong nhiều năm và là tài sản rất quý giá của các công ty chống vi-rút. Có lẽ tôi đã sai và thực sự có thể mắc phải nó (tất cả các loại dịch vụ kiểm tra vi-rút trực tuyến đều có khả năng cung cấp một số điểm tương tự), nhưng khi tôi xem xét vấn đề này, không thể thu được gì tương tự (ít nhất là trong Linux).

Máy phân tích heuristic

Thật là một từ đáng sợ - "máy phân tích heuristic", bây giờ bạn sẽ không thấy nó trong giao diện chống vi-rút (có thể khiến người dùng sợ hãi). Đây là một trong những phần thú vị nhất của phần mềm chống vi-rút, vì mọi thứ không phù hợp với bất kỳ công cụ nào (không phải công cụ chữ ký hay trình mô phỏng) đều được đưa vào đó và nó tương tự như việc một bác sĩ nhìn thấy bệnh nhân. ho và hắt hơi nhưng không xác định được bệnh cụ thể. Đây là mã kiểm tra tệp để tìm một số tính năng đặc trưng sự nhiễm trùng. Ví dụ về các dấu hiệu như vậy:
  • tiêu đề tệp không chính xác (do vi-rút, nhưng vẫn hoạt động)
  • JMP ngay tại điểm vào
  • "rwx" trên một phần mã
Vâng, vân vân. Ngoài việc chỉ ra thực tế về sự lây nhiễm, phương pháp chẩn đoán có thể giúp đưa ra quyết định: chúng ta có nên tiến hành phân tích tệp “nặng” hơn không? Mỗi dấu hiệu có trọng lượng khác nhau, từ “loại đáng ngờ nào đó” đến “Tôi không biết là gì, nhưng chắc chắn tệp đã bị nhiễm virus”. Đây là những dấu hiệu tạo ra phần lớn các lỗi “dương tính giả”. Chúng ta cũng đừng quên rằng chính phương pháp phỏng đoán có thể cung cấp cho công ty chống vi-rút các bản sao của vi-rút tiềm ẩn. Phương pháp heuristic có hoạt động nhưng không tìm thấy gì cụ thể không? Điều này có nghĩa là tệp chắc chắn là ứng cử viên để gửi đến một công ty chống vi-rút.

Tương tác và tiến hóa giữa các loài

Như chúng ta đã thấy, để so sánh nhanh chóng và chính xác, bộ phát hiện cần có chính các byte chữ ký và độ lệch của nó. Hay nói cách khác, nội dung của mã và địa chỉ vị trí của nó trong tệp máy chủ. Do đó, rõ ràng ý tưởng che giấu mã thực thi của virus đã phát triển như thế nào - theo hai hướng:
  • ẩn mã của virus;
  • ẩn điểm vào của nó.
Việc ẩn mã virus dẫn đến sự xuất hiện của các công cụ đa hình. Tức là các công cụ cho phép virus thay đổi mã của nó ở mỗi thế hệ mới. Trong mỗi tệp bị nhiễm mới, phần thân của vi-rút sẽ biến đổi, cố gắng làm cho việc phát hiện trở nên khó khăn hơn. Điều này gây khó khăn cho việc tạo nội dung chữ ký.

Việc che khuất điểm vào dẫn đến sự xuất hiện của các bộ phân tách tự động trong các công cụ vi-rút để xác định, ở mức tối thiểu, các hướng dẫn nhảy. Virus cố gắng che giấu nơi diễn ra quá trình chuyển đổi sang mã của nó, sử dụng từ tệp những gì cuối cùng dẫn đến quá trình chuyển đổi: JMP, CALL, RET thuộc mọi loại, bảng địa chỉ, v.v. Do đó, virus gây khó khăn cho việc xác định độ lệch của chữ ký.

Chúng ta sẽ xem xét một số thuật toán của động cơ và máy dò như vậy chi tiết hơn nhiều trong bài viết thứ hai mà tôi dự định viết trong tương lai gần.

Song song với sự phát triển của các công cụ phát hiện và phát hiện virus chống lại chúng, bảo hộ thương mại Các tập tin thực thi. Đã xuất hiện số lượng lớn bé nhỏ chương trình thương mại và các nhà phát triển cần các công cụ cho phép họ lấy một tệp EXE và “bọc” nó trong một loại “phong bì” nào đó có thể tạo ra một tệp hợp lệ một cách an toàn. số seri. Ai trong chúng ta biết cách ẩn mã thực thi và nhúng nó vào các tệp thực thi mà không làm mất chức năng? Đúng vậy, chính những nhà phát triển đó đến từ một “lĩnh vực liên quan”. Do đó, việc viết một virus đa hình tốt và bảo vệ treo cho một tệp thực thi là những nhiệm vụ rất giống nhau, sử dụng cùng một thuật toán và công cụ. Quá trình phân tích virus và tạo chữ ký, hack phần mềm thương mại cũng tương tự. Trong cả hai trường hợp, bạn cần lấy mã thực và tạo chữ ký hoặc trích xuất thuật toán để tạo số sê-ri từ mã đó.

Có một số trang trên Internet về chủ đề “phân loại virus máy tính”. Nhưng chúng tôi đã đồng ý, vi-rút là thứ có thể tự sinh sản trong hệ thống và cần có tệp chứa. Do đó, tất cả các loại phần mềm độc hại Trojan-rootkit không phải là vi-rút mà là một loại mã tải trọng mà vi-rút có thể tự mang theo. Đối với các công nghệ được mô tả trong bài viết, chỉ có thể có một cách phân loại vi-rút máy tính: vi-rút đa hình và không đa hình. Nghĩa là có thay đổi từ thế hệ này sang thế hệ khác hay không.

Máy dò được thảo luận trong bài viết dễ dàng phát hiện các loại virus không đa hình (gọi chúng là đơn hình hoặc gì đó). Vâng, chúng ta hãy chuyển sang virus đa hìnhĐây là một cơ hội tuyệt vời để kết thúc bài viết này bằng cách hứa hẹn sẽ quay trở lại với các phương pháp ẩn mã thực thi thú vị hơn trong