https://www.kaspersky.com/blog/shadow-h ... ser/26149/
Injected code called inside MS VC CRT code part, __crtExitProcess of Setup.exe
Itself represent an encrypted shellcode. Dumped shellcode also in attach. Uses hashes for API search.
Lookup table.
1) Get API pointers-> loading dlls and hash lookup (some dlls referenced twice, quality shellcode).
2) Call GetAdaptersAddresses, allocate buffer for result - call GetAdapterAddresses again, lookup each adapter entry and calculate MD5 hash for MAC address value to preallocated buffer.
3) Compare results with hardcoded targets values. If they are identical build unique request value for "hxxps://asushotfix.com/logo2.jpg?" (down at this moment) query InternetOpenA->InternetOpenUrlA->InternetQueryDataAvailable. Read data from server with InternetReadFile to the preallocated VirtualAlloc(ERW 5 MB) buffer and transfer execution to it.
4) If Target does not match then create idx.ini in the root of drive from where setup.exe was launched (GetModuleFileNameW and extract drive label) and fill it with the following values (WritePrivateProfileStringW):
(GetSystemTimeAsFileTime + FileTimeToSystemTime)
Injected code called inside MS VC CRT code part, __crtExitProcess of Setup.exe
Itself represent an encrypted shellcode. Dumped shellcode also in attach. Uses hashes for API search.
Lookup table.
Code: Select all
Simplified execution scheme: query kernel32!LoadLibraryExW
query kernel32!GetProcAddress
LoadLibraryExW(wininet)
LoadLibraryEx(kernel32)
VirtualAlloc
GetModuleFileNameW
WritePrivateProfileStringW
GetSystemTimeAsFileTime
FileTimeToSystemTime
VirtualFree
LoadLibraryExW(ntdll)
memcpy
memcmp
memset
swprintf
sprintf
strncat
LoadLibraryExW(ntdll)
MD5Init
MD5Update
MD5Final
LoadLibraryExW(iphlpapi)
GetAdaptersAddresses
LoadLibraryExW(wininet)
InternetOpenA
InternetOpenUrlA
InternetQueryDataAvailable
InternetReadFile
1) Get API pointers-> loading dlls and hash lookup (some dlls referenced twice, quality shellcode).
2) Call GetAdaptersAddresses, allocate buffer for result - call GetAdapterAddresses again, lookup each adapter entry and calculate MD5 hash for MAC address value to preallocated buffer.
3) Compare results with hardcoded targets values. If they are identical build unique request value for "hxxps://asushotfix.com/logo2.jpg?" (down at this moment) query InternetOpenA->InternetOpenUrlA->InternetQueryDataAvailable. Read data from server with InternetReadFile to the preallocated VirtualAlloc(ERW 5 MB) buffer and transfer execution to it.
4) If Target does not match then create idx.ini in the root of drive from where setup.exe was launched (GetModuleFileNameW and extract drive label) and fill it with the following values (WritePrivateProfileStringW):
(GetSystemTimeAsFileTime + FileTimeToSystemTime)
Code: Select all
Targeted attack, nothing fancy so far except way of distribution through ASUS crapware. Proclaimed effect is slightly overestimated for AV marketing reasons.[IDX_FILE]
XXX_IDN=Current Date
XXX_IDE=Current Date
XXX_IDX=Current Date
Attachments
pass infected
(12.7 KiB) Downloaded 28 times
(12.7 KiB) Downloaded 28 times
pass infected
(9.1 MiB) Downloaded 45 times
(9.1 MiB) Downloaded 45 times
Ring0 - the source of inspiration