2021年3月,微软Exchange漏洞利用事件被公布报道,Exchange Server中的四个0day漏洞被超过10个APT黑客组织盯上,同时安全厂商发现了近7,000个经由Exchange漏洞植入的webshell,用于攻击者的后续恶意操作,这其中就包括DearCry勒索软件。虽然Microsoft Defender 已经自动更新定义档,可在侦测到DearCry时加以封锁,但只要Microsoft还没修补好本月初披露的ProxyLogon漏洞,就还会有其他勒索软件上门。
3月18日以来,研究人员发现有黑客团伙开始使用Black KingDom勒索软件来针对易受攻击的Exchange服务器,这款勒索软件并不复杂,其组成甚至显得有些初级和业余,但仍可能造成很大的损害。它可能与去年运行于易受攻击的Pulse Secure VPN集中器软件的同名勒索软件有关。
Web Shell交付
Black KingDom的交付是通过远程服务器进行编排的,该远程服务器的IP地址定位到德国的185.220.101.204,而攻击者的运行地址是185.220.101.216,由于两个IP地址都属于Tor出口节点,因此无法知道攻击者的实际位置。
攻击者利用的是Microsoft Exchange Server本地部署版本的远程代码执行(RCE)漏洞,也称为ProxyLogon(CVE-2021-27065)。
成功突破Exchange服务器后,攻击者通过webshell对服务器的远程访问,进而执行任意命令。
Webshell ChackLogsPL.aspx植入位置:
我们观察到的其他Webshell文件名还有ckPassPL.aspx和hackIdIO.aspx。
Webshell是由w3wp.exe写入磁盘的,w3wp.exe是承载Exchange管理中心(EAC)的Internet信息服务器(IIS)辅助进程,Microsoft将其内部名称命名为ECP(Exchange控制面板):
勒索软件的执行和行为
部署完Webshell之后,攻击者通过发出PowerShell命令来发起攻击(由于大小限制,此处未完整显示):
解码为以下脚本(已修改以提高可读性):
脚本从此处下载勒索软件有效负载:hxxp://yuuuuu44[.]com/vpn-service/$(f1)/crunchyroll-vpn
$(f1)部分由函数f1生成,该函数生成一个由15个字母字符组成的随机字符串,因此实际网址看起来像这样:hxxp://yuuuuu44[.]com/vpn-service/ ojkgrctxslnbazd /crunchyroll-vpn
(截止本文发表,yuuuu44域会将访问者重定向到NASA.GOV)
攻击者将勒索软件有效负载存储在 \\[ComputerName]\c$\Windows\system32\ 文件夹中,有效负载文件名同样由f1函数随机生成,例如:C:\Windows\System32\ojkgrctxslnbazd.exe
脚本通过WMI(Windows管理界面)调用Win32_Process来执行勒索软件,脚本还有将勒索软件上载到网络上的其他计算机并执行的功能。
影响
勒索软件二进制文件基于Python脚本,通过PyInstaller编译为可执行文件。我们将二进制文件反编译回其原始源代码,创建者将源代码命名为0xfff.py,其中的“ fff”代表十进制数4095的十六进制值,所代表的意义未知。
勒索软件具有一个内置的文件夹名称列表,内容没有被加密:
勒索软件试图使用服务名称中的SQL来停止计算机上运行的数据库服务,大概也可以对它们进行加密:
加密密钥是使用以下代码生成的:
gen_string函数调用生成一个长度为64个字符的随机字符串,脚本使用MD5对该值进行散列,之后转换为十六进制字符,将其用作加密密钥。
同时还生成gen_id,这是勒索软件嵌入到赎金票据中的受害者标识符。然后将密钥和gen_id上传到mega.io帐户,如果勒索软件由于某种原因无法将此随机生成的加密密钥上传到Mega,则其回退形式为硬编码的静态密钥:
文件加密功能的文件系统行为很简单:读取(原始)>覆盖(加密)>重命名:
各文件代表功能如下:
对已加密文件进行重命名的代码:选择一个4到7个字节之间的随机字符串,并将其附加到文件名中,因此其后缀不再映射到应有的应用程序:
我们的密码保护系统捕获了勒索软件试图加密的数据,原始遥测显示了通过WMI执行的勒索软件二进制文件,如下(从3到1反向读取Process Trace序列):
为了进一步复杂化并阻碍事件响应,勒索软件删除了Windows事件日志:
一旦对系统进行加密(或工作20分钟后),勒索软件就会运行子例程,禁用鼠标和键盘,并在桌面上打开全屏窗口。
生成屏窗口如下,带有倒数计时器:
除加密数据外,赎金票据还存储在一个名为crypto_file.TxT的文件中:
根据BitRef,攻击者的加密货币钱包目前接收的交易概况如下,可能至少有一名受害者已经支付了赎金: