스마트 가로등을 관리하는 PC가 공격을 당한 후, 특정 권역에 존재하는 여러 스마트 가로등의 신고 사진을 수집하는 IoT 장치의 DB가 변조 되었다는 신고를 받았다. 변조된 DB 파일에서 아래의 정보를 찾아라.
1. 공격자가 은닉한 범죄를 신고한 시간(YYYY-MM-DD HH:MM:SS UTC+0)
2. 공격자가 삭제한 데이터에서 복구한 파일의 MD5 Hash값(소문자)
3. 공격자가 삭제한 데이터에서 찾아볼 수 있는 문자열
FLAG Format : md5(YYYY-MM-DD HH:MM:SS_복구한이미지의MD5해시값_획득한 문자열)
sqlite3 db 파일이 주어진다.
cctv 사진이 담겨있다.
HxD로 열어서 Username을 검색하다 보면
Sharon이라는 DB Browser에서 확인할 수 없었던 이름이 보인다.
이어서 Sharon을 검색해보면 추가적인 데이터들을 더 확인할 수 있다.
삭제된 데이터는 Username=Sharon인 데이터임으로 보여지며, offset을 이용해서 Timestamp와 DOB, Location 값을 뽑아낼 수 있지만, 더 편한 방법도 있다.
sqlite는 page 단위로 데이터가 저장되는데, 이 page들을 bring2lite 도구를 사용하여 파싱할 수 있다.
https://github.com/bring2lite/bring2lite
파싱된 페이지들 중에서 291번을 보면, 삭제된 데이터인 Sharon에 대한 데이터를 확인할 수 있다.
여기서 공격자가 은닉한 범죄를 신고한 시간을 확인할 수 있다.
1489711150 (unix time) = GMT: 2017년 March 17일 Friday AM 12:39:10
하지만 이미지 데이터는 확인할 수 없다. 이미지 데이터가 크기 때문에 한 페이지 안에 다 안들어간다.
그래서 leaf 구조로 연결되어 있는데, 이 삭제되어서 free된 page들을 찾아 연결해주어야 전체 데이터를 복구할 수 있다.
sqlite page를 볼 수 있는 방법은 sqlite page explorer라는 툴을 사용하는 것이다.
https://github.com/siara-cc/sqlite3_page_explorer
앞서 Sharon에 대한 데이터가 291번 페이지부터 시작하는 것을 알고 있으므로, Open Page에 291을 입력해준다.
오른쪽으로 스크롤 쭉 가면 Overflow칸에 Page 266 버튼이 있다.
266페이지는 first freelist trunk page다.
291 -> 266 ~ 291 페이지까지 순서대로 데이터를 연결하면 된다.
그런데 주의할 점은 각 페이지의 첫 4바이트가 다음 페이지 번호를 나타내기 때문에 해당 4바이트는 빼야 한다.
JPG 파일이므로 ff d9 시그니쳐가 나타날 때까지 데이터를 붙여주면 된다.
266번 페이지도 free 되기 전에는 데이터가 가득 차있었을 페이지인데, first freelist trunk page가 되면서 free된 페이지들의 번호로 덮여쓰여졌다.
똑같이 앞 4바이트를 제외하는 것은 똑같은데 그 외에 덮어쓰여진 데이터는 복구가 불가능하다.
c839abe2c76449d472fb8a74e777b38b
2017-03-17 00:39:10_c839abe2c76449d472fb8a74e777b38b_d313t3_cr1m3_3v1d3Nc3
'CTF Write Up' 카테고리의 다른 글
Codegate2023 quals [n³] (0) | 2023.06.26 |
---|---|
2023 핵테온 세종 본선 문제 리뷰 (0) | 2023.05.12 |
PwnMe CTF 2023 Write up (0) | 2023.05.06 |
제8회 BoB 정보보안 CTF(BISC) (5) | 2022.09.09 |
San Diego CTF 2022 Forensics write up (0) | 2022.05.09 |