kali流量操控与隧道

流量操控与隧道

流量操控技术Traffic manipulation technique

渗透测试中经常遇到访问受限的网络环境
使用隐蔽的手段逃避安全检查措施和溯源追踪
证明看似严格的访问控制仍然存在弱点
在非受信任的网络中实现安全的数据传输
部分概念的实现过程略有烧脑

重定向(Redirection)即Ip、Port的重定向

隧道(Tunneling)
在不受信任的网络环境中实现安全的通信
通常使用多种加密技术建立通信隧道
点到点(IP2IP,通常是边界防火墙到边界防火墙,过了防火墙,在内网数据是没有加密的,如果有中间人攻击就会被嗅探)、端到端(Port2Port,通信全过程都是加密的)隧道
VPN: pptp、I2tp、IPSec、SSL

封装(encapsulation)
通常结合在隧道中使用,使用一种协议封装一种协议(RPC o http、VoIP)
使用网关设备实现不同类型网络的互联互通

重定向

Rinetd
安装:apt-get install rinetd
配置:/etc/rinetd.conf
bindadd bindport connectadd connectport
运行:rinetd

应用场景
重定向web流量,突破上网限制
远程桌面重定向
NC重定向获得shell
不兼容FTP等二次连接的协议

安装monowall防火墙

SSH隧道

SSH支持双向通信隧道
将其他TCP端口的通信通过SSH链接来转发
用SSH作为传输层协议,对流量自动加解密
突破防火墙访问规则的限制,可用于fanqiang

SSH本地端口转发
使效果类似于rinetd
将一本地端口与远程服务器建立隧道

建立双向安全隧道
将其他TCP端口的通信通过SSH链接来转发
用SSH作为传输层协议,对流量自动加解密
突破防火墙访问规则的限制,可用于fanqiang

本地端口转发
本机侦听端口,访问转发到远程主机指定端口

远程端口转发
远程侦听端口,访问转发到本机主机指定端口

动态隧道模式

SSH本地端口转发

将一本地端口与远程服务器建立隧道

/etc/ssh/sshd_config
PermitRootLogin yes
Port 53
PasswordAuthentication yes

service ssh restart

ssh -fCNg -L :: user@ -p
ssh -fCNg -L :localhost: user@ -p
-f 后台运行进程;-N 不执行登录shell;-g复用访问时作为网关,支持多主机访问本地侦听端口;网关模式转发RDP、nc shell

端口转发基于建立起来的SSH隧道,隧道中断则端口转发中断
只能在建立隧道时创建转发,不能为已有隧道增加端口转发

SSH远程端口转发

由于ACL等原因,SSH与应用连接建立方向相反

本地端口转发
SSH客户端+应用客户端位于FW_端
SSH服务端+应用服务端位于另一端
远程端口转发
SSH客户端、应用客户端位于FW两端
SSH服务端、应用服务端位于FW两端

ssh -fNg -R :: user@ -p

之所以称为远程,是因为SSH侦听端口开在远程的SSH Server上
侦听端口永远开在应用客户端一方

kali流量操控与隧道_第1张图片A到C、B到D之间的通信未加密,可嗅探

SSH动态端口转发

本地、远程端口转发都需要固定应用服务器IP、Port
应用端口繁多,逐个转发效率低
某些应用不固定端口
某些网站不支持IP直接访问
使用非受信网络上网时保护流量不被嗅探

本地侦听socks4/5代理端口
由SSH server决定如何转发
作为fanqiang代理使用
配置客户端代理(浏览器)
使用proxychains支持无代理客户端
ssh -CfNg -D 7001 [email protected] -p 2121

X协议转发

远程登录Linux GUI运行图形化界面工具:VNC、X Windows
防火墙限制访问时:基于SSH的X转发;ssh -X [email protected] -p 53

DNS协议隧道

防火墙禁止TCP出站访问流量
SSH隧道、端口转发全部失效
使用基于UPD协议的隧道
DNS的工作原理适合用于实现隧道

DNS工作原理
DNS隧道原理:注册受自己控制的DNS记录

dns2tcp

利用合法DNS服务器实现DNS隧道
C/S (dns2tcpc/dns2tcpd)结构
通过TXT记录加密传输数据(A记录长度有限)
隧道建立后保持连接
默认记录生存时间TTL值为3秒

服务端配置文件
/etc/dns2tcpd.conf或当前目录的.dns2tcprcd
listen = 0.0.0.0
port = 53
user = nobody
chroot = /tmp
key = password123
domain = test.lab.com
resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25 , socks:127.0.0.1:1082 , https:127.0.0.1:8087 , http:127.0.0.1:3128
资源可以是其他地址

启动
dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf
F:前端运行,d:debug level 1-3,f:指定配置文件

iodine

与同类工具相比的优点
对下行数据不进行编码,因此性能优
支持多平台:Linux、BSD、Mac OS、Windows
最大16个并发连接
强制密码支持
支持同网段隧道IP (不同于服务器、客户端网段)
主持多种DNS记录类型
丰富的隧道质量检测措施

运行服务端
iodined -f -c 10.0.0.1 test.lab.com
-f:前端显示(可选)
-c:不检查客户端IP地址
IP:服务器端的隧道IP地址

运行客户端
iodine -f test.lab.com
curl --socks5-hostname 127.0.0.1:7001 http://www.sina.com

隧道网络接口
不基于资源的通用隧道,如同本网段内两台相邻的主机
服务器端和客户端分别生成隧道网络接口dns0
隧道两端接口的IP地址应不同于客户端和服务器端网段
基于此隧道可嵌套其他隧道技术
ssh -CfNg -D 7001 [email protected]

Windows端
安装TAP网卡驱动
客户端http://code.kryo.se/iodine/
iodine -f test.lab.com

NCAT

代理功能
ncat -l 8080 --proxy-type http --proxy-auth user:pass

Broker中介功能
AB不同但AC、BC互通
服务器:ncat -l 333 --broker
客户端之间发送任何信息都会被hub到其他客户端
批量执行命令:ncat 1.1.1.1 --sh-exec “echopwd
批量传文件:ncat --send-only 1.1.1.1 < inputfile

SOCAT

双向数据流通道工具

连接端口:socat - tcp:1.1.1.1:80
侦听端口:socat - tcp4-listen:22或socat - tcp-l:333
接收文件:socat tcp4-listen:333 open:2.txt,creat,append
发送文件:cat 1.txt | socat - tcp4:1.1.1.1:333

远程shell—服务器端
socat tcp-l:23 exec:sh,pty,stderr
端口转发
socat tcp4-listen:22,fork tcp4:1.1.1.1:22
远程执行命令
服务器:socat -udp-l:2001
客户端:echo “id” 丨 socat - udp4-datagram:1.1.1.1:2001

UDP全端口任意内容发包
for PORT in {1…65535}; do echo “aaaaa” | socat - UDP4-DATAGRAM: 1.1.1.1 :$PORT; sleep .1; done

ptunnel

ping tunnel ICMP隧道工具
通过ICMP echo(ping requests)和reply(ping reply)实现隧道
适用于防火墙只允许ping出站流量的环境
支持多并发连接、性能优
支持身份验证
需要root权限
支持抓包,但需要依赖库 Windows: winpcap; Linux: libpcap
工作过程:Proxy、Client、Destination

服务器ptunnel -x 1234
客户端sudo ptunnel -p -lp 2222 -da -dp 22 -x 1234
嵌套SSH隧道ssh -CNfg -D 7000 [email protected] -p 2222
ptunnel直到目前的最新版仍存在拒绝服务漏洞:0.72

proxytunnel

通过标准的HTTP / HTTPS代理创建隧道的工具
通过HTTP CONNECT方法封装信息
适用于内网使用代理并且防火墙只允许代理服务器上网的场景
无法创建DNS隧道和ICMP隧道

sslh

端口分配器
根据客户端第一个包检测协议类型
根据协议检测结果将流量转发给不同目标
支持HTTP, HTTPS, SSH, OpenVPN, tinc, XMPP和其他可基于正则表达式判断的任何协议类型
适用于防火墙允选443端口入站访问流量的环境

配置文件/etc/default/sslh
在这里插入图片描述

stunnel4

无需修改源代码的情况下将TCP流量封装于SSL通道内
适用于本身不支持加密传输的应用
支持OpenSSL安全特性
跨平台
性能优

你可能感兴趣的:(kali渗透测试学习笔记)