Tải bản đầy đủ (.docx) (10 trang)

Hướng dẫn phân tích mã độc cho chuyên gia

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (457.82 KB, 10 trang )

Các nội dung về phân tích mã độc cho chuyên gia
1. Phát hiện mã độc trong hệ thống
Công việc đầu tiên khi phân tích các mã độc trong hệ thống đó là phát hiện các mã độc
trong hệ thống. Thông thường khi phát hiện các mã độc ta sẽ thu được một tập các mẫu,
và nhiệm vụ tiếp theo là phải cho ra kết luận mẫu nào là mã độc, mẫu nào là các chương
trình bình thường. Với mã độc sẽ được mang đi phân tích tiếp.
1.1. Phát hiện mã độc trong các tiến trình đang thực thi
Sử dụng công cụ Process Explorer, ta có thể quan sát các tiến trình đang thực thi trong
hệt thống, nếu phát hiện tiến trình nào đó ‘lạ’ mà ta không chủ động cài đặt vào, hoặc có
tên đặc biệt, hoặc nằm ở những vị trí lạ (Không phải ở %sytem32%, hay %Program File
%) thì cần chú ý.
Chương trình Process Explorer đã cung cấp thêm nhiều thông tin khác nhau liên quan tới
tiến trình đang chạy như: Company Name, Description), các thông tin này cũng cần được
lưu ý, nhiều mã độc không có những thông tin miêu tả ở đây hoặc những thông tin miêu
tả ở đây có điểm bất hợp lý.
Một điểm cần lưu ý khác đó là khi ta quan sát các tiến trình đang thực thi, ta cần lưu ý
xem có tiến trình nào cứ liên tục xuất hiện rồi biến mất hay không. Nếu có thì cần chú ý
kiểm tra kĩ hơn những tiến trình này.
Bước tiếp theo là ta sẽ phát hiện ra những module lạ trong các tiến trình. Mã độc sau khi
thực thi có thể sẽ cài vào trong các tiến trình khác một module độc hại để thực hiện các
chức năng khác, hay đơn giản là làm một keylogger. Ta sẽ lựa chọn xem xét các module
trong một tiến trình. Có thể chọn một tiến trình và chọn phím tắt Ctrl+D.
Sau khi đã lựa chọn chế độ xem các module trong các tiến trình, ta sẽ quan sát với từng
tiến trình đặc biệt là những tiến trình như: explorer.exe, winlogon.exe, … hay những tiến
trình của những chương trình thường dùng trong máy kiểm tra. Với các module ta có thể
click đúp vào từng cột để sắp xếp theo từng cột đó nhằm thuận tiện hơn trong việc đánh
giá một module nào đó có phải đáng nghi hay không.
Khi tìm ra một module đáng nghi, ta có thể lựa chọn module đó để có thể xem đường
dẫn, các miêu tả liên quan tới module đó, và có thể tới tận module đó để kiểm tra chữ kí
điện tử của nó nhằm quyết định xem có nên lấy mẫu đó hay không.
Với những mã độc đơn giản và đang thực thi thì có thể dễ dàng phát hiện với Process


Explorer, với những mã độc mà chỉ thực thi một khoảng thời gian ngắn hoặc sử dụng các
kĩ thuật phức tạp hơn ta sẽ cần phải dùng đến biện pháp tiếp theo để phát hiện ra nó.
1.2. Phát hiện các mã độc thông qua các thành phần khởi động
cùng Windows
Các mã độc sau khi xâm nhập vào máy tính thành công thì phần lớn các mã độc (99%)
đều phải được khởi động lên cùng với hệ điều hành cho những lần khởi động tiếp theo,
tức là mã độc luôn phải ghi một khóa khởi động nào đó. Trong phần này ta sẽ sử dụng
công cụ Autoruns để dò xét toàn bộ các thành phần khác nhau được cho phép khởi động
cùng với hệ điều hành. Nếu mã độc tồn tại trong hệ thống, nó sẽ tồn tại ở một trong
những thành phần này.
Công cụ Autoruns sẽ liệt kê toàn bộ các thành phần khởi động cùng Windows trong tab
Everything, ngoài ra nó có thể chia nhỏ tab này thành nhiều tab nhỏ hơn ứng với các nội
dung khác nhau, ta có thể vào từng tab để xem những thành phần khởi động cùng
Windows. Thông thường các mẫu mã độc sẽ nằm ở hai tab Logon và tab Services.
Để thuận tiện hơn trong quá trình tìm kiếm những thành phần khởi động của mã độc, ta
có thể bật lựa chọn kiểm tra chữ kí điện tử lên, khi đó những chương trình nào đã được kí
điện tử thì ta có thể tin tưởng được nguồn gốc xuất xứ của chúng và ta sẽ tập trung vào
những phần mềm không được kí điện tử. Về nguyên tắc, tất cả những phần mềm không
được kí điện tử đều đáng nghi, ngoài ra những phần mềm mà theo lẽ thường có chữ kí
điện tử (như các chương trình chuẩn của Windows) mà lại không thấy chữ kí điện tử ở
đây thì đó cũng là diện nghi ngờ. Lựa chọn cho phép Autoruns kiểm tra chữ kí điện tử
nằm trên menu Options.
hay
Sau khi chọn option này, thì các thành phần khởi động sẽ được kiểm tra chữ kí điện tử, và
xuất hiện cụm từ Verified, ngược lại những thành phần kiểm tra không thành công sẽ
xuất hiện Not Verified, đó là những thành phần ta phải chú ý.
Hay
Những thành phần không có chữ kí điện tử sẽ hiển thị khác màu hoặc xuất hiện Not
Verified.
Sau khi thực hiện hai bước kiểm tra trên, về cơ bản ta đã xác đinh được mã độc trong hầu

hết các hệ thống.
Quá trình kiểm tra các mã độc ta cũng cần chú ý đến ngày tháng của hệ thống
2. Các hành vi đáng chú ý trong quá trình phân tích các mã
độc
Sau khi đã phát hiện ra mã độc, bước tiếp theo là phân tích các hành vi của mã độc. Tuy
nhiên, để tiết kiệm thời gian, thông thường quá trình phân tích mã độc tập trung vào
những đặc điểm sau của mã độc:
- Kĩ thuật lây lan của mã độc
- Cách thức mã độc sử dụng để khởi động cùng với hệ điều hành
- Các thông tin mà mã độc thu thập
- Các thông tin và cách thức mã độc gửi thông tin ra ngoài, thông thường phần này
ta sẽ tìm ra được mã độc sẽ kết nối đến domain nào.
- Đưa ra phương án xử lí mã độc, ngoài ra nếu mã độc lây lan trên diện rộng cần
nghiên cứu cách xây dựng công cụ xử lý mã độc tự động.
Việc quan sát các hành vi của mã độc có thể thực hiện bằng các công cụ monitor khác
nhau. Phần tiếp theo sẽ là cách cấu hình cơ bản cho một số công cụ monitor này. Lưu ý là
quá trình monitor này tốt nhất nên thực hiện trong các máy ảo và sử dụng đường mạng
được cấu hình không cho kết nối trực tiếp với các vùng mạng khác. Hoặc cũng có thể
thực hiện trong máy thật nhưng cài đặt các phần mềm đóng băng như Deep Freeze.
Trước hết là công cụ để monitor các hành vi tác động vào file của mã độc. Thường các
mã độc sẽ tìm cách tạo ra các file tạm hay copy bản thân nó vào đâu đó, công cụ monitor
này sẽ giúp tìm ra được những vị trí đó.
Trước tiên là cấu hình cho File Monitor.
Như ta có thể thấy, File Monitor hỗ trợ việc monitor các hành vi tác động khác nhau tới
các file trong toàn bộ hệ thống. Thông thường ta sẽ quan tâm tới các Log Reads, Log
Writes và Log Successes.
Ta có thể quan sát thấy các thao tác khác nhau với các file đã được ghi rõ. Ta cũng có thể
lựa chọn Filter một tiến trình nào đó để tập trung quan sát các thao tác của tiến trình đó
với các File. Nếu mã độc tạo file tạm, hay thực hiện các hành vi sao chép file, chuyển file
thì từ log của File Monitor ta sẽ quan sát được.

Sau khi đã thu được các hành vi của mã độc với các file, ta sẽ sử dụng công cụ Registry
để có thể thu được hành vi của mã độc tác động tới hệ thống Registry. Như phân tích phía
trên, nhất định các mã độc sẽ tìm cách tạo ra một thành phần khởi động nào đó nó có thể
được khởi động lên cùng với Windows. Trước hết là cấu hình cơ bản của File Monitor:
Tương tự như trên ta cũng có thể cấu hình cho Registry Monitor bắt được các sự kiện
khác nhau tác động vào Registry, thông thường ta sẽ quan tâm tới các Log Writes và Log
Successes. Khi mã độc ghi một khóa mới vào hệ thống Registry thì trên phía Registry
Monitor sẽ bắt được và ghi lại. Thông thường các khóa đáng chú ý là các khóa có thể
giúp khởi động được mã độc. Có thể tham khảo công cụ Autoruns để biết tập các khóa có
thể khởi động lên cùng với Windows.
Các thao tác với hệ thống được ghi lại sẽ có dạng như sau:
Ngoài ra, tương tự như File Monitor ta cũng có thể lọc các thao tác này theo các tiến trình
bằng cách đặt các luật Filter, có thể thực hiện nhanh các luật Filter này bằng cách chọn
chuột phải vào ngay tại đó.
Từ những log này sẽ giúp ta quan sát được toàn bộ các thao tác của mã độc đối với hệ
thống Registry, và có thể biết mã độc sẽ tạo ra thành phần khởi động nào chứa nó. Thông
thường, các tác động của mã độc lên hệ thống Registry sẽ được bắt lại hết và các tác động
này thường chỉ xoay quanh việc tạo ra hay chỉnh sửa các khóa khởi động.
Tiếp theo ta sẽ quan sát các hành vi kết nối mạng của các mã độc. Đa số các mã độc mới
xuất hiện gần đây đều có khả năng kết nối tới một domain nào đó để thực hiện các thao
tác như gửi thông tin, hay nhận các lệnh điều khiển, hay thậm chí là update các phiên bản
mới của nó.
Khi monitor mã độc trong máy ảo ta có thể sử dụng Wireshark để bắt các kết nối qua lại
một cổng nào đó. Ta lựa chọn Interface để bắt các gói tin:
Thông thường với công cụ bắt các gói tin, nếu mã độc có hành vi kết nối tới một domain
nào đó thì ta sẽ dễ dàng thu được kết quả.
3. Phân tích mã độc chuyên sâu
Cuối cùng là sử dụng các kĩ thuật Reverse Engineering để phân tích mã của mã độc bằng
các công cụ dịch ngược. Với cách này yêu cầu cần phải sử dụng thành thạo các công cụ
và kĩ thuật dịch ngược và thời gian thực hiện sẽ bị kéo dài hơn rất nhiều. Tuy nhiên,

phương pháp này có một lợi thế là ta sẽ phân tích được toàn bộ các hành vi khác nhau
của mã độc, kể cả những hành vi bình thường mã độc không thể hiện ra. Và ta cũng thấy
được tương quan giữa các module khác nhau của mã độc. Ngoài ra một lợi ích nữa là ta
sẽ ‘học hỏi’ được các kĩ thuật mới của mã độc.
Việc phân tích mã độc chuyên sâu chính là việc dịch ngược một mã độc, tức là các kĩ
thuật sử dụng ở đây hoàn toàn là các kĩ thuật dịch ngược và được dùng cho việc phân tích
một hành vi nào đó của mã độc (tương tự cho các cracker sử dụng kĩ thuật dịch ngược để
bẻ khóa phần mềm).
Kiến thức cần thiết rất nhiều, không thể trình bày cụ thể trong một bài tóm tắt được, ở
đây sẽ nêu ra những nội dung cần thiết phải nắm được để rèn luyện kĩ năng dịch ngược
phần mềm. Hiện tại đã có khá nhiều các hướng dẫn (tutorial) bằng tiếng Việt và cũng đủ
chi tiết về nội dung. Trước hết sẽ là các mảng kiến thức cần nắm được để có thể rèn luyện
kĩ năng dịch ngược:
- Kiến thức về ngôn ngữ Assembly
- Kiến thức về C/C++ và kinh nghiệm lập trình thực tế với C/C++ (Cả lập trình tuần
tự và lập trình hướng đối tượng).
- Lập trình Windows API, và có thể cả Windows MFC.
- Kiến thức về cơ chế hoạt động của Windows; cấu trúc các file thực thi PE (File
exe, dll)
- Công cụ giúp disassembly và debug OllyDbg (sử dụng thành thạo, các plugin hỗ
trợ, các mẹo giúp trong quá trình debug)
- Công cụ phân tích tĩnh IDA Pro và plugin Hex-Ray của nó.
- Nâng cao hơn nữa: Các kiến thức về viết plugin, script cho cả OllyDbg và
IDAPro.
- Ngoài ra, hiểu biết về các thuật toán sẽ giúp ích cho việc phân tích nhiều mã độc
phức tạp và có sử dụng đến các thuật toán hay cấu trúc dữ liệu đặc biệt.
- Các kiến thức cơ bản về mã độc.
Ta đi lần lượt vào các tài liệu cho từng phần đề cập phía trên.
- Với Assembly thì có thể tham khảo ebook: The air of Assembly và ngoài ra loạt
tutorial về Olly của kienmanowar cũng khá ổn, trong đó chỉ phân tích một số lệnh

cơ bản cần thiết nhất trong quá trình dịch ngược, tutorial có thể tham khảo ở dây:
, còn ebook có thể
tìm thấy dễ dàng trên Google.
- Về kiến thức C/C++ thì đã được học ở trên trường. Tài liệu tham khảo thì có thể
dùng bất cứ giáo trình nào cũng được.
- Lập trình Windows API và MFC: Có thể tìm quyển ebook tiếng Việt là Lập trình
MFC, hoặc những ebook liên quan, ví dụ như “Programming Windows with
MFC- Jeff Prosise”. Ngoài ra có thể tham khảo thêm các project trên
codeproject.com.
- Về hoạt động của các file thực thi trong Windows, cũng như cấu trúc file PE thì sử
dụng tài liệu tham khảo rất hay là PE Tutorial của reaonline.net, có thể dễ dàng
tìm thấy trên mạng. Tài liệu này nói chung là ngắn gọn, đầy đủ các nội dung cần
nắm. Để nắm rõ hơn về hoạt động của Windows thì có thể tham khảo sách lập
trình Windows ví dụ như: Programming Windows Fifth Edition.
- Về OllyDbg thì sử dụng bộ tutorial của kienmannowar phía trên:
Bộ tutorial này đã
cung cấp các kiến thức về sử dụng OllyDbg từ cơ bản tới nâng cao dần, nắm hết
được bộ Tutorial này là ok rồi.
- Với IDAPro thì sử dụng IDAPro Booktìm thấy dễ dàng trên mạng, ebook này đầy
đủ tất cả các chức năng khác nhau của IDAPro, mọi chức năng cần thiết đều có thể
tra cứu trong này được.
- Việc viết các plugin hay script cho OllyDbg và IDAPro thì chỉ cần search tài liệu
trên mạng, phần này tớ cũng không có tài liệu. Với IDA thì trong quyển IDAPro
book đã đầy đủ.
- Các kiến thức cơ bản về mã độc thì cần tham khảo hai quyển ebook: Virus –
Huyền thoại và thực tế (tiếng Việt), và quyển
The.Art.of.Computer.Virus.Research.and.Defense (tiếng Anh, giới thiệu ngắn gọn
và đầy đủ về các kĩ thuật khác nhau của virus cũng như các phương pháp phát
hiện, xử lý virus tương ứng đó).
Tập hợp đủ các kiến thức trên là có thể dịch ngược được phần mềm nói chung hay mã

độc nói riêng rồi. Ngoài ra có thể tham khảo các tài liệu sau:
- Sổ tay cho Cracker (tổng hợp từ ReaOnline.net, tiếng Việt).
- Tuts4you.com (Tổng hợp đầy đủ các tutorial, ví dụ, plugin, … trong mảng dịch
ngược)
- Luyện tập ở những trang chứa các mẫu crackme trên mạng, ví dụ như:
/>Cuối cùng, thực hiện với nhiều mẫu khác nhau thì tốc độ và các kĩ năng sẽ được cải
thiện.

×