现在公众号推文机制变了,只对常读和星标的公众号才展示大图推送
建议大家能把【moonsec】“设为星标”哦,否则可能就看不到了啦
暗月最近建立了数个攻防交流群 有兴趣 加微信 备注攻防 拉入群
记一次有意思的远控样本分析
事件起因:
一个上班迟到的早上,一开机发现虚拟机被老铁清空了,顺便被留下了嘲讽字眼。
马子免杀做的思路还凑合,VT跑了1查杀
看样子应该属于银狐类型,不出意外是搞HC的人,如果是正经安全厂商的人我只能说你这马子还不行,哥们都零查杀的,你还得练。
分析过程:
1、基础静态审查
先用die瞅瞅怎么个事
导入函数:
通过几个常见的函数可以猜测,这个程序可能要创建文件在系统目录,资源至于加载什么,命令行获取什么,可以先暂且记一下。
2、高级静态分析过程
我艾达呢?上IDAPRO!
先看了眼主程序整体分支,挺单一的,根据这个长度加上才400kb大小,混淆肯定是加了。
F5来到伪代码查看,黄色标记便是他的混淆了,已经改了名字方便接下来分析了
来到他第一个函数,用alloca申请的栈区内存,从函数看到了TEP,利用StackLimit定位线程栈当前最低位置,总体就是V1只要还小于那就一直-=,有啥意义?没啥意义
在后续也看到这个函数,基本确定就是个混淆了,忽略掉
看到了获取命令行函数了,赋值给Str,可以寻找一下
后续又获取命令行长度大小给V266,继续找
遇到了第一个判断,其他的都别管,混淆太多了,直接进唯一的函数看到底做什么
进到函数,发现找系统temp路径,并且获取自定义资源
接着往下走,整体就是获取内嵌的资源文件
获取完内嵌的资源文件不出意外下边的函数就是copy进内存了
进入查看将资源文件copy进申请的内存空间
回来接着往下走,发现对字符串做了什么比较,之后会error,暂记一下
创建文件,不出意外是要创建到temp下边的
这个函数到这基本分析完了,那他做了什么?
1.加载了资源文件到内存
2.创建了文件到某个目录下
3.没错,这么一堆就做了这两主要的事情
来到第二个正经判断,进到唯一函数看下做了什么
进到里边发现还有个函数,看看是干嘛的
解密还是???管他呢,待会直接动态无视掉
一个参数,启动需要加上这个参数才能启动调试
回到主程序,终于来到最后一个函数了,应该要加载内存的资源了
他终于要干点正事了昂,那他前边那个资源加载是啥玩意?管他呢。
解密内存资源文件,最后一个函数进入
加载资源文件,那这个资源文件应该是dll啥的,继续往里跟
最后经过一系列没用的加解密进入到某个不知名函数发现终于能解密完了
ok基本看完了,反正加密解密看不懂直接调就完了。
3、动态基础调试分析
启动完显示文件损坏,没关系,反正我知道你要去自启动目录了
很好,这里其实释放的文件是一样的,但是根据之前的str对比可能就是文件名长度做了啥比较。
根据程序启动可以看到参数得有/c --Se
来到这个temp目录下可以看到文件在这了
4、高级动态调试分析
命令行先加上
找到最后加载解密的那个申请的内存函数的地址
下个断点
找到解密完成后的地址
下断点
运行后跳到第一个断点
监视内存等待解密结束
可以看到dos头
dump出来
修改文件头变成可执行PE文件方便进行IDA分析功能
5、主体功能分析
进入dump出来的主体发现就一个函数
进入查看,创建互斥体
网络连接配置
权限维持,加入到自启动并修改名字
来到注册表能看到参数有提示
网络连接功能
后边基本就是各种功能分支,case啥的了,总体主体程序就是个C2生成出来的dll文件
cmd命令执行,在看到之前的网络连接的时候基本就可以去看导入函数了,基本就能知道有啥功能了,再看看字符串就好了,因为是dll文件,所以不会自己调用,而是看连接后调用的是什么而去跳,但是这里很多的函数都是经典乱码值所以也没有一直追下去的必要了。
6、验证
最后再动态运行看看他都做了什么
大哥现在正在行动,最后也是进行了一波对话,蛮有意思的了。
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏