본문 바로가기

[+] Project/[-] Port Scanner

ACK Scanner

[ACK Scan 원리]
ACK Scan은 포트 Open/Close를 점검하는 것 보다 Stateful 방화벽의 상태를 점검하는 용도로 더 많이 쓰인다.
1. ACK Flag만 설정된 패킷을 대상 시스템에 보낸다.
2. port의 Open/Close 여부 상관 없이 RST 패킷이 오게 되는데 이때는 Unfiltered 상태이다.
3. 또 RST 패킷이 오지 않거나 ICMP 패킷이 오게 되면 Filtered 상태이다. 


방화벽이 설정되어 있는 Win XP SP2 시스템을 상대로 스캔을 시도 하였다.

아래는 방화벽이 설정되어 있는 모습이다.

  [그림 1 - 대상 시스템의 방화벽이 설정되어 있는 모습] 

처음에는 내가 작성한 스크립트가 정상적으로 작동하지 않는 듯 하여 삽질을 했지만 nmap과 비교해본 결과 정상적으로 작동하고 있었다.

아래 이미지는 nmap으로 대상 시스템을 스캔한 결과이다. 

[그림 2 - nmap 스캔 결과]

아래는 내가 코딩한 스크립트 결과이다.(한가지 버그가 있다. 아래에서 설명)
 

[그림 3 - ack.py라는 내가 코딩한 스크립트의 스캔 결과]

nmap과 스크립트의 결과가 동일한 것을 볼 수 있다. 

그런데 한가지 문제점이 있다.

스크립트가 모든 스캔을 끝마치고도 종료를 하지 않는다.

실행시간을 체크해 sys.exit()를 불러오기도 하고, 마지막 port를 체크해 sys.exit()를 불러오기도 하고 별의별 방법을 다 써봤지만 종료가 되지 않는다.

방화벽에 필터되어 응답이 오지 않는것에 대해 무한정 기다리는 것인데, 코딩이 잘못된것이 아니고 scapy 모듈자체에 문제가 있는 것 같다.

아무래도 scapy 모듈을 손봐야 할 것 같다... ㅠㅠ 

'[+] Project > [-] Port Scanner' 카테고리의 다른 글

NULL Scanner  (0) 2011.12.19
SYN Scanner  (0) 2011.12.16
프로젝트 개요  (0) 2011.12.15