ntfswalker          http://dmitrybrant.com/ntfswalker

ntfs파일생성시간 http://www.digital-detective.net/digital-forensic-software/free-tools/

 

NTFS참고             http://www.cse.scu.edu/~tschwarz/coen252_07Fall/Lectures/NTFS.html

 


MBR 

 운영체제에서 OS의 위치 정보 가리킴


CHS

  물리적인 주소 지정방식 (실린더, 헤드, 섹터 구조에 기반)

 현재는 이용되지 않는다. (용량 제한의 문제 발생)


LBA

 하드디스크의 구조정보를 이용하지 않고 단순히 0부터 시작한다. 모든 섹터를 논리적인 번호로 0부터 나열한 것이다. CHS 한계점 때문에 사용되며 현재 사용되는 방식.

 

[LBA주소찾기] : 1C0 / 06-09

ex) 00 08 00 00

=> 0x 00 00 08 00

     = 2048

 

 

 

 

 

 

 

[시작 MFT값 찾기] : 030 / 00-07

ex) 00 00 0C 00 00 00 00 00

=>0x 0C 00 00 = 78643

 

 MTF 시작 주소($MFT 위치) = MTF클러스터 시작값 + 클러스터크기 + VBR

 = 786432*8+2048  

 = 6293504

 

 

 

 

 

 

[NTFS Walker] : 파일 정보 위치 찾기

 

복구 할 목록 확인

 

 MFT #NUM 위치 = 시작 MFT값 + (#NUM * 2)

 

ex) MFT #39

= 6293504 + (39*2)

= 6293582

 

 

 

 

 

 

[RunList & 파일크기]

1. 파일 이름 값 뒤 80확인

2. 80번 아래 4번째 값이 런리스트 오프셋

 파일의 위치 = 리얼데이터 위치 값 * 클러스터크기 + VBR값(LBA주소)

= 0x BFB65 * 8 + 2048

= 785253 * 8 + 2048                          

= 6284072

 

파일의 크기 = RunListOffset 왼쪽 8Byte 

= 0x 00 00 00 00 00 03 E9 08

= 0x 3E908

 


 

 

 

 

 

 

 

[MFT 속성 타입 ID

속성식별값

 속성이름

 설 명

1000

0x10

$Standard information

파일의 생성/접근/수정 시간, 소유자 등의 일반적인 정보

2000

0x20

$Attribute List

추가적인 속성들의 목록

3000

0x30

$File Name

속성값(파일이름(유니코드), 파일의 생성/접근/수정시간)

4000

0x40

$Volume Virsion

볼륨 정보(Windows NT 1.2버전에만 존재)

5000

0x50

$Security

파일 접근/제어, 보안 속성

6000

0x60

$Volume Name

볼륨 이름

7000

0x70

$Volume Information

파일시스템 버전, 플래그들 저장

8000

0x80

$DATA

파일의 내용(데이터위치값, 실제 사용되고 있는 데이터 크기)

//복구에 가장 중요한 속성값

9000

0x90

$Index Root

인덱스트리의 루트 노드 저장

A000

0xa0

$Index Allocation

인덱스트리의 루트와 연결된 노드

B000

0xb0

$Bitmap

MFT와 인덱스의 할당정보( 파일 있음)

C000

0xc0

$Symbolic Link

$Reparse Point

심볼릭 링크 정보(Windows2000+)

심볼릭링크에서 사용하는 reparse point정보( " )

D000

0xd0

$EA Information

 OS/2 응용프로그램과 호환성읠 위해 사용(HPFS)

 

 

 

 

 

 

 

 

 

 

 

 


 

 

[파일복구순서]

 

1

파일이름 0x0080 찾음

80 = 속성타입ID 데이터 구간

2

80 밑으로 4번째 확인  ex) 22 or 31 or 21

Offset RunList (클러스트할당량|데이터위치)

3

번호에 따라

ex) 3 | 1 : 오른쪽 1byte 이동 3byte

데이터 위치 찾음

4

번호 왼쪽 8byte

데이터 크기

5

 파일 위치 이동 파일크기 만큼 복사 복구!

 

생성시간 (0B0 / 08-0F)

파일이름 (0F0 / 02-0F) //80전까지(이름 길이에 따라 다름)

런리스트 : 파일이름 80에서 아래로 4번째

파일크기 : 런리스트 왼쪽 8Byte

파일위치 : ex)31 -> 1byte 건너 (3byte*클러스터크기)+VBR

      ------------------------------

 

참고] ntfs.xlsx

 

 

 

1. 휘발성 데이터 수집 (Live Data 수집)

 1) 수집대상

 2) 명령어

 3) 스크립트

 

2. 메모리 포렌식(메모리 덤프/분석)

 1) 메모리 덤프

 2) 분석(volatility)

 


 

1. 휘발성 데이터 수집

 


 

▷ Live Data 수집 시 참고자료

 

- RFC3227 , NIST SP800-86 : 포렌식 절차 / 대상 등을 정의

https://www.ietf.org/rfc/rfc3227.txt

http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-86.pdf

 

- NIST CFFT(Computer Forensic Tool Testing) : 포렌식 도구 검증

http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-86.pdf


 

 

□ 휘발성 데이터 수집대상

 

 시간정보(대한민국 UTC+9)

 네트워크 관련 정보

 프로세스 관련 정보

 사용자 관련 정보

 DLL 목록 사용여부 //(Dynamic Link Library)

 핸들 목록

 명령 히스토리 (제한있음,전부 다 볼 순X)

 서비스 목록

 예약 작업

 클립도드 내용

 네트워크 드라이브 정보 / 공유폴더

 netbios 정보

 프로세스. 메모리 덤프

 

=> 주로 사용 할 도구 

- Sysinternals Suite(https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx)

- 기본 윈도우 내장 명령어(cmd.exe, c:\window\system32)

 

 

 

□ 휘발성 데이터 명령어

 

▷ 시간정보

date : 날짜

time : 정보

옵션 /t : 정보 수정없이 현재 정보만 표시

> date /t & time /t

 

 

▷ 기본적인 시스템 정보수집 

[wmic](Windows Managemant Instrumentation Console)

: (wmic 실행 시 프롬프트 변경)

 

os : 대략적인 시스템 정보 전체 조회

os get [특정항복1], [특정항목2].. : 특정 항목만 조회

  installdate         : 설치날짜

  serialnumber     : 시리얼정보

  currenttimezone : 현재 시간대 정보

  localdatetime     : 시간정보

  useraccount      : 사용자 계정 정보

 

[SysinternalsSuite] (폴더로 경로이동)

Sysinternal 도구 실행 시 뒤에 ' /accepteula '옵션 추가      //(end user license agree?)

  - 라이센스 동이 GUI 창 미표시

  - 자동 라이센스 동의(스크립트)

 

ㄴ시스템 정보 확인(sysinternals)

PsInfo : 기본 시스템 정보 수집

-d : 디스크 정보

-s : 설치 된 프로그램 정보 (안나오는것도 있음)

-h : 핫픽스 정보

 

ㄴ로그인 된 사용자 정보 (Sysinternals도구)

: 원격 데스크톱 연결 등을 통해 접속한 사용자 목록 확인

ntsuers : sysintemtool 사이트에서 다운로드

http://www.systemtools.com/cgi-bin/download.pl?NetUsers (현재X)

 

ㄴ세션 정보 확인(sysinternals)

logonsessions

=> 사용자 로그인 세션 외의 기타 서비스 관련 세션 등의 정보 확인 가능

-p : 각 세션이 실행하는 프로세스 목록 확인

 

[열려있는 파일 목록 조회]

 net file

 openfiles

 psfile 

 

[cmd에서 실행헀던 명령어 조회](해당 cmd창에서만 유효)

 doskey /history

 

[프로세스 목록 조회]

 tasklist : 내장 명령어

       /v : 상세 정보 표시

    /svc : 프로세스가 관련된 서비스 정보 조회

 pslist(sysinternals)

-t : 프로세스 트리표시

-x : 스레드 등 상세 정보 표시

 

[DLL확인]

 listdll.exe (sysinternals)

 

[핸들 확인]

 handle.exe (sysinternals)

 

[서비스 목록 조회]

 psservice.exe (sysinternals)

 

 

▷ 네트워크 관련 정보

[네트워크 정보 수집]

 netstat: 네트워크에서 열려있는 포트 정보 등 조회

-a : 전체 네트워크 정보 (TCP이외의 연결)

-n : 이름 서비스 조회 중지

-o : 관련 프로세스 정보

-b : 프로세스 이름 정보 표시

 

 fport : 포트 정보 확인 (xp까지는 됐으나 현재 X)

 

 tcpvcon(sysinternals) : 네트워크 포트 정보 확인

-a : 전체 포트 정보

-n : 이름 표시 X

-c : csv형태로 표시 (분석 용이)

 

[네트워크 인터페이스 정보]

 ipconfig /all : NIC 상세 정보 출력

 getmac       : MAC Address 표시

 

[라우팅 테이블]

 netstat -r , route print : 실행 결과 동일

 

[arp 캐시 확인]

 arp -a : 현재 시스템의 arp 캐시 확인

 

[dns캐시]

 ipconfig /dispalydns : 현재 시스템 DNS 캐시확인

 

[네트워크 드라이브 확인]

 net use  : 네트워크 드라이브 연결 / 목록 확인

 

[Netbios 이름확인]

nbtstat -c : netbios 이름 / 캐시 출력

 

 

▷예약작업

 at           : 일회용 예약 작업 목록    ex)at 13:00 cmd.exe

 schtasks   : 작업스케줄러에 등록된 예약 작업 목록

 

 

 

□ 스크립트(배치파일 batch)

- .bat

test.bat

reuslt.txt

 

휘발성 데이터 수집 스크립트 작성 시 유의사항

① 스크립트 실행결과는 파일로 저장

② 스크립트 실행 시 중단되지 않도록 비 대화형 명령 수행

③ 스크립트 실행에 사용되는 파일은 전부 별도로 준비

   (윈도우 내장명령어, 기타 sysinternals 도구 등)

④ cmd.exe도 별도로 준비

 


 

참고사이트  [forensic proof]

http://forensic-proof.com/


 

 


 

 

2. 메모리 포렌식

 

□ 메모리 포렌식의 필요성

 ① 메모리에 직접 올라가는 악성 프로그램 등을 분석 가능

     인 메모리 라이브 인젝션

 ②프라이버시를 위하여 보호된 사용자 데이터들이 메모리에 올라갔을때는 암호화 해제

 

 

□ 활성데이터 수집(Live Data)과 메모리 포렌식의 차이점

활성데이터 수집(Live Data) 

메모리 포렌식 

 운영체제 API의 영향을 받음

메모리 자체를 가져오기 때문에 영향X 

 시행 시 마다 다른 결과가 나올 수 있음

분석 시 마다 동일한 결과 

 

 전체 메모리 덤프를 통해 분석하지 않은 부분에 대하여 추가적인 분석이 가능

 

 

□ 메모리 덤프

- 하드웨어 방식 / 소프트웨어 방식

 

[하드웨어 방식] http://www.grandideastudio.com/tribble/

tribble : RAM 슬롯에 장착하여 메모리 덤프 수행

- 사전에 설치되어 있어야 함

- 설치가 되어있을경우 다른 영향 없이 덤프 추출 가능

 

IEEE1394(Firewire) : DMA가 가능 (Direct Memory Access)

                          USB는 운영체제를 통해서만 메모리 접근 가능

   원인을 알 수 없는 시스템 크래시가 자주 발생

 

=> 이러한 이유로 소프트웨어 방식의 메모리 덤프 사용

     - 윈도우 API의 영향을 받을 수 있음

     - 덤프를 만드는 과정에서 시스템에 영향을 줌

 

 

□ 메모리 덤프 추출 도구

 

 ▷ 사용자가 임의로 추출한 덤프

- dumpit (http://www.downloadcrew.com/article/23854-dumpit)

  : cmd창 -> y -> 메모리 덤프

 

- memoryze (Mandiant사에서 만든 도구)

  : C:\Program Files (x86)\MANDIANT\Memoryze\memoryDD 관리자 권한으로 실행

 

- DD

 : 예전에는 사용가능했으나 현재 윈도우에서는 불가

 

- FTK Imager Lite (무료도구)

: 메모리모양 클릭 ->경로 설정 -> capture memory -> 끝

 

 

 ▷ 자동저장 덤프 (일반적으로 메모리 포렌식에서 사용하지 않음)

- 크래시 덤프 : 장애 발생 시 자동 저장

경로)사용자설정-고급설정-시작및복구-시스템오류-디버깅정보쓰기-커널/작은/전체 메모리 텀프

 커널 메모리 덤프

   크래시에 대한 최소 정보

 작은 메모리 덤프

   커널 메모리 부분만 저장

 전체 메모리 덤프

   물리 메모리 전체

 

- 절전모드 덤프 : 최대 절전모드에서 사용하는 덤프 c:\hiberfil.sys

  //끄기 powercfg -h off

 

- VMware 등 가상컴퓨터 시스템 - .vmem 파일

 


EPROCESS 구조체

 - 프로세스가 메모리에 존재할 때의 구조체

 - 환형 이중 링크드 리스트 형태

 

프로세스 스캔 방식

 - 리스트 워킹(List Walking)     : 링크를 따라 프로세스 검색

 - 패턴 매칭 (Pattern Matching): 실제 메모리 데이터 상 EPROCESS형태를 가진 프로세스 검색


 

□ 메모리 덤프 분석 도구

[volatility] (http://www.volatilityfoundation.org/25)

 

- volatility.exe -h : 사용법 조회 (플러그인 목록)

 

1) imageinfo :  vola.exe -f [메모리덤프파일이름] imageinfo

   메모리 덤프가 추출 된 시스템의 정보 확인  

   Suggested Profile에서 운영체제 종류 확인

   Service Pack이 여러개 검색 될 경우 아래부분의 Service Pack 항목 확인

   Win7SP1x64

2) pslist : vola.exe -f [덤프파일] --prorile=Win7SP1x64 pslist

   리스트워킹 방식으로 프로세스 검색

 

3) psscan : vola.exe -f [덤프파일] --prorile=Win7SP1x64 psscan

   패턴 매칭 방식으로 프로세스 검색

 

4) pstree : 프로세스 트리

 

5) psxview : 다양한 프로세스 검색 방식으로 비교

 

6) dlllist :

- 메모리 상에 존재하는 프로세스와 관련된 DLL리스트를 출력
--pid : 특정 PID와 관련된 DLL리스트를 출력
--offset [물리메모리주소] : psscan으로 검색된 프로세스의 DLL리스트 확인

 

7) dlldump : dlldump --dump-dir [덤프 대상 디렉토리] --pid [특정PID]

- DLL을 추출

추출 된 DLL은 virustotal

 

8) handle

- 프로세스가 접근중인 자원의 목록 확인(핸들)

 

9) getsids

- 보안식별자 확인

- 프로세스가 사용한 보안식별자 목록 환인

- 권한상승 등의 공격 확인 용도

 

10) mod시리즈

- modules, modscan, moddump

- 로드된 드라이버(*.sys)

- modules는 리스트 형태로 검색, modscna은 패턴매칭으로 검색

- moddump를 사용하여 덤프

 

11) thrdscan

- 스레드 정보 검색

 

12) 네트워크 관련 플러그인

- XP이전  : connections, conscan, sockets, sockscan

connections    연결정보를 리스트로 검색

conscan         연결정보를 스캔으로 검색

socket           열려있는 포트정보를 리스트로 검색

sockscan        열려있는 포트정보를 스캔으로 검색

- Vista 이후 : netscan

 

13) svcscan

- 서비스 관련

 

14) cmdscan

- cmd에서 입력했던 명령어

 

15) consoles

- 마지막 cmd창의 화면 상태 표시

 

16) procdump

- 특정 프로세스 덤프

--dump-dir [경로] --pid [PID]

 

 

□ 레지스트리 관련

17) hivescan : 메모리에서 레지스트리 목록 확인
18) hivelist : 레지스트리 주소와 파일 관계 매칭
19) printkey : 레지스트리에서 특정 값 출력
20) hivedump : 레지스트리 하이브 파일로 덤프
21) hashdump : 윈도우 SAM에 들어있는 계정 해쉬 추출

22) clipboard : 메모리 덤프시 클립보드 내용 출력
23) screenshot : 메모리 덤프시 대략적인 윈도우 배치
24) windows : 덤프시 열려있던 윈도우 창 정보

 

 

 

 

<Open System Interconnection 7 Layer>

 

[목적]

1. 표준(호환성) : 비용절감

2. 학습도구

 

[장점]

1. 표준화

2. 데이터 흐름 이해 쉬워짐

3. 문제 파악 용이

 

- 데이터링크 계층만 해더+트레일러(오류제어)

- 나머진 헤더만 붙음

- 물리계층은 전기신호로 보냄(2진수)

- L1,L2 두 계층만으로도 통신 가능(ex)블루투스)

- 실제 네트워크 프로토콜은 1,2,3계층만 사용

 

[구조]

계층 

PDU

(Protocol Data Unit)

역할

장비

프로토콜

L7

응용계층

(Application Layer)

데이터 

(data)

 

- 실제 통신의 최종 목적

- 어플리케이션이 실제 작동하여 서비스하는 구간

 

L7

(多)

HTTP,

SMTP,

SNMP,

DNS 등

L6

표현계층

(Presentation

 Layer)

 

- 어플리케이션이 마들어내는 데이터 표현

  (암호화,복호화,압축,인코딩,디코딩)

 

 

 

L5

세션계층

(Session Layer)

 

- 송신자와 수신자의 연결 상태(세션)을 관리

  (시작,정치,재시작)

 

 

 

L4

전송계층

(Transport Layer)

세그먼트

(segment)

 

- 네트워크 전송과 관련 오류복구, 흐름제어

  (신뢰성있는 정상적인 데이터 전송 가능하게 함)

- port주소를 통해 어플리케이션으로 보냄

- port번호를 통해 하나의 통신장치안에서

  각 어플리케이션을 구별

 

L4장치

(스위치)

TCP,

UDP

L3

네트워크계층

(Network Layer)

패킷

(packet)

 

- 데이터를 패킷단위로 분할아여 전송 한 후 재결합

- IP주소(논리주소)를 헤더에 포함

- 라우팅(데이터가 목적지까지

            가장 빠르게 갈 수 있는 경로 찾음)

 

라우터

(L3장치)

IP

 2.5      

 

 ARP,

RARP

L2

데이터링크계층

(DataLink Layer)

프레임

(frame)

 

- 최소한의 네트워크를 하기위한 계층

- 단순 전기신호를 의미있는 데이터로 변환

- 오류검출(트레일러)

 

스위치

(브릿지,

게이트웨이)

 Ethernet

L1

물리계층

(Physical Layer)

(bits)

 

- 전기적, 기계적 규격 총괄하여 네트워크가

  물리적으로 송수신 가능하게 함

- 프레임을 전기신호로 변환&전송

 

허브,

리피터

(UTP,

케이블 등)

전기적

규격 

(전선,

전압) 

 

 

 세션계층 

 

                      세션설정/유지/종료

송신측 ------------------------------------------------>수신측

 

 표현계층

 

                     인코딩, 압축, 암호화

송신측 ------------------------------------------------>수신측

송신측 <------------------------------------------------수신측

                     디코딩, 해제, 복호화

 

 

 

 세그먼트 

 

 헤더

데이터 

 

 

 패킷

 

 헤더

세그먼트 

 

 

 프레임

 

 헤더

패킷 

트레일러 

 

 

 

 

 

 

 

<TCP/IP>

 응용

응용 

 표현

 세션

 전송

 전송

 네트워크

 인터넷

 데이터링크

네트워크 인터페이스 

 물리

 

Port번호(port주소)

- 동일 IP시스템에서 프로세스 구분을 위한 주소

 

- 0~65535번 주소 사용(16bit 주소 사용)

 0~1023 

  System port  (well know port)

 잘 알려진 서비스         ex) 80- 웹서비스

 1024~49151

  User port     (registered port)

 응용 프로그램 사용

 49152~65535

  Dynamic port

 접속용도로 사용(주로 클라이언트가 사용)

 

[System Port]

 20,21

 FTP

  파일전송(로그인,계정O)  //SFTP(보안FTP)

 22

 SSH

  원격 터미널(서버관리) , 암호화 O

 23

 Telnet

  원격 터미널(서버관리) , 암호화 X

 25

 SMTP

  메일 전송

 53

 DNS

  IP를 URL로 변환

 67

 DHCP

  IP 자동 배분 (UDP를 주로 사용)

 69

 TFTP

  Trivial FTP, 파일전송(로그인X), 간단함, 패치 등에 사용, 보안↓

 80

 HTTP

  7계층 통신 주고받는 프로토콜 (암호화X) , 웹서비스

 110

 POP3

  메일 다운 (다운받고 서버에서 메일 삭제 됨)

 137~139

 NetBIOS

  윈도우 통신(윈도우 고유 프로토콜)

 143

 IMAP

  메일 다운 (다운 받고 서버에 메일 남음)

 161,162

 SNMP

  UDP주로사용

 443

 HTTPS

  웹서비스, 암호화O, TLS사용

 445

 SMB

  윈도우에서 파일공유      // 가능하면 꺼놓는게 보안에 좋음

 1432,1433

 MS-SQL

  DBMS

 1501,1502

 OLACLE

  DBMS                         //OLACLE이 MY-SQL인수(?)

 3306

 MY-SQL 

  DBMS                         //마리아DB

 3389

 원격 데스크탑

 

 

 

 

 

 

 

 

 

- FTP ex)

 

 

 

 

- 매일 전송 방식 ex)

 

 

1. 광역 통신 방식

- 회선 교환 / 메세지 교환 / 패킷교환(오늘날 통신 방식)

 

1) 회선 교환

- A~C까지 전용선 구축하여 통신

- 많은 양 전송 가능

- 회선 독점으로 비효율적

 

2) 메세지 교환

- 가변 길이 메세지 단위로 저장/전송 (축적 전송, Store-and-forword)

 

 

3) 패킷 교환

- 송.수신지를 포함하는 패킷들로 데이터 구성

- 구성 : 헤더 + 데이터 + 순환잉여도 검사(오류체크)

- 저장/전송 사용

- 데이터를 쪼개고 해더를 붙인 후 전송 -> 해더 떼고 재결합

 

 

 

 

 

 

2. 무선 LAN

- 무선 주파수나 적외선 기술을 이용하는 근거리 통신

 

장점 : 선 필요X, 단말기 이동 자유로움

단점 : 비쌈, 느림

 

 

[표준]

- IEEE(전기전자기술자협회)는 무선 LAN표준으로 802.11, 802.11b, 802.11a, 802.11s, 802.11n 등 지정

- 현재 802.11n(=Wifi)규격 자주 사용

- 802.11n : 2.4 or 2.5GHz 주파수, 최대 300Mbps 까지 제공.

- 802.11ac : 이론적으로 전송속도 최대 6.93Gbps

 

 

[매체 접근 방식]

- CSMA/CA : CSMA/CD와 유사(짧은 제어 메세지 먼저 전송→ 상황 파악 →전송)

 

[보안 대책]

- 데이터 암호화   ex)Wifi 비밀번호 설정

  : WEP → WPA → WPA2

 

 

+ Recent posts