[NULL Scan 원리]
1. TCP Flag를 NULL로 하여(아무것도 설정하지 않음) 대상 시스템으로 전송
2. 응답이 없으면 Open이나 Filtered 상태이다.
3. RST/ACK 패킷이 온다면 확실하게 Closed 상태이다.

해당 스캔 기술은 정확히 포트의 Open 상태를 점검하지 못한다. 



이번 스크립트도 이전 스크립트와 마찬가지로 방화벽 기능이 On 상태에서 진행되었다.

  [그림 1 - 대상 시스템의 방화벽 설정 화면] 

아래는 nmap의 대상 시스템 스캔 결과이다.

  [그림 2 - nmap의 대상 시스템 스캔 결과]

아무것도 잡아내지 못하는것을 볼 수 있다

아래는 내가 코딩한 스크립트의 결과이다.

[그림 3 - 내가 작성한 스크립트 결과]
 
스크립트의 결과가 들어있는 txt 파일을 보니 아무것도 들어있지 않다.

이번에도 마찬가지로 scapy 모듈문제인지 내 코딩이 문제인지 스크립트가 무한동작하는 현상이 나타났다.

혹시나 해서 윈도 기본방화벽은 stateful 방화벽의 일종이라고 본다고 하여 내 패킷이 정상적인 연결을 하는지 모니터링 하는것이 아닌가 하고 RST 패킷을 보내 강제로 접속을 끊어보았는데도 이상현상은 계속 되었다.

혹시 이 문제의 해결방법을 아시면 제발 답변좀 .... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

NULL 스캔과 FIN, XMAS 스캔은 방식이 같기 때문에 따로 만들어야 할지 고민이다..(Flag만 바꿔주면 되는거라서...) 
저작자 표시 비영리 변경 금지
신고

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

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

[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
ACK Scanner  (2) 2011.12.18
SYN Scanner  (0) 2011.12.16
프로젝트 개요  (0) 2011.12.15
  1. 김형락 2012.09.26 17:49 신고

    님 스캔하는 소스좀 알고 싶은데 보내주실수 있나용???

    koliok@naver.com 으로 보내주세요

    • Favicon of http://maj3sty.tistory.com BlogIcon MaJ3stY 2012.10.07 16:12 신고

      죄송합니다. 공개할 소스였으면 벌써 공개하지 않았을까요?! ㅎ

[SYN Scan 원리]
1. SYN flag를 설정하고, 대상 호스트:포트로 전송
2. 해당 포트가 닫혀있다면, RST/ACK 패킷을 전송해옴
3. 해당 포트가 열려있다면, SYN/ACK 패킷을 전송해옴

해당 스크립트 구현은 scapy 네트워크 모듈로 구현 하였음. 


아래 이미지는 TCP 프로토콜로 1000번 포트까지 스캔한 결과이다.

[그림 1 - 포트 스캔 결과]

아래 이미지는 스캔 대상 서버의 포트 개방 현황이다.

 

[그림 2 - 스캔 대상 컴퓨터의 개방된 포트 현황]

두 이미지를 살펴보면 스캔 결과가 올바르게 나오는 것을 확인 할 수 있다.

아래 이미지는 포트스캔 패킷 캡쳐 화면이다.

 

[그림 3 - 포트 스캔 패킷 캡쳐 화면]

해당 스크립트는 출발지 포트를 랜덤으로 설정하였기에 포트번호가 모두 다른 것이며, SYN 패킷을 보내고 닫혀 있는 포트에 대해서는 RST/ACK 패킷을 받는 것을 볼 수 있다. 

저작자 표시 비영리 변경 금지
신고

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

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

1. 개요
--> SIS 가이드라인을 공부 중 nmap 스캐너에 대한 부분이 나와 각 스캔의 특징들을 공부하였다.
      하지만 지금까지 이러한 스캔과 스캐너 프로그램들이 있는 줄만 알았지, 어떠한 식으로 FIN 패킷등을 만들어 보내는지       몰랐다. 일반적으로 socket 프로그래밍을 할때에는 TCP/UDP 패킷만 간단하게 생성해 프로그래밍 하여 raw socket         의 존재를 알지 못하였다. 그래서 이번 SIS 시험이 끝나고 스캐너를 만들기로 결심한 것이다.

2. 기능
--> 가이드라인에 있는 스캔종류별로 제작(희망사항)

3. 제작언어 : Python(요즘 어떠한 프로그램이든지 Python으로 제작하려고 노력 중)

4. 기간 : 따로 정해두지 않고 하려 함(가능하다면 복학전 까지)

5. 배포여부 : X(아직까지 완성 자신이 없기 때문에)


저작자 표시 비영리 변경 금지
신고

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

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

+ Recent posts