这里没有放虚拟机运行,直接放微云沙盒跑,样本运行效果如下
提示是否要继续运行,之后电脑会出现各种弹窗,然后会重启,重启后直接出现彩虹猫并且播放音频
样本名:彩虹猫
MD5:19dbec50735b5f2a72d4199c4e184960
SHA-1:6fed7732f7cb6f59743795b2ab154a3676f4c822
SHA-256:a3d5715a81f2fbeb5f76c88c9c21eeee87142909716472f911ff6950c790c24d
File size:14.50 KB (14848 bytes)
Detect It Easy(DIE)查看PE信息如下
是一个32位程序,且无壳。直接查看导入表
SHELL32.dll
ShellExecuteW
ShellExecuteExW
CommandLineToArgvW
ShellExecuteA
KERNEL32.dll
CreateToolhelp32Snapshot
GetModuleFileNameW
GlobalFree
ExitProcess
LoadLibraryA
lstrlenW
Process32NextW
GetCurrentProcess
LocalAlloc
OpenProcess
GetCommandLineW
GetProcAddress
Process32FirstW
CreateThread
lstrcmpA
WriteFile
CloseHandle
lstrcmpW
SetPriorityClass
LocalFree
GlobalAlloc
Sleep
CreateFileA
GetCurrentThreadId
USER32.dll
DefWindowProcW
SendInput
GetMessageW
GetSystemMetrics
MessageBoxW
GetWindowRect
UnhookWindowsHookEx
DrawIcon
EnumChildWindows
MessageBoxA
GetWindowDC
TranslateMessage
DispatchMessageW
RegisterClassExA
GetCursorPos
ReleaseDC
SetCursorPos
CallNextHookEx
CreateWindowExA
GetDesktopWindow
SetWindowsHookExW
LoadIconW
SendMessageTimeoutW
ExitWindowsEx
ADVAPI32.dll
CryptAcquireContextW
AdjustTokenPrivileges
LookupPrivilegeValueW
CryptGenRandom
OpenProcessToken
PSAPI.DLL
GetProcessImageFileNameA
WINMM.dll
PlaySoundA
GDI32.dll
StretchBlt
BitBlt
根据导入表的显示,该样本可能存在的操作如下
提权(AdjustTokenPrivileges、LookupPrivilegeValueW、OpenProcessToken、SetPriorityClass)
遍历进程(CreateToolhelp32Snapshot、Process32FirstW、Process32NextW)
遍历窗口(EnumChildWindows)
全局钩子(SetWindowsHookExW、CallNextHookEx、UnhookWindowsHookEx)
鼠标操作(SetCursorPos、GetCursorPos)
键盘操作(SendInput)
创建窗口(CreateWindowExA)
运行程序(ShellExecuteW)
绘图(BitBlt、StretchBlt)
播放音频(PlaySoundA)
接下来是拖进IDA进一步的分析。
大概浏览了伪代码之后,得知该样本存在两种运行方式,附带参数分别为 /watchdog 和 /main。首先是分析/watchdog参数。
以/watchdog方式运行时,会先创建一个线程,然后创建一个窗口。先分析ThreadProc。
该线程首先是获取自身路径后,进行进程遍历,统计自身进程数,如果自己的数量少了1,则会执行下面的Blue_MsgBox_fixWndSize函数。
函数首先是启动了20是个线程,然后触发一个蓝屏,如果蓝屏触发失败则会重启。双击StartAddress,发现光标直接跳到return的位置
于是切换到反汇编查看汇编代码。
首先调用SetWindowHookExW设置了一个WH_CBT的钩子,钩子函数为fn,这样当窗口有变化时会自动调用fn,紧接从lpText从随机取出一条文本用来弹窗。
.data:004050C8 lpText dd offset aYouKilledMyTro
.data:004050C8 ; DATA XREF: Blue_MsgBox_fixWndSize+10D↑r
.data:004050C8 ; "YOU KILLED MY TROJAN!\r\nNow you are go"...
.data:004050CC dd offset aRestInPissFore ; "REST IN PISS, FOREVER MISS."
.data:004050D0 dd offset aIWarnedYou ; "I WARNED YOU..."
.data:004050D4 dd offset aHahaN00bL2pG3t ; "HAHA N00B L2P G3T R3KT"
.data:004050D8 dd offset aYouFailedAtYou ; "You failed at your 1337 h4x0r skillz."
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-10-26 20:30
被PlaneJun编辑
,原因: