본문 바로가기

[+] Hacking/[-] Challenge Report

SANS Forensic Contest Puzzle #4

밤에 공부하자니 귀찮고 딱히 할것도 없고 해서 SANS 문제를 풀어보았다.

이번 문제는 포트 스캐너 패킷을 분석해서 답변을 달아야 한다.

스캐너 패킷이다 보니 패킷 수가 13625개나 된다.

이번 문제를 신속하게 풀기 위해서는 필터 능력이 있어야 할 듯 보이지만 패킷을 보면 대부분 쓸데없는 패킷들이라 꼭 필요하지도 않은 듯 하다.

그럼 지금부터 하나씩 문제를 보도록 하겠다.

Q1. What was the IP address of Mr. X’s scanner? - Mr. X가 사용하는 스캐너의 IP는 무엇인가?
A1. 10.42.42.253


패킷 파일을 열면 무수히 많은 패킷이 보이는데 처음 스캔을 하려고 SYN 패킷을 보내는 패킷의 IP를 Mr. X의 IP로 추측 할 수 있다.

[그림 1 - Mr. X IP]



Q2. 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:
 - Mr. X가 첫번째로 한 스캔의 타입은 무엇인가?(참고: 수천개의 많은 패킷으로 구성) 한가지 선택:
TCP SYN
TCP ACK
UDP
TCP Connect
TCP XMAS
TCP RST
A2. TCP Connect


패킷을 보면 무수히 많은 포트로 SYN 패킷을 보내고 RST/ACK 패킷을 받는 것을 볼 수 있다. TCP 3way-handshaking에 실패한 패킷들인 것이다. 또 패킷 파일의 후반부를 보면 3way handshaking을 성공하는 것을 볼 수 있기 때문에 전형적인 TCP Connect Scan이다.

[그림 2 - SYN, RST/ACK]

[그림 3 - TCP 3way Handshaking]



Q3. What were the IP addresses of the targets Mr. X discovered? - Mr. X의 목표 대상 IP 주소들은 무엇인가?
A3. 10.42.42.25, 10.42.42.50, 10.42.42.56 

패킷 초반부를 보면 위 답변들의 IP가 나오는데 이 IP말고도 다른 IP가 있는지 확인해 보기 위해 아래와 같이 필터를 걸면 TCP 에서 위 답변들의 IP가 필터된다. 만약 다른 IP가 있다면 Mr. X의 위 답변들 IP 말고 다른 IP에 보내는 패킷이나 받는 패킷이 나올 것이다.

Filter Strings : (ip.dst!=10.42.42.25 && ip.dst!=10.42.42.50 && ip.dst!=10.42.42.56) && (ip.src!=10.42.42.25 && ip.src!=10.42.42.50 && ip.src!=10.42.42.56)

[그림 4 - 필터 결과]

필터 결과를 보면 ICMP 패킷만 보이게 되는데 이 필터 결과만 확인해도 답변의 IP들 말고는 다른 IP는 없는 것을 알 수 있다.



Q4. What was the MAC address of the Apple system he found? - 그(Mr. X)가 찾은 Apple 시스템의 MAC 주소는 무엇인가?
A4. 00:16:cb:92:6e:dc


타겟 IP들의 패킷을 MAC 주소를 보면 되는데 10.42.42.25 IP 주소의 컴퓨터가 Apple 컴퓨터 인것을 확인 할 수 있고 Mac 주소는 답변과 같다.

[그림 5 - Apple 컴퓨터 Mac Address]



Q5. What was the IP address of the Windows system he found? - 그(Mr. X)가 찾은 윈도우 시스템의 IP 주소는 무엇인가?
A5. 10.42.42.50


일단 10.42.42.25는 위 답변에서 Apple 시스템이란 것을 알았으니 제외하면 되고 나머지 두 아이피를 조사해 보면 답변을 찾을 수 있다. 아래와 같이 필터를 하여 각 IP에 대한 패킷들을 보다보면 TCP Connect Scan이 성공하는 패킷을 볼 수 있다.

Filter Strings : ip.src==10.42.42.50 || ip.dst==10.42.42.50

[그림 6 - TCP Connect Scan 성공 패킷]

10.42.42.50 IP에서 열린 port를 확인하면 135번 port인 것을 확인 할 수 있으며 135 port는 윈도우에서 기본적으로 Open 되어 있는 port이다.

[그림 7 - 135번 포트]

이를 통해 10.42.42.50 IP가 윈도우 컴퓨터인 것을 알 수 있다.

* 참고 : 패킷들 중 ICMP 패킷이 있는데 10.42.42.50 IP의 ICMP 패킷을 보면 TTL 값이 128이다. 이를 통해 윈도우로 추측할 수도 있지만 정확하지는 않다.



Q6. What TCP ports were open on the Windows system? (Please list the decimal numbers from lowest to highest.) - 윈도우 시스템에서 열려 있는 TCP port들의 번호는 무엇인가?(해역 불가)
A6. 135(epmap), 139(NetBIOS-ssn)


아래와 같이 대략적으로 필터를 걸면 TCP Connect 성공 패킷들이 보이게 되는데 성공한 port 번호는 위 답변들 포트밖에 없다.

Fileter Strings : (ip.src==10.42.42.50 || ip.dst==10.42.42.50) && tcp.flags.syn && (tcp.flags.syn && tcp.flags.ack) 




모든 질문에 대해 답변을 달아봤다. 하지만 SANS 문제페이지를 보면 한가지 질문이 더 남았는데 이 답변은 꼭 해야 하는 답변이 아닌 답변을 달아 맞춘다면 보너스 점수를 주는 질문이다. 이 질문에 대해서도 답변을 달아보겠다.

X-TRA CREDIT (You don’t have to answer this, but you get super bonus points if you do): What was the name of the tool Mr. X used to port scan? How can you tell? Can you reconstruct the output from the tool, roughly the way Mr. X would have seen it?
 - Mr. X가 사용한 포트스캔 도구의 이름은 무엇인가? 당신은 그것을 어떻게 알았는가? 대략 그 도구의 출력을 복원 할 수 있는가? 

생각해보면 이 질문을 냈을 때는 잘 알려진 툴이었기에 이 질문을 냈을 것이며 도구를 맞추는 것에 초점을 맞춘 질문이라기 보다는 어떻게 맞췄는지 보려는 질문인 것 같았다.
일단 질문에 대한 답변은 Nmap이다. 패킷들을 보면 Nmap의 특성을 볼 수 있다.
예전에 python으로 포트 스캐너 제작을 했을 때 내가 만든 스캐너의 결과와 Nmap의 결과가 동일한지 테스트 하기 위해 여러번 Nmap의 패킷을 본 적이 있었다. Nmap은 일단 ICMP 패킷으로 해당 호스트가 살아있는지 확인하며 TCP Window size가 31337로 일정하다.
일단 내가 아는 스캐너 패턴은 이것밖에 없어 필터해본 결과 해당 패턴들이 모두 패킷에 들어있었다. 
이런 이유로 사용된 도구를 Nmap으로 추측 할 수 있었다.