Mustang Panda và một số biến thể của mã độc PlugX được sử dụng phổ biến trong thời gian gần đây - Phần II
Mẫu XOR 2
Một số kỹ thuật mới
Control flow flattening
Biến thể mới sử dụng kỹ thuật control flow flattening nhằm gây khó khăn trong việc phân tích mã độc. Kỹ thuật này biến các câu lệnh điều kiện, các vòng lặp hay các khối chương trình trở thành một vòng lặp vô hạn cùng một lệnh switch được sử dụng để kiểm soát luồng thực thi của chương trình.
Dưới đây là hình minh hoạ về luồng thực thi của hàm DecryptConfig khi sử dụng và không sử dụng kỹ thuật trên.
Dynamic Resolve API
Biến thể mới của PlugX sử dụng thuật toán fnv-1a để hash và lấy địa chỉ các hàm thay vì chỉ sử dụng GetProcAddress và LoadLibraryA như các biến thể cũ được biết đến trước đây.
Anti-analysis
Tại các hàm Export của mã độc, mã độc chèn một lượng lớn các mã rác không có chức năng, khiến cho luồng thực thi khó nhận diện.
String obfuscation
Đối với biến thể cũ của PlugX, mã độc chỉ sử dụng stack string để chống lại các công cụ như strings.exe. Nhưng với biến thể mới này, mã độc sử dụng xen kẽ giữa stack string bị mã hoá XOR và stack string không bị mã hoá.
Một số điểm khác so với các mẫu đã từng gặp
Giải mã cấu hình
Ở biến thể mới của MustangPanda, thay vì kiểm tra cấu hình với XXXXXXXX, mã độc sẽ tiến hành kiểm tra với ######## mã độc sẽ tiến hành giải mã cấu hình. Cấu hình vẫn được giải mã bằng cách XOR với key 123456789.
Cấu trúc của cấu hình có dạng như sau:
Sau khi giải mã, ta được một số thông tin sau:
Có thể thấy rằng, ở biến thể mới của Mustang Panda, có thêm 1 trường mới là Campaign ID ngoài các cấu hình quen thuộc. Trường này được sử dụng để định danh chiến dịch tấn công và được gửi tới máy chủ điều khiển khi lây nhiễm thành công.
UAC Bypass
Biến thể mới cũng sử dụng một số kỹ thuật bypass UAC như UAC Bypass – Fodhelper và UAC Bypass – eventvwr. Các kỹ thuật này được mô tả chi tiết tại:
- https://pentestlab.blog/2017/06/07/uac-bypass-fodhelper
- https://www.winhelponline.com/blog/microsoft-fixes-eventvwr-exe-uac-bypass-exploit-windows-10-creators-update/
Tạo schedule task để bật mạng
Mã độc tiến hành tạo schedule task để bật interface. Command có dạng như sau:
cmd.exe /c schtasks.exe /create /sc minute /mo 30 /tn <task name>
/tr "netsh interface set interface ""<interface name>"" enabled"
/ru SYSTEM /F&schtasks.exe /run /tn <task name>
Trường Interface name sẽ bao gồm một trong những thông tin sau:
- Wireless Network Connection
- Wireless Network Connection 1
- Wireless Network Connection 2
- Wireless Network Connection 3
- Wi-Fi
- Wi-Fi 1
- Wi-Fi 2
- Wi-Fi 3
- Ethernet0
- Ethernet
- Ethernet 1
- Ethernet 2
- Ethernet 3
- Local Area Connection
- Local Area Connection 1
- Local Area Connection 2
- Local Area Connection
Giao tiếp với máy chủ điều khiển
Ở biến thể này, mã độc sử dụng RtlCompressBuffer với thuật toán LZ để nén dữ liệu. Sau đó, mã độc sẽ sử dụng RC4 để mã hoá dữ liệu vừa nén (ở các biến thể cũ, mã độc sử dụng XOR) và sử dụng khoá được hardcode có giá trị là sV!e@T#L$PH%. Dữ liệu vừa được mã hoá sẽ được gửi tới server, quá trình ngược lại cũng tương tự.