1、这个是作为新手的学习笔记,分享一下,大佬绕过就好
2、有个很不错的语雀分享一下:https://www.yuque.com/p1ut0/qtmgyx/xwd9w0 (建议刚接触防病毒绕过的可以看下Yara入门那篇)
3、如果有地址不对的情况,可能是我多次打开的原因,见谅
版本:Cobal Strike 4.1版本
生成样本后直接丢进IDA查看
进来可以看到,有两个函数,结尾一个死循环
实现代码在第二个函数:sub_401840()
调用GetTickCount函数,返回从操作系统启动所经过的毫秒数,它的返回值是DWORD。(百度百科解释),最终返回值放到EAX里
紧接着定义了管道名称,管道名长这样:
\.pipeMSSE-随机字符-server
其中随机字符为GetTickCount()的返回值
放到x32dbg里可以看到执行时的管道名称
随后创建线程,我们跟进sub_401713函数
发现调用了sub_401648函数,继续跟进
几个重要的步骤我标记出来了,大概的流程:
1、CreateNamedPipeA(创建管道名称)
2、ConnectNamedPipe(连接管道)
3、WriteFile(写入数据到管道中,宽度0x32600,这里的数据是存放在data字段里加密后的shellcode,地址为.data:00403014 )
4、CloseHandle(关闭句柄)
创建线程完了,紧接着调用sub_4017E2这个函数,继续跟进
跟进来看后发现先是sleep 10秒后调用sub_40173和sub_40158E两个函数
跟进sub_40173函数后发现,这个函数主要用于读取管道数据的
接着看sub_40158E函数,该函数负责解密shellcode并且加载到内存中执行
加密的密钥地址为.data:00403008
解密后的shellcode存放在起始地址为0x00650000,末尾地址为0x00650000+0x32600
在x32dbg里,我们可以对004015E2地址下一个断点,然后一直F9,等程序执行到这个地址时,异或解密已经完成,我们可以在内存窗口中选中位置,把shellcode保存到本地,为1.bin(从前面的4D 5A可以看出是PE文件),方便丢到IDA分析
回到x32dbg里,看可以看到后面会跳转到解密的shellcode执行,我们右键EBX,点击在反汇编中转到,下一个断点,F9跟进shellcode执行
代码实现在在call EAX里,跟进分析
上图可以看到,这段shellcode其实就是一个dll文件,找到dllmain入口函数
Dllmain函数中会解密一些配置信息:
GET URI:
通讯端口:
UA头
POST URI
解析出通讯IP:
与服务器建立连接
HttpOpenRequest去创建请求句柄
连接服务器失败的话关闭句柄
后面就是常规的一个http请求了,用到如下函数:
1、HttpOpenRequestA
2、HttpSendRequestA
3、HttpQueryInfoA
4、InternetQueryDataAvailable
5、InternetReadFile
6、InternetCloseHandle
解析结果带入到具体的函数进行执行
在解密shellcode的时候,我复制出来放到1.bin时,杀毒软件直接查杀了
说明原始的shellcode在进行异或加密时,对静态检测有一定的绕过能力,而之前远程加载加密shellcode到内存中执行,杀毒软件也不会查杀,说明对内存的检测可能相对薄弱,之前有一篇远程加载shellcode绕过杀软静态检测的,可以看看这篇:免杀系列-CS木马shellcode分离免杀上线
在我们生成beacon.exe时,通常还没看到文件影子,就被杀毒软件杀掉了,说明我们生成的PE文件里,有对应的特征被杀毒软件查杀掉了。
比较明显的特征:
1、使用了管道,且管道名称有固定的格式
2、解密的密钥和shellcode所在的位置是固定的
3、我不会
先改一下管道的名称,右键转到内存窗口,随便改一个字符就可以
接着把修改后的结果保存
再查杀的时候,杀毒软件识别出来的就不是CS的标签了,而是代码混淆
后来尝试了好多种办法没绕过这个,后面再回来填坑吧
END
本文始发于微信公众号(NOVASEC):逆向分析cobal strike 不分段beacon(x86)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论