Process
-
Process (tiến trình): Là source code được kernel nạp vào bộ nhớ RAM, chờ được CPU đọc và thực thi để làm một việc gì đó. Process có địa chỉ cố định, và vùng nhớ của một process là biệt lập. Bản thân process không thực hiện bất kỳ việc gì cả, thứ làm việc chính là thread
-
Thread (luồng): Nó được sinh ra bởi tiến trình và có toàn quyền truy cập vào vùng nhớ của tiến trình đó. Một tiến trình có thể có nhiều luồng. Tuy nhiên, mỗi luồng đều có một vùng nhớ riêng. Gồm có đơn luồng và đa luồng
-
DLL (Dynamic Library Link - Thư viện liên kết động): Là tệp tin binary. Các chương trình sẽ sử dụng hàm có sẵn trong DLL thay vì code lại. Một số DLL được nạp vào RAM ngay sau khi OS khởi động và đôi lúc chúng có địa chỉ ô nhớ mặc định, hoặc một số DLL được nạp vào RAM khi cần. Các thư viện này tồn tại lâu dài trên bộ nhớ. Thứ tự tìm kiếm DLL: quy trình mà Windows sử dụng để tìm và tải các tệp DLL khi một chương trình yêu cầu:
-
Handle: một handle là một tham chiếu (reference) được hệ điều hành cung cấp để quản lý các tài nguyên như tệp, thiết bị, tiến trình, luồng, hoặc các đối tượng kernel khác. Handle không phải là con trỏ trực tiếp đến tài nguyên mà là một mã định danh (thường là số nguyên) mà hệ điều hành sử dụng để theo dõi và kiểm soát quyền truy cập. Các ứng dụng sử dụng handle để tương tác với tài nguyên mà không cần biết chi tiết bên trong của chúng. Khi thread mở một file, OS sẽ tạo ra một “handle” của file, handle này sẽ đại diện cho tệp tin đó. Điểm khác biệt giữa handle và object gốc chính là phân quyền. Giả sử thread chỉ muốn read file a.txt. Một handle của file a.txt với quyền READ được tạo ra, thread sẽ tương tác với handle đó
-
Một số tiến trình quan trọng thường được giám sát trong hệ thống Windows:
- svchost.exe: Chạy các dịch vụ hệ thống (như Windows Update, RPC) - csrss.exe (Client Server Runtime Process): Quản lý tiến trình giao diện người dùng và giao tiếp giữa ứng dụng và hệ thống - winlogon.exe: Xử lý đăng nhập người dùng và khóa/mở khóa phiên - lsass.exe: Quản lý chính sách bảo mật, xác thực người dùng - lsaiso: xác thực (trong trường hợp bật Credential Guard) - smss.exe: Khởi tạo phiên người dùng và các tiến trình hệ thống quan trọng
File
Có 03 loại file: Executable, script, other
-
Executable:
-
.exe: Tệp nhị phân, chứa mã máy tính để chạy trực tiếp
-
.cpl (Control Panel items): Tệp nhị phân, tự động tải khi mở Control Panel (ví dụ: ncpa.cpl, bthprops.cpl). Thường nằm ở:
* %SystemRoot%\WinSxS * %SystemRoot%\SysWOW64 * %SystemRoot%\System32
-
-
Script:
- .vbs (Visual Basic Script): clear text, có thể nhúng trong HTML để thực thi mã độc. Liên quan: wscript.exe.
- .hta (HTML Application): clear text, chứa JavaScript/VBScript, được trình duyệt thực thi. Có thể truy cập tài nguyên hệ thống (tệp, thực thi), dùng để cài mã độc, đánh cắp dữ liệu.
- .sct (COM Scriptlet): Script đăng ký làm COM object, nằm ở scriptletURL, thường bị lợi dụng để ẩn mã độc.
-
Other:
- NTFS Alternate Data Stream (ADS): Tệp ẩn chứa metadata (thuộc tính, thời gian tạo, truy cập), không ảnh hưởng kích thước file host. Attacker dùng để tiêm mã độc ẩn, kiểm tra bằng lệnh dir /r.
- .lnk (Link, Shortcut): Symlink trỏ tới file khác, hành động trên .lnk tương đương với file đích, dễ bị lợi dụng để ẩn mã độc.
Permission
- Kernel (hay OS - Hệ điều hành): Kernel là lõi của hệ điều hành, quản lý tài nguyên phần cứng (CPU, bộ nhớ, I/O) và cung cấp giao diện cho các ứng dụng. Nó là cầu nối giữa phần mềm và phần cứng.
- SYSTEM (NT Authority/SYSTEM): Tài khoản SYSTEM là tài khoản hệ thống có quyền cao nhất, đại diện cho các tiến trình hệ thống (như dịch vụ Windows Update). Nó vượt qua cả tài khoản Administrator.
- Administrator: Tài khoản người dùng có quyền quản trị cao, cho phép thay đổi cấu hình hệ thống, cài đặt phần mềm, và phân quyền.
- User: Tài khoản người dùng thông thường, có quyền hạn chế hơn Administrator, chỉ truy cập tài nguyên được cấp phép.
Phân quyền và chia sẻ thư mục, tệp tin:
-
Share và Security:
- Share: Quyền chia sẻ qua mạng (Properties -> Share), cho phép người dùng từ xa truy cập.
- Security: Quyền NTFS cục bộ (Properties -> Security), kiểm soát truy cập trực tiếp trên máy.
-
Truy cập cục bộ (physical access): Chỉ áp dụng NTFS permission
-
Truy cập từ xa (network): Áp dụng cả Sharing permission và NTFS permission
-
READ là quyền hạn chế nhất (chỉ đọc), sẽ ghi đè (overwrite) mọi quyền cao hơn (như Modify, Full Control) khi kết hợp
Registry
Registry là tệp config cho máy Windows. Nó lưu trữ thông tin, setting, config cho hệ điều hành, người dùng, phần mềm, phần cứng. CSDL này có cấu trúc phân cấp
Trong quá trình khởi động hệ thống, Windows ánh xạ các registry này - được lưu trữ trên disk - vào RAM của hệ thống dưới dạng binary tree
Registry của toàn hệ thống (HKLM) được lưu trữ trong: C:\Windows\System32\config
Mỗi người dùng trên máy tính có registry riêng được lưu trữ trong: %userprofile%\NTUSER.dat
HKLM được tải khi khởi động, HKCU được tải khi người dùng đăng nhập. Nếu HKLM có thay đổi thì nó ảnh hưởng đến mọi người dùng máy tính đó nhưng nếu HKCU có thay đổi thì chỉ ảnh hưởng đến người dùng cụ thể.
Root key: Key lớn nhất trong csdl. Có 5 Root key:
- HKLM: Lưu trữ cài đặt chung và cấu hình toàn máy (Local machine).
- HKCU: Lưu trữ cài đặt và tùy chọn dành riêng cho người dùng.
- HKCR: Lưu trữ các thông tin liên quan tới phần mở rộng của tệp
- HKU: Mỗi user trên hệ thống đều có một profile riêng. Các cài đặt và cấu hình riêng dành cho user được lưu tại Subkey của HKU. Khi user đăng nhập, hệ thống sẽ lấy SID của user, tìm trong Subkey của HKU có tên tương ứng và áp dụng profile đó với user.
- HKCC: Chứa thông tin về cấu hình phần cứng hiện tại.
Persistence
Là kỹ thuật mà attacker sử dụng để duy trì quyền truy cập vào hệ thống sau khi xâm nhập ban đầu, thường qua các công cụ hệ thống hoặc registry
Các phương pháp Persistence:
- Run/RunOnce Keys và Auto Start Extensibility Points (ASEP): Chạy chương trình khi người dùng đăng nhập
- Registry Boot Key: Chứa autocheck autochk * để kiểm tra ổ đĩa trước khởi động
- Registry User Logged-on: Thay thế userinit.exe hoặc Shell bằng mã độc để kiểm soát đăng nhập.
- KnownDLL: Liệt kê DLL trong %SystemRoot%\System32. Attacker dùng "DLL Search Order Hijacking" để chèn DLL độc hại.
- Startup Folder: Chạy file khi user đăng nhập (quyền user)
- Startup Keys: Thay đổi đường dẫn để chạy mã độc thay vì thư mục hợp lệ.
- Appinit DLLs: DLL liệt kê trong AppInit_DLLs được tải vào mọi tiến trình dùng user32.dll. Cần quyền Admin, bật LoadAppInit_DLLs = 1, chèn DLL độc hại.
- Service: Chạy mã độc dưới dạng dịch vụ.
- Schedule Task: Chạy mã độc theo lịch.
- Sticky Key (SSR technique): Thay thế sethc.exe (Sticky Keys) bằng mã độc, kích hoạt bằng phím Shift 5 lần.
- COM Model Hijacking: COM Client (yêu cầu function) và COM Server (cung cấp function). Attacker sao chép COM từ HKLM sang HKCU, sửa đổi để chạy mã độc (không cần Admin).
- App Paths: Chèn path độc hại thay thế executable hợp lệ (không cần Admin)
- Image File Execution Options (IFEO): Đính kèm debugger, chạy mã độc trước process (cần Admin)
Log
-
Log mặc định
- Vị trí: %SystemRoot%\Windows\System32\winevt\Logs*.evtx
- %SystemRoot% thường là C:\Windows
- Chức năng: Ghi lại các sự kiện hệ thống như khởi động, lỗi, hoặc hoạt động người dùng, giúp phân tích và khắc phục sự cố hoặc điều tra bảo mật.
-
Sysmon (System Monitor)
- Vị trí: %SystemRoot%\Windows\System32\winevt\Logs*Sysmon*
- Sysmon là công cụ của Microsoft Sysinternals, tạo log chi tiết về hoạt động hệ thống như tiến trình, registry, mạng.
- Chức năng: Theo dõi hành vi đáng ngờ (ví dụ: tạo tiến trình bất thường, truy cập registry), hỗ trợ phát hiện mã độc hoặc xâm nhập.
-
Powershell
- Vị trí: %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
- %userprofile% thường là C:\Users<tên người dùng>
- File này lưu lịch sử lệnh PowerShell được người dùng nhập
Authentication
Windows lưu mật khẩu dưới dạng hash (LM hoặc NTLM), không sử dụng salt
Những nơi quan trọng liên quan đến password:
-
Registry SAM và SYSTEM:
- HKLM\SAM (Security Account Manager) chứa hash mật khẩu người dùng
- HKLM\SYSTEM chứa key để giải mã SAM
-
Process lsass.exe: Quản lý xác thực, lưu trữ hash mật khẩu trong bộ nhớ khi người dùng đăng nhập.
-
Nếu trên Active Directory, password còn có thể nằm trên NTDS.dit: Tệp tự động tạo trên AD, lưu trữ lịch sử mật khẩu của tất cả user trong domain
Kỹ thuật tấn công:
- Dump hash từ registry HKLM\SAM và HKLM\SYSTEM.
- Dump hash từ lsass.exe.
- Dump hash từ NTDS.dit.
- Kerberos ticket (Golden, Silver): Tạo Golden ticket (giả mạo TGT) hoặc Silver ticket (giả mạo TGS) để truy cập không cần mật khẩu
- Remember me: Lợi dụng tính năng "nhớ mật khẩu" để trích xuất thông tin xác thực
Shell
Shell là chương trình trung gian giữa người dùng và hệ điều hành, cho phép tương tác với hệ thống qua các lệnh.
- cmd.exe (Command Prompt): Shell cơ bản của Windows, giới hạn chức năng
- powershell.exe (PowerShell): Shell nâng cao, tích hợp nhiều thư viện, mạnh hơn cmd
- WMIC.exe (Windows Management Instrumentation Command-line): Công cụ dòng lệnh, shell tương tự PowerShell, dùng để quản lý và truy vấn thông tin hệ thống.
- explorer.exe: Shell giao diện đồ họa (GUI), quản lý desktop, taskbar, và trình duyệt tệp.
Shell (cmd.exe, PowerShell, WMIC) là cầu nối lệnh, trong khi explorer.exe là giao diện đồ họa. PowerShell vượt trội nhờ thư viện .NET, cmd hạn chế, WMIC chuyên quản lý, và explorer phục vụ giao diện. Vị trí thường ở %SystemRoot% hoặc thư mục con như System32, SysWOW64, wbem