1. Tổng quan
Được phát hiện lần đầu vào năm 2016, tới thời điểm hiện tại TrickBot (còn được biết đến với những tên gọi khác như TrickLoader hay Trickster) đã trở thành một trong những mã độc nguy hiểm và phổ biến nhất hiện nay. Những kẻ đứng đằng sau TrickBot liên tục phát triển để thêm các tính năng và thủ thuật mới. Mã độc này được phát triển dưới dạng mô-đun, theo đó payload chính sẽ chịu trách nhiệm tải các plugin khác có khả năng thực hiện các tác vụ cụ thể, bao gồm đánh cắp tài khoản và thông tin nhạy cảm, cung cấp khả năng truy cập từ xa, lây lan qua mạng cục bộ, và tải xuống phần mềm độc hại khác.
Trickbot được cho là có nguồn gốc từ Nga. Theo các tin đã đưa (1, 2), tính tới thời điểm hiện tại có ít nhất hai người được cho là thành viên của nhóm đã bị bắt giữ. Mặc dù vậy, băng nhóm này hiện vẫn tiếp tục hoạt động như bình thường.
Thông qua hoạt động giám sát an ninh mạng và bảo vệ hệ thống cho khách hàng trong thời gian gần đây, VinCSS đã phát hiện và ngăn chặn thành công một chiến dịch tấn công phishing để phát tán mã độc nhắm vào khách hàng mà VinCSS đang bảo vệ. Qua quá trình phân tích, bóc tách các kĩ thuật của mã độc, chúng tôi có thể khẳng định đây chính là một mẫu thuộc dòng mã độc Trickbot.
Trong bài viết này, chúng tôi sẽ phân tích cách thức lây nhiễm của Trickbot sau khi khởi chạy bởi tài liệu Word độc hại, các kĩ thuật mã độc sử dụng để gây khó khăn cho việc phân tích. Không giống như Emotet hay Qakbot, Trickbot che dấu các địa chỉ C2 bằng cách sử dụng các địa chỉ C2 giả trộn lẫn với các địa chỉ C2 thật trong cấu hình, chúng tôi sẽ đề cập chi tiết cách để trích xuất danh sách C2 cuối cùng ở phần cuối của bài viết. Bên cạnh đó là phương pháp để khôi phục lại các hàm APIs cũng như giải mã các strings của Trickbot bằng IDA Appcall để giúp quá trình phân tích dễ dàng hơn.
2. Phân tích malicious documentKẻ tấn công bằng cách nào đó đã lây nhiễm mã độc vào hệ thống mail server của đối tác, từ đó chiếm quyền điều khiển tài khoản email trên máy chủ, thực hiện chèn email có file đính kèm chứa mã độc vào luồng email trao đổi giữa hai bên. Nội dung email như sau:
Giải nén file request.zip với mật khẩu cung cấp trong email thu được file require 010.04.2021.doc:
Kiểm tra file require 010.04.2021.doc thấy file này có chứa VBA code:
Tôi chú ý tới đoạn code được khoanh đỏ trên hình. Trích xuất vùng dữ liệu liên quan và thực hiện thay thế tương ứng, thu được nội dung html có chứa Javascript như hình dưới đây:
Mã Javascript trên hình sẽ thực hiện giải mã các base64 blob được gán cho các biến rockCleanJump và rapHopWindows. Với đoạn base64 thứ nhất, nó sẽ thực hiện tải payload về máy nạn nhân và lưu với tên là easyMicrosoftHop.jpg:
Với đoạn base64 thứ hai, nó sẽ sử dụng regsvr32 để thực thi payload đã tải về.
Như vậy, có thể kết luận file easyMicrosoftHop.jpg là một file Dll.
3. Phân tích payload easyMicrosoftHop.jpg (RCSeparator.dll – 48cba467be618d42896f89d79d211121)
File này hiện chưa có trên VT, tuy nhiên nếu tìm kiếm theo imphash: f34a0f23e05f2c2a829565c932b87430 sẽ ra được các payloads tương tự. Các payloads này đều mới được upload lên VT:
Kiểm tra file thì thấy đây là một Dll với tên gốc là RCSeparator.dll, nó export một hàm duy nhất là DllRegisterServer.
Thông tin metadata của file như sau:
File không bị packed, tuy nhiên qua kiểm tra nhanh thông tin của các sections, có thể thấy khả năng code của nó đã được obfuscated, hơn nữa .rsrc section khả năng có chứa payload đã bị mã hóa.
Kiểm tra resource của file này thấy có resource có tên HTML, kích thước 0x38333 bytes, chứa các random bytes. Phán đoán khả năng nó sẽ sử dụng resource này để giải mã ra một payload mới:
Phân tích code của payload tại hàm DllRegisterServer cho thấy nó làm nhiệm vụ sau:
- Tìm kiếm địa chỉ base address của kernel32.dll, ntdll.dll:
- Lấy địa chỉ các hàm APIs cần sử dụng thuộc kernel32.dll, ntdll.dll dựa trên các hash đã tính toán sẵn.
- Sử dụng các hàm APIs có được để truy cập và lấy toàn bộ nội dung của resource đã đề cập ở trên:
- Thực hiện giải mã ra shellcode và thực thi shellcode này thông qua các hàm QueueUserAPC và NtTestAlert.
Dump shellcode để phân tích tiếp. Parse thử shellcode này nhận thấy nó có nhúng sẵn 3 Dlls:
4. Phân tích shellcode
Code của shellcode trên sẽ gọi tới hàm f_dll_loader để thực hiện load Dll thứ nhất vào bộ nhớ với tham số sau:
Tại hàm f_dll_loader, shellcode thực hiện tìm kiếm địa chỉ của các hàm api theo các giá trị hash đã được tính toán trước:
Toàn bộ hàm f_dll_loader sẽ thực hiện nhiệm vụ của một trình loader, sau khi mapping xong Dll vào bộ nhớ sẽ lấy ra địa chỉ DllEntryPoint của Dll và gọi tới địa chỉ này để thực thi:
Tới đây, thực hiện dump Dll thứ nhất ra disk để phân tích tiếp.
5. Phân tích Dll thứ nhất (b67694dddf98298b539bddc8cabc255d)
Dll này hiện chưa có trên VT, tuy nhiên kiểm tra theo imphash: 1f6199c52a5d3ffac2a25f6b3601dd22 thì thấy có một số file tương tự:
Căn cứ theo thông tin các hàm mà Dll này import thì có thể đoán nó cũng sẽ làm nhiệm vụ của một loader:
Code tại DllEntryPoint sẽ gọi tới hàm thực hiện nhiệm vụ load và thực thi Dll thứ hai:
Toàn bộ hàm f_dll_loader có code tương tự như shellcode đã phân tích ở trên, sau khi mapping toàn bộ Dll thứ hai vào bộ nhớ sẽ lấy ra địa DllEntryPoint của Dll và gọi tới địa chỉ này để thực thi:
Để dễ dàng, thực hiện dump Dll thứ hai ra disk để tiếp tục phân tích.
6. Phân tích Dll thứ hai (34d6a6bffa656c6b0c7b588e111dbed1)
Dll này đã được upload lên VirusTotal. Imports của Dll thứ hai cũng tương tự như Dll thứ nhất:
Code tại DllEntryPoint của Dll này thực hiện nhiệm vụ sau:
- Mapping Dll thứ 3 vào bộ nhớ.
- Tìm hàm DllRegisterServer của Dll thứ 3 và thực thi hàm này:
Thực hiện dump Dll thứ ba ra disk để phân tích tiếp.
7. Phân tích Dll thứ ba (templ.dll - 3409f865936a247957955ad2df45a2cd)
Kiểm tra Dll đã dump ở trên, tên gốc của nó là templ.dll, nó export một hàm duy nhất là DllRegisterServer.
Dll này cũng chưa có trên VT, tuy nhiên tìm kiếm theo imphash: b79a86dfbbbe6d8e177dfb7ae70d4922 thấy trả về kết quả một số file tương tự.
File không bị packed, kiểm tra thêm thông tin về các sections có thể thấy khả năng code của nó bị obfuscated hoặc sẽ thực hiện giải mã ra payload mới:
Code tại hàm DllRegisterServer của Dll này thực hiện nhiệm vụ:
- Cấp phát vùng nhớ để lưu payload giải mã.
- Thực hiện giải mã payload vào vùng nhớ đã cấp phát. Payload này là một shellcode.
- Gọi tới shellcode để thực thi.
Hàm thực hiện giải mã sử dụng vòng lặp để xor như sau:
Để cho nhanh, tôi sử dụng x64dbg để debug. Shellcode sau giải mã sẽ như sau:
8. Phân tích shellcode cuối
Quan sát shellcode này thấy nó lưu các chuỗi ở gần cuối file. Theo phán đoán thì khả năng đây là các base64 strings và key để giải mã:
Thực hiện giải mã thu được thông tin sau:
Dựa vào thông tin giải mã được ở trên, có thể đoán shellcode này sẽ thực hiện inject tiếp payload nữa vào tiến trình wermgr.exe. Để xác minh, tôi thực hiện debug tiếp shellcode này ngay sau bước templ.dll thực hiện giải mã và gọi tới shellcode để thực thi. Đặt breakpoint tại hàm CreateProcessInternalW và cho thực thi:
Như vậy, shellcode đã thực hiện inject payload vào tiến trình wermgr.exe (64-bit). Dưới vỏ bọc của tiến trình wermgr.exe, lúc này mã độc sẽ thực hiện kết nối tới nhiều địa chỉ C2 như dưới đây:
9. Dump Trickbot core payload 32-bit và trích xuất cấu hình C2
9.1. Dump payload 32-bit
Từ kết quả phân tích shellcode ở trên, có thể thấy payload cuối cùng của mã độc đã được inject vào tiến trình wermgr.exe (64-bit), do đó payload này cũng là 64-bit. Tuy nhiên, templ.dll là file 32-bit, do vậy để dễ dàng cho việc tìm hiểu code của payload cũng như trích xuất cấu hình C2, ta sẽ thực hiện dump payload 32-bit của mã độc. Thực hiện debug shellcode khi nó được gọi bởi templ.dll, đặt breakpoint tại các hàm VirtualAlloc, GetNativeSystemInfo. Cho thực thi shellcode, break tại hàm GetNativeSystemInfo:
Follow in Dump theo địa chỉ sẽ nhận thông tin về SystemInfo, thực thi hàm và trở về code của mã độc. Sửa lại kết quả trả về của wProcessorArchitecture tại địa chỉ đã follow như sau:
Tiếp tục thực thi và follow theo địa chỉ được cấp phát bởi hàm VirtualAlloc, mã độc sẽ thực hiện unpack payload chính vào vùng nhớ được cấp phát, tuy nhiên “MZ” signature đã bị xóa.
Dump payload ra disk, sửa lại MZ signature, có được payload chính của mã độc:
Payload không có thông tin của Imports, như vậy nó sẽ lấy địa chỉ của các hàm APIs trong quá trình thực thi.
9.2. Phân tích Trickbot core payload và trích xuất cấu hình C2
9.2.1. Dynamic APIs resolve
Tương tự như các dòng mã độc Emotet, Qakbot, … Trickbot payload cũng sẽ tìm địa chỉ các hàm API(s) thông qua việc tìm kiếm hash được tính toán trước dựa vào tên hàm API. Thông tin về các Dlls cũng như các hash đã tính toán trước được lưu tại biến global với thông tin như sau:
Trong đó:
- dll_str_idx: được sử dụng để giải mã ra tên của Dll mà Trickbot sẽ sử dụng. Từ đó lấy ra địa chỉ base address của Dll này.
- nHashValue: số hash được tính toán trước, ứng với số hàm API cần tìm.
- pre-computed hash: là các giá trị hash được tính toán trước của hàm API.
- nOrdinalVal: số giá trị ordinal, ứng với các hàm sẽ được lấy địa chỉ dựa vào thông tin của ordinal được tính toán.
- Orinal_value: các giá trị được sử dụng để tính toán ra giá trị ordinal thật của hàm API cần lấy địa chỉ.
Trickbot sẽ thực hiện quá trình lấy địa chỉ của các hàm APIs mà nó sử dụng như sau:
Hàm tính toán hash dựa trên tên của hàm API như sau:
Dựa vào mã giả có được ở trên, viết lại code tính hash bằng Python như sau:
Toàn bộ địa chỉ thật của các hàm APIs sau khi lấy được sẽ được lưu lại bắt từ địa chỉ 0x00420000 như trên hình. Do vậy, để có thể lấy được toàn bộ thông tin các hàm APIs mà Trickbot sẽ sử dụng, tôi áp dụng phương pháp được mô tả trong bài viết này. Kết quả sau thực hiện sẽ khôi phục được các hàm API(s) như hình dưới đây:
9.2.2. Giải mã strings
Các strings chính mà payload sử dụng đều đã bị mã hóa và lưu tại section .data như sau:
Hàm giải mã nhận tham số truyền vào là giá trị index của chuỗi, sau đó thực hiện giải mã chuỗi bằng thuật toán base64 với key giãi mã đã được custom:
Để có thể giải mã các strings này và thêm các chú thích liên quan trong IDA, tôi sử dụng tính năng Appcall của IDA và tham khảo code tại đây. Toàn bộ code python như sau:
Kết quả trước và sau khi thực hiện script sẽ giúp công việc phân tích dễ dàng hơn:
Bên cạnh đó, để có thể tiện theo dõi, đối chiếu, ta cũng có thể viết một script giải mã độc lập để có được toàn bộ danh sách các strings. Chi tiết các strings được giải mã xem tại Phụ lục 1 – Danh sách toàn bộ strings.
9.3. Giải mã cấu hình và trích xuất danh sách C2
9.3.1. Giải mã cấu hình
Trickbot lưu thông tin cấu hình đã mã hóa tại section .text, khi thực thi nó sẽ lấy thông tin độ lớn của dữ liệu và cấp phát vùng nhớ tương ứng. Sau đó sẽ thực hiện giải mã dữ liệu bằng vòng lặp xor.
Dữ liệu thu được sau bước trên sẽ được giải mã thêm một lần nữa bằng thuật toán AES (MODE_CBC) để lấy ra danh sách thông tin C2. Trickbot sẽ thực hiện tạo khóa AES và IV trước khi thực hiện giải mã:
Các giá trị aes_key và aes_iv sau đó sẽ được dùng cho việc giải mã dữ liệu:
Dựa vào các đoạn mã giả ở trên, kết hợp tham khảo code của hasherezade tại đây, tôi có thể viết lại mã python thực hiện giải mã ra cấu hình C2 mà Trickbot sử dụng trong mẫu này:
9.3.2. Trích xuất danh sách C2
Với thông tin giải mã được ở trên, ta có được danh sách C2 như hình dưới. Tuy nhiên, trong danh sách này:
- Những địa chỉ IP nằm trong tag <srv> </srv> là địa chỉ C2 chuẩn.
- Các địa chỉ IP nằm trong tag <srva> </srva> sẽ được Trickbot transform thêm một lần nữa.
Trickbot sẽ sử dụng đoạn code sau để chuyển đổi các địa chỉ nằm trong tag <srva> </srva> sang địa chỉ C2 chuẩn.
Mã giả trên được chuyển đổi sang code python như dưới đây:
Danh sách C2 có được sau khi chuyển đổi như sau:
Tổng kết toàn bộ danh sách C2 mà Trickbot sử dụng xem tại Phụ lục 2 – Danh sách C2s.
10. Tham khảo
- Trickbot Still Alive and Well
- Trickbot Brief: Creds and Beacons
- Importing Ollydbg Addresses into IDA
- https://github.com/hasherezade/malware_analysis/tree/master/trickbot
- Introducing the Appcall feature in IDA Pro 5.6
- https://github.com/coldshell/IDA-appcall
- Detricking TrickBot Loader
11. Phụ lục 1 – Danh sách toàn bộ strings
All decrypted strings |
index : 0 --> Decoded string :
b'checkip.amazonaws.com' index : 1 --> Decoded string :
b'ipecho.net' index : 2 --> Decoded string :
b'ipinfo.io' index : 3 --> Decoded string :
b'api.ipify.org' index : 4 --> Decoded string :
b'icanhazip.com' index : 5 --> Decoded string :
b'myexternalip.com' index : 6 --> Decoded string : b'wtfismyip.com' index : 7 --> Decoded string :
b'ip.anysrc.net' index : 8 --> Decoded string :
b'api.ipify.org' index : 9 --> Decoded string :
b'api.ip.sb' index : 10 --> Decoded string :
b'ident.me' index : 11 --> Decoded string :
b'www.myexternalip.com' index : 12 --> Decoded string : b'/plain' index : 13 --> Decoded string : b'/ip' index : 14 --> Decoded string : b'/raw' index : 15 --> Decoded string : b'/text' index : 16 --> Decoded string :
b'/?format=text' index : 17 --> Decoded string :
b'zen.spamhaus.org' index : 18 --> Decoded string :
b'cbl.abuseat.org' index : 19 --> Decoded string :
b'b.barracudacentral.org' index : 20 --> Decoded string :
b'dnsbl-1.uceprotect.net' index : 21 --> Decoded string :
b'spam.dnsbl.sorbs.net' index : 22 --> Decoded string : b'bdns.at' index : 23 --> Decoded string : b'bdns.by' index : 24 --> Decoded string : b'bdns.co' index : 25 --> Decoded string : b'bdns.im' index : 26 --> Decoded string :
b'bdns.link' index : 27 --> Decoded string : b'bdns.nu' index : 28 --> Decoded string :
b'bdns.pro' index : 29 --> Decoded string :
b'b-dns.se' index : 30 --> Decoded string : b'ruv_' index : 31 --> Decoded string :
b'<UserId>' index : 32 --> Decoded string :
b'rundll32.exe ' index : 33 --> Decoded string : b'control' index : 34 --> Decoded string : b' %u %u
%u %u' index : 35 --> Decoded string :
b'</BootTrigger>\n' index : 36 --> Decoded string : b'path' index : 37 --> Decoded string : b'Toolwiz
Cleaner' index : 38 --> Decoded string : b'GET' index : 39 --> Decoded string : b'WTSGetActiveConsoleSessionId' index : 40 --> Decoded string : b'Param 0' index : 41 --> Decoded string : b'Create
ZP failed' index : 42 --> Decoded string :
b'%s/%s/64/%s/%s/%s/' index : 43 --> Decoded string : b'Decode
param64 error' index : 44 --> Decoded string : b'client
is not behind NAT' index : 45 --> Decoded string : b'Windows
Server 2003' index : 46 --> Decoded string : b'start' index : 47 --> Decoded string : b'SYSTEM' index : 48 --> Decoded string :
b'kernel32.dll' index : 49 --> Decoded string : b'SeDebugPrivilege' index : 50 --> Decoded string : b'.txt' index : 51 --> Decoded string : b'Load to
M failed' index : 52 --> Decoded string :
b'winsta0\\default' index : 53 --> Decoded string :
b'eventfail' index : 54 --> Decoded string : b'Windows
10 Server' index : 55 --> Decoded string : b'data' index : 56 --> Decoded string : b'
working' index : 57 --> Decoded string : b'%u%u%u.' index : 58 --> Decoded string :
b'</LogonTrigger>\n' index : 59 --> Decoded string : b'shlwapi' index : 60 --> Decoded string : b'cn\\' index : 61 --> Decoded string :
b'------Boundary%08X' index : 62 --> Decoded string :
b'curl/7.78.0' index : 63 --> Decoded string :
b'GetProcAddress' index : 64 --> Decoded string :
b'</Command>\n<Arguments>' index : 65 --> Decoded string :
b'\\svchost.exe' index : 66 --> Decoded string :
b'--%s--\r\n\r\n' index : 67 --> Decoded string :
b'SignatureLength' index : 68 --> Decoded string : b'tmp' index : 69 --> Decoded string : b'in' index : 70 --> Decoded string :
b'SeTcbPrivilege' index : 71 --> Decoded string : b'52' index : 72 --> Decoded string : b'\\*' index : 73 --> Decoded string : b'0.0.0.0' index : 74 --> Decoded string :
b'</Exec>\n</Actions>\n</Task>\n' index : 75 --> Decoded string :
b'ModuleQuery' index : 76 --> Decoded string : b'No
params' index : 77 --> Decoded string : b'DNSBL' index : 78 --> Decoded string : b'%02X' index : 79 --> Decoded string : b'VERS' index : 80 --> Decoded string : b'cmd.exe' index : 81 --> Decoded string :
b'/%s/%s/0/%s/%s/%s/%s/%s/' index : 82 --> Decoded string : b'noname' index : 83 --> Decoded string : b'Control
failed' index : 84 --> Decoded string :
b'LoadLibraryW' index : 85 --> Decoded string :
b'InitializeCriticalSection' index : 86 --> Decoded string : b'Create
xml2 failed' index : 87 --> Decoded string :
b'</Triggers>\n<Principals>\n<Principal
id="Author">\n' index : 88 --> Decoded string : b'not
listed' index : 89 --> Decoded string : b'Create
xml failed' index : 90 --> Decoded string : b'Windows
Server 2012' index : 91 --> Decoded string :
b'CloseHandle' index : 92 --> Decoded string : b'pIT
connect failed, 0x%x' index : 93 --> Decoded string : b'Windows
Server 2008' index : 94 --> Decoded string :
b'WantRelease' index : 95 --> Decoded string : b'i:' index : 96 --> Decoded string : b'</Command>' index : 97 --> Decoded string : b'client
is behind NAT' index : 98 --> Decoded string : b'Register
u failed, 0x%x' index : 99 --> Decoded string :
b'/%s/%s/25/%s/' index : 100 --> Decoded string :
b'/%s/%s/14/%s/%s/0/' index : 101 --> Decoded string : b'1108' index : 102 --> Decoded string :
b'ExitProcess' index : 103 --> Decoded string : b'POST' index : 104 --> Decoded string :
b'\\cmd.exe' index : 105 --> Decoded string : b'PROMPT' index : 106 --> Decoded string : b'x64' index : 107 --> Decoded string : b'Windows
2000' index : 108 --> Decoded string : b'user' index : 109 --> Decoded string : b'Unable
to load module from server' index : 110 --> Decoded string :
b'/%s/%s/10/%s/%s/%u/' index : 111 --> Decoded string : b'Process
has been finished\n' index : 112 --> Decoded string :
b'--%s\r\nContent-Disposition: form-data; name="%S"\r\n\r\n' index : 113 --> Decoded string : b'Process
was unloaded' index : 114 --> Decoded string :
b'testscript' index : 115 --> Decoded string : b'CI
failed, 0x%x' index : 116 --> Decoded string :
b'%08lX%04lX%u' index : 117 --> Decoded string : b'Invalid
params count' index : 118 --> Decoded string :
b'WTSQueryUserToken' index : 119 --> Decoded string :
b'S-1-5-18' index : 120 --> Decoded string :
b'\\Toolwiz-Cleaner' index : 121 --> Decoded string :
b'dsize:%u' index : 122 --> Decoded string :
b'GetParentInfo error' index : 123 --> Decoded string :
b'reload%d' index : 124 --> Decoded string :
b'/%s/%s/5/%s/' index : 125 --> Decoded string : b' ' index : 126 --> Decoded string :
b'D:(A;;GA;;;WD)(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;RC)' index : 127 --> Decoded string :
b'explorer.exe' index : 128 --> Decoded string :
b'Unknown' index : 129 --> Decoded string : b'x86' index : 130 --> Decoded string :
b'Content-Type: multipart/form-data; boundary=%s\r\nContent-Length:
%d\r\n\r\n' index : 131 --> Decoded string : b'pIT
GetFolder failed, 0x%x' index : 132 --> Decoded string : b'%s %s' index : 133 --> Decoded string : b'Windows
7' index : 134 --> Decoded string : b'en-EN\\' index : 135 --> Decoded string : b't:' index : 136 --> Decoded string : b'Execute
from user' index : 137 --> Decoded string : b'</Principal>\n</Principals>\n<Settings>\n<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>\n<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>\n<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>\n<AllowHardTerminate>true</AllowHardTerminate>\n<StartWhenAvailable>true</StartWhenAvailable>\n<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>\n\t<IdleSettings>\n\t\t<StopOnIdleEnd>true</StopOnIdleEnd>\n\t\t<RestartOnIdle>false</RestartOnIdle>\n\t</IdleSettings>\n<AllowStartOnDemand>true</AllowStartOnDemand>\n<Enabled>true</Enabled>\n<Hidden>false</Hidden>\n<RunOnlyIfIdle>false</RunOnlyIfIdle>\n<WakeToRun>false</WakeToRun>\n<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>\n<Priority>6</Priority>\n</Settings>\n<Actions
Context="Author">\n<Exec>\n\t<Command>' index : 138 --> Decoded string : b'Windows
Server 2008 R2' index : 139 --> Decoded string : b'Windows
Vista' index : 140 --> Decoded string : b'Run D
failed' index : 141 --> Decoded string : b'Win32
error' index : 142 --> Decoded string :
b'/%s/%s/1/%s/' index : 143 --> Decoded string : b'SINJ' index : 144 --> Decoded string : b'Module
already unloaded' index : 145 --> Decoded string :
b'%016llX%016llX' index : 146 --> Decoded string :
b'</Arguments>\n' index : 147 --> Decoded string : b'Load to
P failed' index : 148 --> Decoded string : b'Module
is not valid' index : 149 --> Decoded string :
b'<LogonTrigger>\n<Enabled>true</Enabled>\n' index : 150 --> Decoded string :
b'<moduleconfig>*</moduleconfig>' index : 151 --> Decoded string :
b'freebuffer' index : 152 --> Decoded string : b'failed' index : 153 --> Decoded string : b'listed' index : 154 --> Decoded string : b'Windows
Server 2012 R2' index : 155 --> Decoded string : b'50' index : 156 --> Decoded string :
b'LeaveCriticalSection' index : 157 --> Decoded string : b'info' index : 158 --> Decoded string :
b'ver.txt' index : 159 --> Decoded string : b' /C
cscript ' index : 160 --> Decoded string :
b'ECCPUBLICBLOB' index : 161 --> Decoded string : b'delete' index : 162 --> Decoded string : b'm:' index : 163 --> Decoded string : b'First' index : 164 --> Decoded string : b'/C
powershell -executionpolicy bypass -File ' index : 165 --> Decoded string :
b'Global\\' index : 166 --> Decoded string : b'kps' index : 167 --> Decoded string :
b'%s/%s/63/%s/%s/%s/%s/' index : 168 --> Decoded string : b'%s%s' index : 169 --> Decoded string : b'.reloc' index : 170 --> Decoded string :
b'rundll32' index : 171 --> Decoded string :
b'<?xml version="1.0" encoding="UTF-16"?>\n<Task
version="1.2"
xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">\n<RegistrationInfo>\n<Version>1.1.1</Version>\n<Author>Toolwiz
Cleaner</Author>\n<Description>With Toolwiz Cleaner application,
you can easily clean your net files.</Description>\n<URI>\\ToolwizCleaner.net</URI>\n</RegistrationInfo>\n<Triggers>\n' index : 172 --> Decoded string :
b'<LogonType>InteractiveToken</LogonType>\n<RunLevel>LeastPrivilege</RunLevel>' index : 173 --> Decoded string :
b'SignalObjectAndWait' index : 174 --> Decoded string :
b'%s.%s.%s.%s' index : 175 --> Decoded string : b'Windows
8' index : 176 --> Decoded string : b'exc' index : 177 --> Decoded string : b'Launch
USER failed' index : 178 --> Decoded string :
b'regsvr32' index : 179 --> Decoded string :
b'settings.ini' index : 180 --> Decoded string :
b'/%s/%s/23/%u/' index : 181 --> Decoded string :
b'ECDSA_P384' index : 182 --> Decoded string :
b'%u.%u.%u.%u' index : 183 --> Decoded string :
b'ResetEvent' index : 184 --> Decoded string : b'%s
sTart' index : 185 --> Decoded string : b'%s %s
SP%u' index : 186 --> Decoded string : b'.tmp' index : 187 --> Decoded string :
b'</UserId>' index : 188 --> Decoded string : b'%s.%s' index : 189 --> Decoded string : b'/' index : 190 --> Decoded string :
b'Register s failed, 0x%x' index : 191 --> Decoded string : b'mutant' index : 192 --> Decoded string : b'e:' index : 193 --> Decoded string :
b'release' index : 194 --> Decoded string :
b'wtsapi32' index : 195 --> Decoded string : b'Windows
XP' index : 196 --> Decoded string :
b'<BootTrigger>\n<Enabled>true</Enabled>\n' index : 197 --> Decoded string : b'E: 0x%x
A: 0x%p' index : 198 --> Decoded string : b'Find P
failed' index : 199 --> Decoded string : b'Module
has already been loaded' index : 200 --> Decoded string : b'Windows
8.1' index : 201 --> Decoded string :
b'EnterCriticalSection' index : 202 --> Decoded string : b'Windows
10' index : 203 --> Decoded string : b'Execute
from system' index : 204 --> Decoded string :
b'<RunLevel>HighestAvailable</RunLevel>\n<GroupId>NT AUTHORITY\\SYSTEM</GroupId>\n<LogonType>InteractiveToken</LogonType>\n' index : 205 --> Decoded string : b'NAT
status' index : 206 --> Decoded string : b'Start
failed' index : 207 --> Decoded string :
b'WTSEnumerateSessionsA' index : 208 --> Decoded string : b'ps1' index : 209 --> Decoded string :
b'WaitForSingleObject' index : 210 --> Decoded string :
b'UrlEscapeW' index : 211 --> Decoded string : b'pIT
NULL' index : 212 --> Decoded string :
b'WTSFreeMemory' index : 213 --> Decoded string :
b'USER32.dll' index : 214 --> Decoded string :
b'WS2_32.dll' index : 215 --> Decoded string :
b'IPHLPAPI.DLL' index : 216 --> Decoded string :
b'WINHTTP.dll' index : 217 --> Decoded string :
b'bcrypt.dll' index : 218 --> Decoded string :
b'CRYPT32.dll' index : 219 --> Decoded string :
b'OLEAUT32.dll' index : 220 --> Decoded string :
b'SHELL32.dll' index : 221 --> Decoded string :
b'USERENV.dll' index : 222 --> Decoded string :
b'SHLWAPI.dll' index : 223 --> Decoded string :
b'ole32.dll' index : 224 --> Decoded string : b'ADVAPI32.dll' index : 225 --> Decoded string :
b'ntdll.dll' index : 226 --> Decoded string : b'ncrypt.dll' |
Trickbot C2 List |
36.91.117.231:443 36.89.228.201:443 103.75.32.173:443 45.115.172.105:443 36.95.23.89:443 103.123.86.104:443 202.65.119.162:443 202.9.121.143:443 139.255.65.170:443 110.172.137.20:443 103.146.232.154:443 36.91.88.164:443 103.47.170.131:443 122.117.90.133:443 103.9.188.78:443 210.2.149.202:443 118.91.190.42:443 117.222.61.115:443 117.222.57.92:443 136.228.128.21:443 103.47.170.130:443 36.91.186.235:443 103.194.88.4:443 116.206.153.212:443 58.97.72.83:443 139.255.6.2:443 |
Tran Trung Kien (aka m4n0w4r)
Malware Analysis Expert
R&D Center - VinCSS (a member of Vingroup)
No comments:
Post a Comment