从技术角度来看,朝鲜是一个颇具趣味的国家,网络与外界完全隔绝。我们所知道的一切,基本上都是通过报道拼凑起来的。正因如此,由朝鲜开发的基于Fedora的Linux发行版“红星OS 3”才格外引人注目。它为人们提供了难得的机会,得以一窥这个鲜为人知的世界。我把它安装在虚拟机里。
当然,我在此展示的红星OS 3版本泄露于近十年前,而它的继任者红星OS 4显然是基于Ubuntu的,尽管还无法公开下载。鉴于十年过去了,如今互联网上关于红星OS 3的各种信息并不缺乏,但我觉得值得探索一下,重点介绍一下这款操作系统的一些最独特的方面,以及它展现出哪些我们知之甚少的信息。事实证明,还有更多的东西有待发现,因为我找到了一些在其他文章从未发现的功能。
对于想要体验红星操作系统的用户,需要了解以下几点。首先,正如你预料的那样,该操作系统出厂时就被严格锁定,会追踪用户访问的文件,并阻止访问外部网络。其次,如果你打算自己运行该操作系统,根据我们目前的了解,在受限的局域网上运行似乎是安全的,但仍然建议不要让操作系统完全访问家庭网络连接,可以使用虚拟机。
为了测试,我在VirtualBox中没有给红星OS配网卡。不过说实话,运行它的时候没什么好担心的。虽然理论上可以通过虚拟机创建的虚拟驱动程序实现虚拟机逃逸,但一个十年前就被反复研究过的操作系统,居然还能在现代环境下运行,这简直是天方夜谭。而且,它的主要连接都指向朝鲜内网,所以它似乎也无法把我的信息发回国(哈哈)。
红星OS是什么?
正如我们已经了解的,红星操作系统(Red Star OS) 是一个由朝鲜开发的Linux发行版。它于1998年开始开发,首个版本于2008年发布,外观和使用体验非常类似当时的Windows XP。红星OS 2于2009年发布,UI也与Windows XP 类似。然而,我们这里要介绍的红星OS 3则彻底改变了用户界面,更接近macOS。
它基本上是一个典型的基于Red Hat/Fedora的Linux发行版,但也预装了一些软件和一个朝鲜语语言包,其中包含朝鲜语术语和拼写的本地化版本。鉴于我看不懂,可以使用root权限将操作系统语言切换为英语,并且一些应用程序也可以经过修改切换为英语。
面向用户的预装软件包括一款基于Firefox的浏览器 Naenara(意为“我的国家”)、一款文本编辑器、一款 OpenOffice的克隆版本Sogwang Office、一款媒体播放器(英文版的名称居然是QuickTime,让人无比震惊)、一款文件共享应用程序以及一些小游戏。此外,还有一款名为UnBangUl的音乐应用程序,其名称与朝鲜一家大型手风琴品牌相符。此外,还预装了Wine软件,以便兼容Windows应用程序。
然而,深入研究后可见,红星OS 3系统底层隐藏着多重功能性组件:系统会自动为文件添加水印,同时对系统文件实施保护机制,若检测到未授权修改则触发自动重启;此外,内置的隐藏“杀毒”程序可按规则删除指定文件。系统还预装了Snort入侵检测系统(默认未启用),其iptables规则配置如下:
入站服务控制:仅允许HTTP、HTTPS、SMB 等特定服务的入站连接,其余服务请求均被丢弃;
流量限额管理:对上述允许的服务设置回复流量上限;
DNS通信限制:允许发出DNS请求,但因iptables未配置53端口(sport/dport)的规则,故不接收DNS回复;
特殊端口放行:明确允许 mDNS/Bonjour 协议通过5353端口进行通信。
总体而言,红星OS本质上是一款平淡无奇的Linux操作系统。一旦你获得了系统的root权限,可以不受限制地安装自己的应用程序,并卸载预装的用于监视用户的“杀毒”软件,它就只不过是一个换了皮的Fedora而已。要在其上运行现代版本的软件包管理器可能是一项艰巨的任务,尤其是在现在,它已经过时到几乎无法使用的程度。
然而,该系统的某些方面始终存在问题。其中最大的问题来自预装的基于Firefox的Naenara浏览器。
Naenara能告诉我们关于朝鲜互联网的信息
首次启动Naenara时,默认主页的IP地址是“10.76.1.11”。这是IETF和IANA按照RFC1918规定保留的内部IP地址,我们经常会看到公司或家庭网络内部使用“10.xxx”地址。众所周知朝鲜拥有一个名为“光明网”的内部网,这让我们对朝鲜设备之间的通信方式有了些许了解。曾任平壤科技大学讲师的威尔·斯科特(Will Scott)表示,朝鲜似乎拥有自己内部的DNS系统和顶级域名(TLD),包括在真正互联网上并不存在的“顶级域名”,例如.web和.rec。
斯科特还表示,他看到的大多数终端用户电脑运行的是Windows XP,少数电脑运行的是Windows 7,而“红星”系统在他之前在很多地方都没有见过。他的推测是,“红星”系统更多地被用作工业操作系统,而非专为终端用户设计的操作系统,而且他在朝鲜期间看到的大多数电脑似乎都是从中国进口的。
Naenara以内部IP作为默认IP 地址,因为朝鲜官方从APNIC分配的IP地址只有1024个,范围是175.45.176.0/22。此外,还有两个地址块分配给它,分别由联通(210.52.109.0/24)和俄罗斯卫星公司SatGate (77.94.35.0/24)控制。不过,对于一个人口2642万(截至2023年)的国家来说,这仍然是一个非常小的地址数量。不过,这对朝鲜来说并不是什么大问题,因为该地区的互联网访问受到严格限制,只有一些高级人员、研究学者和计算机中心员工才能访问,这些互联网访问也受到严格监控。
至于浏览器使用的证书,根证书的国家/地区颁发者代码为KP,这是朝鲜的 ISO 3166-1 Alpha-2代码。斯科特表示,网络请求需要在校园级别使用HTTP Squid代理,并且每个请求都与他的用户名关联。使用朝鲜证书,拥有私钥的颁发者可以对所有“加密”请求进行中间人攻击。有趣的是,斯科特指出,虽然他的互联网使用未经过滤,但该校的研究生和教授可以像他一样访问真正的互联网,尽管他们的互联网已被过滤,并且实验室监考人员会在校园内专门用于外部浏览的房间内监视用户。
查看Naenara浏览器中的about:config文件,似乎许多Google和Mozilla 的URL都被替换成了内部IP地址,因为仍然有一些与Mozilla和Chrome相关的标记地址,它们遵循典型请求的URL路径,但替换的是内部IP。有趣的是,似乎有一些官方扩展程序可供安装,并且默认搜索引擎将Google的域名替换成了之前提到的内部域名。除非朝鲜内网中可以访问的基本内置功能被破坏,否则合理的结论是,内部服务很可能是仿照国外现有的服务开发的。
最后,自动更新检查无法关闭。不过,你可以将其设置为在安装更新前“始终询问”。不过,系统在初始设置时就会自动安装更新。
红星OS 3上的应用程序总体来说比较奇怪
在查看操作系统时,我发现了一个名为“Bokem”的应用程序。这是一个加密实用程序,它实现了一个基于AES的128位分组密码,名为Pilsung。事实证明,该密码本身似乎相当安全,尽管它在Bokem中的实现可能并非如此。话虽如此,使用它确实需要root权限,所以可能根本没人会使用它。在虚拟机中启动它需要在启动命令前加上“DISPLAY=:0”前缀。
更有趣的是应用程序的实际布局。不仅仅是操作系统拥有macOS的外观;应用程序本身的存储方式也与macOS上的应用程序类似。在Red Star中,它们位于/Applications下,每个应用程序都位于各自的“app”文件夹中。例如,“QuickTime”位于 QuickTime.app文件夹中,该文件夹包含一个Contents文件夹、一个Resources文件夹和一个包含实际可执行文件的“RedStar”文件夹。
从应用程序方面来看,没发现太多新鲜东西。不过,我花了一些时间深入研究了一款用于监视用户的实用程序,仍然发现了一些有趣的东西,这些东西我之前从未在其他地方看到过报道。
解剖scnprc:红星OS上的“监控防护系统”
红星OS的系统锁定机制包含两个核心组件:负责文件扫描的scnprc和用于添加水印的opprc。当我将scnprc二进制文件导入Ghidra逆向分析时,发现了一组耐人寻味的函数,包括写入隐藏编码文件、USB 模式写入、图像信息处理等。这些功能虽未明确是否投入实际使用,但代码层面的存在暗示着潜在的系统能力。
其中最值得关注的是WritePatternToUSB和 ScanCD这两个鲜少被讨论的函数,我们先从前者说起。
1、WritePatternToUSB:USB 设备的隐秘模式写入
这个函数体量庞大,拆解后发现其核心逻辑如下:
文件系统校验:先检查USB驱动器是否可读取,通过读取前64字节并验证FAT32文件系统特征(如偏移量0x24的FAT类型字段、0x0E 的保留扇区数等)来确认设备合法性;
FAT区域解析:读取FSINFO扇区并计算FAT区域偏移量,定位簇映射表;
模式写入操作:从“tmp.tmp”文件获取数据(推测可能来自opprc的水印信息),按“fatStart + 簇索引 * 4”的地址规则写入4字节值,遍历更新簇映射。
虽然暂无法确定写入的具体模式内容,但整个流程显示它可能在USB设备中埋下某种识别标记或监控痕迹。
2、ScanCD:光盘内容的智能筛查机制
相比之下,ScanCD函数的逻辑更为直观:
触发条件:插入CD时自动调用,扫描所有目录下的文件;
文件分析流程:
每个文件传递给checkfile函数,触发辅助进程深度分析;
根据文件类型(支持JPEG/PNG等图像、MP3/WAV等音频、PDF/CHM等文档)执行不同检查逻辑;
特殊情况下返回-1000 值,触发CD弹出、路径记录、GUI警告及1000秒后系统重启。
值得注意的是,checkfile识别的文件类型中包含CNKI CAJ 电子书(学术论文格式)、Office 2007文档等,而具体触发警告的条件暂不明确,可能依赖外部服务协同判断。
3、get_disk_serial:设备身份的数字指纹
负责管理文件水印的核心模块中,get_disk_serial函数通过以下步骤生成磁盘序列号:
获取根文件系统的主从设备号,创建临时块设备;
依次尝试HDIO_GET_IDENTITY、SG_ATA_IDENTIFY等ioctl 指令获取物理序列号;
若失败则调用预设的gszConstSerial 值,最终将结果处理为20字节大写字符串(如删除西部数据ID前缀“WD-W”,用Z替换前导0)。
这个序列号会被嵌入文件水印中:图像文件将设备信息追加到末尾,Word 文档则插入开头空白区域,形成唯一的设备识别标记。
4、WriteImageInformation:藏在像素里的隐形水印
除了已知的文件末尾直接嵌入方式,我还发现了一种更隐蔽的水印技术:
隐写原理:在RGB 位图中嵌入带“WM”前缀的水印字符串,通过调整8×8 像素块的高频DCT系数(类似JPEG压缩算法)来隐藏数据;
执行逻辑:根据图像尺寸重复嵌入操作,确保水印覆盖整个画面后再写回修改后的像素值。
这种方法对图像尺寸有要求,虽不确定当前版本是否启用,但代码的存在暗示其可能已迭代为更成熟的方案。
这些底层功能揭示了红星OS在文件监控、设备识别和内容追踪方面的技术深度。从USB模式写入到图像隐写,每一个看似未激活的函数都可能在特定环境下成为系统锁定机制的关键一环,展现出设计者对数据流向的精细控制思路。
不建议再折腾这款过时系统
红星OS操作系统听起来可能很诱人,但除非你知道自己在做什么,否则千万别安装。它本质上就是伪装成操作系统的间谍软件,当然,这也是意料之中的事。不仅如此,它在现实世界已无法使用。Firefox 3.5已经过时了,使用HTTPS的网站根本不允许你访问。安装它毫无意义,只会毫无理由地将自己置于危险之中。
当然,有人可能会说,这个操作系统只能在朝鲜内网内使用,所以无需有任何担心。在虚拟机里启动可能很有趣,但我见过有人把它安装成双启动操作系统,却没有意识到,你已经把身份信息添加到了所有朝鲜方可以自由访问的文件中。
关于红星OS 3,网络上已经有很多精彩的研究和讨论,而我在这里的分析只是相对浅显的,你也可以用虚拟机自己体验一下。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.