reGeorg内网渗透工具使用及源码分析

  • A+
所属分类:安全工具 安全文章
  • 背景

在内网渗透中,由于防火墙或特殊网络环境的存在,导致我们无法对内网直接发起连接,因此就需要端口反弹,如果进一步对内网其他主机进行渗透,就需要通过内网的代理,才能对其他主机进行渗透。例如现在我们想要连接一台centos服务器的22端口,却发现该端口只能内网连接,那么我们就可以使用这套组合(reGeorg+proxychains)将我们的ssh的流量经过代理访问目标主机,这样就可以成功连接到对方了。

reGeorg内网渗透工具使用及源码分析

使用reGeorg内网渗透工具前

reGeorg内网渗透工具使用及源码分析

使用reGeorg+proxychains工具后

  • 原理

reGeorg主要是把内网服务器的端口通过 http/https 隧道转发到本机,形成一个隧道。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。它利用 webshell 建立一个 socks 代理进行内网穿透,服务器必须支持 aspx、php 或 jsp 这些 web 程序中的一种。

reGeorg由服务端和客户端两部分组成。服务端有php、aspx、asph、jsp、node.js等多个版本,客户端则由python编写。其工作原理可简单描述为python客户端在本地监听一个端口,提供socks服务,并将数据通过http/https协议发送到服务端上,并从服务端上用socket实现转发。

  • 实验环境

攻击机:192.168.1.1

跳板机:外网网卡1模拟,IP地址为192.168.1.2,内网网卡2模拟,内网地址为192.168.2.2

目标机:网卡为网卡2,IP地址为192.2.1,可与192.168.2.2互通

攻击机无法直接访问目标机,只能访问跳板机

  • 工具源码

https://github.com/freedom-wy/w_reGeorg
  • 说明

对原版reGeorg进行了修改

  • 工具使用方法

1、通过渗透测试方法找到跳板机漏洞,上传reGeorg服务端文件,如上传tunnel.jsp

2、配置攻击机proxychains

vim /etc/proxychains.conf

在配置文件的最底部,添加代理信息

reGeorg内网渗透工具使用及源码分析

启动reGeorg客户端,指定端口和proxychains相同,都为8889,检查客户端到服务端通信是否正常

python w_reGeorgSocksProxy.py -p 8889 -u http://192.168.1.2/tunnel.jsp

reGeorg内网渗透工具使用及源码分析

当显示为Georg says, 'All seems fine',通信正常

尝试使用nmap扫描目标机22端口

[email protected]freedom-virtual-machine:~/reGeorg$ sudo proxychains nmap -Pn -sT 192.168.2.1 -p 22sh: 0: getcwd() failed: No such file or directoryProxyChains-3.1 (http://proxychains.sf.net)
Starting Nmap 7.60 ( https://nmap.org ) at 2021-02-19 17:43 CST|S-chain|-<>-127.0.0.1:8889-<><>-192.168.2.1:22-<><>-OKNmap scan report for 192.168.2.1Host is up (0.0071s latency).
PORT STATE SERVICE22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

尝试使用ssh连接

[email protected]:~/reGeorg$ sudo proxychains ssh [email protected]sh: 0: getcwd() failed: No such file or directoryProxyChains-3.1 (http://proxychains.sf.net)|S-chain|-<>-127.0.0.1:8889-<><>-192.168.2.1:22-<><>-OK[email protected]'s password: 

reGeorg内网渗透工具使用及源码分析


  • 源码分析

1、检查shell连通性

reGeorg内网渗透工具使用及源码分析

2、监听本地端口8889,和Proxychains代理端口相同

reGeorg内网渗透工具使用及源码分析

3、进入session的run方法

reGeorg内网渗透工具使用及源码分析

4、判断代理协议为socks5还是socks4


reGeorg内网渗透工具使用及源码分析

5、如果为socks5,执行parseSocks5方法

协商方法和版本号

reGeorg内网渗透工具使用及源码分析

6、判断代理工具及连接信息

reGeorg内网渗透工具使用及源码分析

通过atyp判断为Ipv4并执行目标IP和端口的转换

reGeorg内网渗透工具使用及源码分析

通过cmd判断连接信息并探测端口存活

reGeorg内网渗透工具使用及源码分析

7、在setupRemoteSession方法中执行端口探测

传参目标机的IP地址和端口

reGeorg内网渗透工具使用及源码分析

8、服务端接收到数据后,执行端口探测

reGeorg内网渗透工具使用及源码分析

9、收发交互数据

reGeorg内网渗透工具使用及源码分析

10、如执行curl等访问命令,则在writer方法中携带curl数据并执行访问

reGeorg内网渗透工具使用及源码分析

11、在reader方法中获取数据并发送到客户端

reGeorg内网渗透工具使用及源码分析

12、无数据发送时,执行socket关闭

reGeorg内网渗透工具使用及源码分析


  • wireshark抓包

注意:由于proxychains监听127.0.0.1:8889端口,则wireshark需要抓取loopback网卡数据包

1、判断代理协议为socks5还是socks4

reGeorg内网渗透工具使用及源码分析

其中05为socks协议,02:00为版本号和方法,02为proxychains判断依据

2、发送版本号和方法

reGeorg内网渗透工具使用及源码分析

3、获取连接信息

reGeorg内网渗透工具使用及源码分析

ver为05, cmd为01, rsv为00, atyp为01

c0:a8:01:02为IP地址,00:16为端口号

reGeorg内网渗透工具使用及源码分析

4、判定端口存活并发送确认数据

reGeorg内网渗透工具使用及源码分析

在跳板机中抓包,可以看到,攻击机未直接与目标机通信

而是通过跳板机进行跳转的

reGeorg内网渗透工具使用及源码分析


本文始发于微信公众号(你丫才秃头):reGeorg内网渗透工具使用及源码分析

发表评论

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