[IR006] Incident Response Challenge_Sad Chal Write-up


1. Câu chuyện

Thông qua Twitter, tôi biết được công ty Cynet có xây dựng và tổ chức một cuộc thi dành cho các chuyên gia Ứng phó sự cố (Incident Response) kiểm tra kỹ năng của mình thông qua một loạt thử thách theo cấp độ từ Basic tới Advanced. Lý do Cynet tổ chức cuộc thi này là do họ nhận thấy các cuộc thi Capture the Flag (CTF) đã quá phổ biến, trong khi các cuộc thi về Capture the Evidence nhằm kiểm tra khả năng điều tra, phán đoán, chắt lọc thông tin dựa trên các chứng cứ thu được vẫn còn rất ít. Toàn bộ 25 bài thử thách được Cynet công bố tại đây và không giới hạn số lượng người tham gia. Người nào vượt qua hết các thử thách và đứng ở vị trí đầu tiên sẽ giành được giải thưởng là $5.000 USD.

Theo Cynet, các thử thách đều được xây dựng và cố vấn bởi các chuyên gia hàng đầu. Thời gian tạo nên khác biệt! Trả lời đáp án càng nhanh thì số điểm ghi được càng nhiều. Trong quá trình tham gia các thử thách, tôi nhận thấy bài 21 (Sad) là một trong những thử thách đòi hỏi ở người tham dự nhiều kĩ năng khác nhau, bao gồm Memory Forensic, Packet AnalysisMalware Analysis. Trong bài viết này, tôi sẽ chia sẻ lại quá trình tôi tìm ra đáp án như thế nào.

2. Yêu cầu và nhiệm vụ

2.1. Yêu cầu của đề bài

Một máy trạm (desktop-hub666e) trong hệ thống đã bị nhiễm mã độc tống tiền. Trên máy hiện lưu nhiều tập tin rất có giá trị. Trong đó, tất cả các giao dịch với ngân hàng Iron Bank đều được lưu trên máy này. Nhân viên của công ty đã thực hiện thu thập file PCAP và file ảnh bộ nhớ của máy để phục vụ cho công tác điều tra, phân tích.

Công ty hiện không đủ khả năng tài chính để chi trả khoản tiền chuộc mà tin tặc yêu cầu. Họ rất cần lấy lại dữ liệu bên trong file đã bị mã hóa trên máy”.

2.2. Nhiệm vụ của người tham dự

Thực hiện phân tích trên các files đã cung cấp. Gửi lại nội dung đã giải mã được.


3. Công cụ


4. Phân tích chứng cứ

4.1. Phân tích nội dung file tải về


Nội dung trong file Hard - Sad.rar tải về như hình dưới đây:


Trong đó:
  • _readme.txt: là ransom note. Mục đích của nó là hướng dẫn nạn nhân cách thức trả tiền chuộc để có thể lấy lại được dữ liệu gốc.

  • DESKTOP-HUB666E-20200113-141824.dmp: memory dump của máy trạm kèm theo file DESKTOP-HUB666E-20200113-141824.json mô tả một số thông tin, bao gồm:
    • Ứng dụng dump memory: DumpIt (3.0.20190919.1)
    • Thông tin về OS:
      • buildNumber: 15063
      • majorVersion: 10
    • Thông tin về máy:
      • architectureType: x64
      • domainName: GOT
      • machineName: DESKTOP-HUB666E
      • userName: JonSnow
  • Dump.pcapng: file PCAP chứa thông tin về network traffic thu thập được trên máy trạm.
  • Flag!.txt.yarraq: file bị mã hóa cần giải mã.

Dựa vào thông tin có được ở trên, tạm thời có thể đưa ra một số nhận định sau:
  • Máy trạm sử dụng hệ điều hành Windows 10 x64 Version 1703.
  • Tải khoản bị nhiễm mã độc là JonSnow.
  • File memory dump là ảnh chụp nhanh dữ liệu bộ nhớ máy tính tại thời điểm xảy ra sự cố. Nó sẽ chứa nhiều thông tin có giá trị về trạng thái của hệ thống như các tiến trình đang chạy, kết nối mạng đang mở, các lệnh đã được thực thi, ...
  • File PCAP chứa thông tin về network traffic của máy trạm như truy cập địa chỉ nào, tải file gì, …

4.2. Phân tích memory dump


Sử dụng công cụ Volatility thực hiện:
  • Kiểm tra thông tin về các tiến trình lạ thông qua các plugin như pslist, psscan, pstree nhưng không thấy dấu hiệu khả nghi.

  • Sử dụng plugin malfind để tìm kiếm injected code/DLLs, tuy nhiên không có dấu hiệu đáng ngờ:
  • Kiểm tra dấu hiệu persistence thông qua plugin autoruns cũng không phát hiện điểm khả nghi:

  • Kiểm tra thông tin UserAssist, nơi lưu thông tin về ứng dụng đã được chạy từ một shortcut (file LNK) hay trực tiếp từ tập tin thực thi. Tuy nhiên, Volatility trả về kết quả “The requested key could not be found in the hive(s) searched”.
  • Sử dụng plugin mftparser để quét và trích xuất thông tin Master File Table (MFT) entries từ memory. MFT là thành phần quan trọng trong hệ thống NTFS, nó chứa thông tin của tất cả các tập tin và thư mục trong ổ đĩa logic. Dựa vào kết quả trích xuất, tìm kiếm theo chuỗiWindows\Prefetch\”, kết quả thu được thông tin về file SALARY-2019.EXE đã được khởi chạy trên máy trạm:
  • Tiếp tục sử dụng plugin filescan để quét và trích xuất thông tin về file objects, hi vọng có thể tìm được địa chỉ vật lý của file SALARY-2019.EXE. Kết quả thu được sau khi tìm kiếm theo user JonSnow như hình dưới. Khả năng mã độc đã tạo và sao chép chính nó vào thư mục Rand123 với tên local.exe. Thử dump file theo địa chỉ trong hình nhưng không thành công.
  • Sử dụng plugin shimcachemem để thu thập Application Compatibility Cache (Shim Cache) được lưu trong memory. Shimcache được sử dụng bởi hệ điều hành để xác định các vấn đề tương thích ứng dụng cũng như hữu ích trong việc xác định những ứng dụng nào đã thực thi trên hệ thống:

Với các thông tin thu thập được ở trên, tạm thời chỉ có thể đưa ra nhận định, tải khoản JonSnow đã tải file “Salary-2019.exe” có chứa mã độc về máy và thực thi file này. Mã độc có khả năng đã tạo và copy chính nó vào thư mục Rand123 với tên local.exe. Sau khi mã độc được thực thi, hệ thống bị mã hóa dữ liệu và hiển thị yêu cầu đòi tiền chuộc. Như vậy, khả năng file PCAP sẽ chứa nội dung của file “Salary-2019.exe” mà người dùng đã tải về máy.

4.3. Phân tích PCAP


Sử dụng công cụ tshark để trích xuất toàn bộ các truy vấn DNS từ file pcap. Tiến hành lọc và khoanh vùng, xác định được một DNS khả nghi:


Mở Dump.pcapng bằng Wireshark, vì nghi ngờ người dùng đã tải mã độc về nên thử áp dụng bộ lọc “data.data || media.type”:


Dựa vào kết quả trên hình, có thể nhận biết được dấu hiệu của các PE files đã được tải về, bao gồm:

Host

File Name

r5---sn-ivuoxu-ua8s.gvt1.com

79.0.3945.117_chrome_installer.exe

bug.ac

Salary-2019.exe


Như vậy, với thông tin có được đến thời điểm này, có thể khẳng định người dùng đã tải file mã độc Salary-2019.exe từ địa chỉ bug.ac. Để trích xuất mã độc, tại Wireshark truy cập File -> Export Objects -> HTTP:


Chọn object như trên hình, sau đó nhấn Save để lưu file Salary-2019.exe ra thư mục chỉ định.

4.4. Phân tích mã độc


Kiểm tra file
e
Salary-2019.exe vừa lưu, mã độc này được viết bằng .NET và ngụy trang bằng icon của pdf để đánh lừa người dùng:


Sử dụng công cụ dnSpy để phân tích, kết hợp với kiểm tra hash của mã độc trên VirusTotal, có thể thấy mã độc này thuộc dòng Ransomware đã biết là HiddenTear.


Từ entry point Main() mã độc gọi Form1(), tiếp theo gọi tới method InitializeComponent() để thiết lập các thuộc tính và cuối cùng gọi method chính là startAction():


Tại startAction(), mã độc gọi method MoveVirus() với nhiệm vụ tạo thư mục Rand123 và di chuyển nó vào thư mục này với tên mới là local.exe. Bước này ứng với bằng chứng đã phân tích được ở trên:


Tiếp theo, mã độc thực hiện tạo một password ngẫu nhiên có độ dài 15 kí tự, tiến hành mã hóa các thư mục được chỉ định với password vừa tạo. Tạo ransom note, kiểm tra kết nối Internet, thiết lập wallpaper trên máy nạn nhân, và cuối cùng gọi hàm SendPassword(password) để gửi mật khẩu kèm theo thông tin của nạn nhân về máy chủ của kẻ tấn công:


4.5. Tìm kiếm password trên Memory dump

Dựa vào kết quả phân tích ở trên, sử dụng một trình Hex Editor để tìm kiếm chuỗi “password=” trong memory dump. Cuối cùng tìm được password là “iXGwWakNXnnm06(”.


4.6. Giãi mã file


Để giải mã file đã bị mã hóa, sử dụng công cụ CryptoTester được phát triển bởi chuyên gia Michael Gillespie (@demonslay335). Công cụ này có sẵn cấu hình cho phép giải mã HiddenTear tại Advanced -> Presets -> HiddenTear.

Cung cấp dữ liệu đã bị mã hóa từ file Flag!.txt.yarraq và mật khẩu tìm được ở trên cho phần mềm, sau đó nhấn Decrypt để thực hiện giải mã dữ liệu:


Với sự hỗ trợ của CyberChef, dữ liệu giải mã được có nội dung như sau:



5. Bài học rút ra

  • Thử thách được xây dựng dựa trên chủ ý của người ra đề. Tình huống thực tế sẽ phức tạp hơn rất rất nhiều.
  • Liên tục nâng cao kỹ năng. Điều này chỉ có được thông qua việc thực hành thật nhiều.
  • Cập nhật và áp dụng công cụ phù hợp theo tình huống. Điều này có được thông qua việc thực hành, đọc các bài viết chuyên môn, …
  • Lượng thông tin đầu vào là khổng lồ, do đó cần phải thật bình tĩnh trong quá trình xử lý, chắt lọc thông tin và đưa ra kết luận phù hợp.


Tran Trung Kien (aka m4n0w4r)
R&D Center - VinCSS (a member of Vingroup) 


3 comments:

  1. Bài viết quá hay!
    Thanks anh Kiên :)

    ReplyDelete
  2. e xin phép reup có ghi nguồn ạ <3 mong a chấp nhận

    ReplyDelete
    Replies
    1. @ZigXIV:
      Được nhé bạn! Vui lòng cung cấp lại link bạn đưa bài.

      Regards,

      Delete