악성코드 동적 분석 방법
기초 동적 분석이란?
- 프로그램을 직접 실행하며 분석(프로그램 실행에 의한 변화들을 확인, 로그 수집)
- 악성코드 분석에서 가장 프로그램의 영향을 쉽게 파악
- 프로그램의 기능을 파악하기 위해 악성코드 실행 전후 상태를 조사 및 분석
분석 방법
- 악성코드 실습 시 발생하는 호스트/네트워크 환경 구성(본 글은 win7 32bit 환경 구성)
- 파일, 프로그램 실행, 레지스트리, 서비스 등 관련 항목 변경 사항 확인
- 실행 시 발생하는 네트워크 트래픽 분석(Wireshark, Network Miner 등 활용)
Windows 유틸 도구 다운로드 URL (Process Monitor, Process Explorer, Autoruns 포함)
https://learn.microsoft.com/ko-kr/sysinternals/downloads/sysinternals-suite
프로세스 모니터(Process Monitor) 기능 및 사용법
- 특정 레지스트리, 파일 시스템, 네트워크, 프로세스, 스레드 행위를 모니터링 하는 고급 도구
Process Monitor의 한계
→ 특정 GUI와 장치 I/O 제어를 통한 루트킷 탐지 불가(kernel 에 영향을 미치는 악성코드, user 단에서 확인 어려움)
→ 네트워크 행위에 대해 일관성 있는 탐지 불가(짧은 시간안에 많은 기록들이 확인되므로 필터링 기능을 잘 사용해야 함)
- 새로운 프로그램을 실행 시킬때 마다 프로세스 모니터에 추가된다.
- 현재 실행되는 프로세스를 실시간으로 보여주므로, 필터링 기능을 잘 활용하여 원하는 정보만 확인한다.
- 상단 빨간 박스로 표시된 부분에 4가지 필터링 기능이 있다.
- Show Registry Activity (레지스트리 사용 내역)
- Show File System Activity (파일 시스템 사용 내역)
- Show Network Activity ( 네트워크 사용 내역)
- Show Process and Thread Activity (프로세스&쓰레드 사용 내역)
- 각 필터링 기능을 클릭하여 활성 or 비활성화 하여 원하는 정보만 확인할 수 있다.
그림3에서 Filter - Filter를 클릭하여 상세 필터를 설정해본다.
Architecture 부분을 클릭하면 필터링 가능한 여러 항목들이 나오게 되며 Process Name 등을 사용하여 특정 프로세스를 필터링 한다.
Process Name is → 프로세스 이름 정확히 알때 사용
Process contains → 프로세스 이름 정확히 모를때 사용
Include → 포함
Exclude → 제외
Add 버튼을 클릭하면 해당 필터를 추가할 수 있으며, Apply를 클릭하여 적용이 가능하다.
Reset을 클릭하면 설정된 필터가 초기화된다.
먼저 notepad(메모장)를 실행 시킨 후 프로세스 모니터에 notepad 관련 프로세스 항목이 추가되는지 확인한다.
상세 필터 기능을 사용하여 Process Name, contains, notepad를 설정 후, Add를 눌러 필터를 추가한 다음, Apply를 눌러 필터를 적용시킨다.
notepad 관련 프로세스만 출력되는 것을 확인할 수 있다.
상세 필터 기능을 사용하여 특정 악성코드 파일 이름 알면 이름 기준으로 분석이 가능하며, 시간대를 알면 시간대를 특정 지어서 분석이 가능하다.
기존 필터를 제거하고 싶다면, 추가된 필터 항목을 클릭 후 Remove 클릭 후 Apply를 클릭하여 설정을 적용하거나, Reset 클릭 후 Apply를 눌러 초기화 시킬 수 있다.
1. Remove → Apply
2. Reset → Apply
위에서는 Include를 사용하여 특정 프로세스만 확인하는 필터링 설정을 했지만, 그림5를 보면 Exclude를 사용하여 notepad 프로세스를 제외하는 필터링을 적용할 수 있다.
그 외 Exclude가 설정되어 있는 필터 목록은 프로세스 모니터의 기본 제외 목록이며, 대표적으로 Procmon.exe(Process Monitor), Autoruns.exe, Procexp.exe(Process Explorer) 등 분석 도구들이 포함되어 있다.
→ 분석 도구의 프로세스 활동을 굳이 확인할 필요가 없으므로
프로세스 모니터는 위와 같이 악성코드 분석 시, 해당 프로세스의 이름을 포함하는 필터링을 설정하여 동작 전 후의 상태 변화 등을 확인할 수 있는 동적 분석 도구이다.
Process Explorer(프로세스 익스플로러) 기능 및 사용법
- PC에서 실행 중인 모든 애플리케이션, 프로세스, 열린 파일에 대한 정보를 나열하는 도구
- 트리 구조로 정렬되어 있으며, 클릭 실수로 다른 방식으로 정렬되어도 상단에 Process Tree를 클릭하면 트리 구조로 다시 정렬된다.
- 트리 구조란? 부모 프로세스와 자식 프로세스로 구성되어 있다.
그림8과 같이 특정 프로세스에 마우스를 갖다대면 command line이 뜬다.
command line은 해당 프로세스 실행과 관련된 명령어, 경로를 보여준다.
특정 파일의 악성 행위 분석 시 유용하게 사용할 수 있다. (악성 행위하는 명령어 확인)
< 프로세스 목록 >
System - 운영체제가 동작할 때 사용자에서 접근할 수 없는 프로세스들
svchost.exe - 각각의 서비스들을 관리하고 있는 프로그램 - 서비스 호스트, 하나 이상의 윈도우 서비스를 호스팅하는 프로세스로, 다양한 서비스를 하나의 프로세스로 그룹화해 리소스 사용량을 줄이는 역할을 한다. svchost.exe는 모든 서비스를 하나의 프로세스로 그룹화하며 방화벽, 윈도우 업데이트, 블루투스 지원, 네트워크 연결 등의 서비스에 사용된다.
explorer.exe - 탐색기, 윈도우에서 실행되고 있는 프로그램들을 관리하는 프로세스, 사용자가 어떤 프로그램을 실행하면 explorer.exe 하위 위치로 실행하게 된다. 악성코드가 사용자 권한으로 실행되면 explorer.exe 하위 위치로 실행되며, 관리자 권한으로 실행되면 explorer.exe와 같은 위치 에서 실행되게 된다.
csrss.exe - 윈도우 시스템에서 항상 실행되는(또는 실행되어야 하는) 필수적인 프로세스로서 콘솔 창, 쓰레드의 생성/삭제, 16 비트 가상 MS-DOS 환경의 일부를 담당한다. 평상시 csrss.exe는 CPU를 많이 점유하지 않으며, 많이 점유해도 1~2% 내외의 리소스를 사용한다. 해당 프로세스의 점유율이 10% 이상 올라간다면 문제가 발생한 것이므로, 즉시 바이러스 스캔 프로그램을 사용하여 검사를 해야 한다.
wininit.exe - 윈도우 초기화 관련 프로세스, 윈도우 운영 체제의 시작과 종료(충돌 시 전체 시스템 충돌)에 중요한 역할을 한다.
procexp.exe는 Process Explorer로 현재 실행한 동적 분석 도구이다.
마우스 우측 클릭 후 Properties로 눌러 속성 정보를 확인한다.
Image - Path는 프로세스의 현재 위치로 추후 악성코드 분석 시 해당 악성코드의 위치를 확인할 수 있다.
TCP/IP는 프로세스와 연결된 네트워크 확인가능, 악성코드가 악성 유포지와 연결되는지 확인 가능하다.
Security는 프로세스에 어떤 권한들이 주어지는지 확인 가능하다. (시스템 권한, 관리자 권한 등)
상단의 Process - Create Dump 를 클릭하여 특정 프로세스의 덤프 파일을 생성하여 메모리 분석도 가능하다.
windows7 32bit 버전에서는 하단 표시줄에 마우스 우측 클릭 후, Start Task Manager를 실행하여 작업관리자를 실행한다.
Task Manager 실행 후 Processes 확인 시 User Name 이 확인되는데, 현재 프로세스의 사용자 권한을 한번에 확인할 수 있다. 사용자 권한으로 시스템 권한의 프로세스를 멈추거나 제거하거나 할 수 없다.
의심되는 악성 파일 분석 시 explorer.exe 하위 위치에 있는지(사용자 권한으로 실행되는지), 상위 위치에 있는지 확인(관리자 권한으로 실행되는지), 프로세스의 권한이 누구한테 주어져 있는지, 어떤 명령어들을 통해 어느 위치에서 실행되는지, 어떤 IP와 네트워크 통신을 하는지 확인해야한다.
결론
- Process Monitor - 실시간으로 실행되는 프로세스의 로그들이 쌓인다.
- Process Explorer - 현재 실행되는 프로세스를 즉시 확인 가능하다.
- 정적 분석 이후, 파일 또는 프로그램을 직접 실행하여 실행 전후 상태를 분석하여 악성 행위를 증명한다.
'보안 > 악성코드 분석' 카테고리의 다른 글
악성코드 동적 분석 도구 올리디버거 활용 (0) | 2024.08.12 |
---|---|
리버싱 개념 및 어셈블리어 설명 (0) | 2024.07.27 |
DLL 의존성 확인 도구 (Dependency Walker) & 리소스 확인 도구 (리소스 해커) 기능 및 사용법 (0) | 2024.07.24 |
PE 헤더 분석 도구 (PEview, pestudio) 기능 및 사용법 (4) | 2024.07.23 |
악성코드 분석 시 파일 내 문자열 확인 도구 (BinText, Strings) 기능 및 사용법 (3) | 2024.07.22 |