9. Hash Analysis
9-1. Hash 함수
- 임의의 메시지를 입력 받아 고정된 사이즈의 결과값을 출력한다. 고정된 사이즈는 어떤 알고리즘을 사용하느냐에 따라 달라짐 MD5는 128비트이다.
- h=H(M) : Hash value 또는 Message Digest(메시지 요약)를 사용하는
이유는 대체로 메시지 사이즈보다 Hash 사이즈가 작고, 동일한 메시지에 대해 항상 같은 결과가 나오기 때문이다.
- h가 주어졌을 때 메시지 M의 내용이나 M과 관련된 어떠한 정보도 계산해 내거나 추출할 수 없는 단방향성을 지니고 있다. 즉, 역함수가 없다.
- Collision-resistance(메시지는 다른데 결과값이 같은 경우)는 거의 없다.
eg. MD5) 1 / 340,282,366,920,938,463,463,374,607,431,768,211,456
9-2. Digital Forensic 에서 Hash 함수의 용도
- 증거의 무결성을 검증하기 위해 사용한다.
디지털 증거는 조금이라도 조작되었을 경우 크게 다른 결과를 가져올 수 있으므로 무결성을 검증하는 것이 매우 중요하다.
9-3. Hash 분석의 방식
① Negative Hash analysis
- 의의
- Known-good hash set을 이용하는 hash 분석 방법
- 증거이미지에 포함된 파일의 hash값을 모두 발생
- Known-good hash set과 비교하여 매칭되는 파일을 조사 목록에서 제거
② Positive Hash analysis
- 의의
- Known-bad hash set을 이용하는 hash 분석 방법
- 증거이미지에 포함된 파일의 hash값을 모두 발생
- Known-bad hash set과 비교하여 매칭되는 파일을 모두 조사
9-4. Hash set
① 의의 : 선택한 파일의 해쉬값을 모아놓은 DB
② 종류
· 정상적인 파일의 hash 값 집합
· 조사할 필요가 없는 파일의 hash값의 Data Base
· OS의 버전이 다양하기 때문에 만들기 힘들다.
· c.f) NSRL(National Software Reference Library) : 미국의 NIST 산하에서 프로젝트로 만든 known-good hash set으로서, 우리나라 환경에는 잘 맞지 않지만 매우 유용하게 사용될 수 있다. 우리나라도 환경에 맞는 known-good hash set이 필요하다. (참조 : http://www.nsrl.nist.gov/)
ii. Known-bad Hash set
· 해킹에 사용된 툴, 악성코드 등 조사할 필요가 있는 파일의 hash값의 Data Base
9-5. Empty파일(size가 0인 파일) 제거
- 컴퓨터 상에는 size가 0인 파일이 많은데, 이는 특정 파일이 특정 프로그램의 존재여부와 관련된 경우와 같이 조사가 필요한 특별한 경우가 아니면 조사할 필요가 없다.
- Encase는 기본적으로 비어있는 파일에 대한 Hash값을 가지고 있다.
- Hash 분석을 하면 기본적으로 Hash set에서 Empty file으로 분류한다. Category는 known으로 분류되어 있다.
- c.f) Size가 0인 파일 만들기 : (Windows) Fsutil file createnew [파일명] [size]
(Linux) touch [파일명]
9-6. Hash set 생성 실습 (Hash set은 생성 후 Rebuild 필요)
① View - hash set 에서 hash sets 탭을 만든다.
② Cases entry에서 해시 값 만들 파일들을 선택한 후 Search 기능 이용하여 hash값 만들어낸다.
// Selected items only : 선택된 파일만
Compute hash value : hash값 생성
// 다음과 같이 선택된 파일에 한해서 Hash Value가 도출된 것을 볼 수 있다.
③ Hash set 탭에서 New 기능을 통해 Hash set 추가
(도출된 Hash값을 Known으로 등록)
- New hash set에서 Category는 Notable, Known 두 가지만 사용하는 것이 좋다. 이는 Guidance 社의 권고사항으로, Enscript가 이 두 가지 Hash set을 가정하고 작성된 것이 많기 때문에 이를 활용하기 위함이다.
ii. Known : Known-good Hash set
Notable : Known-bad Hash set
// Hash Set이 만들어졌다.
Encase가 설치된 폴더의 Hash Sets 폴더에 저장되며, 복사 가능하다.
④ Rebuild 필요
Hash set 생성 후 당장은 사용이 안 된다. 해당 Hash set을 체크한 후 Rebuild 하거나(우클릭- Rebuild Library) 다시 껐다 켜야 한다.
9-7. Hash set을 이용한 조사 실습 (Conditions 활용)
① 필요한 Hash set 선택 후, Search- Compute hash value 체크 -> Search!
② 우측 하단의 필터 pane을 이용하여 조사 파일의 양을 줄일 수 있다.
예를 들어, Hash category가 known인 것은 제거할 수 있다.
Condition : 해당 조건에 맞는 데이터만 보는 것이 가능하다.
(Enscript로 이루어짐. C++ 문법과 유사함)
③ Known Files 는 제외하고 필터링한 결과
④ Query 버튼을 누르면 조건이 적용된다.
선택적 적용은 Display 탭에서 체크한다.
⑤ 참고 : Hash 카테고리 Known 인 파일을 제외시키는 Condition 만들기
i. New Condition (Name : Remove Known Files)
ii. 함수 추가 New
(Properties : Hash Category, Operator : equal to, Value : Known)
iii. Not 적용
iv. 직접 입력하여 생성된 Condition
v. 이를 Run 해보면, Known Files는 제외되는 것을 볼 수 있다.
// 적용 전
// 적용 후 : Known Files 가 보이지 않음