记录自己的第一次红队钓鱼样本分析
前言
HVV 遇到了邮件钓鱼,有个样本挺有趣,自己又没分析过样本,于是便想尝试分析一下,并记录下来,同时学习一下红队大佬们的思路,大佬勿喷,讲的比较啰嗦。
详细分析过程
尝试上线分析流量
先尝试上线看看流量,这里我用 proxifier
强制走 Reqable
分析一下流量:
使用了阿里CDN,有点像 CS 的流量:
查一下域名,好家伙还是备案的:
估计用了域前置(我也想用啊 QAQ),话不多说,开始分析!
分析上线流程
样本是一个压缩包,解压后包含一个快捷方式以及一个文件夹:
解压后:
文件夹的内容:
这一看就是打包的一个 python 环境,并且是 embed 版本,可以在这里找到对应的版本下载:
https://www.python.org/ftp/python/
接着查看快捷方式属性:
这种快捷方式我见的比较少,他利用了 ftp 来执行系统命令,通过执行-s 参数执行 WeChatWin.dll
文件内的 ftp 命令。
查阅资料后,可以得知 ftp 有个特性,可以直接使用 !
执行系统命令,这我还是第一次知道,太冷门了(红队真狡猾啊),并且还可以使用 -s:<文件>
可以运行文件中的 ftp
命令,这里还使用了 -""s:<文件>
来绕过火绒,在 cmd 中执行命令时空白字符的双引号会被忽略。
有了这个基础,接下来我们看看 WeChatWin.dll
里是啥:
不出所料,使用了 ftp 的 !
来执行系统命令,start /b
代表以后台模式启动一个程序,分析得知,它使用了 pythonw.exe
来执行 main.pyw
, pythonw.exe
是 python
的无窗口版本,然后又打开了一个 word 文档来迷惑受害者,并且它还是加密的文档,正常人遇到加密的肯定想着寻找密码,可以拖延时间,其中 bye
用于结束 ftp 命令,避免出现黑窗口引起怀疑。
继续查看一下 main.pyw
:
导入了一个模块,同目录下还有一个 action.py
,是一个混淆的 python 脚本,猜测是在这里混淆的:
https://pyob.oxyry.com/ ,代码如下:
面对这种混淆的代码,实在是看着脑瓜子疼,于是使用 AI 来帮我们做一下还原,看看代码在做什么,有一说一,AI 对于还原混淆代码的能力还挺强的,以下是使用 ChatGPT
还原并加上注释的 python 代码:
可以看到脚本的内容主要是从存储桶中下载加密的 python 脚本再使用 base64 和 XOR 解密后再编译运行,同时还定义了一个重写了 __reduce__
方法的类,后续的 python 代码执行可能会利用反序列化来触发执行,尝试将 decoded_script
和
decoded_payload
进行打印:
最终利用反序列化触发执行 python
的远程分离加载器。
提取原始 shellcode
使用以下代码将远程下载的 shellcode 保存下来:
Shellcode 如下:
E8
开头,有点像 sgn
编码后的 shellcode,使用 x64dbg 调试:
可以看到有些指令不合法,很明显是加密了,单步调试发现它正在动态的解密,应该是经过 sgn
编码后 shellcode,特点是通常以 E8
开头,使用 call
指令作为入口,目的是调用一个函数来动态解密。
接着我需要 dump 原始的 shellcode,因此这里我尝试对 LoadlibraryA
进行断点,因为这个时候 shellcode 已经解密完成了,断点后点击运行并观察 shellcode 对应的内存:
这里断住了,可以发现内存的变化,可以看到有个显眼的 MZ
,经典 CS 马,将其 dump 出来:
使用 CobaltStrikeParser
解析 shellcode:
分析完毕!