本文作者竭力保证文章内容可靠,但对于任何错误、疏漏或不准确的内容,作者不负任何责任。文章部分内容来源于网络是出于传递更多信息的目的,对此不负任何法律责任。本文仅用于技术分享与讨论,严禁用于其他用途。
前言
命令与控制(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
*本文作者:DigApis,转载请注明来自FreeBuf.COM