맨땅에 코딩

침해대응/위협/포렌식 - 포렌식 도구 이해 본문

화이트햇 스쿨 2기/이론교육

침해대응/위협/포렌식 - 포렌식 도구 이해

나는 푸딩 2025. 2. 15. 00:42

*화이트햇 스쿨 2기에서 이수한 이론교육 내용을 바탕으로 작성되었습니다.

 

1. Digital Forensics and Definition of Artifacts

 

Forensic : 법의학, 법과학, 범죄수사, 증거능력
Digital Forensic : Digital + Forensic / 디지털 장치에서 발견된 정보를 복구, 조사, 분석 하는 것
Artifact : Digital Forensic 과정에서 증거로 사용할 수 있는 “모든” 데이터

 

2. Adversarials and Attack Procedures in General

 

사이버 공격과 공격자

- 사이버 공격: 악의적인 목적으로 타인의 컴퓨터 시스템, 네트워크, 인프라스트럭쳐를 공격 또는 침투하는 행위
- 공격자: 위의 사이버 공격을 행하는 자 / 일반적으로 공격자는 금전, 시스템 파괴, 정보유출 등 특정한 목적을 가지고 있음

 

Tactic, Technique, Procedure

- Tactic : Technique들을 묶은 상위 분류 / Technique 의 수행 목적을 이해할 수 있음
- Technique : Tactic 을 달성하는 구체적인 방법

 

MITRE ATT&CK

MITRE 에서 개발한 프레임워크로 Adversarial Tactics, Techniques, and Common Knowledge

지금까지 확인된 공격 그룹, 공격 기법, 공격 도구 등을 총 정리
공격자들은 MITRE ATT&CK를 웬만해서는 피할 수 없음

 

3. Volatilities and Non Volatilities

 

Data and Data Storage

- Data: 데이터 저장장치에 기록된 정보들
- Program: 저장장치에 기록된 데이터 중 CPU가 실행할 수 있는 명령어 집합으로 이루어진 파일
- Process: Storage에 있던 어떤 Program이 메모리에 적재되어 CPU 를 점유하고 있는 상태 / 실시간으로 변하는 Data라 할 수 있음

 

Volatilities

휘발성 데이터(라이브 데이터)
컴퓨터에서 전원을 제거하면 사라지는 데이터
Ex) RAM, Cache, Network, Process, Logon User, Clip Board 등

 

다르게 말하면, 휘발성 데이터는 활성 상태에서 밖에 확보할 수 없음
덮어씌워지기(overwrite) 쉬움

일반적으로 휘발성 데이터를 먼저 확보

 

휘발성 데이터(라이브 데이터)의 특징

1. 전원 공급수단이 사라지면 데이터가 휘발(volatile)함
2. 극히 제한적인 방법으로 데이터의 보존이 가능
3. 현재 활성 중인 시스템의 정보 파악 가능
4. 재부팅 시 이러한 정보들이 손실 소실(消失)됨
5. 난독화(obfuscated)된 파일정보가 난독화 해제 된 상태로 존재함
6. 실행 중인 프로세스, 연결 중인 네트워크 상태 등 확인가능
7. 폰 노이만 구조 에서는, 메모리에 실행 프로그램들이 적재 되므로 큰 범주에서 메모리 데이터

 

휘발성 데이터에서만 확인 가능한 정보 목록
- 클립보드
- 로그온 한 계정
- Uptime, 시스템 현재 시각
- 실행 중인 프로세스 목록 및 프로세스 상세정보
- 오픈 된 파일 목록
- 네트워크 연결 및 서비스 포트 정보(TCP, UDP)
- 라우팅 테이블 및 ARP 테이블
- 터미널(콘솔) 명령어 목록 (윈도우)

 

휘발성 데이터 획득 우선순위

 

휘발성 데이터 획득 방법
1. 메모리 덤프 도구 사용
- 하드웨어를 사용한 메모리 덤프 : 제한적 활용
- 소프트웨어를 사용한 메모리 덤프 : DD.exe, win32dd.exe
2. 윈도우 제공 API 를 사용
- 직접 소스코드 작성 후 바이너리 파일 제작, 외부 프로그램 사용
3. 시스템 제공 명령어 사용
- cmd제공 명령(netstat, ipconfig 등), cmd-let, wsutil, fsutil, 등 사용

 

- 외부 도구들을 사용할 수도 있지만, 너무 길어지기 때문에 생략
- 이전 페이지에서 본 것처럼, 실제로 한 줄 한 줄 명령을 입력하려고 하면 실수가 발생할 수 있음
- 자주 사용하는 도구, 명령들을 모아 실행 스크립트를 작성하면 유용함

 

Non Volatilities

컴퓨터에서 전원을 제거해도 사라지지 않는 데이터
Ex) HDD, SSD, USB 등 storage 장치

 

비 휘발성 데이터의 특징
1. 전원을 제거해도 데이터가 곧바로 사라지지는 않음
2. 따라서 경우에 따라 다르지만, 재부팅 되어도 데이터가 존재함
3. 저장 장치를 확보했다면, 언제든지 복제(copy)가 가능
4. 이미지 형태로 제작 가능

 

4. Basics Windows Artifacts

 

Artifact Classification

윈도우 시스템에서는 매우 다양한 Artifact를 확인할 수 있다.
Artifact들은 본래 Forensics 조사를 위해서 생성되는 것은 아니지만, 우리는 이러한 데이터들을 활용할 수 있다.
그러기 위해서는 각 데이터들의 의미와 특징을 잘 파악해야 한다.

 

Feature of Artifacts

$MFT(Master File Table)
- NTFS 파일 시스템에서 파일 관리를 위해 사용하는 파일
- 경로 : c:/$MFT
- 분석 도구 : Eric Zimmerman’s MFTecmd, analyzeMFT, MFTExplorer

 

Jumplist
- 실행, 고정, 작업 목록 등 사용자 행위 관련 아티팩트
- 경로 : %userprofile%/Appdata/Roaming/Microsoft/Windows/Recent
- 분석 도구 : Eric Zimmerman’s JLEcmd.exe, Jumplist View.exe

 

Registry
- Windows 시스템 설정을 관리하는 일종의 데이터베이스 파일
- 여러 개의 hive 파일로 구성

- 분석 도구 일람

 

User Assist
- 파일 경로, 실행 시각, Focus Count 등을 확인 가능
- ROT13 으로 난독화 되어있음
- User와의 Interaction, 즉 GUI 를 사용했는지, 사용자가 얼마나 관심을 가졌는지 등을 파악 가능
- 실행 시각은, 프로그램 마지막 종료 시각

 

자동 실행
- 로그온 사용자 관계없이 자동 실행 : SOFTWARE hive
  경로 : HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- 특정 사용자 로그온 시 자동실행
  경로 : HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

 

ComDlg32
- 대화상자 관련 레지스트리
- 파일 오픈, 저장 대화상자 팝업창이 호출되면 레지스트리 값이 기록됨
- 경로 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32

 

AppCompatCache(Application Compatible Cache)
- 응용프로그램 호환성 캐시
- OS 패치에 따라 API 호환성에 문제가 발생, 이를 문제를 해결하기 위해 사용
- Windows 에서 동작하는 프로그램은 호환성 문제가 발생할 경우 기록될 수 있음
- 실행 파일 경로, 수정 시각을 확인 가능

- 경로 : SYSTEM/ControlSet00x/Control/Session Manager/AppCompatCache

 

Amcache
- 응용프로그램 호환성 캐시2
- 윈도우 7에서 사용하던 ‘RecentFileCache.bcf’ 아티팩트를 계승
- 정학하게는, 레지스트리 일부는 아니지만, 하이브 구조를 가짐
- 상당히 독특한 아티팩트로, 실행 프로그램의 SHA-1 해시를 확인 가능
- 하지만, 프로그램 용량이 일정 이상 커질 경우 부정확한 값을 기록
- 정확하게는 파일의 첫 31,457,280 bytes 까지의 데이터를 SHA-1으로 계산, 기록

 

Event
- 다양한 시스템 및 사용자의 활동을 기록

- 경로 : %systemroot%/System32/winevt/Logs
- 분석 도구 : eventvwr, message analyzer

 

Prefetch
- 응용 프로그램 실행 후 약 10초 정도 모니터링, 로드 하는 (DLL)을 저장
- 부팅 시간에 이 저장된 정보들을 미리 메모리에 탑재
- 응용 프로그램들을 좀더 빠르게 실행하기 위함
- 서버 OS에서는 기본적으로 비 활성화

- 경로 : C:/Windows/Prefetch
- 분석 도구 : winPrefetchView
- 파일 형식: <실행파일명>-<실행위치>.pf

- 프로그램 실행 횟수, 실행 시각, 경로, 로드된 DLL 정보 등 확인 가능

 

Data Acquire Tool - KAPE

KAPE – 데이터 수집 도구
우리들의 영원한 멘토, Eric Zimmerman 선생님이 제작하신 masterpiece
데이터 수집 기능과 함께 여러 분석 도구들을 연동할 수 있음
데이터 수집 기능 커스터마이징이 가능

 

Integrated Forensic Tools

 

5. Linux Artifacts and Analysis

 

Linux Directory

1. Windows 시스템에 Program Files, Windows 등 경로가 있는 것 처럼 리눅스 시스템에도 기본적으로 생성 및 사용되는 디렉토리가 존재
2. 이미징 후 또는 라이브 분석을 진행할 때 우선적으로 확인해야 하는 디렉토리 및 파일들을 선별할 수 있다.(triage)
3. 이 triage도 윈도우 활성 데이터 수집 순서처럼 상황과 개인 판단에 따라 달라질 수 있음

 

 

Linux Artifacts
Linux 분석의 특징
1. Linux System은 Windows 시스템에 비해 확인할 수 있는 Artifact가 상대적으로 적음
2. 파일 생성 시각을 확인할 수 없는 경우가 많음
3. 특수 목적(서버)용으로 사용되는 경우가 많기 때문에 서비스 상세 확인 필요
4. 취약점 파악을 위해 OS 버전 정보, 응용 프로그램 및 프레임워크 버전 파악 필수
5. 파편화로 인해 메모리 분석이 상대적으로 도전적인 과제(심볼 프로파일 문제)
6. 일반 사용자가 접근하기 어렵기 때문에, 네트워크 및 서비스 침해 관련 이슈가 많이 발생
7. 시스템 이해도와 명령어 사용 능력에 따라 분석 속도, 퀄리티 차이가 많이 발생

 

활성(라이브) 데이터 수집
- Windows 시스템 분석과 유사
- 메모리, 네트워크, 프로세스, 로그온 한 사용자 정보 등 수집
- bash history 수집이 제일 우선(overwrite issue)
- 파일 stat 정보 수집 필수(권한, 소유자 수정 및 접근 정보 등 메타데이터 파악)
- systemctl, who, uptime, date, last, lastlog, ps, netstat, ifconfig 등 시스템 명령 사용

- history는 일반적으로 1000줄 까지 기록
- 그 이상 작성 시 overwrite 이슈가 발생
- 작업 계정이 기존에 사용하던 계정이라면 history 로그를 최우선적으로 dump 하는 것이 좋음

 

비활성 데이터 수집 및 분석
- stat 명령어로 파일 메타데이터 수집 필요
- 사용하는 파일 시스템에 따라 Birth time은 존재하지 않는 경우도 존재

- /var/log 하위 경로의 로그들
- /var 하위 경로에는 웹 로그, 메일로그, 시스템 로그 등 다양한 로그 정보들 확인 가능
- 리눅스 배포판 또는 버전에 따라 로그 이름이 달라질 수 있음

- 데비안 계열은 auth.log에서 ssh 연결 정보, 명령어 실행 기록, 실행 바이너리 등 확인 가능
- secure.log 등에서도 같은 정보 확인 가능

 

Linux Commands

ls(list)
- list 명령어로 특정 경로에 존재하는 파일 목록을 출력하는 명령
- 권한 | 하드링크 수 | 소유자 | 소유 그룹 | 크기 | 수정 시각 | 파일 이름
- 권한 : -rw-r—r—(644)
  이는 다시 – | rw- | r-- | r– 으로 나누어지고, 파일 유형, 소유자 권한, 그룹 권한, 그 외 권한이 됨

grep
- 파일 또는 표준 출력에서 패턴에 맞는 특정 문자열을 매칭, 출력하는 명령
cat
- 특정 파일 데이터를 표준 출력으로 출력하는 함수

find
- 입력한 조건에 맞추어 해당하는 파일을 찾아 출력하는 명령
  find <탐색경로> -name <이름패턴> : 특정 이름 패턴과 매칭
  find <탐색경로> -size <size 패턴> : 특정 사이즈, 이상, 이하 파일과 매칭
  find <탐색경로> -mtime <기준시각> : 기준 수정시각 이상, 이하 파일과 매칭
  find <탐색경로> -exec <명령> {} \; : find 탐색 결과 문자열을 {}과 치환해 명령 실행
- 이 외에도 다양한 검색 옵션이 존재

sort
- 문자열 정렬 명령
uniq
- 문자열 중복 제거 명령

head
- 특정 파일의 앞에서부터 임의의 길이만큼 출력하는 명령
tail
- 특정 파일의 뒤에서부터 임의의 길이만큼 출력하는 명령

 

Linux File Stat
Linux File Time
- ext3 file system 까지는 Birth time이 존재하지 않음
- Modify time : 파일이 생성되었을 때, 실제 파일 내용이 변경 되었을 때
- Change time : 파일이 생성되었을 때, 파일의 inode 정보(파일이름, 권한, 그룹, 소유자) 등이 변경 되었을 때