악성코드 분석 방법 본문
악성코드 분석 방법
순서
기초 정적 분석 - 비실행
기초 동적 분석 - 실행
고급 정적 분석 - 비실행
고급 동적 분석 - 실행
악성코드 분석의 네 가지 접근 방법
완전 자동화 분석
- 정적 분석 및 동적 분석을 통해 악의적인 행위를 판단
- 자동 분석 수행
- 전문가에 의해 분석되는 만큼 상세하거나 정확하지 않을 수 있음
- 악성코드 분석 제공 서비스
정적 속성 분석
- 악성코드의 추가 분석을 위해 필요한 단계
- 문자열 헤더 정보, 해시 값, 리소스 정보, 패킹 여부 등 신속하게 정보 획득
- 정보들을 활용해 실행 파일 간의 비교 데이터베이스를 구성
- 바이러스 토탈 서비스
대화형 동적 분석
- 레지스트리, 파일시스템, 프로세스, 네트워크 활동을 위해 분리된 가상 머신 환경에서
실행하며 분석
- 메모리 분석을 통해 다른 행위를 추가적으로 분석
- 악의적인 행위의 상세한 과정들을 확인
- 분석가들의 분석 시간이 많이 소요
수동 코드 역공학 분석
- 위 왁정이 완료된 후에 추가적인 정보를 획득하기 위해 분석하는 행위
- 수동 코드 역공한 분석이 필요한 예
- 특정 루틴에 난독화가 되어서 복호화가 이루어지는 부분을 더 분석해
추가적인 정보를 획득
- 악의적인 도메인 이름 생성 과정의 알고리즘 분석
- 행동 분석 과정에서 자신을 숨기고 보여주지 않았던 부분으로 발생되는 다른 기능 이해
기초 정적 분석
- 기초 정적 분석이란?
- 악성코드 분석 시 가장 먼저 수행
- 프로그램의 기능을 파악하기 위해 코드나 프로그램의 구조를 분석
- 분석 방법
- 악성 여부를 판단하는 안티바이러스 도구 사용
- 악성코드 판별 해시 가용
- 파일의 문자열, 함수, 헤더에서 개략정인 정보 확인
- 분석 도구
- 악성코드의 지문(Finger Pring) 확인
- 해시를 이름으로 사용
- 악성코드 식별을 위해 해시 공유
- 식별 여부를 위해 해시 검색
- 문자열 검색
- 프로그램 메시지 출력
- URL 접속
- 특정 위치로 파일 복사
- 패킹 확인
- 패킹의 여부 확인 후 언패킹하여 리버싱을 쉽게 하기 위한 단계
- PE 세부 구조 확인
- 패킹 징후
- Size of Raw Data보다 Virtual Size가 월등히 크다면 다른 파일을
올리기 위함으로 의심해 볼 수 있다.
- 섹션의 이름이 변경됨
- DLL 의존성 조사
- Dependency Walker
- Kernel32.dll : 메모리, 파일, 하드웨어 접근과 조작
- Advapi32.dll : 서비스 관리자, 레지스트리 같은 추가 윈도우 핵심 컴포넌트
- User32.dll : 유저 인터페이스
- Gdi32.dll : 그래픽 보기 및 조작
- Ntdll.dll : 윈도우 커널 인터페이스
- WS2_32.dll : 윈도우 소켓 네트워크
- Wininet.dll : FTP, HTTP, NTP와 같은 상위 수준 프로토콜 구현
- 리소스 확인
- 리소스 해커
- 아이콘 섹션
- 메뉴 섹션
- 대화상자 섹션
- 문자열 테이블
- 버전정보 세션