恶意文件简述

BlackCat 是第一个广为人知的用 Rust编写的勒索病毒,该病毒带有一个加密配置,其中包含要终止的服务/进程列表、避免加密的目录/文件/文件扩展名列表以及来自受害者环境的被盗凭证列表。

它会删除所有卷影副本,使用 CMSTPLUA COM 接口执行权限提升,并在受害者机器上启用“远程到本地”和“远程到远程”符号链接。

恶意文件分析

1.恶意文件描述

近期,深信服深盾终端实验室在运营工作中发现一起勒索病毒事件,样本隶属家族 BlackCat。该家族最近几个月动作频频,下文将针对该样本进行详细分析。

BlackCat(又名 ALPHV)是一个勒索软件家族,BlackCat 采用勒索软件即服务 (RaaS)
商业模式,在已知的网络犯罪论坛中招揽附属公司,允许附属公司利用勒索软件并保留 80-90% 的赎金,其余部分将支付给 BlackCat作者。其恶意软件本身是用 Rust 编程语言编写的。

BlackCat采用三重勒索模式,不仅会加密数据、感染网络和系统,还会通过其他的工具进行窃取敏感数据,然后使用被盗数据勒索受害者支付要求的赎金,还会在他们的泄密网站上列出了部分受害者,如果不支付赎金,攻击者将在数据泄露站点上泄露被盗数据。而且如果受害者没有在最后期限支付赎金,他们还会进行分布式拒绝服务(DDoS) 攻击。

2.恶意文件分析

通过分析发现该样本使用 32位不唯一的访问令牌进行启动,在程序启动初始阶段便会对参数进行强校验,样本通过正确参数启动后便会进行加密勒索操作,为加密后的文件添加后缀名“.7dulptm”,提示信息文件名为 “RECOVER-7dulptm-FILES”,内容如下,通过该样本的勒索信息可以锁定勒索解密页面,当前还未有任何交互信息。

esxi 安卓手机 esxi 安卓客户端_数据

网络行为

暂未发现网络行为

行为分析

该样本的行为如下所示

esxi 安卓手机 esxi 安卓客户端_数据_02

BlackCat是一个命令行启动的勒索程序,该样本采用定制化的参数选项帮助攻击者轻松地配置程序执行过程。这些配置包括以子进程方式运行、拖拽启动、记录日志、是否探索
Windows 系统的共享网络、是否在 Windows 上繁殖传播、是否传播到未定义的服务器上、是否关闭 ESXI 虚拟机、是否删除 ESXI虚拟机快照、是否更新 Windows桌面等等。

其中大多数参数是可选项,但是 --access-token 参数是必选的,用来绕过沙箱自动执行的动态分析。

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_03

当该样本无参数启动或者以一个无效的 access token 启动时,控制台均会输出错误信息。

esxi 安卓手机 esxi 安卓客户端_web安全_04

根据配置,该样本使用 ChaCha20Aes 或 Aes 加密算法对文件进行加密。在自动模式下,软件会检测是否有 AES硬件支持(存在于所有现代处理器中)并使用它。如果没有 AES 支持,软件会对文件进行 ChaCha20 加密。

esxi 安卓手机 esxi 安卓客户端_网络安全_05

前期准备工作

允许“远程到远程”文件共享:

fsutil behavior set SymlinkEvaluation R2R:1

esxi 安卓手机 esxi 安卓客户端_安全_06

关闭系统所有 Internet 服务:

esxi 安卓手机 esxi 安卓客户端_网络安全_07

将注册表中网络请求服务器服务的值修改为最大即65535,这样能够避免在加密过程中因同时访问太多文件而出现的问题。

esxi 安卓手机 esxi 安卓客户端_安全_08

信息收集

1、通过注册表 SOFTWARE\\Microsoft\\Cryptography 来查询机器 Guid

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_09

2、调用 WMI 获取主机目标设备的通用唯一标识符 UUID

esxi 安卓手机 esxi 安卓客户端_网络安全_10

3、在缓存中读取 IP 地址和 mac 地址的对应关系表

esxi 安卓手机 esxi 安卓客户端_网络安全_11

4、枚举磁盘驱动器

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_12

检索磁盘驱动器

esxi 安卓手机 esxi 安卓客户端_web安全_13

5、查询受害者系统的计算机名

esxi 安卓手机 esxi 安卓客户端_web安全_14

6、查询计算机用户名

esxi 安卓手机 esxi 安卓客户端_网络安全_15

7、查询 AD 域名

调用 SHTestTokenMenbership 函数,判断当前用户是否属于本域中的管理员组(0x220 =
DOMAIN_ALIAS_RID_ADMINS),识别当前用户是否具有域管理员权限,以便加密更多的设备。

esxi 安卓手机 esxi 安卓客户端_数据_16

调用 NtQueryInformationToken 函数检索与当前令牌 (0x2 = TOKEN_GROUPS )
关联的组账号,并且检查TOKEN_GROUPS 中是否包含管理员组:

esxi 安卓手机 esxi 安卓客户端_安全_17

8、使用 net use 控制共享网络连接

esxi 安卓手机 esxi 安卓客户端_web安全_18

9、枚举文件

esxi 安卓手机 esxi 安卓客户端_web安全_19

防御规避

该样本为了避免数据的恢复及取证溯源工作,做了如下的工作:

1、该样本使用了 TLS 回调函数

esxi 安卓手机 esxi 安卓客户端_数据_20

2、命令行参数启动

该样本通过 GetCommandLineW 函数获取该程序的命令行参数

esxi 安卓手机 esxi 安卓客户端_安全_21

3、关闭某些进程和服务

为了尽可能多得加密文件,避免文件被占用,勒索程序还会关闭一些进程和服务。配置中设置了需要关闭的进程列表和服务列表:

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_22

(1)关闭服务

调用 OpenScManagerW 查询服务控制管理数据库

esxi 安卓手机 esxi 安卓客户端_安全_23

枚举服务存活状态的服务 (0x1 = SERVICE_ACTIVE)

esxi 安卓手机 esxi 安卓客户端_网络安全_24

终止目标服务器 (0x1 = SERVICE_CONTROL_STOP)

esxi 安卓手机 esxi 安卓客户端_web安全_25

(2)关闭进程

枚举所有进程

esxi 安卓手机 esxi 安卓客户端_安全_26


esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_27

中断进程

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_28

4、调用 vssadmin.exe 和 wmic 删除系统备份

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_29

esxi 安卓手机 esxi 安卓客户端_网络安全_30

5、关闭系统 BCDedit 中的自动修复功能

esxi 安卓手机 esxi 安卓客户端_安全_31

6、枚举服务器/客户端中所有的事件日志列表,然后清除系统中所有的事件日志

esxi 安卓手机 esxi 安卓客户端_安全_32

提权

1、绕过 UAC

该恶意软件尝试使用 CMSTPLUA COM 接口绕过 UAC,如调用 CoInitializeEx 函数来初始化当前线程的COM 库 (0x2 =
COINIT_APARTMENTTHREADED)

esxi 安卓手机 esxi 安卓客户端_web安全_33

调用 CoGetObject 函数,将显示名称修改并绑定为一个自提权 CMSTPLUA
的接口interfaceElevation:Administrator!new:{3E5FC7F9-9A51-4367-9063-A120244FBEC7}

esxi 安卓手机 esxi 安卓客户端_安全_34

从下图可以看出,初始低权限样本启动了一个提权后的“自己”,随后退出程序

esxi 安卓手机 esxi 安卓客户端_web安全_35

2、API 提权

获取当前进程的令牌句柄 (0x80000000 = GENERIC_READ)

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_36

查看系统权限 SeTakeOwnershipPriviledge 的特权值

esxi 安卓手机 esxi 安卓客户端_安全_37

在指定的访问令牌 SeTakeOwnershipPriviledge 上启动该权限

esxi 安卓手机 esxi 安卓客户端_安全_38

所有提升的权限如下所示:

SeIncreaseQuotaPrivilege,SeSecurityPrivilege,SeTakeOwnershipPrivilege,SeLoadDriverPrivilege,SeSystemProfilePrivilege,SeSystemtimePrivilege,SeProfileSingleProcessPrivilege,SeIncreaseBasePriorityPrivilege,SeCreatePagefilePrivilege,SeBackupPrivilege,SeRestorePrivilege,SeShutdownPrivilege,SeDebugPrivilege,SeSystemEnvironmentPrivilege,SeChangeNotifyPrivilege,SeRemoteShutdownPrivilege,SeUndockPrivilege,SeManageVolumePrivilege,SeImpersonatePrivilege,SeCreateGlobalPrivilege,SeIncreaseWorkingSetPrivilege,SeTimeZonePrivilege,SeCreateSymbolicLinkPrivilege,SeDelegateSessionUserImpersonatePrivilege

持久化

为了避免影响系统和勒索软件的正常运行,对一些关键的系统、应用程序文件夹和一些关键组件不进行加密操作

1、配置中包含避免加密的文件扩展列表
themepack,nls,diagpkg,msi,Ink,exe,cab,scr,bat,drv",rtp",“msp”,“prf”,“msc”,“ico”,“key”,“ocx”,“diagcab”,“diagcfg”,“pdb”,“wpx”,“hlp”,“icns”,“rom”,dll",“msstyles”,“mod”,“ps1”,“ics”,“hta”,“bin”,“cmd”,“ani”,“386”,“lock”,“cur”,“idx”,“sys”,“com”,deskthemepack",“shs”,“Idf”,“theme”,“mpa”,“nomedia”,“spl”,“cpl”,“adv”,“icl”,"msu
2、避免加密的文件夹,包括但不限于
systemvolume information, intel, $windows.~ws, application data, $recycle.bin,
 mozilla, $windows.~bt, public, msocache, windows, default, all users, tor
 browser, programdata, boot, config.msi, google, perflogs, appdata, windows.old3、避免加密的文件名,包括但不限于
desktop.ini, autorun.inf, ntldr, bootsect.bak, thumbs.db, boot.ini,
 ntuser.dat, iconcache.db, bootfont.bin, ntuser.ini, ntuser.dat.log

文件加密

调用 BCryptGenRandom 函数生成 16 个随机字节,用来生成 AES 密钥

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_39

esxi 安卓手机 esxi 安卓客户端_网络安全_40

从文件头开始遍历文件

esxi 安卓手机 esxi 安卓客户端_安全_41

被加密文件添加后缀

esxi 安卓手机 esxi 安卓客户端_数据_42

写入勒索信

esxi 安卓手机 esxi 安卓客户端_web安全_43

Json 格式文件包含 AES 加密算法,用于加密文件的 AES密钥,调用 BCryptGenRandom 函数生成 0x82(130)个随机字节,与
json 配置文件中的密钥总共占用缓冲区大小为256 字节

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_44

调用 bcryptGenRandom 生成随机四字节,将被加密文件的内容与 AES 密钥使用四字节分开

esxi 安卓手机 esxi 安卓客户端_web安全_45

包含 AES 密钥的缓冲区被配置文件中的 RSA 公钥加密,加密密钥大小为 0x100,写入文件,文件内容使用 aesenc and aesenclast
命令进行 AES-128 算法加密,使用writeFile 将加密后的内容写入文件

esxi 安卓手机 esxi 安卓客户端_网络安全_46

内嵌配置信息

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_47

Json 配置中包含:

1、 被加密文件的扩展

2、 被AES密钥加密的RSA公钥

3、 勒索信名称和内容

4、 受害者环境被盗的凭据

5、 AES加密算法

6、 终止的服务和进程列表

7、 避免加密的文件夹、文件和文件扩展

8、 网络发现、横向移动、桌面壁纸设置、终止VMware ESXI虚拟机、清除VMware ESXI虚拟机快照、从终端中排除VMware ESXI

横向移动

枚举所有连接到网络中的服务器,该进程首先会广播 NetBIOS 名称服务 (NBNC)
消息来检查这些附加的设备,然后试图通过PsExec使用配置文件中的凭据复制自身到响应的服务器中。

调用 SHTestTokenMenbership 函数,判断当前用户是否属于本域中的管理员组(0x220 =
DOMAIN_ALIAS_RID_ADMINS),识别当前用户是否具有域管理员权限,以便加密更多的设备。

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_48

调用 NtQueryInformationToken 函数检索与当前令牌(0x2 = TOKEN_GROUPS )关联的组账号,并且检查
TOKEN_GROUPS 中是否包含管理员组:

esxi 安卓手机 esxi 安卓客户端_数据_49



初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_50

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

“脚本小子”成长进阶资源领取

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。

esxi 安卓手机 esxi 安卓客户端_esxi 安卓手机_51


结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。