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

APT 组织 Kimsuky 瞄准大学研究人员

执行摘要

Kimsuky 是一个朝鲜 APT 组织,其任务是执行符合朝鲜政府利益的全球情报收集行动。该组织自 2012 年以来一直活跃,对韩国智库和政府实体特别感兴趣;然而,它也针对美国、英国和其他欧洲国家。Kimsuky 擅长进行有针对性的网络钓鱼活动,在通过电子邮件通信建立信任后,利用后续电子邮件中的恶意附件进行攻击 [1][2]。

2024 年春,美国国家安全局和联邦调查局发布了一份针对朝鲜民主主义人民共和国(DPRK,又名朝鲜)的联合网络安全咨询,具体指出 Kimsuky 利用配置不当的 DNS 基于域的消息认证、报告和一致性 (DMARC) 记录策略来隐藏社会工程尝试 [3]。这份咨询报告指出,DPRK 倾向于冒充学者、记者或其他东亚专家,针对韩国、美国和欧洲开展活动 [2][3]。

2024 年 7 月下旬,Resilience 分析师发现威胁行为者 Kimsuky 犯了一个操作安全 (OPSEC) 错误。我们的分析师利用这一点收集了大量源代码、登录凭据、流量日志和内部笔记。根据我们收集的数据,我们评估 Kimsuky 正在钓鱼大学员工、研究人员和教授进行间谍活动。一旦进入大学网络,Kimsuky 就可以窃取朝鲜政府的研究和情报。

这些行动与朝鲜政府主要外国情报收集机构侦察总局 (RGB) 的目标一致。金修基此前曾试图窃取核武器研究、医疗保健和制药机密 [4]。在某些情况下,金修基还被认定为进行以经济为目的的网络犯罪,据信这些犯罪正在为他们的间谍活动提供资金 [4]。朝鲜试图利用这些信息来改善其严重缺乏成熟科学界的国家。

以下技术细节和建议提供了有关 Kimsuky 如何运作以及如何以大学为目标进一步开展朝鲜间谍行动的更多信息。

弹性建议

对于可能成为国家支持的运动目标的人,Resilience 建议采取以下高级策略:

  • 利用防网络钓鱼的多因素身份验证,例如符合 FIDO 的硬件令牌或基于推送的移动应用程序。
  • 请务必仔细检查您登录的 URL 是否与您预期登录的页面相匹配。一些密码管理器会自动执行此操作。
  • 审查并测试模拟 Kimsuky 活动的突破和攻击模拟包。

技术细节

暂存基础设施

CISA 先前的报告表明,Kimsuky 使用受感染的互联网主机来发动攻击。根据我们收集的数据,他们可以访问 audko[.]store、dorray[.]site、nusiu[.]live、osihi[.]store、simos[.]online、sorsi[.]online、wodos[.]online 和 wodods[.]xyz。

在获得基础设施访问权限以进行攻击后,威胁组织在主机上设置了一个名为“Green Dinosaur”的 Webshell。此 Webshell 允许操作员上传、下载、重命名和删除文件。此 Webshell 似乎基于从名为 Indrajith Mini Shell 2.0 [5] 的旧 Webshell 中提取的代码。然而,Green Dinosaur 删除了功能,限制了检测可能性,同时允许操作员放置钓鱼网站。

图片:“绿色恐龙”webshell

图片:“绿色恐龙”webshell

我们从 Kimsuky 基础设施获得的 GreenDinosaur 样本都经过了多层 base64 和 gz 压缩字符串的混淆,很可能是为了防止托管公司检测到。最后一层是使用 PHP 函数“strtr”的 base64 和多字符替换的混合。

图片:去混淆后的“绿色恐龙” webshell 源代码示例

图片:去混淆后的“绿色恐龙” webshell 源代码示例

钓鱼页面

设置 Green Dinosaur 后,运营商上传了预先构建的网络钓鱼页面。这些网络钓鱼页面是通过首先抓取他们模仿的真实登录门户来创建的。然后使用其他代码修改抓取的页面以记录任何输入的凭据。在这次活动中,针对同德大学、高丽大学和延世大学创建了网络钓鱼页面。此外,我们还发现了一个用于窃取 Naver 帐户的网络钓鱼工具包。

同德大学

同德大学钓鱼页面在视觉上与真正的同德电子邮件登录页面完全相同,但包含了一些可用作武器的修改。

图片:合法的 Dongduk 登录页面(上)和 Kimsuky 恶意登录页面(下)显示出明显的相似性。

图片:合法的 Dongduk 登录页面(上)和 Kimsuky 恶意登录页面(下)显示出明显的相似性。

图片:修改后的同德登录页面 HTML 代码截图

图片:修改后的同德登录页面 HTML 代码截图

上面的代码是添加到登录页面的主要部分。开发人员首先注释掉了网站使用 Dongduks 公共 RSA 密钥加密密码值的默认行为。以下代码获取用户名、密码和登录尝试次数,并将其发送到 j_spring_securty_check.php,而不是使用常规提交函数。此 PHP 文件包含以下代码:

图片:j_spring_security_check.php 代码的屏幕截图

图片:j_spring_security_check.php 代码的屏幕截图

该文件与 j-spring 或安全无关,它收集有关访问者、当前时间的信息,并将受害者的用户名和密码记录到服务器上的文件中。从受害者的角度来看,在他们第一次尝试登录后,他们会看到一条消息,上面写着“登录失败”,并提示他们再次输入凭证。这很可能是为了确保威胁行为者获得没有拼写错误的密码。在第二次尝试后,他们会被重定向到另一个网站,就好像登录正常一样,但实际上他们的凭证只是被记录到服务器上的文本文件中。

图片:正在记录的凭证的屏幕截图

图片:正在记录的凭证的屏幕截图

对于同德大学的目标,他们被重定向到一份 PDF 文件,标题为“2024년 8월 비공개 아산정책포럼 참석요청서 계획(안)”(翻译:2024 年 8 月非公开的安山政策论坛计划(草案)),该文件托管在 Google Drive 上(https[😕/]drive[.]google[.]com/file/d/1ra7zb3K4BPF3qjJ-lNdWs_qQQeeR4z38/view)。这份 PDF 文件由 Google 用户 kimduyong2020@gmail[.]com 上传到 Google Drive,他拥有南北朝鲜交流合作支援协会的个人资料照片。

图片:南北韩交流合作支援协会徽标用作 kimduyong2020@gmail[.]com 的个人资料照片

图片:南北韩交流合作支援协会徽标用作 kimduyong2020@gmail[.]com 的个人资料照片

PDF 是峨山政策研究院 8 月论坛的邀请函。此诱饵可能与真正的峨山政策研究院在 2024 年 7 月 16 日的一篇博客文章中提到的相同,该文章警告成员注意来自 Daum、Gmail 和 Naver 帐户的网络钓鱼攻击 [6]。

图片:峨山政策研究院八月论坛 PDF

图片:峨山政策研究院八月论坛 PDF

[外链图片转存中…(img-c3QaofpP-1723269293303)]

图片:峨山政策研究院 - 往期活动:‘关于恶意钓鱼邮件的安全警告’

高丽大学

高丽大学登录页面采用与同德大学类似的方法,但不是修改文档的 HTML,而是修改其中一个 javascript 导入来传递登录凭据。

图片:韩国大学合法登录页面(上)与 Kimsuky 恶意登录页面(下)呈现出明显的相似性。

图片:韩国大学合法登录页面(上)与 Kimsuky 恶意登录页面(下)呈现出明显的相似性。

图片:修改后的韩国大学 JavaScript 代码截图

图片:修改后的韩国大学 JavaScript 代码截图

发送 urlencoded 的用户名、密码和计数的 login.php 文件与 Dongduk 钓鱼页面上的 j_spring_securty_check.php 文件相同,但会将受害者重定向到真正的登录页面 https://portal.korea.ac.kr/mail/。

延世大学

延世大学的登录页面采用与同德大学几乎相同的方法,并使用 AJAX 将凭证传输至 login.php。

图片:合法的延世大学登录页面(上)和 Kimsuky 恶意登录页面(下)显示出明显的相似性。

图片:合法的延世大学登录页面(上)和 Kimsuky 恶意登录页面(下)显示出明显的相似性。

图片:修改后的延世大学登录页面 HTML 代码截图

图片:修改后的延世大学登录页面 HTML 代码截图

接收 urlencoded 用户名、密码和计数的 login.php 文件与 Dongduk 钓鱼页面上的 j_spring_securty_check.php 文件完全相同,但是会将受害者重定向到真正的登录页面https://mail.yonsei.ac.kr/。

Naver

此外,Kimsuky 的网络钓鱼网站上还有一个非针对特定目标的网络钓鱼工具包,用于收集 Naver 帐户。该工具包是一个类似于 Evilginx 的基本代理,用于窃取访问者的 cookie 和凭据,并显示弹出窗口,告知用户他们需要重新登录,因为与服务器的通信已中断。

图片:Kimsuky 恶意弹出窗口的屏幕截图,提示用户由于服务器通信错误而重新登录

图片:Kimsuky 恶意弹出窗口的屏幕截图,提示用户由于服务器通信错误而重新登录

在弹出窗口中单击“确定”后,受害者将被重定向到虚假的 Naver 登录页面。

图片:Kimsuky 恶意 Naver 登录页面截图

图片:Kimsuky 恶意 Naver 登录页面截图

发送邮件

为了让目标访问这些钓鱼网站,Kimsuky 上传了一个使用 GreenDinosaur 的自定义 PHPMailer 实现,简称为“SendMail”。在我们观察到的活动中,这个 PHPMailer 利用首尔国立大学教授的受感染电子邮件帐户访问托管在韩国的 CRM 应用程序 Dooray 的 SMTP 服务器。在 SendMail 中,多个 gmail 和 daum 帐户也被用作源地址。在操作员编写的注释文本文件中,列出了几个 gmail 和 daum 帐户及其密码、恢复电子邮件和 2fa 备份代码。这些电子邮件帐户用于向同德大学、高丽大学、延世大学和其他目标的员工发送钓鱼电子邮件。注释中的链接还指向“发送”工具在某个时间点托管在“http://penlu[.]or[.]kr/data/view[.]php”。我们发现的所有电子邮件帐户都有相同的密码“1qaz2wsx#EDC$RFV”和相同的恢复电子邮件:“nasndaoop@gmail[.]com”。

钓鱼账户

nahoiu95@gmail[.]com
nolpoaw@daum[.]net
nasaioy0@gmail[.]com
nboipw@daum[.]net
nkodfgl@gmail[.]com
naokilw@daum[.]net
nsmnop99@gmail[.]com
nabsoiu @daum[.]net
nanmskeo@gmail[.]com
nmakope@daum[.]net
nasndaoop@gmail[.]com
aaa@naver[.]com
no-reply@sisileae[.]com

我们获得的 SendMail 配置预加载了多个以 Naver 为主题的钓鱼邮件,主题为“네이버 아이디 탈퇴가 완료되었습니다”(翻译:Naver ID 已成功删除)和“[네이버]메일 송수신 기능 제한 알림。”(翻译:发送和接收 Naver 邮件存在限制。)这些钓鱼邮件和其他钓鱼邮件链接回众多钓鱼网站。

图片:Kimsuky 的 SendMail 工具的屏幕截图

图片:Kimsuky 的 SendMail 工具的屏幕截图

相关文章:

APT 组织 Kimsuky 瞄准大学研究人员

执行摘要 Kimsuky 是一个朝鲜 APT 组织,其任务是执行符合朝鲜政府利益的全球情报收集行动。该组织自 2012 年以来一直活跃,对韩国智库和政府实体特别感兴趣;然而,它也针对美国、英国和其他欧洲国家。Kimsuky 擅长进行有针对性的网…...

Golang | Leetcode Golang题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; import "math/rand" // 默认导入的 rand 不是这个库&#xff0c;需要显式指明type node struct {ch [2]*nodepriority intkey intdupCnt intsz int }func (o *node) cmp(b int) int {switch {case b < o.k…...

Django5实战

一、安装&#xff1a; 1、安装Django环境&#xff1a; # 安装 pip install django5.0.3# 验证 5.0.3 python -m django --version 安装慢的解决方法&#xff1a;使用阿里云的镜像源 pip install -i https://mirrors.aliyun.com/pypi/simple django5.0.3 2、创建项目&#…...

网址管理功能 Webstack

前言 在工作生活中大家可能会收集各种网址地址&#xff0c;大部分同学都是通过浏览器标签进行管理。如果你换电脑或者电脑不再身边的时候就有些不方便了。接下来我要向大家推荐一个工具&#xff1a;在线网址导航。 CNS学术导航 大家通过搜索引擎可以很方便的搜索到各种网址导航…...

【热工与工程流体力学】第1章 流体及其主要物理性质,流体的粘性,压缩性,流体的质量力和表面力(西北工业大学)

第1章 流体及其主要物理性质 一、流体力学概述 二、流体力学发展简史 三、本课程的教学计划 四、连续介质模型 五、流体的主要物理性质 六、作用在流体上的力 七、本课程中使用的单位制 一、流体力学概述 1.流体的概念 在任何微小剪应力持续作用下连续变形的物质称为流…...

TCP和UDP区别,各自的应用场景

区别 是否基于链接 TCP是面向连接的协议&#xff0c;发送数据之前需要建立连接&#xff1b;而UDP是无连接的协议&#xff0c;即发送数据之前不需要简历连接。 可靠性和有序性区别 TCP提供交付保证&#xff0c;&#xff08;TCP通过校验和重传控制&#xff0c;序号表示&#xff…...

Java开发工具IDEA

IDEA概述 Intellij IDEA IDEA全称Intellij IDEA&#xff0c;是用于Java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 集成环境 把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试等多种功能综合到一起的开发工具。 IDEA下载和安…...

VIVADO IP核之DDS直接数字频率合成器使用详解

VIVADO IP核之DDS直接数字频率合成器使用详解 目录 前言 一、DDS基本知识 二、DDS IP核使用之SIN COS LUT only 三、DDS IP核之SIN COS LUT only仿真 四、DDS IP核使用之Phase Generator and SIN COS LUT 五、DDS IP核之Phase Generator and SIN COS LUT仿真 总结 前言 …...

Vue3 插槽 使用笔记

Vue3 插槽 使用笔记 介绍 在 Vue 3 中&#xff0c;插槽&#xff08;Slot&#xff09;是一个非常强大的特性&#xff0c;它允许我们更好地组织和重用组件。通过定义插槽&#xff0c;子组件可以预留出由父组件控制的区域&#xff0c;这样父组件就可以向这些区域填充自己的内容。…...

Vue2与Vue3响应式原理对比

Vue2.x 响应式原理 Vue2.x 响应式&#xff1a; 实现原理 对象类型&#xff1a;通过 Object.defineProperty() 对属性的读取、修改进行拦截( 数据劫持 )数组类型&#xff1a;通过重写数组方法&#xff0c;并作为拦截器挂载到数组对象与数组原型之间&#xff0c;来实现拦截。 存在…...

Android系统Android.bp文件详解

文章目录 1. 基本语法结构2. 常见模块类型3. 模块属性常见属性包括&#xff1a; 4. 具体示例5. 高级功能5.1. 条件编译5.2. 变量定义与使用5.3. 模块继承 6. 总结 Android.bp 是 Android 构建系统&#xff08;Android Build System&#xff09;中的配置文件&#xff0c;用于描述…...

eNSP 华为静态路由配置

R1&#xff1a; <Huawei>system-view [Huawei]sysname R1 [R1]int g0/0/0 //进入g0/0/0端口 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24 //给端口配置IP地址和子网掩码 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip addr…...

Type-C PD芯片:引领智能充电与数据传输的新时代

随着科技的飞速发展&#xff0c;智能设备已经成为我们日常生活中不可或缺的一部分。无论是智能手机、平板电脑、笔记本电脑&#xff0c;还是智能家居设备&#xff0c;都需要高效、安全、便捷的充电与数据传输解决方案。在这样的背景下&#xff0c;Type-C PD&#xff08;Power D…...

天气查询 免费

免费的前提是需要有高德地图key 前去申请一个key 调用IP查询 | 高德控制台 ------ 申请key之后调用下面的接口或者查看官方文档 api地址&#xff1a; restapi.amap.com/v3/weather/weatherInfo 天气查询-基础 API 文档-开发指南-Web服务 API | 高德地图API 参数名 含义 规…...

VC 与 VS(visual studio) 的对应版本

VC 与 VS 对应版本的关系&#xff1a; VC9&#xff1a;对应的是 Visual Studio 2008 版本。在这个版本中&#xff0c;开发环境提供了一系列的新特性和改进&#xff0c;为开发者提供了更高效的编程体验。例如&#xff0c;增强了对 C 标准的支持&#xff0c;优化了调试工具等。 …...

Qt使用lupdate工具生成.ts文件

Qt提供了lupdate工具&#xff0c;用于从源代码中提取需要翻译的字符串【1】&#xff0c;并生成或更新.ts文件 注解【1】&#xff1a;使用tr()函数&#xff08;或者QCoreApplication::translate()等其他相关的翻译函数&#xff09;来标记所有需要翻译的文本。例如&#xff1a; …...

编程-设计模式 1:工厂方法模式

设计模式 1&#xff1a;工厂方法模式 定义与目的 定义&#xff1a;工厂方法模式定义了一个创建对象的接口&#xff0c;但允许子类决定实例化哪一个类。工厂方法让一个类的实例化延迟到其子类。目的&#xff1a;提供一种方式来封装对象创建的过程&#xff0c;使得客户端不需要…...

Linux 快速构建LAMP环境

目录 部署方式&#xff1a; 基础环境准备&#xff1a; 1.安装Apache服务 &#xff08;1&#xff09;安装Apache &#xff08;2&#xff09;安装一些Apache的扩展包 2.安装PHP语言 &#xff08;1&#xff09;下载php软件仓库 &#xff08;2&#xff09;指定php安装版本…...

【C/C++】语言基础知识总复习

文章目录 1. 指针1.1 数组和指针1.2 函数指针1.3 const 和 指针、static、#define、typedef1.4 指针和引用的异同1.5 sizeof与strlen 2. 库函数及其模拟实现3. 自定义类型4. 数据存储5. 编译链接过程6. C入门基础6.1 函数重载6.2 引用和指针6.3 建议使用const、inline、enum去替…...

【漏洞修复】Tomcat中间件漏洞

1.CVE-2017-12615 抓包上传一句话木马 密码passwd 2.后台弱口令部署war包 先用弱口令登录网站后台 制作war包 将172.jsp压缩成.zip文件&#xff0c;修改后缀为.war 上传 蚁剑链接 3.CVE-2020-1938 Python2 CVE-2020-1938.py IP -p 端口 -f 要读取的文件 漏洞修复&#xf…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...