当前位置: 首页 > news >正文

通付盾Web3专题 | SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式

国家级APT(Advanced Persistent Threat,高级持续性威胁)组织是有国家背景支持的顶尖黑客团伙,专门针对特定目标进行长期的持续性网络攻击。朝鲜APT组织Lazarus Group就是非常活跃的一个APT团伙,其攻击目的主要以窃取资金为主,堪称全球金融机构的最大威胁,近年来多起加密货币领域的攻击和资金窃取案件就是他们所为。

Lazarus Group

据维基百科资料,Lazarus Group 成立于 2007 年,隶属于北韩人民军总参谋部侦察总局第三局旗下的 110 号研究中心,专门负责网络战。该组织分为 2 个部门,一个是大约 1700 名成员的BlueNorOff(也称为 APT38),负责通过伪造 SWIFT 订单进行非法转账,专注于利用网络漏洞谋取经济利益或控制系统来实施金融网络犯罪,此部门针对金融机构和加密货币交易所。另一个是大约 1600 名成员的 AndAriel,以韩国为攻击目标。
 

已知 Lazarus Group 最早的攻击活动是 2009年其利用 DDoS 技术来攻击韩国政府的「特洛伊行动」。而最著名的一次是 2014 年对索尼影业的攻击,原因是索尼上映关于暗杀朝鲜领导人金正恩的喜剧。

该组织旗下机构 BlueNorOff 的一次知名攻击是 2016年的孟加拉国银行攻击案,他们试图利用 SWIFT 网络从属于孟加拉国中央银行的纽约联邦储备银行账户非法转移近 10 亿美元。在完成了几笔交易(2000 万美元追踪到斯里兰卡,8100 万美元追踪到菲律宾)后,纽约联邦储备银行以拼写错误引起的怀疑为由阻止了其余交易。
 

自 2017 年以来,该组织开始对加密行业进行攻击,并获利至少 10 多亿美元。

二、技战法分析

2.1常用攻击手法分析

Lazarus早期多利用僵尸网络对目标进行DDos攻击;目前主要攻击手段转为鱼叉攻击、水坑攻击、供应链攻击等手法,还针对不同人员采取定向社会工程学攻击。

战术特征:

(1)使用邮件鱼叉攻击和水坑攻击

(2)攻击过程会利用系统破坏或勒索应用干扰事件的分析

(3)利用SMB协议漏洞或相关蠕虫工具实现横向移动和载荷投放

(4)攻击银行SWIFT系统实现资金盗取

技术特征:

(1)使用多种加密算法,包括RC4,AES, Spritz等标准算法,也使用XOR及自定义字符变换算法

(2)主要使用虚假构造的TLS协议,通过在SNI record中写入白域名来Bypass IDS。也使用IRC、HTTP协议

(3)通过破坏MBR、分区表或者向扇区写入垃圾数据从而破坏系统

(4)使用自删除脚本

攻击手段:

(1)鱼叉攻击:鱼叉攻击是计算机病毒术语,是黑客攻击方式之一。将木马程序作为电子邮件的附件,并起上一个极具诱惑力的名称,发送给目标电脑,诱使受害者打开附件,从而感染木马。Lazarus通常以邮件夹带恶意文档作为诱饵,常见文件格式为DOCX,后期增加了BMP格式。入侵方式主要利用恶意宏与Office常见漏洞、0day漏洞、植入RAT的手法。

(2)水坑攻击:顾名思义,是在受害者必经之路设置了一个“水坑(陷阱)”,最常见的做法是,黑客分析攻击目标的上网活动规律,寻找攻击目标经常访问的网站的弱点,先将此网站“攻破”并植入攻击代码,一旦攻击目标访问该网站就会“中招”。Lazarus通常针对贫穷的或欠发达地区的小规模银行金融机构使用水坑攻击,这样就可以在短时间内大范围盗取资金。2017年,Lazarus对波兰金融监管机构发动水坑攻击,在网站官方网站植入恶意的JavaScript漏洞,导致波兰多家银行被植入恶意程式。此次攻击感染了 31 个国家的 104 个组织,大多数目标是位于波兰、智利、美国、墨西哥和巴西的金融机构。

(3)社工攻击:社会工程攻击,是一种利用"社会工程学" 来实施的网络攻击行为。在计算机科学中,社会工程学指的是通过与他人的合法地交流,来使其心理受到影响,做出某些动作或者是透露一些机密信息的方式。这通常被认为是一种欺诈他人以收集信息、行骗和入侵计算机系统的行为。Lazarus擅长将社工技术运用到攻击周期中,无论是投递的诱饵还是身份伪装,都令受害者无法甄别,从而掉入它的陷阱中。2020年期间,Lazarus在领英网站伪装招聘加密货币工作人员并发送恶意文档,旨在获取凭证从而盗取目标加密货币。2021年,Lazarus以网络安全人员身份潜伏在Twitter中,伺机发送嵌有恶意代码的工程文件攻击同行人员。

武器库:

Lazarus使用的网络武器中包含大量定制工具,并且使用代码有很多相似之处。肯定地说,这些软件来自相同的开发人员,可以说明Lazarus背后有具有一定规模的开发团队。Lazarus拥有的攻击能力和工具包括DDoS botnets、 keyloggers、 RATs、wiper malware,使用的恶意代码包括Destover、Duuzer和 Hangman等。

2.2典型攻击事件分析

下面以一起典型的Lazarus针对加密行业的鱼叉攻击为例进行分析。Lazarus通过邮件附件或链接的方式,诱导目标工作人员下载恶意压缩包,并执行压缩包中的恶意文件。

邮件末尾的“CoinbaseJobDescription”即为恶意链接并诱导用户点击,一旦点击用户就会下载恶意压缩包,并执行压缩包中的恶意文件。压缩包分为三种情况:

(1)释放加密的诱饵文件和一个带有恶意命令的LNK文件,由LNK文件下载后续载荷,后续载荷释放文件密钥和恶意脚本;

(2)释放LNK文件,LNK文件下载后续载荷,后续载荷释放诱饵文件和恶意脚本;

(3)释放带宏的OFFICE文件,由恶意宏下载后续载荷并执行。

以样本b94a13586828f8f3474f7b89755f5e7615ff946efd510a4cca350e6e1b4af440为例进行分析。该样本文件名为Ledger_Nano_S&X_Security_Patch_Manual.zip,是一个zip压缩包,文件名中的LedgerNano是一款硬件钱包,用于保护加密资产,S和X是其型号。

该样本伪装成LedgerNano的安全补丁手册,解压后会释放一个伪装成pdf文件的快捷方式文件:

用户双击该快捷方式后,会执行命令:

该命令中,使用cmd静默执行expand程序,将msiexec.exe复制到%appdata%\pat.exe路径下,然后使用pcalua.exe打开pat.exe,从远程服务器上下载msi文件并执行。这个过程中使用了多种逃避木马检测的技术:

(1)expand.exe是系统用于解压压缩包的程序,但可以被用来进行文件复制,代替敏感的copy命令;

(2)复制并重命名msiexec.exe,以逃避对msiexec.exe的执行检测;

(3)pcalua.exe是windows程序兼容性助手,是系统的白名单程序,攻击者使用该程序调用重命名为pat.exe的msiexec.exe,访问远程服务器上的恶意msi文件,从而逃避检测。

获取到的MSI文件运行后,会执行内嵌的脚本:

该脚本为Lazarus典型的一阶段脚本,其功能包括:

(1)下载并打开正常的PDF文件从而迷惑受害者;

(2)向启动目录释放Edge.lnk文件,完成自启动;lnk文件执行的命令与样本解压后的lnk文件基本相同,也是使用pcalua.exe调用重命名后的msiexec.exe加载远程服务器上的msi文件;该文件的名称和图标都伪装为Edge浏览器,使受害者降低警惕;

(3)调用WMI命令获取进程名称列表并进行拼接,然后检查如下进程名称:

“kwsprot”:金山毒霸相关进程

“npprot”:Net ProtectorAntiVirus相关进程

“fshoster”:F-Secure相关进程

(4)如果拼接后的进程名称中存在上述字符串之一,则会使用cscript.exe执行后续脚本,否则使npprot用wscript.exe;

(5)将选定的脚本执行程序复制到%public%目录下;并且如果进程名称中存在kwsprot或npprot,会将用于执行脚本的程序重命名为icb.exe,以逃避检测;

(6)解码base64编码的后续脚本,释放到临时文件夹下,命名为RgdASRgrsF.js

(7)使用复制到%public%目录下的脚本执行程序,执行RgdASRgrsF.js
 

RgdASRgrsF.js是Lazarus典型的二阶段脚本,其功能非常简单,生成随机的UID后与服务器通讯,然后循环接受服务器的命令并执行;所执行的命令通常一些收集系统信息的命令:

至此攻击已经完成,黑客可以在用户电脑上获得他所需的文件或密码等敏感信息。通过对Lazarus的攻击案例分析可以发现,目前其攻击的目标行业包括金融、核工业、化工、医疗、航空航天、娱乐媒体和加密货币等,从2017年开始加密货币行业的比重明显增大。

三、洗钱模式分析

目前已明确统计到的Lazarus攻击加密领域的安全事件和损失如下:

超过30亿美元的资金在网络攻击中被Lazarus盗取,据悉,Lazarus 黑客组织背后有着朝鲜战略利益的支撑,为朝鲜的核弹、弹道导弹计划提供资金。为此,美国宣布悬赏500万美元,对Lazarus黑客组织进行制裁。美国财政部也已将相关地址添加到OFAC特别指定国民(SDN)名单中,禁止美国个人、实体和相关地址进行交易,以确保国家资助的集团无法兑现这些资金,以此进行制裁。以太坊开发商Virgil Griffith因帮助朝鲜使用虚拟货币逃避制裁而被判处五年零三个月的监禁,今年 OFAC 也制裁了三名与Lazarus Group 相关人员,其中两名被制裁者Cheng Hung Man 和 Wu Huihui 是为 Lazarus 提供加密货币交易便利的场外交易 (OTC) 交易员,而第三人 Sim Hyon Sop 提供了其他财务支持。
 

尽管如此,Lazarus已完成了超10亿美元的资产转移和清洗,他们的洗钱模式分析如下。以Atomic Wallet事件为例,去除黑客设置的技术干扰因素后(大量的假代币转账交易+多地址分账),可以得到黑客的资金转移模式:

图:Atomic Wallet 受害者1资金转移视图

受害者1地址0xb02d...c6072向黑客地址0x3916...6340转移304.36 ETH,通过中间地址0x0159...7b70进行8次分账后,归集至地址0x69ca...5324。此后将归集资金转移至地址0x514c...58f67,目前资金仍在该地址中,地址ETH余额为692.74 ETH(价值127万美元)。

图:Atomic Wallet 受害者2资金转移视图

受害者2地址0x0b45...d662向黑客地址0xf0f7...79b3转移126.6万USDT,黑客将其分成三笔,其中两笔转移至Uniswap,转账总额为126.6万USDT;另一笔向地址0x49ce...80fb进行转移,转移金额为672.71ETH。受害者2向黑客地址0x0d5a...08c2转移2.2万USDT,该黑客通过中间地址0xec13...02d6等进行多次分账,直接或间接将资金归集至地址0x3c2e...94a8。
 

这种洗钱模式与之前的Ronin Network、Harmony攻击事件中的洗钱模式高度一致,均包含三个步骤:

(1)被盗资金整理兑换:发起攻击后整理原始被盗代币,通过dex等方式将多种代币swap成ETH。这是规避资金冻结的常用方式。

(2)被盗资金归集:将整理好的ETH归集到数个一次性钱包地址中。Ronin事件中黑客一共用了9个这样的地址,Harmony使用了14个,Atomic Wallet事件使用了近30个地址。

(3)被盗资金转出:使用归集地址通过Tornado.Cash将钱洗出。这便完成了全部的资金转移过程。
 

除了具备相同的洗钱步骤,在洗钱的细节上也有高度的一致性:

(1)攻击者非常有耐心,均使用了长达一周的时间进行洗钱操作,均在事件发生几天后开始后续洗钱动作。

(2)洗钱流程中均采用了自动化交易,大部分资金归集的动作交易笔数多,时间间隔小,模式统一。
 

通过分析,我们认为Lazarus的洗钱模式通常如下:

(1)多账号分账、小额多笔转移资产,提高追踪难度。

(2)开始制造大量假币交易,提高追踪难度。以Atomic Wallet事件为例,27个中间地址中有23个账户均为假币转移地址,近期在对Stake.com的事件分析中也发现采用类似技术,但之前的Ronin Network、Harmony事件并没有这种干扰技术,说明Lazarus的洗钱技术也在升级。

(3)更多的采用链上方式(如Tonado Cash)进行混币,早期的事件中Lazarus经常使用中心化交易所获得启动资金或进行后续的OTC,但近期越来越少的使用中心化交易所,甚至可以认为是尽量在避免使用中心化交易所,这与近期的几起制裁事件应该有关。


 

About SharkTeam:

SharkTeam的愿景是保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约底层理论。提供包括链上大数据分析、链上风险预警、智能合约审计、加密资产追讨等服务,并打造了链上大数据分析和风险预警平台ChainAegis,平台支持无限层级的深度图分析,能有效对抗Web3世界的高级持续性攻击(Advanced Persistent Threat,APT)风险。

-END-

数信云,基于区块链的数据安全应用与服务平台

相关文章:

通付盾Web3专题 | SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式

国家级APT(Advanced Persistent Threat,高级持续性威胁)组织是有国家背景支持的顶尖黑客团伙,专门针对特定目标进行长期的持续性网络攻击。朝鲜APT组织Lazarus Group就是非常活跃的一个APT团伙,其攻击目的主要以窃取资…...

<蓝桥杯软件赛>零基础备赛20周--第8周第1讲--十大排序

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…...

数据增强让模型更健壮

在做一些图像分类训练任务时,我们经常会遇到一个很尴尬的情况,那就是: 明明训练数据集中有很多可爱猫咪的照片,但是当我们给训练好的模型输入一张戴着头盔的猫咪进行测试时,模型就不认识了,或者说识别精度很低。 很明显,模型的泛化能力太差,难道戴着头盔的猫咪就不是猫…...

Redis远程字典服务

1 介绍 Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,包括字符串(strings)、哈希表(hashes)、列表&#…...

Hdoop学习笔记(HDP)-Part.15 安装HIVE

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...

vue3+element-plus之el-date-picker日期选择器清空无回调的解决方案

MENU 前言解决htmlJavaScrip 前言 在一个任务列表的搜索栏,添加一个日期区间搜索。使用到element-plus中的日期选择器el-date-picker;el-date-picker本身方法中有change事件,但是清空按钮没有对应回调方法。在任务列表的搜索需求中&#xff0…...

【虚拟机】Docker基础 【二】

2.2.数据卷 容器是隔离环境,容器内程序的文件、配置、运行时产生的容器都在容器内部,我们要读写容器内的文件非常不方便。大家思考几个问题: 如果要升级MySQL版本,需要销毁旧容器,那么数据岂不是跟着被销毁了&#x…...

CSS 绝对定位问题和粘性定位介绍

目录 1,绝对定位问题1,绝对定位元素的特性2,初始包含块问题 2,粘性定位注意点: 1,绝对定位问题 1,绝对定位元素的特性 display 默认为 block。所以行内元素设置绝对定位后可直接设置宽高。脱离…...

matlab 计算两点云之间的放缩倍数

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 放缩倍数即尺度参数,尺度参数可由2个公共点在不同坐标系下的距离之…...

MySQL-数据库设计与实现

目录 第1关:从概念模型到MySQL实现 第2关:从需求分析到逻辑模型 第3关:建模工具的使用 第1关:从概念模型到MySQL实现 任务描述 将已建好的概念模型,变成MySQL物理实现。 # 请将你实现flight_booking数据库的语句写…...

后端返回图片流前端展示图片

根据后端返回的图片流格式,选用合适方法转换 下面以base64为例 if(res.status 200) {res.data.data.forEach((item,index) > {let Array data:image/png;base64, itemlet blob this.base64toBlob(Array)let url URL.createObjectURL(blob)this.imageList.p…...

解决 from . import _imaging as core ImportError: DLL load failed: 找不到指定的模块。

升级pillow版本就完事了 卸载掉之前的旧版本 conda uninstall pillow升级到新的版本就解决了 pip uninstall pillow 那个错误就解决了...

springBoot3.2 + jdk21 + GraalVM上手体验

springBoot3.2 jdk21 GraalVM上手体验 SpringBoot2.x官方已经停止维护了,jdk8这次真的得换了🤣 可以参考官方文章进行体验:https://spring.io/blog/2023/09/09/all-together-now-spring-boot-3-2-graalvm-native-images-java-21-and-virt…...

Python float(input())的用法,web中的应用

float(input()) 要理解Python中的float(input()),可以分两部分。第一,input()用于获取键盘上的输入,该函数的返回值是一个Python字符串str类型的数据——不过输入的是什么;第二,float()函数用于将传递的参数——这里就…...

uniapp是否可以用elementUI等前端UI库、使用步骤以及需要注意的问题

文章目录 uniapp是否可以用elementUI等前端UI库使用方法和步骤问题如何解决 uniapp是否可以用elementUI等前端UI库 在PC端开发uniapp,可以用elementUI,因为elementUI就是PC端的。 在使用uniapp,选择vue2.0时,实测可以用nodejs16的…...

在vue中如何书写 SSR 友好的代码

文章目录 前言服务端的响应性​组件生命周期钩子​访问平台特有 API​跨请求状态污染​激活不匹配​自定义指令​teleports​后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:vue.js 🐱‍👓博主在前端领域还有很多…...

开源与闭源:数字时代大模型之辩

欢迎大家到我的博客浏览更多文章。YinKais Blog | YinKais Blog 大模型的未来:开源与闭源的博弈 在大模型的发展中,开源和闭源两种截然不同的开发模式发挥着重要的作用。开源以其技术共享的特性,吸引了大量人才参与,推动了大模型的…...

卷积神经网络(VGG-16)猫狗识别

文章目录 一、前言二、前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 再次检查数据3. 配置数据集4. 可视化数据 三、构建VG-16网络四、编译五、训练模型六、模型评估七、保存and加载模型八、预测…...

Mysql 行转列,把逗号分隔的字段拆分成多行

目录 效果如下源数据变更后的数据 方法第一种示例SQL和业务结合在一起使用 第二种示例SQL和业务结合在一起使用 结论 效果如下 源数据 变更后的数据 方法 第一种 先执行下面的SQL,看不看能不能执行,如果有结果,代表数据库版本是可以的&…...

基于单片机设计的智能水泵控制器

一、前言 在一些场景中,如水池、水箱等水体容器的管理中,保持水位的稳定是至关重要的。传统上,人们通常需要手动监测水位并进行水泵的启停控制,这种方式不仅效率低下,还可能导致水位过高或过低,从而对水体…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...