基于E-Mail的隐蔽控制:机理与防御

本文作者竭力保证文章内容可靠,但对于任何错误、疏漏或不准确的内容,作者不负任何责任。文章部分内容来源于网络是出于传递更多信息的目的,对此不负任何法律责任。本文仅用于技术分享与讨论,严禁用于其他用途。

前言

命令与控制(command andcontrol),是远程控制的一种表现形式,更是目前网络攻击常用手段中不可或缺的一环。而邮箱作为收发信息的仓库,既能作为恶意代码传播的平台,亦可作为命令与控制的信道。本文介绍了邮箱在恶意代码传播和命令与控制两个方面的应用。

一、邮箱在恶意代码传播中的应用

1.1 恶意代码传播手段

恶意代码传播过程可利用多种手段,目前已知的手段有:

1.定向鱼叉攻击邮件投放

2.垃圾邮件批量投放传播

3.网页挂马

4.利用优盘、移动硬盘等移动介质传播

5.捆绑、隐藏在一些破解、激活、游戏工具中进行传播

6.感染web/FTP服务器进行传播

7.利用自动化机制病毒进行传播

1.2 定向鱼叉攻击邮件投放

1.2.1 鱼叉攻击定义

“鱼叉攻击”是黑客攻击方式之一,最常见的做法是,将恶意代码作为电子邮件的附件,并起上一个极具诱惑力的名称,发送给目标电脑,诱使受害者打开附件,从而感染恶意代码。

1.2.2 邮件鱼叉攻击示例

2018 年4月,Internet Explorer 被曝出一个 0day 漏洞 双杀 CVE-2018-8174 )。该漏洞通过 VBClass::Release 函数中存在的缺陷访问未分配内存,从而触发漏洞达到任意地址读写的目的。 该漏洞通过精心构造的页面或往邮件或 Office 文档中嵌入 VB 脚本即可触发 ,危害性较强,也因此被命名为 双杀 漏洞,且一遭曝光便第一时间被 APT 组织利用于黑客活动

2018年2月Adobe Flash被曝出一个0day漏洞CVE-2018-4878。该漏洞影响版本在28.0.0.137以下的AdobeFlash,通过修改Flash脚本对象ByteArray的值至特殊长度来实现任意地址读写,实现漏洞利用, 再将 Adobe Flash Player 嵌入Office 文档和邮件等载体中并诱使用户打开的途径快速传播漏洞 ,在解析ATF文件时访问内部数据结构使用了无效的指针偏移导致漏洞,成功攻击后可能会导致敏感信息泄露。

1.3 垃圾邮件批量投放

垃圾邮件批量投放示意

二、邮箱在命令与控制中的应用

目前有很多僵尸网络以邮箱作为C&C服务器进行网络构建和命令收发。我们以163邮箱为例,展示邮箱用作C2服务器的整个流程。

2.1 通信架构

主控端和被控端通过邮箱进行命令收发和控制信息回传。163邮箱提供smtp服务和imap服务,相应端口分别为25端口和993端口。因此,主被控需要对邮箱服务及端口进行配置。

进行邮件收发同时需要在主控端和被控端设置邮箱登录

下图为基于邮箱的C2服务器的通信模型。

2.2 命令与回传

每一个被控端开始运行时,会向邮箱发一封checkin邮件: 2.2.1命令解析

主控端开始运行时,有如下命令可选:

编号 命令 用法 功能
1 -h -h,–help 查看可用命令及命令使用方法
2 -v -v,–version 查看当前程序版本号
3 -id -id ID 对指定ID主机发送命令
4 -list -list 列举当前被控主机信息
5 -info -id ID –info 检索指定客户端上的信息
6 -cmd -id ID –cmd CMD 在指定ID主机
7 -download -id ID -download PATH 下载指定ID主机指定路径下的文件
8 -upload -id ID –upload filepath attachment 上传指定文件到指定ID主机的指定路径下
9 -exec-shellcode -id ID -exec-shellcode FILE 上传指定文件包含的shellcode到指定ID主机运行
10 -screenshot -id ID -screenshot 获取指定ID主机的屏幕快照
11 -lock-screen -id ID –lock-screen 锁定指定ID主机的屏幕
12 -force-checkin -id ID –force-checkin 强制指定ID主机发送checkin邮件
13 -start-keylogger -id ID –start-keylogger 开始键盘输入记录
14 -stop-keylogger -id ID –stop-keylogger 停止键盘输入记录

2.2.2 邮件格式解析

被控端邮件格式解析

被控端邮件发送部分源码

被控端邮件各部分说明

主控端邮件格式解析

主控端邮件发送源码

2.2.3 命令与回传过程

主控端查看目前被控主机信息

主控端从邮箱提取主题为checkin的邮件中的内容

邮箱提取出的内容:

主控端发送控制命令

每一条控制命令发送后都会返回一个jobid用以识别该命令,同时会将控制命令打包成主题为gcat的邮件发送到邮箱

邮件内容

命令发送代码

被控端扫描收件箱检测到命令

被控端信息回传

回传内容

回传代码

主动端从邮箱收取邮件并在终端显示

其他命令及信息回传过程与上述类似,在此不一一列举。

三、反查机制

随着网络攻击对邮箱的滥用越来越严重,服务提供商也对邮箱的安全机制进行了完善,目前普通的垃圾邮件或钓鱼邮件已经无法逃脱邮箱服务器的检测。针对以上问题,攻击者对基于邮箱的恶意活动的安全性也进行了如下改进。

3.1 信息加密

对于远程控制过程中命令的传递和窃取信息的回传进行加密。加密方式有对称加密和非对称加密。

在僵尸网络中,为保证信息传递的安全性,可以使用非对称加密,给每个被控主机不同的密钥,以保证在某些被控主机被劫持的情况下不暴露整个僵尸网络。

3.2 信息隐写

出于防止溯源、隐蔽网络规模和其他隐私信息的目的,攻击者需要对在邮件中夹带的信息进行保密,这时可以用到隐写技术。很多邮件中包含了文字、图片、链接等多种多样的表现形式,将需要被传递的信息隐藏在这些看似正常的信息中,也是一种保证信息安全性的做法。

3.3 垃圾邮件传送信息

当我们使用邮件传递控制命令或者恶意代码时,很容易被识别为垃圾邮件。利用这一点,我们可以把包含控制命令或恶意代码的邮件构造成垃圾邮件,被控端访问垃圾邮件所在文件夹,利用密钥或者匹配算法提取垃圾邮件中的有用信息。

四、防御手段

实现隐蔽远程控制需要经历两个阶段,第一个阶段是远程控制代码的传播,第二个阶段是命令与控制。

第一阶段的防护措施属于预防恶意代码的传播。恶意代码不是平白无故出现在主机中的,一定是利用某种传播手段进行扩散。了解恶意代码传播机理后应该知道,要预防恶意代码进入主机,首先要开启防火墙服务,其次要经常更新系统发布的补丁,对于陌生邮件中给出的链接或附件,不要轻易点击。第二阶段的防护措施属于恶意代码的控制。恶意代码入侵并进行隐蔽控制时,任务管理器的进程会有所体现,同时也可以利用各种检测软件和杀毒软件进行查杀。

检测建议 :以邮箱作为C2服务器,主控端会由于大量接收和发送邮件产生明显异常,被控端定时询问邮箱服务器也会产生异常,在网络边缘和主机端抓包分析均可检测异常行为。

总结

无论是构建僵尸网络、传播恶意代码还是进行命令与控制,邮件都是一个很好的传播介质。我们在了解基于邮箱的远程控制的原理的基础上,还可以对攻击实施的合理性进行深入研究,明确攻击过程绕过传统检测采用的手段,对于保证自身信息安全和防御攻击都有极大的帮助。

参考链接:

[1] Gcat, https://github.com/byt3bl33d3r/gcat

[2] https://mp.weixin.qq.com/s/R-Ok96U5Jb2aaybUfsQtDQ

*本文作者:DigApis,转载请注明来自FreeBuf.COM