近期,深信服深盾终端实验室在运营工作中发现了一种 ELF 格式的勒索软件,该勒索软件近期开始出现,其释放的勒索信中的 Onion链接似乎已关闭,这表明该勒索软件可能仍在开发中。
经过分析,发现该勒索软件与今年5月出现的 DarkAngels 勒索信内容非常相似。而 DarkAngels 与 Babuk 勒索软件也存在相似之处。
本文主要分析最新捕获的针对 Linux 平台的 ELF 格式的勒索软件以及针对 Windows 平台的 DarkAngels两种格式的样本,探究其中的相似与不同之处。
左图为针对 Linux 系统下的勒索信内容,右图为针对 Windows 系统下的勒索信内容。
总体功能框架
使用静态分析,发现恶意文件是基于 32 位 GUI (图形用户界面)的二进制文件。
获取命令行参数,通过调用 SetProcessShutdownParameters(0,0) ,恶意软件为指定进程设置它相对于其它程序的关闭顺序,参数为
0,意味着较其他进程关闭得最迟。
终止服务
为了确保在系统加密过程中不中断其加密过程,恶意软件会枚举和检索受害者机器上所有可用的服务,在加密系统之前尝试终止服务。
打开服务控制管理器数据库 (0xF003F = SC_MANAGER_ALL_ACCESS)。
调用 OpenServiceA,打开一个目标服务(0x2c = SERVICE_STOP )。
查询服务状态,判断上一步骤参数是否正确传递。
检索每个依赖于指定服务的服务的名称和状态;也就是说,在依赖服务能够运行之前,指定的服务必须运行 (0x1 =
SERVICE_ACTIVE)。
终止服务 (0x1 = SERVICE_CONTROL_STOP)。
终止的服务列表
终止进程
函数 CreateToolhelp32Snapshot() 获得当前运行进程的快照后,我们可以利用 process32First
函数来获得第一个进程的句柄。
将当前进程与硬编码中的进程表对比,如果当前进程句柄与表中匹配。则打开指定进程的句柄,并传入 0x1 参数(0x1 =
PROCESS_TERMINATE),随后终止进程,最后关闭该进程句柄。
继续枚举下一个进程。
重复上述操作,直至遍历完所有进程。
终止进程列表
防止恢复
(1)删除卷影
(2)清空回收站
使用 SHEmptyRecycleBinA() API,恶意软件会从回收站中删除所有项目,以确保加密后不会恢复已删除的文件。
最大化执行加密操作
首先创建互斥变量 DarkAngels:
(1)当命令行参数中包含"shares"
使用 NetShareEnum () API 检索有关服务器上每个共享资源的信息。
检查 $ADMIN 共享并开始加密文件:
(2)当命令行参数中包含 “path”
勒索软件会调用 GetDriveTypeW() API 来找出连接到受感染机器的网络驱动器。一旦识别出网络驱动器,勒索软件就会开始加密文件。
(3)当命令行参数中既不包含 "shares"又不包含 “paths”
勒索软件会递归遍历所有本地驱动器并加密所有目标文件。加密后,文件被赋予 .crypt 扩展名。
枚举卷及本地磁盘
获取驱动器类型,判断路径是否有效GetDriveTypeW(0x1),如果路径有效,则对卷进行枚举。调用
GetVolumePathNamesForVolumeName 获取路径信息,查看该卷是否被安装,若未被安装,则调用SetVolumeMountPointW
安装未被安装的卷。
枚举网络资源
文件加密
(1)被加密文件添加扩展
调用 SetFileAttributesW(0x80 = FILE_ATTRIBUTE_NORMAL )
设置文件属性,取消文档的只读、隐藏、系统、存档权限。调用 MoveFileExW 函数,被加密文件添加扩展 .crypt。
调用CreateFileW(0xC0000000 = GENERIC_READ | GENERIC_WRITE,0x3 =
OPEN_EXISTING),打开一个已经存在的文件。
(2)处理密钥
调用 CryptGenRadom 随机生成 AES 密钥,之后使用Session Key 中的 RSA 公钥对 AES 密钥进行加密。
(3)文件加密大小
从文件头部开始遍历文件,先加密 0-64,接着加密 64-5242880,其次加密 5242880-20971520,最后加密20971520 之后的字符。
(3)不进行加密的文件、目录及扩展
不进行加密的目录:
AppData
|
Boot
—|—
Windows
|
Windows.old
不进行加密的文件:
autorun.inf
|
boot.ini
|
bootfont.bin
—|—|—
不进行加密的文件扩展:
.babyk 是著名的 Babuk 勒索软件扩展名,表明 DarkAngels 与 Babuk 勒索软件可能存在关联。
.exe
|
.dll
|
.babyk
—|—|—
DarkAngels 在加密文件的末尾附加了一个签名 “choung dong looks like hot dog!!”,表明该勒索软件与 Babuk
相关。
1、定制化加密路径
该勒索软件二进制文件需要一个文件夹作为加密参数。给定文件夹路径后,DarkAngels 会加密文件夹中的文件并将 .crypted
扩展名附加到加密文件中。如果没有添加需要加密的路径,则会显示 Usage:%s [-m (10-20-25-33-50) ] Start Path 。
该恶意程序使用 pthread_create 函数创建了一个新的线程,新的线程通过调用 start_routine 执行主模块。
start_routine 函数为该勒索软件主要功能模块,分析内容如下所示:
(1)被加密文件添加文件扩展 .crypted
(2)将添加过 .crypted 扩展的文件设置写锁
调用 open64 函数打开目标文件,并且使用 fcnt 函数将目标文件设置为 F_WDLCK 写锁,随后 close 关闭目标文件。
(3)终止进程
终止 pid>10 且占用文件的进程,尽可能多的加密文件且避免在加密过程中造成文件的损坏。
(4)将进程的工作目录修改为"/"根目录,创建守护进程。
(5)勒索信
打开另一个与目标文件同名但附加了README_TO_RESTORE 扩展的文件,写入了勒索信内容并关闭文件。
写入的勒索信内容如下所示:
(6)避免加密的文件扩展、目录、文件
不进行加密的文件扩展:
不进行加密的目录:
不进行加密的文件:
(7)加密
打开被添加 .crypted 扩展的文件,调用 lseek 和 write 函数写入已加密的内容。
(8)加密记录
所有被加密文件存储在 wrkman.log.0 文件中。
IOCs
Windows 版本
Sha256 38e05d599877bf18855ad4d178bcd76718cfad1505328d0444363d1f592b0838
Linux 版本
Sha256 3b56cea72e8140a7044336933cf382d98dd95c732e5937a0a61e0e7296762c7b
1. 避免将重要服务在外网开放,若一定要开放,需增加口令复杂度,避免使用弱口令。
2. 避免打开可疑或来历不明的邮件,尤其是其中的链接和附件等,如一定要打开未知文件,请先使用杀毒软件进行扫描。
3. 安装信誉良好的防病毒/反间谍软件,定期进行系统全盘扫描,并删除检测到的威胁,按时升级打补丁。
4. 使用官方和经过验证的下载渠道,使用正版开发人员提供的工具/功能激活和更新产品,不建议使用非法激活工具和第三方下载器,因为它们通常用于分发恶意内容。
5.重要的数据最好双机备份或云备份。
【----帮助网安学习,以下所有学习资料免费领!】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
①数据库基础
②SQL语言基础
③数据库安全加固
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。
一些我自己买的、其他平台白嫖不到的视频教程:
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。!!!