锁机木马分析
序言
离开了
CTF
, 踏上了恶意代码分析这条不归路. 第一次分析, 拿了一个锁机木马, 非常简单, 主要是总结一下思路, 留给恶意代码分析的新手.
样本信息
md5: b030d1effac0bc3e0c7dcf89cc6f4960
sha1: 4da2ca78e5abd5703e4875112692f1672ddc4b41
名称: 锁机木马
功能: 修改账户密码, 但对文件不进行加密.
分析
- 1.IDA Pro
拖入
IDA Pro
, 可以发现下列字符串
/fullname:要密码加QQ:1463980872'
net user
20040119
GetUserNameA
猜测 : 可能是通过net user
命令修改了当前账户的fullname
和密码.
- 2.导入函数
线程/进程 | 堆 | 执行命令 |
---|---|---|
CreateThread | HeapAlloc | ShellExecuteA |
CreayeProcessA | HeapCreate | WinExec |
OpenProcessToken | HeapDestroy | |
ExitProcess | HeapFree |
猜测: 执行net user
命令的API
有ShellExecuteA
和WinExec
, 这两个API
在0x408630
函数被调用, 下断点.
- 3.
OD
F9
执行, 虚拟机关机, OD并没有触发断点. 从上面的导入函数可以推测: 程序有可能创建新的线程, 或进程, 来执行修改用户名和密码操作. OD 对于多进程和多线程的支持并不十分友好.
多线程与多进程的调试
自己测试了一下, 多线程
OD
是可以断下来的, 进程并不会直接断下.
- 4.
验证
利用
OD
插件在CreateThread
和CreateProcess
下断点. 运行发现CreateThread
断点没有命中,CreateProcess
命中.
看一下CreateProcess
介绍
BOOL CreateProcessA(
LPCSTR lpApplicationName,
LPSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCSTR lpCurrentDirectory,
LPSTARTUPINFOA lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
重点看lpCommandLine, 可以是一个命令行, 说明了恶意程序使用CreateProcess来执行
net user /fullname: 要密码加QQ:1463980872 和 net user 20040119
实现代码
样本下载
心得
实验之前, 一定要做好快照, 切记.