EASY 난이도의 포렌식 문제
sysadmin 으로서 누군가가 USB 를 이용해
중요 정보를 가지고 나간걸 찾아내라고 한다.
문제힌트도 함께 주어진다.
once you find it, "crack" it
잘 기억해 둔다.
문제 파일로는 두개의 파일이 주어진다.
첫번째 파일은 syslog 파일이다.
일부만 가져왔는데
파일 크기가 무려 90만줄이다..
USB를 연결할 때마다
해당 USB의 Product, Manufacturer, SerialNumber 를 로그로 남기는듯 하다.
두번째로 주어지는 파일은 auth.json 파일이다.
이 파일에는 json 형태로
인가된 USB의 Product, Manufacturer, SerialNumber 값을 저장하고 있다.
syslog 에서 식별된 값이 auth.json 에도 들어있어야 인가된 USB 라고 판단하는듯 하다.
이 파일은 30만줄이 넘는다.
이것도 참 문제다 인가된 USB가 30만개가 넘다니..
([a-zA-Z][a-zA-Z][a-zA-Z]).........................................usb.[1-9]-1:
크게 의미없는 작업이긴 하지만
syslog 파일 용량이 너무 커서 조금 정제해줬다.
이렇게 정규식 표현을 이용하면
앞에 날짜와 시간같은 정보들을 모두 날리고
로그파일이 Product, Manufacturer, SerialNumber 로 시작할 수 있게금 바뀐다.
import json
index = 1
with open('auth.json') as json_file:
json_data = json.load(json_file)
f = open('syslog','r')
res = f.readline()
while True:
index += 1
print(index)
res = f.readline()
if "Product:" in res:
tmp = res.split(' ')
ans = tmp[3][:-1]
if ans not in json_data['prod']:
print(ans, 'not found')
break
elif "Manufacturer:" in res:
tmp = res.split(' ')
ans = tmp[3][:-1]
if ans not in json_data['manufact']:
print(ans, 'not found')
break
elif "SerialNumber:" in res:
tmp = res.split(' ')
ans = tmp[3][:-1]
if ans not in json_data['serial']:
print(ans, 'not found')
break
문제푸는 코드는 Python 을 이용해 작성했다.
syslog 파일을 readline() 으로 한줄씩 읽어서
Product:, Manufacturer:, SerialNumber: 라는 단어가 해당 줄에 있을경우
잘라와서 그 값을 ans 라는 변수 저장한다.
그리고 그 값이 json 파일에 있는지 검색하고,
없으면 not found 를 출력한다.
30만줄쯤 가다보면 not found 가 하나 출력된다.
알수없는 값이 포함되어 있는데
맨 처음 힌트인 "crack" 을 기억하자.
출력된 값이 32글자라서 MD5 알고리즘일거라고 생각했다.
온라인 MD5 Decrypt 사이트에서 해당 해시값을 크랙할 수 있다.
크랙해서 나온 값이 플래그이다.
'워게임 > HackTheBox' 카테고리의 다른 글
[HackTheBox] xorxorxor - 암호학 (78) | 2023.04.09 |
---|---|
[HackTheBox] Reminiscent - 포렌식 / Volatility (70) | 2023.04.05 |
[HackTheBox] MarketDump - 포렌식 / Wireshark (42) | 2023.03.21 |
[HackTheBox] Cat - 포렌식 / Android (70) | 2023.03.19 |
[HackTheBox] Digital Cube - 포렌식 / QR 코드 (36) | 2023.03.17 |