Overview of Traditional Security Techniques
This section will introduce some traditional, fundamental yet effective assembly language security techniques, rather than cutting-edge rootkits or virus/antivirus technologies. This foundational knowledge is crucial for understanding modern security mechanisms.
Basic Concepts of Viruses and Trojans
In the realm of traditional security, the distinctions between viruses and trojans are as follows:
- Virus: Spreads by infecting other executable files
- Trojan: Acts as a backdoor to the system, potentially leaking information or downloading more malicious programs
Modern malware often combines these two techniques, making it difficult to strictly differentiate, hence they are collectively referred to as “malware”.
Behavioral Characteristics of Malware
Malware may possess the following capabilities:
- Download and execute more malicious code
- Receive remote control commands
- Use rootkit techniques to hide itself
- Cause system instability (blue screens, performance degradation, etc.)
Challenges of Kernel-Level Malware
; Simplified kernel hook example (x86)
hook_syscall:
cli ; Disable interrupts
mov eax, [syscall_table+4*0x80] ; Get original system call address
mov [original_syscall], eax ; Save original address
mov dword [syscall_table+4*0x80], our_handler ; Replace with our handler
sti ; Restore interrupts
ret
our_handler:
; Malicious code logic
cmp eax, 0x01 ; Check system call number
je monitor_file_access
jmp [original_syscall] ; Jump to original handler
The reasons why kernel-level malware is extremely difficult to remove are:
- It has the same privilege level as the operating system
- It can intercept and modify system calls
- It can hide its existence
Prevention is Better than Cure
The basic principle of security isprevention is better than cure. Preventing malicious code execution is more effective than cleaning it up afterward. Modern defense mechanisms include:
- User Account Control (UAC)
- Code signing verification
- Principle of least privilege
Analysis of UAC Mechanism
Although UAC introduced in Vista is not perfect, it provides important protection:
; Simplified logic simulating UAC privilege check
check_privilege:
call get_current_token
test eax, ADMIN_FLAG
jnz allow_execution
; Show UAC prompt
call show_uac_prompt
cmp eax, USER_CONFIRMED
jne deny_execution
allow_execution:
; Elevate privileges to execute code
ret
deny_execution:
; Deny execution
mov eax, ACCESS_DENIED
ret
Advantages and disadvantages of UAC:
- Advantages: Prevents automatically running malicious programs
- Disadvantages: Frequent prompts affect user experience
Examples of Traditional Defense Techniques
- Code Checksums and Verification:
verify_checksum:
mov esi, code_start
mov ecx, code_length
xor eax, eax
calc_loop:
add al, [esi]
inc esi
loop calc_loop
cmp eax, [stored_checksum]
jne corruption_detected
ret
- System Call Monitoring:
monitor_syscalls:
mov eax, [esp+4] ; Get system call number
cmp eax, DANGEROUS_CALL
jne allow_call
; Log or block dangerous calls
call log_suspicious_activity
allow_call:
jmp [original_syscall]
These traditional techniques, although simple, form the foundation of modern security defenses. Understanding these principles is essential for further learning of advanced security technologies.