1.Nhận diện hệ thống:
-OS,trình duyệt web, Firewall, các trình protect máy (như các anti vx) là gì? Từ đó ta biết được các modules, processes, services, drivers,Add-on trình duyệt, ver of OS... của hệ thống. Mục đích chính là khi ta hiểu rõ hệ thống thì ta sẽ dễ dàng phân tích định tính vx ở bước sau. Đồng thời cũng xem hiện hệ thống có dính lỗi bảo mật nào không
2.Định tính vx:
-Dùng các tools khảo sát hệ thống để định tính và nhận diện vx
+Khảo sát processes xem có process lạ nào đáng ngờ không
+Khảo sát các modules dlls... có inject vào các process hệ thống không
+Khảo sát registry để xem process nào cùng khởi động cùng OS.
+Check MD5, CRC,SHA các modules (files) đang chạy trên hệ thống xem có bị vx inject code không
+Khảo sát các files, folder ẩn để tìm các file nghi ngờ (bước này có thể bỏ qua vì xác suất nhận diện rất ít)
+Khảo sát các driver, tìm rootkit làm ẩn tiến trình, ẩn key, ....
+Khảo sát lưu lượng mạng (dùng DUMetter) xem sức khoẻ mạng có bị vx tác động ko.
+Dùng tool theo dõi hệ thống xem có file mới nào sinh ra ko hay key registry nào mới sinh ra ko. (có 1 tool free rất hay). Tool này thường sử dụng khi ta đã có mẫu vx phân tích.
..v..v..
Từ đó nhận diện được thuộc tính của virus và module (file) vx. Khi biết được thuộc tính của vx và module (file) vx, chúng ta dễ dàng tập trung phân tích code (reversing) của vx.
3.Phân tích code (reversing) vx:
Bước này là phân tích sâu con vx để biết được toàn bộ hành vi hoạt động của nó.
Sau khi nhận biết được module vx (file chứa vx) ở bước trên, ta sẽ reversing nó tương tự các bước trong kỹ thuật reversing:
-Xem virus viết code bằng ngôn ngữ nào hay dùng packer, protecter nào bảo vệ
-Nếu bị pack, protect thì unpack,unprotect file vx
-Dùng tools phù hợp với ngôn ngữ viết code vx để decompile, diassemble, debugging vx. Bước nhận diện vx ở bước trên sẽ hổ trợ cho bước này rất nhiều. Vì biết được thuộc tính vx chúng ta sẽ dễ dàng đặt breakpoint trên hàm API nghi ngờ, ....
Chú ý: trong quá trình reversing, hạn chế debug vx vì rất nguy hiểm khi lỡ tay, ta nên tận dụng các tools decompile, diasemble. Và khuyến nghị nên dùng môi trường ảo để phân tích
4.Tìm signature của vx và phương pháp khống chế vx:
Sau khi phân tích code, ta tìm signature của vx (ví dụ tại offset nào đó chứa string gì, hoặc MD5 của file vx , .....)để nhận dạng nó . Hoặc pp loại bỏ nó khỏi hệ thống
Trên chỉ là lược đồ, các bạn góp ý thêm vào cho đầy đủ.
Benina
PS: Vấn đề phân tích vx bước 3 không thể tổng quát hóa được.
Để thực hành được bước này, tôi nghĩ rằng đây là một quá trình lao động thực thụ. Nó rất cần “kinh nghiệm”. Bước này chỉ làm được khi các bạn có kiến thức tốt về hệ thống, lập trình, đảo mã, bảo mật, quá trình nghiên cứu virus để hiểu được các kỹ thuật của nó…. Ở đây, tôi chỉ hệ thống các kiến thức cần nghiên cứu:
1.Sys Info: Các kiến thức về hệ thống, ví dụ như dịch vu quản lý file của OS, dịch vụ quản lý bộ nhớ, prosesses, threads, hiểu về các thanh ghi như cr0,cr3…, các cấu trúc trong hệ điều hành như PEB,TEB,…, hàm API, native API, cấu trúc file PE, TLS,…., add-on của browser IE, MF…. Hiểu rõ các file như pif, cmd, autorun inf…..Cách thức làm việc của BHO, System Restore, WSH, scheduled Tasks,….
2.Lập trình: lập trình hệ thống, driver (rootkit) , regsistry, lập trình API, DLL, add-on, native app, các ngôn ngữ lập trình VB,VC,Delphi, masm, tasm, lập trình htm, macro, vbs….
3.Các kỹ thuật vx: inject code, inject dll, hide file, folder; overflow, polymorphism, EPO….
4.Lỗi bảo mật: của OS, browser, file chm, pdf….Nghiên cứu các mạng xã hội để khai thác lỗ hỏng sử dụng, lỗ hỏng bảo mật….
5.Đảo mã (reversing): sử dụng các tools decompiler, diassembler, debugger, monitor,….cách thức đặt breakpoint, sử dụng các plugins…Đọc code và quan trọng là biết asm.
6.Thuật toán: biết các thuật toán, kỹ thuật pack, protect, cryptor, mã hóa
Các bạn có thể bổ sung thêm một số lĩnh vực cần nghiên cứu.
Còn ví dụ về reversing một vx thì các bạn có thể tham khảo các bài viết sau:
- Swimming into Trojan and Rootkit
- Introduction To Malware Techniques and Logics Part 1
Dowload: http://accessroot.com/arteam/site/download.php?list.10
Và một số link khác các bạn có thể bổ sung.
Tôi mong rằng các bạn cùng thảo luận cho đầy đủ và hệ thống hóa lại.
Benina
Phân tích vx
Link:http://virusvn.com/forum/showthread.php?t=1810&page=2
Author:Fire Dragon
I - Phân tích virus (Malware Analysis) là gì?:
/*Chúng ta đang thiếu các định nghĩa. Mọi người tiếp tục thảo luận để cùng đưa ra một số định nghĩa sau nhé:*/
- Phân tích virus (Malware Analysis):
- Chuyên gia phân tích virus (Virus Analysts)
/*Là công việc đòi hỏi rất nhiều thời gian và công sức. Trong nhiều trường hợp, bạn có thể dừng lại khi đã hiểu được 80-90% các đặt điểm của virus đó. Vì thế cùng một virus nhưng bài phân tích ở các website khác nhau, do các chuyên gia khác nhau thực hiện lại không hoàn toàn giống nhau. Các chuyên gia sẽ so với nhau xem ai hiểu được nhiều hơn, kỹ hơn về một virus. Hiểu càng kỹ về virus thì việc diệt nó sẽ chính xác hơn, ít gây ra các hậu quả.
Ví dụ: Giả sử có một mẫu virus lây file mới xuất hiện.
- Chuyên gia thứ nhất phân tích và nhận thấy rằng virus này có dấu hiệu nhận diện là A. Khi đó có thể diệt virus như sau: Tìm tất cả các file trong hệ thống có dấu hiệu A thì xoá đi.
- Chuyên gia thứ hai đọc kỹ hơn nhận thấy rằng virus trên ngoài dấu hiệu nhận diện là A, khi lây nhiễm đã thay đổi các file bằng thuật toán B. Khi đó virus sẽ được diệt như sau: Tìm tất cả các file trong hệ thống có dấu hiệu A. Thay đổi file đó bằng thuật toán C là thuật toán ngược của thuật toán B.
- Chuyeen gia thứ ba còn phát hiện thêm đối với những file có kích thước > 500Kb virus sẽ không lây vào. Khi đó cách diệt sẽ là: TÌm tất cả các file có kích thước <=500Kb, có dấu hiệu nhận diện là A, và sử dụng thuật toán C để khôi phục lại file ban đầu. */
II - Làm thế nào để phân tích virus:
/* Như Benina đã nói, "phân tích code virus" (Malware Analysis) là:
- Một công việc đòi hỏi rất nhiều kỹ năng. Tôi xin sắp sếp lại các nhóm kỹ năng mà benina đưa ra theo mực độ khó dần như sau:*/
1. Các kỹ năng cần thiết để phân tích virus
1.1 Lập trình:
Lập trình hệ thống, driver (rootkit) , regsistry, lập trình API, DLL, add-on, native app, các ngôn ngữ lập trình VB,VC,Delphi, masm, tasm, lập trình htm, macro, vbs….
1.2 Sys Info:
Các kiến thức về hệ thống, ví dụ như dịch vu quản lý file của OS, dịch vụ quản lý bộ nhớ, prosesses, threads, hiểu về các thanh ghi như cr0,cr3…, các cấu trúc trong hệ điều hành như PEB,TEB,…, hàm API, native API, cấu trúc file PE, TLS,…., add-on của browser IE, MF…. Hiểu rõ các file như pif, cmd, autorun inf…..Cách thức làm việc của BHO, System Restore, WSH, scheduled Tasks,….
1.3 Đảo mã (reversing):
Sử dụng các tools decompiler, diassembler, debugger, monitor,….cách thức đặt breakpoint, sử dụng các plugins…Đọc code và quan trọng là biết asm.
1.4 Thuật toán: biết các thuật toán, kỹ thuật pack, protect, cryptor, mã hóa
1.5 Các kỹ thuật vx: inject code, inject dll, hide file, folder; overflow, polymorphism, EPO….
1.6 Lỗi bảo mật: của OS, browser, file chm, pdf….Nghiên cứu các mạng xã hội để khai thác lỗ hỏng sử dụng, lỗ hỏng bảo mật….
/* Điều đó có nghĩa, phải thành thạo lập trình thì mới có thể phân tích virus. Có những virus rất đơn giản, mà bạn chỉ cần kiến thức về lập trình là có thể hiểu nó. Ví dụ một virus đơn giản sau:
Code:
Mình đang tìm lại và sẽ update sớm
Tuy nhiên để hiểu rõ về virus nếu chỉ dừng lại ở việc quan sát xem virus làm những gì là chưa đầy đủ vì: thời gian quan sát chưa đủ dài, trên các đối tượng lây nhiễm khác nhau virus thể hiện các đặc tính khác nhau ... vì thế cách tốt nhất là phải đọc được hết toàn bộ code của virus. Khi đó bạn cần đến kỹ năng 1.3: dịch ngược (hay đảo mã). Với ba kỹ năng này bạn đã bước chân vào thế giới của các chuyên gia phân tích virus rồi đấy ^^!
Virus sẽ không để cho các chuyên gia dễ dàng "đọc được hết toàn bộ code" của nó như vậy. Virus sẽ biến đổi, tự làm phức tạp, tự mã hoá ... để cho quá trình dịch ngược ở trên trở nên không đơn giản nữa. Khi đó các chuyên gia phân tích cần phải có thêm kỹ năng 1.4 để giải mã, unpack ... virus. Thành thạo 4 kỹ năng này bạn sẽ phân tích được hầu hết các worm, virus đơn giản hiện nay ( tầm ~90% số virus).
Virus dĩ nhiên có thể được hiểu là một chương trình phần mềm máy tính. Nhưng khác với các chương trình bình thường, virus là những chương trình "đặc biệt", chúng thường sử dụng các kỹ thuật đặc trưng gọi là các kỹ thuật của virus. Nếu chỉ hiểu về lập trình thôi chúng ta sẽ rất khó khăn để hiểu các kỹ thuật này vì chúng là những kỹ thuật đặc biệt, không chính thống. Chuyên gia phân tích virus cần nhiều thời gian, phân tích nhiều virus để sưu tập nắm bắt và tích luỹ dần kinh nghiệm. Kỹ năng 1.5 là một kỹ năng dạng mềm, có được nhờ tích luỹ dần kinh nghiệm là chủ yếu.
Sau khi đã hiểu rõ bản thân con virus đó chúng ta cần thêm kỹ năng thứ 6 để biết được virus đã được phát thông qua con đường nào, thông qua lỗi bảo mật nào, hacker quản lý virus đã phán tán ra sao ... Khi đó chúng ta có thể đánh giá được mức độ nguy hiểm của virus đó, dự đoán được tốc độ lây lan ...*/
2. Các bước cơ bản để phân tích một virus:
/* chúng ta sẽ bỏ qua bước lấy mẫu, giả thiết mẫu được download từ trên một trang chuyên cung cấp mẫu virus. Mình xin đề ra các bước như sau*/
B1: Phân tích thông tin sơ bộ:
- Dự đoán đặc điểm, phân loại virus, chia dòng: Bằng cách xem mã hex, xem properties của file, kích thước file ... hoặc các thông tin đơn giản khác chúng ta tiến hành phân loại sơ bộ virus.
- Tìm kiếm thông tin: Upload virus lên virustotal hoặc scan bằng các antivirus xem chúng đã được nhận diện chưa. Nếu virus đã được nhận diện, chúng ta sẽ tìm kiếm thêm thông tin về virus đó làm cơ sở để thực hiện việc phân tích chi tiết.
B2: Monitor virus
- Thiết lập môi trường thử nghiệm: Sử dụng máy ảo, sandbox, vitural PC để cài đặt virus. Nếu virus có cơ chế phát hiện môi trường ảo có thể phải sử dụng môi trường thật đã được giới hạn (trong LAN) để thử nghiệm. Thiết lập mạng internet, web, mail, cài đặc các hệ thống lỗi nếu virus có khai thác lỗi ... Môi trường thử nghiệm càng đầy đủ, càng "thật" thì sẽ quan sát được càng nhiều đặc điểm của virus.
- Thiết lập các công cụ giám sát: Dĩ nhiên không thể monitor virus bằng mắt. Trong môi trường thử nghiệm cần có các công cụ monitor chuyên dụng như: File monitor, Registry monitor, Process monitor, Network monitor, các tool phát hiện rootkit ... Bộ công cụ này sẽ giúp chúng ta quan sát virus tốt hơn ^^!
- Chạy virus và ghi log: Quan sát càng lâu kết quả càng chính xác. Thông thường virus sẽ được quan sát cho đến khi chúng không còn hoạt động gì đáng kể hoặc hành động lặp đi lặp lại. Việc ghi log chủ yếu do các công cụ monitor chuyên dụng ở trên thực hiện.
- Phân loại virus và ghi nhận các đặc điểm: Từ các thông tin trên chúng ta sẽ tiến hành phân loại virus: là worm hay trojan, backdoor, virus lây file ... có rootkit hay không ... Nếu chỉ là một virus đơn giản, có thể dừng tại bước này để chuyển ngay sang bước diệt. Tuy nhiên bước tắt này không được xem là chính thống và tiền ẩn nhiều rủi ro.
B3: Dịch ngược (Reverse):
Sử dụng các kỹ năng 1.3 và 1.4 đã đề cập ở bên trên để dịch ngược virus trở về dạng có thể hiểu được dễ hơn. Tuỳ vào việc virus được viết bằng ngôn ngữ gì, sử dụng packer nào, thuật toán mã hoá nào mà việc dịch ngược lại có thể cho các kết quả khác nhau.
/*
Ví dụ: Chúng ta có thể dịch ngược Autoit, VBScript ... ra mã nguồn ban đầu, dịch virus viết bằng C ra tương đối giống mã gốc ... Trong khi đó các pack hàng khủng như armadillo, themida sẽ băm tan nát virus, làm chúng ta thật mệt mỏi nếu như muốn dịch ngược chúng. Một số virus còn nhét PKI, SHA, MD5 vào làm điên đầu người đọc.
Tóm lại dịch ngược thì gần như lúc nào cũng có thể làm được nhưng dịch ra dạng đẹp đến đâu, dễ hiểu đến đâu còn phụ thuộc vào tương quan kỹ năng 1.3 và 1.4 giữ chuyên gia phân tích virus và kẻ viết virus.
*/
B4: Lần vết (Debug, Trace):
Khi việc dịch ngược tỏ ra khó khăn hoặc thiếu hiệu quả. Hoặc khi cần làm thật rõ một đoạn mã người ta phải debug virus. Có nghĩa là sẽ lần từng lệnh nhỏ của virus để xem chính xác là virus làm những gì. Virus có các kỹ thuật chống dịch ngược thì cũng sẽ có các kỹ thuận chống debug (anti debug) và người phân tích phải vượt qua nó (anti anti-debug)
B5: Diệt virus
- Tìm đặc điểm nhận diện
- Đề ra các phương án khắc phục
- Cụ thể hoá bằng chương trình. Diệt tay hay diệt bằng tool
Bài bổ sung:
I - Tổng quan về phân tích virus (Malware Analysis):
1. Phân tích virus (Malware Analysis): Là quá trình tìm hiểu hành vi (behavior) của một virus. Có nhiều phương pháp khác nhau để phân tích virus, được chia thành 3 phương pháp chính như sau:
- Static analysis - Phân tích tĩnh: (thuật ngữ khác là code analysis)
Là việc nghiên cứu hoạt động một chương trình mà không cần phải thực thi. Các công cụ thường sử dụng trong quá trình phân tích tĩnh có thể kể đến như các disassembler, decompiler, source code analyzer ...
Ưu điểm của Static analysis là có thể phát hiện ra hoạt động, cách ứng xử của chương trình trong những điều kiện không tồn tại thực tế. Static analysis sẽ cho chúng ta cái nhìn rất đúng nhất về một chương trình. Sở dĩ gọi là gần đúng bởi rất hiếm khi chúng ta có thể nắm được toàn bộ hoạt động của một chương trình, trừ các chương trình đủ nhỏ.
- Dynamic analysis- Phân tích động: (thuật ngữ khác behavioral analysis)
Là việc nghiên cứu hoạt động của chương trình bằng cách thực thi chương trình đó. Các công cụ được sử dụng trong trường hợp này có thể kể đến như các debugger, function call tracer, machine emulator, logic analyzer, network sniffer ... Ưu điểm của phân tích động là nhanh và thông tin chính xác. Tuy nhiên dynamic analysis có một khuyết điểm là: "Tất cả những gì bạn thấy không phải là tất cả những gì chương trình có". Nói cách khác dynamic analysis không thể dự đoán được những hành vi của chương trình trong các điều kiện "đặc biệt" không tồn tại trong thực tế.
Ngoài hai phương pháp trên còn có một phương pháp phân tích nữa nhưng ít phổ biến là:
- Post-mortem analysis - Phân tích sau thực thi:
Là phương pháp phân tích dựa trên hậu quả của việc thực thi. Bằng việc xem xét sự thay đổi của các file, thư mục, log hệ thống, bằng thông tin còn trong RAM, bộ nhớ swap ... chúng ta có thể dự đoán được những hoạt động đã xảy ra của chương trình. Khuyết điểm của phương pháp là không phải phát hiện được các hoạt động nếu nó không gây là sự biến đổi của hệ thống, các biến đổi bị chồng chéo, bộ nhớ bị giải phóng sau một thời gian nhất định ... Đây là một phương pháp có nhiều tiềm năng nhưng thường bị bỏ qua.
Các bạn gọi "virus New Folder", "virus Autorun" ... là dựa trên phương pháp sau thực thi.
2. Mục tiêu của phân tích virus:
- Bạn không phải là các chuyên gia phân tích của các hãng AV, vậy bạn có cần hiểu biết về việc phân tích virus không?
Câu trả lời là có nếu như bạn là một Network Security Manager (ở Việt Nam gọi là quản trị mạng) hoặc là một nhân viên chịu trách nhiệm về security của hệ thống mạng. Không phải lúc nào AV cũng có thể giải quyết hết mọi vấn đề về virus cho hệ thống mạng của bạn. Nắm vững các kiến thức về phân tích virus giúp bạn chủ động trong các tình huống sự cố về virus.
Những nhận định, đánh giá ban đầu đúng đắn của bạn có ý nghĩa quyết định tới việc giảm thiểu rủi do và thiệt hại cho toàn bộ hệ thống.
- Mục tiêu đầu tiên của phân tích virus là để trả lời hai câu hỏi sau:
+ Thứ nhất: Tại sao máy tính lại bị nhiễm virus này.
+ Thứ hai: Chính xác virus này làm những gì?
- Sau khi xác định và phân loại được virus bạn sẽ có thể đặt ra những câu hỏi cụ thể hơn và quá trình phân tích sẽ là việc đi trả lời các câu hỏi đó để cuối cùng có thể trả lời được hai câu hỏi ban đầu bên trên.
II - Làm thế nào để phân tích virus:
1. Các kỹ năng cần thiết để phân tích virus
- Lập trình thành thạo:
Lập trình hệ thống, driver (rootkit) , regsistry, lập trình API, DLL, add-on, native app, các ngôn ngữ lập trình VB,VC,Delphi, masm, tasm, lập trình htm, macro, vbs….
- Nắm vững kiến thức hệ thống:
Các kiến thức về hệ thống, ví dụ như dịch vu quản lý file của OS, dịch vụ quản lý bộ nhớ, prosesses, threads, hiểu về các thanh ghi như cr0,cr3…, các cấu trúc trong hệ điều hành như PEB,TEB,…, hàm API, native API, cấu trúc file PE, TLS,…., add-on của browser IE, MF…. Hiểu rõ các file như pif, cmd, autorun inf…..Cách thức làm việc của BHO, System Restore, WSH, scheduled Tasks,….
- Đảo mã (reversing) thành thạo:
Sử dụng các tools decompiler, diassembler, debugger, monitor,….cách thức đặt breakpoint, sử dụng các plugins…Đọc code và quan trọng là biết asm.
- Nắm vững thuật toán:
Biết các thuật toán, kỹ thuật pack, protect, cryptor, mã hóa
- An hiểu các kỹ thuật đăng trưng của virus:
Inject code, inject dll, hide file, folder; overflow, polymorphism, EPO….
- Nắm bắt và biết khai thác các lỗi bảo mật:
Của OS, browser, file chm, pdf….Nghiên cứu các mạng xã hội để khai thác lỗ hỏng sử dụng, lỗ hỏng bảo mật….
2. Các công cụ phục vụ việc phân tích virus:
Phần này đã được giới thiệu chi tiết tại topic:
Có thể tóm tắt lại như sau:
- Phần mềm phục vụ việc ảo hóa hệ thống:
+ VMware
- Công cụ phục vụ dynamic (behavioral) analysis:
+ BgInfo - small application providing import system information such as hostname, IP address, OS version, etc.
http://www.microsoft.com/technet/sys...es/BgInfo.mspx
+ Process Explorer – small application that find out what files, registry keys and other objects have open, which DLL’s they have loaded.
http://www.microsoft.com/technet/sys...sExplorer.mspx
+ Process Monitor – small application used to monitor file system, registry, process, thread and DLL activity in real-time.
http://www.microsoft.com/technet/sys...ssmonitor.mspx
+ PSfile - application that shows a list of files on a system that are opened remotely.
http://www.microsoft.com/technet/sys...es/PsFile.mspx
+ RootkitRevealer – application that scans system for known rootkit-based malware.
http://www.microsoft.com/technet/sys...tRevealer.mspx
+ Streams – application that reveals NTFS alternate streams.
http://www.microsoft.com/technet/sys...s/Streams.mspx
+ Strings – application that searches for ANSI and UNICODE strings in binary images.
http://www.microsoft.com/technet/sys...s/Strings.mspx
+ TCPView – application providing information about TCP and UDP connections, including the local and remote address and TCP connection state.
http://www.microsoft.com/technet/sys...s/TcpView.mspx
+ Windump – Windows version of the powerful and flexible tcpdump sniffer.http://www.winpcap.org/windump
+ nmap – world’s best port scanner.
http://www.insecure.org/nmap/download.html
+ Fport – Identifies unknown ports and their associate applications.
http://www.foundstone.com/us/resources-free-tools.asp
+ Hfind (Part of the Forensic Toolkit) – application that will scan for the disk for hidden files.
http://www.foundstone.com/us/resources-free-tools.asp
+ Vision – reports all open TCP and UDP ports and maps them to the owning process or application.
http://www.foundstone.com/us/resources-free-tools.asp
+ Filewatch – a file change monitor.
http://www.foundstone.com/us/resources-free-tools.asp
+ Attacker – a TCP/UDP port listener.
http://www.foundstone.com/us/resources-free-tools.asp
+ MD5sums – Generates MD5 hashes for file integrity verification.
http://www.pc-tools.net/win32
+ Winalysis – monitors for changes to files, the registry, users, groups, security policies, services, shares, scheduled jobs, the system environment and more.
http://www.winalysis.com/download.htm
+ WinHex – Hex editor, you may choose any hex editor that you like.
http://www.x-ways.net/winhex/
- Các công cụ static (code) analysis:
+IDA Pro – popular interactive, programmable, extendible, multi-processor debugger and disassembler.
http://www.datarescue.com/idabase/idadown.htm
+ Reverse Engineering Compiler – popular decompiler.
www.backerstreet.com/rec/rec.htm
+ ProcDump 32 – unpacker application.
http://www.fortunecity.com/millenium.../procdump.html
+ PE Explorer -- provides tools for disassembly and inspection of unknown binaries.
http://www.heaventools.com/download-pe-explorer.htm
+ Windbg – windows debugging applications.
http://www.microsoft.com/whdc/devtoo...nstallx86.mspx
+ Livekd – application that allows Windbg debugger to run locally on a live system.
http://www.microsoft.com/technet/sys...on/LiveKd.mspx
Thảo luận về các sử dụng từng công cụ đã được bàn nhiều trong các topic của diễn đàn, các bạn có thể tự tham khảo thêm.
3. Các bước cơ bản để phân tích một virus:
B1: Phân tích thông tin sơ bộ:
- Dự đoán đặc điểm, phân loại virus, chia dòng: Bằng cách xem mã hex, xem properties của file, kích thước file ... hoặc các thông tin đơn giản khác chúng ta tiến hành phân loại sơ bộ virus.
- Tìm kiếm thông tin: Upload virus lên virustotal hoặc scan bằng các antivirus xem chúng đã được nhận diện chưa. Nếu virus đã được nhận diện, chúng ta sẽ tìm kiếm thêm thông tin về virus đó làm cơ sở để thực hiện việc phân tích chi tiết.
B2: Monitor virus
- Thiết lập môi trường thử nghiệm: Sử dụng máy ảo, sandbox, vitural PC để cài đặt virus. Nếu virus có cơ chế phát hiện môi trường ảo có thể phải sử dụng môi trường thật đã được giới hạn (trong LAN) để thử nghiệm. Thiết lập mạng internet, web, mail, cài đặc các hệ thống lỗi nếu virus có khai thác lỗi ... Môi trường thử nghiệm càng đầy đủ, càng "thật" thì sẽ quan sát được càng nhiều đặc điểm của virus.
- Thiết lập các công cụ giám sát: Dĩ nhiên không thể monitor virus bằng mắt. Trong môi trường thử nghiệm cần có các công cụ monitor chuyên dụng như: File monitor, Registry monitor, Process monitor, Network monitor, các tool phát hiện rootkit ... Bộ công cụ này sẽ giúp chúng ta quan sát virus tốt hơn ^^!
- Chạy virus và ghi log: Quan sát càng lâu kết quả càng chính xác. Thông thường virus sẽ được quan sát cho đến khi chúng không còn hoạt động gì đáng kể hoặc hành động lặp đi lặp lại. Việc ghi log chủ yếu do các công cụ monitor chuyên dụng ở trên thực hiện.
- Phân loại virus và ghi nhận các đặc điểm: Từ các thông tin trên chúng ta sẽ tiến hành phân loại virus: là worm hay trojan, backdoor, virus lây file ... có rootkit hay không ... Nếu chỉ là một virus đơn giản, có thể dừng tại bước này để chuyển ngay sang bước diệt. Tuy nhiên bước tắt này không được xem là chính thống và tiền ẩn nhiều rủi ro.
B3: Đảo mã, dịch ngược (Reverse):
Sử dụng các kỹ năng 1.3 và 1.4 đã đề cập ở bên trên để dịch ngược virus trở về dạng có thể hiểu được dễ hơn. Tuỳ vào việc virus được viết bằng ngôn ngữ gì, sử dụng packer nào, thuật toán mã hoá nào mà việc dịch ngược lại có thể cho các kết quả khác nhau.
B4: Lần vết (Debug, Trace):
Khi việc dịch ngược tỏ ra khó khăn hoặc thiếu hiệu quả. Hoặc khi cần làm thật rõ một đoạn mã người ta phải debug virus. Có nghĩa là sẽ lần từng lệnh nhỏ của virus để xem chính xác là virus làm những gì. Virus có các kỹ thuật chống dịch ngược thì cũng sẽ có các kỹ thuận chống debug (anti debug) và người phân tích phải vượt qua nó (anti anti-debug)
B5: Diệt virus
- Tìm đặc điểm nhận diện
- Đề ra các phương án khắc phục
- Cụ thể hoá bằng chương trình. Diệt tay hay diệt bằng tool
III - Các biện pháp đối phó với việc phân tích virus
Sẽ update sau ...
Tham khảo:
[1] A Review of Small and Large Post-Mortem Analysis Methods
http://virtual.vtt.fi/moose/docs/pma...sea-layout.pdf
[2] Malware Analysis for Administrators
http://www.securityfocus.com/infocus/1780
[3] Malware Analysis: An Introduction
http://www.sans.org/reading_room/whi...&cat=malicious
[4] Malware Analysis Basics
http://www.porcupine.org/forensics/f.../chapter6.html
Bài viết thuộc bản quyền của VIRUSVN.COM. Xin vui lòng ghi rõ nguồn khi trích đăng.