Introduction

Tại sao cần học lập trình malware? - Để tự custom malware nhằm né tránh việc phát hiện.

Chọn ngôn ngữ nào?

  • Nên chọn các ngôn ngữ khó bị reverse chẳng hạn như C, Golang, etc.
  • Không phụ thuộc vào môi trường. Ví dụ, nếu dùng Python thì cần phải có intepreter ở trên máy nạn nhân thì mới có thể chạy được malware.
  • Tùy ngôn ngữ mà kích thước file thực thi sẽ khác nhau.

Mục tiêu là né tránh các giải pháp bảo mật dựa trên host (host-based) chẳng hạn như Antivirus (AV) hoặc Endpoint Detection and Response (EDR).

Tương tự với việc phát triển phần mềm thông thường, việc phát triển malware cũng có chu trình tên là MDLC - Malware Development Life Cycle (tương tự với Software Development Life Cycle). Các bước của chu trình này:

  • Phát triển hoặc tinh chỉnh các tính năng của malware.
  • Kiểm thử để phát hiện bug.
  • Kiểm thử với AV/EDR mà không có kết nối mạng với càng nhiều sản phẩm bảo mật càng tốt. Mục đích của việc ngắt kết nối mạng là để mẫu mã độc (sample) không bị gửi đến security vendor. Ví dụ, nếu sử dụng Microsoft Defender, chúng ta có thể vô hiệu hóa tùy chọn “automated sample submissions” và “cloud-delivered protection”.
  • Kiểm thử với AV/EDR mà có kết nối mạng.
  • Phân tích IoC (Indicators of Compromise): đóng vai trò như là threat hunter hoặc malware analyst để tìm ra các IoC mà có thể bị dùng để phát hiện mã độc.
  • Quay lại bước 1.

Required Tools

Các công cụ sử dụng:

  • Visual Studio
  • x64dbg: debugger
  • PE-bear: static analyzer cho file PE
  • Process Hacker: theo dõi tiến trình
  • Msfvenom: tạo payload
list
from outgoing([[MalDev - Introduction and Required Tools]])
sort file.ctime asc

Resources