【威胁情报】黑莲花 - UEFI Bootkit 2.3.1
2023-6-22 12:6:2 Author: Ots安全(查看原文) 阅读量:17 收藏

Ots安全

关注我们 | 发现更多精彩内容

网络犯罪世界在不断发展,最新出现的威胁之一是 BlackLotus  bootkit。该恶意软件是已知的第一个能够 绕过 Microsoft Windows 11 系统安全启动的bootkit  ,使其成为网络世界中的一个危险威胁。该恶意软件已在各种黑客论坛上以 5,000 美元的价格出售,而升级到新版本只需 200 美元。80 kB 大小的 BlackLotus bootkit 自 2022 年 10 月以来一直在黑客论坛上可用。
Secure boot是  UEFI 2.3.1版本自带的BIOS软件。安全启动确保在机器启动时只允许运行由制造商确定的受信任软件。启用安全启动后,计算机将在允许任何可执行文件运行之前验证其数字签名。此功能减少了 bootkit 的影响。

黑莲花的特点
黑客论坛中提到的 BlackLotus 最重要的功能是它能够绕过安全启动。此外,它还可以绕过 Windows 安全保护。该恶意软件具有 Ring0/Kernel 保护以防止删除。该恶意软件的目的是充当在 SYSTEM 帐户下运行的 HTTP 下载程序。它还具有反虚拟机、反调试和代码混淆等功能,以防止恶意软件分析。
BlackLotus 利用 CVE-2022-21894 漏洞绕过安全启动功能。微软于 2022 年 1 月发布了针对此漏洞的补丁,但尚未将易受攻击的签名二进制文件添加到 UEFI 吊销列表中。此列表标识不应再受信任的引导文件并将它们标记为不受信任。因此,即使是完全更新的设备仍然容易受到攻击。 
BlackLotus Bootkit 攻击剖析

一旦安装程序拥有必要的权限,它就会将 bootkit 文件部署到 EFI 系统分区。恶意二进制文件与具有 CVE-2022-21894 漏洞的 Microsoft 签名文件一起部署到 EFI 系统分区。EFI 系统分区是包含在基于 EFI 的系统中启动所需的文件的部分,并且包括将在启动过程中使用的基本 EFI 组件。
安装程序禁用 BitLocker 和 HVCI 安全系统。必须禁用 HVCI 安全系统才能运行未签名的内核代码。内核代码运行在操作系统内核中,直接与操作系统和硬件交互。HVCI 系统确保内核代码的完整性,这对安全性至关重要。
安装程序会重新启动计算机。重新启动的计算机通过EFI系统分区中的修改文件运行。机器加载之前由安装程序修改的修改后的 BCD(引导配置数据)引导选项。BCD 是一个数据库,其中包含用于在 Windows 操作系统中启动的配置数据。
在计算机重启期间,攻击者的 MOK 密钥也会被保存,即使在启用了 UEFI 安全启动的系统中也能确保连续性。尽管被 UEFI 安全启动阻止,MOK 仍允许用户安装自己的启动或驱动程序软件。这在用户需要安装自己的软件时很有用,但它也允许恶意软件使用相同的方法绕过 UEFI 安全启动。
bootkit 的目的是分发由  内核驱动程序和用户模式组件组成的HTTP下载程序。如果 HTTP 下载程序指示,bootkit 会自行删除或运行额外的内核加载。它还可以防止从 ESP 中删除 bootkit 文件。HTTP 下载器与 C&C 通信以执行接收到的命令并下载和运行有效负载。

参考:

https://www.binarly.io/posts/The_Untold_Story_of_the_BlackLotus_UEFI_Bootkit/index.html

https://kn0s-organization.gitbook.io/blacklotus-analysis-stage2-bootkit-rootkit-stage/

https://socradar.io/enter-the-blacklotus-analysis-of-the-latest-uefi-bootkit/

Yara

rule win_blacklotus_auto {
meta: author = "Felix Bilstein - yara-signator at cocacoding dot com" date = "2023-03-28" version = "1" description = "Detects win.blacklotus." info = "autogenerated rule brought to you by yara-signator" tool = "yara-signator v0.6.0" signator_config = "callsandjumps;datarefs;binvalue" malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.blacklotus" malpedia_rule_date = "20230328" malpedia_hash = "9d2d75cef573c1c2d861f5197df8f563b05a305d" malpedia_version = "20230407" malpedia_license = "CC BY-SA 4.0" malpedia_sharing = "TLP:WHITE"
/* DISCLAIMER * The strings used in this rule have been automatically selected from the * disassembly of memory dumps and unpacked files, using YARA-Signator. * The code and documentation is published here: * https://github.com/fxb-cocacoding/yara-signator * As Malpedia is used as data source, please note that for a given * number of families, only single samples are documented. * This likely impacts the degree of generalization these rules will offer. * Take the described generation method also into consideration when you * apply the rules in your use cases and assign them confidence levels. */

strings: $sequence_0 = { 40383c08 7406 4080ffcc 750a ffc2 49ffc3 413bd0 } // n = 7, score = 100 // 40383c08 | mov edx, ebx // 7406 | dec eax // 4080ffcc | mov dword ptr [esp + 0x20], edi // 750a | mov cl, 1 // ffc2 | inc ebp // 49ffc3 | xor ecx, ecx // 413bd0 | dec eax
$sequence_1 = { 2bc7 ffc8 0fb71443 6683fa7f 7604 6683ea60 } // n = 6, score = 100 // 2bc7 | or edx, 0xffffffff // ffc8 | inc ebp // 0fb71443 | xor ecx, ecx // 6683fa7f | inc ebp // 7604 | xor eax, eax // 6683ea60 | lea ecx, [edx + 3]
$sequence_2 = { e8???????? b20d 408ace 8ad8 e8???????? b20b } // n = 6, score = 100 // e8???????? | // b20d | movzx ebx, byte ptr [eax + edx] // 408ace | lea eax, [edx + 3] // 8ad8 | inc edx // e8???????? | // b20b | movzx edi, byte ptr [eax + edx]
$sequence_3 = { 48897820 4863413c 4533c9 488bea 458bd1 8b740850 } // n = 6, score = 100 // 48897820 | jb 0x1ce4 // 4863413c | inc esp // 4533c9 | mov eax, eax // 488bea | xor edx, edx // 458bd1 | dec ecx // 8b740850 | mov ecx, ecx
$sequence_4 = { 75f2 4d8bc6 488d542430 488d4d30 e8???????? 492bfe } // n = 6, score = 100 // 75f2 | mov dword ptr [ebp - 0x54], 0xd2f3ff10 // 4d8bc6 | mov dword ptr [ebp - 0x50], 0xec130ccd // 488d542430 | mov dword ptr [ebp - 0x4c], 0x1744975f // 488d4d30 | mov dword ptr [ebp - 0x59], 0x5048706c // e8???????? | // 492bfe | mov dword ptr [ebp - 0x55], 0xdab9edfd
$sequence_5 = { 4d85c0 744d 458bd1 410fb64002 410fb65003 48c1e208 } // n = 6, score = 100 // 4d85c0 | dec eax // 744d | test eax, eax // 458bd1 | js 0xebe // 410fb64002 | lea eax, [ecx - 0x60] // 410fb65003 | movzx edx, al // 48c1e208 | dec eax
$sequence_6 = { b209 408ace 8ad8 e8???????? b20d } // n = 5, score = 100 // b209 | jae 0xb55 // 408ace | inc ebp // 8ad8 | movzx eax, cx // e8???????? | // b20d | inc edx
$sequence_7 = { 4c8d4c2440 4c8bc0 488d0de6340000 e8???????? 85c0 } // n = 5, score = 100 // 4c8d4c2440 | inc ecx // 4c8bc0 | sub eax, edx // 488d0de6340000 | inc ecx // e8???????? | // 85c0 | inc edx
$sequence_8 = { 480fbfc6 488d3d41100100 b9e8030000 8935???????? } // n = 4, score = 100 // 480fbfc6 | lea eax, [ecx + 2] // 488d3d41100100 | inc edx // b9e8030000 | mov byte ptr [eax + edx], bl // 8935???????? |
$sequence_9 = { 48897010 48897818 4c897020 55 488d68c8 4881ec30010000 4c8bd1 } // n = 7, score = 100 // 48897010 | jb 0x1dd1 // 48897818 | inc ebp // 4c897020 | test eax, eax // 55 | je 0x1cc7 // 488d68c8 | dec eax // 4881ec30010000 | mov ebx, ecx // 4c8bd1 | dec eax
condition: 7 of them and filesize < 181248}

感谢您抽出

.

.

来阅读本文

点它,分享点赞在看都在这里


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247499178&idx=2&sn=a43c2e8c48392ae2efa5700c38c3457d&chksm=9badb4e1acda3df7554846f287651da2d6ca83468d9a46a5818ab084e1249171594f72281b04#rd
如有侵权请联系:admin#unsafe.sh