악성코드(Malware)에 대한 위협은 인터넷이 존재하는 한 어디에서나 존재합니다. 그 종류는 바이러스, 웜, 트로이 목마, 랜섬웨어, 스파이웨어 등 매우 다양하며, 공격 방식 또한 언제 어디서든 예기치 못한 방향에서 발생할 수 있습니다.
스팸 메일, 피싱 사이트, 취약한 소프트웨어, 감염된 USB 등 사용자가 상상하기 어려운 경로를 통해 악성코드는 침투합니다. 그 결과는 개인정보 유출에 그치지 않고, 시스템 자원(Resource)을 소모시켜 정상적인 동작을 방해하거나, 게임 해킹 도구를 활용하여 금전적 피해를 발생시키는 등 피해 유형은 무궁무진합니다. 따라서 악성코드의 원리를 이해하고 분석하는 능력은 보안 전문가에게 필수적입니다.
악성코드 분석 기초
- 정적 분석:
- PE/ELF 파일 구조 이해
- 문자열 추출, 디스어셈블(IDA, Ghidra)
- 패킹/난독화 탐지
- 동적 분석:
- 샌드박스 환경(Cuckoo, Any.Run)에서 실행
- API 호출 모니터링, 프로세스 행동 분석
- 네트워크 트래픽 캡처(Wireshark, tcpdump)
필수 기본 기술 지식
- 어셈블리어(Assembly): 악성코드 내부 동작을 이해하는 기본 언어
- 컴퓨터 구조: 메모리 구조(Stack/Heap), CPU 명령어 처리 방식
- 운영체제 내부: Windows API, Linux Syscall, 프로세스·스레드 관리
- 리버스 엔지니어링: 디버깅(gdb, x64dbg, WinDbg), 코드 패치, 역어셈블
악성코드 제작 기법 및 탐지 회피
- 패킹(Packing): UPX, Themida 등으로 코드 압축·암호화
- 난독화(Obfuscation): 흐름 제어 난독화, 문자열 암호화
- Polymorphic/Metamorphic Malware: 실행 때마다 코드 형태 변경
- 파일리스(Fileless) 공격: 메모리 기반 공격, 레지스트리 이용
- 안티 디버깅/안티 VM 기법: 분석 환경 회피
악성코드 대응 기술
- 백신 및 EDR(Endpoint Detection & Response)
- 시그니처 기반 탐지 vs 행위 기반 탐지