【网络安全】Metasploit 生成的 Shellcode 的导入函数解析以及执行流程分析(1)

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

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寄存器中。要理解这个函数的位置,我们需要退后一步并了解调用指令的操作方式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值