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 Analysis và Malware 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ụ
- Volatility: Open source Memory Forensics toolkit.
- Wireshark: Packet capture & packet analysis engine.
- Timeline Explorer: View, filter CSV & Excel files.
- 010Editor / HxD: Hex Editor.
- CryptoTester: Tool for testing encryption algorithms.
- CyberChef: web app for encryption, encoding, compression & data analysis.
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ỗi “Windows\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 filee 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)
Bài viết quá hay!
ReplyDeleteThanks anh Kiên :)
@ZigXIV:
ReplyDeleteĐược nhé bạn! Vui lòng cung cấp lại link bạn đưa bài.
Regards,
I just couldn't leave your website before telling you that I truly enjoyed the top quality info you present to your visitors? Will be back again frequently to check up on new posts. email marketing costs
ReplyDelete