首页
社区
课程
招聘
[原创]追踪活动中相遇CobaltStrike的故事
发表于: 2020-7-26 09:48 4667

[原创]追踪活动中相遇CobaltStrike的故事

2020-7-26 09:48
4667

近期笔者在追踪相关组织的过程中,自然需要浏览一些公开的样本,又无意发现了如下样本,从检出率的结果觉得可以深入分析看看。


下载后拿到完整内容,如下。


脚本文件名命名很直接,大致看了下,可以确定是一个恶意文件了,不过没有混淆。这里提一下C#中如何判断系统的架构(32位或64位),一种很简单的方法就是根据IntPtr类型的Size属性来判断,如下示例代码。


所以该处主要是判断当前系统的架构,当是64位的时候利用start-job开启一个后台任务,如下。


如果非64位环境,则直接执行$DoIt。现在分析一下$DoIt的代码内容,如下。


上述的代码因为涉及到异或解码过程,所以需要调试PowerShell,可通过微软自带的ISE进行调试, 然后将解密后的变量值通过管道输出至文本文件中,然后后续进行处理。步骤简要记录如下,从base64编码过的数据进行解码然后分配内存执行(属于无文件攻击活动)。


异或解密之后,如下。


将上述内容进行十六进制转换,invoke执行的内容转换为十六进制后,如下。


对其进行格式化脚本(十进制数转十六进制序列),如下。



最终获取的十六进制序列shellcode,如下。


通过静态分析,可以发现存在UA头与疑似请求的内容,不过没有IP地址。


经过代码相似度搜索,发现此payload为5个月前国外安全人员分析过的相似样本,很大概率是CobaltStrike模板产生的恶意文件,通过阅读相关内容发现相似恶意脚本曾用于攻击活动。


一般来说,上述的样本是属于最后执行的阶段,前期会通过多种混淆包装来进行安全防护软件规避。不过既然已经有解码后的样本,接下来对其进行调试。通过提取shellcode复制进ollydbg进行调试,如下。


加载wininet.dll,如下。


获取到API函数地址并调用,如下。


请求的IP地址为"123.206.112.24",如下。



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-7-26 09:50 被jishuzhain编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 3072
活跃值: (20)
能力值: ( LV1,RANK:40 )
在线值:
发帖
回帖
粉丝
2
喜欢这类文章,感谢!
2020-7-26 11:49
0
游客
登录 | 注册 方可回帖
返回
//