Lời nói đầu

Digital Forensic – Điều tra số là là một ngành khoa học điều tra dựa trên những dữ liệu được lưu trữ trên thiết bị số nhằm mục đích tìm kiếm, thu thập các bằng chứng và tiến hành phân tích các bằng chứng đó để phục vụ công tác điều tra, truy vết tội phạm công nghệ cao.

Qua một thời gian được học hỏi và xử lý các case thực tế, mình xin chia sẻ những kiến thức hạn hẹp đó qua loạt bài về Digital Forensic này và mình xin bắt đầu bằng series bài Windows Registry.

Trong điều tra số, việc hiểu, nắm được cấu hình, cài đặt của hệ thống, hay xác định được một số hành vi của người dùng trên máy tính đó là một việc rất quan trọng. Và trên hệ điều hành Windows, những thông tin hữu ích này có thể được tìm thấy tại Registry.

Trước khi đi vào tìm kiếm và phân tích các bằng chứng hữu ích trong Registry chúng ta cần phải biết được Registry là gì? Nó nằm ở đâu? Cấu trúc của nó như thế nào?. Và ở phần đầu tiên này, chúng ta sẽ bắt đầu tìm hiểu những điều cơ bản về Registry để trả lời cho câu hỏi đó, nó cung cấp cho bạn nền tảng cần thiết để hiểu cách đọc thông tin từ Registry.

Lưu ý rằng, đối với những bạn mới bắt đầu tìm hiểu về registry hay forensic để hiểu được những phần lý thuyết ban đầu sẽ khá khô khan này không có gì tốt hơn là tiến hành thực nghiệm và gần gũi nhất là ngay trên máy tính (Windows OS) của bạn! Vì bạn có thể đã hiểu hơn về máy tính của bạn hay thói quen sử dụng của bản thân trên máy đó một phần nào đó rồi.

1.     Registry là gì?

Registry có thể được coi như một cơ sở dữ liệu có cấu trúc của Windows.  Registry được sử dụng để lưu trữ thông tin cấu hình, cài đặt của hệ điều hành và cả của các services và ứng dụng. Vì vậy, nó là một nguồn thông tin hữu ích của các chứng cứ trên máy tính.

Nhưng có một lưu ý rằng không phải là tất cả các ứng dụng đều sử dụng registry để lưu cấu hình, cài đặt của nó, một số chương trình sử dụng tập tin .XML hay .INI để lưu cấu hình.

Ngoài ra Registry còn hỗ trợ cấu trúc mutil-profile lưu trữ cài đặt của người dùng, mỗi người dùng sẽ có cấu hình khác nhau dành riêng cho tài khoản của họ, một ví dụ đơn giản như là UserA cài đặt Unikey khởi động cùng Windows còn UserB thì không cài chương trình đó, Registry sẽ ghi lại những điều này và lưu vào thư mục riêng của mỗi người dùng. Chúng ta đi sẽ thảo luận chi tiết hơn về điều này ở phần sau.

2.     Registry Strucure

Trên HĐH Windows bạn có thể sử dụng Registry Editor:

Registry có cấu trúc cụ thể, được chia thành 2 thành phần: key và value. Trong đó key giống như folder, một key có thể chứa thêm nhiều key hoặc chứa các value. Đường dẫn đi từ key cha sang key con hơi giống với đường dẫn của thư mục trong Windows và tên của nó không quan trọng có viết hoa hay thường. Có một số thuật ngữ cần lưu ý:

  • Root key: Trong Windows từ Win8.1 có năm root keys, mỗi root key có một mục đích cụ thể. Nó còn có tên khác như là HKEY hay hive.
  • Subkey: subkey giống như một thư mục con trong một thư mục.
  • Key: Key là một thư mục trong registry có thể chứa các giá trị hoặc thư mục bổ sung. Cả root key và subkey đều là key.

Ví dụ:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run, chứa một loạt các giá trị là file thực thi được khởi động tự động khi người dùng đăng nhập. Root key là HKCU (HKEY_CURRENT_USER), key này lưu trữ các Subkey: SOFTWARE, Microsoft, Windows, CurrentVersion và Run. Và Key Run chứa các Value.

Với mỗi root key nói riêng và các key nói chung, sẽ chỉ có những phần mềm nhất định được truy cập vào vì lý do bảo mật. Chính vì thế mà mỗi người dùng, phần mềm, dịch vụ sẽ chỉ thấy những key mà chúng được phép xem mà thôi.

Mỗi value có ba thành phần: Name, TypeData, ví dụ như trong hình trên. Tiếp theo là một số Type của value:

  • REG_NONE: Không có loại
  • REG_SZ: Chuỗi kí tự bất kì
  • REG_BINARY: Dữ liệu dạng nhị phân
  • REG_DWORD: Một số 32-bit

Ngoài ra còn một số value types khác các bạn có thể tìm đọc tại: https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types

3.     Registry Root Keys

Registry được chia thành 5 root key:

  • HKEY_LOCAL_MACHINE (HKLM)
  • HKEY_CURRENT_USER (HKCU)
  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_USERS

Hai root key được sử dụng phổ biến nhất là HKLMHKCU. Một số key là khóa ảo cung cấp cách tham chiếu thông tin registry.

a)  HKEY_CLASSES_ROOT

Rootkey này chứa các subkey, mỗi subkey được đặt tên theo một extention có thể được tìm thấy trong hệ thống, chẳng hạn  nhu .exe hay .evxt, … Dựa vào những key này chúng ta có thể biết được chương trình nào được sử dụng để mở một định dạng file cụ thể, ví dụ như với file có .evxt extention sau đây:

Như trong hình tên, keyname .evtx có value data là “evtxfile”. Sau đó chúng ta tìm kiếm subkey có subkey name liên quan đến  “evtxfile”:

Kết quả cho ta một key có tên evtxfile nằm trong cùng rootkey HKCR. Với kết quả tìm được, có thể xác định chương trình nào đã được sử dụng để chạy file dạng .evxt và ở trường hợp này chính là Event Viewer, nó còn cho biết vị trí trong filesystem:

Thực chất, những thông tin trong rootkey HKCR này được lấy từ hai nguồn:

  • HKEY_LOCAL_MACHINE\Software\Classes
  • HKEY_CURRENT_USER\Software\Classes

Thông thường HKCR chỉ ánh xạ từ HKLM\Software\Classes, đây có thể coi như là mặc định nhưng nếu user cụ thể nào đó sử dụng một chương trình khác để mở một định dạng file HKCU\Software\Classes sẽ được sử dụng và chỉ liên kết với user cụ thể đó.

Ví dụ khi user sử dụng chương trình khác nhau để mở file PDF, khi user đăng nhập vào hệ thống, hệ điều hành sẽ load profile của user đó bao gồm cả tùy chọn chương trình để mở file PDF mà họ đã cài đặt và lúc này chính là trong  HKCU\Software\Classes.

b) HKEY_LOCAL_MACHINE

Chứa thông tin cấu hình, cài đặt của máy tính. Rootkey này dùng cho bất kỳ user nào. Rootkey này có 5 subkeys chính:

  • System: Chứa cấu hình hệ thống, chẳng hạn như computer name, system time zone, network interfaces.
  • Software: Chứa cài đặt, cấu hình về những ứng dụng được cài đặt trên hệ thống và những services của hệ điều hành.
  • SAM: Security Account Manager, chứa thông tin bảo mật về user và group.
  • Security: Chứa chính sách bảo mật của hệ thống.
  • Hardware: Thông tin về thiết bị hardware kết nối tới hệ thống. Những thông tin này được lưu trữ trong suốt quát trình hệ thống khởi động.

c)   HKEY_USERS

Lưu những thông tin của tất cả các user, mỗi user là một nhánh với tên là số ID của user đó. Hãy cùng xem ví dụ sau đây:

  • Default: Đây là cấu hình mặc định cho bất ký user nào và nó nằm tại

%SystemDriver%\Users\Default

  • S-1-5-18: Đây là system profile và nó nằm tại

%systemroot%\system32\config\systemprofile

  • S-1-5-19: Liên quan đến LocalService nằm tại

%systemroot%\C:\Windows\Serviceprofiles\LocalService

  • S-1-5-20: Liên quan đến NetworkService tại

%systemroot%\C:\Windows\Serviceprofiles\NetworkService

  • S-1-5-21-3482516662-285582109-1244947143-1001: Đây chính là người dụng hiện đăng đăng nhập với SID đầy đủ của họ. Và nó nằm tại C:\User\[username].
  • Còn mục S-1-5-21-3482516662-285582109-1244947143-1001-Classes chính là phần chúng ta đã nhắc tới trong HKEY_CLASSES_ROOT.

d) HKEY_CURRENT_USER

Lưu những thông tin cho người dùng đang đăng nhập. Các thư mục, màu màn hình, cài đặt Control Panel được lưu trữ tại đây. Thông tin này được liên kết với profile của user. Nó là nhánh con của HKEY_USERS.

 

Và rootkey cuối cùng HKEY_CURRENT_CONFIG: Lưu thông tin về phần cứng hiện tại đang dùng.

4.     System hives

Ở phần trên, chúng ta đã quyết được vấn đề Registry là gì và cấu trúc của nó. Đây là những gì thể hiện trên Registry editor để dễ dàng đọc và chỉnh sửa nhưng thực chất dữ liệu nằm ở đâu, phần tiếp theo chúng ta sẽ đi tìm hiểu vị trí lưu registry.

Windows Registry không đơn giản là một file mà là một tập hợp các file riêng lẻ, gọi là hive. Mỗi hive chứa một nhánh Registry. Hầu hết được lưu trong thư mục “Windows\System32\Config”. Cụ thể:

HKEY_LOCAL_MACHINE\SYSTEM: \system32\config\system

HKEY_LOCAL_MACHINE\SAM: \system32\config\sam

HKEY_LOCAL_MACHINE\SECURITY: \system32\config\security

HKEY_LOCAL_MACHINE\SOFTWARE: \system32\config\software

Các registry hives này là DEFAULT, SAM, SECURITY, SOFTWARESYSTEM. Các tệp tương ứng với ý nghĩa của chúng trong registry.

Tất cả các tệp hệ thống sẽ nằm trong HKEY _LOCAL_MACHINE, chúng chứa thiết lập hệ thống, tệp khởi động, cấu hình máy và các tệp mặc định khác.

SYSTEM hive lưu trữ trong HKEY_LOCAL_MACHINE\SYSTEM bao gồm cả cấu hình phần cứng và service. Nó cũng sẽ liệt kê tên raw device cho các volume và drives trên hệ thống, bao gồm cả USB keys.

SOFTWARE hive trong HKEY_LOCAL_MACHINE\SOFTWARE, là nơi tìm thấy tất cả các cài đặt cho các ứng dụng. Các chương trình/sản phẩm Windows cũng có cài đặt của chúng được lưu trữ tại đây.

SAM hive chứa tất cả local user accounts và group. Chúng có thể tìm trên hệ  thống của bạn tại HKEY LOCAL MACHINE\SAM.

SECURITY hive chứa tất cả thông tin bảo mật được sử dụng bởi SAM và hệ điều hành bao gồm các chính sách mật khẩu, thông tin thành viên của nhóm, v.v.

AMCACHE.HVE mới xuất hiện lần đầu trên Windows 8, nhưng đã được cập nhật thêm vào Windows 7. Hive này được sử dụng cho khả năng tương thích ứng dụng nội bộ cho phép Windows chạy các tệp thực thi cũ hơn.

5.     User Registry Hives

  • Mỗi người dùng cá nhân có một registry hive.
  • Có thể hiển thị chi tiết về hoạt động của người dùng trên máy
  • Đây là một trong những khía cạnh quan trọng nhất của forensic cần được kiểm tra

NTUSER.DAT

Ví trí của file trên các OS:

  • C:\Documents and Settings\<username>\NTUSER.dat (XP)
  • C: \Users\<username>\NTUSER. dat (Win7-Win10)

Ẩn trong mỗi tài khoản người dùng là một file có tên NTUSER.DAT. File này chứa các cài đặt và tùy chọn cho mỗi người dùng. Windows sẽ tự động tải, thay đổi và lưu file cho bạn. NTUSER.DAT chứa cài đặt tài khoản người dùng trên Windows. Mỗi khi bạn thay đổi giao diện và hoạt động của Windows và các chương trình đã cài đặt, cho dù đó là việc bạn thay đổi hình nền, độ phân giải màn hình hay thậm chí máy in nào là mặc định, Windows cần ghi nhớ tùy chọn của bạn vào lần tải tiếp theo.

Windows thực hiện điều này bằng cách trước tiên lưu trữ thông tin đó vào Registry HKEY_CURRENT_USER. Sau đó, khi bạn đăng xuất hoặc tắt, Windows sẽ lưu thông tin đó vào file NTUSER.DAT. Lần sau khi bạn đăng nhập, Windows sẽ tải NTUSER.DAT vào bộ nhớ và tất cả các tùy chọn của bạn sẽ tải lại vào Registry.

Registry có thể được sử dụng để liệt kê các tệp được sử dụng gần đây nhất. Nó cũng có thể hiển thị cho bạn các tệp cuối cùng đã tìm kiếm trên ổ cứng. Nó cũng có thể hiển thị các URL được nhập cuối cùng mà người dùng đã nhập vào windows trình duyệt của mình. Nó cũng có thể hiển thị các lệnh cuối cùng được thực thi trên hệ thống cũng như các tệp đã được mở. Bạn cũng có thể chứng kiến ​​những tệp nào được lưu lần cuối vào hệ thống Windows. NTUSER.DAT hive chứa tất cả các key liên quan đến người dùng cụ thể. Nó được tìm thấy trên hệ thống của bạn tại HKEY CURRENT USER.

USRCLASS.DAT

Trong Win7-Win10, file này nằm tại:

C:\Users\<username>\AppData\Local\Microsoft\Windows\USRCLASS.DAT

Hive này rất quan trọng vì nó chứa một số thông tin chính liên quan đến thông tin thực thi chương trình bổ sung và sẽ cho chúng ta khả năng cho biết người dùng đã mở hoặc đóng thư mục nào. Trong tệp UsrClass.dat, hệ điều hành Windows có trách nhiệm lưu trữ tất cả thông tin hồ sơ người dùng.

Mục đích chính của UsrClass.dat là hỗ trợ registry root ảo hóa cho User Account Control (UAC). Một KEY tồn tại cho mọi phần mở rộng tên tệp đã đăng ký. UAC virtualized registry được tìm thấy trong VirtualStore key.

Tổng kết

Bài viết này mình đã trình bày về khái niệm, cấu trúc của Registry và vị trí lưu của chúng. Việc hiểu được vị trí lưu trữ và cách đọc Registry sẽ cần thiết cho việc đi phân tích chúng dõ hơn. Hẹn các bạn ở phần tiếp theo

By,

T4fi_RE_Team

518 lượt xem