逆向分析cobal strike 不分段beacon(x86)

admin 2022年2月24日01:26:53评论178 views字数 1978阅读6分35秒阅读模式

△△△点击上方“蓝字”关注我们了解更多精彩




0x00 前言


1、这个是作为新手的学习笔记,分享一下,大佬绕过就好

2、有个很不错的语雀分享一下:https://www.yuque.com/p1ut0/qtmgyx/xwd9w0 (建议刚接触防病毒绕过的可以看下Yara入门那篇)

3、如果有地址不对的情况,可能是我多次打开的原因,见谅




0x01 分析

版本:Cobal Strike 4.1版本


生成样本后直接丢进IDA查看


进来可以看到,有两个函数,结尾一个死循环


逆向分析cobal strike 不分段beacon(x86)


实现代码在第二个函数:sub_401840()


逆向分析cobal strike 不分段beacon(x86)


调用GetTickCount函数,返回从操作系统启动所经过的毫秒数,它的返回值是DWORD。(百度百科解释),最终返回值放到EAX里

 

紧接着定义了管道名称,管道名长这样:

\.pipeMSSE-随机字符-server

其中随机字符为GetTickCount()的返回值

 

放到x32dbg里可以看到执行时的管道名称


逆向分析cobal strike 不分段beacon(x86)


随后创建线程,我们跟进sub_401713函数

逆向分析cobal strike 不分段beacon(x86)


发现调用了sub_401648函数,继续跟进


逆向分析cobal strike 不分段beacon(x86)


几个重要的步骤我标记出来了,大概的流程:

1、CreateNamedPipeA(创建管道名称)

2、ConnectNamedPipe(连接管道)

3、WriteFile(写入数据到管道中,宽度0x32600,这里的数据是存放在data字段里加密后的shellcode,地址为.data:00403014 )

4、CloseHandle(关闭句柄)


创建线程完了,紧接着调用sub_4017E2这个函数,继续跟进


逆向分析cobal strike 不分段beacon(x86)


跟进来看后发现先是sleep 10秒后调用sub_40173和sub_40158E两个函数


逆向分析cobal strike 不分段beacon(x86)


跟进sub_40173函数后发现,这个函数主要用于读取管道数据的


逆向分析cobal strike 不分段beacon(x86)



接着看sub_40158E函数,该函数负责解密shellcode并且加载到内存中执行


逆向分析cobal strike 不分段beacon(x86)


加密的密钥地址为.data:00403008


逆向分析cobal strike 不分段beacon(x86)


解密后的shellcode存放在起始地址为0x00650000,末尾地址为0x00650000+0x32600

 

在x32dbg里,我们可以对004015E2地址下一个断点,然后一直F9,等程序执行到这个地址时,异或解密已经完成,我们可以在内存窗口中选中位置,把shellcode保存到本地,为1.bin(从前面的4D 5A可以看出是PE文件),方便丢到IDA分析


逆向分析cobal strike 不分段beacon(x86)


回到x32dbg里,看可以看到后面会跳转到解密的shellcode执行,我们右键EBX,点击在反汇编中转到,下一个断点,F9跟进shellcode执行


逆向分析cobal strike 不分段beacon(x86)


逆向分析cobal strike 不分段beacon(x86)


代码实现在在call EAX里,跟进分析


逆向分析cobal strike 不分段beacon(x86)


上图可以看到,这段shellcode其实就是一个dll文件,找到dllmain入口函数


逆向分析cobal strike 不分段beacon(x86)



Dllmain函数中会解密一些配置信息:

GET URI:


逆向分析cobal strike 不分段beacon(x86)


 

通讯端口:

 

逆向分析cobal strike 不分段beacon(x86)


 

UA头

 

逆向分析cobal strike 不分段beacon(x86)

 


POST URI


逆向分析cobal strike 不分段beacon(x86)


 

 

解析出通讯IP:

 

逆向分析cobal strike 不分段beacon(x86)


 

与服务器建立连接

 

逆向分析cobal strike 不分段beacon(x86)


 

 

 

HttpOpenRequest去创建请求句柄

 

逆向分析cobal strike 不分段beacon(x86)


 

连接服务器失败的话关闭句柄


逆向分析cobal strike 不分段beacon(x86)

 

 

后面就是常规的一个http请求了,用到如下函数:

1、HttpOpenRequestA

2、HttpSendRequestA

3、HttpQueryInfoA

4、InternetQueryDataAvailable

5、InternetReadFile

6、InternetCloseHandle

 

解析结果带入到具体的函数进行执行


逆向分析cobal strike 不分段beacon(x86)











0x09 总结

在解密shellcode的时候,我复制出来放到1.bin时,杀毒软件直接查杀了


逆向分析cobal strike 不分段beacon(x86)


 

说明原始的shellcode在进行异或加密时,对静态检测有一定的绕过能力,而之前远程加载加密shellcode到内存中执行,杀毒软件也不会查杀,说明对内存的检测可能相对薄弱,之前有一篇远程加载shellcode绕过杀软静态检测的,可以看看这篇:免杀系列-CS木马shellcode分离免杀上线

 

 

在我们生成beacon.exe时,通常还没看到文件影子,就被杀毒软件杀掉了,说明我们生成的PE文件里,有对应的特征被杀毒软件查杀掉了。


比较明显的特征:

1、使用了管道,且管道名称有固定的格式

2、解密的密钥和shellcode所在的位置是固定的

3、我不会

 


先改一下管道的名称,右键转到内存窗口,随便改一个字符就可以

 

逆向分析cobal strike 不分段beacon(x86)

逆向分析cobal strike 不分段beacon(x86)


 

 

接着把修改后的结果保存

 

 

逆向分析cobal strike 不分段beacon(x86)

逆向分析cobal strike 不分段beacon(x86)

 

 

再查杀的时候,杀毒软件识别出来的就不是CS的标签了,而是代码混淆

 

逆向分析cobal strike 不分段beacon(x86)

 

后来尝试了好多种办法没绕过这个,后面再回来填坑吧




END



如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!


或添加NOVASEC-MOYU 以便于及时回复。

逆向分析cobal strike 不分段beacon(x86)


感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!



本文始发于微信公众号(NOVASEC):逆向分析cobal strike 不分段beacon(x86)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月24日01:26:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逆向分析cobal strike 不分段beacon(x86)https://cn-sec.com/archives/494363.html

发表评论

匿名网友 填写信息