'version detection'에 해당되는 글 1건

  1. 2009.11.06 서비스와 버젼 탐지 Service and Version Detection : Network Mapper - Day 8
IT 이야기2009. 11. 6. 10:15
외부에서 Nmap을 접속하게 되면 25/tcp, 80/tcp, 53/udp가 열려 있음을 알 수 있다. 2,200개의 잘 알려진 포트를 통해 nmap은 mail server(SMTP), webserver(HTTP) 그리고 name server(DNS)등에 대한 응답을 받고 대부분이 정확한 응답값을 보여준다. 하지만 타켁호스트가 포트를 바꿨을 수 있으므로 당신은 전적으로 이것에 의존하면 안된다.

설사 Nmap이 맞다고 해도 SMTP, HTTP, 그리고 DNS에 대한 많은 정보를 얻을 수 있는 것은 아니다. 당신이 당신의 클라이언트나 친구의 호스트를 검색할때 어떠한 메일서버를 쓰는지 혹은 DNS서버가 어떤 것인지가 궁금할 것이다. 어떤 버전의 서버인가를 통해 그 취약점을 알 수 있기 때문이다. 버전의 탐색을 통해 당신은 원하는 정보를 얻을 수 있게 될 것이다.

스캔을 통해 TCP나 UDP의 오픈상태임을 확인후에 버전 탐색을 통해 정확히 해당포트로 어떠한 서비스가 이루어 지는지 알 수 있다. nmap-service-probes 데이타베이스를 통해 다양한 포트의 다양한 서비스 매칭해봄으로 어떠한 서비스가 이루어지고 있는지 짐작할 수 있다. Nmap 은 서비스 프로토콜(예: ftp, ssh, telnet, http)에 대해 정의하고 프로그램 이름(예: ISC BIND, Apache httpd, Solaris telnetd)에 대해 정의하고, 버전넘버, 호스트이름, 장비타입 (예: printer, router)에 대해 정의하고, OS형태에 대해 정의하고, 그 외 자질구레한 것들(X 서버가 열려있는지, SSH의 프로토콜 버전, 또는 KaZaA의 사용자이름)에 대해 정의하게 된다. 물론 Nmap이 모든 정보를 제공하지는 않는다. 만약 Nmap이 OpenSSL과 컴파일되어 있다면, 암호화되어 있는 층 뒤의 서비스에 대해 탐색하게 될 것이다. RPC 서비스가 탐지된다면, 자동으로 RPC grinder(-sR)이 RPC프로그램과 버전을 알기 위하여 탐색되어진다. 몇몇 UDP포트는 탐지가 불가능할때는 open|filtered상태로 남게 된다. 버전탐지가 이루어진다면 open으로 표현될 것이고 그렇지 않다면 open|filtered로 표현될 것이다. TCP에서의 open|filtered도 같은 형태로 진행된다. 주목할 점은 Nmap -A는 다른 어떠한 스캔보다 우선해서 스캔하게 된다. 버전 스캔은 다음에 좀더 자세히 다루게 된다.

Nmap이 응답은 받았지만 데이타베이스에서 매칭되는 자료를 찾지 못할때는 특별한 자료와 주소를 남기게 되므로 차후에 개인적으로 탐지가 가능하다. Nmap은 3,000개의 패턴에 350개의 포르토콜을 매치시킨다.

버전탐지는 다음과 같은 옵션으로 실행된다.

-sV (version detection) : 위에서 나열했던것 같이 버전 탐지 옵션이다.

--allports(모든 포트의 스캔) : 기본으로 Nmap은 TCP 9100포트를 생략하는데 이는 프린터가 사용하므로 HTTP GET 요청이나 SSL session 요청을 많이 이루기 때문이다. 이런 형태는 Exclude를 사용하던가 아니면 --allports를 사용해서 모든 포트를 스캔할 수 도 있다.

--version-intensity (버전스캔의 감도 조절) : 버전스캔 사용시 Nmap은 여러번의 탐색을 보내는데 낮은 수의(낮은감도의) 탐색은 일반적으로 사용되는 포트의 스캔에 적합하고 높은 수일수록 희귀한 서비스의 사용을 찾아내는데 적합하다. 높은 번호일수록 정확하게 찾아낼 확률이 높다. 감도는 0과 9사이의 값을 지정해야 하고 기본값은 7이다. nmap-service-probe ports를 통한 스캔은 위의 감도가 무시된다.

--version-lignt (light모드) : 이 옵션은 --version-intensity 2와 같은 목적으로 사용한다. 이는 light모드를 좀더 빠르게 스캔하지만 정확히 인지하는 면에서는 떨어지는 성능을 보인다.

--version-all (모든 서비스의 스캔) : --version-intensity 9와 같은 걸로 하나하나의 서비스에 대해 스캔하게 된다.

--version-trace(버전스캔 활동의 추적) : 이 옵션을 통해 어떠한 일을 하는지 디버깅 할 수 있다. --packet-trace와 함께 사용할 수 있다.

-sR (RPC 스캔) : 이 옵션은 다른 옵션과 함께 사용 가능하다. open으로 판명된 모든 포트에 대해 SunRPC프로그램 NULL명령어를 보내고 이를 통해 이들이 RPC인지 혹은 RPC이면 어떠한 서비스와 버전을 사용하는지 스캔하게 된다. 그러므로 해당 호스트가 방화벽 뒤에 있다고 해도 rpcinfo -p와 같은 정보를 얻게 된다. RPC스캔에서는 패킷의 변형이 불가능하고 -sV를 통해 자동적으로 실행되게 된다.

원본링크:http://nmap.org/book/man-version-detection.html
Posted by 구텐모르겐