reGeorg实战攻防

admin 2021年4月27日07:52:33评论73 views字数 1695阅读5分39秒阅读模式

reGeorg实战攻防

文章来源:酒仙桥六号部队

前言

当我们已经通过各种操作getshell之后想要进行内网横向渗透,但因为目标ACL策略设置的比较严格,只允许HTTP协议和对应端口通过。我们无法通过使用端口转发或者是端口映射的方法来从外网访问到内网的其他机器。这时我们就会想到reGeorg这款工具,通过该工具代理进入内网,通过HTTP协议转发请求。


reGeorg实战攻防


这个工具创建之初本意并不是专门用来渗透内网,而是某些企业员工在外网的环境下想访问内网资源。所以这几个安全意识不太足的小哥们写了一个可以通过部署在边界上的网页来进行流量转发,从而访问内网的一个办公工具......
可以看到该工具的'斯搂梗'是说"每个办公室都需要这样的工具"..

reGeorg实战攻防

源码分析

那么如此厉害的工具究竟是怎么实现的呢?我们一起来看下源码:

reGeorg实战攻防


从入口开始,就是标准的一套:LOGO + argparse 来进行参数的支持和解析,真正逻辑从askGeorg函数开始。这个函数是来测试远程代理服务器是否能够访问,我们来看下这个函数的具体内容:


reGeorg实战攻防


可以看到内容基本就是判断是否为HTTPS,然后使用哪个工具。用GET方法来请求,如果状态码为 200 且内容跟远程服务器中内容一样就认为是OK的。


比较的内容就是浏览器访问看到的那一句话:


Python中:

reGeorg实战攻防


php中:

reGeorg实战攻防


浏览器访问:

reGeorg实战攻防


我们来继续往下看:

reGeorg实战攻防


监听了客户端的端口,并设置TCP的排队上限为1000,这样的对普通情况来说是足够了。


后边是创建循环不停的接收报文,并且将接收到的传入 session 线程中并启动。


session的构造比较简单:

reGeorg实战攻防


我们来看下线程最重要run中的内容:

reGeorg实战攻防


内容不多,就是判断Socks4还是5并解析,之后是创建读写线程并start。


判断Socks4 还是 5:

reGeorg实战攻防


Socks代理至少三个字节的请求,第一个字节一定为5,如果是Socks4,则第一个字节一定为4。


parseSocks5和parseSocks4 为判断对应Socks的协议解析是否成功。


Reader:

reGeorg实战攻防


Writer:

reGeorg实战攻防


读写部分是一些转发的常规操作。

reGeorg实战攻防

实战攻防

在实战中使用可能会碰到一些特殊问题。


reGeorg实战攻防


比如在浏览器中访问可以出现熟悉的"Georg says,'All seems fine'",说明可以正常访问。但是使用reGeorgSocksProxy客户端的时候会报'未准备好,请检查url',这是为什么呢?

reGeorg实战攻防


排查问题需要进行一些代码调试。

reGeorg实战攻防


通过打印出的关键字搜索,可以看到是askGeorg这个函数返回了False 导致了退出程序。


这时我们可以进行调试,使用Debug来跟进代码,一行一行看到底哪里出错了。当不具备调试环境时也可以使用打印的方法定位问题。


这里我们使用打印的方法来定位问题。

reGeorg实战攻防


我们再尝试运行一下代码,看看哪里出错。

reGeorg实战攻防


可以看到返回的状态码为403,也就是说可能被WAF或者其他安全设备拦截掉了。我们通过代码可以获知只有当状态码为200的时候才可以正常使用,并且我们使用浏览器直接打开是可以正常访问的。也就是说我们的问题出现在了Python脚本跟浏览器的请求差异上,比如一些常见的请求头 User-Agent 、Accept-Language等,这些我们需要一一补上。


我们需要将每一个请求都加入浏览器所包含的请求头,所以我们将该过程提取出来作为函数使用。


修改后的代码:

reGeorg实战攻防


setupRemoteSession中的CONNECT:

reGeorg实战攻防


closeRemoteSession中的DISCONNECT:

reGeorg实战攻防


reader中的READ:

reGeorg实战攻防


Writer中的FORWORD:

reGeorg实战攻防


修改完代码后我们实际进行测试。

reGeorg实战攻防


可以看到返回码已经变为200并且打印出了熟悉的'All seems fine',说明可以正常使用了。Happy~

reGeorg实战攻防

总结

掌握调试/打印等方法不论是对代码审计和修改脚本都有很大的帮助和提升。我们在实战中会碰到各种各样的问题,这时候需要自己细心耐心以及编码修改能力来解决这些问题。这样我们才可以做到在这不断提升的攻防中稳步前行。

reGeorg实战攻防


推荐文章++++

reGeorg实战攻防

*使用Vulhub快速搭建攻防环境靶场+tcpdump实行流量监测

*大型攻防演习红与蓝方的职能是什么?

*红队攻防系列之花式鱼竿钓鱼篇


reGeorg实战攻防

reGeorg实战攻防

本文始发于微信公众号(黑白之道):reGeorg实战攻防

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月27日07:52:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   reGeorg实战攻防https://cn-sec.com/archives/229564.html

发表评论

匿名网友 填写信息