<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Logfile on Roduygo | Blog</title><link>/tags/logfile/</link><description>Recent content in Logfile on Roduygo | Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 08 May 2026 15:30:00 +0700</lastBuildDate><atom:link href="/tags/logfile/index.xml" rel="self" type="application/rss+xml"/><item><title>Phân tích NTFS</title><link>/post/ntfs/</link><pubDate>Fri, 08 May 2026 15:30:00 +0700</pubDate><guid>/post/ntfs/</guid><description>&lt;p&gt;Chào mừng các bạn quay trở lại với Series Giải phẫu Windows OS &amp;amp; SOC Analytics! Ở bài viết trước, chúng ta đã hiểu được bức tranh tổng thể về File System và &amp;ldquo;chiêu trò&amp;rdquo; giấu mã độc qua Alternate Data Streams (ADS).Hôm nay, chúng ta sẽ cầm kính lúp pháp y (Forensics) để soi vào tận cùng cấu trúc NTFS, bóc tách cuốn sổ cái MFT và trích xuất các &amp;ldquo;camera an ninh&amp;rdquo; ngầm của hệ thống.&lt;/p&gt;
&lt;h2 id="1-kiến-trúc-tổng-thể-của-ntfs-đường-đi-của-một-tệp-tin"&gt;1. Kiến trúc tổng thể của NTFS: Đường đi của một tệp tin
&lt;/h2&gt;&lt;p&gt;Để hiểu NTFS, trước tiên ta cần nắm được cách nó phân chia ổ đĩa. NTFS chia đĩa thành các Cluster (thường là 4KB). Ngay cả khi một file chỉ nặng 2KB, nó vẫn chiếm trọn 1 Cluster 4KB, phần dư thừa đó (Slack Space) không cho file khác dùng. Điều này giúp NTFS tăng tốc độ ghi đọc theo khối lớn và hỗ trợ điều tra dấu vết mã độc.&lt;/p&gt;
&lt;p&gt;Cấu trúc cốt lõi của một phân vùng NTFS bao gồm 4 phần chính:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Boot Sector:&lt;/strong&gt; Nằm ở phần đầu phân vùng, chứa Jump code để boot và vị trí của MFT.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MFT (Master File Table):&lt;/strong&gt; Cuốn sổ cái lưu trữ mọi thông tin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MFT Mirror ($MFTMirr):&lt;/strong&gt; Bản sao lưu một phần của MFT để phục hồi khi lỗi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Area:&lt;/strong&gt; Khu vực chứa nội dung dữ liệu thực sự của file.&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Luồng hoạt động khi bạn mở một tệp:&lt;/strong&gt; Hệ thống đọc Boot Sector -&amp;gt; Xác định vị trí MFT -&amp;gt; Đọc bản ghi (Record) của file trong MFT -&amp;gt; Tìm ra Cluster chứa dữ liệu -&amp;gt; Lấy dữ liệu từ Data Area.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="2-bóc-tách-trái-tim-mft-master-file-table"&gt;2. Bóc tách &amp;ldquo;Trái tim&amp;rdquo; MFT (Master File Table)
&lt;/h2&gt;&lt;p&gt;Trong NTFS, mọi thứ đều là một tệp, kể cả chính hệ thống tệp. MFT thực chất là một tệp đặc biệt có tên &lt;code&gt;$MFT&lt;/code&gt;. Cuốn sổ cái này được chia thành hàng nghìn bản ghi (MFT Records) có kích thước cố định. Mỗi tệp tin hoặc thư mục trên máy tính của bạn đều tương ứng với đúng 1 Record bên trong &lt;code&gt;$MFT&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="21-giải-phẫu-một-mft-record"&gt;2.1 Giải phẫu một MFT Record
&lt;/h3&gt;&lt;p&gt;Một bản ghi MFT chứa siêu dữ liệu (Metadata) cực kỳ chi tiết, bao gồm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Standard Information (Thông tin tiêu chuẩn):&lt;/strong&gt; Chứa các dấu thời gian (Timestamps), quyền hạn, và các cờ như Read-only, Hidden, System.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Name:&lt;/strong&gt; Tên của tệp hoặc thư mục.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Attribute (Thuộc tính dữ liệu):&lt;/strong&gt; Đây là phần thú vị nhất. Nếu file của bạn cực nhỏ (dưới vài trăm byte), NTFS sẽ nhét thẳng nội dung của file đó vào bên trong MFT Record (gọi là Resident Data). Nếu file lớn, phần này sẽ chứa danh sách các con trỏ (Data Runs) trỏ ra các Cluster ngoài Data Area (gọi là Non-Resident Data).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security Descriptor:&lt;/strong&gt; Chứa danh sách kiểm soát truy cập (ACL) quy định ai được phép đọc/ghi file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="mft record structure" class="gallery-image" data-flex-basis="584px" data-flex-grow="243" height="246" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/ntfs/mftf.png" width="599"&gt;&lt;/p&gt;
&lt;h3 id="22-góc-nhìn-điều-tra-số"&gt;2.2 Góc nhìn Điều tra số
&lt;/h3&gt;&lt;p&gt;MFT là &amp;ldquo;mỏ vàng&amp;rdquo; vì những lý do sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cờ In Use:&lt;/strong&gt; Xác định xem bản ghi này đang chứa một file hoạt động hay file đã bị xóa. Khi bạn xóa một file, dữ liệu trên đĩa chưa mất đi, NTFS chỉ đổi cờ In Use thành &amp;ldquo;chưa sử dụng&amp;rdquo;. Do đó, các tệp bị xóa vẫn tồn tại bản ghi trong MFT, hỗ trợ việc khôi phục dữ liệu (Carving).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Số thứ tự (Sequence Number):&lt;/strong&gt; Bộ đếm tăng lên khi một bản ghi MFT được sử dụng lại cho file khác, giúp phân biệt file cũ và mới trên cùng một mục nhập.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phân tích Dòng thời gian (Timeline):&lt;/strong&gt; MFT lưu trọn bộ 4 mốc thời gian MACB: Modified (Sửa đổi nội dung), Accessed (Truy cập cuối), Created (Tạo lập), và MFT Record Modified (Sửa đổi siêu dữ liệu). Đây là bằng chứng thép để tái tạo trình tự sự kiện của mã độc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bạn có thể dùng công cụ &lt;code&gt;MFTECmd.exe&lt;/code&gt; của Eric Zimmerman để trích xuất &lt;code&gt;$MFT&lt;/code&gt; ra file CSV và đọc bằng Timeline Explorer:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#75715e"&gt;: Lệnh trích xuất và phân tích file $MFT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MFTECmd.exe -f C:\Evidence\$MFT --csv C:\Evidence --csvf MFT_record.csv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-camera-an-ninh-của-ntfs-logfile-và-usn-journal"&gt;3. &amp;ldquo;Camera an ninh&amp;rdquo; của NTFS: $LogFile và USN Journal
&lt;/h2&gt;&lt;p&gt;Khi mã độc hoạt động, nó thường tạo file, ghi dữ liệu, rồi xóa ngay lập tức để phi tang dấu vết. Tuy nhiên, mọi hành động này đều bị hai &amp;ldquo;camera an ninh&amp;rdquo; của NTFS ghi lại trọn vẹn.&lt;/p&gt;
&lt;h3 id="31-logfile-nhật-ký-giao-dịch"&gt;3.1 $LogFile (Nhật ký giao dịch)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;$LogFile&lt;/code&gt; là một tệp siêu dữ liệu đặc biệt ghi lại mọi thay đổi (tạo, xóa, sửa tệp) trước khi chúng được ghi chính thức xuống đĩa. Chức năng gốc của nó là để hệ thống có thể &amp;ldquo;phát lại&amp;rdquo; (replay) các giao dịch và khôi phục tính nhất quán nếu máy tính bị sập nguồn đột ngột.&lt;/p&gt;
&lt;h3 id="32-usnjrnl-update-sequence-number-journal"&gt;3.2 $USNJrnl (Update Sequence Number Journal)
&lt;/h3&gt;&lt;p&gt;Nếu &lt;code&gt;$LogFile&lt;/code&gt; phục vụ cho hệ thống, thì USN Journal là bản ghi lịch sử tuyệt vời dành cho các dịch vụ theo dõi và giám sát. Nó nằm ẩn trong thư mục &lt;code&gt;$Extend\$UsnJrnl&lt;/code&gt; ở thư mục gốc.&lt;/p&gt;
&lt;p&gt;Đặc biệt, &lt;code&gt;$USNJrnl&lt;/code&gt; bao gồm thành phần chính là &lt;code&gt;$J&lt;/code&gt;, nơi lưu trữ các bản ghi thay đổi thực tế. Đáng chú ý, &lt;code&gt;$J&lt;/code&gt; được Windows triển khai dưới dạng một luồng dữ liệu ẩn Alternate Data Stream (ADS) – chính là kỹ thuật chúng ta đã phân tích ở bài số 4!&lt;/p&gt;
&lt;p&gt;Khi phân tích file &lt;code&gt;$J&lt;/code&gt; (bằng &lt;code&gt;MFTECmd&lt;/code&gt;), chúng ta sẽ thấy các mã sự kiện (Update Reasons) &amp;ldquo;tố cáo&amp;rdquo; mã độc:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;USN_REASON_FILE_CREATE&lt;/code&gt;: Tệp mã độc mới được tạo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;USN_REASON_DATA_OVERWRITE&lt;/code&gt;: Dữ liệu trong tệp đã bị ghi đè.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;USN_REASON_FILE_DELETE&lt;/code&gt;: Tệp mã độc vừa tự xóa chính nó.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;USN_REASON_RENAME_OLD_NAME&lt;/code&gt;: Tệp tin bị đổi tên (thường thấy trong các vụ tấn công Ransomware đổi đuôi file).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-khám-phá-góc-khuất-i30-ntfs-index-allocation"&gt;4. Khám phá góc khuất $I30 (NTFS Index Allocation)
&lt;/h2&gt;&lt;p&gt;Để truy tìm dấu vết của các tệp tin đã bị xóa bốc hơi hoàn toàn khỏi MFT, các chuyên gia Forensics sẽ tìm đến một thuộc tính ẩn khác gọi là &lt;code&gt;$I30&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Thuộc tính &lt;code&gt;$I30&lt;/code&gt; là một chỉ mục (Index) thư mục, có nhiệm vụ duy trì cấu trúc sắp xếp các tệp và thư mục con bên trong một ổ đĩa NTFS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Góc nhìn Forensics:&lt;/strong&gt; Khi một tệp bị xóa, đổi tên hoặc di chuyển sang thư mục khác, tên của tệp đó sẽ bị gạch bỏ khỏi chỉ mục hoạt động của &lt;code&gt;$I30&lt;/code&gt;. Tuy nhiên, dữ liệu văn bản chứa tên tệp đó vẫn còn sót lại trong vùng không gian trống (Slack Space) của tệp &lt;code&gt;$I30&lt;/code&gt; cho đến khi bị ghi đè. Bằng cách quét vùng không gian Slack Space này, chúng ta có thể chứng minh được sự tồn tại trong quá khứ của một công cụ hack hoặc một tệp tin dữ liệu nhạy cảm mà kẻ tấn công tưởng chừng đã xóa sạch không tì vết.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Qua bài viết này, chúng ta đã đi sâu vào tận cùng các khối cấu trúc tĩnh của hệ thống tệp NTFS. Bằng cách kết hợp phân tích MFT, USN Journal và chỉ mục $I30, không một hành vi tạo, xóa hay sửa đổi tệp tin nào của mã độc có thể qua mắt được bạn. Ở bài viết tiếp theo, chúng sẽ chuyển sang một lĩnh vực đầy tính động và cực kỳ hấp dẫn: Giải phẫu Windows Registry và các điểm neo duy trì sự hiện diện của Malware. Đừng bỏ lỡ nhé!&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>