악성코드 선수지식
01_악성코드 선수지식
1. 악성코드
- 악의적인 동작을 실시하는 코드가 들어간 실행 파일/프로그램/문서를 의미한다.
2. 악성코드 배포 목적
- 개인 및 기업 정보를 탈취 및 수집
- 시스템/디스크/파일 파괴, 삭제, 조작
- 랜썸웨어와 같은 금전 요구
- 광고 노출 및 홍보 수단
3. 악성코드 분석 단계
1) 패킹 여부 확인
- 실행 파일이 패커에 의해서 압축되어 있는지, 프로덱터에 의해서 보호되어 있는지 확인하는 단계
- 분석 도구 : exeinfope, PEiD, PEview, OllyDbg, ImportREC, LoadPE
2) 기초 정적 분석
- 악성코드 파일을 실행하지 않고, 간략하게 분석하는 단계이다.
- 악성코드 분석시 가장 먼저 실시하는 단계이다.
- 분석 내용 : PE 파일 관련 내용, 문자열, DLL 및 API 목록 확인(IAT 정보)
- 분석 도구 : exeinfope, PEiD, PEview, Dependency Walker, strings, bintext, PEStudio, 바이러스토탈 사이트
3) 기초 동적 분석
- 악성코드 파일을 실행하고, 간략하게 분석하는 단계이다.
- 악성코드 파일을 분석하기 위한 가상 환경을 준비하고, 악성코드 실행 이전 스냅샷을 생성한다.
- 악성코드 파일을 실행하기 이전과 이후 상태를 비교하는 것이 목적이다.
- 분석 도구 : Procexp, Procmon, Regshot, SysAnalyzer, Wireshark, NetworkMiner, INetSim
4) 고급 정적 분석
- 기초 분석 내용을 기반으로 실시하는 상세 정적 분석 단계이다.
- 어셈블리어와 윈도우 API 기반으로 악성코드 파일을 리버싱한다.
- 분석 도구 : IDA
5) 고급 동적 분석
- 기초 분석 내용과 고급 정적 분석 내용을 기반으로 실시하는 상세 동적 분석 단계이다.
- 분석 도구 : OllyDbg
[참고] 자동화 분석
- 사람이 분석하는 것이 아니라 자동화 분석 도구를 이용한 분석 방법이다.
- 분석 도구 : 쿠쿠 샌드 박스, 하이브리드 애널리시스 사이트
4. 악성코드 유형
1) 백도어
- 시스템에서 실행/설치하면 공격자가 원격에서 접근이 가능하도록 제작된 악성 코드이다.
- 공격자는 백도어를 통하여 시스템을 접근하여 정보 탈취, 데이터 삭제, 명령어 실행, 2차 악성코드 실행할 수 있다.
2) 다운로더
- 다운로더가 실행되면 특정 사이트(서버)로부터 악성코드 파일을 다운로드하여 실행까지 실시한다.
3) 드롭퍼
- 파일 리소스 영역에 저장된 데이터를 이용하여 새로운 파일(악성코드 파일)을 생성하는 악성코드이다.
- 즉, 파일 안에 또 다른 파일이 있는 악성코드이다.
4) 바이러스
- 프로그램을 통하여 감염되는 악성코드이다.
- 바이러스가 실행되면 파일의 PE 구조를 변경하거나 코드를 삽입 및 조작한다.
- 그렇기 때문에 파일이 실행되면 악의적인 동작을 실시할 수 있다.
- 디스크 MBR, VBR 영역을 손상시키는 경우도 있다.
5) 웜
- 시스템/서비스 취약점을 이용하여 네트워크를 통하여 바이러스가 전염되게 하는 악성코드이다.
6) 트로이 목마
- 공격자가 의도하는 것을 숨긴 다음, 해당 파일이 실행되면 숨겨져 있던 악의적인 동작을 실시하는 악성코드이다.
7) 파일리스
- 실행 파일이 없는 악성코드이다. 즉, PE 파일이 아닌 악성코드이다.
- 악의적인 동작을 실시하는 코드 및 스크립트를 문서 파일에 삽입한다.
8) 봇넷
- CnC 서버로부터 명령어를 수신하여 동작하는 시스템이다.
9) 루트킷
- 악성코드 탐지를 방해하기 위해서 악성 코드 존재를 숨기는 악성 코드이다.
10) 스파이웨어
- 사용자 동의 없이 설치되어 시스템 및 사용자 정보를 수집하고 공격자에게 수집된 정보를 전송하는 악성코드이다.
11) 애드웨어
- 사용자 동의 없이 설치되어 광고 및 홍보 목적으로 배포되는 악성코드이다.
- 보통 프로그램 설치때 같이 설치되는 경우가 많다.
12) 스케어웨어
- 바이러스에 감염된 것처럼 조작하여 바이러스 백신 프로그램을 설치 유도하는 악성코드이다.
- 즉, 유료 버전 백신 프로그램 설치를 유도한다.
5. 기본적 DLL
1) KERNAL32.dll
- 메모리, 파일, 디렉토리, 하드웨어 접근 및 조작과 관련된 기능을 제공한다.
2) ADVAPI32.dll
- 윈도우 서비스 관리자(services.msc), 레지스트리 키(regedit) 값 설정과 관련된 기능을 제공한다.
3) USER32.dll
- 버튼, 스크롤바, 사용자 행위/동작 제어와 같은 인터페이스 기능을 제공한다.
4) GDI32.dll
- 그래픽 관련 기능을 제공한다.
5) WSOCK32.dll, WS2_32.dll
- 네트워트 연결 및 소켓 통신과 관련된 기능을 제공한다.
6) WININET.dll
- FTP, HTTP 연결 관련 기능을 제공한다.
7) NTDLL.dll
- 윈도우 커널 인터페이스를 제공한다.
- KERNEL32.dll을 통해서 간접적으로 Import되며, 실행 파일은 직접 Import 할수 없다.
- 기능을 숨기거나 프로세스를 조작하는 기능을 제공한다.