Triều Tiên luôn là một quốc gia thú vị khi nhìn nhận dưới góc độ công nghệ. Dưới sự kiểm soát nghiêm ngặt của chính quyền, người dân hoàn toàn bị cô lập với thế giới bên ngoài, và việc nhập cảnh vào quốc gia này bị hạn chế nghiêm ngặt. Hầu hết những gì chúng ta biết về công nghệ Triều Tiên đều được chắp vá từ hình ảnh vệ tinh, thông tin từ những người đào tẩu, và các báo cáo đôi khi mâu thuẫn. 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, lại càng trở nên hấp dẫn. Đây là một cái nhìn hiếm hoi vào một thế giới phần lớn chưa được biết đến, và chúng tôi đã thiết lập nó trong một máy ảo để khám phá.
Tất nhiên, Red Star OS 3 – phiên bản được giới thiệu tại đây – đã bị rò rỉ cách đây gần một thập kỷ. Trên thực tế, phiên bản kế nhiệm của nó là Red Star OS 4, được cho là dựa trên Ubuntu, dù phiên bản này chỉ nằm trong 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ó vô số thông tin về Red Star OS 3 rải rác trên internet, chúng tôi vẫn cảm thấy đáng giá khi khám phá sâu hơn để làm nổi bật một số khía cạnh đặc biệt nhất của hệ điều hành này, và những gì nó tiết lộ về một quốc gia bí ẩn mà chúng ta còn biết rất ít. Hóa ra, vẫn còn nhiều điều để tìm hiểu, khi chúng tôi đã khám phá ra một số chức năng mà chưa từng thấy được báo cáo ở bất kỳ đâu khác.
Đố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 mà người dùng truy cập và chặn quyền truy cập vào web rộng hơn. Thứ hai, nếu bạn định tự chạy nó, có vẻ an toàn khi 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ựa trên những gì chúng ta biết hiện nay. Tuy nhiên, vẫn nên khuyến nghị không cấp quyền truy cập internet hoàn toàn cho hệ điều hành này.
Với mục đích thử nghiệm, trong VirtualBox, chúng tôi đã không cấp cho Red Star OS một bộ điều hợp mạng. Thành thật mà nói, không có 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 (VM escape) về mặt lý thuyết có thể xảy ra thông qua một trình điều khiển ảo do VM tạo ra, nhưng khả năng một hệ điều hành mười năm tuổi đã được nghiên cứu không ngừng nghỉ vẫn có khả năng khai thác một môi trường hiện đại là cực kỳ thấp. Hơn nữa, các kết nối chính của nó đều hướng đến mạng nội bộ Triều Tiên (intranet), vì vậy nó dường như không thể “gọi về nhà” (phone home) được.
Red Star OS là gì?
Lịch sử thú vị
Red Star OS, như chúng ta đã xác định, là một bản phân phối Linux được phát triển tại Triều Tiên. Dự án bắt đầu phát triển vào năm 1998, và phiên bản đầu tiên của 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 tìm hiểu ở đây, đã thay đổi đáng kể giao diện người dùng để mô phỏng macOS.
Về cơ bản, nó là một bản phân phối Linux dựa trên Red Hat/Fedora, 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 với quyền truy cập root, và có những 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 sau khi chuyển sang tiếng Anh
Các phần mềm được cài đặt sẵn hướng tới 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 tôi”), một trình soạn thảo văn bản, một bản sao OpenOffice có tên Sogwang Office, một trình phát đa phương tiện (được gọi là QuickTime khi sử dụng HĐH 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 gọi là UnBangUl, một cái tên trùng khớp 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 nhìn sâu hơn, có nhiều phần mềm đáng kể đang hoạt động bên dưới. Các tệp tin tự động được đánh dấu bản quyền (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 thay đổi trái phép, và một phần mềm “diệt virus” ẩn có thể xóa các tệp đượ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 phần còn lại.
- Xác định quyền cho phép lưu lượng phản hồi cho các dịch vụ đó.
- 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 đề cập đến sport 53 hoặc dport 53.
- mDNS/Bonjour được chấp nhận rõ ràng qua cổng 5353.
Giao diện dòng lệnh Red Star OS với quyền truy cập root
Nhìn chung, Red Star OS là một hệ điều hành không mấy đặc biệt trên bề mặt. Một 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ỡ cài đặt 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 thay đổi giao diện, và chỉ vậy thôi. Để 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à bây giờ, 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ểm đáng chú ý 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?
Hoặc đúng hơn là Intranet
Trình duyệt Naenara của Red Star OS hiển thị các 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 như đã chỉ định trong RFC1918, và bạn thường sẽ thấy các địa chỉ “10.x.x.x” được sử dụng trong các công ty hoặc mạng gia đình. Mặc dù nhiều người biết rằng Triều Tiên có một mạng nội bộ được gọi là Kwangmyong, điều này cho chúng ta một chút cái nhìn sâu sắc 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 web rộng lớn hơn, như .web và .rec.
Scott cũng nói 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 vài máy sử dụng Windows 7, và rằng Red Star không phải là thứ mà ông đã thấy ở nhiều nơi. Lý 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 thay vì một hệ điều hành được thiết kế cho người dùng cuối, và rằng hầu hết các máy tính ông từng thấy ở Triều Tiên dường như được nhập khẩu từ Trung Quốc.
Về địa chỉ IP nội bộ mặc định của Naenara, điều này rất 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ù tổng cộng đây vẫn là một số lượng địa chỉ rất nhỏ cho một quốc gia có 26,42 triệu dân (tính đến năm 2023). Tuy nhiên, đ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 trình duyệt sử dụng, các chứng chỉ gốc có mã nhà phát hành quốc gia là KP, mã ISO 3166-1 Alpha-2 cho Triều Tiên. Điều này có lý; Scott đã lưu ý rằng các yêu cầu mạng yêu cầu sử dụng proxy HTTP Squid ở cấp độ khuôn viên, 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, nhà phát hành có 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 “được 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, thì các sinh viên sau đại học và giáo sư tại trường đại học có quyền truy cập internet rộng rãi 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 căn 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 đã đượ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 theo đúng đường dẫn URL 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 thay thế. Đ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ế miền của Google bằng 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 bị hỏng 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 được. 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 khá kỳ lạ
Thậm chí có tiện ích mã hóa, nhưng chỉ dành cho người dùng root
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 ra một ứng dụng có tên “Bokem”. Đây là một tiện ích mã hóa thực hiện mã hóa khối 128-bit dựa trên AES có tên Pilsung. Hóa ra, chính thuật toán mã hóa này dường như khá an toàn, mặc dù việc triển khai nó trong Bokem có lẽ thì không. Điều đáng nói là bạn cần quyền truy cập root để sử dụng nó, vì vậy có thể không ai được mong đợi sử dụng nó cả. Khởi chạy ứng dụng này trong máy ảo yêu cầu tiền tố lệnh khởi chạy bằng “DISPLAY=:0”.
Điều thú vị hơn là cách bố trí thực tế của các ứng dụng. Không chỉ 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 được lưu trữ trên macOS. Trong Red Star, chúng nằm dưới /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 thư mục Contents, thư mục Resources và thư mục “RedStar”, chứa tệp thực thi thực tế.
Không có 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 một chút thời gian để tìm hiểu một trong những tiện ích được thiết kế để theo dõi người dùng, và vẫn còn một số điều thú vị cần tìm thấy mà chúng tôi chưa từng thấy được báo cáo ở bất kỳ đâu khác.
Mổ xẻ scnprc
“Phần mềm diệt virus” chạy trên Red Star OS
Có hai thành phần cốt lõi trong hệ thống khóa chặt toàn diện của Red Star. Thứ nhất là scnprc
, quét các tệp, và thứ hai là opprc
, thực hiện việc đánh dấu bản quyền (watermarking) các tệp đó. Tuy nhiên, scnprc
cũng thực hiện 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
Chưa rõ hàm nào trong số này thực sự được sử dụng, nhưng các 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 hai hàm này được thảo luận 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 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ể mở được không, đọc 64 byte đầu tiên và xác nhận bằng một hàm trợ giúp xem nó có giống hệ thống tệp FAT32 hay 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ố lượng sector được bảo lưu.BPB_BytsPerSec
: Offset 0x0B (11) cho số byte 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 khu vực 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ó nhận 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 hoàn chỉnh. Hàm 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 đồ cụm 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 đưa 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 đưa vào.
- Mọi tệp được tìm thấy đều được chuyển đến một hàm
checkfile
.checkfile
gọi một tiến trình trợ giúp 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 các điều kiện rất cụ thể, một giá trị -1000 có thể được trả về.
- Trong trường hợp này, đĩa CD 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 loại 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 mất mát): 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, Flash của Macromedia (Video).
- Văn bản thuần túy/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 xuất bản các bài báo học thuật).
- Office 2007 và OOXML.
- Trình xử lý văn bản Hangul.
- Sách điện tử Superstar/Founder PDG.
Những điều này không tự mình kích hoạt cảnh báo và tắt máy. Chúng tôi không thể xác nhận chính xác điều gì đã kích hoạt nó, và chúng tôi nghi ngờ điều này cũng được quyết định bởi một dịch vụ bên ngoài, vì có nhiều lệnh gọi tiến trình.
Phân tích hàm get_disk_serial của scnprc trong Ghidra trên Red Star OS
Tệp dường như quản lý việc đánh dấu bản quyền 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 major và minor của
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 kéo 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 điều này thất bại, kéo 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 nó tồn tại (ID của Western Digital).
- Bất kỳ ký tự ‘0’ đứng đầu nào cũng được thay thế bằng ‘Z’.
Số serial ổ đĩa này dường như đóng vai trò trong việc đánh dấu bản quyền tệp. Khi hình ảnh, tài liệu hoặc video được phát hiện, một dấu bản quyền (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 một 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 khoảng trống trống (null space) ở đầu tệp. Đối với hình ảnh, các thiết bị độc đáo sẽ có dữ liệu của chúng được nối vào cuối chúng.
Hành vi đánh dấu bản quyền trên, chèn trực tiếp vào một tệp hiện có, đã được mô tả trong quá khứ với Red Star OS, nhưng chúng tôi đã khám phá một cách tiếp cận rất thú vị khác để đánh dấu bản quyền mà chúng tôi chưa từng thấy được ghi lại ở bất kỳ đâu khác. Việc đánh dấu bản quyền được báo cáo trước đây hoạt động, nhưng có thể dễ dàng xác định bằng cách xem tệp trong một trình soạn thảo 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 dấu bản quyền 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 nếu cần để 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ó chưa được sử dụng trước đây, thì có lẽ nó đang được sử dụng bây giờ hoặc đã được cải tiến.
Không có lý do gì để sử dụng Red Star OS
Dù nghe có vẻ hấp dẫn
Giao diện tổng quan của hệ điều hành Red Star OS
Dù nghe có vẻ hấp dẫn, bạn không nên cài đặt Red Star OS trừ khi bạn biết mình đang làm gì. Về cơ bản, nó là phần mềm gián điệp được ngụy trang dưới dạng 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ự có thể sử dụng được trong thế giới ngày nay. Firefox 3.5 đã quá cũ, 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ột cách vô ích khi làm như vậy.
Tất nhiên, người ta có thể lập luận rằng hệ điều hành này chỉ “gọi về nhà” trong mạng nội bộ Triều Tiên, và có lẽ bạn sẽ đúng, nhưng nó cũng không đáng để mạo hiểm. Việc chạy nó trong máy ảo có thể vui, 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-booted), 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 nào.
Đã có rất nhiều cuộc thảo luận và điều tra hấp dẫn về Red Star OS 3, và chúng tôi chỉ mới “cào xước bề mặt” trong phân tích ở đây. Chúng tôi thực sự khuyên bạn nên tìm hiểu thêm nếu muốn biết sâu hơn về hệ điều hành độc đáo này.