================================


      * 포트 스캔이란 ?


================================



– 포트스캔이란 말그대로 해당 호스트에서 어떤 포트가 열려있는지 스캔해보는 것이다.
  스캔하는 방법에는 수많은 방법이 있으며, 그중엔 대상호스트에 로그기록이 남지 않는
  Stelth 스캐닝도 있다. 포트스캔을 통해 얻은 정보는 해커에게 유용할 수 있다.
  어느 포트가 열려있는지에 대한 정보는 곧 어느 서비스가 활성화 되어 있는지,
  어느 포트로 침입해야 하는지에 대한 기초 정보를 제공하기 때문이다. 때문에
  포트스캔은 불법이며, 함부로 스캐닝을 해서는 안된다.
  이러한 포트스캐닝은 자신의 서버 취약점을 진단하기 위해서도 사용할 수 있다.
  불필요한 포트가 열려있는지 늘 점검해 보아야 할 것이다.


  1. scan 의 종류

사용자 삽입 이미지



1. Sweeps


     Sweep 이라는 것은 돌아본다는 말그대로 해당 네트워크를 돌면서 살아있는 호스트,포트를 찾는 것을 의미한다.



   1) ICMP ECHO (ping)


           –  ICMP 를 이용한 스캐닝으로, ICMP ECHO( type 8 ) 을 타겟 호스트에 보내 ICMP Reply (type 0) 을 보내면 살아있는  호스트로 판단한다(ping) . ping 은 널리 쓰이고 있는 네트워크 점검용 프로그램이며, 기본적으로 대부분의 OS 에 설치되어 있다. 하지만 호스트에 일일이 ping 을 해보고 기다려야 하므로 거대한 네트워크에 사용하기에는 무리가 있으며,  소규모의 C 클래스 정도에 사용할 수 있다. fping 은 이를 RR(Round Robin)방식으로 ping 을 하여 기존의 ping 보다 시간을 단축시킬 수 있으며, 윈도우 계열에서는 대표적으로 pinger 가 있다. 또한 강력한 스캐닝 툴인 nmap 을 이용할 수 있다.                   


                  ex) nmap -sP 192.168.7.0/24               


               이와 같은 명령으로 해당 네트워크의 서브넷 구조와 살아있는 호스트에 대한 정보를 얻을 수 있으며, 이것은해커에게 아주 유용한 정보가 될 수 있다. 이를 방지하기 위해서는 방화벽, 라우터 상에서 패킷을 필터링하는 방법이 있다.


                  이미 많은 사이트에서 echo 를 허용하지 않도록 설정되어 있다.                 



   2) Non-ECHO ICMP



           – ping 이 기본적으로 echo (type 8) 을 이용하므로 방화벽에서도 주로 echo 만을 필터링 하는 경우가 많다.


                 이런때 ICMP 의 TIME STAMP(type 13), ADDRESS MASK REQUEST(type 17) 를 이용할 수 있다.


                 하지만 이 경우 쉽게 관리자에 의해 발견될 수 있고, 이 트래픽 또한 방화벽에 의해 차단될 수 있다.




    3) TCP Sweep


  


           – TCP 의 3-way  handshake 연결 절차를 이용하는 것으로, ACK 나 SYN 을 보낸다.


                 Sweep에 사용할 포트는 대부분의 방화벽에서 허용될 수 있는 21,22,23,25,80 번 포트를 주로 이용한다.


                 



    4) UDP Sweep



           – UDP 패킷을 타겟 호스트에 보내 UDP포트 의 ICMP PORT UNREACHABLE 을 이용한다. UNREACHABLE 메시지를


                 받지 못하면 해당 포트가 열려있다고 판단하게 된다. 하지만 이러한 방법은 100%신뢰할 수 없다.


                 라우터, 파이어월에서 UDP 패킷을 drop 할 수 있으며, 정상적인 UDP 서비스도 응답을 하지 않는 경우가 많기 때문이다.



     




2. Open Scan


   


       Open Scan 은 완전한 연결을 하는 스캔으로서, 스캔결과의 신뢰성은 매우 높지만 정상적인 3-way handshake 를 모두 수행하


       기 때문에 타겟 호스트에 로그가 남으며 탐지되기도 쉽다. 




     1)  TCP connection



             – TCP 의 3-way handshake 를 이용해 완전한 연결을 한다. 확실한 결과를 얻을 수 있지만 당연히 로그 기록이 남게 된다.
사용자 삽입 이미지

2) Reverse ident

           – 정상적인 tcp 3 handshake 이후 추가로 reverse ident query를 한다. 이것은 해당 포트의 실행권한과 uid 를 알아내기 위함이다.
사용자 삽입 이미지



 3. Half Scan



1) SYN TCP flag


 


           – SYN 플래그를 보내 SYN/ACK 가 오는 것을 확인해 포트가 열려있는 것만 확인한 후 정상적인 ACK 가 아닌 RST 를


                보내 연결을 끊어버린다. 정상적인 연결이 아니므로 타겟 호스트에 로그는 남지 않게 된다.


                하지만 이런 스텔스 기법은 완전한것이 아니고 라우터나 IDS 등에 의해 쉽게 발견될 수 있으므로 다른 스텔스 스캔을


                사용하는 것이 좋다.  Half Scan 은 어느정도 로깅을 피할 수 있으나 raw socket 접근이 필요하므로 루트 권한이 있어야


                한다.
사용자 삽입 이미지


2) IP ID Header TCP Scanning


                 – IP ID Header TCP Scanning 은  Attacker 와 Target 말고도 중간의 dumb  호스트가 필요하다.


                  


               1. Attacker 는 dumb 에 연속적으로 핑을 보낸다.



               2. IP 를 dumb 의 IP로 spoof 하여 Target 에 syn 패킷을 보낸다.



                 – 열린 포트일 경우 target 은 dumb 에게 syn/ack 를 보낼 것이고, dumb 는 target 에게  rst 로 응답할 것이다.


                 – 닫힌 포트일 경우 target 은 dumb 에게 rst/ack 를 보내고, dumb 는 아무런 응답을 하지 않는다.



               3. dumb 가 Attacker 에게 보내는 핑의 ID 필드를 관찰한다.


                 


                 – 열린 포트였을 경우 ID 필드가 증가한다.


                 – 닫힌 포트였을 경우 ID 필드가 계속 1이다.






  4. Stealth Scan



 1) Inverse TCP flag scanning

포트스캔

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다