동적 분석
: 분석대상 파일(악성코드)을 직접 시스템에서 실행시킨 후, 일어나는 변화를 모니터링하여 행동 패턴을 분석하는 방법
1. 분석 환경
(1) Virtual Box
- 동적 분석은 실제로 악성코드를 실행시키는 분석 방법이기 때문에 가상환경에서 동적 분석을 수행하여야 함.
- 가상환경을 구축하기 위해서는 가상 이미지 파일(.iso)이 필요
아래 글을 참고하여 iso 이미지 파일을 만들어준다.
(2) 두 가지 기능 활성화
- 공유폴더 설정
( 버추얼박스에서 호스트와 게스트 간 파일을 주고 받는 방법으로 분석 대상 파일이나 동적 분석 프로그램 등을 옮길 때 사용)
* 설정에서 '공유폴더’ 클릭 후, 오른쪽에 폴더 추가 버튼을 눌러 공유대상 폴더 경로를 지정해준 후 '자동 마운트', '항상 사용하기' 체크 후 저장
- 스냅샷 기능
( 일종의 백업 기능으로, 운영체제의 과거 상태를 마치 사진을 찍듯이 저장한 후 돌아가고 싶을 때 그 상태 그대로 복원하는 기능)
- 스냅샷을 이용한 복원 방법
버추얼박스 메인화면에서 가상환경 옆 목록 아이콘 선택 후 원하는 스냅샷을 지정하여 '복원(R)'버튼을 클릭하면 복원을 진행
* 가상환경에 접속하여 '머신 -> 스냅샷 찍기'를 선택하면 현재 상태 그대로의 환경을 백업
* 악성코드 동적 분석을 진행하다 보면 PC의 설정이나 환경 등이 많이 변화하고 초기 상태로 되돌리기 어렵기 때문에 꼭 초기 상태를 스냅샷으로 저장해놓고 분석을 진행
2. 윈도우 환경 분석
휘발성 비휘발성 데이터 - 시작 프로그램, 성능 확인, 프로 세스, 작업 스케줄러, 통신 상태, 윈도우 로그 등
* 휘발성 데이터(Volatile Data)
: 전원의 공급이 끊기거나 시간이 흐름에 따라 자연히 저장 공간에서 사라지는 데이터를 의미
* 비 휘발성 데이터(Non Volatile Data)
: 컴퓨터 시스템의 보조 기억 장치(HDD, SSD 등) 저장되어 전원이 공급되지 않아도 유실되지 않는 데이터를 의미
(1) 프로세스 확인
프로세스란 현재 컴퓨터에서 실행중인 프로그램을 의미한다.
윈도우 OS에서 실행중인 프로세스는 '작업관리자 一> 프로세스'에서 확인
- 포그라운드 프로세스(Foreground Process) : 화면 상에서 실행되는 프로세스
- 백그라운드 프로세스(Background Process) : 화면에 뜨지 않고 눈에 안보이는 형태로 실행되고 있는 프로세스
(2) 서비스 및 시작 프로그램 확인
- 서비스 : 일종의 프로그램으로 컴퓨터 부팅 시 실행되어, 운영체계를 기능적으로 돕기 위하여 지속적으로 실행되는 프로그램, 프로세스의 집합을 의미
- 윈도우에 등록되어 있는 서비스를 확인하는 방법 : 윈도우 하단 검색 창에 '시스템 구성' 또는 msconfig 입력 시 접속 가능
- 시스템 구성 -> 서비스 접속 시, 등록되어 있는 서비스 및 제조업체, 상태 등의 목록을 확인할 수 있음.
-> 악성코드의 경우 제조업체 등록이 되어있지 않은 경우가 많음 -> 서비스명이 의심스럽거나 제조업체가 없거나 사용하는 서비스가 아닐 경우 분석해볼 필요 있음
창 하단에 '모든 Microsoft 서비스 숨기기(H)' 라는 기능 -> Microsoft에 의하여 실행되는 서비스를 안보이게 필터링해주기 때문에 악성코드를 찾기에 더 수월함
- 시작 프로그램 : 윈도우가 시작될 때 자동으로 실행되는 프로그램을 집합을 일컫음
악성코드의 경우 윈도우 재부팅시, 지속적으로 실행하기 위하여 시작 프로그램 레지스트리에 등록하는 행위를 수행하는 경우가 많기 때문에 시작 프로그램을 점검하여 의심스러운 프로그램이 등록되어 있는지 확인이 필요
- '작업 관리자 一 시작프로그램' 항목에서 확인 가능
(3) 네트워크 통신 상태 확인
악성코드는 종류에 따라 외부와 지속적으로 통신하여 추가 악성코드 감염을 유도하거나 정보유출 행위를 수행하는 경우가 많다. 그렇기 때문에 악성코드의 C&C서버나 경유지로의 접근 시도를 확인하기 위하여 네트워크 통신 상태를 확인해보는 것이 좋다.
윈도우 네트워크 통신 상태를 확인하는 방법
명령 프롬프트(cmd)창에 접속 하여 netstat명령어를 이용하면 됨.
* 명령 프롬프트(cmd) 접속 시, 관리자 권한으로 접속할 것
* netstat(network statistics) : 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령줄 도구
*-anob 옵션으로 검색하게 되면 네트워크 통신별 프로그램을 확인할 수 있어, 악성코드 행위분석에 용이하게 사용
(4) 작업 스케줄러 확인
미리 정의된 시간 또는 지정된 시간 간격 후에 컴퓨터 프로그램이나 스크립트를 실행하는 기능
- 일부 악성코드의 경우 작업 스케줄러에 프로그램이나 스크립트 등을 등록하여 지속적으로 실행하는 경우가 빈번하기 때문에 작업 스케줄러에 악의적인 프로그램이나 스크립트가 등록되어 있는지 확인해보는 것이 좋음
- 윈도우 하단 검색창에 '작업 스케줄러'를 검색하여 접근
- 작업이 등록된 프로그램의 경로나 이름, 마지막 실행시간, 실행 결과, 동작 및 조건 등을 확인
(5) 윈도우 로그 확인
윈도우 운용과정 중에서 특정 동작이나 이벤트를 체계적으로 기록한 바이너리 로깅 시스템을 의미
- 윈도우 하단 검색창에 '이벤트 뷰어'를 검색하여 접근
- 응용 프로그램, 보안, Setup, 시스템, Forwaded Events 5가지의 로그로 구분되어 있는 것을 볼 수 있음.
- 윈도우 로그 종류
이벤트 뷰어 - 로그 컬럼 - '수준'이라는 항목\
>> 수준은 오류, 경고, 정보, 감사 성공, 감사 실패 5가지로 구분됨
오류 : 데이터 손실이나 기능 상실 같은 문제
경고 : 시스템에 문제가 발생할 수 있는 문제를 미리 알려주는 이벤트
정보 : 응용 프로그램, 드라이버. 서비스 등이 성공적으로 수행되었음을 설명하는 이벤트 로그
감사 성공과 실패 : 시스템 로그온 성공/실패 여부와 같은 감사된 보안 이벤트
3. 프로세스 분석
악성코드가 실행되면 프로세스가 생성되어 악의적인 행위를 수행하기 때문에
-> 악성코드 분석에 있어서 프로세스 분석은 매우 중요한 부분
-> 대표적 프로그램 : Process Explorer, Process Monitor, Process Hacker
(1) Process Explorer
마이크로소프트에 인수된
Winternals Software에 의해 개발된 마이크로소프트 윈도우용 프리웨어 작업 관리자, 시스템 모니터
- 사용자의 시스템에서 실행 중인 프로세스들에 관한 정보를 수집하기 위한 다양한 기능들과 함께 위에서 언급했던 윈도우 작업 관리자와 같은 기능을 제공
- 실행중인 프로세스를 트리구조로 확인 가능
아래 링크에서 다운받을 수 있다.
- 부모 프로세스(Parent Process) : 다른 프로세스를 생성하는 프로세스
- 자식 프로세스(Child Process) : 부모 프로세스에 의해 생성된 프로세스를 의미
프로세스 목록 컬럼 -> 프로세스 명, CPU 사용량, 프로그램에 할당된 메모리 양, 프로세스 설명, 프로세스 ID(PID), 회사 명 등을 확인 가능
컬럼 변경 및 추가는 컬럼 마우스 우클릭 후, 'Select Columns..'에서 컬럼 수정이 가능
프로세스 별로 색깔이 구분되어 있음
(프로세스 색깔의 정의는 ’Options' ~ 'Color Selection'에서 확인)
초록색 (New 〇bjects) : 새로 생성된 프로세스를 의미
빨간색(Deleted 〇bjects) : 작업을 마치고 종료되는 프로세스
연보라색(〇wn Processes) : 현재 시스템을 사용하는 계정에 속한 프로세스를 의미
- Services 프로세스 : 위에서 언급한 '서비스'에 의해서 실행된 프로세스
- 그 외에도 패킹된 프로세스(Packed Images), 그룹화된 프로세스 집합(Jobs) 등 프로세스를 구분하여 색깔별로 표현
동적 분석 시, 악성코드를 실행하고 초록색(New 〇bjects)으로 올라오는 프로세스를 한 번 확인해보면 악성코드에 의해서 실행된 프로세스를 확인할 수 있음
프로세스 목록에서 프로세스 우클릭 시, 프로세스 종료(Kill Process), 재시작, 등 프로세스 조작 기능이 포함
Properties.. -> 해당 프로세스에 대한 프로그램 경로 및 커맨드 라인(Command line), 네트워크 통신 상태, 리소스 사용량, 문자열 등 상세 정보를 확인 가능
* 악성코드의 경우 커맨드 라인(Command line)에 파워쉘 실행 명령어나 악의적인 스크립트가 포함되어 있는 경우 있음
해당 위치로 가서 notepad.exe 실행 -> process explorer에서 properties 확인
- notepad.exe의 경로와 커맨드 라인 확인
- 부모 프로세스와 프로세스가 실행된 시간을 확인
- notepad.exe는 네트워크를 통하여 통신 할 일이 없기 때문에 상세 정보 -> TCP/IP'에 아무것도 뜨지 않는 걸 확인
- 상세정보의 Strings 값을 보면 프로세스에 들어있는 문자열을 확인 가능
- notepad. exe가 사용하는 API 함수, dll 파일 등이 문자열에 포함되어 있음
- 그 외 notepad.exe 프로세스의 리소스 사용량, 스레드(Threads) 등을 확인 가능
* 스레드(Threads) : 어떠한 프로그램 내에서. 특히 프로세스 내에서 실행되는 흐름의 단위
일반적으로 한 프로그램은 한 스레드를 가지고 있지만 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있음
가상 머신 환경에서 악성코드를 실행 후, 프로세스 익스플로러 (Process Explorer)를 통하여 악성코드 실행 전/후 프로세스 환경 변화를 관찰
(2) Process monitor
프로세스 모니터(Process Monitor)
: Windows Sysinternals에서 만든 무료 도구로 마이크로소프트 윈도우 운영체제에서 모든 파일 시스템 활동을 실시간으로 모니터하고 보여줌
- 주요 기능 : 프로세스의 레지스트리 활동, 파일 시스템 활동, 네트워크 활동, 프로세스와 스레드 활동, 이벤트 프로파일링 등 활동에 대한 모니터링 기능을 지원
아래 링크에서 다운로드 가능하다.
- 실행중인 프로세스들의 행위를 확인 가능
- 프로세스 모니터 상단바 'Capture(Ctrl + E)' 클릭 후 메모장을 실행시키면 프로세스가 올라오는 것을 확인할 수 있음
- 'Find(Ctrl + F)' 로 검색 가능
- 다른 프로세스 로그를 제거하고 원하는(notepad.exe) 프로세스의 행위만 보기위하여 상단바 'Filter'(Ctrl+L)를 통해 process name에 notepad.exe를 넣어 필터링을 수행
- 프로세스가 수행하는 행위와 참조하는 레지스트리, 파일 등의 경로를 확인
- notepad에 내용을 작성하여 test라는 파일명으로 저장한 후 Process Monitor 로그를 모니터링 하였더니 'CreateFile'이라는 옵션으로 test파일의 절대경로가 나와있는 것을 확인
- 로그를 더블클릭하면 이벤트에 대한 정보와. 프로세스의 상세 정보, 스택 (Stack) 정보를 확인
-> 나는 Thread Creat이라고 뜨는데 같은 건지 모르겠다...
프로세스 모니터(Process Monitor)를 사용하여 동적 분석 진행 시, 악성코드 프로세스에 대한 행위 및 참조 경로 등을 파악할 수 있음. 또한, 악성코드가 추가 악성코드를 생성하거나 실행 또는 삭제 등의 파일 변조 여부도 확인이 가능하다. 프로세스 모니터의 필터(Filter) 기능으로 분석 대상 프로세스 행위를 집중적으로 분석할 수 있음
'SWLUG > 악성코드' 카테고리의 다른 글
[악성코드] 예제로 배우는 악성코드 분석 - 동적분석(2) (6) | 2024.10.29 |
---|---|
[악성코드] 예제로 배우는 악성코드 분석 - 초기분석 (2) | 2024.09.24 |