Phân tích mã độc APT ăn cắp tài khoản Facebook, PayPal
Các bạn đã bao giờ thắc mắc mã độc ăn cắp mật khẩu Facebook và các trang giao dịch tài chính như thế nào. Bài viết dưới đây sẽ phân tích chi tiết từ cơ chế ẩn náu, hành vi, nguồn gốc của một mẫu mã độc như vậy.
Cơ chế ẩn náu
DLL-Silde loading (DLL đặt bên cạnh Process) là một cơ chế ẩn náu phổ biến của mã độc APT, mã độc lợi dụng các chương trình phổ biến, nổi tiếng như Google, Microsoft Office… để ẩn náu, cơ chế này giúp mã độc dễ dàng tránh được sự phát hiện của người dùng và một số phương pháp bảo mật.
Cụ thể mã độc này có tên winhttp.dll đã ẩn náu dưới trình duyệt Chrome, thoạt nhìn chúng ta thấy winhttp.dll là tên một thư viện chuẩn của Windows nằm trong system32 (C:\windows\system32\winhttp.dll) có nhiệm vụ thực hiện các giao tiếp, gửi nhận gói tin qua HTTP, trình duyệt và các chương trình phần mềm thông dụng thường xuyên import thư viện này để sử dụng. Một câu hỏi đặt ra là tại sao mã độc này là dll? Tại sao tên mã độc này y hệt tên dll chuẩn? Câu trả lời sẽ có ở dưới đây .
Khi process load một dll, hệ điều hành Windows ưu tiên load dll theo thứ tự như sau:
1. Tìm và load dll trong thư mục Application
2. Tìm và load trong thư mục Hiện tại
3. Tìm và load trong thư mục System32
4. Tìm và load trong thư mục Windows
Chi tiết hơn các bạn có thể đọc ở link sau: https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Khi Chrome được chạy nó sẽ load winhttp.dll chuẩn của hệ thống lên, lúc này hệ điều hành sẽ tìm winhttp.dll theo thứ tự như trên để load. Mã độc đã lợi dụng cơ chế này, nó lấy tên giống y hệt và đặt cạnh tiến trình chrome.exe để được Chrome load lên.
Như vậy, mã độc thực hiện hành vi gì thì chính là Chrome thực hiện, mã độc sẽ ẩn náu được lâu dài trên máy tính nạn nhân hơn vì các chương trình bảo mật thông thường sẽ bỏ qua các chương trình phần mềm nổi tiếng, có chữ ký số.
Phân tích hành vi
Tiếp theo chúng ta đi vào phân tích sâu về mặt kỹ thuật để xem mã độc có những hành vi gì.
Phân tích mã độc winhttp.dll
Bắt đầu đi từ hàm Main, tôi thấy mã độc load winhttp.dll gốc trong system32 thông qua hàm LoadLibrary, tiếp theo tôi thấy nó lấy địa chỉ các hàm như WinHttpOpen, WinHttpConnect… Tôi kiểm tra danh sách các hàm export của mã độc và của dll gốc, nhận thấy chúng giống hệt nhau. Từ đó có thể nhận định rằng: “Mã độc vẫn thực hiện nguyên các chức năng của winhttp.dll gốc để tránh việc gây ra lỗi cho Chrome, mục đích cuối cùng vẫn là để ẩn náu tốt hơn.”
Đi tiếp code, tôi thấy nó đọc value pdfreader trong key SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pdfreader, nếu không đọc được thì mã độc sẽ tải thêm một mã độc khác, sau khi tải xong sẽ thực thi mã độc đó thông qua hàm CreateProcess.
Tìm đến key tôi thấy một file %temp\pdfreader2020.exe%, từ cái tên này tôi liên tưởng đến một phần mềm đọc file pdf, con số 2020 làm tôi nghĩ đến mã độc này có vẻ mới xuất hiện. Để kiểm tra, tôi thấy Time Stamp bằng 5E0AFD95, đây là số hexa, chuyển sang hệ thập phân 1577778581 và convert số này sang định dạng ngày tháng năm kết quả là 12/31/2019 14:49:41
Tóm tắt lại, winhttp.dll có hai mục đính chính: Thực hiện các chức năng của thư viện gốc để tránh Chrome bị lỗi phục vụ mục đích ẩn náu tốt hơn và Tải, chạy mã độc thứ hai pdfread2020.exe
Phân tích mã độc pdfread2020.exe
Dưới đây là icon của nó, tôi vẫn chưa hiểu ý nghĩa của cái icon này cho lắm, thôi bỏ qua, đi vào thông tin chi tiết file xem có gì nhé.
Mã độc được pack UPX, trình pack này khá đơn giải để unpack, may mắn hơn công cụ CFF Explorer đã tích hợp sẵn việc unpack (UPX Utility => Unpack).
Sau khi unpack, tôi được một file code bằng C++ như sau:
Code của mã độc này khá là khó đọc, rà soát qua một lượt các string của mã độc này tôi thấy khá nhiều thông tin nhạy cảm như: Cookies, Login, facebook.com, paypal, amazon…
Bắt đầu lần theo code, tôi thấy mã độc thực hiện câu truy vấn sql để lấy thông tin trong file sqlite \Google\Chrome\User Data\Default\Cookies. Mã độc sẽ biết được các trang web, thời gian truy cập của chúng ta vào các trang web đó.
Tương tự, mã độc thực hiện câu truy vấn SQL để tìm thông tin URL và password trong file \Google\Chrome\User Data\Profile 1\Login Data.
Sau khi có được mật khẩu ở dạng mã hóa, mã độc thực hiện ngay việc giải mã để có được mật khẩu plaintext thông qua API của hệ thống CryptUnprotectData. Chi tiết về cơ chế mã hóa, giải mã các bạn có thể xem kỹ ở trong bài viết này https://whitehat.vn/threads/lay-cap-mat-khau-facebook-that-de-dang.13441/
Cuối cùng, khi lấy xong các thông tin lịch sử truy cập, mật khẩu của tất cả các trang web, tất nhiên bao gồm cả facebook.com, PayPal… nó sẽ đóng vào file dạng json để gửi về server.
Nguồn gốc mã độc
Theo các cuộc điều tra thực tế, mã độc APT được lây nhiễm vào máy tính nạn nhân chủ yếu qua con đường email. Nội dung email và file đính kèm mang tính thúc giục nạn nhân, khiến nạn nhân tò mò mở lên xem. Khi file được mở mã độc sẽ bắt đầu cài cắm và đánh cắp thông tin trong máy.
Biện pháp phòng tránh
Xin chân thành cảm ơn các bạn đã đọc, mong được sự đóng góp của các bạn!!!
Cơ chế ẩn náu
DLL-Silde loading (DLL đặt bên cạnh Process) là một cơ chế ẩn náu phổ biến của mã độc APT, mã độc lợi dụng các chương trình phổ biến, nổi tiếng như Google, Microsoft Office… để ẩn náu, cơ chế này giúp mã độc dễ dàng tránh được sự phát hiện của người dùng và một số phương pháp bảo mật.
Cụ thể mã độc này có tên winhttp.dll đã ẩn náu dưới trình duyệt Chrome, thoạt nhìn chúng ta thấy winhttp.dll là tên một thư viện chuẩn của Windows nằm trong system32 (C:\windows\system32\winhttp.dll) có nhiệm vụ thực hiện các giao tiếp, gửi nhận gói tin qua HTTP, trình duyệt và các chương trình phần mềm thông dụng thường xuyên import thư viện này để sử dụng. Một câu hỏi đặt ra là tại sao mã độc này là dll? Tại sao tên mã độc này y hệt tên dll chuẩn? Câu trả lời sẽ có ở dưới đây .
Khi process load một dll, hệ điều hành Windows ưu tiên load dll theo thứ tự như sau:
1. Tìm và load dll trong thư mục Application
2. Tìm và load trong thư mục Hiện tại
3. Tìm và load trong thư mục System32
4. Tìm và load trong thư mục Windows
Chi tiết hơn các bạn có thể đọc ở link sau: https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Khi Chrome được chạy nó sẽ load winhttp.dll chuẩn của hệ thống lên, lúc này hệ điều hành sẽ tìm winhttp.dll theo thứ tự như trên để load. Mã độc đã lợi dụng cơ chế này, nó lấy tên giống y hệt và đặt cạnh tiến trình chrome.exe để được Chrome load lên.
Như vậy, mã độc thực hiện hành vi gì thì chính là Chrome thực hiện, mã độc sẽ ẩn náu được lâu dài trên máy tính nạn nhân hơn vì các chương trình bảo mật thông thường sẽ bỏ qua các chương trình phần mềm nổi tiếng, có chữ ký số.
Phân tích hành vi
Tiếp theo chúng ta đi vào phân tích sâu về mặt kỹ thuật để xem mã độc có những hành vi gì.
Phân tích mã độc winhttp.dll
Bắt đầu đi từ hàm Main, tôi thấy mã độc load winhttp.dll gốc trong system32 thông qua hàm LoadLibrary, tiếp theo tôi thấy nó lấy địa chỉ các hàm như WinHttpOpen, WinHttpConnect… Tôi kiểm tra danh sách các hàm export của mã độc và của dll gốc, nhận thấy chúng giống hệt nhau. Từ đó có thể nhận định rằng: “Mã độc vẫn thực hiện nguyên các chức năng của winhttp.dll gốc để tránh việc gây ra lỗi cho Chrome, mục đích cuối cùng vẫn là để ẩn náu tốt hơn.”
Đi tiếp code, tôi thấy nó đọc value pdfreader trong key SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pdfreader, nếu không đọc được thì mã độc sẽ tải thêm một mã độc khác, sau khi tải xong sẽ thực thi mã độc đó thông qua hàm CreateProcess.
Tìm đến key tôi thấy một file %temp\pdfreader2020.exe%, từ cái tên này tôi liên tưởng đến một phần mềm đọc file pdf, con số 2020 làm tôi nghĩ đến mã độc này có vẻ mới xuất hiện. Để kiểm tra, tôi thấy Time Stamp bằng 5E0AFD95, đây là số hexa, chuyển sang hệ thập phân 1577778581 và convert số này sang định dạng ngày tháng năm kết quả là 12/31/2019 14:49:41
Tóm tắt lại, winhttp.dll có hai mục đính chính: Thực hiện các chức năng của thư viện gốc để tránh Chrome bị lỗi phục vụ mục đích ẩn náu tốt hơn và Tải, chạy mã độc thứ hai pdfread2020.exe
Phân tích mã độc pdfread2020.exe
Dưới đây là icon của nó, tôi vẫn chưa hiểu ý nghĩa của cái icon này cho lắm, thôi bỏ qua, đi vào thông tin chi tiết file xem có gì nhé.
Mã độc được pack UPX, trình pack này khá đơn giải để unpack, may mắn hơn công cụ CFF Explorer đã tích hợp sẵn việc unpack (UPX Utility => Unpack).
Sau khi unpack, tôi được một file code bằng C++ như sau:
Code của mã độc này khá là khó đọc, rà soát qua một lượt các string của mã độc này tôi thấy khá nhiều thông tin nhạy cảm như: Cookies, Login, facebook.com, paypal, amazon…
Bắt đầu lần theo code, tôi thấy mã độc thực hiện câu truy vấn sql để lấy thông tin trong file sqlite \Google\Chrome\User Data\Default\Cookies. Mã độc sẽ biết được các trang web, thời gian truy cập của chúng ta vào các trang web đó.
Tương tự, mã độc thực hiện câu truy vấn SQL để tìm thông tin URL và password trong file \Google\Chrome\User Data\Profile 1\Login Data.
Sau khi có được mật khẩu ở dạng mã hóa, mã độc thực hiện ngay việc giải mã để có được mật khẩu plaintext thông qua API của hệ thống CryptUnprotectData. Chi tiết về cơ chế mã hóa, giải mã các bạn có thể xem kỹ ở trong bài viết này https://whitehat.vn/threads/lay-cap-mat-khau-facebook-that-de-dang.13441/
Cuối cùng, khi lấy xong các thông tin lịch sử truy cập, mật khẩu của tất cả các trang web, tất nhiên bao gồm cả facebook.com, PayPal… nó sẽ đóng vào file dạng json để gửi về server.
Nguồn gốc mã độc
Theo các cuộc điều tra thực tế, mã độc APT được lây nhiễm vào máy tính nạn nhân chủ yếu qua con đường email. Nội dung email và file đính kèm mang tính thúc giục nạn nhân, khiến nạn nhân tò mò mở lên xem. Khi file được mở mã độc sẽ bắt đầu cài cắm và đánh cắp thông tin trong máy.
Biện pháp phòng tránh
- Cài đặt các phần mềm virus có bản quyền, các mẫu mã độc mới nhất sẽ được cập nhật hàng ngày giúp bảo vệ máy tính của bạn tốt hơn.
- Không nên lưu thông tin đăng nhập trên trình duyệt.
- Cài đặt cơ chế xác thực hai bước.
- Không mở file hoặc mở file trong môi trường cách ly đối với các file từ email lạ.
- Không mở file hoặc mở file trong môi trường cách ly đối với các file từ đường link lạ.
Xin chân thành cảm ơn các bạn đã đọc, mong được sự đóng góp của các bạn!!!
Chỉnh sửa lần cuối bởi người điều hành: