今日最新!黑客如何在被黑机器上检测 shellcode
在上一篇文章中,我们谈到了 shellcode 是什么以及黑客如何使用它。在今天的文章中,你将学习如何在受感染的机器上检测shellcode。黑客使用隐藏攻击的技术编写shellcode。例如,典型的入侵检测系统 (IDS) 通常会扫描所有传入的网络流量以查找特定于shellcode的结构。
(资料图片仅供参考)
如果 IDS 找到这样的结构,则包含此签名的数据包在到达目的地之前就被销毁。但是,IDS 在这种情况下的弱点是,如果流量被加密,那么将无法识别它。现在你明白为什么加密如此有价值了吗?
如何检测shellcode
为了分析样本,我们需要一些工具:
·IDA Pro(带插件)
·OllyDbg
·PEiD(带有加密分析器)
1. 首先,打开PEiD并在那里加载我们的样本。但是,我们记得我们正在处理恶意软件代码中的密码学,所以让我们尝试运行KryptoANALyzer插件(必须在PEiD中预加载)。这就是我们所看到的:找到了签名。
PEiD程序中的文件分析结果
我们打开 IDA Pro 并在那里加载示例
在 IDA Pro 中显示字符串窗口
也许我们应该在搜索网络活动时碰碰运气?我们启动进程资源管理器,然后选择我们的恶意软件启动的进程,转到“属性”,单击字符串选项卡并并行启动Wireshark,在数据包分析窗口中,你可以找到一个 GET 请求。Process Explorer 实用程序的字符串选项卡上的数据与从Wireshark包中提取的数据相匹配。
在 Process Explorer 和Wireshark中比较字符串数据
让我们回到 IDA Pro 反汇编程序。在图表中,我们注意到奇怪的线条:@0x00401300 子例程以二进制形式加载某个资源并对某个值“;”应用 XOR 运算。在下一个屏幕截图中,这一点非常清晰可见。
来自 IDA Pro 的数据
下面是 IDA Pro 窗口的屏幕截图,其中使用 XOR 操作的加密指令以黄色突出显示。
带有使用 XOR 运算的加密指令的代码文本
我们有一个合乎逻辑的问题:什么密钥(密码)用于编码,它究竟编码了什么?记住我们之前发现的内容,我们可以得出结论,关键是";" 旨在解码包含 URL的字符串。
因此,我们已经确定了使用哪种加密算法以及它加密了哪些数据。是时候连接有助于我们解码的插件了。我们将使用 FindCrypt2、KryptoANALyzer和 IDA Entropy Plugin 签名搜索工具来确定其他编码机制。
KryptoANALyzer中带有样本解析结果的窗口
KANAL 插件使用字符串 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 中的字符找到了四个地址。你觉得它看起来像什么?是的,你想得对——这组字符是一个字母表,然后从中进行排列。 算法用于对其进行编码。下面是来自OllyDbg调试器的屏幕截图,说明了编码字符串。
OllyDbg中的 编码字符串
这是来自同一调试器的所有内容的屏幕截图,其中包含负责编码过程本身的指令。在代码的某处,有一个函数负责使用 算法解码信息,它位于 0x004010B1。
负责使用算法解码信息的函数,让我们看一下IDA Pro的图表中的这段代码,编码的关键特征以黄色突出显示,即:最大消息长度为12个字符。在算法的描述中, 的最大长度为 16 个字节。
在 IDA Pro 中查看代码
责任编辑:
标签: OllyDbg