<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Smss on Roduygo | Blog</title><link>/tags/smss/</link><description>Recent content in Smss on Roduygo | Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 07 May 2026 16:30:00 +0700</lastBuildDate><atom:link href="/tags/smss/index.xml" rel="self" type="application/rss+xml"/><item><title>Khởi nguồn hệ thống - Windows Booting</title><link>/post/windows-booting/</link><pubDate>Thu, 07 May 2026 16:30:00 +0700</pubDate><guid>/post/windows-booting/</guid><description>&lt;p&gt;Chào mừng các bạn đến với Series Giải phẫu Windows OS &amp;amp; SOC Analytics. Ở bài viết đầu tiên này mình sẽ giúp các bạn hiểu về quá trình khởi tạo của Windows.&lt;/p&gt;
&lt;h2 id="1-giai-đoạn-phần-cứng-tiếng-gọi-đầu-tiên-pre-boot"&gt;1. Giai đoạn Phần cứng: Tiếng gọi đầu tiên (Pre-boot)
&lt;/h2&gt;&lt;p&gt;Bước đầu tiên của quá trình khởi động bắt đầu bằng việc nhấn nút nguồn, thao tác này sẽ gửi tín hiệu điện đến bo mạch chủ và khởi tạo tất cả các thành phần. CPU là thành phần đầu tiên nhận tín hiệu điện và cần một số chỉ dẫn để tiếp tục. Lúc này, quá trình kiểm tra phần cứng POST (Power on Self-Test) sẽ diễn ra để xem RAM, CPU, bàn phím có hoạt động không.&lt;/p&gt;
&lt;p&gt;Để có chỉ dẫn, CPU sẽ tìm đến một phần mềm nhúng trên bo mạch chủ (được gọi chung là &lt;strong&gt;Firmware&lt;/strong&gt;). Trong lịch sử thiết kế hệ thống, có hai chuẩn Firmware khởi động chính và sự khác biệt giữa chúng là điểm mấu chốt trong điều tra số:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Legacy BIOS (Hệ thống đầu vào/đầu ra cơ bản):&lt;/strong&gt; Chuẩn Firmware cũ kỹ hoạt động ở chế độ 16-bit và chỉ hỗ trợ dung lượng ổ đĩa tối đa 2 terabyte. Legacy BIOS đi liền với lược đồ phân vùng MBR (Master Boot Record).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UEFI (Giao diện phần mềm mở rộng thống nhất):&lt;/strong&gt; Chuẩn Firmware thế hệ mới, hiện đại chạy ở chế độ 32-bit/64-bit, hỗ trợ dung lượng lên đến 9 zettabyte và mang theo tính năng Khởi động an toàn (Secure Boot). UEFI sử dụng sơ đồ phân vùng GPT (GUID Partition Table).&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;em&gt;(Lưu ý: Dân IT chúng ta vẫn hay quen miệng gọi chung là &amp;ldquo;vào màn hình BIOS để cài đặt&amp;rdquo;, nhưng thực chất trên các máy tính từ năm 2012 trở lại đây, cái mà chúng ta đang truy cập chính là giao diện của UEFI. Trong UEFI có một chế độ gọi là &lt;strong&gt;Legacy Mode&lt;/strong&gt; dùng để giả lập lại môi trường BIOS cũ nhằm hỗ trợ cài các hệ điều hành đời cổ).&lt;/em&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="So sánh giao diện BIOS và UEFI" class="gallery-image" data-flex-basis="426px" data-flex-grow="177" height="675" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/windows-booting/biosvsuefi.jpg" srcset="/post/windows-booting/biosvsuefi_hu_d6c21e305dbd3699.jpg 800w, /post/windows-booting/biosvsuefi.jpg 1200w" width="1200"&gt;&lt;/p&gt;
&lt;h2 id="2-giai-đoạn-tìm-kiếm-sự-sống-mbr-và-gpt"&gt;2. Giai đoạn Tìm kiếm &amp;ldquo;Sự Sống&amp;rdquo;: MBR và GPT
&lt;/h2&gt;&lt;p&gt;Sau khi kiểm tra POST, BIOS/UEFI sẽ quét các thiết bị khởi động (SSD, HDD, USB) để tìm kiếm mã khởi động (có thể hiểu là đi tìm điểm bắt đầu, và tất nhiên các thiết bị lưu trữ sẽ được ưu tiên hàng đầu).&lt;/p&gt;
&lt;h3 id="21-bios-đi-tìm-mbr-master-boot-record"&gt;2.1. BIOS đi tìm MBR (Master Boot Record)
&lt;/h3&gt;&lt;p&gt;Trên hệ thống BIOS, sector đầu tiên của đĩa (kích thước chuẩn 512 byte) sẽ chứa MBR. Cấu trúc của MBR cực kỳ chật chội:&lt;/p&gt;
&lt;p&gt;&lt;img alt="MBR example" class="gallery-image" data-flex-basis="273px" data-flex-grow="113" height="585" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/windows-booting/mbrsector.jpg" width="666"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bootstrap code (446 bytes):&lt;/strong&gt; Bộ nạp khởi động ban đầu. Mục đích chính của nó là tìm phân vùng có thể khởi động từ bảng phân vùng và tải bộ nạp khởi động thứ hai từ đó.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partition Table (64 bytes):&lt;/strong&gt; Bảng phân vùng chứa thông tin chi tiết của tất cả phân vùng (tối đa 4 phân vùng Primary).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MBR Signature (2 bytes):&lt;/strong&gt; Chữ ký đánh dấu điểm kết thúc của mã MBR, luôn luôn là giá trị Hex &lt;code&gt;55 AA&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Vì mã khởi động nằm ngay trong 446 bytes này, Malware (như Bootkit) cực kỳ thích ghi đè vào đây. Bằng cách này, mã độc sẽ sống sót ngay cả khi người dùng format phân vùng hệ điều hành C: vì nó nằm hoàn toàn ngoài vùng kiểm soát của OS.&lt;/p&gt;
&lt;h3 id="22-sự-tiến-hóa-gpt-và-protective-mbr"&gt;2.2. Sự tiến hóa: GPT và Protective MBR
&lt;/h3&gt;&lt;p&gt;UEFI thông minh hơn. Nó không tìm mã khởi động ở sector đầu tiên mà tìm đến một phân vùng đặc biệt gọi là Phân vùng hệ thống EFI (ESP). Trong GPT, bộ nạp khởi động bao gồm nhiều tệp có phần mở rộng &lt;code&gt;.efi&lt;/code&gt; và tất cả chúng đều được lưu trữ trong ESP này.&lt;/p&gt;
&lt;p&gt;Tuy nhiên, để bảo vệ đĩa GPT khỏi bị các hệ thống BIOS cũ tưởng nhầm là đĩa trắng và ghi đè, GPT tạo ra một lớp giáp gọi là Protective MBR nằm ở ngay sector 0. Protective MBR này chỉ khai báo đúng một phân vùng duy nhất trỏ đến ESP với cờ định dạng là EE (báo hiệu đây là đĩa GPT), để firmware BIOS không can thiệp vào.&lt;/p&gt;
&lt;h2 id="3-giai-đoạn-nạp-nhân-windows-os-loader"&gt;3. Giai đoạn Nạp nhân (Windows OS Loader)
&lt;/h2&gt;&lt;p&gt;Sau khi phân vùng khởi động được xác định, quyền điều khiển được chuyển sang Windows Boot Manager (file &lt;code&gt;bootmgr&lt;/code&gt;). Nó sẽ đọc file dữ liệu cấu hình khởi động (BCD - Boot Configuration Data) để quyết định sẽ nạp hệ điều hành nào.&lt;/p&gt;
&lt;p&gt;Tiếp theo, logo Windows bắt đầu hiện lên trên màn hình. Đây là lúc file nạp hệ điều hành (&lt;code&gt;Winload.exe&lt;/code&gt; hoặc &lt;code&gt;winload.efi&lt;/code&gt;) ra sân để nạp các thành phần cốt lõi nhất vào RAM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ntoskrnl.exe&lt;/code&gt;: Trái tim thực sự của hệ thống - Nhân (Kernel) của Windows.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hal.dll&lt;/code&gt;: Lớp trừu tượng phần cứng, có nhiệm vụ &amp;ldquo;phiên dịch&amp;rdquo; để Kernel có thể ra lệnh được cho các linh kiện phần cứng vật lý.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System Registry Hive&lt;/strong&gt;: Nạp các thiết lập cấu hình tối quan trọng của hệ thống từ Registry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boot-start Drivers&lt;/strong&gt;: Các driver tối quan trọng để có thể tiếp tục đọc ổ đĩa.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-giai-đoạn-khởi-tạo-hệ-thống-ranh-giới-và-các-tiến-trình-đầu-tiên"&gt;4. Giai đoạn Khởi tạo hệ thống: Ranh giới và Các tiến trình đầu tiên
&lt;/h2&gt;&lt;p&gt;Khi Kernel (&lt;code&gt;ntoskrnl.exe&lt;/code&gt;) đã nằm vững chãi trên RAM, nó bắt đầu thiết lập trật tự cho hệ thống. Đây là lúc sự phân chia hai cõi Kernel Mode (toàn quyền) và User Mode (hạn chế) được xác lập.&lt;/p&gt;
&lt;p&gt;Sau khi kernel khởi động xong, tiến trình System (PID 4) sẽ tạo ra tiến trình User Mode đầu tiên của hệ thống: &lt;code&gt;smss.exe&lt;/code&gt; (Session Manager Subsystem).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;smss.exe&lt;/code&gt; là &amp;ldquo;ông tổ&amp;rdquo; của toàn bộ các phiên làm việc trên Windows. Nhiệm vụ của nó là tạo ra các biến môi trường, thiết lập bộ nhớ ảo và bắt đầu chia phòng (Session).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tạo Session 0:&lt;/strong&gt; Khu vực cấm địa chỉ dành riêng cho các dịch vụ hệ thống ngầm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tạo Session cho người dùng:&lt;/strong&gt; Môi trường hiển thị giao diện cho chúng ta làm việc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="41-sự-hình-thành-các-cây-tiến-trình-process-tree"&gt;4.1. Sự hình thành các cây tiến trình (Process Tree)
&lt;/h3&gt;&lt;p&gt;Cách &lt;code&gt;smss.exe&lt;/code&gt; sinh con:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trong Session 0 (Hệ thống):&lt;/strong&gt;
&lt;code&gt;smss.exe&lt;/code&gt; gọi ra &lt;code&gt;wininit.exe&lt;/code&gt; (khởi tạo dịch vụ hệ thống) và &lt;code&gt;csrss.exe&lt;/code&gt; (runtime subsystem cho session 0).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wininit.exe&lt;/code&gt; sau đó tiếp tục tạo ra hai mảnh ghép quan trọng:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;services.exe&lt;/code&gt;: Trình quản lý dịch vụ. Nó sẽ khởi chạy hàng loạt các dịch vụ hệ thống, phần lớn được bọc bên trong các tiến trình &lt;code&gt;svchost.exe&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lsass.exe&lt;/code&gt; (Local Security Authority Subsystem Service): Người gác đền quản lý bảo mật và xác thực thông tin đăng nhập.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Trong Session người dùng:&lt;/strong&gt;
&lt;code&gt;smss.exe&lt;/code&gt; gọi ra một phiên bản &lt;code&gt;csrss.exe&lt;/code&gt; khác (để xử lý console giao diện) và &lt;code&gt;winlogon.exe&lt;/code&gt; (hiển thị màn hình đăng nhập quen thuộc).&lt;/p&gt;
&lt;p&gt;Khi bạn nhập mật khẩu trên màn hình của &lt;code&gt;winlogon.exe&lt;/code&gt;, nó sẽ gửi thông tin đến &lt;code&gt;lsass.exe&lt;/code&gt; để đối chiếu. Nếu mật khẩu đúng, &lt;code&gt;lsass.exe&lt;/code&gt; sẽ gật đầu và tạo ra một &amp;ldquo;thẻ bài&amp;rdquo; (Access Token) cấp quyền cho phiên làm việc của bạn.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Góc nhìn SOC:&lt;/strong&gt; Hacker hiểu rõ thứ tự này. Nếu bạn thấy một tiến trình &lt;code&gt;lsass.exe&lt;/code&gt; hoặc &lt;code&gt;svchost.exe&lt;/code&gt; nằm &amp;ldquo;chơi vơi&amp;rdquo; mà không có tiến trình cha hợp lệ (như &lt;code&gt;wininit.exe&lt;/code&gt; hay &lt;code&gt;services.exe&lt;/code&gt;), hoặc file thực thi không nằm trong &lt;code&gt;C:\Windows\System32\&lt;/code&gt;, thì 99% đó là phần mềm độc hại đang &amp;ldquo;đội lốt&amp;rdquo; tiến trình hệ thống. Ngoài ra, tiến trình &lt;code&gt;lsass.exe&lt;/code&gt; nắm giữ mật khẩu của hệ thống, nên nó thường xuyên là mục tiêu để các công cụ như Mimikatz &amp;ldquo;dump&amp;rdquo; bộ nhớ hòng đánh cắp thông tin xác thực.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Kết thúc Bài 1, chúng ta đã nắm được cách một cỗ máy tính thức giấc và xây dựng cấu trúc tiến trình chặt chẽ của nó. Ở bài tiếp theo, chúng ta sẽ bắt tay vào phân tích chuyên sâu về hệ thống tệp và cấu trúc thư mục đĩa đệm. Hãy đón chờ nhé!&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>