Triều Tiên luôn là một quốc gia thu hút sự chú ý đặc biệt từ góc độ công nghệ. Dưới chế độ hiện hành, người dân nước này hoàn toàn bị cô lập với thế giới bên ngoài, và việc nhập cảnh cũng bị hạn chế nghiêm ngặt. Hầu hết những thông tin chúng ta biết về Triều Tiên đều được tổng hợp từ hình ảnh vệ tinh, lời kể của những người đào thoát khỏi quốc gia này, và các báo cáo thường mâu thuẫn lẫn nhau. Chính vì lẽ đó, Red Star OS 3 – một bản phân phối Linux dựa trên Fedora do Triều Tiên phát triển – trở nên vô cùng hấp dẫn. Nó mang đến một cái nhìn hiếm hoi vào một thế giới phần lớn vẫn còn bí ẩn, và chúng tôi đã thiết lập nó trong một máy ảo để khám phá.
Đương nhiên, Red Star OS 3, phiên bản chúng tôi sẽ trình bày ở đây, đã bị rò rỉ gần một thập kỷ trước. Thực tế, phiên bản kế nhiệm của nó, Red Star OS 4, được cho là dựa trên Ubuntu, mặc dù phiên bản này chỉ đến tay một số ít nhà báo và không thể tải xuống công khai. Mặc dù đã một thập kỷ trôi qua và có rất nhiều thông tin về Red Star OS 3 rải rác trên internet, chúng tôi vẫn thấy đáng để tìm hiểu sâu hơn nhằm làm nổi bật những khía cạnh kỳ lạ nhất của hệ điều hành này. Từ đó, chúng ta có thể rút ra những điều ít biết về quốc gia bí ẩn ấy. Hóa ra, vẫn còn nhiều điều để khám phá, khi chúng tôi đã tìm thấy một số chức năng chưa từng được báo cáo ở bất kỳ đâu trước đây.
Đối với những ai muốn bắt đầu hành trình với Red Star OS, có một vài điều quan trọng cần biết. Thứ nhất, như bạn có thể mong đợi, hệ điều hành này bị khóa chặt ngay từ đầu, theo dõi các tệp người dùng truy cập và chặn truy cập vào internet toàn cầu. Thứ hai, nếu bạn định tự chạy nó, việc chạy hệ điều hành này trên kết nối mạng gia đình với quyền truy cập internet hạn chế dường như an toàn, dựa trên những gì chúng ta biết về nó hiện nay. Tuy nhiên, vẫn nên khuyến nghị không cấp quyền truy cập internet cho hệ điều hành này hoàn toàn.
Với mục đích thử nghiệm, trong VirtualBox, chúng tôi đã không cấp bộ điều hợp mạng cho Red Star OS. Thành thật mà nói, không có quá nhiều điều phải lo lắng khi chạy nó. Mặc dù việc thoát khỏi máy ảo về mặt lý thuyết có thể xảy ra thông qua một trình điều khiển ảo được tạo bởi máy ảo, nhưng rất khó có khả năng một hệ điều hành mười năm tuổi đã được nghiên cứu kỹ lưỡng vẫn có thể khai thác một môi trường hiện đại. Hơn nữa, tất cả các kết nối chính của nó đều hướng đến mạng nội bộ của Triều Tiên, vì vậy nó dường như không có khả năng “gọi về nhà” (phoning home) qua internet.
Red Star OS là gì?
Lịch sử thú vị
Red Star OS, như đã đề cập, là một bản phân phối Linux được phát triển tại Triều Tiên. Nó bắt đầu được phát triển vào năm 1998, và phiên bản đầu tiên xuất hiện vào năm 2008 với giao diện rất giống Windows XP. Red Star OS 2 được phát hành vào năm 2009 và cũng có giao diện tương tự Windows XP. Tuy nhiên, Red Star OS 3, phiên bản chúng ta đang xem xét ở đây, đã thay đổi hoàn toàn giao diện người dùng để giống macOS.
Về cơ bản, đây là một bản phân phối Linux dựa trên Red Hat/Fedora thông thường, mặc dù nó chứa phần mềm được cài đặt sẵn và gói ngôn ngữ tiếng Hàn được bản địa hóa với thuật ngữ và chính tả của Triều Tiên. Có thể chuyển đổi ngôn ngữ của hệ điều hành sang tiếng Anh bằng quyền truy cập root, và cũng có các trình cài đặt đã được sửa đổi để chuyển trình cài đặt sang tiếng Anh.
Giao diện Red Star OS 3 và tùy chọn ngôn ngữ tiếng Anh
Các phần mềm được cài đặt sẵn dành cho người dùng bao gồm một trình duyệt dựa trên Firefox có tên Naenara (nghĩa là “Đất nước của tôi”), một trình soạn thảo văn bản, một bản sao của OpenOffice có tên Sogwang Office, một trình phát media (được gọi là QuickTime khi sử dụng hệ điều hành bằng tiếng Anh), một ứng dụng chia sẻ tệp và một số trò chơi cơ bản. Ngoài ra còn có một ứng dụng âm nhạc có tên UnBangUl, một cái tên trùng với một thương hiệu đàn accordion lớn của Triều Tiên. Wine cũng được cài đặt sẵn để cho phép các ứng dụng Windows chạy.
Tuy nhiên, nếu tìm hiểu sâu hơn, có một lượng lớn phần mềm khác đang hoạt động ngầm bên trong. Các tệp tin tự động được đóng dấu watermark, các tệp hệ thống được bảo vệ và hệ thống sẽ tự khởi động lại nếu phát hiện một thay đổi trái phép. Một phần mềm “diệt virus” ẩn có thể xóa các tệp tin được chỉ định. Snort cũng được cài đặt sẵn, mặc dù nó không được bật theo mặc định, và các quy tắc iptables thực hiện những điều sau:
- Cho phép một số dịch vụ đến nhất định như HTTP, HTTPS, SMB, và chặn các dịch vụ còn lại.
- Xác định việc cho phép lưu lượng phản hồi đến các dịch vụ đó.
- Các yêu cầu DNS có thể được thực hiện, nhưng các phản hồi sẽ không được chấp nhận vì iptables không tham chiếu đến sport 53 hoặc dport 53.
- mDNS/Bonjour được chấp nhận rõ ràng qua cổng 5353.
Truy cập quyền root trên hệ điều hành Red Star OS 3
Phần lớn, Red Star OS là một hệ điều hành không đáng chú ý về mặt bề ngoài. Khi bạn đã có quyền truy cập root vào hệ thống và có thể cài đặt các ứng dụng của riêng mình mà không bị hạn chế, cùng với việc gỡ bỏ phần mềm gián điệp được cài đặt sẵn để giám sát người dùng, nó chỉ là một bản Fedora được làm lại giao diện, và thế là hết. Việc chạy các phiên bản trình quản lý gói hiện đại trên nó có thể là một yêu cầu khó khăn, và đặc biệt là hiện nay, nó đã quá lỗi thời để thực sự có thể sử dụng được.
Tuy nhiên, có một số khía cạnh của hệ thống đặt ra nhiều câu hỏi. Một trong những điều lớn nhất là với Naenara, trình duyệt dựa trên Firefox được cài đặt sẵn.
Naenara hé lộ gì về Internet của Triều Tiên?
Hay đúng hơn là Intranet
Trình duyệt Naenara của Red Star OS 3 hiển thị tiện ích mở rộng
Khi lần đầu khởi chạy Naenara, trang chủ mặc định là địa chỉ IP “10.76.1.11”. Đây là một địa chỉ IP nội bộ được IETF và IANA dành riêng theo quy định trong RFC1918, và bạn thường thấy các địa chỉ “10.x.x.x” được sử dụng trong các tập đoàn hoặc mạng gia đình. Mặc dù Triều Tiên có một mạng nội bộ được gọi là Kwangmyong đã được biết đến rộng rãi, điều này cung cấp cho chúng ta một chút thông tin chi tiết về cách các thiết bị có thể giao tiếp. Để có thêm ngữ cảnh, Will Scott, cựu giảng viên tại Đại học Khoa học và Công nghệ Bình Nhưỡng, đã tuyên bố rằng quốc gia này dường như có hệ thống DNS riêng với các tên miền cấp cao nhất (TLD) riêng. Chúng bao gồm các TLD không tồn tại trên internet toàn cầu, như .web và .rec.
Scott cũng cho biết rằng hầu hết các máy tính người dùng cuối mà ông thấy đều chạy Windows XP và một số ít sử dụng Windows 7, và Red Star không phải là thứ ông thấy ở nhiều nơi. Giả thuyết của ông là Red Star được sử dụng nhiều hơn như một hệ điều hành công nghiệp hơn là một hệ điều hành dành cho người dùng cuối, và hầu hết các máy tính ông từng thấy trong thời gian ở Triều Tiên dường như được nhập khẩu từ Trung Quốc.
Về việc địa chỉ IP nội bộ của Naenara là địa chỉ IP mặc định, điều này hoàn toàn hợp lý. Triều Tiên chỉ được APNIC phân bổ chính thức 1.024 địa chỉ IP, và dải địa chỉ của họ là 175.45.176.0/22. Có hai khối bổ sung được gán cho họ dưới sự kiểm soát của China Unicom (210.52.109.0/24) và công ty vệ tinh Nga SatGate (77.94.35.0/24). Mặc dù vậy, tổng số địa chỉ này vẫn là một con số rất nhỏ đối với một quốc gia có 26,42 triệu dân (tính đến năm 2023). Điều này không phải là vấn đề lớn đối với Triều Tiên, vì quyền truy cập internet toàn cầu bị hạn chế nghiêm ngặt trong khu vực đối với các quan chức cấp cao của chính phủ, một số nhân viên Trung tâm Máy tính Triều Tiên, và một số học giả với mục đích nghiên cứu. Quyền truy cập internet này cũng bị giám sát chặt chẽ.
Đối với các chứng chỉ được sử dụng bởi trình duyệt, các chứng chỉ gốc có mã quốc gia KP, mã ISO 3166-1 Alpha-2 cho Triều Tiên. Điều này hợp lý; Scott đã nói rằng các yêu cầu mạng yêu cầu sử dụng proxy HTTP Squid ở cấp độ trường học, và mọi yêu cầu đều được liên kết với tên người dùng của ông. Với các chứng chỉ của Triều Tiên, tổ chức phát hành giữ khóa riêng có thể thực hiện tấn công Man-in-the-Middle (MITM) tất cả các yêu cầu “mã hóa”. Điều thú vị là, Scott lưu ý rằng trong khi việc sử dụng internet của ông không bị lọc, sinh viên và giáo sư tại trường đại học có quyền truy cập internet rộng hơn giống như ông, mặc dù của họ bị lọc, và một người quản lý phòng thí nghiệm sẽ giám sát người dùng trong một phòng đặc biệt của khuôn viên được chỉ định cho việc duyệt web bên ngoài đó.
Khi xem xét about:config
trong Naenara, có vẻ như nhiều URL của Google và Mozilla đơn giản là đã được thay thế bằng một địa chỉ IP nội bộ, vì vẫn còn các cờ địa chỉ liên quan đến Mozilla và Chrome tuân theo đường dẫn URL chính xác của một yêu cầu thông thường, mặc dù với IP nội bộ được đặt vào. Điều thú vị là, dường như có các tiện ích mở rộng chính thức có thể được cài đặt, và công cụ tìm kiếm mặc định thay thế tên miền của Google bằng tên miền nội bộ đã được ghi chú trước đó. Trừ khi chức năng tích hợp cơ bản có thể truy cập được bị lỗi trên mạng nội bộ Triều Tiên, kết luận hợp lý là các dịch vụ nội bộ có khả năng được mô phỏng theo các dịch vụ hiện có từ bên ngoài quốc gia.
Cuối cùng, việc kiểm tra cập nhật tự động không thể tắt. Tuy nhiên, bạn có thể đặt nó thành “luôn hỏi” trước khi một bản cập nhật được cài đặt. Ngay từ đầu, nó sẽ tự động cài đặt các bản cập nhật.
Các ứng dụng trên Red Star OS 3: Kỳ lạ và ẩn giấu
Thậm chí có cả tiện ích mã hóa, nhưng chỉ root user mới truy cập được
Tiện ích mã hóa đĩa Bokem trên Red Star OS 3
Trong quá trình điều hướng hệ điều hành và tìm kiếm những gì có thể, chúng tôi đã phát hiện một ứng dụng có tên “Bokem”. Đây là một tiện ích mã hóa triển khai thuật toán mã hóa khối 128-bit dựa trên AES có tên Pilsung. Hóa ra, bản thân thuật toán này dường như khá an toàn, mặc dù việc triển khai của nó trong Bokem có thể không. Mặc dù vậy, bạn cần quyền truy cập root để sử dụng nó, vì vậy có thể không ai thực sự mong đợi sử dụng nó. Để khởi chạy ứng dụng này trong máy ảo, chúng tôi cần thêm tiền tố lệnh khởi chạy với “DISPLAY=:0”.
Điều thú vị hơn là cách bố trí các ứng dụng. Không chỉ riêng hệ điều hành có giao diện giống macOS; bản thân các ứng dụng cũng được lưu trữ theo cách tương tự như các ứng dụng trên macOS. Trong Red Star, chúng được đặt trong /Applications
, và mỗi ứng dụng nằm trong thư mục “.app” riêng của nó. Ví dụ, “QuickTime” nằm trong thư mục QuickTime.app, chứa một thư mục Contents, một thư mục Resources, và một thư mục “RedStar”, chứa tệp thực thi thực tế.
Không có quá nhiều điều để thấy từ phía ứng dụng mà chúng ta chưa xem xét. Tuy nhiên, chúng tôi đã dành thời gian để tìm hiểu một trong những tiện ích được thiết kế để gián điệp người dùng, và vẫn còn một số điều thú vị chưa từng được báo cáo ở bất kỳ đâu khác.
Mổ xẻ scnprc – “Chương trình diệt virus” trên Red Star OS
Có hai thành phần cốt lõi tạo nên sự khóa chặt hệ thống của Red Star. Đầu tiên là scnprc
, chịu trách nhiệm quét các tệp tin, và thứ hai là opprc
, thực hiện việc đóng dấu watermark cho các tệp đó. Tuy nhiên, scnprc
cũng làm một số điều khá thú vị, và chúng tôi đã đưa nó vào Ghidra để phân tích một số chức năng của nó. Chúng tôi đã xem xét các hàm sau trong tệp nhị phân:
WriteHiddenEncodeFile
WritePatternToUSB
WriteImageInformation
ImageProcessing
get_disk_serial
ScanCD
checkfile
Không rõ những hàm nào trong số này thực sự được sử dụng, nhưng những hàm này tồn tại trong tệp nhị phân và về mặt lý thuyết có thể được thực thi bất cứ lúc nào.
Những khám phá thú vị nhất mà chúng tôi đã thực hiện là trong WritePatternToUSB
và ScanCD
. Chúng tôi chưa từng thấy bất kỳ cuộc thảo luận nào về hai chức năng này liên quan đến Red Star OS trước đây, mặc dù các hoạt động của chúng đã được giả định rộng rãi. Chúng ta sẽ xem xét WritePatternToUSB
trước.
WritePatternToUSB
WritePatternToUSB
là một hàm lớn và mất một thời gian để giải mã, nhưng về cơ bản, nó thực hiện những điều sau:
- Kiểm tra tính toàn vẹn của hệ thống tệp bằng cách kiểm tra xem ổ đĩa có thể được mở không, đọc 64 byte đầu tiên và xác nhận bằng một hàm hỗ trợ xem nó có giống hệ thống tệp FAT32 không.
- Đọc các trường FAT32 từ hệ thống tệp. Bao gồm:
FATSz32/DrvNum
: offset 0x24 (36) cho loại FAT. Đây sẽ làDrvNum
cho FAT16 hoặcFATSz32
cho FAT32.BPB_RsvdSecCnt
: Offset 0x0E (14) cho số sector dự trữ.BPB_BytsPerSec
: Offset 0x0B (11) cho số byte trên mỗi sector.BPB_FSInfo
: Offset 0x30 (48) cho sector bắt đầu của FSINFO.
- Đọc sector FSINFO.
- Tính toán một offset byte để phân định vùng FAT.
- Kiểm tra một mẫu với thông tin thu được từ hệ thống tệp.
- Mẫu được cập nhật hoặc một mẫu mới được tạo.
Chúng tôi không thể xác định chính xác mẫu nào đang được ghi, mặc dù chúng tôi có thể thấy rằng nó lấy một tệp “tmp.tmp” với dữ liệu cần thiết. Chúng tôi nghi ngờ điều này hoặc được cung cấp bởi opprc
, hoặc chưa được triển khai đầy đủ. Hàm này sẽ tìm đến fatStart+clusterIndex*4
, ghi một giá trị 4 byte tại vị trí mảng đó, và hoạt động thông qua một bản đồ cluster trong bộ nhớ.
ScanCD
ScanCD
là một hàm thú vị khác, nhưng may mắn thay, dễ hiểu hơn nhiều. Dường như nó được gọi khi một đĩa CD được chèn vào hệ thống, và thực hiện những điều sau:
- Nó quét mọi thư mục trên đĩa CD được chèn.
- Mọi tệp được tìm thấy đều được chuyển đến hàm
checkfile
.checkfile
gọi một tiến trình hỗ trợ khác để phân tích tệp.- Phản hồi từ tiến trình điền vào một biến cục bộ.
- Kiểm tra các loại tệp khác nhau dựa trên mô tả nhận được.
- Trong những điều kiện rất cụ thể, giá trị -1000 có thể được trả về.
- Trong trường hợp này, đĩa CD sẽ bị đẩy ra.
- Đường dẫn tệp vi phạm được ghi lại.
- Một cảnh báo GUI được hiển thị.
- Hệ thống được khởi động lại sau 1000 giây.
checkfile
nhận diện các tệp sau:
- Hình ảnh: Dữ liệu hình ảnh JPEG, dữ liệu hình ảnh TIFF, dữ liệu hình ảnh PNG, dữ liệu hình ảnh GIF, dữ liệu bitmap.
- Âm thanh (nén): MPEG ADTS, âm thanh Wave, Microsoft ASF, MP3, “rất ngắn”.
- Video/container: Dữ liệu RIFF (little-endian), chuỗi MPEG, RealMedia, phim QuickTime, Macromedia Flash (Video).
- Văn bản thuần/mã nguồn: UTF, Unicode, ASCII, văn bản chung.
- Tài liệu PDF.
- Tệp trợ giúp CHM.
- Hình ảnh DjVu.
- Sách điện tử CNKI CAJ: Đây là một nhà xuất bản ở Trung Quốc chuyên xuất bản các bài báo học thuật.
- Office 2007 và OOXML.
- Bộ xử lý văn bản Hangul.
- Sách điện tử Superstar/Founder PDG.
Những điều này không tự động kích hoạt cảnh báo và tắt máy. Chúng tôi không thể xác nhận điều gì chính xác kích hoạt nó, và chúng tôi nghi ngờ điều này cũng được quy định bởi một dịch vụ bên ngoài, vì có nhiều lệnh gọi tiến trình.
Hàm get_disk_serial trong phân tích scnprc của Red Star OS
Tệp dường như quản lý việc đóng dấu watermark cho tất cả các tệp khác liên quan đến get_disk_serial
, và tệp này khá đơn giản. Nó thực hiện những điều sau:
- Lấy mã major và minor
st_dev
của hệ thống tệp gốc. - Tạo một thiết bị khối tạm thời trên ổ đĩa đó.
- Cố gắng lấy số serial của ổ đĩa bằng
ioctl
thông qua một trong ba cách:- Khảo sát
HDIO_GET_IDENTITY
. - Khảo sát
SG_ATA_IDENTIFY
với một góiIDENTIFY_DEVICE
. - Thử lại nhưng với một gói
IDENTIFY
. - Nếu thất bại, lấy từ
gszConstSerial
.
- Khảo sát
- Cắt phản hồi thành 20 byte, chuyển đổi sang chữ hoa, loại bỏ “WD-W” nếu tồn tại (ID của Western Digital).
- Mọi ký tự ‘0’ dẫn đầu được thay thế bằng ‘Z’.
Số serial ổ đĩa này dường như đóng vai trò trong việc đóng dấu watermark vào tệp. Khi hình ảnh, tài liệu hoặc video được phát hiện, một watermark nhận dạng máy tính đã tương tác với chúng sẽ được nhúng vào tệp. Với hình ảnh, dữ liệu này được nối vào cuối tệp, trong khi một tài liệu Word sẽ thấy nó được chèn vào không gian trống về phía đầu tệp. Đối với hình ảnh, các thiết bị độc đáo đều sẽ có dữ liệu của chúng được nối vào cuối tệp.
Hành vi đóng dấu watermark nêu trên, chèn trực tiếp vào một tệp hiện có, đã được mô tả trước đây đối với Red Star OS. Tuy nhiên, chúng tôi đã phát hiện một phương pháp đóng dấu watermark khác, rất thú vị mà chúng tôi chưa từng thấy được ghi lại ở bất kỳ đâu. Phương pháp đóng dấu watermark đã được báo cáo trước đây hoạt động, nhưng có thể dễ dàng được xác định bằng cách xem tệp trong trình chỉnh sửa hex. Hàm mà chúng tôi tìm thấy, được gọi là WriteImageInformation
, có một cách tiếp cận khác. Nó ẩn một chuỗi watermark bên trong một bitmap RGB, thêm tiền tố “WM” vào đầu một mảng ký tự. Sau đó, nó điều chỉnh các hệ số DCT tần số cao của các khối byte 8*8 liên tiếp của hình ảnh, lặp lại điều đó nhiều lần theo yêu cầu để bao phủ toàn bộ kích thước của hình ảnh, và sau đó ghi lại các pixel đã sửa đổi.
Cách tiếp cận này yêu cầu hình ảnh phải có kích thước tối thiểu, và giống như các hàm khác được xác định ở đây, không rõ liệu nó có thực sự được sử dụng trong phiên bản phần mềm này hay không. Tuy nhiên, nó tồn tại, có nghĩa là nếu nó không được sử dụng trước đây, thì có lẽ nó đang được sử dụng bây giờ hoặc đã được lặp lại.
Không có lý do gì để sử dụng Red Star OS
Mặc dù nghe có vẻ hấp dẫn
Màn hình đăng nhập của Red Star OS
Mặc dù nghe có vẻ hấp dẫn, bạn không nên cài đặt Red Star OS trừ khi bạn thực sự hiểu rõ mình đang làm gì. Về cơ bản, nó là phần mềm gián điệp được ngụy trang thành một hệ điều hành, nhưng tất nhiên, điều đó đã được dự đoán. Không chỉ vậy, nó thậm chí còn không thực sự hữu ích trong thế giới ngày nay. Firefox 3.5 đã quá cũ kỹ, và các trang web sử dụng HTTPS thậm chí sẽ không cho phép bạn truy cập chúng ngay từ đầu. Không có lý do gì để triển khai nó, và bạn chỉ tự đặt mình vào nguy hiểm mà không có lý do thực sự khi làm như vậy.
Đương nhiên, người ta có thể lập luận rằng hệ điều hành này chỉ liên lạc trong mạng nội bộ Triều Tiên, và bạn có thể đúng, nhưng nó cũng không đáng để mạo hiểm. Việc chạy nó trong một máy ảo có thể thú vị, nhưng chúng tôi đã thấy nhiều người cài đặt nó dưới dạng hệ điều hành chạy song song (dual-boot), mà không nhận ra rằng, ít nhất, bạn đang thêm dữ liệu nhận dạng vào tất cả các tệp có thể truy cập được bởi Red Star mà không có lý do chính đáng.
Đã có rất nhiều cuộc nói chuyện và điều tra hấp dẫn về Red Star OS 3, và chúng tôi chỉ mới “gãi bề mặt” trong phân tích của mình ở đây. Chúng tôi thực sự khuyến khích bạn tìm hiểu thêm nếu muốn. Hãy chia sẻ ý kiến của bạn về những phát hiện này và liệu bạn có từng tò mò về hệ điều hành bí ẩn này của Triều Tiên không nhé!