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

图片:去混淆后的“绿色恐龙” webshell 源代码示例
钓鱼页面
设置 Green Dinosaur 后,运营商上传了预先构建的网络钓鱼页面。这些网络钓鱼页面是通过首先抓取他们模仿的真实登录门户来创建的。然后使用其他代码修改抓取的页面以记录任何输入的凭据。在这次活动中,针对同德大学、高丽大学和延世大学创建了网络钓鱼页面。此外,我们还发现了一个用于窃取 Naver 帐户的网络钓鱼工具包。
同德大学
同德大学钓鱼页面在视觉上与真正的同德电子邮件登录页面完全相同,但包含了一些可用作武器的修改。

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

图片:修改后的同德登录页面 HTML 代码截图
上面的代码是添加到登录页面的主要部分。开发人员首先注释掉了网站使用 Dongduks 公共 RSA 密钥加密密码值的默认行为。以下代码获取用户名、密码和登录尝试次数,并将其发送到 j_spring_securty_check.php,而不是使用常规提交函数。此 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 的个人资料照片](https://img-blog.csdnimg.cn/img_convert/2d5fba0d0bde271ae6a6fe00983a1252.png)
图片:南北韩交流合作支援协会徽标用作 kimduyong2020@gmail[.]com 的个人资料照片
PDF 是峨山政策研究院 8 月论坛的邀请函。此诱饵可能与真正的峨山政策研究院在 2024 年 7 月 16 日的一篇博客文章中提到的相同,该文章警告成员注意来自 Daum、Gmail 和 Naver 帐户的网络钓鱼攻击 [6]。

图片:峨山政策研究院八月论坛 PDF
[外链图片转存中…(img-c3QaofpP-1723269293303)]
图片:峨山政策研究院 - 往期活动:‘关于恶意钓鱼邮件的安全警告’
高丽大学
高丽大学登录页面采用与同德大学类似的方法,但不是修改文档的 HTML,而是修改其中一个 javascript 导入来传递登录凭据。

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

图片:修改后的韩国大学 JavaScript 代码截图
发送 urlencoded 的用户名、密码和计数的 login.php 文件与 Dongduk 钓鱼页面上的 j_spring_securty_check.php 文件相同,但会将受害者重定向到真正的登录页面 https://portal.korea.ac.kr/mail/。
延世大学
延世大学的登录页面采用与同德大学几乎相同的方法,并使用 AJAX 将凭证传输至 login.php。

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

图片:修改后的延世大学登录页面 HTML 代码截图
接收 urlencoded 用户名、密码和计数的 login.php 文件与 Dongduk 钓鱼页面上的 j_spring_securty_check.php 文件完全相同,但是会将受害者重定向到真正的登录页面https://mail.yonsei.ac.kr/。
Naver
此外,Kimsuky 的网络钓鱼网站上还有一个非针对特定目标的网络钓鱼工具包,用于收集 Naver 帐户。该工具包是一个类似于 Evilginx 的基本代理,用于窃取访问者的 cookie 和凭据,并显示弹出窗口,告知用户他们需要重新登录,因为与服务器的通信已中断。

图片: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 工具的屏幕截图
相关文章:
APT 组织 Kimsuky 瞄准大学研究人员
执行摘要 Kimsuky 是一个朝鲜 APT 组织,其任务是执行符合朝鲜政府利益的全球情报收集行动。该组织自 2012 年以来一直活跃,对韩国智库和政府实体特别感兴趣;然而,它也针对美国、英国和其他欧洲国家。Kimsuky 擅长进行有针对性的网…...
Golang | Leetcode Golang题解之第327题区间和的个数
题目: 题解: import "math/rand" // 默认导入的 rand 不是这个库,需要显式指明type node struct {ch [2]*nodepriority intkey intdupCnt intsz int }func (o *node) cmp(b int) int {switch {case b < o.k…...
Django5实战
一、安装: 1、安装Django环境: # 安装 pip install django5.0.3# 验证 5.0.3 python -m django --version 安装慢的解决方法:使用阿里云的镜像源 pip install -i https://mirrors.aliyun.com/pypi/simple django5.0.3 2、创建项目&#…...
网址管理功能 Webstack
前言 在工作生活中大家可能会收集各种网址地址,大部分同学都是通过浏览器标签进行管理。如果你换电脑或者电脑不再身边的时候就有些不方便了。接下来我要向大家推荐一个工具:在线网址导航。 CNS学术导航 大家通过搜索引擎可以很方便的搜索到各种网址导航…...
【热工与工程流体力学】第1章 流体及其主要物理性质,流体的粘性,压缩性,流体的质量力和表面力(西北工业大学)
第1章 流体及其主要物理性质 一、流体力学概述 二、流体力学发展简史 三、本课程的教学计划 四、连续介质模型 五、流体的主要物理性质 六、作用在流体上的力 七、本课程中使用的单位制 一、流体力学概述 1.流体的概念 在任何微小剪应力持续作用下连续变形的物质称为流…...
TCP和UDP区别,各自的应用场景
区别 是否基于链接 TCP是面向连接的协议,发送数据之前需要建立连接;而UDP是无连接的协议,即发送数据之前不需要简历连接。 可靠性和有序性区别 TCP提供交付保证,(TCP通过校验和重传控制,序号表示ÿ…...
Java开发工具IDEA
IDEA概述 Intellij IDEA IDEA全称Intellij IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。 集成环境 把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。 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 中,插槽(Slot)是一个非常强大的特性,它允许我们更好地组织和重用组件。通过定义插槽,子组件可以预留出由父组件控制的区域,这样父组件就可以向这些区域填充自己的内容。…...
Vue2与Vue3响应式原理对比
Vue2.x 响应式原理 Vue2.x 响应式: 实现原理 对象类型:通过 Object.defineProperty() 对属性的读取、修改进行拦截( 数据劫持 )数组类型:通过重写数组方法,并作为拦截器挂载到数组对象与数组原型之间,来实现拦截。 存在…...
Android系统Android.bp文件详解
文章目录 1. 基本语法结构2. 常见模块类型3. 模块属性常见属性包括: 4. 具体示例5. 高级功能5.1. 条件编译5.2. 变量定义与使用5.3. 模块继承 6. 总结 Android.bp 是 Android 构建系统(Android Build System)中的配置文件,用于描述…...
eNSP 华为静态路由配置
R1: <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芯片:引领智能充电与数据传输的新时代
随着科技的飞速发展,智能设备已经成为我们日常生活中不可或缺的一部分。无论是智能手机、平板电脑、笔记本电脑,还是智能家居设备,都需要高效、安全、便捷的充电与数据传输解决方案。在这样的背景下,Type-C PD(Power D…...
天气查询 免费
免费的前提是需要有高德地图key 前去申请一个key 调用IP查询 | 高德控制台 ------ 申请key之后调用下面的接口或者查看官方文档 api地址: restapi.amap.com/v3/weather/weatherInfo 天气查询-基础 API 文档-开发指南-Web服务 API | 高德地图API 参数名 含义 规…...
VC 与 VS(visual studio) 的对应版本
VC 与 VS 对应版本的关系: VC9:对应的是 Visual Studio 2008 版本。在这个版本中,开发环境提供了一系列的新特性和改进,为开发者提供了更高效的编程体验。例如,增强了对 C 标准的支持,优化了调试工具等。 …...
Qt使用lupdate工具生成.ts文件
Qt提供了lupdate工具,用于从源代码中提取需要翻译的字符串【1】,并生成或更新.ts文件 注解【1】:使用tr()函数(或者QCoreApplication::translate()等其他相关的翻译函数)来标记所有需要翻译的文本。例如: …...
编程-设计模式 1:工厂方法模式
设计模式 1:工厂方法模式 定义与目的 定义:工厂方法模式定义了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让一个类的实例化延迟到其子类。目的:提供一种方式来封装对象创建的过程,使得客户端不需要…...
Linux 快速构建LAMP环境
目录 部署方式: 基础环境准备: 1.安装Apache服务 (1)安装Apache (2)安装一些Apache的扩展包 2.安装PHP语言 (1)下载php软件仓库 (2)指定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文件,修改后缀为.war 上传 蚁剑链接 3.CVE-2020-1938 Python2 CVE-2020-1938.py IP -p 端口 -f 要读取的文件 漏洞修复…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
