[译文] 恶意代码分析:1.您记事本中的内容是什么?受感染的文本编辑器notepad++
这是作者新开的一个专栏,主要翻译国外知名安全厂商的技术报告和安全技术,了解它们的前沿技术,学习它们威胁溯源和恶意代码分析的方法,希望对您有所帮助。当然,由于作者英语有限,会借助LLM进行校验和润色,最终结合自己的安全经验完成,还请包涵!
这篇文章将介绍文本编辑器notepad++如何被感染的,通过恶意链接引导用户下载恶意的编辑器,并分析其恶意行为,类似于上游供应链攻击或钓鱼攻击,并且对中国用户造成一定影响。一方面,作为用户,我们需要防范类似的攻击并从正版官方网站中下载应用程序;另一方面,通过该文章我们能分析恶意软件逆向分析过程,以及关键代码特征提取及分析方式(如spacex命名)。基础性技术文章,希望您喜欢!
- 当时看标题作者第一反应是:记事本中嵌入恶意代码或钓鱼链接发起攻击,想了半天不知道如何实现。究竟能否利用记事本TXT文件发起攻击呢?又将如何防御?值得深思。
文章目录
- 前言
- 一.搜索引擎中的恶意网站
- 二.携带恶意载荷的文本编辑器
- 三.受感染应用程序之间的连接
- 四.总结
- 原文标题:《What’s in your notepad? Infected text editors target Chinese users》
- 原文链接:https://securelist.com/trojanized-text-editor-apps/112167/
- 文章作者:SERGEY PUZAN
- 发布时间:2024年3月13日
- 文章来源:https://securelist.com
前言
“恶意广告(Malvertising)” 是一种广泛采用的策略,旨在诱使受害者访问含有恶意内容的网站,其通常会在搜索结果的顶部放置广告块,以增加用户点击链接的概率。此外,搜索结果顶部的网站也往往更容易获得用户的信任。一年前,我们的专家已经讨论过如何通过Google Ads传播的 RedLine
窃密软件的恶意广告行为。攻击者利用诸如拼写错误(typosquatting)等技术,以模仿流行应用的官方网站,从而最大限度地提高欺骗性。
当前,类似的威胁已影响到中国互联网上广受欢迎的搜索引擎的用户。我们的研究团队发现了两起相关案例,影响了流行文本编辑器的修改版本:
- 在第一个案例中,恶意资源出现在广告区域
- 在第二个案例中,恶意资源出现在搜索结果的顶部
我们尚未确定该威胁的所有细节,因此本文档将在获取进一步信息后进行必要的更新。
一.搜索引擎中的恶意网站
以下截图展示了搜索引擎反馈的两个包含了恶意链接的结果,左图在搜索notepad++的广告区域中发现了恶意链接,右图是搜索vnote的结果。
- notepad++
- vnote
在搜索notepad++时,我们观察到恶意网站会利用广告模块来传播其内容。当打开该网站时,细心的用户会立即注意到一个异常现象:网站地址中包含了vnote,且标题宣称提供的是Notepad-- (一款与Notepad++类似的产品,同样作为开源软件被分发),但图片却醒目地展示了 Notepad++。实际上,从这里下载得到的软件是Notepad-- 。
该网站提供了针对三大主流操作系统平台(Windows、Linux、macOS)的安装程序。然而,这里仅有两个恶意链接,分别指向macOS和Linux版本的下载页面。Windows版本的链接则指向官方存储库,因此不是恶意链接。
上图展示了点击恶意Notepad–下载按钮所对应的链接。其显示了恶意安装包的来源为:
- vnote-1321786806[.]cos[.]ap-hongkong[.]myqcloud[.]com
同时,在搜索 vnote 时发现第二个页面试图模仿该程序的官方网站:
遗憾的是,在调查时,曾指向 VNote 潜在恶意版本的链接已失效。尽管如此,它们与 Notepad-- 链接指向了相同的资源。
二.携带恶意载荷的文本编辑器
该部分我们将分析感染软件的恶意行为,以及挖掘其背后的意图。
鉴于我们拥有 Linux 和 macOS 平台上的假冒 Notepad-- 样本,我们可以进一步逆向分析它们。所下载的应用程序与原始版本存在多处差异,并且Linux和macOS的恶意版本在功能上非常相似。
接下来,我们将分析 macOS 版本(MD5: 00fb77b83b8ab13461ea9dd27073f54f)。它是一个 DMG 格式的磁盘映像文件,其内容除了包含一个名为 NotePad-- 的可执行文件(MD5: 6ace1e014863eee67ab1d2d17a33d146)外,其他方面均与原始版本(2.0.0)相同。
在对 main
函数进行深入分析时,我们发现,在应用程序启动之前,对名为 Uplocal
的可疑类进行了初始化。需要注意,该类在原始 Notepad-- 的源代码中并不存在。
此类仅实现了一个名为 run
的方法。其主要功能是将文件下载到 /tmp/updater
路径并执行它。下图展示了 Uplocal
类 run 方法的载荷(Payload)。
该文件的下载地址如下:
- hxxp://update[.]transferusee[.]com/onl/mac/<md5_hash>
其中, <md5_hash> 是通过执行以下 bash 命令并在 GetComputerUUID
函数中获取设备序列号的 MD5 哈希值。
ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { print $3; }'
Linux版本与macOS版本略有不同:
- 文件从相同的地址下载,但位于目录 /onl/lnx/ 下,即为:
– hxxp://update[.]transferusee[.]com/onl/lnx/<md5_hash> - <md5_hash> 是设备 MAC 地址的 MD5 哈希值
不幸的是,在我们进行调查时,服务器已不再提供所下载的文件。因此,我们无法确定该文件原本应包含的内容。
然而,我们确定该服务器还有一个子域 dns[.]transferusee[.]com,它通过名为 DPysMac64(MD5: 43447f4c2499b1ad258371adff4f503f)的 Mach-O 文件进行访问,该文件之前已上传到 VT,但在调查时未被任何供应商检测到。
此外,该文件被存储在预期神秘更新程序应从同一服务器下载的同一位置上。下图展示了从 update[.]transferusee[.]com 加载 DPysMac64 文件。
由此,我们可以相当确信地推断出,该更新程序(updater)是一个中间步骤,其最终目的应当是引导加载 DPysMac64。此外,该服务器还托管了一个名为 DPysMacM1 的文件,其名称暗示它是专为运行于Apple Silicon处理器上的系统而构建的。然而,实际上它与 DPysMac64 为同一文件。
该应用程序被确认为一个后门程序,与所谓的 Geacon
高度相似。
- Geacon 是一个开源实现的 CobaltStrike 代理,用Go语言编写而成。
尽管攻击者在其项目中删除了对 Geacon 的任何直接提及(mention),但我们发现了大量与 geacon_plus
、geacon_pro
和 BeaconTool
的实现相匹配的代码片段、名称、函数和模块。例如,它们几乎拥有完全相同的 sysinfo
模块、FirstBlood
函数、EncryptedMetaInfo
函数、PullCommand
函数等。
下图对比了DPysMac64 的 sysinfo 模块(左侧)与 geacon_pro 实例(右侧)的功能列表。
该后门程序配备了两种启动选项——常规启动和作为服务启动。其与C2服务器 dns[.]transferusee[.]com 的通信采用HTTPS协议进行。有趣的是,攻击者将实现远程命令执行功能的项目命名为spacex。
该后门程序包含以下命令列表:
三.受感染应用程序之间的连接
虽然我们无法确定先前从vnote[.]info下载的文件内容,但我们发现,这两个网站上分发应用程序的源地址是相同的。此外,值得一提的是,在检查修改后的NotePad时,我们意外地发现了另一个有趣的细节。在可执行文件的代码中,我们发现了类似于“关于(About)”窗口的文本,但其中的链接并非指向官方项目网站,而是指向了可疑的资源vnotepad[.]com。以下是程序中“关于”窗口的用户界面截图。
“关于”窗口中的链接将我们导向了一个占位页面:
我们认为此现象颇为异常,因此尝试将协议从HTTP切换到HTTPS,进而发现该网站是VNote网站的另一个版本,与我们之前在vnote[.]info上观察到的内容高度相似。此外,在打开该网站时,浏览器警告我们其使用的证书是无效的,因为该证书实际是为vnote[.]info颁发的。
这表明两个案例之间存在明确且直接的联系,以及高度的相似性,即修改后的VNote编辑器与 NotePad-- 的目的相似,均涉及下一阶段的感染传递。
四.总结
我们持续对上述威胁进行深入研究,并探寻尚未披露的中间阶段。此外,我们已确定Linux和macOS应用程序中的更改是相同的,这暗示可能存在一个与我们在macOS上发现的类似的Linux后门。
还有很多细节直接我们分析,尤其当我们需要逆向分析一个样本并挖掘其背后机理时。
入侵指标(Indicators of Compromise,简称IOC)
文件:
链接:
2024年4月28日是Eastmount的安全星球——『网络攻防和AI安全之家』正式创建和运营的日子,该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修改及润色、学术交流及答疑、人脉触达、认知提升等。下面是星球的新人券,欢迎新老博友和朋友加入,一起分享更多安全知识,比较良心的星球,非常适合初学者和换安全专业的读者学习。
目前收到了很多博友、朋友和老师的支持和点赞,尤其是一些看了我文章多年的老粉,购买来感谢,真的很感动,类目。未来,我将分享更多高质量文章,更多安全干货,真心帮助到大家。虽然起步晚,但贵在坚持,像十多年如一日的博客分享那样,脚踏实地,只争朝夕。继续加油,再次感谢!
(By:Eastmount 2024-05-08 星期三 夜于贵阳 http://blog.csdn.net/eastmount/ )
相关文章:

[译文] 恶意代码分析:1.您记事本中的内容是什么?受感染的文本编辑器notepad++
这是作者新开的一个专栏,主要翻译国外知名安全厂商的技术报告和安全技术,了解它们的前沿技术,学习它们威胁溯源和恶意代码分析的方法,希望对您有所帮助。当然,由于作者英语有限,会借助LLM进行校验和润色&am…...

Spring Boot3.x集成Disruptor4.0
Disruptor介绍 Disruptor是一个高性能内存队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年&…...

GoEdge自建CDN工具
GoEdge是一款管理分布式CDN边缘节点的开源工具软件,可以让用户轻松地、低成本地创建CDN/WAF等应用。同时提供免费版本和商业版本,本文基本免费版本安装测试。 GoEdgep安装涉及三部分: 边缘节点 - 接收和响应用户请求的终端节点 管理员系统 - …...
牛客储物点的距离
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 一个数轴,每一个储物点会有一些东西,同时它们之间存在距离。 每次给个区间[l,r],查询把这个区间内所有储物点的东西运到另外一个储物点的代价是多少࿱…...

【C++历练之路】红黑树——map与set的封装实现
W...Y的个人主页💕 gitee代码仓库分享😊 前言:上篇博客中,我们为了使二叉搜索树不会出现”一边倒“的情况,使用了AVL树对搜索树进行了处理,从而解决了数据在有序或者接近有序时出现的情况。但是AVL树还会…...

RDB快照是怎么实现的?
RDB快照是怎么实现的? 前言快照怎么用?执行快照时,数据能被修改吗?RDB 和 AOF 合体 前言 虽说 Redis 是内存数据库,但是它为数据的持久化提供了两个技术。 分别是「 AOF 日志和 RDB 快照」。 这两种技术都会用各用一…...

智能体可靠性的革命性提升,揭秘知识工程领域的参考架构新篇章
引言:知识工程的演变与重要性 知识工程(Knowledge Engineering,KE)是一个涉及激发、捕获、概念化和形式化知识以用于信息系统的过程。自计算机科学和人工智能(AI)历史以来,知识工程的工作流程因…...
Shell 初始化配置指北 | Ubuntu
唠唠闲话 概要:在不同的Shell环境(如Bash和Zsh)中设置环境变量、设置初始脚本,以及如何根据不同的使用场景(用户级或系统级)管理和设置初始运行命令。 p.s. 如果你很熟悉 Linux,推荐跳到最后一…...

[嵌入式系统-69]:RT-Thread-组件:网络组件“组”,RT-Thread系统通向外部网络世界的入口
目录 RT-Thread 提供的网络世界入口 - 网络组件 1. 总概 2. AT 3. Lwip: 轻量级IP协议栈 4. W5500 5. Netdev 6. RT-Thread SAL(Socket Abstraction Layer)套接字和BSD套接字区别 RT-Thread SAL 套接字接口示例 BSD 套接字接口示例 …...

Linux学习笔记1---Windows上运行Linux
在正点原子的教程中学习linux需要安装虚拟机或者在电脑上安装一个Ubuntu系统,但个人觉得太麻烦了,现在linux之父加入了微软,因此在Windows上也可以运行linux 了。具体方法如下: 一、 在Windows上的设置 在window的搜索框内&#…...
Java算法-力扣leetcode-135. 分发糖果
135. 分发糖果 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并…...

企业为什么需要主数据管理工具?十大热门主数据管理工具盘点
主数据管理是一套综合性的策略和技术,用于协调和管理企业内用于识别关键业务实体(如客户、产品、供应商和员工)的一致性、准确性和统一性的数据。主数据管理的目的是创建一个“单一真相源”,确保在不同部门和系统之间共享的数据保…...

免费思维13招之一:体验型思维
思维01:体验型思维 第一大战略:体验型思维。 体验型思维是免费思维中最简单的思维,我们先从最简单的讲起,由简入繁,简单的我们少讲,复杂的我们多讲。 那么,什么是体验型思维呢? 很简单,就是先让客户进行体验,再进行成交的方式。这一种思维,具体的可以分为两种:…...

面试C++(基础篇)-NULL与nullptr的区别?
3: NULL与nullptr的区别? 在C中,NULL和nullptr都用于表示空指针,但它们之间存在一些关键的区别: 1. 来源和含义: • NULL:在C中,NULL最初是从C语言中继承过来的,定义在<cstddef…...
「AIGC」深度学习
深度学习是机器学习的一个子领域,它基于人工神经网络的学习算法。深度学习在图像和语音识别、自然语言处理、医学图像分析、药物发现、自动驾驶汽车等领域取得了显著的进展。以下是围绕深度学习的几个关键主题的阐述。 学习路线 基础数学: 了解线性代数…...

mysql5.7数据库安装及性能测试
mysql5.7数据库安装及性能测试 记录Centos7.9下安装mysql 5.7并利用benchmark工具简单测试mysql的性能。 测试机:centos7.9 配置:4C8G40G 1. 下安装mysql5.7 安装mysql5.7: # 通过官方镜像源安装$ wget http://dev.mysql.com/get/mysql57-com…...

聪明与诚实:社会信任的桥梁
在现代社会中,我们经常听到这样的评价:“某人真聪明。”然而,当我们深入思考时,会发现“聪明”这个词背后所承载的含义并不单一。聪明和狡诈往往被混淆,而诚实的价值却时常被忽视。在一个高度诚信的社会里,…...

基于单片机的无线数据传输系统设计
摘要:基于单片机的无线数据传输系统的设计,实现了温度和湿度的自动采集、无线通讯和报警功能。该系统包括了LCD1602显示电路、DHT11温湿度采集电路等,完成了基于无线数据传输的方法来实现温湿度的采集。 关键词:温湿度检测;N RF 24 L 01;单片机 0 引言 随着科技水平的提高,…...

【IP:Internet Protocol,子网(Subnets),IPv6:动机,层次编址:路由聚集(rout aggregation)】
文章目录 IP:Internet Protocol互联网的的网络层IP分片和重组(Fragmentation & Reassembly)IP编址:引论子网(Subnets)特殊IP地址IP 编址: CIDR子网掩码(Subnet mask)转发表和转发…...

智启算力平台基本操作
智启算力平台 智启算力平台路径搭载数据集搭载镜像配置 智启算力平台 开发文档 帮助文档 - OpenI - 启智AI开源社区 路径搭载 OpenIOSSG/promote: 启智AI协作平台首页推荐组织及推荐项目申请。 - notice/Other_notes/SDKGetPath.md at master - promote - OpenI - 启智AI开…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...