0x00 原理解释
关于隧道技术的定义请参考前一篇文章:https://blog.csdn.net/Fly_hps/article/details/80625377,其实不同的隧道技术,利用原理都一样,分为3个版本:
- Client(攻击者or客户端)
- Server(隧道技术的服务端,提供端口转发也就是数据包重新封装)
- Content-Server(目标服务器,这里一般是内网其它机器)
0x01 BackTrack实验
先来看看实验之前的情况
客户端访问目标机:
服务端访问目标机:
所以本次实验的环境大致如下:
如果我们在绕过一些安全设备,如IDS、IPS、防火墙等时,就可以采用如下的做法利用
SSL Stunnel 服务端配置:
mkdir /etc/stunnel #创建配置文件目录
touch /etc/stunnel/stunnel.conf #创建配置文件
openssl req -new -x509 -days 365 -nodes -config /etc/ssl/openssl.cnf -out stunnel.pem -keyout stunnel.pem #生成证书
vim stunnel.conf #编辑配置文件
cert = /etc/stunnel/stunnel.pem
chroot = /var/log/stunnel/
pid = /stunnel.pid
[telnets]
accept = 2323
connect = 192.168.11.128:23
mkdir /var/log/stunnel/ #生成缓存目录
stunnel /etc/stunnel/stunnel.conf #启动服务端
netstat -tulnp | grep 2323 #查看端口开放情况
SSL Stunnel 客户端:
mkdir /etc/stunnel #创建配置文件目录
touch /etc/stunnel/stunnel.conf #创建配置文件
vim stunnel.conf #编辑配置文件
chroot = /var/log/stunnel/
pid = /stunnel.pid
client = yes
[telnets]
accept = 2323
connect = 192.168.11.135:2323
mkdir /var/log/stunnel/ #生成缓存目录
stunnel /etc/stunnel/stunnel.conf #启动客户端
成果图:
我这里说明一下,大家可能觉得我的攻击端与服务端都是一个,其实不是,攻击端使用的是kali克隆机;
0x02 Kali下的实验
与Bt5下面是一致的,这里就不再重复了。其实很多人会发现在kali2.0中,/usr/share/doc/stunnel4/examples/目录中有一个配置文件的样本,不过这个配置文件过于复杂,但是在一些复杂的环境中可能会用到,如:要求配置pem与ca证书等;所以这里我个人建议在学习的过程中,还是可以自己尝试着去写,或者删除样本中不需要的冗余项。
这里推荐一篇不需要使用工具,就可以建立起ssl隧道技术的文章:http://my.oschina.net/leejun2005/blog/94401
0x03 原理与思考
其实隧道技术就是一个数据包的封装过程,我们通过前期的信息收集发现,IPS/IDS/防火墙允许哪种数据包通过时,我们就可以利用隧道技术进行绕过,将我们的一些攻击代码封装在特定的数据包中,这样就可以各种666了;
思考1:是否可以利用隧道技术进行内网渗透呢?
事实证明是可以的,我在服务器端添加了一块网卡,设置为10.0.0.13,然后把目标机的IP设置为10.0.0.12;修改相应的ssl隧道配置文件,其实只是将服务器端的配置文件中connect那一行修改为10.0.0.12:23就可以了;在客户端进行telnet链接同样是可以的;
其实内网渗透时,我们常用的技术是端口转发,不过端口转发需要满足一个条件就是需要我们的服务器可以访问外网。当然很多的服务器是可以访问外网的,但是如果遇到不能访问外网的服务器,就可以使用代理技术或者隧道技术。
思考2:隧道技术与传统的代理技术有什么区别?
其实代理技术就是隧道技术的一种体现。代理就是通过proxy(隧道服务器)、client(隧道攻击端)、Content Server(目标机)之间建立了隧道,这种隧道使得客户端感觉不到代理的存在,在客户端看来,它是直接跟要请求资源服务器在通信。而在本文讲述的这种隧道技术,客户端的感觉就是跟自己再通信,这种隧道技术利用了数据转发的过程;http://www.tuicool.com/articles/rq2I7zE