Phân tích mẫu zeroaccess
Xin chào các bạn, hôm nay mình và các bạn sẽ phân tích mộtmẫu malware có tên là Zeroaccess
Giới thiệuvề Zeroacess
Thông tinhành vi
Chi tiếtcác hành vi
1. Giả mạovà lợi dụng Adobe Flash Player để đánh lừa dùng đểchạy virus với quyền Admin
Khibắt đầu chạy có sự khác nhau giữu các phiên bản củahệ điều hành, nếu trên WinXp thì chạy bình thường,còn đối với các phiên bản windows có quyền UAC thìzeroaccess sẽ đánh lừa người dùng bằng Adobe FlashPlayer.
Zeroaccesssẽ dowload file InstallPlashPlayer.exe và tạo ra filemsim32.dll(đây là file của 99/zeroacess) để cùng trong thưmục %Temp%, khi file Flash chạy thì nó sẽ tìm thư việnmsim32.dll(đây là tên thư viện chuẩn trong system32) trongthư mục hiện tại trước khi tìm trong system32. Lợi dụngđiều đó zeroaccess đồng thời được thực thi vớiFlash.
Hình1: Zeroaccess dowload Adobe và tạo msim32.dll cùng thưc mục
Vàđây khi chúng ta chọn “Yes” máy tính bạn đã bị nhiễmzeroaccess
Hình 2:Zeroaccess đánh lừa người dùng
2. Pack
Zeroaccesskhông sử dụng một trình pack nào phổ biến cả, nó sửdụng trình pack của chính nó.
Đểunpack được nó không còn cách nào khác là sự kiên trì,hình dưới đây chỉ ra đoạn bắt đầu upack xong và nhảyvào code chính.
Hình 3:Zeroaccess nhảy vào code đã unpack
3. Antidebug
Zeroaccesssẽ xác định xem có bị chạy dưới một chương trìnhdebug nào không bằng các gọi hàm IsDebuggerPresent
Nếu bịdebug nó sẽ nhảy vào hàm như hình dưới, và nó sẽ loadthư viện untfs.dll và sẽ lấy địachỉ của một hàm với số thứ tự là 0× 2302 bằng hàmLdrGetProcedureAddress
Thư việnuntfs.dll làmột thư viện chuẩn của windows và chỉ có số thứ tựcủa hàm từ 0x00 – 0x96 do đó không có hàm có số thứtự 0x2302 nên sẽ không tìm được địa chỉ hàm nào cósố thứ tự 0x2302 cả vì thế chương trình bị terminate
Hình 4:Zeroaccess anti debug
4. Tạo vàdebug process con để giải mã code và inject
Việctạo process con để thực hiện các hành vi là chuyện hếtsức bình thường của malware
Hình 5:Zeroaccess tạo process con
Đầu tiênzeroaccess sẽ connet đến dubugger của windows bằng hàmDbgUiConnectToDbg(), DbgUiContinue, DbgUiStopDebugging... Dưới đâylà một doạn của của vòng lặp debug
Hình 6:Vòng lăp debug process con của zeroaccess
Thôngthường khi tạo process con ở thì trong hàm CreateProcess cótham số là dwCreationFlags[in]thường ở chế độ CREATE_SUSPENDED
NhưngZeroaccess đã tạo process ở chế độ DEBUG_PROCESS để giải mã và inject code vào chính process con đó.
Hình 7:Zeroaccess tạo process ở chế độ debug
Trong vòng lặpdebug nó sẽ xử lý các trường hợp dựa vào cấu trúcdebug như hình
Hình 8:Cấu trúc xử lý các sự kiện trong vòng lặp debug
Khi gặp mộtexception_event nó sẽ giả mã code và inject vào process con,dưới đây là đoạn code inject
Hình 9:Zeroaccess inject vào process con
4. Autorun
Zeroaccesssẽ tấn công các COM Object của windows để ẩn lấp vàtự đông chạy cùng hệ điều hành
Zeroaccesstấn công bằng cách thay thế các CLSID bằng chính DLL củanó
Trongkhuôn khổ của bài viết mình sẽ không đi sâu và cácCOM Object là gì, các chương trình sử dụng nó như thếnào.
Hình 10:Trước khi COM Object bị tấn công
Hình 11:Sau khi COM Object bị tấn công
Saukhi các COM Object bị tấn công thì process nào sử dụngCLSID đó thì sẽ load DLL của Zeroaccess lên, và trong trườnghợp này là svchost.exe(process chuẩn của windows)
Hình12: Zeroaccess autorun
5. Connectvà gửi thông tin lên server
Zeroaccess connect tới jmaxmind.com thực hiện gửi thông tin của máybị nhiễm như: version windows, mã quốc gia
Hình 13: Zeroaccessconnect tới jmaxmind.com
Zeroaccesssẽ download các file plugin và thiết lập các thuộc tínhđể bảo vệ file như: ẩn file
Hình 14:Tạo và ghi các file plugin
Hình 15:Zeroaccess thiết lập bảo về các file plugin
Hình 16:Các file plugin
Trongphạm vi bài viết này mình chỉ phân tích hành vi của mẫuzeroaccess, mình không đi sâu vào các file plugin thực hiệnnhững hành vi như thế nào.
Trênđây là bài phân tích của mình, bài viết còn nhiềuthiếu sót, rất mong được sự góp ý của các bạn!
Giới thiệuvề Zeroacess
- Zeroaccess là một botnet với chức năng downloader và là một Backdoor với hệ thống framework để thực thi các plugin được tải từ server.
- File size: 222Kb
- File type: PE32
- File MD5: 583207637D5D43E020A981670222E038
Thông tinhành vi
- Giả mạo và lợi dụng Adobe Flash Player để đánh lừa dùng để chạy virus với quyền Admin.
- Pack
- Anti debug
- Tạo và debug process con để giải mã code và inject vào tiến trình con
- Tấn công vào các đối tượng COM để autorun
- Kết nối gửi thông ti đến server
- Tải các plugin để thực hiện các hành vi như: đào bitcoin, update zeroaccess, click fraud
Chi tiếtcác hành vi
1. Giả mạovà lợi dụng Adobe Flash Player để đánh lừa dùng đểchạy virus với quyền Admin
Khibắt đầu chạy có sự khác nhau giữu các phiên bản củahệ điều hành, nếu trên WinXp thì chạy bình thường,còn đối với các phiên bản windows có quyền UAC thìzeroaccess sẽ đánh lừa người dùng bằng Adobe FlashPlayer.
Zeroaccesssẽ dowload file InstallPlashPlayer.exe và tạo ra filemsim32.dll(đây là file của 99/zeroacess) để cùng trong thưmục %Temp%, khi file Flash chạy thì nó sẽ tìm thư việnmsim32.dll(đây là tên thư viện chuẩn trong system32) trongthư mục hiện tại trước khi tìm trong system32. Lợi dụngđiều đó zeroaccess đồng thời được thực thi vớiFlash.
Hình1: Zeroaccess dowload Adobe và tạo msim32.dll cùng thưc mục
Hình 2:Zeroaccess đánh lừa người dùng
2. Pack
Zeroaccesskhông sử dụng một trình pack nào phổ biến cả, nó sửdụng trình pack của chính nó.
Đểunpack được nó không còn cách nào khác là sự kiên trì,hình dưới đây chỉ ra đoạn bắt đầu upack xong và nhảyvào code chính.
Hình 3:Zeroaccess nhảy vào code đã unpack
3. Antidebug
Zeroaccesssẽ xác định xem có bị chạy dưới một chương trìnhdebug nào không bằng các gọi hàm IsDebuggerPresent
Nếu bịdebug nó sẽ nhảy vào hàm như hình dưới, và nó sẽ loadthư viện untfs.dll và sẽ lấy địachỉ của một hàm với số thứ tự là 0× 2302 bằng hàmLdrGetProcedureAddress
Thư việnuntfs.dll làmột thư viện chuẩn của windows và chỉ có số thứ tựcủa hàm từ 0x00 – 0x96 do đó không có hàm có số thứtự 0x2302 nên sẽ không tìm được địa chỉ hàm nào cósố thứ tự 0x2302 cả vì thế chương trình bị terminate
Hình 4:Zeroaccess anti debug
Việctạo process con để thực hiện các hành vi là chuyện hếtsức bình thường của malware
Hình 5:Zeroaccess tạo process con
Đầu tiênzeroaccess sẽ connet đến dubugger của windows bằng hàmDbgUiConnectToDbg(), DbgUiContinue, DbgUiStopDebugging... Dưới đâylà một doạn của của vòng lặp debug
Hình 6:Vòng lăp debug process con của zeroaccess
Thôngthường khi tạo process con ở thì trong hàm CreateProcess cótham số là dwCreationFlags[in]thường ở chế độ CREATE_SUSPENDED
NhưngZeroaccess đã tạo process ở chế độ DEBUG_PROCESS để giải mã và inject code vào chính process con đó.
Hình 7:Zeroaccess tạo process ở chế độ debug
Hình 8:Cấu trúc xử lý các sự kiện trong vòng lặp debug
Khi gặp mộtexception_event nó sẽ giả mã code và inject vào process con,dưới đây là đoạn code inject
Hình 9:Zeroaccess inject vào process con
4. Autorun
Zeroaccesssẽ tấn công các COM Object của windows để ẩn lấp vàtự đông chạy cùng hệ điều hành
Zeroaccesstấn công bằng cách thay thế các CLSID bằng chính DLL củanó
Trongkhuôn khổ của bài viết mình sẽ không đi sâu và cácCOM Object là gì, các chương trình sử dụng nó như thếnào.
Hình 10:Trước khi COM Object bị tấn công
Hình 11:Sau khi COM Object bị tấn công
Saukhi các COM Object bị tấn công thì process nào sử dụngCLSID đó thì sẽ load DLL của Zeroaccess lên, và trong trườnghợp này là svchost.exe(process chuẩn của windows)
Hình12: Zeroaccess autorun
5. Connectvà gửi thông tin lên server
Zeroaccess connect tới jmaxmind.com thực hiện gửi thông tin của máybị nhiễm như: version windows, mã quốc gia
Hình 13: Zeroaccessconnect tới jmaxmind.com
Hình 14:Tạo và ghi các file plugin
Hình 15:Zeroaccess thiết lập bảo về các file plugin
Hình 16:Các file plugin
Trongphạm vi bài viết này mình chỉ phân tích hành vi của mẫuzeroaccess, mình không đi sâu vào các file plugin thực hiệnnhững hành vi như thế nào.
Trênđây là bài phân tích của mình, bài viết còn nhiềuthiếu sót, rất mong được sự góp ý của các bạn!