Câu hỏi: IAM302 - Phần 6: Gỡ lỗi và điều tra bộ nhớ
31 câu trắc nghiệm kèm lời giải của môn IAM302 - Phân tích mã độc và kỹ thuật dịch ngược, xếp theo thứ tự nhập vào ngân hàng.
Danh sách câu hỏi
20/31 câuCòn 11
1What does memory forensics analyze?4 lựa chọn
AHard disk partitions
BGraphics rendering
CCPU temperature logs
DPhysical RAM content
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Physical RAM content". Điều tra bộ nhớ (memory forensics) là phân tích bản chụp bộ nhớ vật lý (memory dump) để tìm tiến trình đang chạy hoặc đã bị ẩn, DLL đã nạp, kết nối mạng, khoá registry đang mở, vùng mã bị tiêm và cả khoá mã hoá, tức những dấu vết chỉ tồn tại khi máy đang chạy và mất đi khi tắt máy; công cụ tiêu biểu là Volatility. Nhờ vậy nó lộ được mã độc không ghi tệp xuống đĩa (fileless) hoặc đã giải nén trong bộ nhớ. "Hard disk partitions" thuộc về điều tra đĩa (disk forensics), nghiên cứu hệ thống tệp lưu bền trên ổ cứng chứ không phải RAM. "Graphics rendering" là công việc dựng hình của GPU, không phải đối tượng điều tra. "CPU temperature logs" là dữ liệu giám sát phần cứng, không chứa dấu vết hoạt động của mã độc.
AIt searches for text strings in network traffic
BIt identifies references to strings within the malware code
CIt decrypts encrypted files found in memory dumps
DIt generates antivirus signatures to detect malware
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It identifies references to strings within the malware code". Trong OllyDbg, lệnh Search for > All referenced text strings quét mã đã tháo (disassembly) của module đang xem và liệt kê mọi lệnh có tham chiếu tới một chuỗi, kèm địa chỉ lệnh đó; nhấp đúp là nhảy tới chỗ chuỗi được dùng, nên nhà phân tích nhanh chóng tìm ra đoạn mã xử lý URL, khoá registry hay thông báo lỗi để đặt breakpoint. "It searches for text strings in network traffic" sai vì OllyDbg là trình gỡ lỗi làm việc trên tiến trình, không bắt gói tin; việc đó thuộc Wireshark. "It decrypts encrypted files found in memory dumps" sai vì tính năng chỉ tìm tham chiếu, chuỗi còn mã hoá vẫn hiện dạng rác hoặc không hiện. "It generates antivirus signatures to detect malware" sai vì tạo chữ ký là việc của công cụ như YARA hay của hãng diệt virus, không phải của trình gỡ lỗi.
AExtracting files from the disk
BCreating a memory dump of the target system
CAnalyzing network traffic
DScanning for malware signatures
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Creating a memory dump of the target system". Pháp chứng bộ nhớ (memory forensics) làm việc với RAM, vốn là dữ liệu dễ bay hơi (volatile) mất đi khi tắt máy, nên bước đầu tiên luôn là thu nhận: chụp toàn bộ bộ nhớ vật lý ra tệp ảnh (memory dump) bằng công cụ như DumpIt, WinPmem, FTK Imager hoặc lấy tệp .vmem của máy ảo, càng sớm càng tốt để giữ được trạng thái tiến trình, kết nối mạng và khoá giải mã; sau đó mới phân tích ảnh bằng Volatility. Bác: "Extracting files from the disk" thuộc pháp chứng đĩa (disk forensics), không phải bộ nhớ. "Analyzing network traffic" là pháp chứng mạng dựa trên gói tin bắt được; thông tin kết nối nằm trong RAM chỉ đọc được sau khi đã có ảnh bộ nhớ. "Scanning for malware signatures" là một bước phân tích, ví dụ chạy yarascan hay malfind trên ảnh, nên chỉ làm được sau khi đã chụp ảnh.
AWin32dd
BWin64dd
CTask Manager
DRegistry Editor
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Win64dd". Win32dd và Win64dd là cặp công cụ thu bộ nhớ (memory acquisition) chạy từ dòng lệnh, dùng một driver chế độ nhân để đọc toàn bộ RAM vật lý rồi ghi ra tệp dạng raw hoặc crash dump cho Volatility hay WinDbg phân tích; trên Windows 64 bit phải dùng bản 64 bit vì driver phải khớp kiến trúc nhân và cần truy cập được vùng địa chỉ vật lý lớn hơn 4 GB. "Win32dd" là bản dành cho Windows 32 bit, chạy trên hệ 64 bit sẽ không nạp được driver nên không thu được bộ nhớ đầy đủ. "Task Manager" chỉ liệt kê tiến trình và có thể tạo dump của riêng một tiến trình, không chụp toàn bộ RAM vật lý. "Registry Editor" chỉ để xem và sửa registry, không có chức năng thu bộ nhớ.
AFile system
BRegistry dump
CProcess and thread structures
DARP cache
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Process and thread structures". Khi mã độc tiêm luồng (thread injection) vào tiến trình khác, nó cấp phát vùng nhớ trong tiến trình đích rồi tạo luồng mới chạy ở đó; dấu vết nằm trong cấu trúc tiến trình và luồng của nhân Windows như EPROCESS, ETHREAD và cây mô tả vùng nhớ VAD. Trong pháp chứng bộ nhớ, Volatility dùng các plugin như pslist, threads hay malfind để tìm luồng có địa chỉ bắt đầu nằm ngoài mọi module đã nạp, hoặc vùng nhớ vừa ghi được vừa thực thi được. "File system" sai vì tiêm luồng diễn ra trong RAM và có thể không để lại tệp nào. "Registry dump" giúp tìm cơ chế bám trụ (persistence) như khoá Run, không cho thấy luồng lạ trong tiến trình. "ARP cache" chỉ ánh xạ địa chỉ IP sang địa chỉ MAC trong mạng nội bộ, không liên quan tới luồng.
6In the event of an exception, when does the debugger receive a second chance to handle it?4 lựa chọn
AAlways before the application
BOnly if the program crashes
CIf the application fails to handle the exception
DNever
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "If the application fails to handle the exception". Khi chương trình đang bị gỡ lỗi phát sinh ngoại lệ, Windows báo cho debugger lần đầu (first-chance exception) trước khi chương trình được xử lý; nếu debugger cho qua, ngoại lệ được chuyển cho các bộ xử lý SEH hay VEH của ứng dụng. Chỉ khi không bộ xử lý nào của ứng dụng nhận nó, hệ thống mới báo lại cho debugger lần hai (second-chance exception), và lúc này chương trình sẽ bị kết thúc nếu debugger cũng không xử lý. Bác: "Always before the application" mô tả cơ hội lần đầu, không phải lần hai. "Only if the program crashes" đảo thứ tự nhân quả: cơ hội lần hai đến ngay trước khi chương trình sập, chính vì ứng dụng không xử lý được, chứ không đến sau khi đã sập. "Never" sai vì cơ chế báo hai lần là đặc trưng của Windows debugging API; mã độc còn lợi dụng nó để chống gỡ lỗi bằng cách cố ý gây ngoại lệ.
ASoftware execution breakpoint
BHardware execution breakpoint
CConditional breakpoint
DNone of the mentioned
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Hardware execution breakpoint". Kiến trúc x86 có các thanh ghi gỡ lỗi (debug registers): DR0 tới DR3 chứa địa chỉ điểm dừng, DR7 bật tắt và đặt điều kiện kích hoạt (thực thi, ghi, đọc hoặc ghi), DR6 cho biết điểm nào vừa kích hoạt; CPU tự so địa chỉ nên breakpoint phần cứng không sửa byte mã nào và tối đa chỉ có bốn cái, rất hữu ích khi mã độc tự kiểm tra tính toàn vẹn của mã. "Software execution breakpoint" hoạt động bằng cách ghi đè byte đầu lệnh bằng 0xCC (lệnh INT 3), không dùng thanh ghi DR. "Conditional breakpoint" là breakpoint kèm biểu thức điều kiện do debugger đánh giá mỗi lần chạm, thường xây trên breakpoint phần mềm. "None of the mentioned" sai vì đã có loại dùng thanh ghi DR trong danh sách.
8Which debugger feature allows analysts to view and modify the contents of registers and memory?4 lựa chọn
ABreakpoints
BStepping through code
CMemory dump
DWatchpoints
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Memory dump". Cần nói thẳng: không phương án nào gọi đúng tên cửa sổ thanh ghi và cửa sổ bộ nhớ của trình gỡ lỗi, nên đây là lựa chọn gần nhất chứ không phải thuật ngữ chuẩn. Trong OllyDbg hay x64dbg, khung kết xuất bộ nhớ (memory dump, khung Dump) hiển thị nội dung từng byte của một vùng nhớ và cho phép sửa trực tiếp, nằm cạnh khung thanh ghi cũng sửa được giá trị; vì vậy đây là tính năng duy nhất trong số được nêu thực sự cho xem và đổi dữ liệu. "Breakpoints" chỉ dừng chương trình tại một địa chỉ để quan sát, bản thân nó không hiển thị hay sửa gì. "Stepping through code" chỉ cho chạy từng lệnh một rồi dừng, là cách điều khiển luồng thực thi. "Watchpoints" chỉ báo khi giá trị tại một địa chỉ thay đổi hoặc bị truy cập, tức là theo dõi chứ không phải sửa.
AIt guarantees complete removal of malware from infected systems
BIt allows for real-time monitoring of malware behavior
CIt enables detailed analysis of malware execution flow
DIt automatically generates antivirus signatures
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "It enables detailed analysis of malware execution flow". Debugger như x64dbg, OllyDbg hay WinDbg cho phép chạy mẫu từng lệnh (single-step), đặt điểm dừng (breakpoint) tại các hàm API quan trọng, xem và sửa thanh ghi, ngăn xếp, bộ nhớ; nhờ đó người phân tích lần được luồng thực thi chi tiết: nhánh nào được rẽ, chuỗi được giải mã ra sao, payload được giải nén ở đâu, những điều phân tích tĩnh khó thấy khi mã bị làm rối. Bác: "It guarantees complete removal of malware from infected systems" sai, debugger chỉ quan sát và điều khiển chương trình chứ không gỡ bỏ mã độc. "It allows for real-time monitoring of malware behavior" mô tả đúng hơn Process Monitor hay sandbox, vốn ghi hành vi tổng thể khi mẫu chạy tự do, trong khi debugger dừng chương trình để soi bên trong. "It automatically generates antivirus signatures" sai vì chữ ký do người phân tích hoặc hệ thống riêng tạo ra, debugger không làm việc đó.
ASoftware execution breakpoint
BHardware execution breakpoint
CConditional breakpoint
DNone of the mentioned
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Software execution breakpoint". Breakpoint phần mềm là loại mặc định của các trình gỡ lỗi như OllyDbg hay x64dbg (phím F2) và WinDbg (lệnh bp hoặc phím F9): trình gỡ lỗi ghi đè byte đầu của lệnh bằng 0xCC (lệnh INT 3), CPU chạy tới đó thì sinh ngắt, trình gỡ lỗi dừng chương trình rồi khôi phục byte gốc; loại này không giới hạn số lượng nên được dùng nhiều nhất. Câu này có chỗ tranh cãi vì câu hỏi dùng số nhiều "types", và "Hardware execution breakpoint" (dùng các thanh ghi DR0 tới DR3, cần khi mã độc quét tìm byte 0xCC hay tự sửa mã của nó) cùng "Conditional breakpoint" (chỉ dừng khi biểu thức điều kiện đúng) cũng là những loại phổ biến; nhưng khi chỉ được chọn một thì loại thông dụng nhất là breakpoint phần mềm. "None of the mentioned" sai vì cả ba loại được liệt kê đều là breakpoint có thật và hay gặp.
11What does "single-stepping" mean in debugging?4 lựa chọn
ARunning malware from Safe Mode
BDecrypting malware payload
CExecuting one instruction at a time
DSkipping functions for speed
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Executing one instruction at a time". Single-stepping (chạy từng bước) là chế độ trình gỡ lỗi thực thi đúng một lệnh máy rồi dừng lại, để nhà phân tích xem thanh ghi, cờ và bộ nhớ đổi ra sao sau mỗi lệnh; trên x86 nó dựa vào cờ bẫy TF, trong OllyDbg là phím F7 (step into) và F8 (step over). "Running malware from Safe Mode" là cách khởi động hệ điều hành với ít dịch vụ, không phải kỹ thuật gỡ lỗi. "Decrypting malware payload" là mục tiêu có thể đạt được nhờ chạy từng bước qua hàm giải mã, nhưng không phải định nghĩa của single-stepping. "Skipping functions for speed" gần với step over hoặc chạy thẳng tới breakpoint, tức là bỏ qua chi tiết, ngược với tinh thần đi từng lệnh một.
AGDB
BWinDbg
COllyDbg
DIDA Free
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "OllyDbg". OllyDbg là debugger chế độ người dùng (user-mode) 32 bit cho Windows, gỡ lỗi trực tiếp ở mức hợp ngữ mà không cần mã nguồn, hiển thị cùng lúc mã dịch ngược, thanh ghi, ngăn xếp và bộ nhớ, kèm nhiều plugin che giấu debugger, nên từ lâu là lựa chọn phổ biến nhất khi phân tích mã độc chạy ở Ring 3 (ngày nay x64dbg kế thừa vị trí đó). Bác: "GDB" là debugger của dự án GNU, mạnh trên Linux và với chương trình có thông tin gỡ lỗi, ít dùng cho mã độc Windows. "WinDbg" của Microsoft gỡ lỗi được cả user-mode nhưng thế mạnh là kernel-mode và phân tích tệp dump, giao diện dòng lệnh khó dùng hơn cho phân tích ở mức người dùng. "IDA Free" chủ yếu là trình dịch ngược tĩnh (disassembler); nó có debugger đi kèm nhưng được biết đến vì phân tích tĩnh.
AAnalyze network traffic
BView a map of memory allocations and sections
CMonitor system performance
DDecrypt encrypted malware payloads
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "View a map of memory allocations and sections". Cửa sổ Memory Map của OllyDbg (Alt+M) liệt kê mọi vùng nhớ trong không gian địa chỉ của tiến trình đang gỡ lỗi: địa chỉ, kích thước, module sở hữu, tên section như .text, .data, .rsrc và quyền đọc, ghi, thực thi. Nhờ đó nhà phân tích thấy DLL nạp ở đâu, phát hiện vùng mới cấp phát có quyền thực thi do packer bung ra, rồi kết xuất vùng đó. "Analyze network traffic" là việc của Wireshark hay FakeNet, không phải của trình gỡ lỗi. "Monitor system performance" là việc của Task Manager hay Performance Monitor. "Decrypt encrypted malware payloads" sai vì Memory Map chỉ hiển thị bố cục bộ nhớ; việc giải mã do chính mẫu làm khi chạy, nhà phân tích chỉ quan sát kết quả.
ARemoving all malware traces from the system
BGenerating a detailed report of findings
CRestoring the system to a previous state
DEncrypting sensitive data found in the memory dump
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Generating a detailed report of findings". Quy trình pháp chứng bộ nhớ đi từ thu nhận ảnh RAM, phân tích bằng Volatility (tiến trình, DLL, kết nối, mã tiêm), rồi kết thúc bằng lập báo cáo: ghi lại phát hiện, bằng chứng, chỉ dấu xâm nhập IOC, dòng thời gian và cách tái lập kết quả để đội ứng cứu và bên pháp lý sử dụng. Báo cáo là đầu ra có giá trị của toàn bộ cuộc điều tra. Bác: "Removing all malware traces from the system" là việc khắc phục (remediation) của đội ứng cứu, nằm ngoài pháp chứng, và nếu làm trước khi điều tra xong còn huỷ mất bằng chứng. "Restoring the system to a previous state" cũng là bước khôi phục hệ thống, không thuộc phân tích ảnh bộ nhớ. "Encrypting sensitive data found in the memory dump" có thể là biện pháp bảo vệ bằng chứng khi lưu trữ, nhưng không phải trọng tâm của giai đoạn cuối.
ARunning antivirus scans
BAnalyzing the contents of the dump using specialized tools
CRebooting the system
DChecking system logs
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Analyzing the contents of the dump using specialized tools". Điều tra bộ nhớ đi theo hai bước: thu bộ nhớ (acquisition) rồi phân tích; sau khi có tệp dump, nhà phân tích dùng công cụ chuyên dụng như Volatility để xác định phiên bản hệ điều hành, liệt kê tiến trình bằng pslist và psscan, xem kết nối mạng bằng netscan, tìm vùng mã bị tiêm bằng malfind và trích tệp thực thi ra khỏi bộ nhớ. "Running antivirus scans" chỉ so chữ ký trên chuỗi byte, không dựng lại được cấu trúc nhân hay danh sách tiến trình trong dump, nên không thay thế được phân tích. "Rebooting the system" không phải bước điều tra, khởi động lại còn xoá sạch trạng thái RAM còn lại và có thể kích hoạt cơ chế bám trụ của mã độc. "Checking system logs" là nguồn bổ sung thuộc điều tra đĩa, không phải bước kế tiếp xử lý bản dump.
AA measure of system instability caused by malware
BA forensic analysis tool used to investigate network traffic
CA framework for analyzing memory dumps of compromised systems
DA method for encrypting sensitive data stored in RAM
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "A framework for analyzing memory dumps of compromised systems". Volatility là framework mã nguồn mở viết bằng Python để phân tích ảnh chụp RAM (memory dump) của Windows, Linux và macOS: nó dựng lại cấu trúc nhân để liệt kê tiến trình, luồng, DLL, handle, kết nối mạng, khoá registry còn trong bộ nhớ và phát hiện mã bị tiêm qua các plugin như pslist, netscan, malfind. "A measure of system instability caused by malware" là nghĩa đời thường của từ volatility (tính biến động); trong pháp chứng, dữ liệu dễ mất là RAM, nhưng tên công cụ không phải một thước đo. "A forensic analysis tool used to investigate network traffic" sai vì phân tích gói tin thuộc Wireshark; Volatility chỉ thấy các kết nối còn lưu trong bộ nhớ. "A method for encrypting sensitive data stored in RAM" sai vì Volatility đọc và phân tích, không mã hoá gì.
17What is the primary goal of memory forensics?4 lựa chọn
ARecovering deleted files from storage devices
BAnalyzing network traffic for security threats
CExtracting information from volatile memory of a system
DDecrypting encrypted files on disk
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Extracting information from volatile memory of a system". Pháp chứng bộ nhớ nhắm vào RAM, dữ liệu dễ bay hơi chỉ tồn tại khi máy đang chạy: danh sách tiến trình kể cả tiến trình bị rootkit ẩn, DLL đã nạp, mã được tiêm, kết nối mạng, khoá mã hoá, lệnh đã gõ. Nhiều mã độc không để lại tệp trên đĩa (fileless) hoặc chỉ giải nén payload trong bộ nhớ, nên đây là nơi duy nhất thấy được chúng. Bác: "Recovering deleted files from storage devices" là pháp chứng đĩa, làm việc trên ổ cứng. "Analyzing network traffic for security threats" thuộc pháp chứng mạng hay hệ thống phát hiện xâm nhập, dựa trên gói tin bắt được. "Decrypting encrypted files on disk" là giải mã dữ liệu lưu trữ; khoá tìm được trong RAM có thể giúp việc này nhưng nó không phải mục tiêu chính của pháp chứng bộ nhớ.
ASet a breakpoint after the decryption routine executes
BStep-over all function calls in the debugger
CSet a breakpoint before the decryption routine starts
DAnalyze the binary using a disassembler without execution
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Set a breakpoint after the decryption routine executes". Mẫu chỉ giải mã chuỗi lúc chạy, nên chuỗi rõ (plaintext) chỉ tồn tại trong bộ nhớ sau khi hàm giải mã trả về. Đặt breakpoint ngay sau lệnh call tới hàm giải mã; khi dừng, nhìn thanh ghi trả về (thường là EAX) hoặc vùng đệm đích trong khung dump là đọc được chuỗi đã giải. "Set a breakpoint before the decryption routine starts" dừng quá sớm: bộ đệm khi đó vẫn chứa dữ liệu mã hoá; cách này chỉ hữu ích để xem tham số như khoá giải mã. "Step-over all function calls in the debugger" tốn công và dễ lướt qua chỗ cần xem, không phải cách hiệu quả nhất. "Analyze the binary using a disassembler without execution" là phân tích tĩnh, chỉ thấy chuỗi đã mã hoá; muốn ra chuỗi rõ phải tự dịch ngược thuật toán giải mã, tốn công hơn nhiều.
AMemory access violation
BPrivilege violation
CFirst-chance exception
DINT 3
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Privilege violation". CPU x86 chia mức đặc quyền thành các vòng (ring): nhân chạy ở Ring 0, ứng dụng ở Ring 3. Khi một tiến trình Ring 3 thực thi lệnh đặc quyền như hlt, cli, in, out hay ghi thanh ghi điều khiển, CPU sinh lỗi bảo vệ và Windows báo cho tiến trình ngoại lệ vi phạm đặc quyền (EXCEPTION_PRIV_INSTRUCTION, privilege violation). Bác: "Memory access violation" xảy ra khi đọc ghi địa chỉ không hợp lệ hay không được phép, là lỗi về bộ nhớ chứ không phải về lệnh đặc quyền. "First-chance exception" không phải một loại ngoại lệ mà là lần báo đầu tiên cho debugger, áp dụng với mọi loại ngoại lệ. "INT 3" là lệnh điểm dừng phần mềm (mã 0xCC) gây ngoại lệ breakpoint mà debugger sử dụng, và nó được phép thực thi ngay ở Ring 3.
20What is a first-chance exception in debugging?4 lựa chọn
AWhen malware crashes the system
BWhen the program requests admin access
CWhen the debugger is first given control after an exception
DWhen a program finishes execution
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "When the debugger is first given control after an exception". Khi chương trình đang bị gỡ lỗi phát sinh ngoại lệ (chia cho 0, truy cập sai bộ nhớ, INT 3), Windows dừng chương trình và báo cho debugger trước tiên, gọi là first-chance exception (ngoại lệ cơ hội lần đầu); debugger có thể tự xử lý hoặc chuyển tiếp cho bộ xử lý SEH của chương trình. Nếu chương trình không xử lý được, debugger mới nhận lần hai (second chance). Bác: "When malware crashes the system" mô tả sự cố sập hệ thống, không phải khái niệm gỡ lỗi; ngoại lệ lần đầu chưa làm chương trình sập. "When the program requests admin access" là yêu cầu nâng quyền qua UAC, không sinh ngoại lệ. "When a program finishes execution" là sự kiện tiến trình kết thúc, debugger có nhận được nhưng đó không phải ngoại lệ.