+1

Mình Reverse Engineer Con Malware Và Suýt Phá Máy

Hôm trước có thằng bạn gửi mình file .exe bảo:

“Tool edit video siêu nhẹ, dùng thử đi.”

Mình cũng tò mò nên ném vào máy ảo chạy thử.

Chưa đầy 20 giây, CPU vọt 98%, quạt kêu như máy bay, mấy process lạ hiện lên.

Lúc đó mình biết ngay là dính hàng.

Thay vì delete luôn, mình mở Ghidra ra reverse thử coi sao.

Ngồi gần 6 tiếng đồng hồ mới xong.

Cực mệt nhưng cũng sướng thật.


Câu chuyện con malware đó

File exe khoảng 4.8MB.

Mở trong Ghidra thấy nó bị pack nhẹ bằng UPX.

Unpack xong thì hiện ra một mớ hàm lộn xộn nhìn muốn đau đầu.

Mình để ý nó gọi khá nhiều API kiểu:

  • InternetConnectA
  • HttpSendRequestA
  • CryptUnprotectData

Sau khi debug bằng x64dbg thì mới thấy rõ nó đang làm gì.

Nó lượm cookie + login data từ Chrome:

%LocalAppData%\Google\Chrome\User Data\Default\Network

Sau đó dump ra, mã hóa sơ rồi gửi POST request về một domain lạ.

Ngoài ra nó còn tải thêm một module khác để đào coin ngầm.

Lúc patch được đoạn anti-debug (nó check BeingDebugged flag) rồi chặn luôn hàm gửi request là mình thở phào thật.

Mà lúc đó cũng gần 2 giờ sáng rồi.


Reverse Engineering thực ra là gì?

Nói đơn giản thì là tháo tung file binary ra để xem bên trong nó đang chạy cái quái gì.

Không có source code.

Chỉ có:

  • file exe,
  • dll,
  • hoặc memory dump.

Dev hay dùng reverse engineering để:

  • Phân tích malware
  • Hiểu mấy chương trình cũ không còn ai maintain
  • Check thư viện bên thứ ba xem có backdoor không
  • Chơi CTF

Những thứ mình hay dùng

Mình không dùng quá nhiều tool.

Chủ yếu xoay quanh mấy cái này:

  • Ghidra → xem tổng thể và decompile
  • x64dbg → debug thật, đặt breakpoint
  • Process Explorer → xem process và handle
  • Wireshark → xem nó đang call network đi đâu

IDA với Binary Ninja thì mạnh thật nhưng mình chưa dùng quen lắm.


Nếu muốn thử reverse engineering

Thứ đầu tiên:

Đừng nghịch malware bằng máy thật.

Bắt buộc nên có:

  • VirtualBox hoặc VMware
  • snapshot
  • network isolation nếu có thể

Ngoài ra:

  • Học Assembly cơ bản trước
  • Không cần giỏi nhưng phải đọc được flow
  • Bắt đầu bằng crackme dễ trên crackmes.one

Đừng lao vào malware thật ngay.

Có hôm mình ngồi debug đúng một hàm mà mất cả tiếng chỉ để hiểu nó đang jump đi đâu.

Reverse engineering không phải kỹ năng mà dev nào cũng cần.

Nhưng nếu thích security hoặc thích đào sâu cách chương trình hoạt động thì cực cuốn.


Bạn nào từng reverse cái gì chưa?

Hay đang muốn thử mà vẫn rén Assembly?

Comment kể mình nghe với.

Nếu nhiều anh em quan tâm thì bài sau mình viết cách setup lab reverse engineering đơn giản cho dev mới luôn.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí