1. 윈도우 포렌식 분석 개요
윈도우 컴퓨터의 하드디스크에는 악성코드, 레지스트리, 로그 파일 같은 악성 코드의 흔적뿐만 아니라, Prefetch와 같은 실행 또는 조작여부를 알 수 있는 다양한 정보가 존재한다.
2. 윈도우 시스템에서 악성코드 식별 및 추출
- 알려진 악성코드 검색
* HashMyFiles( Link )
> 보통 공격자들은 공개된 RootKit이나 Sniffer와 같은 공개된 프로그램을 사용한다.
> 안티 바이러스 프로그램 또는 Hash 식별을 이용하여 알려진 악성코드를 식별한다.
- 설치된 프로그램 조사
> 감염된 컴퓨터에 설치된 프로그램에 대해 설치 날짜와 이름을 조사함으로써, 의심스러운 프로그램뿐만 아니라 원격 접속, 데이터 유출 등에 악용된 관련 프로그램 탐지
> 'Program Files' 폴더 하부 및 레지스트리에서 설치된 프로그램의 목록 확인
- 실행파일 점검
> 공격자들은 보통 악성코드를 발견 및 탐지하기 어렵게 하기 위해 노력한다.
> 확장자 변경 : 확장자를 변경해도 실제 데이터는 변경되지 않는다.
> 패킹 : 탐지 및 포렌식 분석을 무력화하기 위해 인코딩을 한다.
> ADS : 다른 파일이나 폴더의 대체 데이터 스트림에 존재하는 실행파일을 찾는다.
- 서비스, 드라이버, 자동 실행 위치, 예약된 작업 점검
> 악성코드는 재부팅 후에도 동작할 수 있도록 서비스, 드라이버, 예약된 작업과 같은 다양한 시작 루틴에 악성코드를 적용한다.
> 예약된 작업 : %SystemRoot%\Tasks 폴더 내에 예약된 작업을 조사
> 서비스 : 악성코드는 보통 새로운 서비스로 자신을 등록하거나, 기존 서비스에 자신을 추가한다.
> 자동실행
- 로그 조사
> 로그 파일을 바탕으로 악성코드 사고와 관련된 기록을 확인할 수 있다.
> 윈도우 이벤트 로그 : 보안 이벤트 로그 기록을 통해 외부 침입자가 내부 접근 권한을 획득한 정보를 확인할 수 있다.
> 웹 브라우저 히스토리 : 악성 웹사이트 접근 여부나 악성코드가 다운로드 된 사실을 확인할 수 있다.
> Desktop 방화벽 로그 : 감염된 시스템으로의 접근 시도 및 다양한 행동이 기록된다.
- 사용자 계정과 로그인 활동 검토
> 감염된 시스템에 새로운 비인가 계정이 생성됐는지, 패스워드가 없는 계정이 존재하는지, 관리자 그룹에 추가된 계정이 어느 것인지 등을 확인한다.
> 비인가 계정 생성 : 알려진 비인가 이벤트 발생 전후 생성된 사용자명이나 계정 확인
> 관리자 그룹 : 로컬 또는 도메인 레벨의 관리자 그룹에 있어서는 안되는 사용자 계정 확인
> 취약한 패스워드 : 패스워드가 없거나 쉽게 예측 가능한 패스워드가 설정되어 있는 계정 확인
3. 윈도우 레지스트리 조사
- 레지스트리
> 운영체제 내에서 작동하는 모든 하드웨어, 소프트웨어, 사용자 정보 및 시스템 구성 요소 등을 담고 있는 데이터 베이스
> 구성
> HKEY_CLASSES_ROOT를 비록하여 5개의 가장 상위키( =루트키 )를 갖는다.
> 각 루트키 아래의 서브키부터 아래의 모든 세부 서브키를 포함하는 트리구조를 레지스트리 하이브라고 한다.
> 각각의 하이브는 저마다 고유한 저장장소( 파일 )와 로그 파일을 갖고 있다.
- HKEY_CLASSES_ROOT
> 파일 확장자에 대한 정보, 각 파일과 프로그램간의 연결에 대한 정보, 마우스 오른쪽 단추의 등록 정보 등
> 모든 형식의 파일 확장자가 서브키 형태로 구성된다.
> HKLM\SOFTWARE\Classes 키에 동일하게 저장되어 두 곳이 연동된다.
- HKEY_CURRENT_USER
> 현재 로그인중인 사용자들에 대한 등록 정보
( 사용자 배경화면, 디스플레이 설정이나 단축 아이콘 정보 등 )
> 응용 프로그램의 우선 순위, 보안 접근 허용 여부
- HKEY_LOCAL_MACHINE
> 하드웨어 구성 초기화 파일, 제어판과 밀접하다.
> 사용중인 하드웨어 및 소프트웨어에 대한 정보
> 로그온 한 사용자와 관계없이 컴퓨터에 등록된 모든 사용자에게 동일
- HKEY_USERS
> 이전 사용자 초기화 파일을 보관
> 두 키 사이가 겹치면 HKEY_CURRENT_USER가 우선
- HKEY_CURRENT_CONFIG
> 현재 사용중인 윈도우의 디스플레이( 화면 글꼴이나 해상도 )정보와 프린터 관련 정보
> HKLM\Config 키의 내용과 같다.
- 하이브 파일
> %SystemRoot%\System32\config\
하이브 이름 |
하이브 파일 |
해당하는 레지스트리 키 |
.DEFAULT |
DEFAULT |
HKU\.DEFAULT |
HARDWARE |
파일로 저장 안됨 |
HKLM\HARDWARE |
SOFTWARE |
Software |
HKLM\SOFTWARE |
SAM |
SAM |
HKLM\SECURITY\SAM |
SYSTEM |
System |
HKLM\SYSTEM |
SECURITY |
Security |
HKLM\SECURITY |
> C:\Users\{사용자명}\
하이브 이름 |
하이브 파일 |
해당하는 레지스트리 키 |
SID |
NTUSER.DAT |
HKU\SID |
- UserAssist( Link )
> 사용자 계정에 의해 실행된 프로그램 목록이 저장된다.
> UserAssist 키에는 가장 최근에 실행된 프로그램의 날짜/시간 스탬프와 같은 악성 행위에 대한 세부 정보를 제공한다.
- 이 키에 존재하는 값들은 "ROT13" 암호화 알고리즘으로 암호화 되어 있다.
- 사용자 계정 확인
> 사용자 별로 다른 계정이 존재한다.
> HKLM\SOFTWARE\Microsoft\CurrentVersion\ProfileList 이하에 각 사용자에 대한 Profile 정보가 포함되어 있다.
> 특정인에 의한 해킹이 시도된 경우로 새로운 사용자를 생성
- 특정 작업을 수행 후 사용자를 삭제한 경우 계정 정보 확인이 가능하다.
- 사용자 계정 확인 - 세부정보 확인
* AccessData Registry Viewer( Link )
> HKLM\SAM\Domains\Users\
- User Name, 로그온 횟수, 패스워드 변경시간 등을 확인 할 수 있다.
- 최근 열어본 문서
> HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
- Windows Explorer를 통해서 최근에 Open된 파일의 목록을 기록하고 있다.
- 파일 확장자로 구분되어 있으며, "Folder"는 최근에 Open한 파일의 폴더 목록을 유지한다.
- 자동 실행 프로그램
> HKU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
>%SystemRoot%\System32\Tasks\
- 컴퓨터가 부팅 후 자동으로 실행되는 프로그램 리스트
- 설치된 프로그램
> HKU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
> HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
> HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CureentVersion\Uninstall\
- 컴퓨터에 설치되어 있는 프로그램 리스트
- 최근 실행 명령어
> HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
- [시작] -> [실행]에서 수행하여 기억하고 있는 명령어 목록
- 사용자가 실행한 명령어 목록을 확인 가능
- 컴퓨터 정보
> HKLM\SOFTWARE\Microsoft\WindowsNT\CureentVersion
- CSDVersion : Service Pack
- RegisteredOwner : 등록된 사용자
- SystemRoot : 시스템 기본 경로
- ProductName : OS 기본 정보
- InstallDate : 설치 일자
4. 기타 포렌식 분석
- 자동실행 프로그램 조사
* AutoRuns( Link )
> 컴퓨터가 시작할 때 자동으로 프로그램을 실행시키기 위해 참조하는 윈도우 시스템의 다양한 위치에서 상세 정보를 추출한다.
> 서명되지 않은 실행파일 목록 확인 가능
> 디스크에 존재하지 않는 실행 파일과 관련된 자동 실행 항목 확인 가능
- Prefetch 분석
> 윈도우의 부팅 커널까지 포함하여 응용 프로그램 실행 정보를 저장한 파일을 메모리에 올려두어 실행속도를 빠르게 하기 위한 기능이다.
> 침해사고 발생 시 사용자가 실행한 응용프로그램을 확인할 수 있다.
> 프로그램을 한번이라도 실행할 경우 '%SystemRoot%\Prefetch' 폴더에 .pf 확장자로 저장된다.
* WinPrefetchView( Link )
> 실행한 응용프로그램의 이름, 실행 횟수, 마지막 실행 시간, 참조 목록( dll / ini ) 확인
- 외장형 저장장치 분석
* USBDeviceForensics( Link )
> 사용자가 연결한 외장형 저장장치의 정보를 확인할 수 있다.
> HKLM\SYSTEM\ControlSet00x\Enum\USBTOR
- USB장치 정보 저장
- Device Class ID : Disk&Ven_XXX&Prod_YYY&Rev_ZZZ
- XXX( Vender ), YYY( Product ), ZZZ( Version )
> HKLM\SYSTEM\MountedDevices를 참조하여 어떤 USB 장치가 어떤 드라이브에 연결되었는지 확인 가능하다.
- 외장형 저장자치 분석 - 연결 기록
> %SystemRoot%\System32\winevt\Logs\ 폴더에 존재하는 Microsoft-Windows-DriverFrameworks-UserMode%40perational.evtx
- 이벤트 로그 분석을 통하여 외장형 저장장치의 연결/해제 관련 로그 확인 가능
- Security Identifier ( SID )
① 해당 시스템이 윈도우 시스템임을 말한다.
② 시스템이 도메인 컨트롤러이거나 단독 시스템임을 표시한다.
③ 시스템의 고유한 숫자. 이 고유한 숫자는 시스템을 설치할 때 시스템의 특성을 수집하여 생성한다.
④ 각 사용자 별 숫자로 표현되는 고유한 ID. 관리자는 500번, Guest는 501번, 일반 사용자는 100번 이상의 숫자를 갖는다.
> 시스템 고유 숫자를 이용하여 장치의 연결이력을 확인할 수 있다.
> 외장형 저장장치 및 HDD가 다른 윈도우 시스템에 연결될 경우 해당 시스템의 SID 값으로 휴지통 폴더가 생성된다.
> 휴지통 폴더 정보를 통해 장치의 연결 기록을 확인할 수 있다.