Puzzle #4: The Curious Mr. X

2024. 8. 9. 00:37security/Forensics

https://forensicscontest.com/2010/02/03/puzzle-4-the-curious-mr-x

 

Puzzle #4: The Curious Mr. X – Network Forensics Puzzle Contest

While a fugitive in Mexico, Mr. X remotely infiltrates the Arctic Nuclear Fusion Research Facility’s (ANFRF) lab subnet over the Interwebs. Virtually inside the facility (pivoting through a compromised system), he conducts some noisy network reconnaissan

forensicscontest.com

 

오늘은 퍼즐4를 풀어보았다. 이번에도 pcap 파일을 분석하는 문제이다. Mr.X의 활동에 대해 알아내는 것이 목표인 문제이다. Wireshark를 통해 열어보았는데, 이전 문제들과 다르게 길이도 매우 길고, TCP 스트림 따라가기를 봐도 별 내용을 찾을 수 없었다.

 

문제를 보니 2번에 포트 스캔에 관한 질문이 있었다. 그래서 포트 스캐닝에 대해 먼저 정리해보겠다.

 

포트 스캐닝이란 대상 호스트에 연결, 침입 하기 전에 대상 호스트에 어떤 포트가 활성화 되어있는지 확인하는 기법이다.

 

TCP 표준이 정해져있다.

1. 닫힌 포트로 RST 이외의 패킷을 수신 → RST 패킷으로 응답(RST+ACK)

2. 열린 포트로 SYN, ACK, RST 외의 패킷을 수신한 경우, 이를 폐기하고 응답하지 않음

 

 

TCP Connect 스캔 : 일반 사용자 권한으로 connect 시스템 콜을 이용해 정상적 TCP 연결 과정을 수행하여 스캔하는 방식

일반적인 3 way handshaking 연결이다.

- 대상 호스트에 직접 연결되어 시스템 로그에 스캔한 흔적이 남음

- 포트가 닫힌 경우엔 TCP 표준에 따라 대상 호스트로부터 RST+ACK가 온다

 

TCP SYN 스캔 : 관리자 권한으로 TCP 패킷에서 헤더부분의 제어비트를 조작 후, 3 way handshaking을 완전히 수행하지 않는 TCP 포트 스캔이다.

- TCP Connect 스캔과 다르게 스텔스 스캔에 해당한다(TCP 세션이 완전히 성립하지 않은 상태에서 대상 시스템에 로그가 남지 않는다)

- 열린 포트에서 SYN를 보낸후 SYN+ACK가 오면 RST를 보낸다

- 닫힌 포트에서 SYN를 보내면 RST+ACK가 돌아온다

 

TCP ACK 스캔 : 대상이 포트가 열린거에 대한 판단이 아닌 방화벽 룰셋(필터링 정책)을 알아내기 위한 스캔 방식

- 대상 포트로 ACK를 보냄

- 필터링이 된다면 응답이 없고, 필터링이 안된다면 RST가 돌아온다

 

TCP Xmas 스캔 : 스텔스 스캔 방식 중 하나로, 제어비트 URG, PSH, FIN 제어비트를 설정하여 스캔 수행

- 열린 포트에서 URG, PSH, FIN을 보내면 응답이 오지 않음

- 닫힌 포트에서 URG, PSH, FIN을 보내면 RST+ACK가 돌아옴

 

UDP 스캔 : 대상의 UDP 포트가 열린것을 판단하는 스캔

- UDP 포트가 열렸다면 UDP패킷을 보냈을 대 응답이 없거나 UDP 응답이 온다

- UDP 포트가 닫혔다면 ICMP Unreachable이 뜬다.

 

TCP RST 스캔 : 비연결형 스캔 방식으로 RST 요청을 보내어 스캔

- 열린 포트에서 RST를 보내면 RST 신호가 오지 않는다

- 닫힌 포트에서 RST를 보내면 RST 신호가 온다

 

우선 pcap 파일을 살펴보면 10.42.42.253에서 계속해서 패킷을 보내는 것을 확인할 수 있고, 나머지는 보낸 후에 돌아오는 응답임을 확인할 수 있다.

 

1. What was the IP address of Mr. X’s scanner?

→ 10.42.42.253

 

그 다음 처음으로 수행된 스캐닝에 대해 알아야 하는데, SYN가 온 경우로 필터링하여 찾아보았다.

 

필터링하는 방법은 아무 패킷이나 선택하여 우클릭을 하면 필터로 적용을 할 수 있는데 필터링하는 것이 다음과 같은 명령어로 이루어진다.

 

 

그래서 처음으로 SYN+ACK가 있는 곳을 찾기위해 (tcp.flags.syn == True) && (tcp.flags.ack == True)를 검색해보았더니

 

이 부분이 처음으로 SYN+ACK 응답이 온 부분이다. IP가 10.42.42.50인 호스트가 SYN를 받고, SYN+ACK를 응답으로 보낸 후 다시 Mr.X의 스캐너가 ACK를 보내는 것을 확인할 수 있다. 이는 우리가 아는 3 way handshaking 방법이다.

 

2. For the FIRST port scan that Mr. X conducted, what type of port scan was it? (Note: the scan consisted of many thousands of packets.) Pick one:

  • TCP SYN
  • TCP ACK
  • UDP
  • TCP Connect
  • TCP XMAS
  • TCP RST 

→ TCP Connect

 

그리고 통계 > 대화 > IPv4를 들어가면 패킷을 주고받은 IP를 확인할 수 있다.

 

3. What were the IP addresses of the targets Mr. X discovered?

10.42.42.25, 10.42.42.50, 10.42.42.56

 

 

(ip.src == 10.42.42.nn || ip.dst == 10.42.42.nn) && tcp.flags.reset == False로 필터링하면서 살펴보았다. nn에는 25, 50, 56을 각각 넣으면서 찾아보았다. 그러다 25일때 아래와 같은 내용을 찾을 수 있었고, 이것이 apple system임을 알 수 있었다.

 

4. What was the MAC address of the Apple system he found?

→ 00:16:CB:92:6E:DC

 

이후 문제들은 대상 호스트의 OS를 알아내야 한다. 이를 알아내기 위해선 ICMP를 살펴보아야 한다. 그 중에서도 OS에 따라 TTL(Time To Live)값이 정해진다고 한다. TTL이란 네트워크에서 데이터의 유효기간을 나타내는 방법이다. 패킷이 이동함에 따라 TTL값을 줄이면서 패킷이 무한 순환하는 것을 막아주는 역할을 한다. 아래는 TTL 값에 따른 OS 분류이다.

64: Linux

128: Windows

256: Cisco

 

_ws.col.protocol == "ICMP"로 필터링하였더니 10.42.42.50은 Windows 시스템임을 알 수 있었다.

 

5. What was the IP address of the Windows system he found?

10.42.42.50

 

마지막으로 (ip.src == 10.42.42.50 && ip.dst == 10.42.42.253) && tcp.flags.reset == false 으로 필터링하면 열려있는 TCP 포트를 확인할 수 있다.

 

6. What TCP ports were open on the Windows system? (Please list the decimal numbers from lowest to highest.)

→ 135, 139

 

Extra 문제도 있는데, 도전해봤지만 모르겠어서 나중에 다시 해볼 계획이다.

'security > Forensics' 카테고리의 다른 글

Puzzle #3: Ann's AppleTV  (0) 2024.08.01
Puzzle #2: Ann Skips Bail  (0) 2024.07.31
Puzzle #1: Ann's Bad AIM  (0) 2024.07.31
프로토콜 개념 정리(TCP, UDP, IP, HTTP 등)  (0) 2024.07.26
zip 파일 구조 분석, zipper 문제풀이  (2) 2024.07.20