Chiều hôm qua mình có đọc 1 bài cảnh báo của Mạnh Tuấn trong group J2Team tại đây
https://www.facebook.com/groups/j2team.community/permalink/1524022037929911/
Mới đầu mình cũng không có để ý cho lắm, vì thực ra mình không chuyên mảng bảo mật, phân tích dịch ngược này. Múa rìu qua mắt thợ người ta cười cho.
Nhưng khoảng 2 tiếng sau mình lại thấy một bài post của Tuấn trên trang cá nhân (https://www.facebook.com/J2TEAM.ManhTuan/posts/1909208129218517)
Mình có tiện hỏi công cụ phân tích việc tạo/xoá file của các process thì Tuấn có bật mí là con trojan này được code bằng AutoIT
Bản thân mình cũng là một người yêu thích AutoIT và học nó gần như là ngôn ngữ lập trình đầu tiên (sau Pascal) nên khá là hứng thú.
Hôm nay tiện đang rảnh nên ngồi vọc vạch em nó ra để xem em nó có gì hay.
Đầu tiên tất nhiên là mình tạo máy ảo cho yên tâm cái đã.
Sau khi copy vào môi trường máy ảo. Mình thử ngay dịch ngược mã nguồn em nó ra xem có làm gì đc ko.
Với AutoIT thì hầu hết đều có thể dịch ngược được. Quan trọng có giải mã đc Obfuscate hay không thôi.
Dùng myAutToExe để dịch ngược thì được luôn. Nhưng sau khi mở mã nguồn đã dịch ngược thì hú hồn, hoa mắt chóng mặt vì cấp độ Obf của nó rất cao, đến tận từng string và value
Nhìn sơ qua thì có rất nhiều function và var được khai báo nhưng không sử dụng (mục đích làm rối code)
Mình có viết 1 đoạn script để loại bỏ các function và var này (bằng AutoIT luôn). Tuy nhiên sau khi loại bỏ phần dư thừa. Compile thành exe thì mình chạy lên process sẽ tự đóng. Mình nghĩ trong code đã có những function kiểm tra và thoát chương trình. Vì vậy mình tạm thời bỏ qua cách này. Quay ra phân tích hoạt động của nó
Mình sử dụng 4 công cụ:
- HTTPDebuggerPro
- ProcessMonitor
- ProcessExplorer
- và Windows_File_ToolsV1-0 do Mạnh Tuấn chỉ
Sau khi chạy con trojan. Mình kiểm tra trên HTTPDebuggerPro. Thì thấy có 3 request đến 1 domain là okim.me
1. Phân tích Request
Request đầu đến /login.php bằng method HEAD cùng với đó gửi kèm khá nhiều header khác thường như User-Agent, OS, Version...
Trả về của request HEAD đương nhiên cũng chỉ có HEADER với các thông số như ảnh
Ta chú ý có 2 giá trị là zip và unzip. Đây là đường dẫn của 2 file sẽ tải về máy. Bằng cách này thì con trojan có thể thay đổi chính nó sau này bằng cách đổi giá trị zip ở return header
Sau đó 2 request phía dưới lần lượt tải 2 file về máy. Tuy nhiên cũng phải dùng User-agent là AutoIT mới có thể load về đc
7za.exe nhìn qua đã thấy là phần mềm 7zip. còn files.7z là gói nén mã độc
Mình lại xem bên Windows File Tool thì đầu tiên nó sẽ giải nén ra vào thư mục
C:\Users\TESTING\AppData\Roaming\TESTING (Với TESTING là tên user Windows)
Sau đó dùng 7za.exe giải nén ra được những file sau
Sau đó thay đổi tham số mặc định khi run Chrome thành
"C:\Program Files\Google\Chrome\Application\chrome.exe" --enable-automation --disable-infobars --disable-blink-features=AutomationControlled --load-extension=C:\Users\TESTING\AppData\Roaming\TESTING
Tức là nó sẽ load addon đã giải nén ở thư mục trên mỗi khi chạy Chrome
Ngoài ra nó còn can thiệp cả vào thư mục của IE. Mình suy đoán có thể là can thiệp vào Edge (Edge mới cũng sử dụng lõi Chromium như Google Chrome)
Ngoài ra nó còn can thiệp vào Startup để đặt nó khởi động cùng Windows
2. Phân tích Addon
Như đã thấy thì addon đó được nén trong files.7z
Mình thử giải nén thì phát hiện là có đặt password.
Dù sao nó cũng sẽ giải nén tự động tuy nhiên mình cũng check qua Process Monitor để tìm cmdline của 7za.exe thì thấy được mật khẩu giải nén
- manifest.json
- config.json
- background.js