![]() |
| freepik.com |
1. Giới thiệu
Chào mừng bạn đến với MAS (Malware Analysis Series). Thành thật mà nói, trong bốn năm qua, đó là một khoảng thời gian khá Việc dừng công việc nghiên cứu của tôi để viết một bài báo thật khó khăn cũng như không thể viết một loạt bài, nhưng tôi nghĩ bây giờ nó khả thi và chúng ta hãy thử xem. Chỉ lấy một ví dụ, lần trước tôi viết một bài hời hợt là vào năm 2017 và chắc chắn là tôi thậm chí còn không nhớ cho đến khi gần đây một đồng nghiệp nói về nó.
Mục đích là tạo ra một loạt bài viết về phân tích phần mềm độc hại và giải thích từ các mã nhị phân phần mềm độc hại đơn giản cho đến phức tạp nhất, bao gồm một danh sách lớn các chủ đề như unpacking, API resolving, C2 extraction, C2 emulation và tất nhiên, reverse engineering bên cạnh một số phân tích động và có thể sử dụng một ít kỹ thuật giải mã. Khi cần thiết, tôi sẽ đề cập đến các chủ đề khác như COM (COM (Component Object Model), cryptography, IDC/IDA Python và mọi thứ cần thiết để giúp người đọc hiểu rõ hơn về phân tích.
Hơn nữa, tôi cũng sẽ viết các bài báo ngắn về các chủ đề như tài liệu mã độc (lần này tôi đã phát hành một bài: https://exploitreversing.com/2021/11/02/malicious-document-analysis-example-1/),
lập trình, giải mã, nội bộ hệ điều hành, v.v. Tuy nhiên, trọng tâm chính sẽ là MAS (Malware Analysis Series - Chuỗi phân tích phần mềm độc hại).
Vì phân tích mã độc tạo ra các bài viết phong phú nên tôi sẽ chia chúng thành phần 1, 2, v.v. khi cần thiết.
Mỗi bài viết sẽ được xuất bản trên blog mới của tôi (sử dụng phông chữ khác nhau) và ở đầu mỗi bài đăng sẽ có phiên bản PDF của bài viết đó.
Trong loạt bài viết này, tôi sẽ sử dụng một số công cụ và cố gắng chỉ ra nơi bạn có thể sử dụng chúng để giúp mọi việc trở nên đơn giản hơn.
Tôi sẽ không chỉ đề xuất những mẫu cứng bởi vì, theo quan điểm khiêm tốn của tôi, cách tiếp cận này
sẽ không giúp được bất cứ ai (chủ yếu là những người có chuyên môn muốn học thứ gì đó) và cuối cùng, điều đó sẽ chỉ lãng phí thời gian (và một sự phô trương vô ích). Do đó, chúng ta sẽ phân tích các mẫu khác nhau, mỗi mẫu có mức độ khó khác nhau và thảo luận về một số dòng mã. Như tôi đã đề cập trước đây, chiến lược là chia một bài viết thành nhiều phần khác nhau nếu cần thiết để tránh khiến việc đọc trở nên quá mệt mỏi.
2. Thiết lập phòng thí nghiệm
Giải thích về cách bố trí phòng thí nghiệm, tôi thường phân tích tất cả các mẫu bằng một hoặc nhiều hệ thống sau:
- Windows 7, Windows 8.1 hoặc Windows 10: Nếu bạn cần máy ảo Windows 10, Microsoft tiếp tục cung cấp máy ảo có thời gian hết hạn trên trang web này: https://developer.microsoft.com/enus/windows/downloads/virtual-machines/
- REMnux (phân phối tốt nhất cho kỹ thuật đảo ngược): https://docs.remnux.org/install-distro/getvirtual-appliance
- Ubuntu 20.04.x: https://ubuntu.com/download/desktop
Tôi sẽ cố gắng tránh sử dụng bất kỳ kỹ thuật vô nghĩa nào và tập trung vào các công cụ phổ biến. Thật không may, một vài trong số chúng không miễn phí (như IDA Pro, cho đến nay là công cụ yêu thích của tôi và theo ý kiến của tôi, là công cụ đảo ngược tốt nhất trên toàn thế giới từ trước đến nay), nhưng Hex-Rays cung cấp IDA Free và một khoản thanh toán phải chăng. phiên bản có tên IDA Home:
Không còn nghi ngờ gì nữa, bạn có thể sử dụng Ghidra để disassemble, decompile and debug bất kỳ mã nào trong trường hợp bạn cảm thấy thoải mái hơn với nó: https://github.com/NationalSecurityAgency/ghidra/releases
Bạn sẽ cần một trình gỡ lỗi tốt và chắc chắn trình gỡ lỗi tốt nhất là x64dbg/x32dbg, bạn có thể tải xuống từ trang web sau:
- x64dbg: https://x64dbg.com/#start
Ngoài ra, có rất nhiều plugin x64dbg có thể được cài đặt để mở rộng chức năng x64dbg/x32dbg và được khuyên dùng trong quá trình phân tích động (chủ yếu là để tránh các kỹ thuật chống gỡ lỗi được phần mềm độc hại sử dụng), vì vậy rất ít trong số đó bạn có thể muốn cài đặt là hiển thị dưới đây:
- ScyllaHide: đó là một thư viện chống gỡ lỗi nâng cao kết nối một số chức năng để ẩn quá trình gỡ lỗi hoạt động từ phần mềm độc hại: https://github.com/x64dbg/ScyllaHide/releases
- Labeless: đây là một plugin khá được khuyên dùng, cung cấp hai tính năng chính cho trình đảo ngược:
- Đồng bộ nhãn, tên hàm, biến toàn cục và nhận xét giữa x64dbg và IDA Pro.
- Việc kết xuất động các vùng khỏi bộ nhớ cho một quy trình được gỡ lỗi, điều này sẽ hữu ích, ví dụ: để kết xuất tệp nhị phân sau khi giải quyết API nhiệm vụ của nó và/hoặc giải mã chuỗi.
- Labeless plugin có thể được tải xuống từ: https://github.com/a1ext/labeless/releases
- DbgChild: nó cung cấp khả năng phát hiện tự động các tiến trình con được tạo bởi tiến trình đã gỡ lỗi và tự động đính kèm một phiên bản mới của x64dbg nếu tiến trình chính tạo ra một tiến trình mới, do đó tiết kiệm thời gian của bạn trong nhiều cơ hội. DbgChild có sẵn từ: https://github.com/David-Reguera- Garcia-Dreg/DbgChild
Các plugin hữu ích khác vẫn tồn tại, nhưng hãy đợi thời điểm thích hợp để nói về chúng. Đúng giờ: nhiều plugin có sẵn không được tác giả và người bảo trì lưu giữ thường xuyên nên không thể hoạt động bất cứ lúc nào. Hãy cẩn thận!
Tất cả các công cụ còn lại sẽ được hiển thị trong quá trình phân tích của chúng tôi và nhiều bài viết trong tương lai.
Cuối cùng nhưng không kém phần quan trọng, bài viết này (và tất cả những bài viết sau) chắc chắn sẽ có những lỗi sẽ được sửa và tôi sẽ phát hành các phiên bản PDF mới phản ánh tất cả các bản sửa lỗi.
3. Mục tiêu phân tích mã độc
Không còn nghi ngờ gì nữa, đó là một điểm thú vị: chúng ta đang tìm kiếm điều gì khi phân tích hệ nhị phân?
Câu hỏi này có liên quan vì có nhiều mục tiêu và khía cạnh có thể được xem xét khi phân tích phần mềm độc hại. Tuy nhiên, trong quá trình điều tra trong thế giới thực, có những lĩnh vực quan trọng khác như phân tích phần mềm độc hại và tất nhiên, chúng ta nên xem xét chúng trong mọi thời điểm phân tích của mình:
a. Memory Analysis: đây là một kỹ thuật cực kỳ mạnh mẽ, đã chứng tỏ giá trị vô hạn của nó trong 10 năm qua và được sử dụng như một phương pháp tiếp cận đầu tiên trong quá trình điều tra để hiểu các sự kiện lây nhiễm phần mềm độc hại, hậu quả, tác dụng phụ của nó và có thể thu được rất nhiều bằng chứng có thể khó thu thập từ
đĩa hoặc bất kỳ nguồn nào khác.
b. Network Analysis: đây là một tài nguyên khá hữu ích (ví dụ: tệp pcap ) để hiểu và phát hiện
giao tiếp không được ủy quyền (C2 – kênh chỉ huy và kiểm soát) thông qua phân tích lưu lượng truy cập và thực hiện thu thập giả tạo (ví dụ: tệp nhị phân, tài liệu độc hại và đèn hiệu Cobalt Strike).
c. Filesystem/Disk Analysis: biên giới cuối cùng của bất kỳ cuộc điều tra nào, nơi chúng tôi có thể phân tích và phát hiện tác dụng phụ của sự xâm lược của đối thủ, vi phạm, gian lận, rò rỉ và tất nhiên là lây nhiễm mã độc.
Một lần nữa, tất cả chúng đều rất quan trọng và phải được sử dụng trong mọi cuộc điều tra trong thế giới thực. Tuy nhiên, hãy quay lại điểm chính: tại sao bạn nên tìm hiểu về kỹ thuật đảo ngược và đặc biệt là phân tích phần mềm độc hại? Đơn giản: thông qua phân tích phần mềm độc hại, bạn có cơ hội tìm hiểu từ nguồn gốc của tội ác về ý định và mục tiêu của kẻ thù chứ không chỉ tác động của nó. Nói cách khác, bạn có thể học các kỹ thuật, thủ thuật, chiến lược né tránh và nếu may mắn, bạn sẽ có thể thu thập các hiện vật quan trọng để đưa ra ghi nhận chính xác (hầu hết thời gian, đó là một nhiệm vụ khó khăn) và ai biết được, hãy giúp đỡ. để bắt giữ kẻ xấu.
Do đó, trước khi bắt đầu bất kỳ nhiệm vụ reversing nào, chúng ta nên nhớ rằng có rất nhiều câu hỏi mà chúng ta nên cân nhắc và tự hỏi:
- Tệp nhị phân có được đóng gói không? Nếu đúng như vậy thì mã độc đang sử dụng trình đóng gói nổi tiếng hay trình đóng gói tùy chỉnh?
- Kỹ thuật/bộ API giao tiếp mạng đang được phần mềm độc hại sử dụng là gì? Từ các kỹ thuật có sẵn như Winsock2, Wininet, COM (Component Object Model) hay thứ gì đó ở cấp độ thấp hơn như WSK (Winsock Kernel) hay thậm chí là kỹ thuật triển khai tùy chỉnh đang được sử dụng?
- Có kỹ thuật chèn mã hoặc móc nối nào đang được sử dụng không? Cái nào?
- Các kỹ thuật chống pháp y được sử dụng là gì? Có kỹ thuật chống gỡ lỗi nào không ? Chống tháo gỡ? Chống VM/Sandbox?
- Có mã hóa API/DLL nào không?
- Chuỗi có được mã hóa không?
- Mã độc đang sử dụng nguyên tắc đồng bộ hóa nào? Đôi khi họ giấu điều quan trọng kỹ thuật chống gỡ lỗi.
- Thuật toán mã hóa đang được phần mềm độc hại sử dụng là gì ?
- Những phương pháp kiên trì nào đang được mối đe dọa sử dụng: Sổ đăng ký, dịch vụ, tác vụ hoặc trình điều khiển hạt nhân?
- Có shellcode nào được đưa vào tiến trình của hệ điều hành không?
- Có trình điều khiển bộ lọc mini hệ thống tập tin nào đang được cài đặt bởi phần mềm độc hại không?
- Nếu có trình điều khiển kernel đang được cài đặt, có bất kỳ lệnh gọi lại (một loại hook hiện đại) hoặc bộ hẹn giờ nào đang được cài đặt không?
Trong bài viết đầu tiên này, chúng tôi sẽ chỉ tập trung vào hai mục tiêu ngắn:
a. Giải nén mã độc.
b. Trích xuất và giải mã dữ liệu cấu hình của C2 của nó.
Chúng tôi đang xem xét một số kỹ thuật phổ biến để giải nén các mối đe dọa phần mềm độc hại cũng như các phương pháp khác nhau để trích xuất dữ liệu cấu hình của C2. Hơn nữa, tôi sẽ cung cấp kiến thức nền tảng
tối thiểu về một số chủ đề cơ bản để giúp người đọc có thể tiếp tục nghiên cứu riêng về các chủ đề đã đề cập.
4. Thu thập thông tin ban đầu
Mẫu đầu tiên có hàm băm sau:
(SHA256) 8ff43b6ddf6243bd5ee073f9987920fa223809f589d151d7e438fd8cc08ce292
Chúng tôi có thể thu thập rất nhiều thông tin từ nhiều điểm cuối như Malware Bazaar, như minh họa trong hình bên dưới:
