Disk Forensic #23 (서울에 사는 IU가 특정 웹...)

 

디스크 포렌식 23번 문제

 

주어진 문제 파일은 확장자가 존재하지 않아 어떤 유형의 파일인지 알 수 없습니다.

 

파일 유형 정보 확인을 위해 리눅스 환경으로 옮겨서 file 명령어를 사용하여 확인하였습니다.

 

[그림 1] file 명령어 사용

 

file 명령어로 확인한 결과, 7z 알고리즘 압축 파일입니다.

 

확장자를 7z로 지정하고 압축을 풀면 Users 폴더가 생성됩니다.

 

[그림 2] Users 폴더 내용

 

Users 폴더 안에는 All Users, Default 폴더 등 여러 폴더가 존재합니다.

 

이는 윈도우 사용자 폴더 구조와 동일합니다.

 

따라서 문제 파일은 윈도우 운영체제의 사용자 폴더를 압축한 파일임을 알 수 있습니다.

 

문제 지문에서 범인이 SQL Injection 공격을 시도하다가 브라우저가 갑작스럽게 종료됐다고 했습니다.

 

이와 관련된 증거가 존재하는지 확인을 위해 사용자 계정으로 보이는 proneer의 폴더 내 각 브라우저 데이터가 저장되는 폴더를 분석하였습니다.

 

브라우저

데이터 저장 경로

인터넷 익스플로어

C:\Users\[사용자]\AppData\Local(Roaming)\Microsoft\Internet Explorer

파이어폭스

C:\Users\[사용자]\AppData\Local(Roaming)\Mozilla\Firefox

크롬

C:\Users\[사용자]\AppData\Local(Roaming)\Google\Chrome

3개의 브라우저 중, 파이어폭스의 데이터가 저장되는 폴더를 분석하면 sessionstore.js 파일이 존재하는 것을 확인할 수 있습니다.

 

[그림 3] sessionstore.js 파일

 

파일 경로 : C:\Users\proneer\AppData\Roaming\Mozilla\Firefox\Profiles\0751fxbt.default

 

sessionstore.js 파일은 파이어폭스 브라우저가 비정상적으로 종료가 될 때, 그 시점의 상태 정보가 저장되는 파일입니다.

 

만약 범인이 파이어폭스를 사용하다가 비정상적으로 브라우저가 종료 됐으면 이 파일에 공격에 관한 정보가 존재할 것입니다.

 

이번에는 자바스크립트를 해석해주는 웹사이트를 이용해서 파일의 내용을 분석하였습니다.

 

jsonlint : 자바스크립트를 해석해주는 온라인 웹사이트

 

참조 사이트 : https://jsonlint.com/

 

The JSON Validator

JSONLint is the free online validator and reformatter tool for JSON, a lightweight data-interchange format.

jsonlint.com

[그림 4] SQL 쿼리 발견

 

위 화면과 같이 sessionstore.js 파일의 내부 정보를 확인하면 '1_UNI/**/ON_SELECT' 라는 'UNION SELECT' 쿼리를 삽입한 정황을 확인할 수 있습니다.

 

브라우저에 이런 쿼리를 입력하는 것을 볼 때 악의적인 목적으로 입력한 것으로 판단됩니다.

 

Injection value 값을 찾았으니 이제는 브라우저가 종료된 시간을 찾으면 됩니다.

 

[그림 5] 브라우저 종료 시간 정보 발견

 

위 화면과 같이 lastUpdate 변수로 브라우저가 종료된 시간 정보가 인코딩되어 저장된 것을 확인할 수 있습니다.

 

마지막으로 DCODE 프로그램을 사용해서 실제 종료된 시간을 정확하게 확인합니다.

 

Dcode 다운로드 : https://www.digital-detective.net/dcode/

 

DCode™ | Digital Detective

DCode™ is a simple utility for converting the hex and integer values found by investigators during a forensic investigation into readable timestamps.

www.digital-detective.net

[그림 6] 시간 정보 계산

 

Decode Format을 Unix: Numeric Value로 지정해주고, Value to Decode에 lastUpdate 변수 값을 넣고 Decode 버튼을 누르면 위 화면과 같이 날짜와 시간 정보가 실제 시간으로 나타납니다.

 

이제 키 포맷대로 Injection_value와 time을 포맷에 맞게 입력해주면 플래그로 인정되며, 문제를 해결할 수 있습니다.


# Reference

 

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

+ Recent posts