악성코드(Malware)는 시스템에 해를 끼치기 위해 설계된 소프트웨어의 총칭이다. 유형에 따라 동작 방식과 전파 경로가 다르다.
주요 악성코드 유형 비교
| 유형 | 자기 복제 | 숙주 필요 | 전파 방식 | 주요 목적 |
|---|
| 바이러스 | 예 | 예 (파일) | 감염 파일 실행 | 파괴, 전파 |
| 웜 | 예 | 아니요 | 네트워크 자동 전파 | 전파, DDoS |
| 트로이목마 | 아니요 | 아니요 | 사용자 실행 유도 | 백도어, 정보 탈취 |
| 랜섬웨어 | 경우에 따라 | 아니요 | 이메일, 취약점 | 금전 갈취 |
| 루트킷 | 아니요 | 아니요 | 취약점 악용 | 은닉, 지속 |
| 스파이웨어 | 아니요 | 아니요 | 번들 설치 | 정보 수집 |
| 봇넷 | 예 | 아니요 | 네트워크 전파 | DDoS, 스팸 |
랜섬웨어 동작 방식
python
# 랜섬웨어 동작 (교육 목적 의사 코드)
def ransomware_flow():
# 1. C2 서버에서 공개키 수신
public_key = request_key_from_c2()
# 2. 파일 암호화
for file in enumerate_target_files():
aes_key = generate_random_aes_key()
encrypt_file(file, aes_key)
# AES 키를 공격자 공개키로 암호화 (피해자는 복호화 불가)
encrypted_aes = rsa_encrypt(aes_key, public_key)
save_alongside(file, encrypted_aes)
# 3. 몸값 요구
display_ransom_note(amount="0.5 BTC", wallet="bc1q...")
파일리스 악성코드 (Fileless Malware)
powershell
# PowerShell 메모리 실행 (탐지 회피)
$code = [System.Convert]::FromBase64String("BASE64_SHELLCODE")
$ptr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($code.Length)
[System.Runtime.InteropServices.Marshal]::Copy($code, 0, $ptr, $code.Length)
$delegate = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer(
$ptr, [System.Action])
$delegate.Invoke()
# 파일 없이 메모리에서 직접 실행 → 안티바이러스 우회
탐지 및 대응
행동 기반 탐지:
- 프로세스 이상 행동 모니터링 (EDR)
- 네트워크 트래픽 이상 탐지 (NDR)
- 파일 시스템 이상 변경 탐지
예방:
- 정기적인 오프라인 백업 (3-2-1 규칙)
- 최소 권한 원칙
- 이메일 샌드박싱
- 사용자 보안 교육
관련 문서