内网渗透测试工具包:从ZIP压缩到信息收集的实战指南

发布时间:2026/8/29 15:09:35
内网渗透测试工具包:从ZIP压缩到信息收集的实战指南 简介内网渗透测试是评估企业内网安全性的核心手段而一套组织良好的工具包往往是测试效率的关键。ZIP作为跨平台兼容性最好的压缩格式常被用于工具分发但加密、完整性校验和伪加密等问题也常常导致工具无法正常解压或运行。理解ZIP格式的底层原理如EOCD记录、全局方式位标记以及ZipCrypto与AES-256加密差异能帮助测试者快速排查解压故障。在工具包设计上应围绕信息收集、权限提升、横向移动等阶段进行目录化组织并优先选择免杀性高、静态编译且文档齐全的工具。实际渗透中通过nmap、fscan等工具进行网段发现、端口识别和共享资源枚举再结合对内网打印机等冷门资产的扫描往往能获得意想不到的突破路径。本文从ZIP工具包的设计谈起完整梳理内网信息收集的工程化流程为搭建自己的测试工具箱提供可落地的参考。 经常有人问我做内网渗透测试到底需要准备哪些东西是不是有一份“万能工具包”就能打遍天下我入行那会儿也迷信过各种整合包GitHub 上看到一个“内网渗透必备工具.zip”就赶紧下载解压密码、压缩包损坏、缺 DLL、杀软误报踩过的坑比吃过的盐还多。后来自己组工具包、做环境才慢慢捋清楚一件事所谓“必备工具”不是一堆 exe 的集合而是一整套围绕信息收集、权限维持、横向移动、痕迹清理的思路落地。这篇文章我就从“一个 zip 压缩包”讲起聊聊内网渗透测试工具包背后的设计逻辑、ZIP 文件在分发和使用时那些反直觉的坑以及一套目前实测下来比较稳的内网信息收集流程。适合刚接触内网渗透、想系统搭建自己测试工具箱的读者也适合那些被各种“绿色版工具包”整到怀疑人生的老哥们。1. 工具包的整体设计思路为什么是 zip为什么要有体系1.1 一个压缩包里的“战场”内网渗透测试和外围打点最大的区别在于你一旦进了内网面对的就不再是单一目标而是一张复杂的网络。DNS、DHCP、域控、文件服务器、打印服务器、数据库、运维跳板机每一台都可能成为跳板或终点。所以工具包不能是“一堆工具的堆砌”而是按攻击链来组织的信息收集阶段需要端口扫描、服务识别、漏洞探测、共享资源枚举。权限提升阶段需要内核漏洞利用、服务弱配置检测、密码抓取、令牌窃取。横向移动阶段需要远程执行、哈希传递、票据伪造、内网代理转发。权限维持阶段需要后门植入、计划任务、注册表自启动、启动项清理。最开始我把这些工具全塞进一个 zip解压后目录结构是平的每次要用都得现找。后来我把工具按01-信息收集、02-权限提升、03-横向移动、04-权限维持分目录存放每个目录里再放一个README.md记录工具用途、使用场景、常见参数和坑。这个习惯帮了我大忙——尤其是隔了几个月重新用某个工具时README 里的备注比官网文档还管用。1.2 工具选型的三个原则免杀、静态、文档全工具选型我踩过不少坑总结下来就是三个原则第一是免杀能力优先。一个工具本事再大一落地就被杀软查杀一点用没有。所以我在选工具时会优先考虑那些有源码、可自行编译、或本身就有较强免杀思路的项目。但这里要特别强调所谓的“免杀”不等于让你去做恶意攻击而是在授权测试中确保工具能正常驻留并完成测试任务。第二是尽量选择静态编译版本。内网环境千奇百怪目标机器可能没有安装 VC 运行库、.NET Framework 版本很老、PowerShell 被限制执行策略。静态编译的工具依赖更少部署更方便。比如我在工具包中常备的各类扫描器和代理工具优先找static编译的 Linux 版本和 Windows 的 standalone exe。第三是文档要全。我在选工具时会先看它的 README 和 Wiki如果文档连常见参数解释都没有哪怕功能再强也不碰。因为内网渗透测试是分秒必争的你不可能在目标机器上临时去翻文档。还有一点就是工具包要版本化。我会给每个工具标注版本号和日期定期更新。旧版本有时候反而比新版本好用比如某些工具新版本引入了更强的流量特征保留历史版本在排查问题时会很有用。1.3 为什么用 zip 来分发压缩率、传输便利、但也带来隐患选择 zip 作为工具包的封装格式主要是因为它兼容性最好Windows 自带资源管理器就能解压Linux 下用unzip一行搞定macOS 也能直接双击解压。相比 7z、tar.gzzip 在“通用性”上几乎没有对手。而且 zip 支持传统 ZipCrypto 和 AES-256 加密可以用来给工具包加上一层访问控制。但 zip 的隐患也很明显加密的 zip 更容易引起安全软件的警觉、压缩包内容容易在解压时释放恶意文件这就是为什么杀软经常直接报毒、以及文件损坏时恢复难度大。所以现在我做工具包分发时不再采用单一的加密 zip而是用“明文 zip 独立 SHA256 校验文件”的方式既保证了完整性又不会因为加密触发不必要的告警。2. 一个 ZIP 文件里的门道解压、加密、伪加密与完整性校验2.1 file is not a zip file最常见也最容易被忽视的问题网上很多工具包下载下来一解压就报file is not a zip file。这个报错我最早见的时候也一脸懵后来排查多了总结出几个高频原因原因一文件没下载完整。下载中断、浏览器缓存出错、网盘限速导致的 truncated file是最常见的情况。解决办法很简单比对 SHA256 或文件大小或者直接重新下载。原因二改了后缀名的冒牌货。有些下载站为了规避审查会把一个 RAR 或 7z 文件直接改成.zip后缀。用file命令看一眼真实类型就知道file suspicious.zip # 输出suspicious.zip: RAR archive data, v1.4如果输出不是Zip archive data说明后缀名是假的改成真实格式再解压就行。原因三文件被加密壳或下载工具二次封装。某些下载器会给文件加一层自定义头导致标准解压工具识别不了。这种情况建议换浏览器直接下载或者用binwalk看文件结构binwalk suspicious.zip # 如果显示 Zip 数据段在偏移量 0x1000 处说明前面有自定义头2.2 非标准 zip文件分割、全局方式位标记和 EOCD 失踪报错invalid zip archive: could not find eocd的原理很简单zip 格式要求文件末尾有一个 End of Central Directory RecordEOCD也就是中央目录的结束标记。如果找不到这个标记说明文件要么被截断、要么被拼接、要么根本不是有效的 zip。这里有个经典场景网上下载了一个分卷压缩包比如xxx.z01和xxx.zip放在一起结果双击xxx.zip提示 EOCD 找不到。原因是你把分卷里的最后一个文件单独拿出来解压了或者分卷下载不完整。正确的做法是把所有分卷放在同一目录下然后从最后一个分卷或主文件开始解压。如果是用命令行Linux 下可以这样zip -s 0 split.zip --out merged.zip unzip merged.zip-s 0表示把分卷合并成单一 zip然后再正常解压。还有一个容易被忽视的细节zip 的全局方式位标记general purpose bit flag。这个标记位控制着文件名是否使用 UTF-8 编码、是否加密、是否使用数据描述符等。有些压缩工具生成的 zip 文件全局方式位标记很特殊导致某些解压工具尤其是老版本的unzip不认。解决办法是换用7-Zip或python的zipfile模块来解压这两个对非标准 zip 的兼容性更好import zipfile with zipfile.ZipFile(suspicious.zip, r) as z: z.extractall(./output)2.3 zip 密码移除与 ZIP 加密机制不是所有“解密”都叫破解“zip 密码移除”是搜索引擎里特别多人在找的东西。实际工作中你拿到一个加密的 zip需要分情况处理如果你知道部分密码信息比如记得前几位或后几位可以用hashcat的 mask attack 来快速缩小范围。如果完全不知道密码就要看加密方式是传统 ZipCrypto 还是 AES-256。ZipCrypto有个著名的已知明文攻击known-plaintext attack漏洞。只要你拥有压缩包内任意一个文件的明文哪怕只有 12 字节就能快速还原出加密密钥从而解开整个压缩包。工具是bkcrackGitHub 上的开源项目用法大致是# 先用 zip 把明文文件打包成 zip压缩方式需要与目标一致 zip plain.zip plainfile.txt # 然后利用已知明文恢复密钥 bkcrack -C encrypted.zip -c encrypted_file.txt -P plain.zip -p plainfile.txt # 恢复密钥后重新生成可解压的 zip bkcrack -C encrypted.zip -k key1 key2 key3 -D decrypted.zip而AES-256加密的 zip 目前没有类似的已知明文攻击只能靠暴力破解或字典攻击速度取决于密码复杂度。hashcat支持 ZIP2John 生成的 hash可以用 GPU 加速跑。注意这里讲的都是面向合法授权的渗透测试和自身数据恢复场景。拿到一个 zip 去破解别人加密压缩包严格来说需要确认你有没有权限这么做否则可能涉及法律问题。(这个刚才那段有点教科书化了其实我想表达的是——工具是中性的用在哪、怎么用责任在自己。)2.4 解压后工具被杀软查杀这是常态但要会区分这是个没法回避的问题内网渗透工具包解压后大概率会被杀毒软件查杀一部分。这里要区分两种情况一是工具本身确实被某些杀软“启发式查杀”因为它的行为特征如进程注入、远程线程创建、键盘记录跟恶意软件很像。这种情况在授权测试中很常见你可以将测试环境加入白名单、或者使用已经过免杀处理的版本。二是压缩包中被人塞了真正的恶意程序。网上很多“整合包”会夹带私货在工具目录里放一个看似人畜无害的README.exe或者“必装运行库.exe”实际上是要偷你的凭据。所以拿到任何一个工具包第一件事不是解压而是先看文件列表查每个文件的 hash确认没有可疑来源。我的习惯是先解压到沙箱环境我一般用 Windows Sandbox 或虚拟机。在沙箱里逐个执行 exe观察网络连接和文件行为。确认干净后才放进正式的工具库。3. 内网信息收集实战从网段发现到打印机扫描3.1 网段发现别急着上大扫描器进入内网后第一件事不是直接扔一堆大扫描器上去而是先搞清楚自己在哪目标网络大概是什么拓扑。盲目的全段扫描很容易触发 IDS/IPS 告警在授权测试里也是有风险的操作。我最常用的第一步是“存活探测 基础指纹”# Linux 下用 nmap 做 ping 扫描找出存活主机 nmap -sn 192.168.1.0/24 # Windows 下用系统自带的 arp 命令快速看本网段活跃主机 arp -anmap -sn的扫描流量相对小而且默认只发 ICMP 和 TCP 80/443 探测隐蔽性比全端口扫描好很多。但要注意如果内网机器都配置了禁 ping-sn的结果可能不准这时可以加-PS22,80,443,3389或者-PA强制用 TCP ACK 探测。3.2 端口扫描与服务识别并发别拉太高找到存活主机后就要做端口扫描和服务识别。这里我有两个原则第一是全端口扫描放晚上。在内网做全端口扫描-p-是非常耗时的而且流量特征明显。我会把它放在晚上跑或者用--min-rate把速率压到 500 包/秒以下避免产生太多告警日志。第二是服务识别用版本探测。nmap -sV的版本探测能告诉我们目标机器开放的具体服务版本这对后续找漏洞至关重要。比如同样是 445 端口Windows 10 和 Windows Server 2003 的利用方式完全不同。# 快速端口扫描 服务版本识别 nmap -sS -sV -p 1-10000 192.168.1.10 # 如果为了隐蔽可以用 TCP connect 扫描-sT nmap -sT -sV -p 1-10000 192.168.1.10这里说句题外话内网渗透测试里我最常用的不只是 nmap还有fscan。fscan 是一款内网综合扫描工具一条命令就能跑完端口扫描、常见弱口令检测、Web 漏洞探测、未授权访问检测等。在时间紧、目标多的情况下fscan 的效率比手动组合 nmap hydra 高得多# fscan 基本用法 fscan -h 192.168.1.0/24 # 指定端口和爆破 fscan -h 192.168.1.0/24 -p 445,3389,22 -m smb,rdp,ssh但 fscan 也有缺点流量特征明显、容易被杀软查杀、在大型内网中快速扫描可能会引发告警。所以我的做法是fscan 用于快速排查nmap 用于重点目标的精细化扫描。3.3 内网打印机扫描一个绕不开的“冷门资产”热词里有一条“渗透测试扫描内网打印机”这让我想起不少真实案例。打印机在内网里往往是最容易被忽略的资产但它身上能挖的东西其实不少未授权访问很多打印机的 Web 管理面板没有任何访问控制直接暴露 9100打印端口、443/80Web 管理、515/631IPP/LPD 打印服务。通过管理面板可以查看打印任务、网络配置甚至获取 SNMP 团体字符串。信息泄露打印机的配置页面通常会显示主机名、MAC 地址、固件版本、网络共享设置。有些型号还能通过 SNMP 导出完整的设备信息。横向移动部分打印机支持 FTP 或 SMB 共享如果配置不当可以当作跳板读取内网其他共享文件。扫描打印机的方式也很简单就是先识别 9100、515、631 等端口nmap -p 515,631,9100 -sV 192.168.1.0/24一旦发现开放了这些端口的设备再用浏览器访问它的 80/443 端口看 Web 管理面板是否存在默认口令很多打印机的默认账号是admin/admin或者admin/空白。我实测下来内网里有不少打印机真的就是用默认密码而且开放了 telnet 或 SSH。拿到打印机的控制权之后可以干什么说一个我自己在做授权测试时的体验通过打印机跳板访问内网其他设备的情况确实存在——因为打印机所在的 VLAN 往往允许访问文件服务器或者域控的某些端口。所以千万别小看这个冷门资产。3.4 域渗透前的信息收集DNS、SMB 与共享资源内网渗透的核心目标通常是域控。进入内网后如果判断目标是域环境就要优先收集域相关信息DNS 服务器地址网络配置或nslookup查询。域控制器 IP通常就是 DNS 服务器。当前用户权限whoami /all、net user /domain。共享资源枚举net view /domain、net share。共享资源枚举在实战中特别重要。很多内网习惯把安装包、备份文件、运维脚本放在共享目录里这些文件里经常能找到数据库密码、密钥或运维账号。# Windows 下枚举共享 net view \\192.168.1.10 /all # 使用 smbclient 列共享Linux 下 smbclient -L //192.168.1.10 -U username拿到共享访问权限后除了直接翻文件还可以用工具搜索包含关键词的文件。我曾经在授权测试中通过搜索共享目录里的config.ini、web.config、*.bak文件找到了一批硬编码的数据库凭据这比任何漏洞利用都省事。4. 常见问题与排查技巧实录从 zip 到工具运行4.1 工具在目标机器上跑不起来缺 DLL / 缺运行库这是内网渗透工具使用中最常见的问题没有之一。工具在自己电脑上跑得飞起到了目标机器上就提示缺msvcr120.dll或者.NET Framework 4.5 未安装。处理思路是优先用静态编译版本如果没有静态版本就检查工具依赖的运行库是否在目标机器上存在。Windows 目标机器常见的依赖有Visual C Redistributable2010、2013、2015-2022.NET Framework 3.5 / 4.0 / 4.5PowerShell 版本很多工具依赖 PowerShell 2.0 或更高我工具包里常备一份常用运行库的离线安装包从微软官方渠道下载在授权测试中遇到目标机器缺运行库时直接装。但要注意安装运行库本身也是“有流量特征”的操作尽量在业务低峰期做并且结束后要确认不影响目标业务系统。4.2 工具被 AMSI / Defender 实时拦截目标机器如果是 Windows 10/11 且开启 Defender很多 PowerShell 脚本如 mimikatz 的 PS 版本、Invoke-Mimikatz.ps1会被 AMSI 直接拦截。这时候可以尝试使用编译过的 exe 版本替代 PowerShell 脚本版本。使用支持 AMSI bypass 的加载器但要注意免杀工具的合规性。在授权测试前提下直接申请将测试工具加入白名单或关闭实时保护我记得正规的授权测试流程里这一步是可以在授权书范围内做的但一定要确保业务不受影响。我自己的偏好是用原生 exe 替代 PS 脚本。虽然 exe 体积大、要上传但执行时不容易被 AMSI 拦而且行为更可控。4.3 流量被防火墙拦截反向代理和端口转发内网渗透中经常会遇到目标机器出网受限的情况能访问内网但外网流量被防火墙拦。这时就需要用代理转发工具常见的有frp支持 TCP、UDP、HTTP、HTTPS 等多种协议的内网穿透工具配置简单。nps功能类似 frp但自带 Web 管理面板。chisel基于 HTTP 的快速通道适合穿墙场景。frp 的配置示例服务端和客户端# frps.toml服务端 bindPort 7000 # frpc.toml客户端 serverAddr your-server-ip serverPort 7000 [[proxies]] name test-tcp type tcp localIP 127.0.0.1 localPort 3389 remotePort 6000这样配置后访问服务端 IP 的 6000 端口就能转发到内网目标机器的 3389 端口远程桌面。原理很简单就是在目标机器上开一个隧道客户端把内网服务暴露到你的控制服务器上。但要注意代理工具的配置也会被杀软标记所以尽量用最新版本或自行编译。提示在做端口转发时建议用非标准端口如 443、80、8443作为代理端口这样可以降低被防火墙策略拦截的概率。同时要确认你使用的代理工具支持流量加密frp 和 chisel 都默认支持避免传输的凭据和命令被内网监控设备截获。4.4 PowerShell 执行策略限制有些目标机器把 PowerShell 执行策略设为Restricted直接运行.ps1脚本会报错。绕过方法在授权范围内有几种# 方法一改用 -ExecutionPolicy Bypass powershell -ExecutionPolicy Bypass -File script.ps1 # 方法二在当前会话级别绕过 Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass # 方法三从标准输入读取执行 type script.ps1 | powershell -NoProfile -我最常用的是方法三因为这种方式不会创建临时脚本文件在目标机器上的痕迹更少。但要注意-NoProfile -这种执行方式在某些安全防护软件如 AMSI下还是可能被记录所以要综合考虑。4.5 zip 文件损坏的“自救”指南最后再专门整理一下 zip 文件损坏的修复技巧毕竟工具包分发和解压环节出问题太频繁了报错信息可能原因解决方案file is not a zip file文件下载不完整 / 后缀名错误 / 自定义头封装比对文件大小、用file识别真实类型、用 binwalk 查看偏移、重新下载invalid zip archive: could not find eocd文件截断 / 分卷错误 / 非 zip 文件确认分卷完整性、合并分卷、换用 7-Zip 或 Python zipfileunsupported compression method使用了不常见的压缩算法如 Deflate64、BZIP2、LZMA换用 7-Zip、或在压缩时选择 Deflate 算法解压时报密码错误密码确认无误编码问题 / 中文字符密码 / 大小写错误尝试复制粘贴密码、切换到英文输入法重新输入、确认加密算法是否被工具支持如果你在 Linux 环境下还可以用zip -FF damaged.zip --out repaired.zip来尝试修复损坏的 zip 文件。-FF会尝试从损坏文件中恢复目录信息虽然不保证 100% 成功但在只损坏了一小部分的情况下成功率还是很可观的。5. 合规边界与自我约束一个容易被忽略的“工具箱必备项”文章写到这里还是要认真说一下合规这件事。内网渗透测试不是“能打下来”就完了更重要的是“打得合法、测得规范”。我把合规相关的要点放在最后是因为它常常被人忽略但恰恰是最容易出现问题的环节。第一必须有书面授权。无论是自己搭的靶场还是客户委托的渗透测试一定要有明确的授权书注明测试范围、时间窗口和允许的操作类型。没有授权的一切“测试”都是非法入侵。第二不碰生产数据。在授权测试中如果发现目标系统中存在敏感数据如身份证号、银行卡号、客户隐私不要下载、不要外传只记录存在性即可。我在测试报告里通常只会写“发现敏感信息存在”不会复制具体内容。第三操作留痕。所有扫描、连接、命令执行行为都要有日志记录。一方面是方便自己做复盘和写报告另一方面在出现争议时日志是保护自己的最有力依据。我一般会在本地起一个Burp Suite的代理日志把所有 HTTP 流量记录下来同时在终端里用script命令记录命令历史。第四不传播工具和漏洞细节。内网渗透工具和漏洞利用代码本身具有双面性在社区分享时要注意分寸只分享思路和防御建议不要把完整的利用链公开到不可控的平台上。这些约束看似是“限制”实际上是一种职业素养。一个连合规性都不管不顾的所谓“渗透测试”最后往往害人害己。回到工具包这件事本身。我现在自己维护的内网渗透测试工具包仍然是一个 zip但里面除了一大堆工具之外还有两个文件一个是INVENTORY.md记录每个工具的版本、来源、hash 和更新日期另一个是NOTES.md记录我在每个项目中对这些工具的“实战备注”比如哪个工具在哪个版本的操作系统上不稳定、哪个工具需要先装什么依赖、哪个工具的参数组合最容易误报。这套“目录 README 版本管理”的组织方式比工具本身更值钱。如果你正在搭建自己的内网渗透测试工具包我的建议是别图快别贪多。先把最核心的十几个工具用熟理解每个工具的流量特征、执行原理、依赖条件再逐步扩充。工具包里的每一个文件都要心里有数不然它就是一个随时可能出卖你的数据包——杀软查杀、依赖缺失、运行报错任何一个问题都可能让一次测试卡壳。最后再分享一个我自己的习惯刚拿到一个陌生的工具包 zip 时先看一眼压缩包里的文件名。如果出现新建文本文档.txt、使用必看.exe、重要说明(1).pdf这类看起来很怪的命名十个里有八个是夹带私货直接放弃这个包别拿自己的测试环境去赌。本文还有配套的精品资源点击获取

相关新闻