<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>User-Mode on Roduygo | Blog</title><link>/tags/user-mode/</link><description>Recent content in User-Mode on Roduygo | Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 07 May 2026 21:30:00 +0700</lastBuildDate><atom:link href="/tags/user-mode/index.xml" rel="self" type="application/rss+xml"/><item><title>User Mode, Kernel Mode</title><link>/post/work-mode-windows/</link><pubDate>Thu, 07 May 2026 21:30:00 +0700</pubDate><guid>/post/work-mode-windows/</guid><description>&lt;p&gt;Ở hai bài viết trước, chúng ta đã cùng nhau chứng kiến cách máy tính thức giấc và giải phẫu bề mặt vật lý của ổ cứng. Bây giờ, hệ điều hành đã được nạp thành công lên RAM. Nhưng làm sao Windows có thể quản lý hàng trăm phần mềm chạy cùng lúc mà không để chúng &amp;ldquo;dẫm chân&amp;rdquo; lên nhau hay làm sập toàn bộ hệ thống?&lt;/p&gt;
&lt;h2 id="1-ranh-giới-sinh-tử-user-mode-và-kernel-mode"&gt;1. Ranh giới sinh tử: User Mode và Kernel Mode
&lt;/h2&gt;&lt;p&gt;Để bảo vệ cốt lõi của mình, Windows chia không gian bộ nhớ và quyền thực thi lệnh thành hai thế giới song song và hoàn toàn cách biệt: User Mode (Chế độ người dùng) và Kernel Mode (Chế độ hạt nhân).&lt;/p&gt;
&lt;h3 id="11-kernel-mode---vùng-đất-của-những-vị-thần"&gt;1.1 Kernel Mode - Vùng đất của những &amp;ldquo;Vị thần&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;Kernel Mode nắm giữ &amp;ldquo;thượng phương bảo kiếm&amp;rdquo; của hệ thống.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quyền hạn:&lt;/strong&gt; Có toàn quyền kiểm soát CPU, RAM và mọi thiết bị ngoại vi. Nó làm nhiệm vụ phân chia thời gian CPU cho các ứng dụng, quản lý bộ nhớ và điều khiển phần cứng qua các driver.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Không gian bộ nhớ:&lt;/strong&gt; Tất cả các thành phần chạy trong Kernel Mode dùng chung một vùng nhớ hệ thống duy nhất.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mức độ an toàn (Sự trả giá):&lt;/strong&gt; Vì dùng chung bộ nhớ và có quyền cao nhất, nếu bất kỳ một đoạn mã nào ở đây (như Kernel &lt;code&gt;ntoskrnl.exe&lt;/code&gt; hay một Driver card đồ họa) bị lỗi, hệ điều hành không thể tự phục hồi. Kết quả? Toàn bộ hệ thống sẽ sập, dẫn đến lỗi Màn hình xanh chết chóc (BSoD) huyền thoại.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-user-mode---khu-cách-ly-an-toàn"&gt;1.2 User Mode - Khu cách ly an toàn
&lt;/h3&gt;&lt;p&gt;Ngược lại, User Mode là nơi cung cấp môi trường cho chúng ta làm việc, chạy giao diện và xử lý logic ứng dụng. Hầu hết mọi thứ bạn mở (Chrome, Word, các dịch vụ chạy nền) đều nằm ở đây.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quyền hạn:&lt;/strong&gt; Cực kỳ hạn chế. Ứng dụng ở User Mode không được phép trực tiếp chạm vào phần cứng hay bộ nhớ dùng chung.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Không gian bộ nhớ:&lt;/strong&gt; Mỗi tiến trình được cấp một vùng bộ nhớ ảo biệt lập. Chrome không thể tự tiện đọc bộ nhớ của Word.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mức độ an toàn:&lt;/strong&gt; Rất cao. Nếu một ứng dụng User Mode bị lỗi (Crash), chỉ ứng dụng đó bị đóng lại, Windows vẫn sống khỏe.&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Câu hỏi thực chiến:&lt;/strong&gt; Nếu User Mode không được chạm vào phần cứng, làm sao Chrome có thể vẽ đồ họa lên màn hình hay lưu file xuống ổ cứng?
&lt;strong&gt;Trả lời:&lt;/strong&gt; Ứng dụng phải &amp;ldquo;nhờ vả&amp;rdquo; Kernel thông qua một cánh cổng gọi là API (System Calls). Kernel sẽ tiếp nhận yêu cầu, kiểm tra tính hợp lệ, thay mặt ứng dụng thực thi trên CPU/phần cứng, rồi trả kết quả về.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="2-giám-sát-ranh-giới-bằng-task-manager"&gt;2. Giám sát ranh giới bằng Task Manager
&lt;/h2&gt;&lt;p&gt;Là một người làm bảo mật, bạn hoàn toàn có thể theo dõi xem CPU đang dồn sức cho thế giới nào bằng công cụ Task Manager có sẵn của Windows.
Bạn hãy mở &lt;strong&gt;Task Manager -&amp;gt; tab Performance -&amp;gt; Nhấp chuột phải vào biểu đồ CPU và chọn Show kernel times&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Task manager" class="gallery-image" data-flex-basis="377px" data-flex-grow="157" height="307" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/work-mode-windows/taskmana.png" width="483"&gt;
Lúc này trên biểu đồ sẽ xuất hiện hai thành phần:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Đường nét đứt (Kernel Mode):&lt;/strong&gt; Cho thấy CPU đang tốn bao nhiêu % công suất để xử lý các việc &amp;ldquo;hậu cần&amp;rdquo; của hệ điều hành (quản lý bộ nhớ, điều khiển driver, xử lý ngắt&amp;hellip;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Khoảng trống giữa nét đứt và đỉnh biểu đồ (User Mode):&lt;/strong&gt; Đại diện cho mức tiêu thụ của các ứng dụng đang mở.&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;SOC Lưu ý:&lt;/strong&gt; Nếu máy tính không mở phần mềm nào nặng, nhưng đường nét đứt (Kernel Mode) lại tăng vọt bất thường, rất có thể một Driver rác hoặc một Rootkit (mã độc mức Kernel) đang âm thầm hoạt động.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="3-giải-phẫu-hệ-sinh-thái-tiến-trình-cốt-lõi"&gt;3. Giải phẫu hệ sinh thái Tiến trình cốt lõi
&lt;/h2&gt;&lt;p&gt;Sau khi Kernel (&lt;code&gt;ntoskrnl.exe&lt;/code&gt;) yên vị trên RAM, tiến trình System (PID 4) sẽ tạo ra tiến trình User-mode đầu tiên: &lt;code&gt;smss.exe&lt;/code&gt; (Session Manager Subsystem). Đây chính là &amp;ldquo;ông tổ&amp;rdquo; của mọi tiến trình sau này.&lt;/p&gt;
&lt;p&gt;Nhiệm vụ của &lt;code&gt;smss.exe&lt;/code&gt; là thiết lập bộ nhớ ảo, biến môi trường và đặc biệt là chia phòng (tạo Session). Windows chia làm 2 Session chính:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Session 0:&lt;/strong&gt; Khu vực cấm địa, cách ly hoàn toàn giao diện, chỉ dành cho các dịch vụ hệ thống ngầm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session 1 (hoặc các số lớn hơn):&lt;/strong&gt; Dành cho người dùng đăng nhập và tương tác.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="31-trong-cõi-session-0-hệ-thống"&gt;3.1 Trong cõi Session 0 (Hệ thống)
&lt;/h3&gt;&lt;p&gt;Tại đây, &lt;code&gt;smss.exe&lt;/code&gt; gọi ra hai cận vệ trung thành:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;csrss.exe&lt;/code&gt; (Client/Server Runtime Subsystem): Xử lý các tác vụ nền cho Session 0.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wininit.exe&lt;/code&gt; (Windows Initialize): Kẻ khởi tạo dịch vụ hệ thống. Từ &lt;code&gt;wininit.exe&lt;/code&gt;, một loạt các tiến trình trọng yếu khác ra đời:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;services.exe&lt;/code&gt;: Quản lý toàn bộ các dịch vụ (Services) của Windows. Nó khởi chạy hàng loạt các dịch vụ được bọc trong vỏ bọc &lt;code&gt;svchost.exe&lt;/code&gt; (Service Host) để thực thi các DLL hệ thống.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lsass.exe&lt;/code&gt; (Local Security Authority Subsystem Service): Người gác đền tối cao, chịu trách nhiệm xác thực và quản lý bảo mật.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-trong-cõi-session-người-dùng-session-1"&gt;3.2 Trong cõi Session người dùng (Session 1+)
&lt;/h3&gt;&lt;p&gt;Khi bạn chuẩn bị đăng nhập, &lt;code&gt;smss.exe&lt;/code&gt; tạo ra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Một bản sao &lt;code&gt;csrss.exe&lt;/code&gt; mới:&lt;/strong&gt; Để quản lý giao diện console cho người dùng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winlogon.exe&lt;/code&gt;:&lt;/strong&gt; Tiến trình vẽ lên màn hình đăng nhập yêu cầu bạn nhập mật khẩu.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Quy trình Xác thực (Authentication Flow):&lt;/strong&gt; Khi bạn gõ mật khẩu, &lt;code&gt;winlogon.exe&lt;/code&gt; không tự kiểm tra. Nó gói thông tin đó gửi thẳng xuống cho &amp;ldquo;người gác đền&amp;rdquo; &lt;code&gt;lsass.exe&lt;/code&gt; ở Session 0. &lt;code&gt;lsass.exe&lt;/code&gt; sẽ đối chiếu mật khẩu. Nếu đúng, &lt;code&gt;lsass.exe&lt;/code&gt; gật đầu, tạo ra một Access Token (Thẻ bài quyền lực) và cấp quyền cho phiên đăng nhập của bạn.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Wininit.exe workflow" class="gallery-image" data-flex-basis="444px" data-flex-grow="185" height="383" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/work-mode-windows/winit.png" width="710"&gt;&lt;/p&gt;
&lt;h2 id="4-soc-analytics-bắt-thóp-mã-độc-ngụy-trang"&gt;4. SOC Analytics: &amp;ldquo;Bắt thóp&amp;rdquo; mã độc ngụy trang
&lt;/h2&gt;&lt;p&gt;Hacker biết rất rõ kiến trúc này. Chúng thừa hiểu nếu chạy một file tên là &lt;code&gt;Trojan_steal_data.exe&lt;/code&gt;, các nhà phân tích SOC sẽ khóa cổ chúng ngay lập tức. Vì vậy, chúng thường đổi tên mã độc thành &lt;code&gt;svchost.exe&lt;/code&gt;, &lt;code&gt;lsass.exe&lt;/code&gt; hay &lt;code&gt;csrss.exe&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vậy làm sao để SOC Analyst nhận diện được kẻ giả mạo? Chúng ta dựa vào &lt;strong&gt;Mối quan hệ Cha - Con (Parent-Child Process)&lt;/strong&gt; và &lt;strong&gt;Vị trí file&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quy luật 1:&lt;/strong&gt; &lt;code&gt;lsass.exe&lt;/code&gt; xịn chỉ có một bản duy nhất đang chạy, vị trí file bắt buộc phải ở &lt;code&gt;C:\Windows\System32\&lt;/code&gt;, và tiến trình cha bắt buộc phải là &lt;code&gt;wininit.exe&lt;/code&gt;. Nếu bạn thấy &lt;code&gt;lsass.exe&lt;/code&gt; mọc ra từ &lt;code&gt;explorer.exe&lt;/code&gt; (nghĩa là do người dùng click chuột mở lên) hoặc nằm ở thư mục &lt;code&gt;C:\Temp\&lt;/code&gt;, đó 100% là Malware.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quy luật 2:&lt;/strong&gt; &lt;code&gt;svchost.exe&lt;/code&gt; có thể có hàng chục bản đang chạy (để chứa các dịch vụ khác nhau). Nhưng tất cả chúng đều phải có tiến trình cha là &lt;code&gt;services.exe&lt;/code&gt;. Mã độc thường sinh ra &lt;code&gt;svchost.exe&lt;/code&gt; độc lập để đánh lừa mắt người.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mục tiêu số 1 - &lt;code&gt;lsass.exe&lt;/code&gt;:&lt;/strong&gt; Vì tiến trình này làm nhiệm vụ đối chiếu và lưu trữ thông tin đăng nhập, nó giữ rất nhiều mật khẩu (đôi khi là mật khẩu chưa mã hóa) trong RAM của nó. Các công cụ tấn công khét tiếng như Mimikatz luôn tìm cách can thiệp vào bộ nhớ của &lt;code&gt;lsass.exe&lt;/code&gt; để trích xuất (dump) mật khẩu của quản trị viên.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Kiến trúc tiến trình của Windows là một cỗ máy vận hành hoàn hảo với ranh giới quyền lực khắt khe. Việc hiểu rõ ai gọi ai, ai làm nhiệm vụ gì là kỹ năng sống còn giúp SOC Analyst nhạy bén trước các kỹ thuật ẩn mình (Evasion) của Malware. Trong bài viết tiếp theo, chúng ta sẽ rời khỏi RAM để đi sâu vào các ngóc ngách của ổ cứng: Khám phá hệ thống tệp NTFS và kỹ thuật giấu mã độc bằng Alternate Data Streams. Đừng bỏ lỡ nhé!&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>