CTF/포렌식

[Space Heroes CTF] Netfilx and CTF - 포렌식 / Wireshark / Tshark

SecurityMan 2022. 4. 6. 14:30

 

두번째 네트워크 포렌식 문제이다.

 

제목에 Netfilx가 들어가는데, 넷플릭스랑 무슨 상관이 있는지는 잘 모르겠다.

 

반응형

 

netflix-and-ctf.pcap 라는 이름의 패킷파일이 주어진다.

 

 

Wireshark로 pcap 파일을 열어볼 수 있다.

 

첫번째 문제와 다르게 이번 패킷파일은 패킷 수가 2802개로 조금 많다.

 

어쩔수 없이 코딩을 해야할 듯 하다.

 

패킷파일은 10.10.100.139와 10.10.100.124 간에 오고가는 웹 패킷을 보여준다.

 

POST 메소드를 이용해서 /search/browse 페이지와 /keypress/Lit_* 페이지를 요청한다.

 

keypress 요청 부분을 자세히 보면 Lit_T, Lit_r, Lit_e 이런식으로 맨 끝에있는 문자가 계속 바뀌는데,

 

아마도 이건 키보드에서 T, r, e를 눌렀다는 의미인듯 하다.

 

패킷을 자세히 보기위해서 맨 위에있는 패킷에서 마우스 오른쪽을 누르고

 

Follow - HTTP Stream 을 눌러본다.

 

 

그러면 이렇게 가독성 있게 패킷이 출력이된다.

 

빨간색은 요청 패킷, 파란색은 응답 패킷이다.

 

POST 메소드로 무언가를 전송했지만, 안에 실질적인 데이터는 없다.

 

URL(/keypress/Lit_*) 만 보고 문제를 풀어야할 듯 하다.

 

 

일단 데이터를 추출하기 위해서 tshark를 이용한다.

 

tshark는 Wireshark의 커맨드라인 버전이라고 생각하면 된다.

 

shark는 칼리 리눅스를 설치하면 안에 내장되어 있다.(https://hackingstudypad.tistory.com/58)

 

tshark 명령어로 실행 가능하며

 

-r 옵션으로 불러올 패킷 파일을 지정해준다.

-T 옵션은 텍스트 출력형식을 지정하는데 fields 형식으로 지정해준다.

-e 옵션은 표시하고자 하는 필드를 지정할 수 있다. -T 옵션과 같이 쓰이는데 text 필드를 지정했다.

 

 

필드이름은 Wireshark에서 확인할 수 있다.

 

추출하고 싶은 부분을 선택하면, 프로그램 맨 아래쪽에 저런식으로 필드명이 출력된다.

 

 

패킷 갯수가 2802개로 많으니 출력값을 라다이렉션을 통해 data라는 이름의 파일로 저장한다.

 

 

그러면 data파일에 이렇게 출력값들이 저장되게 된다.

 

이제부터 본격적으로 코딩을 해야한다.

 

f = open('data', 'r')

string = ''

for i in range(1,706):
    line = f.readline()
    if 'keypress' in line:
        line = line
        if '%7B' in line:
            string += '{'
        elif '%7D' in line:
            string += '}'
        else:
            string += line[30:31]
print(string)

 

먼저 open으로 data 파일을 읽기속성(r)로 읽어준다.

 

f.readline()으로 한줄씩 읽어서 line 변수에 저장한다.

 

URL은 /search/browse 와 /keypress/Lit_* 두가지 종류가 있는데

 

/search/browse는 필요없으므로, line 변수에 keypress가 들어있는 경우만 분석한다.

 

 

Lit_* 에서 * 부분에는 a, b, c, e 같은 알파벳만 있는게 아니라 %7B, %7D도 들어있는데

 

이건 URL 인코딩으로 {, } 기호를 의미한다. 적당히 기호로 바꿔 준 뒤에

 

마지막으로 원하는 부분(알파벳)만 출력하기 위해 line[30:31]로 글자를 잘라준다.

 

 

해당 코드를 실행시키면 이렇게 기다란 문자열이 완성되어서 출력되는데,

 

그 사이에 보면 플래그를 찾을 수 있다.

 

Time is the ultimate currency "시간은 궁극의 화폐다" 라는 뜻인데

 

일론 머스크가 트위터에서 언급했다고 한다.

(문제랑 무슨 관련인지는 모르겠다.)

반응형