黑客如何在被黑机器上检测 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的字符串。

因此,我们已经确定了使用哪种加密算法以及它加密了哪些数据。是时候连接有助于我们解码的插件了。我们将使用 FindCrypt2KryptoANALyzer IDA Entropy Plugin 签名搜索工具来确定其他编码机制。

KryptoANALyzer中带有样本解析结果的窗口

KANAL 插件使用字符串 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 中的字符找到了四个地址。你觉得它看起来像什么?是的,你想得对——这组字符是一个字母表,然后从中进行排列。Base64 算法用于对其进行编码。下面是来自OllyDbg调试器的屏幕截图,说明了编码字符串。

OllyDbg中的 Base64 编码字符串

这是来自同一调试器的所有内容的屏幕截图,其中包含负责编码过程本身的指令。在代码的某处,有一个函数负责使用 Base64 算法解码信息,它位于 0x004010B1

负责使用Base64算法解码信息的函数让我们看一下IDA Pro的图表中的这段代码,编码的关键特征以黄色突出显示,即:最大消息长度为12个字符。在算法的描述中,Base64 的最大长度为 16 字节。

IDA Pro 中查看代码

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章