Emotet 银行木马简析
本帖最后由 hjm666 于 2020-1-2 15:47 编辑简述样本行为:
下载该样本的文件是一枚doc文件,在doc文件中写有恶意宏代码,会下载并运行emotet 木马,木马运行后会利用GetCommandLineA函数判断是否是第一次运行,不是第一次运行就利用CreateProcessw创建一个同名的子进程,同时利用lpCommandLine参数传递命令,让GetCommandLineA判断是否是第一次运行该样本,创建了子进程后随即退出主进程。子进程接收了命令后不再进行创建子进程,跳转入恶意代码处,子进程运行后会把自身数据进行复制并重新随机命名保存到系统文件夹内,并设置window系统服务进行持久化。重新命名后的样本启动后会继续创建子进程传递相关命令,子进程判断了传递命令正确后会跳入到核心代码处,会收集计算机的一些敏感信息如计算机名,计算机内的所有进程名等信息,进行des加密,发送到目标服务器中,并读取目标服务器中的数据信息。
doc文件:
Hash:1b602f921b641d7645c2ae2ada628560a053d5e4
大小:186kb
打开文件后
其搭载的宏代码
vt对其代码的检测
触发宏代码后,获取到最终执行的powershell命令,并对相关字符进行base64解码处理后,宏代码在4个链接中遍历下载重命名emotet木马运行,下载的PE文件经判别是emotet木马
emotet 简单分析
样本核心代码是经过加密的用IDA只能到达核心代码的入口
解密完后进入核心代码
获取系统信息
获取路径
接收命令
对获取到的命令进行判别,如果正确就进入到核心代码不正确就创建子进程
创建子进程,传递命令,随后退出主线程
因为子线程执行了相关命令后也退出了,所以用模拟一个命令的方法进行调试这个“子进程”
一如前面的操作到判别是否是"子进程"后进入核心代码处。
连续创建了两个互斥体,第一个互斥体
第二个互斥体
利用CreateEventW函数打开创建的互斥体事件,随后利用SignalObjectAndWait函数进行发送信号通知一个对象然后作为单个操作等待另一个对象 进行消息捕获,
同时在用户文件夹Temp内创建tmp文件将自身数据复制作为副本
创建在Windows 目录下创建文件,将自身数据复制过去
为这个程序创建系统服务,做持久化
makerleel.exe
将数据复制重命名生成makerleel.exe文件,又设置window系统服务启动后,和之前行为一样,先判断创建子进程将命令导入执行,判断命令正确否后执行关键代码
以同样的办法模拟进入‘’子进程‘’后生成一个des秘钥
遍历进程信息进程存储
解密出回连ip进行构建请求头后将获取的相关敏感数据发送到目标ip
数据发送过去后,样本还将进行读取来自服务器的相关数据进行下一步行为,该ip目前或已被制裁,无数据回馈
至此完结
上传一份主体样本网络包,有兴趣分析的可以看看
链接: https://pan.baidu.com/s/1AmtAmksRHTqvFx0QuvTTMw 提取码: zzxy 复制这段内容后打开百度网盘手机App,操作更方便哦 TYLS123 发表于 2021-10-28 17:19
楼主你好,我想请教一下,命令行参数我也找到了,也使用了含参调试,但是程序依然跳入了子程序,并没有进入 ...
跟一下跳转,看看是什么函数导致的。帖子时间有点久了差不多忘记了。附加调试,手改指令都可以试试。 hjm666 发表于 2021-10-29 18:06
跟一下跳转,看看是什么函数导致的。帖子时间有点久了差不多忘记了。附加调试,手改指令都可以试试。
好的好的,已经解决,谢谢楼主 连续创建两个互斥体,进行消息捕获那有不懂是怎么回事,但进行捕获是我OD无法进行动态调试了直接跑飞,强行干掉后才获取到样本进一步的信息的 字多,nb就对了 感谢分享 谢谢楼主大大的分享 太强了,感谢分享 学习了学习了 技术贴,只能膜拜 学习了学习了
分析的很详细