2021 年 4 月,研究人员深入分析了 Cobalt Strike渗透测试技术,以及它的一些签名规避技术是如何在检测技术下失效的。在本文中,我们将深入讨论Metasploit,这是一个可以与Cobalt Strike互操作的常用框架。
在本文中,我们将讨论以下主题:
shellcode的导入解析——Metasploit shellcode如何定位来自其他DLL的函数,以及我们如何预先计算这些值来解析来自其他有效载荷变体的任何导入;
逆向shell的执行流程——该过程非常简单;
破坏 Metasploit 导入解析——一种非侵入性欺骗技术(不涉及钩子),让 Metasploit 以高可信度通知防病毒软件 (AV)。
对于这个分析,研究人员在 v6.0.30-dev 版本下使用 Metasploit 生成了研究人员自己的 shellcode。使用以下命令生成的恶意样本的结果为 3792f355d1266459ed7c5615dac62c3a5aa63cf9e2c3c0f4ba036e6728763903 的 SHA256 哈希值,并且可以在 VirusTotal 上找到,供愿意自己尝试的读者使用。
msfvenom -p windows/shell_reverse_tcp -a x86 > shellcode.vir
在整个分析过程中,我们重新命名了函数、变量和偏移量,以反映它们的作用并提高清晰度。
初步分析
在本节中,研究人员将概述确定下一步分析(导入解析和执行流分析)所遵循的初始逻辑。
虽然典型的可执行文件包含一个或多个入口点(导出的函数、TLS 回调等),但 shellcode 可以被视为最原始的代码格式,其中初始执行从第一个字节开始。
从初始字节分析生成的 shellcode 概述了两个操作:
从分析的角度来看,①处的第一条指令可以忽略。cld操作清除方向标志,确保字符串数据是向前读取而不是向后读取(例如:cmd与dmc的区别)。② 处的第二个调用操作将执行转移到研究人员命名为 Main 的函数中,该函数将包含 shellcode 的主要逻辑。

调用 Main 函数的反汇编 shellcode
在Main函数中,我们观察到额外的调用,比如下图中突出显示的四个调用(③、④、⑤和⑥)。这些调用针对一个尚未识别的函数,其地址存储在ebp寄存器中。要理解这个函数的位置,我们需要退后一步并了解调用指令的操作方式。

本文深入探讨了Metasploit框架生成的Shellcode如何解析导入函数以及执行流程。通过分析,揭示了Shellcode如何动态解析导入,尤其是通过哈希函数匹配DLL和导出函数。此外,还介绍了执行流程的关键步骤,包括调用Main函数、动态导入解析、从导入哈希到函数的转换。文章适合对网络安全和逆向工程感兴趣的读者。
最低0.47元/天 解锁文章
333

被折叠的 条评论
为什么被折叠?



