【第三次修改】以前的版本写的很挫,无颜见江东父老。这是我重新分析的报告,行为分析+代码分析+手杀,手杀部分在附件中。纯粹练手,不足的地方,请大家拍砖
一、 基本信息
报告名称:PutHupigon.exe
作者:hostzhen
报告更新日期:2012-11-4
样本发现日期:
样本类型:木马
样本文件大小/被感染文件变化长度:
样本文件MD5 校验值:592F49A7419E3B8153D8E5FD7F5EED9B
样本文件SHA1 校验值:26A2AA3D694E39683C67CA15D754287BD90CA9C4
壳信息:UPX
可能受到威胁的系统:这是一个后门木马,提供远程控制服务
相关漏洞:
已知检测名称:
二、 初步分析
加了壳,初步估计是UPX
三、 行为分析
开启Filemon.exe、Regmon.exe、procexp.exe等工具,然后运行PutHupigon.exe,监控它的行为。
主要释放了3个文件:领取黄砖&黄转化肥.exe、vx_server_setup.exe、弯刀反鲨-2009.exe。
图1:Filemon.exe
图2:Filemon.exe
图3:Regmon.exe
四、 代码分析
4.1、 PutHupigon.exe
样本文件MD5 校验值:592F49A7419E3B8153D8E5FD7F5EED9B
样本文件SHA1 校验值:26A2AA3D694E39683C67CA15D754287BD90CA9C4
壳信息:UPX
先手动脱壳/自动脱壳,打开IDA/OD代码分析
写文件:
UPX0:00403481 push 0FFFFh
UPX0:00403486 mov ecx, dword_4056E4
UPX0:0040348C mov dl, 1
UPX0:0040348E mov eax, off_4027B0
UPX0:00403493 call sub_402B60
UPX0:00403498 mov dword_4056EC, eax
UPX0:0040349D xor eax, eax
UPX0:0040349F push ebp
UPX0:004034A0 push offset loc_4034E3
UPX0:004034A5 push dword ptr fs:[eax]
UPX0:004034A8 mov fs:[eax], esp
UPX0:004034AB mov edx, dword_4056F0 ; 写入的内容
UPX0:004034B1 mov ecx, dword_4056F4 ; 写入的handle
UPX0:004034B7 mov eax, dword_4056EC ; nNumberOfBytesToWrite
UPX0:004034BC call sub_40295C ; 写文件
移动文件:eg. 领取黄砖&黄转化肥.jpg 领取黄砖&黄转化肥.exe
UPX0:004034EA ; ---------------------------------------------------------------------------
UPX0:004034EA
UPX0:004034EA loc_4034EA: ; CODE XREF: start+2CA j
UPX0:004034EA ; DATA XREF: start+2BB o
UPX0:004034EA mov edx, dword_4056E8
UPX0:004034F0 mov eax, dword_4056E4
UPX0:004034F5 call sub_402320 ; movefile 移动文件
启动程序:
loc_40351E: ; nShowCmd
push 1
push 0 ; lpDirectory
push 0 ; lpParameters
mov eax, dword_4056E8
call sub_401D08
push eax ; lpFile
push offset Operation ; "open"
call j_GetDesktopWindow
push eax ; hwnd
call j_ShellExecuteA ; 启动lpFile
通过循环以上写文件、复制文件、启动该文件3个步骤,领取黄砖&黄转化肥.exe、vx_server_setup.exe两个程序启动了。
4.2、 vx_server_setup.exe
样本文件MD5 校验值:B8BE469E42B904D79ACF413711B17123
样本文件SHA1 校验值:0DCCE4729AF917DE573CC6BB2FE8824A5BFFA4C6
壳信息:UPX
先手动脱壳/自动脱壳,打开IDA/OD代码分析
产生自身文件弯刀反鲨-2009.exe
4.3、 弯刀反鲨-2009.exe
样本文件MD5 校验值:B8BE469E42B904D79ACF413711B17123
样本文件SHA1 校验值:0DCCE4729AF917DE573CC6BB2FE8824A5BFFA4C6
壳信息:UPX
注册服务、设置服务状态、创建线程:
UPX0:004A1934 ; 当前函数是服务入口点函数,执行服务初始化任务
UPX0:004A1934 ; Attributes: bp-based frame
UPX0:004A1934
UPX0:004A1934 ServiceMain proc near ; DATA XREF: UPX0:004A211C o
UPX0:004A1934
UPX0:004A1934 Parameter = byte ptr -4
UPX0:004A1934
UPX0:004A1934 push ebp
UPX0:004A1935 mov ebp, esp
UPX0:004A1937 push ecx
UPX0:004A1938 push ebx
UPX0:004A1939 mov ebx, lpServiceStatus ; 当前函数是服务入口点函数
UPX0:004A193F mov dword ptr [ebx], 30h
UPX0:004A1945 mov dword ptr [ebx+4], 2
UPX0:004A194C mov dword ptr [ebx+8], 3
UPX0:004A1953 xor eax, eax
UPX0:004A1955 mov [ebx+0Ch], eax
UPX0:004A1958 xor eax, eax
UPX0:004A195A mov [ebx+10h], eax
UPX0:004A195D xor eax, eax
UPX0:004A195F mov [ebx+14h], eax
UPX0:004A1962 xor eax, eax
UPX0:004A1964 mov [ebx+18h], eax
UPX0:004A1967 push offset HandlerProc ; lpHandlerProc
UPX0:004A196C mov eax, off_4A5B78
UPX0:004A1971 mov eax, [eax]
UPX0:004A1973 call @System@@LStrToPChar$qqrx17System@AnsiString ; System::__linkproc__ LStrToPChar(System::AnsiString)
UPX0:004A1978 push eax ; lpServiceName
UPX0:004A1979 call j_RegisterServiceCtrlHandlerA ; 注册HandlerProc来处理各种服务的回调函数
UPX0:004A197E mov edx, off_4A5B00
UPX0:004A1984 mov [edx], eax
UPX0:004A1986 mov eax, off_4A5B00
UPX0:004A198B cmp dword ptr [eax], 0
UPX0:004A198E jz short loc_4A19DF
UPX0:004A1990 mov dword ptr [ebx+4], 4
UPX0:004A1997 xor eax, eax
UPX0:004A1999 mov [ebx+14h], eax
UPX0:004A199C xor eax, eax
UPX0:004A199E mov [ebx+18h], eax
UPX0:004A19A1 push ebx ; lpServiceStatus
UPX0:004A19A2 mov eax, off_4A5B00
UPX0:004A19A7 mov eax, [eax]
UPX0:004A19A9 push eax ; hServiceStatus
UPX0:004A19AA call j_SetServiceStatus ; send status information to the service control manager
UPX0:004A19AA ; 设置服务的状态
UPX0:004A19AF cmp eax, 1
UPX0:004A19B2 sbb eax, eax
UPX0:004A19B4 inc eax
UPX0:004A19B5 test al, al
UPX0:004A19B7 jz short loc_4A19E0
UPX0:004A19B9 lea eax, [ebp+Parameter]
UPX0:004A19BC push 0 ; lpThreadId
UPX0:004A19BE push 0 ; dwCreationFlags
UPX0:004A19C0 push eax ; lpParameter
UPX0:004A19C1 push offset sub_4A185C ; lpStartAddress
UPX0:004A19C6 push 0 ; dwStackSize
UPX0:004A19C8 push 0 ; lpThreadAttributes
UPX0:004A19CA call j_CreateThread_0 ; 创建线程,关联的函数sub_4A185C
UPX0:004A19CF mov ebx, eax
UPX0:004A19D1 push 0FFFFFFFEh ; dwMilliseconds
UPX0:004A19D3 push ebx ; hHandle
UPX0:004A19D4 call j_WaitForSingleObject ; 等待响应
UPX0:004A19D9 push ebx ; hObject
UPX0:004A19DA call j_CloseHandle_0
UPX0:004A19DF
UPX0:004A19DF loc_4A19DF: ; CODE XREF: ServiceMain+5A j
UPX0:004A19DF pop ebx
UPX0:004A19E0
UPX0:004A19E0 loc_4A19E0: ; CODE XREF: ServiceMain+83 j
UPX0:004A19E0 pop ecx
UPX0:004A19E1 pop ebp
UPX0:004A19E2 retn 0Ch
线程关联的函数:
UPX0:004A185C ; DWORD __stdcall sub_4A185C(LPVOID)
UPX0:004A185C sub_4A185C proc near ; CODE XREF: UPX0:004A1EB0 p
UPX0:004A185C ; UPX0:loc_4A2130 p ...
UPX0:004A185C cmp byte_4A7F64, 0
UPX0:004A1863 jz short loc_4A186A
UPX0:004A1865 call sub_49C348
UPX0:004A186A
UPX0:004A186A loc_4A186A: ; CODE XREF: sub_4A185C+7 j
UPX0:004A186A mov eax, off_4A5978
UPX0:004A186F mov eax, [eax]
UPX0:004A1871 call sub_457228 ; 初始化
UPX0:004A1876 mov eax, off_4A5978
UPX0:004A187B mov eax, [eax]
UPX0:004A187D mov byte ptr [eax+5Bh], 0
UPX0:004A1881 mov ecx, off_4A5690
UPX0:004A1887 mov eax, off_4A5978
UPX0:004A188C mov eax, [eax]
UPX0:004A188E mov edx, off_497180
UPX0:004A1894 call @Forms@TApplication@CreateForm$qqrp17System@TMetaClasspv ; Forms::TApplication::CreateForm(System::TMetaClass *,void *)
UPX0:004A1899 mov eax, off_4A5978
UPX0:004A189E mov eax, [eax]
UPX0:004A18A0 call @Forms@TApplication@Run$qqrv ; 等待处理消息
UPX0:004A18A5 retn
UPX0:004A18A5 sub_4A185C endp
五、 手杀
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)