침해사고 포렌식이란?
정보시스템이 공격, 해킹, 악성코드 감염 등으로 인해 침해되었을 때,
사건의 원인과 경로를 규명하기 위해 디지털 증거의 무결성을 유지한 채
체계적으로 분석하고 복원하는 디지털 수사 절차
누가, 언제, 어디서, 무엇을, 어떻게 했는가?를 과학적, 기술적으로 규명하는 것이 목적
포렌식에 사용하는 분석 도구
WIRESHARK
: 네트워크 패킷 분석을 하는 도구
IP, 포트, 프로토콜을 분석하고 트래픽을 복원
TCP통신중이며 ACK(응답확인)한 것을 확인 가능
어떤 프로토콜이 통신중인지 포트번호를 확인 가능
공유폴더에 접근해 파일을 업로드하고 다운로드하는 SMB 프로토콜은 445포트를 사용함.
→ 445포트가 나오면 SMB라는 것을 확인 가능
EVENT VIEWER
: 윈도우의 기본 분석 도구로 윈도우 이벤트 로그를 확인하는 도구
- 시스템 로그 : 드라이버 오류, 시스템 시작/종료 기록 등 운영체제 관련 이벤트
- 보안 로그 : 로그인 성공/실패, 권한 상승, 감사 정책 관련 이벤트
- 응용 프로그램 로그 : 프로그램 오류, 경고, 실행 결과 등
EVENT ID, Login Type 등을 보고 누가, 언제, 어떤 행동을 했는지 확인
kiwoong 계정으로 로그온한 것 확인
원격접속으로 로그인한 거 확인
Event ID | 설명 |
4624 | 정상적인 로그인 |
4648 | PsExec 와 같이 다른 계정의 ID/PW를 이용해 로그인 |
Logon Type | 설명 |
2 | 콘솔 로그온 - 로컬에서 사용자 ID/PW를 키보드로 직접 입력해서 로그인 |
3 | 네트워크를 통한 원격 로그인 (SMB, LATERAL MOVEMENT) |
4 | 스케줄에 등록된 배치 작업 실행 시 미리 설정된 계정 정보로 로그인 |
5 | 서비스가 실행될 때 미리 설정된 계정 정보로 로그인 (평소 로그인 할 때) |
7 | Win+L로 컴퓨터가 잠겨있을 때 사용자가 다시 로그인 해서 잠금 해제 후 로그인 |
8 | 유형3과 비슷, 계정 정보를 평문이나 복호화 가능한 형태로 전달될 때 발생 |
9 | runas /netonly 명령어를 사용해 현재 세션은 유지하되 다른 계정으로 네트워크 리소스 접근 ex) 공유폴더에 다른 계정 접근 |
10 | 원격 로그인 |
11 | 도메인 연결이 없을 때 PC에 저장되어있던 캐시로 로그인 ex) 도메인을 회사로 가진 회사 노트북을 집에서 사용할 때 동일 계정으로 로그인 |
FTK IMAGER
: 디지털 이미지 수집 도구
디스크 전체 또는 파일 단위 덤프/복제
메모리 캡쳐
페이지파일도 함께 메모리 캡쳐 진행
시스템 파일과 메모리 덤프 파일이 저장됨
위의 폴더에서 cmd를 실행하고 아래의 코드를 입력하면
strings -a -el pagefile.sys > pagefile_unicode.txt txt파일로 저장되어 결과 확인 가능
<시스템 파일 확인 내용>
키로거 사용 흔적
QUASAR(공격 도구)로 원격접속한 흔적
사용자의 화면을 QUASAR (공격도구)로 실시간으로 확인한 흔적
VOLATILITY
: 메모리 분석 도구
프로세스, 네트워크 연결, DLL, 명령어 기록 등 추출
FTK IMAGER에서 추출한 파일을 토대로 분석 진행
$dumpPath 에 메모리 덤프 파일의 경로를 설정한 후 플러그인을 넣어
python vol.py -f "$dumpPath" windows.info | Out-File "$outputDir\0_windows_info.txt" -Encoding utf8
cmd에 입력하면 결과파일 획득 가능!
명령어 | 설명 |
windosw_info | 운영체제 기본 정보 |
pslist | 실행중인 프로세스 목록 |
cmdline | 명령줄 정보 |
netscan | 네트워크 연결정보 |
registry.printkey | 레지스트리 Run 키 정보 |
consoles | 콘솔 명령어 기록 |
services | 서비스 정보 |
userassist | 사용자 실행 기록 |
malfind | 악성 인젝션 분석 |
<그 외 Volatility 분석 진행시에 사용하는 주요 플러그인>
명령어 | 설명 |
connections | Windows XP에서 열린 연결 목록 출력 |
connscan | 물리 메모리에서 _TCPT_OBJECT 객체를 스캔 |
dlllist | 각 프로세스에 로드된 DLL 목록 출력 |
handles | 각 프로세스에서 열린 핸들 목록 출력 |
netscan | Vista, Windows 7 또는 2008에서 연결 및 소켓 스캔 |
printkey | 레지스트리 키 및 그 하위 키와 값을 출력 |
pslist | EPROCESS 리스트를 따라 모든 실행 중인 프로세스 출력 |
psscan | 물리 메모리에서 _EPROCESS 풀할당을 스캔 |
pstree | 트리 형태로 프로세스 목록 출력 |
psview | 다양한 프로세스 리스트를 통해 숨겨진 프로세스 찾기 |
sockets |
열린 소켓 목록 출력 |
sockscan | 물리 메모리에서 _ADDRESS_OBJECT 객체 스캔 |
strings | 물리적 오프셋을 가상 주소에 매칭 |
ForeCopy
: 시간정보의 변경없이 파일을 복사해오는 도구
MFT 파일(Master File Table, 모든 폴더와 파일의 메타데이터 정보 저장) 추출할 때 사용
forecopy.exe \\.\C: \$MFT D:\Evidence\
추출하고 싶은 파일의 경로 입력 후 MFT 추출
analyzeMFT
: MFT 파일을 읽을 수 있게 CSV파일로 변경
git clone https://github.com/dkovar/analyzeMFT.git
cd analyzeMFT
python analyzemft.py -f C:\Evidence\$MFT -o C:\Output\mft_report.csv
위의 코드를 cmd에 입력해 MFT파일을 CSV파일로 변경해 내용 확인 가능
필드 | 설명 |
Active | 현재 폴더 또는 파일 존재 여부 (Active : 존재, Inactive : 삭제) |
Recode Type | 파일인지 폴더인지 |
Filename | 폴더 또는 파일의 절대경로 |
std Info | $Standard_Information에 저장되어 있는 시간 정보로, Windows API를 통해 쉽게 변경이 가능함 |
FN Info | $File_Name에 저장되어 있는 시간 정보로, 시스템 커널에 의해서만 변경 가능함 |
MFT파일로 악성코드 다운로드 시간, 비정상 DB테이블 생성 시간, 확인되지 않은 시스템 계정 생성 시각을 찾을 수 있음
위의 포렌식 도구들을 이용해 침해사고가 발생했을 때,
로그를 분석하고 원인을 규명할 수 있다.
'SK쉴더스 루키즈' 카테고리의 다른 글
루키즈 수료 회고 (3) | 2025.07.02 |
---|---|
포렌식 프로젝트 - 원격 접속 악성 행위 분석 (2) | 2025.06.29 |
LLM기반 개인정보 보호 법률 상담 챗봇 프로젝트 (2) | 2025.03.01 |
SK 쉴더스 루키즈 24기 - 생성형AI과정 합격 후기 (0) | 2025.02.02 |
OWASP API Security TOP 10 2023 (1) | 2025.01.24 |