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

Metasploit进阶:从set payload到generate命令的Shellcode生成与免杀实战 在渗透测试与漏洞利用开发中,Shellcode作为一段可执行的机器码,是实现远程控制、权限提升等目标的核心载荷。其工作原理是将特定功能的汇编指令序列注入目标进程内存并执行Shellcode的技术价值在于其高度定制化和隐蔽性,能够绕过传统边界防御,直接与攻击者建立通信或执行敏感操作。应用场景广泛,包括漏洞利用程序(Exploit)开发、恶意文档制作、无文件攻击以及红队评估中的载荷投递。本文聚焦Metasploit框架中强大的`generate`命令,它超越了基础的`set payload`,提供了对Shel 阅读详情

密码破解的利器——彩虹表(rainbow table)

确定 shellcode 依赖于哪些导入将使研究人员进一步了解其其余逻辑。不用动态分析shellcode,并且考虑到研究人员已经弄清楚了上面的哈希算法,研究人员可以自己构建一个彩虹表。

彩虹表是一个预先计算好的表,用于缓存加密哈希函数的输出,通常用于破解密码哈希。

以下 Python 代码段计算位于最常见系统位置的 DLL 导出的“Metasploit”哈希值。
在这里插入图片描述
例如,下面的PowerShell命令生成一个彩虹表,然后搜索下图中首先观察到的726774Ch哈希值。为了方便大家,研究人员发布了包含 239k 哈希值的 Rainbow.csv 版本。
在这里插入图片描述
如上所述,shellcode解析并调用的第一个导入是LoadLibraryA,它由32位和64位kernel32.dll导出。

执行流程分析

将导入解析排序后,理解剩余的代码变得更加容易。如下图所示,shellcode开始执行以下调用:

在㉗处LoadLibraryA确保ws3_32库加载,如果还没有加载,它将映射内存中的ws3_32.dll DLL,使shellcode能够进一步解析与Windows Socket 2技术相关的附加函数。

在㉙处,WSAStartup在 shellcode 的进程中启动套接字的使用。

WSASocketA 在㉙处创建一个新的套接字,这将是一个基于流(SOCK_STREAM)的IPv4套接字(AF_INET)。
在这里插入图片描述
套接字初始化的反汇编

创建套接字后,shellcode 继续调用 ㉝ 处的连接函数,并使用先前进入堆栈 (㉜) 的 sockaddr_in 结构。 sockaddr_in 结构包含从事件响应角度看的有价值的信息,例如协议(0x0200 是 AF_INET,又名 IPv4,小端)、端口(0x115c 是大端的默认 4444 Metasploit 端口)以及 C2 IPv4 地址㉛(0xc0a801ca 在大字节序中是 192.168.1.202)。
网络安全学习资料
如果连接失败,shellcode 最多重试 5 次(在 ㉞ 处定义的计数器在 ㉚ 处递减),之后它将使用 ExitProcess (㉟) 中止执行。
在这里插入图片描述
如果连接成功,shellcode 将创建一个新的 cmd 进程并将其所有的标准错误、输出和输入(㊱)连接到已建立的 C2 套接字。进程本身是通过 ㊲ 处的 CreateProcessA 调用启动的。
在这里插入图片描述
逆向shell

最后,当进程运行时,shellcode执行以下操作:

通过调用 WaitForSingleObject 在 ㊳ 处无限期等待远程 shell 终止;

终止后,使用 GetVersion 在 ㊴ 处识别 Windows 操作系统版本,并使用 ExitProcess 或 RtlExitUserThread 在 ㊵ 处退出;

网络安全Metasploit 生成Shellcode导入函数解析以及执行流程分析(1) 2021 年 4 月,研究人员深入分析了 Cobalt Strike渗透测试技术,以及它的一些签名规避技术是如何在检测技术下失效的。在本文中,我们将深入讨论Metasploit,这是一个可以与Cobalt Strike互操作的常用框架。 在本文中,我们将讨论以下主题: shellcode导入解析——Metasploit shellcode如何定位来自其他DLL的函数,以及我们如何预先计算这些值来解析来自其他有效载荷变体的任何导入; 逆向shell的执行流程——该过程非常简单; 破坏 Metasploit 阅读详情

相关推荐

网络安全】红蓝攻防:shellcode分析

在做红蓝攻防时,常常要用到cs、msf等工具,使用工具生成shellcode或可执行程序,那么小小的shellcode为何能做这么多事情,拿到shellcode后又该怎么分析。希望这篇文章能给大家带来答案,文章中不正确的地方请及时指出。

HBohan的博客 4367

网络安全Metasploit 生成Shellcode导入函数解析以及执行流程分析

由于shellcode是代码的一个基本版本(它没有预期的结构),操作系统加载程序无法帮助它解析这些导入函数,更严重的是,操作系统加载程序将无法“执行shellcode文件。这一观察结果与研究人员将在下一节中观察到的众所周知的常量一起,支持了研究人员的理论,即存储在 ebp 中的地址持有一个指向执行动态导入解析函数的指针。主循环按照内存中的顺序遍历模块(下图中的蓝色),而对于每个模块,第二个循环遍历导出函数,在所需的导入和可用的导出之间寻找匹配的哈希(下图中的红色)

qq_44005305的博客 324

Windows/Linux双平台Shellcode生成与加载实战指南

Shellcode作为一段可独立执行的机器码,是漏洞利用与安全测试中的核心技术组件。其原理在于绕过高级语言运行时依赖,直接与操作系统内核交互,实现精准控制。掌握Shellcode生成与加载技术,对于理解内存攻击、构建自定义安全工具链具有重要价值,广泛应用于渗透测试、漏洞研究及逆向工程等领域。本文聚焦于使用Metasploit Framework的msfvenom工具,详细解析跨平台Shellcode生成、编码与格式转换,并深入探讨通过C语言加载器在内存中分配可执行区域、复制并跳转执行Shellcode的完整

weixin_34195364的博客 317

白帽子学习——Metasploit渗透测试指南

黑客之渗透初学

weixin_43487532的博客 6760

认识ShellCode

shellcode的本质其实就是一段可以自主运行的代码。它没有任何文件结构,它不依赖任何编译环境,无法像exe一样双击运行,因此需要通过控制程序流程跳转到shellcode地址上去执行shellcode。exploit主要强调执行控制权,而shellcode更关注于有了控制权之后的功能。因此shellcode更像是exploit的载荷,往往对于不同漏洞来讲exploit是特殊的,而shellcode会具有一些通用性。可以看到生成一个payload_x64.c。

xlsj雪松的博客 1072

metasploit生成shellcode

Metasploit中,可以从msfconsole中生成payload。当你使用某个payload的时候,Metasploit可以添加generate,pry和reload命令。本节主要讲述generate命令的使用。 msf > use payload/windows/shell_bind_tcp msf payload(shell_bind_tcp) > help ...snip... Command Description ------- ---

JMasker的博客 2252

免杀基础 - shellcode loader 解析

shellcode loader 是一种用于加载和执行 shellcode 的机制。shellcode 通常是一段用于利用软件漏洞的机器码,在免杀场景中,合理地加载它可以帮助我们绕过一些安全检测机制。

m0_57836225的博客 962

使用Metasploit生成Shellcode进行网络安全攻击

Metasploit是一款功能强大的渗透测试工具,通过其生成Shellcode的功能,可以定制化地创建用于攻击目标系统的二进制代码。Metasploit是一款功能强大的渗透测试工具,它提供了丰富的攻击载荷和漏洞利用模块,其中包括生成Shellcode的功能。Shellcode是一段二进制代码,通常用于利用系统或应用程序的漏洞,并在目标系统上执行攻击者指定的操作。Metasploit提供了生成Shellcode的模块,可以根据目标系统和所需功能生成定制化的Shellcode,以满足渗透测试或攻击需求。

IiwEngine的博客 371

如何发现漏洞并且生成shellcode

创建 shellcode 和发现漏洞是网络安全和渗透测试领域的高级主题。这些活动通常涉及对目标系统的深入了解,包括其操作系统、应用程序和网络环境。以下是一个概述,介绍如何发现漏洞并生成 shellcode 的基本步骤和考虑因素。

远方雪的专栏 603

C/C++ 通用ShellCode的编写与调用

首先,我们的ShellCode代码需要自定位,因为我们的代码并不是一个完整的EXE可执行程序,他没有导入表无法定位到当前系统中每个函数的虚拟地址,所以我们直接获取到Kernel32.dll的基地址,里面的GetProcAddr这个函数,获取的方式有很多,第一种是暴力搜索,第二种通过遍历进程的TEB结构来实现,我们使用第二种方式尝试,一旦获取到该函数,就可以动态的调用任何想要的函数了。

微软技术分享 1万+

探索 ShellcodeExec:一款创新的Shellcode执行工具

探索 ShellcodeExec:一款创新的Shellcode执行工具 去发现同类优质开源项目:https://gitcode.com/ Shellcode 是一种二进制代码,通常用于利用软件漏洞进行攻击。在安全研究和逆向工程领域中,理解、创建和测试 Shellcode 是至关重要的技能。而今天我们要介绍的 是一个独特的开源工具,它使得 Shellcode 的编写、调试和执行变得更加简单。 项目...

gitblog_00062的博客 751

如何把shellcode转换成exe文件分析

【转】http://www.freebuf.com/articles/web/152879.html 前言在分析shellcode时,静态分析或者使用scdbg模拟分析都不够准确,如果转换成exe文件那么就可以用debugger或者IDA分析,会方便很多。样本分析这里以CVE-2013-3346的样本为例,使用peepdf分析样本:$pythonpeepdf.py-i...

weixin_34015336的博客 721

ShellCode原理以及编写

0x0 ShellCode编写注意事原理 1)不能使用字符串的直接偏移 即使你在C/C++代码中定义一个全局变量,一个取值为“Hello world”的字符串,或直接把该字符串作为参数传递给某个函数。但是,编译器会把字符串放置在一个特定的Section中(如.rdata或.data)。 2)不能确定函数的地址(如printf) 在shellcode中,我们却不能以逸待劳了。因为我们无法确定包含所需函数的DLL文件是否已经加载到内存。受ASLR(地址空间布局随机化)机制的影响,系统不会每次都把DLL文件加载

网络安全相关文章分享 3349

通用型ShellCode,加载指定DLL模块

利用通用型ShellCode加载指定Dll模块,并提取ShellCode字节码,调用ShellCode

逐天实验室 ( SCLB ) 4925

【网络资源学习笔记】ShellCode相关内容学习

个人shellcode相关网络资源学习记录

天在等我,菜鸟想飞 3174

执行shellcode的几种方式

首先写出汇编成功弹出计算器 #pragma comment(linker,"/section:.data,RWE") //data段可读写 #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //不显示窗口 #pragma comment(linker,"/INCREMENTAL:NO") //指...

qq_41683305的博客 5402
上一篇: 【网络安全】Metasploit 生成的 Shellcode 的导入函数解析以及执行流程分析(1)
下一篇: 常见的安全应用识别技术有哪些?
IT老涵
博客等级 码龄5年 4555粉丝 414原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值