'Forensic'에 해당되는 글 8건

  1. 2012.04.06 4. NK Record
  2. 2012.04.03 1.시작하며... (3)
  3. 2010.07.28 Detail (Registry Analysis) (1)
  4. 2010.07.28 Detail ( Main UI )
  5. 2010.07.27 Architecture (1)
  6. 2010.07.26 Motive (1)
  7. 2010.07.25 Forensic 이란? (3)
  8. 2010.06.07 인사이드 윈도우즈 포렌식 ( 원제 : windows Forensic Analysis 2/e ) (9)

Naver Perl Community & Study Cafe


2012.04.06 23:56

4. NK Record

NK Record 들은 레지스트리 구조를 연결하는데 가장 중요한 역활들을 해주는 Record 입니다.

이 Record는 각 Key 에 따른 하위 목록들의 연결값들을 가지고 있고 최종으로 수정한 시간도 담겨 있습니다.

이 장에서는 NK Record 의 세부적인 값들을 추출하여 나열하는 샘플을 만들어 보겠습니다. 람쥐..^^;

최근 일주일동안 블로그에 열심히 글을 올렸습니다. 

오랜만에 강좌를 적어서 그런지 홍보를 안해서 그런지

조회수는 높은데 댓글이 없군요 ㅡ_ㅠ


글을 적는 재미는 쏠쏠합니다~

피드백이 좀 들어왔으면 하는데.. 

딴지도 환영입니다.( 적당히만 해주시면 ㅡ_ㅠ...)


그러면 시작~~!


Key Records 는 각 Cell 에 대한 사이즈나 정보들을 담고 있습니다. 

첫번째 4Byte 는 사이즈가 담겨 있으며, 두번째 값으로는 "nk" 라는 signature를 가지게 됩니다.

여기 nk가 없다면 이건 Key Records가 아닌겁니다!

nk 키로 부터 시작해서 Subkey 를 연결하는 구조로 되어 있기 때문에,

이 정보들을 소중하게 간직하셔야 합니다 :)


이번에는 코드를 먼저 보면서 설명을 드리겠습니다.


use strict;
use warnings;

my $ADJUST  = 0x1004;	
my $file = shift || die "You must enter a filename.\n";
open my $reg, '<', $file  or die "cannot open [$file] file: $!";

my ($node,$offset) = locateRecord($ADJUST);
my $nt = _getNodeType($offset); 

if ($nt == 0x6b6e) { # 'nk' record 일 경우 파싱을 시작 합니다.
	parseNkRecords("",$offset);
}
else {
	printf "Node not an nk node: 0x%x\n",$nt;
	die;
}
close $reg; 


# nk 의 root key 값을 찾는 코드

sub locateRecord {
	my $offset = shift;
	my $record;
	seek($reg,$offset,0);
	while(1) {
		read($reg,$record,4);
		my ($tag,$id) = unpack("SS",$record);
		if ($tag == 0x6b6e && $id == 0x2c) { 
			# print "nk record located.\n";
			return("nk",$offset);
		}
		$offset = $offset + 2;
		seek($reg,$offset,0);
	}
}


# offset으로부터 2byte를 읽어와 unpack 을 사용하여 node의 ID를 얻는 방법입니다.
# 이 함수를 하나 만들어 두면 앞으로 각 Record 의 타입을 확인하기 편하죠!

sub _getNodeType {
	my $offset = $_[0];
	my $record;
	seek($reg,$offset,0);
	my $bytes = read($reg,$record,2);
	if ($bytes == 2) {
		return unpack("S",$record);
	}
	else {
		print "_getNodeType error - only $bytes read.";
		return;
	}
}

# nk record 들을 파싱하는 부분입니다. 
# 파싱한 후 nk 의 값들을 traverse 하는 코드들은 다음장에서 :)

sub parseNkRecords {
	my ($name, $offset) = (@_);
	my %nk = readNkRecord($offset);
	#nk record 의 정보들을 출력합니다. 설명까지 앞에 다 붙였습니다! 
	print $name."\\".$nk{keyname}."\n"; 
	print "LastWrite time: ".gmtime(getTime($nk{time1},$nk{time2}))."\n";
	print "Number of subkeys : ".$nk{no_subkeys}."\n";
	print "Pointer to the subkey-list : ".$nk{ofs_lf}."\n";
	print "Number of values : ".$nk{no_values}."\n";
	print "Pointer to the value-list for values : ".$nk{ofs_vallist}."\n";
	print "Pointer to the SK record : ".$nk{ofs_sk}."\n";
	print "Pointer to the class name : ".$nk{ofs_classname}."\n";
	print "Key name length : ".$nk{len_name}."\n";
	print "Class name length : ".$nk{len_classname}."\n";
	# 이후에 Key들을 연결해줄 코드들이 쭈욱~~ 붙게 됩니다.
}


# 위의 표에서 본 값들을 전부 읽어와서 각각의 변수들로 저장시킵니다.
# perl 의 hash를 통해서 하나하나 이름을 붙여 깔끔하게 저장하네요 :)

sub readNkRecord {
	my $offset = shift;
	my $record;
	my %nk = ();
	seek($reg,$offset,0);
	my $bytes = read($reg,$record,76);
	if ($bytes == 76) {
		# unpack의 알흠다운 활용법입니다.
		my (@recs)	= unpack("SSL3LLLLLLLLLL4LSS",$record);
		$nk{id}		= $recs[0];
		$nk{type}		= $recs[1];
		$nk{time1}	= $recs[2];
		$nk{time2}	= $recs[3];
 		$nk{time3}	= $recs[4];
		$nk{no_subkeys}	= $recs[6];
		$nk{ofs_lf}		= $recs[8];
		$nk{no_values}	= $recs[10];
		$nk{ofs_vallist}	= $recs[11];
		$nk{ofs_sk}	= $recs[12];
		$nk{ofs_classname}	= $recs[13];
		$nk{len_name}	= $recs[19];
		$nk{len_classname}	= $recs[20];

		# key의 이름을 알아내어 저장합니다		
		seek($reg,$offset + 76,0);
		read($reg,$record,$nk{len_name});
		$nk{keyname}       = $record;

		# 여기까지 읽은 전체 바이트의 수는 ($num_bytes + $nk_rec{len_name}) 입니다.
		# 다시 말하면 nk의 76byte + nk의 keyname 길이만큼 입니다.
		# 이 값들을 활용하기 위해 hash 값을 return 시킵니다.
		return %nk;
	}
	else {
		print "readNkRecord bytes read error: ".$bytes;
		return;
	}
}


# 2개의 4Byte time값을 64-bit NT timestamp 값으로 변환해주는 코드입니다.

sub getTime() {
	my $lo = shift;
	my $hi = shift;
	my $t;

	if ($lo == 0 && $hi == 0) {
		$t = 0;
	} else {
		$lo -= 0xd53e8000;
		$hi -= 0x019db1de;
		$t = int($hi*429.4967296 + $lo/1e7);
	};
	$t = 0 if ($t < 0);
	return $t;
}

!!! 

코드가 엄청 늘어 났습니다. 

나중에 각각의 키들의 offset 에 따라서 재귀적으로 함수를 호출해야 하기 

때문에 코드를 함수로 빼는 작업이 중요합니다.

위의 코드를 설명을 드리자면 

가장 처음의 nk record 를 접근해서 record의 값을 추출한 뒤 해시에 저장한 후에

그 값 들을 출력해주고 있습니다.


코드 실행의 결과는 아래와 같습니다.

>perl rega.pl SAM

\SAM

LastWrite time: Sun Jul  4 09:33:18 2010

Number of subkeys : 1

Pointer to the subkey-list : 504

Number of values : 0

Pointer to the value-list for values : 4294967295

Pointer to the SK record : 120

Pointer to the class name : 4294967295

Key name length : 3

Class name length : 0

음?? value-lis의 offset의 값들이 말도 안되는 숫자가 나오는 이유는

values가 0개기 때문입니다. Class name의 offset 도 마찬가지구요 :)


forensic 관점에서 연결해주는 offset 이나 각 number 들이 중요하진 않습니다.

여기서 빨간색으로 표시한 key 이름과 LastWrite의 시간이 가장 중요하죠.

나중에 분석을 할 때나 UI 도구을 만들때도 이 데이터들이 중요한 역활을 합니다.


그럼 오늘 강좌는 여기까지 하고.. 

불타는 금요일 + 주말  보내세요~~ :)


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2012.04.03 16:33

1.시작하며...


안녕하세요 h0ney 입니다!

이번 강좌에 설명할 내용은 레지스트리 Hive 파일 포멧 분석기(Registry Hive File Format Analyzer)  입니다.

사이버 포렌식에서 Registry Hive 파일 분석은 선택이 아니라 필수일 정도로 중요도가 높습니다.

이를 프로그래밍 도구를 만들면서 전체 구조를 파악하며 공부하는 글을 적어보려고 합니다.

프로그래밍 분석에 사용될 언어는 perl 이며 Windows Forensic Analysis의 regpl.pl 을 참고하여 설명드리겠습니다.


보안 공부를 할때 기본적으로 배우는 개념 중 PE 구조 라는 것이 있습니다.

(PE구조란 윈도우 운영체제에서 지원되는 실행 파일의 형식을 뜻하며 실행을 할 수 있는 구조를 가진 파일입니다. )


이런 PE구조를 분석 및 공부를 하려면 

PE구조에 관련된 서적을 열심히 읽어야 하는데

책을 아무리 읽어도 16진수가 난무하는 알 수 없는 값들 때문에

눈꺼플이 무거워지고 꾸벅꾸벅 잠만 쏟아집니다 ^^;;


PE구조 같은 파일구조를 공부하기에 좋은 방법을 소개하자면

첫 번째로는 샘플 파일을 Hex Editor를 통해 직접 값들을 확인하며 공부하는 방법.

두 번째로는 파일에 관련된 도구를 직접 사용해서 내부 구조를 확인하는 방법

세 번째로는 프로그래밍으로 직접 파일구조 분석 도구를 만들어 보는 방법입니다.


Hex Editor 나 도구를 이용해서 구조를 확인하고 넘어가도 상관이 없지만 

도구를 직접 만들어 본다는 것만으로 설레이지 않나요?? ㅎㅎ


좋은 점에 대해서 부연 설명을 드리자면...

1. 분석도구를 만드려면 파일 구조가 온전한지 값이 잘 출력되는지 

    테스트를 하며 만들어야 하기 때문에 자연스럽게  파일구조가 머릿속에서 그려집니다.


2. 책에서 봤던 혹은 알고있는 내용과는 다르게 다양한 변수들이 많이 생기는데

   이런 변수들을 하나하나 해결할 수록 단단한 내공이 쌓여지게 됩니다.


3. 파일의 구조를 생성하는 것에 대한 알고리즘을 알게되어 다른 형식의 파일을 접하더라도

   쉽게 이해할 수 있는 지식도 생기게 되죠!!


도구로 만들고 싶다는 생각이 불쑥불쑥 솟아 나시죠??!!


레지스트리 Hive 파일 분석기를 잘 만들어 두면 레지스트리 값들을 모두 

얻을 수도 있고, 지워진 레지스트리 값도 복구가 가능하기 때문에

많은 분야로 확장 가능할 것이라 생각됩니다.


강좌는 아래와 같이 2가지로 나누어서 진행하려고 합니다.

1. perl을 이용하여 내부 값들을 알아보며 각각의 키와 값들을 뽑아내어 보는 파트 


2. C#을 이용하여 UI를 꾸며 분석도구를 만들어가는 파트


두 파트 모두 도구는 만들어져 있으니 어떻게 설명하느냐가 

중요할 것 같습니다.. 부담이 되네요 ㅡ_ㅠ

모르는 부분도 많으니 피드백 주시면 감사하겠습니다 ^^/


준비물

1. Perl 설치 ( 링크를 참고 하시면 됩니다 ^^ 이럴때 카페 홍보!! )

2. Registry Hive File 문서 ( 문제가 될 시 삭제 하겠습니다.)

The WindowsNT Registry File Format.pdf

FORENSIC ANALYSIS OF UNALLOCATED SPACE.pdf

3. Windows Forensic Analysis의 perl 소스코드

4. Hex Editor - ICY Hexplorer ( 제가 좋아하는 Hex Editor 입니다 )

hex_setup216.exe

5. 끝없는 열정!


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 3
2010.07.28 04:09

Detail (Registry Analysis)


레지스트리 정보에 관한 UI 입니다.


왼쪽에는 메인 정보를 나타내는 트리 형식으로 된 메뉴가 존재하며

레지스트리에 분석된 파일에 따라 이 메뉴들이 활성화 됩니다.

총 5개의 카테고리로 구성되어 있고,

첫번째 카테고리는 레지스트리 하이브 정보를 알려줍니다.

레지스트리를 분석하기 위한 파일에 관련된 정보들을 출력 해주며,

각 파일에 따른 하이브 파일 구조도 보기 쉽도록 출력됩니다.


두번째로는 카테고리는 레지스트리를 분석하여 하드웨어의 정보들을

장치관리자와 동일한 형식으로 나열해줍니다.

하드웨어 정보뿐만 아닌 사용자의 정보에도 신경을 더 쓸 계획입니다.



세번째 카테고리인 파일은 포렌식 분석에서

가장 중요한 역활인 사용자와 관련된 파일들을 나열하는 탭입니다.

최근 접근한 파일, 최근 저장된 파일, Explorer에서 열어본 파일 등

3가지 카테고리로 이루어져 있으며,

각 파일에 따른 확장자에 따라 파일들을 확인할 수 있습니다.




세번째 카테고리는 정보에 관련된 카테고리 입니다.

이 카테고리에서는 접근했던 Web Site, 설치된 소프트웨어, 실행되었던 최근 프로그램 으로 나눠집니다.

레지스트리에서 접근했던 Web Site 의 정보들을 얻어 낼 수 있습니다.

이를 바탕으로 사이트를 한눈에 볼 수 있도록 나열하는 탭도 구성하였습니다.



설치된 소프트웨어는 인스톨 되었던

모든 프로그램의 정보들을 가지고 옵니다.

프로그램의 설치 날짜를 통하여

언제 어떤 프로그램이 설치 되었는지를 확인 할 수 있습니다.



실행되었던 최근 프로그램도 알 수가 있는데,

실행파일의 정보가 ROT13 으로 암호화가 되어있습니다.

이것을 프로그래밍으로 복호화 시켜 정보를 확인 할 수 있습니다.



다섯번 째 카테고리인 로그는

USB 매체를 사용한 흔적에 대하여 알려줍니다.

어떤 매체가 접근을 했는지 알려주며, 자세한 정보를 확인하고 싶을 시

더블클릭을 하면 세부정보도 출력이 되도록 구성하였습니다.



기본적으로 제공하는 레지스트리 분석 트리도 제공되며,

윈도우에서 제공되는 레지스트리 편집기와 동일하게 제작하여

사용자가 어색함이 없도록 보여줍니다.

실제 레지스트리 편집기와 다른점이 있다면

각 레지스트리가 어떤 역활을 하는지 부가적인 설명이 출력됩니다. 




레지스트리 뷰어의 전체 구상도입니다.

각 탭들은 독립된 Form으로 되어 있어 도킹이 가능하며

사용자가 선택한 내용들을 확인할 수 있고,

자유로운 변형이 가능하여, 사용자의 기호에 맞도록 분석이 가능합니다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1
2010.07.28 02:34

Detail ( Main UI )



만들어질 프로그램에 대하여 UI 를 설계하였습니다.

아래 그림은 처음 프로그램이 실행 될 시에 메인 화면입니다.


왼쪽에는 로고가 오른쪽에는 두가지 메뉴가 있습니다.

세부적인 데이터를 분석해주는 Normal 모드와

시나리오에 따른 문서화를 해주는 Document Mode 입니다.

각 버튼을 누르면 다음 모드로 이동을 합니다.

그리고 각 모드를 진행하기 전에 환경설정을 먼저 해야 하는데

환경설정 버튼을 누르게 되면 아래 폼이 뜨게 됩니다.




사건의 정보에 대하여 작성하고

분석하기 위한 각각의 파일들을 존재하는지 체크해야 합니다.

만약 여기서 존재하지 않는 파일이 있다면 Success 가 되지 않으며

Option 탭으로 가서 복구를 할 수 있습니다.




Normal Mode 의 화면입니다.

총 4가지 탭으로 나뉘며 각 버튼의 설정에 따른

세부적인 정보를 볼 수 있는 Form 이 새창으로 뜨게 됩니다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2010.07.27 02:41

Architecture


전체 시스템에 관한 Architecture 입니다.



하드웨어에 저장 되어 있는 데이터를 추출하여

사용자 정보, 시스템 정보 , 하드웨어 정보 등을 얻어온 뒤

이 정보들을 보기쉽게 나열해 주며 유용한 정보를 모아서

사용자 분석을 해주는 시스템입니다.






윈도우 XP 운영체제에서 닷넷 프레임워크 3.5 C# 으로 제작이 됩니다.


디지털 포렌식 정보수사 과정은 아래와 같이 4가지로 이루어 집니다.

1. Assessment(평가)
2. Acquisition(수집)
3. Investigation(조사)
4. Document(문서화 및 보고)

이 수사과정에 따라 표를 만들어 보았으며,

데이터를 수집시에 무결성, 저장 매체 이미징 기술, 정보 수집 기술을 바탕으로
 
데이터를 수집해 와야 합니다.


수집한 데이터를 바탕으로 복구기술을 거쳐, 필요한 정보들을 뽑아내어

Registry Hive , Web Log, System Log 의 분류에 따라 데이터를

분류하여 분석해 줍니다.

그리고 이 3 카테고리의 분석된 자료들을 통합하여 보고서를 작성합니다.



레지스트리에 관한 정보는 사용자 계정, 컴퓨터의 하드웨어 및 어플리케이션에 대한

설정 정보를 계층적으로 데이터베이스화 되어 있습니다.


하지만 컴퓨터가 종료된 시점에서 레지스트리 정보를 얻어내기란 쉽지 않는데

그 이유는 레지스트리에 관련된 파일(Hive File)들을 직접 분석해야 하기 때문입니다.


위의 그림과 같이 레지스트리와 관련된 레지스트리 하이브 파일들을 추출하는 과정이며,
 
분석을 통하여 실제 레지스트리와 유사한 Tree 구조를 만들어 줍니다.

그리고 레지스트리 구조만 보여주는 것만이 아닌,

레지스트리 안의 세부적인 정보를 쉽게 알 수 있도록

Registry Viewer 도 제공됩니다.



웹 브라우저에 관련된 생성 파일들은

사용자의 흔적 및 패턴을 찾기 위한 매우 중요한 자료들입니다.

하지만 웹 브라우저 생성 파일에는 많은 데이터가 존재하기 때문에

용의자의 행위를 규명하는데 쉽지가 않습니다.


위의 PPT 에서는 사용자가 가장 많이 사용하는

웹사이트( Internet explorer, FireFox , Chrome )에서

각각의 로그파일을 분석하여

URL , 검색어 , 접속시간, 방문횟수 등을 추출 및 분석이 가능합니다.


신속하고 효율적인 수사를 위해서는 방대한 웹 데이터들을

직관적으로 분석하기 위한 툴을 제작을 해야합니다.




로컬 파일 분석은 용의자의 흔적, 패턴 및 당시 상황을 찾기 위한 매우 중요한

디지털 포렌식 수사 방법입니다.

하지만 조사 대상인 로컬 파일에는 무수히 많은 정보가 존재하며

그 종류가 다양하기 때문에 수사의 어려움이 커서 이를 체계적이고

효과적으로 보여주기 위해서는 적절한 필터링과 분석을 통하여

검사관에게 제시하여야 합니다.


로컬상에서 비휘발성 데이터 정보로는 레지스트리나, 웹로그를 제외하고도 운영체제에서

자체적으로 로깅하는 부분, 혹은 남아있는 데이터들을 이용할 수 있습니다.


그 이외에 용의자의 컴퓨터 시간의 조작여부, 부팅 및 종료시간,

파일 생성날짜, 임의로 숨겨진 데이터 ,

시스템이 일으키는 에러사항 등의 정보를 제공합니다.



Architecture 끝 :)

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1
2010.07.26 03:51

Motive


포렌식 도구 Winproof가 왜 필요한지 설명을 해보겠습니다.




국내에는 통합 포렌식 툴이 없습니다.



포렌식 툴이 없다는 것이 아닌 통합적인 포렌식 툴이 없습니다.

여기서 제가 말하는 통합 포렌식 툴이란 레지스트리, 웹, 시스템 로그 그리고

사용자 분석을 위한 복구기술까지 포함된 툴을

기준으로 이야기 하였습니다.

국내에 포렌식 툴을 만드는 사람도 없고 공개화된 커뮤니티도 없습니다.

그래서 포렌식 툴을 사용할 때는 항상 외국의 툴을 사용해야 하고,

영어의 압박을 받으며, 주어진 기능대로만 사용해야 합니다.






국외의 통합툴의 경우에는 제품의 가격이 비싸고,

도구를 사용할 시 익히기도 어렵습니다.



국내 및 해외의 점유율이 가장 높은 포렌식 툴인

encase 의 경우 메뉴얼 페이지만 약 500페이지 가량 됩니다.

이 툴을 익히고 정보를 뽑아내는 데에 있어 

많은 시간 투자해야 할 것입니다.


이렇게 포렌식 툴에 대한 가격이 비싼 이유는 디지털 포렌식에 관련된 문서가

공개화 되어 있지 않은 부분이 많으며,

국내 포렌식 시장이 활성화 되지 않아 개발이 어려운 부분이 크기 때문입니다.






단순한 데이터를 보여주는 것 뿐만이 아닌

필요한 데이터들만 선택하여 그 데이터들만 추출하여

보고서를 만들어 줍니다.



이 기능의 경우에는 누구나 보고서를 읽어도 이해 할 수 있도록

쉽게 작성되도록 노력할 것이며, 전문적인 내용이 들어가도록

이 보고서의 추출된 데이터에 관련된 부연 설명이 들어가게 됩니다.



이상 Motive 의 설명을 마치겠습니다 :)
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1
2010.07.25 17:45

Forensic 이란?


winproof 툴을 설명하기에 앞서 디지털 포렌식에 관하여 먼저 설명을 드리겠습니다.

위키백과의 글에 따르면 디지털 포렌식이란 ,

전자 증거물 등을 사법기관에 제출하기 위해

데이터를 수집, 분석, 보고서를 작성하는 일련의 작업을 말합니다.





forensics 이라는 의미 자체는 법의학을 이야기 하며, 

범죄에 관한 과학수사를 의미합니다.
 
여기에 디지털이라는 단어가 수식어로 붙어서,

컴퓨터에 남겨진 여러 자료들을 수집하여 사법기관에 제출하기 위한 

법적으로 효용성이 있는 데이터들을 뽑아내는 작업을 디지털 포렌식이라 이야기 합니다.




더 알기 쉽도록 설명한다면

수사시에 조사를 받아야 하는 용의자에 대하여

용의자가 소지한 디지털 매체에서 관련 자료들을 추출 해 낸 뒤,

경찰측에서 증거를 확보하여 용의자의 범죄를 입증하는 기술을 의미합니다.

꼭 범인을 결론짓는 기술이 아닌, 용의자의 무죄를 입증하거나

조사용으로도 많이 활용되는 기술이 디지털 포렌식 기술입니다.





디지털 포렌식은 크게 3가지 절차로 이루어집니다.

첫번째로 증거 수집 ( Gathering of proofs)

두번째로 증거 분석 ( Evidence analysis )

세번째로 보고서 작성 ( Dcuments Production)

으로 이루어지며,
 
세번째 항목이 보고서 작성이 아닌 증거 제출 ( 무결성 및 툴 검증 ) 으로 분류되기도 합니다.




첫번째로 증거 수집은  손상되기 쉽고, 사라지기 쉬운

디지털 증거가 저장된 저장매체 (컴퓨터 메모리, 하드디스크, USB 등)에서

데이터의 무결성을 보장 하면서 데이터를 읽어 내야 합니다.

이 때 무결성이란 원 저장매체에 대한 데이터 변조가 일어나지 않음을 의미하고 ,

증거수집을 할때 무결성을 보장하는 이미징 기술이 사용되기도 합니다.




두번째 증거 분석은 얻은 데이터로부터 유용한 정보를 이끌어 내야 기술입니다.
 
유용한 정보는 보통 저장 매체에 존재하는 파일 시스템의 내부나 외부에 존재할 수 있습니다.

예를 들면, 범죄자는 저장매체에 존재하는 NTFS와 같은 파일 시스템 내부나,

NTFS에서 사용하지 않는 저장매체 구역에 중요 정보를 숨길 수 있습니다.

PPT 상으로는 나열된 데이터들은

증거 분석에서 가장 많이 쓰이는 3종류( Registry Hive , Web Log , System Log )의 파일에 대하여

나열해 보았습니다.

증거 분석에서 유용한 기술로는

삭제된 파일 복구 기술이나 암호화된 파일 해독 및 문자열 검색 기술 등을 들 수 있습니다.



세번째 보고서 작성은

디지털 증거수집, 운송 및 보관, 조사/분석 단계의 모든 내용을

문서화해 법정에 제출하는 단계입니다.

보고서를 읽게 되는 법관, 배심원, 변호사 등은

컴퓨터에 대한 기본 지식이 부족한 경우가 대부분이기 때문에

누구나 보고서를 읽어도 이해할 수 있도록 쉽게 작성하며,

전문적인 내용은 상세한 설명을 첨부해야 합니다.



마지막 보고서 제출같은 경우 외국의 전문화 된 툴일 경우에는 

툴을 사용해서 보고서를 작성한다고 해도

일반 이해하기가 힘든 부분이 허다합니다.

그 뿐만이 아니라 증거물 획득, 보관, 분석 등의 과정을 6하 원칙에 따라 명백하고

객관성있게 설명해야 하며,
 
예상하지 못한 사고로 데이터가 유실되어 변경이 생겼을 경우 이를 명확히 기재하고,

범죄 혐의 입증에 무리가 없음을 논리적으로 설득할 수 있어야 합니다.

어떻게 보면 상당히 까다로우며, 정확성을 요구하는 작업이 보고서 작성 부분입니다.


컴퓨터 포렌식 서비스 또는 전문가에게 상담을 의뢰하였다면

그 결과를 전문가 소견서 형태로 제출하고,

전문가를 법정에 참고인으로 출석할 수 있게 하는 과정도 포함해야 합니다.




- 참고

* 위키백과(http://ko.wikipedia.org/wiki/컴퓨터_포렌식)

* 디지털 포렌식의 기술 및 동향 ( http://ettrends.etri.re.kr/PDFData/22-1_097_104.pdf )

* 포렌식을 이용한 정보보호
 (http://www.digipine.com/?mid=software&listStyle=gallery&page=1&document_srl=2958)

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 3
2010.06.07 06:17

인사이드 윈도우즈 포렌식 ( 원제 : windows Forensic Analysis 2/e )


인사이드 윈도우즈 포렌식을 보게 되었습니다.



연구실에 아는 동생을 꼬드겨서 사게 한 후, 몇일간 열심히 보면서

이제야 포스팅을 합니다.


벌써 많은 분들이 포스팅을 하고 평을 써 놓아서 늦은 감이 있지만,

아직 어떤 책인지 잘 모르는 분들을 위해 간단히 적어 보려 합니다.



번역자, 감수자 분들은 보안계에서 인지도가 있으신 분들입니다.

감수자이신 박병익님 같은 경우에는 심플스를 운영하고 있으며,

책이 나오기 얼마전 트위터로 이 책을 소개도 하였죠 :)


책은 전반적으로 포렌식에 관련된 설명과, 분석적인 측면으로 분류 됩니다.

책에서 많은 부분을 다루고 있는건 사실이지만,

실속은 없다고 생각되네요.


결국.. 확실한 원리를 알기 위해서는 

스크립트 소스 코드를 까봐야 하는게 현실이기 때문이죠 ^^;


하지만 정말 많은 정보들을 알려줍니다.

중간중간에 좋은 문서들의 URL 을 신속하게 날려주는 센스가

책의 가치를 더 높여주고 있습니다.




포렌식이라는 학문은 국내에서는 책도 별로 없고 해서 생소하게 여겨질 듯 하지만,

이 책을 통해 아.. 이런것을 이용하여 

윈도우 분석을 하는것을 알 수 있을 정도라 생각됩니다.

( 보안쪽에 관계되지 않으신 분이 책을 사면 후회를 합니다. ^^;; )



흥미롭게 봤던 부분중 하나는 레지스트리 분석에 관련된 내용이었는데..

이번에 만들고자 하는 프로젝트에 적절하게 사용할 수 있을 것 같아

좋은 정보를 알려주신 번역자 분께 다시한번 감사드립니다.




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


대부분 코드가 Perl 로 되어 있어 저에게는 너무나 친근합니다.

국내에서는 윈도우에서 perl 을 사용하는 경우가 거의(?) 없는것으로 알고 있습니다 ㅠ_ㅠ


하지만 저의 경우에는 항상 윈도우에서 perl 사용을 지향해 왔으며, 

좋은점을 많이 느끼고 살았기 때문에

본 책에서 perl 이라는 언어를 공개적으로 사용함으로써,

알게 모르게 perl을 홍보해주는 것 같아 기분이 좋네요^^




이로써 보안관계자들이 perl 에 대해서 공부하는 계기가 되었으면 합니다~

일단 윈도우에서 perl 환경을 설치부터 먼저 해보는것 어떨까요?? ->> 설치


그런 와중에 툴까지도 Win32::GUI 로 짜 주시니

이제껏 perl 로는 GUI 가 어렵네 힘드네 이런 푸념들까지 

다 무너트려 주시니 저에게는 정말 통쾌한 책이랄까요 ㅎㅎ



평소에도 Win32:: 모듈에 관련하여 많은 관심을 가지고 있었는데

이미 해커들은 많은 툴을 만들어 내고 있었다는 것을 알았습니다.


perl 로 소스코드를 작성하여 perl을 설치하지 않고도 작동시키기 위해

ActiveState 사의 PerlAPP 로 컴파일 시켜서 실행파일을 만들고 있는데,

이 보다는 PAR::Packer 를 사용하시는게 더 좋다고 이야기 하고 싶네요~


아직 불안한감은 있지만 예제에서는 Win32::GUI 를 사용하기 때문에

PAR::Packer 를 사용하여 exe 파일을 만드는데 치명적인 오류는 없을 듯 합니다.


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


CPAN 에 Securty 카테고리 있는거 아시죠??


perl 로 포렌식 분석하시는데 perl 언어도 공부 많이 해주세요~ ^^




P.S. 보안쪽을 잘 모르는 동생 녀석이 책 번역이 아쉽다고 투덜투덜 거립니다 ㅋㅋ
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 9


티스토리 툴바