记录一下最近分析的一个样本,自己依然是个菜鸡,有很多不足,希望各位师傅提出错误我努力学习.我头发都没了.此木马发送用户信息加密,能进行远程后门访问等功能,导入函数和导出函数只有一个,大量的动态加载api.
idb和样本都放下面学习链接那了.
Alt+F11
查看调试宏代码
三个模块分别为Pibafqel
,Nzolhtmfybml
,Xhnbvwxbzhq
.Nzolhtmfybml
里面是空的,其他两个里面充满类似家庭地址的注释,使用脚本删除掉后进行调试翻译.去除无用混淆,大多数都只是定义,声明的函数.
调试后发现,在autoopen
中使用过函数有Hsbahypqju()
和Abiufkgnjgdiv(Kmtifafrucqb)
.
化简:
调用Hsbahypqju()
,
遇到个office坑比的地方,通过监视窗口只能查看前250个字符,所以最好通过Debug.Print
打印变量,能看到全部字符串
创建一个winmgmts:win32_processstartup
对象,仅用于将信息传递给Win32_Process类的Create方法。
隐藏窗口
命令行字符串
创建winmgmts:Win32_Process
对象
通过Win32_Process
方法Creat
运行字符串.-e
为-EncodeCommand
.powershell -e
运行base64编码的字符串.
Create(命令行,子进程路径,启动配置,进程od)`
将传入的字符串中的0xdc3
替换为空,恢复字符串的作用.
位置: %userprofile%\846.exe
名称: 846.exe
md5: e83c5ba6be05ec51ae6ceb2470fcfdf3
sha-1: 94b527756b6c6753822501f76f161bf64ad6974c
sha-256: fb0a0f10cbebefb5dbe6034c3bdfe246179e444c68a6e36c4d20232d52fc07a7
时间是最近创建的.无壳,使用vs2015编译.
根据ProcessExplorer
观察程序执行大概流程.846.exe
执行后会启动一个新进程 后杀掉自己.新进程名为dasmrcdasmrc.exe
,地址为%LOCALAPPDATA%\dasmrcdasmrc.exe
存在唯一的导出函数qzLgKZBqfCXorfLMeJzdKzgyvdzqwF
,EntryPoint
为0x00004960
CIRC OLE Control DLL
可能某个样本种类吧.
通过导出表获取函数qzLgKZBqfCXorfLMeJzdKzgyvdzqwF
的地址,跳转执行.
获取VirtualAlloc
函数地址,以使得后续能拷贝执行数据.
sub_1E0467
函数通过传如对应函数hash
值获取所需api地址.
sub_1e0467:
(((FS:[30])+0xC)+0xC)
获取Ldr
的地址,后面进行遍历和比较最终得到所需要的地址. 参考链接放在下面了.
根据PE
偏移,获取各个节的数据.
申请空间
拷贝后门程序pe
数据.这时候顺便去dump内存被复制的pe数据,(毕竟可能不用修复重定位(x).
得知程序入口RVA为0x1000
, 基地址为0x60000
,所以起始地址为0x610000
,块大小为D200
内存页属性修改
修改代码段为可执行可读属性.
修改数据段为可读属性
执行新pe文件的代码段,这时候顺便dump下来pe数据.
拷贝数据
获取模块全称和地址
计算key
格式化参数
计算出的命令行参数和从右往左取现有命令行进行比较,如果命令相等则执行内部函数.不相等的话执行下列流程
不相等后
执行后续程序,最终CreateProcessW
创建新的自身进程并附加对应计算出的命令参数:
退出进程
使用上述的命令行字符串进行调试,这时候为了方便使用之前解密后dump下来的pe数据.
二者字符串相等进入sub_30B8AB
.
通过互斥量执行主要功能函数函数,等待4000ms
功能大致分布区域,通过对固定内存空间的值进行校验赋值,依次执行不同功能
系统进程获取
sub_302255
进程名存储:
信息发送
发送流程
注册自启动
新文件
启动
令牌获取
高权限执行
移动文件
使用SHFileOperationW
操作文件
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-2-4 04:41
被阿伪编辑
,原因: