CTF | wargame

codegate 2012 - forensic 200 (firefox 비정상적인 종료(sessionstore.js), json editor, 타임존(time zone))

nopdata 2017. 3. 30. 01:48
keyword : firefox 비정상적인 종료(sessionstore.js), json editor, 타임존(time zone)


지문을 보면 sql인젝션 했던 기록과 그 시각을 알아내라고 한다. sql인젝션을 날렸다는것은 보통 웹 기록으로 남아있을 것이므로 먼저 웹 브라우져의 기록을 먼저 살펴보도록 한다.
제공된 문제의 파일은 100점 문제와 마찬가지로 Users의 하위 폴더가 제공된다.

단서는 3가지
  1. sql인젝션을 하였다
  2. 웹 브라우저를 사용했었다.
  3. 공격을 할 때 브라우저가 꺼져 버렸다.

해서 계정중 피해 계정으로 보여지는 proneer를 보았다. Appdata\Roaming 하위에 존재하는 웹 브라우저 관련 기록을 파악하였다.
Microsoft\Internet Explorer가 있었고, Mozilla\Firefox가 있었으며 Microsoft\Chrome 가 있었다. Firefoex하위에는 Crash Reports라는 폴더가 존재하였다.
문제의 지문에서 sql injection을 하였을 때, 문제가 발생 하였다고 하였으므로, Crash Resports가 생성된 Firefox를 위주로 보기로 하였다.

이 문제의 출제 의도는 Firefox의 특징 중 비정상적으로 종료가 되는 경우를 대비하여 저장된 시점의 상태를 저장하는 기능이 있다.
이는 물론 Chrome에도 존재한다.(IE는 안쓴지 오래되서 잘 모르겠네..)

Firefox는 비정상 종료 시 현 정보를 SessionStore.js에 저장을 하도록 한다.
이와 관련된 문서는 다음을 참조하면 된다.

Web Browser Session Restore Forensics
 - A valuable record of a user's internet activity for computer forensic examinations

매우 친절하게 사용방법이 있다.
http://braincast.nl/samples/jsoneditor/ 링크에 sessionstore.js파일의 데이터를 넣어주면 다음과 같이 나온다.

json을 자동으로 파싱해서 트리형태로 나타내준다. 보면 tabs에 entries가 있는데 이는 Crash가 터졌을 당시에 tab 목록을 의미한다.
보면 첫번째 entries의 formdata를 보면 union select를 injection하려는 시도가 있었다는 것을 알 수 있다. 대상 url는 forensic-proof.com. 출제자의 개인 블로그이다.
때문에 injection_value의 값은 '1_UNI/**/ON_SELECT' 가 된다.

이제 시간을 알아내야 한다.
시간의 경우 다음을 보면 된다.

session정보의 lastUpdate를 확인하면 된다. 세션의 마지막 갱신기록은 Crash가 터지기 직전이기 때문에 lastUpdate시간이 injection시간이 되는 것이다.
time zone을 변환하는 것은 TimeLord라는 툴을 이용하였다.

해서 UTC+09:00을 적용한 시간 2012-02-12 10:23:17이 injection을 한 시간이라고 할 수 있다.

정답 형식은 injection_value|YYYY-MM-DDThh:mm:ssTZD라고 되어 있으므로 이 형태에 맞춰주면 된다.

Answer : 1_UNI/**/ON_SELECT|2012-02-12T10:23:17+09:00


+++ 외국의 경우 firefox를 주로 사용하지만 한국의 경우 요즘 IE와 Chrome이 주류를 이루고 있으므로 이 브라우저들에 대한 session restore에 관한 이론을 알아 두어야 한다.

브라우저별 데이터 저장 위치
IE : User\Appdata\Local(Roaming)\Microsoft\Internet Explorer

Chrome : User\Appdata\Local(Roaming)\Google\Chrome

Firefox : User\Appdata\Local(Roaming)\Mozilla\Firefox