Agentic Malware Analysis: Tự động phân tích mã độc với AI & MCP

ByNgọc Trai MKT23/06/2026in GitHub Tools 0
agentic-malware-analysis

Agentic Malware Analysis là môi trường Docker tự động phân tích mã độc dựa trên AI agent, kết nối MCP với Binary Ninja hoặc Ghidra, giúp bạn chuyển từ một file nhị phân thô thành bộ hồ sơ bằng chứng có cấu trúc – không cần thao tác thủ công.

Thank you for reading this post, don't forget to subscribe!

Những điểm chính

  • Container Kali Linux đóng gói sẵn hơn 50 công cụ reverse engineering (YARA, capa, floss, radare2, Ghidra, v.v.), tự động chọn back-end disassembler qua MCP.
  • Skill Malware Analysis Orchestrator dành cho Claude Code và Codex CLI tự động hóa 8 giai đoạn phân tích, sinh ra thư mục case với 13 tệp kết quả, sẵn sàng cho phân tích chuyên sâu tiếp theo.
  • Tích hợp MCP giúp AI agent trực tiếp kiểm tra hàm, cross-reference trong Binary Ninja (khuyến nghị) hoặc Ghidra, gắn kết luận vào vị trí code cụ thể.
  • Hỗ trợ file PE, ELF, Mach-O; trạng thái và chứng thực Claude/Codex được lưu bền vững qua các lần build lại container.
  • Quy trình có cấu trúc nhưng kết quả không tất định: mỗi lần phân tích có thể khác, cần chuyên gia xác nhận để tránh suy luận sai.

Agentic Malware Analysis là gì và giải quyết vấn đề gì?

Agentic Malware Analysis là gì và giải quyết vấn đề gì?
Agentic Malware Analysis là gì và giải quyết vấn đề gì?

Nếu đã từng mất cả buổi sáng chỉ để chạy strings, yara, capa rồi lần mò import table, bạn hiểu công đoạn sơ bộ (triage) trong phân tích mã độc ‘hút thời gian’ thế nào. Agentic Malware Analysis ra đời để tự động hóa toàn bộ phần việc lặp đi lặp lại đó. Nó đóng gói một Kali Linux với 50+ công cụ RE, tự động chọn MCP back-end (Binary Ninja hoặc Ghidra), và cung cấp một skill orchestrator cho Claude Code hoặc Codex CLI, thực thi pipeline 8 pha – từ trích xuất hash, strings, YARA, capa, đến lập giả thuyết hành vi và xây dựng kế hoạch phân tích sâu – mà không cần một cú nhấp chuột trung gian. Kết quả được lưu vào thư mục status/<NNN>-<filename>/ với 13 tệp rõ ràng, sẵn sàng cho bạn review hoặc tiếp tục ‘đào sâu’. Bạn có thể xem chi tiết tại repository gốc trên GitHub.

Những tính năng nổi bật giúp bạn ‘lội ngược dòng’ mã độc

Những tính năng nổi bật giúp bạn ‘lội ngược dòng’ mã độc
Những tính năng nổi bật giúp bạn ‘lội ngược dòng’ mã độc

Mình đánh giá cao điểm sáng của repo này không chỉ là số lượng tool, mà là cách nó tổ chức phân tích thành một quy trình có bằng chứng và trạng thái. Dưới đây là các thành phần ‘xương sống’.

Pipeline 8 pha với MCP back-end

Orchestrator dẫn dắt agent qua 8 giai đoạn: intake & fingerprinting, thu thập strings, thu thập import, lọc và xếp hạng tín hiệu đáng ngờ, sinh giả thuyết hành vi (kèm độ tin cậy và bằng chứng), kiểm kê thành phần (component inventory), mô hình tương tác dữ liệu/luồng điều khiển, và cuối cùng là lập kế hoạch phân tích sâu có ưu tiên. Mỗi pha ghi trạng thái vào CURRENT_STATE.json và cập nhật các tệp như 00_sample_profile.md, 05_behavior_hypotheses.md… Điều này giúp agent có thể nhớ tiến trình ngay cả khi cửa sổ ngữ cảnh bị nén, thay vì dựa vào lịch sử hội thoại dễ quên.

50+ công cụ trong một container, sẵn sàng ‘bấm máy’

Danh sách tool bao phủ từ cơ bản đến chuyên sâu: file, ssdeep, diec, yara, capa, strings, floss, rabin2, radare2, binwalk, gdb, objdump, strace, qemu-user, upx, unblob, ropper, cùng Python, Node.js 22. Có sẵn cả bộ YARA rules từ Yara-Rules/rules (crypto, anti-debug/anti-VM, capabilities, packer) dưới GPL-2.0. Bạn chỉ cần đưa mẫu vào thư mục được mount, agent sẽ có toàn quyền đọc/ghi bên trong sandbox.

Tự động chọn Binary Ninja hoặc Ghidra, ưu tiên chất lượng

Chỉ cần đặt file binaryninja.zip vào thư mục gốc, script run_docker.sh sẽ cài đặt Binary Ninja headless cùng MCP server binary-ninja-headless-mcp. Ngược lại, nó tự rơi về Ghidra với ghidra-headless-mcp. Mình khuyên dùng Binary Ninja vì kết quả phân tích tốt hơn hẳn – nhờ API Python và khả năng trả về code location chính xác. Ghidra là cứu cánh miễn phí khi bạn chưa có license BN.

Wrapper script ‘mạnh tay’ cho Claude Code và Codex CLI

Repo bao gồm hai wrapper claudecodex với thiết lập mặc định táo bạo: model opus (hoặc gpt-5.4), effort high, và flag --dangerously-skip-permissions / --dangerously-bypass-approvals-and-sandbox. Điều này là cố ý để agent có thể tự động thực thi script, gọi tool mà không hỏi lại từng bước. Tuy nhiên, nó chỉ an toàn trong sandbox container và bạn phải hiểu rõ rủi ro khi mount thư mục chứa mẫu nhạy cảm.

Hướng dẫn cài đặt và sử dụng nhanh

Hướng dẫn cài đặt và sử dụng nhanh
Hướng dẫn cài đặt và sử dụng nhanh

Chỉ cần vài phút để có môi trường ‘chiến’ ngon lành. Hãy làm theo các bước bên dưới nha.

  1. Clone repo và chuẩn bị Binary Ninja zip (tuỳ chọn): git clone https://github.com/mrphrazer/agentic-malware-analysis.gitcp /path/to/binaryninja_linux.zip ./binaryninja.zip. Nếu không có zip, Ghidra sẽ được dùng.
  2. Cấp quyền thực thi và chạy: cd agentic-malware-analysis rồi ./run_docker.sh. Script sẽ kiểm tra Docker buildx, clone MCP server cần thiết, build image (cache theo content hash), seed license BN cùng credential Claude/Codex từ host, và khởi động container với thư mục hiện tại được mount vào /agent.
  3. Vào container, giải nén mẫu ví dụ: cd examples && unzip -P infected samples.zip && cd ..
  4. Khởi chạy phân tích với orchestrator skill: claude (hoặc codex) và nhập prompt: Analyze the malware in examples/samples/mfc42ul.dll — Give me a detailed overview of the sample’s functionality and features, together with the corresponding code locations. Use the skill /agent/agent_helpers/claude/skills/malware-analysis-orchestrator/ for analysis.
  5. Theo dõi kết quả xuất hiện trong thư mục status/ trên host. Mỗi mẫu sẽ có thư mục riêng với đầy đủ 13 tệp, từ raw strings đến báo cáo draft.

Lưu ý: bạn có thể tuỳ biến model, effort, hoặc override MCP repo bằng biến môi trường như BINARY_NINJA_ZIP, BINJA_MCP_REPO_URL, v.v. Xem thêm trong README. Để dùng Codex thay vì Claude, chạy ./run_docker.sh codex và prompt tương tự. Quan trọng: container chạy với --privileged tương đương (SYS_PTRACE, seccomp=unconfined) – cần thiết cho debug, nhưng đừng expose nó ra mạng không tin cậy.

Ai nên dùng – và ai không nên?

Ai nên dùng – và ai không nên?
Ai nên dùng – và ai không nên?

Nên dùng nếu: bạn là malware analyst, threat hunter, SOC team lead muốn có pipeline triage tự động, tiết kiệm thời gian cho việc đánh giá sơ bộ hàng loạt mẫu. Đặc biệt phù hợp với ai đã sở hữu Binary Ninja và API key Anthropic/OpenAI, quen làm việc với Docker và terminal. Repo này cũng là ‘bệ phóng’ tốt để bạn xây dựng workflow phân tích tùy chỉnh trên nền Claude Code hoặc Codex.

Không nên dùng nếu: bạn mới chập chững reverse engineering, chưa có kiến thức nền về assembly hay PE/ELF, vì kết quả agent đưa ra có thể chứa suy luận quá tự tin và cần chuyên gia xác minh. Hoặc nếu bạn cần phân tích động có điều phối (sandbox orchestration) – hiện tại repo chỉ tập trung static, các tool động như strace có mặt nhưng không nằm trong pipeline. Ngoài ra, nếu môi trường của bạn hạn chế về tài nguyên hoặc yêu cầu bảo mật nghiêm ngặt, hãy cân nhắc kỹ trước khi chạy container với đặc quyền cao.

Câu hỏi thường gặp

Tôi có bắt buộc phải dùng Binary Ninja không?

Không. Nếu không có file binaryninja.zip, môi trường tự rơi về Ghidra headless. Tuy nhiên, kết quả từ Binary Ninja thường chi tiết và chính xác hơn, đặc biệt về mặt cấu trúc code, vì vậy mình khuyên đầu tư license BN nếu bạn phân tích chuyên nghiệp.

Container chạy với –dangerously-skip-permissions, có an toàn không?

Các flag này chỉ áp dụng bên trong sandbox container, không ảnh hưởng đến máy host trừ thư mục bạn mount. Tuyệt đối không mount các thư mục hệ thống nhạy cảm, và không expose container ra mạng. Trong môi trường phân tích mã độc, sự linh hoạt để agent tự động hoá là cần thiết, nhưng bạn vẫn phải giám sát.

Skill orchestrator có tự động chạy dynamic analysis không?

Hiện tại chưa. Pipeline chỉ điều phối các bước phân tích tĩnh. Các công cụ như strace, qemu-user vẫn có sẵn, và bạn có thể yêu cầu agent dùng chúng qua prompt, nhưng chưa có quy trình tự động. Tương lai có thể sẽ được bổ sung.

Tôi có thể xem lại kết quả cũ sau khi container rebuild không?

Có. Tất cả kết quả được lưu vào thư mục status/ trên host, được mount vào container. Mỗi lần chạy lại, agent sẽ dùng resolve_case.sh để tìm thư mục case hiện có và tiếp tục phân tích hoặc sinh mới, không ghi đè lung tung.

Kết luận

Agentic Malware Analysis không phải là ‘cây đũa thần’ thay thế kỹ năng reverse engineering, nhưng nó là trợ thủ đắc lực giúp bạn vượt qua mớ công việc triage nhàm chán một cách có hệ thống. Với sự kết hợp của Docker, MCP, và Claude Code/Codex, bạn có một pipeline ‘đóng gói’ sẵn sàng đưa mẫu vào là có hồ sơ, giả thuyết và kế hoạch đào sâu. Nếu bạn đang mệt mỏi vì phân tích thủ công lặp đi lặp lại, hãy thử ngay: clone repository, làm theo quick start, và để AI giúp bạn dọn đường – còn bạn tập trung vào những pha ‘high-level’ đòi hỏi óc phán đoán thực thụ.

Related Posts