
简介面向内网渗透测试与红队评估场景这套辅助工具集将常用服务爆破、端口扫描、Web指纹识别与多种常见服务的一键利用整合在一起适配从信息收集到横向移动的常见环节。压缩包共101个文件体积仅375KB以Go语言源码为主88个附带XML配置、TXT说明、Markdown文档及模块依赖文件源码结构清晰便于阅读二次开发。工具覆盖RDP、SSH、Redis、PostgreSQL、MongoDB、MSSQL、MySQL、WinRM等服务爆破并提供SSH全交互登录、MSSQL提权、Redis利用等功能能显著提升内网渗透效率。目前已有72人学习下载适合安全爱好者、蓝队人员与红队工程师参考其实现思路或直接在此基础上扩展自己的内网渗透武器库。1. 内网渗透辅助工具集先回答“敢不敢用”再谈怎么用「内网渗透辅助工具集.zip」这个标题我第一反应不是“解压就能用”而是“敢不敢解压”。项目一开始同事递过来一个压缩包几百 MB里面几十个 exe、py、ps1 和一堆说明文档表面看是把内网阶段常用的扫描、提权、凭证获取、横向移动工具凑到一起。这类工具集存在的意义很现实目标内网通常与外网隔离工具临时一份份下载不现实进场之后每一次外联都意味着暴露风险提前按场景打包进场就能干活。但它不是解锁按钮而是一个需要先验货的供应链入口。这篇文章就按「拆包验货 → 隔离部署 → 分阶段组合调用 → 自建可追溯基线」的顺序讲清楚怎么把这个 zip 用成自己的东西而不是让一个压缩包把你变成别人的战利品。2. 工具集里装的都是什么五类核心工具与选型逻辑一个合格的工具集不是软件仓库的随机拷贝而是按攻防流程组织过的。内网渗透的流程收敛得很固定先知道「网段里有什么」再确定「哪台值得深入」在已控机器上拿凭证然后根据域内关系选横向通道。工具集就是把每一步里最常用的工具固定成清单避免进场之后现找。同时能被塞进工具集的东西本身有一套选型逻辑。2.1 五类核心工具与它们在内网里的分工类别代表工具负责的阶段备注存活与端口扫描fscan、nmap、masscan摸清网段拓扑优先用单文件静态编译版服务识别与漏洞探测nmap 脚本、fscan vuln 模块确认重点目标Web 与 SMB 服务版本比对凭证获取与哈希复用mimikatz、impacket-secretsdump从内存与 NTDS.dit 取凭证只能在已获权限的主机上运行域内路径分析BloodHound、SharpHound找从当前节点到域控的路径结果导入 Neo4j 分析横向移动与批量执行impacket-psexec、wmiexec、atexec在目标之间移动关键参数是认证方式与执行通道表格里的五类覆盖了内网渗透从落地到横向的完整链路。需要强调一点系统自带命令能做的事不应该靠工具完成。工具集的价值在于补齐原生命令做不到的批量化和结果结构化而不是把 net view 换成第三方同名工具。进场之后先想「这一步能不能用系统命令」答案是不能再从工具集里挑对应工具。2.1.1 为什么扫描类工具偏爱单文件静态编译fscan 用 Go 编写约定俗成的打包方式是静态编译单个 exe 走天下不依赖 .NET 或 VC 运行库。这类工具常见的构建命令长这样CGO_ENABLED0 go build -ldflags-s -w -H windowsgui -trimpath -o fscan.exe .逻辑说明CGO_ENABLED0声明编译产物不链接 C 库产物是纯静态的-ldflags里-s去掉符号表、-w去掉 DWARF 调试信息、-H windowsgui在 Windows 下隐藏控制台窗口避免在目标机器上弹出黑框-trimpath让二进制里不残留本机构建路径避免反向泄露编译环境-o指定输出文件名。处理过的单文件体积小、依赖少在目标内网的 Windows Server 2008 到 Windows Server 2022 上都能直接丢进去跑这是它能进工具集的硬理由。拿到工具集时看到大几十 MB、没有任何安装界面的单文件 exe第一判断就是这种静态编译产物。2.1.2 凭证与域内分析工具版本敏感mimikatz 和 BloodHound 对版本极其敏感。旧版 mimikatz 在打了补丁的 Windows 10 上经常拿不到 logonpasswordsSharpHound 采集器要与后端分析版本配对使用旧采集器喂新版 Neo4j 经常解析失败。工具集里最容易出问题的就是这两类验货时优先验它们。2.2 工具被打进工具集的选型标准优先官方 Release 或源码自编译不要拿论坛二手包静态编译、无运行时依赖优先于带安装程序的能在命令行下安静执行输出可重定向到文件有明确版本号能在包里找到 manifest 或 README以上四条是底线。官方来源保证不会多带一份后门静态编译保证受限内网里跑得起来输出可重定向保证自动化收集时不会被交互式界面卡住版本可溯源保证排错时能回答「这个行为是哪一版工具干的」。第 3 章要做的所有验货动作都是围绕这四条展开的。3. 拆包先拆雷哈希校验、签名查验与隔离部署工具包在传输过程中经过的跳板越多被替换的可能性越大常规投毒方式是保持文件名不变把里面换成同名加壳木马。所以第一步不是解压而是先做静态校验。这一章的操作全部在隔离环境里完成不要直接拿到目标内网机器上操作。3.1 解压前先查包内清单与哈希3.1.1 用 Python 内置模块查清单python3 -m zipfile -l inner_tools.zip | head -60 python3 -m zipfile -l inner_tools.zip | wc -l逻辑说明第一行只列压缩包内文件清单不落盘避免一解压就触发可疑行为head -60控制输出量先看文件命名是否干净。第二行统计总条目数如果包里塞了几万个小文件第一反应不应该是解压而是怀疑是不是压缩炸弹。参数说明-l是列出清单的简写想同时看原始大小可以改用unzip -l输出更完整。Python 的 zipfile 模块遇到加密包会直接报错此时先找来源方要密码不要盲目跑 zip 密码破解——工具集不是密码靶场暴力破解一份内部工具包大概率颗粒无收还有可能触发目标环境的告警。3.1.2 哈希留痕sha256sum inner_tools.zip逻辑说明执行完把哈希粘到任务记录里它代表「我收到并承认的包就是这一个内容」。后续任何来源给到官方哈希或另一条渠道下载到同名文件直接比对不一致立即停止使用。注意sha256sum算的是整个 zip 的哈希不是内部文件的如果来源方给的是逐文件哈希那就先解压再按文件验。没有参考哈希时至少把全包哈希存档后续排错时能确认问题不是出在传输环节。3.2 Windows 上解压到隔离目录并查签名3.2.1 用 PowerShell 解压到独立目录Expand-Archive -Path .\inner_tools.zip -DestinationPath C:\tools_isolated -Force Get-FileHash .\inner_tools.zip -Algorithm SHA256逻辑说明-DestinationPath指定到专用目录而不是桌面-Force覆盖同名文件前提是你已经确认这个目录里没有需要保留的旧文件。Get-FileHash与前面的sha256sum结果应当一致这是跨平台二次确认。从互联网下载的 zip 会带 Zone.Identifier 标记解压后部分文件会被 Windows 安全策略直接拦截后续运行任何工具之前要先解除这个状态并确认工具来源不要在一个隔离环境下反复测同一批文件。3.2.2 用 sigcheck 检查签名sigcheck.exe -a -u -e C:\tools_isolated逻辑说明sigcheck 是 Sysinternals 的命令行工具-a显示全部信息-u只列出无签名或签名状态异常的文件-e只看可执行文件。健康的工具集里来自官方仓库的工具多数带微软或供应商签名fscan 这类社区自编译的常常没有签名这不代表有问题但需要单独做哈希比对。看到带有效签名的工具还要确认签名证书的归属组织与应用名一致防止白加黑方式挂载恶意载荷。3.2.3 检查 PE 依赖dumpbin /dependents C:\tools_isolated\fscan.exe逻辑说明dumpbin 随 Visual Studio Build Tools 提供。看输出里的 DLL 列表如果一个大几十 MB 的单文件工具依赖一堆不常见 DLL说明它根本不是静态编译可能是动态链接打包或加壳后的结果。正常的静态 Go 程序依赖列表很短往往只有 KERNEL32.dll 和少量系统 DLL。依赖检查是识别加壳和投毒最直观的一步。3.3 拆包后第一轮健康检查对照表检查项命令通过标准全包哈希sha256sum / Get-FileHash与来源方提供值一致包内清单python3 -m zipfile -l文件名规范、无 .scr/.lnk 混入可执行文件签名sigcheck -a -u -e已知厂商签名或哈希可追溯依赖列表dumpbin /dependents仅系统 DLL无意外依赖查杀复检隔离机整包扫描高危项人工判断后再用常见误用是跳过前三步直接在目标内网机器上解压运行结果不是被安全策略拦截就是把一个来源不明的包带进了生产网。规范做法是在隔离开发机上完成全部验证验证通过后重新打包打包前清掉结果目录和临时文件这样拿进内网的才是干净版本。整个过程没有绕过任何东西的意图只是把工具集变成可复现、可交代的测试物料。4. 内网场景里的组合调用从存活探测到横向移动提示以下命令面向已获得授权、且有明确测试范围的渗透测试与红队场景。确认边界后再执行所有输出按项目要求留存。一个典型的工具集调用顺序不是「把里面工具跑一遍」而是四个阶段递进快扫圈定、定向确认、凭证获取、横向移动。四个阶段对应工具集里不同的包下面按顺序拆开讲。4.1 第一阶段用 fscan 快速圈定存活主机./fscan -h 192.168.10.0/24 -p 1-65535 -o fscan_full.txt ./fscan -h 192.168.10.0/24 -o fscan_quick.txt逻辑说明第一行是全端口扫描慢但完整适合目标网段不大、时间窗口充足的场景第二行不加-p只扫 fscan 内置的常用端口集合包括 22、80、443、445、3389、5985、6379、1433 等几分钟就能把网段里活着且开了重点服务的机器数出来。参数说明-h接受目标 IP、网段或文件列表-o指定输出文件-np跳过 ping 存活探测适合禁 ping 的网络-sn只做探测不做端口扫描适合先画网络拓扑。实际进场我一般先跑快速版再对端口开放多的机器单独补全端口扫描避免第一轮就把时间耗在全端口上。4.2 第二阶段用 nmap 与系统命令做定向确认nmap -sV -sC -p 445,139,3389,5985,443,80 192.168.10.11 -oN target_11.nmap逻辑说明对 fscan 圈出的重点主机做服务版本探测和默认脚本扫描-sV做版本探测-sC启用常用 NSE 脚本最终确认服务真实身份和补丁状态-oN输出为人类可读格式。内网环境下端口扫描结果和实际服务经常对不上比如 443 跑的不是 HTTPS 而是自研协议这一步能把误判压下来。同时我会补三条系统原生命令net view /domain net group Domain Admins /domain nltest /dclist:corp.local逻辑说明三条命令分别列出信任域、域管理员组成员与域控制器列表全部是 Windows 自带工具不依赖工具集也能跑。工具集在这里的角色是补充批量化和输出格式化能力比如把多台机器的 net view 结果汇总成表格而不是替代原有命令因此测试时要先确保这台机器的原生网络命令可用再考虑上工具。4.3 第三阶段凭证获取与哈希复用拿到一台机器管理员权限之后凭证获取是内网提速的关键一步mimikatz.exe privilege::debug sekurlsa::logonpasswords exit逻辑说明privilege::debug先打开调试权限sekurlsa::logonpasswords从 lsass 内存读取当前会话中的明文口令或 NTLM 哈希exit正常退出。这是一个高权限操作只应在已授权的机器上执行。拿到 NTLM 哈希后的正确动作是复用而不是急着离线破解impacket-secretsdump -just-dc-ntlm corp.local/admin192.168.10.1逻辑说明-just-dc-ntlm让 secretsdump 只从域控提取 NTLM 哈希避免把系统证书等无关数据一并拖回。认证参数格式为域名/用户名目标IP回车后交互输入密码或者用-hashes直接提供已抓到的哈希省一次口令落地。这一步的产物直接喂给第四阶段做横向。4.4 第四阶段用 impacket 系完成横向移动impacket-psexec -hashes :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 corp.local/admin192.168.10.6 impacket-wmiexec -hashes :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 corp.local/admin192.168.10.7 impacket-atexec -hashes :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 corp.local/admin192.168.10.8 whoami逻辑说明三个工具的认证参数格式一致都是-hashes LM:NT 域/用户目标IP冒号前传 LM 哈希不需要时留空冒号后传 NT 哈希。差异在执行通道psexec 依赖 ADMIN$ 共享并创建系统服务动静最大但交互最完整wmiexec 走 WMI 远程执行不落盘文件但依赖 135 端口可达atexec 用计划任务执行单条命令只适合「跑一条命令确认结果」的场景。混用不同版本号的 impacket 工具容易出兼容问题工具集里这三个保持同版本。阶段工具关键参数典型产物快扫fscan-h 网段、-o 输出存活主机、开放端口、弱口令命中定向确认nmap-sV -sC -p 端口服务版本、漏洞线索域信息收集net、nltest/domain、/dclist域结构、域控制器列表凭证获取mimikatz、secretsdumpsekurlsa、-just-dc-ntlmNTLM 哈希与明文口令横向移动wmiexec、psexec、atexec-hashes 哈希 域/用户IP目标权限、执行结果工具集里如果带了 BloodHound它的调用顺序通常在凭证获取之后把 SharpHound 采集的数据导入 Neo4j用图查询找「从当前节点到域控的最短路径」再决定横向往哪打。这条路径往往是纯凭经验看不出来的。具体的 Cypher 查询语句要对应你本地的 BloodHound 版本去查文档不同版本语法不通用这也是工具集必须保留版本信息的直观原因。5. 自建工具集哈希基线、版本归档与增量更新收到一个顺手的工具集之后常见做法是收敛成自己的工具集把版本固定下来建立哈希基线。5.1 用 MANIFEST 把工具集变成可追溯基线cd /opt/redteam-kit find . -type f \( -name *.exe -o -name *.ps1 -o -name *.py -o -name *.sh \) -print0 | xargs -0 sha256sum MANIFEST.sha256 cat MANIFEST.sha256逻辑说明find 按扩展名挑选工具集内的可执行文件-print0配合 xargs 的-0是为了处理文件名里的空格逐个计算 SHA256 后写入 MANIFEST.sha256。这份清单记录的是逐文件哈希比单个 zip 的整体哈希更细某一台机器上的某个文件被替换diff 能立刻指出具体是哪个文件出了问题。5.2 用校验命令验证当前目录完整性sha256sum -c MANIFEST.sha256 --quiet逻辑说明-c按清单逐文件校验--quiet只输出不匹配项。正常时无输出出现 FAILED 就代表本机文件与基线不一致。把这个校验放进每次打包前的流程确认基线没有漂移再生成发布包。5.3 打包时排除运行痕迹zip -r redteam_kit_v1.2_$(date %Y%m%d).zip tools/ configs/ -x tools/runtime/* -x */logs/* -x *.tmp逻辑说明-x依次排除运行时目录、日志目录和临时文件避免把上次任务的目标 IP、凭据和扫描结果带进新包包名里的日期和版本号方便后续回溯。版本归档目录里放一份 CHANGELOG记录每个工具的来源版本和替换原因这样团队成员拿到包时能回答「为什么这里用的是旧版 mimikatz」这一类问题。本文还有配套的精品资源点击获取