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

朝鲜APT组织使用Nim语言恶意软件对macOS发起隐秘Web3与加密货币攻击

NimDoor macOS恶意软件

朝鲜黑客组织正利用一种罕见且高度先进的恶意软件家族"NimDoor",针对Web3和加密货币初创企业的macOS系统发起新一轮网络攻击。SentinelLABS详细分析显示,该攻击活动融合了社会工程学、新型持久化策略以及Nim编程语言的非常规使用,标志着朝鲜网络间谍与金融窃取手段的显著升级。

攻击链分析

攻击始于典型的朝鲜式社会工程手段:攻击者通过Telegram冒充可信联系人,诱骗受害者通过Calendly加入虚假Zoom会议。目标用户会收到要求运行"Zoom SDK更新脚本"的消息,该脚本托管在伪装成Zoom支持页面的攻击者控制域名上。

SentinelLABS指出:"在公开恶意软件库中可以找到该脚本的变体,其明显特征是存在'Zook SDK Update'而非'Zoom SDK Update'的拼写错误。"

该AppleScript文件包含10,000行空白字符,最后三行代码会从support.us05web-zoom[.]forum等域名静默下载并执行恶意负载。执行后会释放两个二进制文件至/private/var/tmp目录:

  • a- 采用C++编写的二进制文件,负责初始系统指纹识别并将shellcode注入良性进程
  • installer- Nim编译的通用二进制文件,用于建立持久化机制并投放后续负载(GoogIe LLC和CoreKitAgent)

技术突破点

值得注意的是,macOS平台上使用Nim语言编译的恶意软件极为罕见。SentinelLABS强调:"攻击者广泛部署AppleScript...并使用包含加密配置处理、异步执行以及信号驱动持久化机制的Nim编译二进制文件,这些技术在macOS恶意软件中前所未见。"

该恶意软件采用独特的macOS持久化技术——仅在进程终止时激活。CoreKitAgent二进制文件为SIGINT和SIGTERM(进程终止信号)设置处理程序,在收到终止信号时立即部署持久化组件。这种设计实现了防御规避,当安全团队尝试终止可疑进程时,反而会触发核心组件的部署。

通信与数据窃取

核心后门通过WSS(WebSocket Secure)协议与firstfromsep[.]online等C2服务器通信,采用RC4加密和多层base64编码。每个受害者拥有唯一的Build ID,命令通过包含加密cmd和data字段的JSON对象下发。支持的命令包括:

  • execCmd- 执行任意shell命令
  • getSysInfo- 提取系统信息
  • getCwd/setCwd- 文件系统操作

两个Bash脚本(upl和tlgrm)负责数据窃取:

  • upl窃取Chrome、Firefox、Edge、Brave和Arc等浏览器的数据,以及钥匙串文件和shell历史记录
  • tlgrm窃取Telegram加密的本地数据库和密钥块用于潜在解密

所有数据均上传至共享端点:https[:]//dataupload[.]store/uploadfiles。嵌入的AppleScript作为轻量级后门,每30秒向writeup[.]live等C2服务器发送心跳信号,并在收到响应时执行命令。该脚本使用长十六进制字符串和随机字符列表进行混淆以规避检测。

攻击特征总结

此次攻击活动代表了迄今为止观察到的最复杂的朝鲜关联macOS威胁,具备完整攻击套件:

  • Nim与C++混合负载
  • WSS加密C2通信
  • 信号驱动持久化机制
  • AppleScript后门
  • 浏览器/钥匙串/Telegram数据窃取
  • 反调试与虚拟机逃逸技术

SentinelLABS警告称:"我们根据其功能特性和开发特征,将该恶意软件家族统称为NimDoor。这并非一次性攻击,而是经过演练的模块化攻击手册,很可能在未来针对Web3、加密货币等领域macOS用户的攻击中重复使用。"

http://www.dtcms.com/a/265493.html

相关文章:

  • 中国户外品牌全球竞争力榜单发布:科技突围与文化赋能重塑行业格局
  • 现代工程科技杂志投稿
  • 后端MVC(控制器与动作方法的关系)
  • 微服务外联Feign调用:第三方API调用的负载均衡与容灾实战
  • C++之路:类基础、构造析构、拷贝构造函数
  • Rust Web 全栈开发(一):构建 TCP Server
  • Go基础(Gin)
  • Webpack 5 核心机制详解与打包性能优化实践
  • 牛客:HJ16 购物单【01背包】【华为机考】
  • 前端单元测试覆盖率工具有哪些,分别有什么优缺点
  • 在 Sepolia 上使用 Zama fhEVM 构建隐私代币与流动性池:全流程实战指南
  • Android音视频探索之旅 | CMake基础语法 创建支持Ffmpeg的Android项目
  • 【免费.NET方案】CSV到PDF与DataTable的快速转换
  • 音频动态压缩算法曲线实现
  • C++【成员变量、成员函数、this指针】
  • OSPF高级特性之FRR
  • Vue 项目在哪里加载「字典数据」最好
  • 基于 alpine 构建 .net 的基础镜像
  • 开源模型应用落地-让AI更懂你的每一次交互-Mem0集成Qdrant、Neo4j与Streamlit的创新实践(四)
  • Zookeeper 客户端 .net访问框架 ZookeeperNetEx项目开发编译
  • 开源 C# .net mvc 开发(六)特殊控制控制台、周期、邮件编程
  • 深度实战:Ubuntu服务器宕机排查全记录
  • 月付物理服务器租用平台-青蛙云
  • 基于 govaluate 的监控系统中,如何设计灵活可扩展的自定义表达式函数体系
  • npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
  • Python Set() 完全指南:从入门到精通
  • R语言开发记录,一
  • 前端-HTML-day1
  • Rust Web 全栈开发(二):构建 HTTP Server
  • 主流分布式中间件及其选型