【CS学习笔记】21、反向转发通道的建立
0x00 前言
这一节将介绍使用 ProxyChains 进行代理转发与使用反向转发的方法。
0x01 使用 ProxyChains 进行代理转发
介绍
使用 ProxyChains 可以使我们为没有代理配置功能的软件强制使用代理
- 和上一节中介绍的一致,开启一个 socks 代理服务
- 配置
/etc/proxychains.conf
文件 - 运行
proxychains + 待执行命令
演示
接下来继续上一节中的演示环境:
攻击机 IP:192.168.175.200
上线主机:外部IP 192.168.175.130、内部IP 192.168.232.133
攻击目标:192.168.232.0/24 地址段
1、设置 socks 代理
首先开启交互模式,之后开启 socks 代理
sleep 0
socks 9527
beacon> sleep 0
[*] Tasked beacon to become interactive
[+] host called home, sent: 16 bytes
beacon> socks 9527
[+] host called home, sent: 16 bytes
[+] started SOCKS4a server on: 9527
2、配置 ProxyChains
在攻击机上,配置 /etc/proxychains.conf
文件的最后一行,根据当前攻击主机 IP 与设置的 Socks 端口,修改如下:
socks4 192.168.175.200 9527
3、开始使用 ProxyChains
根据上一节使用 Metasploit 的扫描可以知道,在 192.168.232.0/24 地址段中存在主机 192.168.232.132 ,接下来使用 nmap 扫描一下常见的端口,这里以 80,443,445,3389 作为演示。
proxychains nmap -sT -Pn 192.168.232.132 -p 80,443,445,3389
-sT:使用 TCP 扫描
-Pn:不使用 Ping
-p:指定扫描端口
注:不加上 -sT -Pn 参数,将无法使用 proxychains 进行代理扫描
> proxychains nmap -sT -Pn 192.168.232.132 -p 80,443,445,3389
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.14
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-07 23:05 EDT
[proxychains] Strict chain ... 192.168.175.200:9527 ... 192.168.232.132:80 ... OK
[proxychains] Strict chain ... 192.168.175.200:9527 ... 192.168.232.132:445 ... OK
[proxychains] Strict chain ... 192.168.175.200:9527 ... 192.168.232.132:3389 ... OK
[proxychains] Strict chain ... 192.168.175.200:9527 ... 192.168.232.132:443 <--denied
Nmap scan report for 192.168.232.132
Host is up (0.19s latency).
PORT STATE SERVICE
80/tcp open http
443/tcp closed https
445/tcp open microsoft-ds
3389/tcp open ms-wbt-server
Nmap done: 1 IP address (1 host up) scanned in 14.35 seconds
通过扫描可以看到目标 80 端口是开放的,接下来使用 curl 作为对比示例。
curl 192.168.232.132
proxychains curl 192.168.232.132
> curl 192.168.232.132
curl: (7) Failed to connect to 192.168.232.132 port 80: No route to host
> proxychains curl 192.168.232.132
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] Strict chain ... 192.168.175.200:9527 ... 192.168.232.132:80 ... OK
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
……内容太多,此处省略……
0x02 反向转发
反向转发顾名思义就是和上一节中提到的转发路径相反,之前我们设置的代理是 CS服务端 --> 上线主机 --> 内网主机
,反向转发则是 内网主机 --> 上线主机 --> CS服务端
。
继续使用上面的演示环境,首先右击上线主机会话,选择 Pivoting --> Listener
,除了 Name 选项之外,CS 都会自动配置好,这里直接使用默认的配置信息。
之后生成一个 Windows 可执行文件,选择上一步生成的监听器,如果目标是 64 位则勾选使用 x64 Payload 的选项。
image之后将该可执行文件在目标主机上执行即可,在现实环境中可以尝试使用钓鱼邮件的方式诱导目标执行。
当目标执行该文件后,就会发现当前不出网的 192.168.232.132 主机已经上线了。
image有一说一,关于这部分网上大部分教程还是 CS 3.x 版本的教程,而在 4.0 的操作中个人感觉要方便很多。
网上关于这部分内容的 CS 4.0 的教程真的是少之又少,一开始在参考 3.x 教程的时候踩了很多坑,最后终于某内部知识库发现了一篇关于这部分内容的 4.0 教程,在该教程的参考下才发现居然如此简单。
原文链接:https://www.teamssix.com/year/200419-150651.html
参考链接:https://www.bilibili.com/video/BV16b411i7n5