IT 이야기2009. 9. 15. 08:22
네트웍을 감독하는데 있어서 가장 먼저 실행되어야 할 것은 외부에 관심대상이 될만한 호스트를 두지 않는 것이다. 모든 아이피에 대한 모든 포트를 검색한다는 것은 무의미하다. 물론 목적에 따라서 그 관심 대상이 달라지기는 하지만, 관리자의 입장에서는 제공하는 서비스에 관심이 있을것이고 네트웍 감독자는 아이피에 해당되는 장비들에 관심이 있을 것이다. 일반적으로 관리자는 ICMP Ping을 통한 로컬 네트웍에 관심이 있겠지만 외부검시관들(external penetration tester)은 방화벽을 피할수 있는 다양한 방법에 관심이 있을 것이다.



호스트 컴퓨터 탐색의 방법은 너무 다양해서 Nmap은 사용자가 커스터마이즈 사용을 제공하고 있다. 호스트 탐색은 ping이라고도 불리기도 하지만 이것은 ICMP echo request 보다는 훨씬 높은단계의 기술을 요구한다. 사용자들은 -sL 옵션을 통해 ping을 생략할수도 있고 -PN 옵션을 통해 작동을 제한 할수도 있고, 또는 임의적인 다양한 multi-port TCP SYN/ACK, UDP, SCTP,INIT, ICMP probe등을 사용할 수도 있다. 이러한 무작위적인 서치는 해당 아이피의 호스트에 active된 장비들에 대한 응답을 받기 위해서이다. 일반적으로 IP의 일부만 사용되어지는게 대부분이고, 특히나 10.0.0.0/8과 같은 서치에서 보면 알 수 있다. 필자의 회사에서도 10.0.0.0/8은 16백만개의 아이피를 사용할 수 있지만 검색결과 천여개의 IP만 사용되어짐을 알 수 있었다. 호스트 컴퓨터 탐색은 이렇게 간혈적으로 사용되어지는 IP들 중에서 사용되어지는 호스트를 검색해준다.

만약 호스트 검색 옵션이 사용되지 않으면 Nmap은 ICMP echo request를 보내고, TCP SYN패킷을 443포트로 보내고, 포트 80번에는 TCP ACK패킷을 보내고 ICMP timestamp request를 보낸다. 이러한 명령어는 -PE, -PS443 -PA80 -pp 옵션이다. 예외적으로 ARP스캔은 로컬 이더넷 네트웍에 사용된다. 범용적 Unix shell사용자들은 기본적으로 80포트와 443포트로 SYN패킷을 보낸다. 이러한 호스트 검색은 로컬네트웍에서는 충분할지 몰라도 보안감사를 위해서라면 좀 더 포괄적인 검색이 필요하다.

-P* 옵션으로 ping 타입을 정할수 있고 다양한 TCP ports/flags와 ICMP 코드를 통해서 방화벽을 뚫을 수 있다. 또한 ARP discovery (-PR)은 기본으로 설정되어 있는데 이는 -p*옵션보다 훨씬 빠르고 효과적이다.

기본적으로 Nmap은 호스트 검색이 시행되고 그 후에 온라인으로 되어 있는 컴퓨터들에 대해 포트검색이 실행된다. -sP옵션을 통해 호스트 검색을 어떻게 하는지 알 수 있고, -PN을 통해 호스트 검색을 생략하고 바로 포트검색을 할 수 있다. 다음과 같은 옵션들은 호스트 검색에 사용되어지는 대표적인 값이다.

-sL (리스트 스캔) 해당네트웍에서 간단한 호스트 정보만을 제공하고 타켓 호스트에는 패킷을 보내지 않는다. 기본적으로 Nmap은 호스트의 이름을 알기 위해 reverse-DNS를 내보낸다. 때로는 간단하게 정리된 정보가 더 유용하게 사용되어 지기도 한다. 예를 들어 fw.chi라는 시카고에 있는 파이어월에 모든 IP의 포트에 대해 스캔할수도 있지만 해당 리스트 스캔을 통해 목표 호스트의 액티브 여부를 알 수 있다. 만약 당신이 알지 못하는 호스트 이름이 나온다면 당신은 해당 호스트에 대해 좀더 조사해볼 가치를 느낄 것이다.

리스트 스캔이 목표 호스트에 대한 간략한 정보를 나타내지만 포트스캔, OS검색과 같은 높은 레벨의 스캔은 할 수 없고 ping스캔도 함께 사용될 수 없다. 만약 ping스캔은 적용시키고 싶지 않다면 -PN 옵션에 대해 자세히 읽어보라

-sP (핑스캔) 이 옵션은 Nmap을 통해 호스트를 탐색하고 액티브한 호스트의 리스트를 출력하는 값이다. traceroute나 NSE host script와 같은 옵션들도 함께 상용 가능하지만 그 이상은 아니다. 이것은 리스트 스캔과 같이 사용되기도 하지만 리스트 스캔보다는 좀더 직관적으로 출력된다. 이것은 타겟 호스트에게 의심을 줄만한 검색은 되도록 하지 않으면서 스캔을 한다. 공격자에게는 어떠한 호스트가 살아 있는가가 중요하지 모든 호스트의 이름과 IP가 중요한 것은 아니다.

시스템 관리자들도 이 옵션을 가치있게 사용될 수 있는데 살아있는 호스트의 검색이나 서버나 네트웍의 가용성에 대해 알아볼 수도 있다. 이것은 종종 ping sweep이라 불리기도 하고 pinging the broadcast보다는 좀더 유용하게 사용될수 있는데 보통의 호스트들은 broadcast에 대해서는 응답을 하지 않기 때문이다.

-sP옵션은 ICMP echo request, 443포트를 통해 TCP SYN을 보내고 80포트를 통해 TCP ACK를 보내고, ICMP timestam request를 기본으로 보낸다. 권한이 없는 사용자가 해당 옵션을 사용할때는 SYN패킷만 타겟 포트 80과 443에 보내지게 된다. 권한이 있는 사용자가 핑스캔으로 로컬 네트웍을 스캔할때는 --send-ip를 설정하지 않는 이상 ARP request를 보내게 된다. 활용적인면에서 핑스캔은 다른 탐색옵션과 함께 사용될수 있다. 어떠한 탐색타입과 옵션이 사용된다면 기본으로 적용된 옵션에 덧붙여 출력된다. 강력한 방화벽을 사용하는 네트웍을 탐색할때는 이 옵션이 효과적이다. 그렇지 않다면 방화벽이 응답하지 않음으로 호스트들은 스캔에서 많이 누락되어질 것이다.

-PN부터는 내일 다시 ...

원본링크:http://nmap.org/book/man-host-discovery.html
Posted by 구텐모르겐
IT 이야기2009. 8. 28. 07:07
nmap웹사이트에 한글로 된 매뉴얼이 없다는 것에 상당히 놀랐다. 기업의 정보는 웹에서 현금화가 가능한 작금의 현실에서, nmap에 대한 인식 부재로 인한 웹파산이라는 기업 신조어 양성을 피하고자 컴을 들었다. 아래부터는 nmap.org에서의 doc을 며칠에 걸쳐 직역하여 보겠다.

nmap은 공개 프로그램으로 네트웍을 탐색하고 감독할수 있는 툴이다. 초기에는 큰 네트웍에서의 스캔을 목적으로 개발되었지만 작은 네트웍에서도 사용가능하다. nmap은 원본 IP패킷을 이용해 어떤 네트웍이 접근 가능한지, 어떤 서비스가 이루어지고 있는지(어플리케이션 이름과 버젼), 어떤 os가 사용되고 있는지, 어떤 형태의 패킷필터나 방화벽이 사용되고 있는지 그리고 다른 모든 특성들에 대한 스캔이 가능하다. nmap은 보통 네트웍 감사를 위해 사용되기도 하지만 보통은 관리자들에게 그들의 인벤토리 작업용, 서비스 업그레이드에 관한 관리, 사용자나 서비스의 모니터 등에 사용된다.

nmap을 통해 스캔된 결과물은 어떤 옵션을 주었느냐에 따라 다른 결과물을 리스트로 출력된다. "Interesting ports table"을 통해 포트넘버, 프로토콜, 서비스 이름, 그리고 상태를 보여주게 된다. 상태는 open, filtered, closed 또는 unfiltered가 있다. open은 해당 컴퓨터의 해당포트가 연결대기중이라는 뜻이다. filtered는 방화벽이 차단했다는 뜻이거나 네트웍상의 방해로 open이나 closed를 알수 없는 상태를 말한다. 포트는 대부분 unfiltered로 구분되지만 nmap이 open인지 closed인지 알수는 없다. nmap은 open|filtered 그리고 closed|filtered라는 복합적인 상태를 보여주기도 하는데 어떤 상태인지 nmap이 구분할수 없을때 보여지는 상태이다. port table은 또한 소프트웨어에 대한 버젼도 보여준다(-so). nmap은 응답되는 포트의 정보를 보여주기 보다는 지원되는 IP프로토콜을 보여준다.

추가적으로 interesting ports table에서는 nmap을 통해 reverse DNS이름, OS추정, 장치 타입, 그리고 MAC어드레스를 구할 수 있다.

전형적인 nmap 스캔 모습은 테이블 15.1과 같다. -A라는 인수만을 사용하여 스캔된 결과이고 이는 OS와 그 버전, script scanning, 빠른 실행을 위한 traceroute -T4, 그리고 두개의 호스트이름을 보여주고 있다.



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