技术分享丨​powershell shellcode 样本分析

  XCTF联赛小秘       2020-11-26 14:57:52 1069  0


一. 起源


前段时间找了一些样本分析的工具,有时候用起来不是很顺手,当我找到PCsXcetra发布的工具时,感觉比较顺手些。

我在GitHub上同时也找到了PCsXcetra对使用他的工具对样本的分析是如何事半功倍的。本文将大体讲述相关样本分析工具而本文使用到的工具均为PCsXcetra的所在Derbycon 2019大会发布的相关工具。
https://github.com/PCsXcetra/DerbyCon-2019Files

接下来让我们看看PCsXcetra他是如何分析和合理使用他的工具的。

二. 样本1


接下来我们看一下这个样本在2018年11月份的powershell样本。首先我们可以清楚的看到整段代码为powershell 解码base64执行。
解码

代码整理后发现有一段还是有base64字符串

之后,我们得到一个Powershell脚本Gzip流。解压缩后,我们看到了这一点。

代码整理后,以及看到base64代码段。

在这里,我们看到一个base64编码的字符串。这是我们编码的shellcode。它将被加载到虚拟内存中并运行。确切的实现可能会有所不同,但这是我最常看到的。
那把我们带到了我们想要的shellcode。现在我们可以将base64解码为十六进制。
使用PCsXcetra的 base64encode 转换。

这里发现没有任何信息。
尝试CyberChef 并查看程序集

好吧,这似乎也没有太大帮助。
那么现在怎么办。
新工具。

这里选择hex ,得到信息为  一个IP地址和端口

同样我们这里可以使用选择bas64选项,得出来的结果和上面一样


三. 样本2

该样本在最初是由Paul Melson(PaulM @pmelson)ScumBots @ScumBots机器人在pastebin上发现的,并上传到Virus Total。
当我们第一次查看此脚本时,我们会注意到的是,它以一个非常大base64字符串。第二件事是将它与字符串“ +”分开,以使自动base64解码器混乱,后者无法处理将字符串放回并先删除它们的情况。

清理完base64字符串并进行base64解码后,我们看到了这一点。
我们可以看到其中嵌入了base64编码的可执行文件。让我们先提取并快速浏览一下。
看来脚本将加载此Dll,这是AMSI Bypass方法,然后将加载shellcode。

现在,让我们仔细看看这个shellcode。它不是以常规的“ 0xFC”开头。

这很难看懂,其中发生了什么,那么我们用一款格式化工具看看,所以让我们对其进行一些格式化以更好地去查看代码。

我们可以看到该shellcode已被拆分为多个数组,如图所示

并将在运行时重新组合shellcode。

现在已经重新组合好shellcode了,我们现在可以将其输入到我们的工具中以获取IP/URL。

还有API调用。因此它也将帮助您更深入地了解调用的内容,从而可能有助于更好地了解其功能,而不仅仅是在沙盒中运行可能显示的IP或Url。


四. 样本3

word宏病毒带了一些十六进制的混淆,我们可以通过一些工具合理的转换为我们能理解的字符串内容,我们可以使用下面这款工具对其进行转换
https://github.com/PCsXcetra/SwapAdjHexCharDecode

样本下载地址
https://app.any.run/tasks/bbfccd29-2c3b-4a71-8713-63285f610029/#
在以上图片中呢 我们不难看出 一些C#的代码、powershell的代码以及对虚拟机相关的动态监测,以及对AMSI的修补

五. 总结

合理使用工具,用来应对相关比较特殊的环境和涉密文件处理,结合自我本身的基础更加快捷的进行相关应急分析的工作。


参考链接:

https://pcsxcetrasupport3.wordpress.com/2019/07/07/those-pesky-powershell-shellcodes-and-how-to-understand-them/

请先登录
+1 已点过赞
0
分享到: