Network Forensic #20 Sans Network Forensic [Puzzle 3] #5

 

네트워크 포렌식 20번 문제

 

클릭한 영화 예고편의 전체 URL에 대해 분석하는 문제이다.

 

전체 URL은 이전 문제 XML 코드에서 확인할 수 있다. 

 

지문에서 preview-url을 확인하라고 하였으므로 preview-url을 검색해보면 URL을 확인할 수 있다.

 

[그림 1] 플래그 확인

 

preview-url을 검색한 결과로, 옆에 URL을 확인할 수 있다.

 

따라서 옆 URL을 입력하면 5번 문제를 해결할 수 있다.


Network Forensic #21 Sans Network Forensic [Puzzle 3] #6

 

네트워크 포렌식 21번 문제

 

이전 문제인 4번 문제와 같은 유형의 문제이다.

 

HTTP 200 OK 패킷 전에 GET 요청을 한 GET 패킷을 확인하면 된다.

 

GET 요청에서 사용된 id 내용이 다른 패킷을 찾으면 쉽게 원하는 패킷의 위치로 이동할 수 있다.

 

Wireshark의 검색 기능을 통해 viewMovie 문자열을 찾고, 4번 문제와 같이 HTTP 200 OK 패킷의 XML을 확인하여 Ann이 클릭한 두 번째 영화 title을 확인할 수 있다.

 

[그림 2] 두 번째 영화 확인

 

viewMovie을 검색하면 두 번째 영화에 대한 패킷을 확인할 수 있다.

 

이전 문제와 같이 밑에 있는 HTTP/1.1 200 OK 정보가 적혀 있는 패킷에 대해 4번 문제처럼 XML 코드를 확인한다.

 

[그림 3] XML 코드 Title 확인

 

title 옆에 문자열을 플래그로 입력하면 6번 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Network Forensic #18 Sans Network Forensic [Puzzle 3] #3

 

네트워크 포렌식 18번 문제

 

첫 4개의 검색 내용을 찾기 위해서는 GET을 사용한 HTTP 패킷을 확인해야 한다.

 

Wireshark 도구에서 Filter 기능을 이용해 GET을 사용한 HTTP 패킷들을 정렬하였다.

 

※ HTTP의 GET과 POST

 

GET : 서버에서 어떤 데이터를 가져와서 보여주는 용도로, 데이터 값이 URL 뒤에 이어 붙어 많은 양의 데이터를 보내기는 매우 어려움 (서버 값이나 상태 등을 변화시키지 않고, 예를 들면 게시판 글을 읽거나 검색하는 경우에 사용)

 

POST : 서버 값이나 상태를 바꾸기 위한 용도로, 많은 양의 데이터 값을 보내기에 적합 (서버 값이나 상태 등을 변화시키고, DB 값이 수정되는 경우 예를 들면 게시판에 글을 쓰는 경우에 사용)

 

[그림 1] GET 메소드 검색

 

[그림 2] GET 메소드 확인

 

검색 내용을 찾기 위한 문제이고, 자세히 살펴보면 Info에 incremental search 문자열이 적혀 있는 패킷들을 보면 검색 내용을 확인할 수 있다.

 

[그림 3] 43번 패킷

 

q=h라고 Info에 있는 내용을 확인하면 Ann이 검색한 내용이다.

 

동일한 URL로 GET을 사용한 패킷을 찾아보면 Ann이 계속해서 검색한 내용들을 확인할 수 있다.

 

[그림 4] 180번 패킷

 

[그림 5] 230번 패킷

 

[그림 6] 276번 패킷

 

따라서 위 패킷들에 대한 내용들을 조합해보면 Appletv를 통하여 Ann이 검색한 검색 내용들을 확인할 수 있다.


Network Forensic #19 Sans Network Forensic [Puzzle 3] #4

 

네트워크 포렌식 19번 문제

 

Ann이 클릭한 첫 영화의 제목을 찾는 문제다.

 

이 문제는 검색한 후에 클릭을 한 정보를 찾는 문제이므로, 시간 흐름상 검색을 한 이후 패킷에 대해 집중적으로 확인해야 한다.

 

Hack이라는 문자열이 마지막 검색 결과였으므로, 이전 문제에서 확인한 276번 패킷 이후의 패킷을 분석해야 한다.

 

[그림 7] PageName 패킷 발견

 

[그림 8] Follow TCP Stream

 

pageName이라는 문자열이 들어간 패킷을 확인해보면, 출력되는 Hackers라는 문자열을 확인할 수 있다.

 

검색 결과인 hack과 관련해서 생각해보면, 문제의 플래그로 유력한 문자열이다.

 

더 자세한 분석을 진행하던 중에 GET 요청으로 인한 HTTP 200 OK 패킷을 확인해보면 XML 소스를 확인할 수 있다.

 

[그림 9] XML 확인

 

HTTP 200 OK 패킷은 GET 요청에 의하여 발생하게 되고, 문제 시나리오를 구성해보면 hack 단어 검색에 대해 200 OK 패킷이 요청되었고, 단어 검색에 대한 관련 데이터를 요청하는 GET 요청으로 200 패킷이 응답 되었다. 

 

이후 발생하게 되는 GET 요청이 Ann이 클릭해서 발생한 요청으로 생각할 수 있으며, 다음 발생하는 HTTP 200 OK를 통하여 클릭 내용에 대한 결과 값을 받아 왔다는 것을 예상할 수 있다.

 

[그림 10] XML 코드 확인

 

※ XML 코드 확인 방법

 

1. 패킷 선택

2. 패킷 아래 세부 정보 출력 화면

3. extensible Markup Language 오른쪽 마우스 클릭

4. Copy

5. Bytes

6. Printable text only

7. 메모장 & 텍스트 프로그램에 붙여서 확인

 

[그림 11] 플래그 확인

 

패킷의 XML 코드를 텍스트 프로그램으로 확인해보면 클릭한 단어를 확인할 수 있으며, 4번째 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

 

Network Forensic #16 Sans Network Forensic [Puzzle 3] #1

 

네트워크 포렌식 16번 문제

 

문제 파일로 evidence03.pcap 파일이 주어진다.

 

Wireshark로 주어진 파일을 확인하였다.

 

[그림 1] 패킷 확인

 

첫 번째 패킷의 Source IP(192.168.1.10)를 통해 Apple TV의 주소를 확인할 수 있다.

 

[그림 2] 세부 내용 확인

 

첫 번째 패킷의 밑에 세부 내용을 확인해보면, Src의 MAC 주소를 확인할 수 있다.

 

파란색으로 드래그 된 MAC 주소를 플래그로 입력하면 1번 문제를 해결할 수 있다.


Network Forensic #17 Sans Network Forensic [Puzzle 3] #2

 

네트워크 포렌식 17번 문제

 

이전 문제에서 제시한 파일을 가지고, 8번까지 계속해서 푸는 문제이다.

 

[그림 3] HTTP 패킷 확인

 

AppleTV의 HTTP 요청 User-Agent를 확인하기 위해 HTP 패킷을 확인해야 한다.

 

그러므로 AppleTV의 HTTP 패킷을 확인하였다.

 

6번 패킷을 HTTP 패킷으로 확인이 가능하며, 자세한 분석을 위해 Follow TCP Stream 기능을 활용하여 확인한다.

 

[그림 4] 패킷 내용 확인

 

패킷 내용을 확인해보면 AppleTV의 User-Agent를 확인할 수 있고, 2번 문제를 해결할 수 있다.


# Reference

 

http://www.yes24.com/Product/Goods/59156934

Network Forensic #1 DefCoN#21 #1

 

1번 문제

 

문제 파일로 pcap 파일이 주어집니다.

 

네트워크 문제이므로 Wireshark로 분석하였습니다.

 

Wireshark : 오픈 소스 패킷 분석 프로그램으로 pcap을 이용하여 패킷을 잡아내는 것이 주요 기능이다.

윈도우뿐만 아니라 리눅스 같은 유닉스 계열의 운영체제에서도 사용되며, 무차별 모드(promiscuous mode)를 지원해서 나한테 들어오고 나가는 패킷만 얻을 수 있는 것이 아니라 브로드캐스트나 멀티캐스트 트래픽도 얻을 수 있다.

 

Wireshark 실행

 

회의가 언제 진행되었는지 알 수 있는 데이터가 어떠한 형식으로 되어 있는지 알 수 없기 때문에 패킷의 용량이나 프로토콜 등을 확인하여 분석해야 합니다.

 

IRC 프로토콜 통신 발견

 

IRC : Internet Relay Chat로, 실시간 인터넷 채팅 프로토콜이자 이 프로토콜을 사용하는 채팅 서버 및 클라이언트 소프트웨어

 

패킷을 분석하다가 17번째 패킷에서 IRC 프로토콜로 통신한 것을 확인할 수 있습니다.

 

IRC 프로토콜은 위 설명과 같이 채팅 데이터가 기록될 확률이 매우 높습니다.

 

Follow TCP Stream

Follow TCP Stream 기능을 통해 분석해보면 Gregory와 Betty라는 사람이 대화를 한 내용을 볼 수 있습니다.

 

Gregory가 Betty에게 어떤 날에 만나고 싶은지 물어보는 내용이 인코딩 되어 있습니다.

 

인코딩 문자열을 확인해보면 16진수로 되어 있고 1Byte마다 특수 문자를 사용하여 값을 나누고 있습니다.

 

데이터의 형식을 검색해 확인해보면 HTML 인코딩 방식을 활용한 것으로 확인할 수 있습니다.

 

HTML 디코딩 사이트로 가서 대화 내용을 복호화하였습니다.

 

디코딩 내용

 

HTML 디코딩 사이트 : https://www.convertstring.com/ko/EncodeDecode/HtmlDecode   

 

HTML을 디코드 - 온라인 html로 디코더

 

www.convertstring.com

디코딩하면 이어지는 대화 내용을 확인할 수 있습니다.

 

대화 내용을 확인해보면 수요일 2시로 약속이 된 것을 확인할 수 있으며, 플래그를 찾을 수 있습니다.

[Digital Forensic] 디지털 포렌식 개요

 

디지털 포렌식 개요


(1) 디지털 포렌식 개요

  • 포렌식(Forensic)이란 법의학 등을 이용한 범죄에 관한 과학 수사를 말함

  • 디지털 포렌식(Digital Forensic)은 컴퓨터를 통해 발생한 범죄에 대한 과학 수사를 의미 

 

1-1. 디지털 포렌식 기원

  • 1980년대 중반부터 디지털 증거 보존, 신원 확인, 증거 확보 등에 관한 기술을 다루기 시작

  • 용어는 1991년 미국 포틀랜드에서 열렸던 IACIS에서 처음 사용

 

1-2. 디지털 포렌식 정의

  • 컴퓨터를 매개로 이루어지는 범죄에 대한 법적 증거자료 확보를 위해 컴퓨터 저장매체와 네트워크로부터 자료 수집, 분석 및 보존하여 법정 증거물로써 제출할 수 있도록 하는 일련의 절차와 행위 

 

1-3. 디지털 포렌식 목적

  • 디지털 포렌식은 컴퓨터 범죄 수사를 목적으로 사용

  • 증거를 확보하고, 이를 통해 법적 대응이 가능하도록 해야 함 

 

1-4. 디지털 포렌식 필요성

  • 정보화에 따른 컴퓨터 범죄뿐만 아닌 일반 범죄에서도 중요 증거 및 단서가 컴퓨터를 포함한 전자매체 내에서 보관되어 있는 경우가 급수적으로 증가

  • 디지털 자료는 복사가 쉬울 뿐만 아니라 원본과 사본 구분이 어렵고 조작 및 생성, 전송, 삭제가 매우 용이

  • 범죄 관련 증거가 디지털화 되어감에 따라 증거 수집, 분석을 위한 전문적인 디지털 포렌식 기술 개발이 필요

  • 국가기관에서 컴퓨터 범죄 뿐만 아니라 일반 범죄 수사에서의 활용 빈도가 증가

  • 일반 기업체 및 금융회사 등 민간 분야에서도 디지털 포렌식 기술의 수요 급증 (내부 정보 유출, 회계 감사, 보험사기 등에 활용)


(2) 디지털 포렌식 5대 원칙

 

1) 정당성의 원칙

  • 획득한 증거 자료가 적법 절차를 준수해야 하며, 위법한 방법으로 수집된 증거는 법적 효력 상실

 

2) 신속성의 원칙

  • 시스템 휘발성 정보 수집 여부는 신속한 조치에 의해 결정되므로 모든 과정은 지체 없이 신속하게 진행되어야 함

 

3) 무결성의 원칙

  • 수집한 증거가 위조나 변조되지 않았음을 증명할 수 있어야 함

 

4) 재현성의 원칙

  • 피해 직전과 같은 조건에서 현장 검증을 실시하였다면, 피해 당시와 동일한 결과가 나와야 함

 

5) 연계보관성의 원칙

  • 증거물 획득, 이송, 분석, 보관, 법정 제출의 각 단계에서 담당자 및 책임자를 명확하게 해야 함


(3) 디지털 포렌식 분석 목적

 

1) 사고대응 포렌식 (침해 사고 대응)

  • 해킹 등 침해 시스템의 로그, 파일 등을 조사하여 침입자의 신원, 피해 내용, 침입 경로 등을 파악

  • 네트워크 기술과 서버의 로그 분석 기술, 유닉스, 리눅스, 윈도우 서버 등 운영체제에 대한 기술 등이 필요

  • 증거물을 이미징해도 변화가 이뤄지기 때문에 5대 원칙 적용 불가

 

2) 증거 추출 포렌식

  • 범행 입증에 필요한 증거를 얻기 위하여 디지털 저장매체에 기록되어 있는 데이터 복구 & 검색하여 찾아냄

  • 회계 시스템에서 필요한 계정을 찾아 범행을 입증할 수 있는 수치 데이터 분석 & E-Mail 등의 데이터 복구 및 검색하여 증거를 찾아내는 것이 목적

  • 5대 원칙 매우 중요


(4) 디지털 포렌식 유형

 

1) 디스크 포렌식

  • 디스크라는 저장매체에 들어 있는 모든 아티팩트를 분석

  • 대용량의 비휘발성 저장매체로부터 자료를 획득, 분석, 검색, 삭제된 파일 복구하는 기능 등이 주로 활용

  • 삭제 파일 복구, 파일 분류, 시간 순으로 타임라인 작성, 키워드 작성을 통해 증거물 분석과 추출

  • 증거의 손상이나 훼손을 방지하기 위해 2개의 사본을 만들어 하나는 증거로 보존하고 하나는 분석이 이루어져야 함

 

2) 네트워크 포렌식

  • 네트워크 종단 간에서 일어나는 포렌식

  • 네트워크를 통하여 전송되는 데이터, 암호 등을 특정 도구를 이용하여 가로채거나 서버에 로그 형태로 저장된 것을 접근하여 분석하거나 네트워크 형태 등을 조사하여 단서를 찾아내는 분야

  • 네트워크 포렌식 안에 네트워크 패킷 포렌식이 있으며, 네트워크 패킷 포렌식은 패킷 덤프를 떠서 해당 데이터를 분석하는 분야

 

3) 인터넷 포렌식

  • 인터넷으로 서비스되는 WWW, FTP 등 인터넷 프로토콜을 사용하는 분야

  • 게시판에 불법 정보를 업로드하거나 명예훼손과 관련된 글을 올린 용의자 추적, 전자 메일 발신 추적, 인터넷 서핑 내역 추적 등을 위하여 웹 서버나 메일 서버, WAS 등의 서버를 분석

  • 현재는 인터넷 포렌식이 디스크 포렌식 범위 안에 들어가 있음

 

4) 모바일 포렌식

  • 휴대폰, PDA, 전자수첩, 디지털 카메라, MP3, 캠코더, 휴대용 메모리카드, USB 저장장치 등 휴대용 기기에서 필요한 정보를 입수하여 분석하는 분야

 

5) 데이터베이스 포렌식

  • DB로부터 데이터를 추출 & 분석하여 증거를 획득하는 분야

  • 방대한 양의 데이터로부터 증거 수집 및 분석을 위한 기술, ERP 기반에서 개발된 회계 시스템 등의 대형 시스템을 위한 하드웨어 및 소프트웨어 기술과 다양한 DB 관리 시스템에 대한 제어 기술 등이 필요

 

6) 암호학 포렌식

  • 문서나 시스템에서 암호를 찾아내는 분야

  • 대표적으로 패스워드 크래킹이 있음

  • 암호가 될 수 있는 숫자 & 문자를 고속으로 대입하여 비교하는 크랙 프로그램을 개발하여 무차별 대입 공격 기법이나 사전 대입 공격 기법을 빠른 속도로 실시

 

7) 회계 포렌식

  • 기업의 부정과 관련된 수사를 할 때 저장된 회계 데이터를 추출하고 회계사 등 회계 전문가가 분석할 수 있도록 데이터를 정제하는 분야

  • 회계 시스템에 대한 프로그램을 개발한 경험이 있거나 회계 시스템을 운영해 본 경험이 있는 전문가가 필요

 

8) 메모리 포렌식

  • 메모리에 로드 되는 정보들을 분석할 때 활용하며, 사고 대응 포렌식 분야에서 빠르게 시스템의 정보를 분석할 때 유용하게 활용할 수 있으며, 휘발성 정보(프로세스, 네트워크, 실행했던 명령어, 접속했던 사용자 등)를 한 번에 분석할 수 있음

  • 하지만 증거 추출 포렌식 분야에서는 법정 증거로 채택이 안 되고, 사고 대응 포렌식 분야에서만 활용하고 있음


(5) 디지털 포렌식 절차

 

[그림 1] 디지털 포렌식 절차

 

5-1. 수사 준비

  • 관리적 / 기술적으로 준비를 하는 과정으로 컴퓨터 포렌식에 사용되는 각종 소프트웨어 또는 하드웨어를 준비하고 점검하는 단계

 

1) 전문 인력과 포렌식 도구의 활용 방안 수립

  • 다양한 운영체제 및 파일 시스템, 네트워크, DB, 회계 시스템 등의 기술을 가진 전문가들이 조사관으로 참여하여 각종 전문적인 도구를 이용하여 신속하고 정확하게 증거 수집 

 

2) 보관의 연속성 방안 수립

  • 증거를 가져간 시간, 돌려준 시간, 소지한 이유 등을 정확히 기록하여 증거가 훼손되지 않았음을 보여주고 무결성을 입증하기 위한 구체적 방안 수립

 

3) 데이터 무결성 유지 방안 수립

  • 확보된 데이터의 증거 능력을 확보하고 공판 과정에서 공소 사실을 입증하는 증거로써 가치를 부여하기 위해 무결성을 입증할 수 있는 여러 가지 방법 결정

  • 추가로 압수 수색 영장, 진술서 양식, 자문가 연락처, 관리자 승인, 현장 채증 준비, 증거 분석 도구 등을 준비

 

 

5-2. 증거물 획득

  • 피해 사고 발생 장소 또는 용의자 컴퓨터를 압수하는 현장에서 각종 저장매체와 시스템에 남아 있는 디지털 증거를 획득하는 단계

 

1) 휘발성 정보 수집

  • 시스템을 종료하거나 전원을 차단할 경우 휘발성 데이터가 손실되므로 현재의 상태가 유지되는 상태에서 프로세스, 메모리, 자원 사용 정보 등의 휘발성 정보 수집

 

2) 디스크 이미징

  • 증거 대상 디스크와 정확히 같은 사본을 만드는 과정을 말하며, 압수된 디스크를 조사 & 분석하게 되면 증거가 손상될 우려가 있으므로 이미지를 가지고 조사 & 분석을 진행해야 함

 

3) 증거의 무결성

  • 해쉬 및 검증 알고리즘을 원본 디스크와 디스크 이미지에 적용하여 보관한 뒤, 법정 증거 제출 시 무결성 확보 여부를 주장할 수 있음

 

4) 무결성 보장

  • 무결성을 보장하기 위해 캠코더나 사진으로 현장을 찍거나, 증거물에 대한 라벨지, 분석가에 대한 이름, 서명과 각각에 대한 시리얼 넘버에 대한 정보들을 기록

 

 

5-3. 디지털 증거 수집 단계

  • 피해 사고 발생 장소 또는 용의자 컴퓨터를 압수하는 현장에서 각종 저장매체와 시스템에 남아 있는 디지털 증거를 획득하는 단계

 

1) 휘발성 증거 우선 수집

  • 증거 수집 시 메모리나 프로세스, 화면에 있는 정보 등 소멸 가능성이 많은 증거부터 우선 확보

  • 일반적으로 레지스트리 / 캐시 / 라우팅 테이블 / ARP 캐시 / 프로세스 테이블 / 커널 정보와 모듈 / 메인 메모리 / 임시 파일 / 보조 메모리 / 라우터 설정 순으로 소멸 

 

2) 전원 차단 여부 결정

  • 서버의 경우는 전원을 차단하기 전에 프로세스 정보가 유실되지 않도록 Shutdown

  • 네트워크에 연결되어 있는 경우에는 수시로 원격으로 접속하여 데이터 삭제가 가능하므로 이에 대비하여 사전에 네트워크 단자를 제거

 

3) 전원 차단 방법

[그림 2] 전원 차단 방법

 

Macintosh : 애플 노트북에서 사용

임시 데이터 : 인터넷을 이용함으로써 남는 캐시 데이터, 쿠키 데이터, tmp 등

 

 

4) 증거 수집 대상에 따른 대응

  • 개인용 컴퓨터인 경우 본체를 그대로 증거로 채택하거나 하드디스크를 분리하여 복제하고, 데이터가 대기업 회계 관련 DB 또는 ERP 등 대형 컴퓨터에 저장되는 경우에는 전문가 도움을 받아 상황에 따른 적절한 증거 수집이 수행되어야 함

  • 증거의 위치나 수집 순서가 결정되면 증거 수집 프로그램 및 도구를 사용하여 사건과 관련성 있는 데이터를 중심으로 증거를 수집

  • 수집한 매체의 종류에 따라 PC, 서버, 이동형 저장매체 등의 출처, 사용자, 관련 부서, 연락처 등을 정확히 기재하여 나중에 혼동되는 일이 없도록 해야 하며 라벨을 부착

  • 증거 수집 과정에서 사용한 도구의 이름, 버전, 분석 과정, 시간, 산출 결과 등 전 과정도 기록 

 

 

5-4. 이송 및 보관

  • 디지털 증거의 경우 전자기파(EMP)에 노출되면 저장된 내용이 훼손되기 때문에 수집된 증거물을 안전한 방법으로 분석실 또는 보관소로 옮겨야 함

 

1) 증거 자료는 반드시 이중으로 확보

  • 디스크 이미지 사본 확보로 우발 상황 대비

  • 쓰기 방지 조치 및 봉인, 증거물 담당자 목록 유지

 

2) 증거물 이송

  • Bubble Wrap, 정전기 방지용 팩, 하드 케이스를 이용하여 이송하고 접근 통제가 가능한 공간 확보

 

3) 연계 보관

  • 현장에서 증거가 법정에 제출 될 시점까지 거쳐간 경로, 담당자, 장소 시간을 기록

  • 증거 무결성 증명을 위해 담당자 목록을 통해 최초 수집자로부터 법정 제출까지 담당자가 유지되어야 하며, 인수인계 과정에서 상호 증거를 확인하는 절차 필요

 

 

5-5. 분석 및 조사

  • 증거물 분석 단계는 증거물의 내부를 확인하고 범죄에 관련된 파일 또는 정보를 획득하는 과정으로 조사 / 분석 기술 중 필수적 요소로 데이터 복구, 은닉 정보 검색, 암호 파일 해독 등이 있음

 

1) 데이터 복구 및 증거물 분석

  • 디지털 증거를 추출하기 위해 암호 복구, 데이터 복구, 키워드 검색 및 정보 추출, MAC 타임 분석 등 다양한 포렌식 도구를 사용하여 증거물을 과학적이고 기술적으로 분석

  • 분석 과정이 명확하고, 결과 도출이 논리적으로 이루어져야 함

  • 재현이 가능해야 하며, 증거물 훼손 및 내용 변경이 금지되어야 함

  • 분석 수행함에 있어 버전과 출처 등도 명확하게 기록해서 보고서에 넣어야 함

  • 여기서 재현은 만약 A라는 수사관과 B라는 수사관이 분석할 시에 똑같은 결과가 나와야 한다는 것을 뜻함

 

 

5-6. 보고서 작성

  • 컴퓨터 포렌식 절차 중 마지막 단계로 디지털 증거 수집, 운송 및 보관, 조사 / 분석 단계의 모든 내용을 문서화하여 법정에 제출하는 단계

  • 증거물 획득, 보관, 분석 등의 과정을 6하 원칙에 따라 명백하고 객관성 있게 설명해야 하며, 예상하지 못한 사고로 데이터가 유실되어 변경될 경우 이를 명확히 기재하고 범죄 혐의 입증에 무리가 없음을 논리적으로 설득할 수 있어야 함

  • 누구나 알기 쉬운 형태로 작성

  • 수사 기관에서 조사 분석할 수 없어 외부에 이를 의뢰하였거나, 컴퓨터 포렌식 서비스 또는 전문가에게 상담을 의뢰하였다면, 그 결과를 전문가 소견서 형태로 제출하고 전문가를 법정에 참고인으로 출석할 수 있게 해야 하는 과정도 포함


(6) 디지털 증거물 획득 절차

 

[그림 3] 디지털 증거물 획득 절차

 

6-1. 디지털 증거물 수집 시 주의사항

  • 어떤 시스템을 수집할 것인지를 목록에서 확인 & 신속하고 정확하게 수집

  • 하드 디스크만 수집할 경우 충격이나 자기장 등으로 인해 증거 손상이 가지 않도록 주의

  • 시스템 하드웨어나 네트워크를 파악하고 원본 손상을 방지

  • 시스템 전원 차단 여부를 먼저 파악하고, 전원이 꺼져 있다고 판단되더라도 화면 보호기 작동 여부, HDD 및 모니터 작동 여부를 파악하여 전원 유무를 재확인

  • 전원이 켜져 있는 시스템에서 수집해야 할 휘발성 자료가 있을 때, 시스템에 피해가 가지 않는 한의 최소한의 범위 내에서 작업을 수행

  • 시스템 시간을 확인하는 과정에서 표준 시간 정보와 비교해서 정확하게 기록

  • 전원이 켜져 있을 경우 부주의에 의해 시스템 내의 프로그램을 실행시키지 않도록 주의

  • 기타 장치 종류를 확인하고, 알 수 없는 장치가 있는 경우 사진 촬영 등 자료를 확보하고 전문가와 상의

  • 취급 미숙으로 인해 시스템을 켜는 것만으로도 데이터 변조가 있으므로 각별히 주의

 

 

6-2. 결과 보고서 작성에 따른 주의사항

  • 수사관이 쉽게 이해할 수 있는 용어를 사용하여 정확하고 간결하며 논리를 정연하게 작성

  • 추정을 배제하고, 사실 관계를 중심으로 작성

  • 객관적 사실, 설명 내용, 분석관 의견을 구분하여 작성

  • 증거 발견 방법 및 증거물에 대한 작업 내용은 명확하게 문서화

  • 분석 및 처리 과정을 사진 또는 영상 등으로 기록 유지

  • 분석에 사용된 하드웨어와 소프트웨어의 정보를 반드시 기록

  • 작성이 완료되면 분석담당관의 서명 후 원본 증거물과 함께 의뢰인에게 송부

  • 수정이 불가능한 문서자료 형태로 작성하여, 관련 사건의 재판 종결 시나 공소시효 만료 시까지 증거 보관실에 보관

 

 

6-3. 디지털 포렌식 분석 보고서

 

[그림 4] 디지털 증거 분석 보고서


(7) 디지털 포렌식 도구

 

7-1. 디지털 포렌식 하드웨어 도구

[그림 5] 하드웨어 도구

 

 

7-2. 디지털 포렌식 소프트웨어 도구

[그림 6] 소프트웨어 도구

 

 

7-3. 디지털 포렌식 기타 도구

  • 데이터 복구를 위한 복구 도구 (R-Studio, Recover My File 등)

  • 현장 촬영용 카메라

  • 현장 녹화용 캠코더

  • 연계 보관성을 위한 서류 및 라벨

  • 증거 보관을 위한 케이스

  • 증거 손상을 막기 위한 충격 흡수 봉투 (케이스)

  • 정전기 방지를 위한 정전기 방지 봉투

  • 증거 운송을 위한 충격 완화 증거 운반용 박스 

[System] 운영체제 이해

 

시스템 해킹


(1) 운영체제 개념

 

1-1. 운영체제

  • 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원(기억 장치, CPU, 입출력 장치, 정보, 네트워크 등)을 효율적으로 관리할 수 있도록 하는 프로그램 집합

  • 프로그램의 프로세스 생성과 메모리 접근 등 서로 충돌 없이 요구를 잘 실행하도록 도와주는 역할 

 

[그림 1] 운영체제 개념

 

1-2. 운영체제 기능

  • 사용자 명령 인터페이스(UCI)를 중심으로 메모리 관리자, 프로세서 관리자, 장치 관리자, 파일 관리자 등 네 가지 서브 시스템 관리자로 기본 구성

[그림 2] 단일 사용자 운영체제 구성 모델

 

1-3. 사용자 명령 인터페이스 (User Command Interface)

  • 사용자와 시스템의 대화 수단

  • 많은 운영체제에서 GUI를 적용하기에 아이콘과 메뉴, 마우스라는 인터페이스를 이용, 시스템과 대화


(2) 서브시스템 관리자

2-1. 메모리 관리자

  • 프로그램이 메모리를 요청하면 적합성 점검 & 적합하다면 메모리 할당

  • 할당된 메모리를 다른 프로그램이 접근하지 못하게 관리 & 보호

  • 프로그램이 종료할 떄는 할당된 메모리 회수

 

2-2. 프로세서 관리자

  • 명령어들을 쳬계적이고 효율적으로 실행할 수 있도록 작업 스케줄링

  • 사용자의 작업 요청을 수용 & 거부

 

2-3. 장치 관리자

  • 프린터, 디스크 드라이버, 모뎀, 모니터 등 시스템 안의 모든 장치를 프로그램에 할당 & 회수

  • 이런 장치들은 흔히 입출력(Input/Output)장치라고 부름

 

2-4. 파일 관리자

  • 시스템 안의 데이터, 응용 프로그램 등 모든 파일에 사용자별로 파일 접근 권한 부여

  • 접근 권한에 따라 파일을 할당 & 해제

 

2-5. 네트워크 관리자

  • 네트워크에서 접근 가능한 CPU, 메모리, 프린터, 디스크 드라이버, 모뎀, 모니터 자원 관리


(3) 윈도우 역사

[그림 3] 윈도우 발전 과정


(4) 윈도우 구조

 

4-1. 커널(Kernel)

  • 운영체제 중심에 위치

  • 운영체제에서 어떤 작업을 시작하더라도 커널 동작으로 제어

  • 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스 제공 등 운영체제 기본 기능을 제공하는 핵심

 

4-1-1. 인터럽트

  • 작동 중인 컴퓨터에 예기치 않은 문제 발생 경우 CPU가 하드웨어적으로 상태를 체크하여 변화 대응

  • 발생 시, 운영체제 제어 프로그램에 있는 인터럽트 처리 루틴 작동하여 인터럽트를 해결하고, 인터럽트가 생기기 이전 상태로 복귀

 

4-1-2. 인터럽트 발생 원인

  • 갑작스런 정전

  • 기계적 문제 발생

  • 오퍼레이터나 타이머가 프로그램 의도적 중단

  • 입출력 종료나 입출력 오류로 CPU 기능 요청 시

  • 프로그램 실행 중 보호된 기억 공간 접근 & 불법적인 명령 수행으로 프로그램 문제 발생 시


(5) 윈도우 커널 구조

[그림 4] 윈도우 링 구조

  • 1. 하드웨어

  • 2. HAL (하드웨어 제어)

  • 3. 마이크로 커널

  • 4. 각종 관리자

  • 5. 응용 프로그램

 

[그림 5] 윈도우 시스템 구조

  • 하드웨어부터 각종 관리자까지 커널 모드로 구분하고, 응용 프로그램은 사용자 모드로 구분

  • 커널 모드는 기본적으로 사용자가 접근할 수 없는 영역, 프로그램을 실행하는 기본 관리 시스템이 위치

  • HAL은 하드웨어와 개발된 소프트웨어가 원활히 통신할 수 있도록 도와주는 번역자 역할

  • 마이크로 커널은 하드웨어와 하는 통신만 제어하는 최소한 커널(system32 폴더의 ntoskrnl.exe파일)


(6) 윈도우 관리자 역할

 

6-1. 입출력 관리자

  • 시스템 입출력 제어

  • 장치 드라이버 사이에서 메시지를 전달, 응용 프로그램이 하드웨어와 바로 통신할 수 있는 통로 제공

 

6-2. 개체 관리자

  • 파일, 포트, 프로세스, 스레드 등 모든 것을 개체로 정의

  • 이런 각 개체 정보를 제공

 

6-3. 보안 참조 관리자

  • 각 데이터나 시스템 자원의 제어를 허가 & 거부

  • 시스템 강제 보안 설정을 책임

 

6-4. 프로세스 관리자 

  • 스레드 생성 & 요청에 따라 처리

 

6-5. 로컬 프로시저 호출 관리자

  • 각 프로세스는 서로 메모리 공간을 침범하지 못해 프로세스 간 통신이 필요할 때 대신할 수 있는 장치

 

6-6. 가상 메모리 관리자 

  • 응용 프로그램의 요청에 따라 RAM 메모리 할당 & 가상 메모리 페이징 제어

 

6-7. 그래픽 장치 관리자

  • 화면에 선이나 곡선을 그리거나 폰트 등을 관리

 

6-8. 기타 관리자

  • 캐시 관리자, Plug and Play 관리자, 전원 관리자 등이 있음

 


(7) 서브 시스템

  • 윈도우에서 여러 응용 프로그램을 실행하는 컨테이너

  • 사용자가 로그인할 때 데이터를 보호하고, 운영체제가 이를 제어할 수 있도록 함

 

7-1. Win32

  • 기본 서브시스템으로 32비트 응용 프로그램이 동작할 수 있게 해준다.

  • 기본 윈도우 사용자 인터페이스 제공

  • 비디오 디스플레이, 키보드, 마우스 등을 지원

 

7-2. POSIX

  • 보안 서브 시스템과 유닉스 운영체제에 기반을 둔 일련의 표준 운영체제 인터페이스

 

7-3. 윈도우 리눅스 서브 시스템

  • 윈도우 10부터 도입된 특이한 서브 시스템

  • 윈도우에서 리눅스 운영체제를 설치해서 쓸 수 있게 하고, 리눅스 프로그램도 그 안에서 실행 가능


(8) 윈도우 파일 시스템

8-1. FAT

  • 기본적으로 2GB까지를 한 파티션으로 설정 가능

  • FAT 테이블 기본 크기는 16비트, 이는 하드 디스크에 파일을 담는 최소 단위인 클러스터가 32KB이기 때문

  • 전체 가능 용량은 2GB

 

8-2. FAT32

  • FAT와는 비교할 수 없을 만큼 용량이 커서 클러스터를 총 32비트개 가질 수 있음

  • 호환성이 좋아 리눅스나 다른 운영체제에 정보를 옮길 때 유용

  • 접근 제어를 설정할 수 없다는 문제점이 있음

 

8-3. NTFS

  • HPFS의 장점을 모아 만든 것

  • 현재 윈도우에 적용

  • 파일 시스템 결함을 관리하는 데 FAT나 FAT32보다 훨씬 좋은 성능을 보여줌

  • 보완 관점에서도 비교적 훌륭하며, 개별 폴더와 파일에 사용 권한 설정 가능

  • 각 파일과 폴더에 해당 계정만 접근하여 읽을 수 있게 암호화가 가능하며 폴더를 암호화하면 안에 있는 파일도 모두 암호화가 됨

  • 암호화된 폴더나 파일은 복사나 이동을 해도 암호화 속성을 잃지 않으며 감사 기능을 제공


(9) 윈도우 부팅 순서

9-1. POST 실행

  • 하드웨어 스스로 시스템에 문제가 없는지 기본 사항을 검사하는 과정

  • BIOS가 POST를 실행하고, 라우터나 스위치 등 장비에서도 처음 스위치를 켤 때 POST를 실행

  • POST 도중 하드웨어에서 문제 발견 시 여러 방법으로 알림

 

9-2. 기본 부팅 관련 설정 사항 로드

  • BIOS는 CMOS에 설정된 시스템 설정 사항 및 부팅과 관련된 여러 가지 정보를 읽어 시스템에 적용

 

9-3. MBR 로드

  • MBR은 저장 매체 첫 번째 섹터(LBA 0)에 위치하는 512바이트 영역

  • 부팅 매체의 기본 파일 시스템 정보가 들어 있음

  • 운영체제를 부팅할 때 저장 매체의 첫 번째 섹터를 호출하면 해당 부트 코드를 수행

  • 부트 코드의 주 역할은 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터에 호출

  • 부팅 가능한 파티션이 없으면 오류 메시지를 출력

 

9-4. NTLDR 실행

  • NTLDR은 하드 디스크의 부팅 파티션에 있는 프로그램

  • 윈도우를 부팅할 수 있도록 간단한 파일 시스템을 실행

  • boot.ini 파일 내용을 읽어 가능한 부팅 옵션을 보여 줌

 

9-5. NTDETECT.com 실행

  • NTDETECT는 NTLDR에서 제어권을 위임받아 시스템에 설치 & 하드웨어 검사

  • PC의 CPU 유형 / 버스 유형 / 비디오 보드 유형 / 키보드와 마우스 종류 / 컴퓨터에 장착된 직렬 포트와 병렬 포트 / 플로피 드라이브

  • NTDETECT가 문제없이 작동 되면 레지스트리 하드웨어 키를 만들고, 이 키는 HKEY_LOCAL_MACHINE에 있음

  • 컴퓨터를 재부팅할 때마다 레지스트리의 해당 부분을 만들기에 항상 현재의 하드웨어 구성 반영

 

9-6. ntoskrnl.exe 실행

  • ntoskrnl은 HAL.DLL을 로드하며 네 가지가 있음

 

9-6-1. 커널 로드

  • 시스템 설정 로드

  • HKEY_LOCAL_MACHINE\System\Current Controlset\Services에 저장

  • 이 정보를 확인하여 로드할 드라이브와 그 순서를 결정

 

9-6-2. 커널 초기화

  • 드라이버에서 현재 제어 설정을 검사 & 작업 시작

 

9-6-3. 서비스 로드

  • 세션 관리자 서브시스템(smss.exe)과 Win32 서브시스템을 로드

 

9-6-4. 서브시스템 시작

  • 윈도우 서브 시스템을 초기화

  • Win32 서브시스템은 로그인을 처리하고 Winlogon.exe를 시작

  • 로그인 창을 활성화, 계정과 패스워드를 입력받아 로컬 보안 인증 서버(lsass.exe)에 보냄

  • 전달받은 로컬 보안 인증 서버는 보안 계정 관리자(SAM)에 저장된 정보와 비교하여 일치하면 Userinit.exe 프로세스가 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon의 셸 값에서 참조되는 셸을 실행


(10) 윈도우 비스타 이후 부팅 순서

1~3. POST 실행 및 기본 부팅 관련 설정 사항 로드, MBR 로드

 

4. 윈도우 부트 서브 시스템 실행

  • MBR에서는 NTLDR을 실행하지 않고 윈도우 부트 서브 시스템을 실행

  • 윈도우 부트 서브 시스템은 bootmgr.exe를 실행, 부트 설정 데이터를 읽어 실행 가능한 운영체제 목록을 보여줌

 

5. 윈도우 OS 로더(Winload.exe)실행

  • Winload는 NTDETECT처럼 각종 장치 드라이버를 로드하고 ntoskrnl.exe를 실행


(11) 리눅스 / 유닉스 역사

[그림 6] 리눅스 / 유닉스 시스템 발전 과정


(12) 리눅스 / 유닉스 구조

12-1. 모놀리식 커널

  • 커널이 모든 기능을 수행하도록 만들었으며, 안정적이지만 문제가 발생하면 부분 수정이 어려움

  • 일반 시스템보다 거대한 슈퍼컴퓨터에 많이 적용

 

12-2. 마이크로 커널

  • 최소한의 커널인 윈도우 마이크로 커널과 달리 모듈 여러 개가 모여 커널 하나를 이루는 개념

  • 개별 모듈의 업로드와 언로드가 가능

  • 각 모듈 권한이 동일하여 잘못된 모듈을 업로드하면 커널 전체가 망가질 수도 있음


(13) 유닉스 링 구조 

[그림 7] 유닉스 링 구조

  • 링 개수가 많을수록 보안 레벨은 높지만, 윈도우가 유닉스보다 보안 레벨이 높다고는 할 수 없음

  • 유닉스 링 구조가 윈도우보다 명확하게 구분되어 있어 링 개수는 적지만 일반적으로 유닉스가 조금 더 높은 보안 수준을 유지


(14) 유닉스 시스템 구조

[그림 8] 유닉스 시스템 구조

 

  • 유닉스 커널 구조는 크게 파일 서브시스템, 장치 드라이버, 프로세스 제어로 나뉨

 

14-1. 프로세스 제어

  • 전체 프로세스 간 통신과 스케줄링, 메모리 관리 구현

 

14-2. 장치 드라이버

  • 윈도우처럼 하드웨어와 소프트웨어를 연결하는 인터페이스 제공

 

14-3. 파일 서브시스템

  • 하드 디스크 같은 저장 공간에 유닉스 파일을 저장하고 있는 역할


(15) 셸

  • 커널과 함께 유닉스의 중요한 요소

  • 원도우는 GUI 환경이며, 명령 창 기능이 제한적이어서 모든 것을 실행할 수 없지만, 유닉스는 GUI 환경을 지원하면서 셸 기능도 막강함

  • 응용 프로그램에서 명령을 받아 커널에 전송하는 역할

  • 사용자 키보드 입력을 인식하고 해당 프로그램을 수행

 

15-1. 셸의 주요 기능

  • 자체 내장 명령어 제공

  • 입출력, 오류의 방향 변경

  • 와일드카드

  • 파이프라인

  • 조건부, 무조건부 명령 열 작성

  • 서브 셸 생성

  • 백그라운드 처리

  • 셸 스크립트(프로그램 작성)


(16) 리눅스 / 유닉스 파일 시스템

16-1. 일반 파일 

  • 일반적으로 생각하는 데이터 파일 / 실행 파일

  • 텍스트 파일, BMP 파일, EXE 파일 등 일반적인 파일

  • 반드시 디렉터리 하나에 포함되어야 함

 

16-2. 디렉터리

  • 유닉스에서는 디렉터리도 파일에 해당

  • 디렉터리가 담고 있는 여러 파일과 하위 디렉터리 정보가 담김

 

16-3. 특수 파일

  • 유닉스에서는 프린터, 터미널, 테이프 드라이버 같은 물리적인 장치를 특수 파일로 접근

  • /dev(device)에 있음

 

16-4. 파이프 파일

  • | 문자를 뜻함

  • 명령 두 개를 연결할 때 사용

  • 임시 파일을 생성했다가 명령 수행을 마치면 사라지는 것


(17) 유닉스 디렉터리 구조

 

[그림 9] 유닉스 디렉터리 구조

 

/bin

  • 기본적으로 실행 가능한 파일을 담고 있음

  • echo, mv, copy, pwd, who 등

 

 /etc

  • 시스템의 환경 설정 및 주요 설정 파일을 담고 있음

  • passwd, hosts, xined.conf 등

 

/tmp

  • 프로그램 실행 및 설치 시 생성하는 임시 파일을 담고 있음

  • 이 디렉터리에 파일 저장 시, 재부팅할 때 임의로 삭제될 수 있음

 

 /lib

  • 기본 프로그램의 모듈을 담고 있음

 

 /boot

  • 커널용 프로그램 파일을 담고 있음

  • 부팅할 때 읽어서 수행

 

 /dev

  • 프린터나 터미널 같은 물리적인 장치를 다루는 특수 파일을 담고 있음

 

/home

  • 각 사용자의 작업 디렉터리를 담고 있음

  • 각 계정으로 로그인할 때 이 디렉터리 아래에 있는 자신의 작업 디렉터리가 시작 디렉터리가 됨

 

 /usr

  • 사용자가 직접 쓰는 파일을 담고 있음

  • 다른 디렉터리에 있는 파일이 똑같이 위치할 때가 많은데, 이는 링크되어 있는 것

 

 /usr /lib

  • C언어나 포트란 라이브러리를 담고 있음

 

/usr /include

  • C언어에서 사용하는 헤더 파일을 담고 있음


(18) 리눅스 / 유닉스 부팅 순서

18-1. POST 실행

 

18-2. 기본 부팅 관련 설정 사항 로드

 

18-3. MBR(마스터 부트 레코드) 로드

 

18-4. 부트 로더 실행

  • 리눅스는 부트 로더로 LILO와 GRUB를 사용

  • LILO는 /etc/lilo.conf에 설정 사항을 저장

  • GRUB는 레드햇 7.x 버전부터 기본 부트 로더로 제공

  • 사용이 편리하고 윈도우 계열 외에 다른 OS와 멀티 부팅 가능

  • GRUB는 /etc/grub.conf에 설정 사항을 저장하며, 부트 로더를 실행하면 부팅하고자 하는 운영체제 커널 이미지가 메모리에 로드

 

18-5. 실행 레벨에 따른 서비스 실행

  • 부트 로더는 스와퍼라는 pid 0번 프로세스 실행하고, 스와퍼는 다시 pid 1번 init 프로세스를 실행

  • init 프로세스는 다시 /etc/inittab 파일을 읽음

  • inittab 파일은 부팅할 기본 모드를 선택하여 그에 따른 환경을 제공하는 분기점이라 할 수 있음

  • inittab 파일에서는 프로그램 종류에 따라 다른 수준의 실행 레벨을 부여하여 부팅에 필요한 프로그램들을 실행, 일곱 개가 기본

 

[표 1] 실행 레벨

실행 레벨 0 시스템 종료 시에 사용
실행 레벨 1 단일 사용자 모드, 기본적으로 관리자 권한 셸을 얻음, 데몬을 실행하지 않아 기능 제약
실행 레벨 2 NFS를 지원하지 않는 다중 사용자 모드
실행 레벨 3 일반 셸 기반의 인터페이스를 가진 다중 사용자 모드
실행 레벨 4 기본적으로 사용하지 않지만, 사용자가 임의로 정의하여 사용 가능
실행 레벨 5 기본은 실행 레벨 3과 같으나, GUI 환경 지원
실행 레벨 6 재부팅

# Reference

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B3283906872

+ Recent posts