一、背景简介在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防御方案。 本文想通过标准的SSH的端口转发建立SSH形式的加密隧道,用于加密、隐蔽传输恶意流量,从而避免通过流量检测发现恶意行为。复现实验部分以C&C通信流量为例进入实验。通过SSH隧道进行加密和隐藏的C&C流量在外部流量特征分析仅表现为标准SSH流量。 二、实验原理本次实验使用Empire工具快速搭建C&C信道,本文只简要介绍对于Empire工具。在Windows平台下使用Plink.exe工具的SSH功能搭建SSH隧道。 2.1 SSH隧道介绍SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是, SSH 还能够将其他 TCP 端口的网络数 据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”( tunneling),这是因 为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。SSH隧道的实现主要使用SSH的参数配置进行端 口转发,即将所需传输的数据内容通过加密的SSH隧道进行转发。SSH 端口转发能够提供两大功能:1、加密 SSH Client 端至 SSH Server 端之间的通讯数据。2、突破防火墙的限制完成一些之前无法建立的 TCP 连接。 由于SSH的安全性,在数据跨越公网时其他人无法得知数据内容。SSH端口转发有本地转发、远程转发和动态端 口转发三种。本次实验主要以本地转发为例。本地转发主要使用SSH的 -L参数解释:
(2) 第2部分表示:通讯数据会从本地的9906端口上被转发,最终被转发到10.1.0.2的3306端口。 (3) 第3部分表示:我们创建的ssh隧道是连接到10.1.0.2上的root用户。 2.2 Empire工具简介Empire是一个针对windows平台、提供从Stager生成到提取和渗透维持一系列功能齐全的渗透攻击框架,其最 大的特点是以PowerShell脚本作为攻击载荷,而且Empire实现了无需powershell.exe就可运行PowerShell代理功 能,即它是一个纯粹的PowerShell后期漏洞利用代理工具。快速部署后期漏洞利用模块,内置模块有键盘记录、 Mimikatz、绕过UAC、内网扫描等等,并且能够适应通信躲避网络检测和大部分安全防护工具的查杀,简单来说 Empire类似于渗透神器Metasploit,是一个基于PowerShell的远程控制木马。 2.2 Empire工具安装在实验虚拟linux系统中安装
安装成功后,确认Empire目录下所有文件(目录)如下图:
三、实验步骤实验说明:使用两台虚拟机ubuntu16 + windows 7,其中ubuntu16模拟控制端,windows 7模拟受控主机。 3.1 在ubuntu系统上搭建SSH服务端(1) 安装Open-SSH Server端
(2) 配置SSH Server端 编辑/etc/ssh/sshd_config文件中允许口令登录PermitRootLogin配置如下图: (3) 测试SSH登录是否成功 查看本机IP(linux命令:ifconfig),如在windows下的XShell工具下输入Server IP 输入登录名和密码,成功登入系统则SSH Server端搭建成功。
(4) 配置RSA密钥对认证登录 a) 生成rsa密钥对
b) 开启sshd支持RSA认证选项,并添加认证公钥路径地址 c) 编辑/etc/ssh/sshd_config文件中的PubkeyAuthentication选项配置为yes,即:
e) 使用私钥进行登录ssh登录
注:使用putty、winscp等工具时需要先使用对应平台工具进行rsa私钥导入后转化为相对应文件格式,如本次实验使用putty工具导入生成私钥文件sshrsa.ppk。 3.2 使用Empire工具生成PowerShell脚本备用Empire工具类似Metasploit,详细使用教程可参考一篇文章精通PowerShell Empire。 本次实验使用Empire生成简单的PowerShell脚本,建立最简单的C&C通信。下面简单概括主要步骤。 (1) 设置监听
示例如下:
注:生成的Powershell代码直接复制并保存,以备在受控windows主机(win7、win10)执行。 3.3 搭建SSH隧道(1) windows下使用Plink.exe(putty工具集中可以在windows系统下使用命令行进行SSH连接)连接SSH Server
(2) Plink相关参数 -ssh 指定使用特定连接协议 -l 指定登录用户名 -i 指定RSA私钥登录 -L 本地转发 (3) Plink端口转发设计
将本地端口(4444)转发到远程目标主机(192.168.81.137)的目标端口(4444)。 注意:以上命令执行成功后,需要保持命令行不要关闭。同时可以组合使用SSH的其他参数进行后台运行、不交互等。 (4) 使用(2)中生成的PowerShell脚本,使受控主机上线 a) windows 7虚拟机另外开启一个CMD窗口,复制PowerShell脚本执行。可以看到受控主机以上线。
四、总结通过本次实验可以看出,攻击者可以利用类似SSH的公共服务或可用技术辅助攻击,且其实现也非常容易。 关键步骤总结: (1) 搭建SSH服务,并配置为RSA私钥登录(也可以配置为免密登录)。 (2) 使用工具(如Empire、Metasploit等)构建C&C。 (3) 利用SSH的端口转发搭建SSH隧道。 (4) 配置C&C和SSH参数使二者配合实现加密、隐藏恶意流量的目的。 本文思想源于FreeBuf大神'興趣使然的小胃',特此感谢。 * *本文作者:mumufeng06,本文属 FreeBuf 原创奖励计划 |
|