웹사이트 검색

Nmap - Nmap의 스위치 및 스캔 유형


Nmap은 아마도 Pentester와 Hacker 사이에서 가장 유명한 정찰 도구일 것입니다. 본질적으로 네트워크를 스캔하고 네트워크에서 사용 가능한 다양한 포트와 서비스를 식별하는 데 도움이 되는 포트 스캐너이며 역방향 DNS 이름, 운영 체제 추측, 장치 유형 및 MAC 주소를 포함하여 대상에 대한 추가 정보를 제공합니다. 네트워크 감사 중에도 유용합니다!

Nmap의 기본 구문은 다음과 같습니다.

$ nmap [FLAGS] [IP]

일부 특정 유형의 스캔을 수행하기 위해 때때로 sudo 권한으로 실행해야 할 수도 있습니다.

Nmap 스위치

Nmap은 명령줄을 통해 전달된 플래그의 도움으로 스캔을 사용자 정의할 수 있는 강력하고 강력한 네트워킹 스캐닝 도구입니다. 중요한 플래그 중 일부는 다음과 같습니다.

  • -h: 도움말 요약 페이지 인쇄
  • -sS: TCP SYN 스캔 수행
  • -sU: UDP 스캔 수행
  • -sV: 열려 있는 포트를 조사하여 서비스/버전 정보를 확인
  • -O: OS 감지 활성화
  • -v: 세부 정보 표시를 활성화합니다. 다음과 같이 상세 수준을 설정할 수도 있습니다.\n
    • -vv: 레벨 2 자세한 정도. 권장되는 최소 상세 수준입니다.
    • -v3: 수준 3 자세한 정도. 이와 같이 숫자를 지정하여 항상 상세 수준을 지정할 수 있습니다.

    • -oN: 일반 출력을 지정된 파일 이름으로 리디렉션
    • -oX: 깨끗한 XML 형식으로 출력을 생성하고 지정된 파일에 저장
    • -oG: "grepable\ 출력을 생성하고 파일에 저장합니다. 사용자가 이제 XML 출력으로 이동함에 따라 더 이상 사용되지 않는 형식입니다.

    • nmap -p 80 127.0.0.0.1: localhost에서 포트 80을 스캔합니다.
    • nmap -p 1-100 127.0.0.1: localhost에서 1부터 100까지 포트를 스캔합니다.
    • nmap -p- 127.0.0.1: localhost의 모든 포트를 스캔합니다.

    Nmap의 스캔 유형

    Nmap은 다양한 스캔 유형을 지원합니다. 그러나 가장 인기 있는 것은 다음과 같습니다.

    1. TCP 연결 스캔(-sT)

    이러한 유형의 스캔에서 Nmap은 SYN 플래그가 설정된 포트로 TCP 패킷을 보냅니다. 이 시나리오에서는 두 가지 상황이 발생할 수 있습니다.

    • 대상은 포트가 닫혔다는 것을 나타내는 RST 패킷으로 응답합니다.
    • 대상이 전혀 응답하지 않습니다. 아마도 방화벽이 들어오는 모든 패킷을 삭제하기 때문일 것입니다. 이 경우 포트는 필터링된 것으로 간주됩니다.
    • 대상은 포트가 열려 있음을 나타내는 SYN/ACK 플래그가 설정된 TCP 패킷으로 응답하고 Nmap은 ACK 플래그가 설정된 TCP 패킷으로 응답하여 TCP 3방향 핸드셰이크를 완료합니다. .

    이것은 RST 패킷으로 응답하거나 들어오는 모든 패킷을 삭제하도록 방화벽 규칙을 구성하기 쉽기 때문에 매우 안정적인 검색 기술이 아닙니다. 또한 이 방법은 전체 TCP 3방향 핸드셰이크를 기다리기 때문에 매우 느립니다.

    2. SYN \하프 오픈\ 스캔(-sS)

    "Half-Open\ 또는 "스텔스 스캔\이라고도 하는 SYN 스캔은 이전 방법보다 개선된 것입니다. SYN/ACK 패킷을 수신한 후 ACK 플래그가 설정된 TCP 패킷을 다시 보내는 이전 방법에서는 이제 RST 패킷을 보냅니다. 이것은 서버가 반복적으로 요청을 시도하는 것을 방지하고 스캔 시간을 크게 줄입니다.

    이 방법은 다음과 같은 이유로 이전 방법보다 개선되었습니다.

    • 더 빠름
    • 일부 기본 방화벽을 우회할 수 있습니다.
    • 종종 SYN 스캔은 포트에서 실행되는 애플리케이션에 의해 기록되지 않습니다. 대부분의 애플리케이션은 SYN 스캔의 경우가 아닌 완전히 설정된 후에만 연결 로깅을 시작하기 때문입니다.

    그러나 프로덕션 환경에서 SYN 스캔을 실행하면 불안정한 특정 응용 프로그램이 손상될 수 있으므로 권장하지 않습니다. 또한 SYN 스캔에는 원시 패킷을 만들어야 하므로 sudo 권한도 필요합니다.

    실제로 sudo 권한으로 실행할 때 nmap은 기본적으로 SYN 스캔으로 설정되고, 그렇지 않으면 기본적으로 TCP 스캔으로 설정됩니다.

    3. UDP 스캔(-sU)

    UDP 연결은 기본적으로 상태 비저장이므로 UDP 스캔은 이전 두 스캔보다 훨씬 덜 안정적입니다. 이것은 TCP와 같은 "피드백 메커니즘\이 없음을 의미합니다. UDP는 "실행 후 잊어버리기(Fire and Forget)\ 원칙에 따라 작동합니다. 즉, 특정 포트에서 대상으로 향하는 패킷을 보내고 그들이 성공하기를 희망한다는 의미입니다. 이것은 품질보다 속도를 더 강조합니다. 그러나 피드백 메커니즘이 없기 때문에 열린 포트를 식별하기 어렵습니다.

    UDP 패킷이 대상 포트로 전송될 때 세 가지 시나리오가 있을 수 있습니다.

    • 일반적으로 nmap이 포트를 열린 것으로 표시하는 경우 수신된 응답이 없습니다. 아직 응답이 없으면 다른 UDP 패킷을 보내 다시 확인하고 다시 응답이 없으면 포트를 열린|필터링된 것으로 표시하고 다음으로 이동합니다.
    • 매우 드물게 UDP 응답을 받을 수 있습니다. 이러한 시나리오에서는 포트가 열린 것으로 표시됩니다.
    • 포트가 닫혀 있고 포트에 연결할 수 없음을 나타내는 ICMP 에코 요청을 수신하는 경우

    Nmap의 특수 스캔

    이 외에도 TCP SYN 스캔보다 훨씬 덜 인기 있는 스캔 유형은 다음과 같습니다.

    1. TCP 널 스캔(-sN)

    TCP 널 스캔에서 전송된 TCP 패킷에는 플래그가 설정되어 있지 않습니다. RFC에 따르면 이러한 상황에서 대상은 포트가 닫혀 있으면 RST로 다시 응답해야 합니다.

    2. TCP FIN 스캔(-sF)

    이것은 완전히 비어 있는 TCP 패킷을 보내는 대신 연결을 정상적으로 종료하는 데 사용되는 FIN 플래그가 설정된 패킷을 보낸다는 점을 제외하면 TCP 널 스캔과 매우 유사합니다. 따라서 대상은 RFC에 따라 닫힌 포트에 대해 RST로 다시 응답해야 합니다.

    3. TCP Xmas 스캔(-sX)

    TCP Xmas 스캔은 또한 PSH, URG 및 FIN 플래그가 설정된 TCP 패킷을 사용한다는 사실을 제외하면 마지막 두 스캔 기술과 매우 유사합니다. 마지막 두 스캔 유형과 마찬가지로 이것도 RFC에서 닫힌 포트에 대한 RST 패킷을 예상합니다.

    제한 사항

    이러한 스캔은 특성이 비슷하기 때문에 UDP 스캔과 매우 유사한 유사한 출력도 있습니다. 이 경우 다음 세 가지 응답만 받을 수 있습니다.

    • open|filtered : 응답이 수신되지 않으면 포트는 다음 두 가지만 의미할 수 있으므로 다음과 같이 분류됩니다.\n
      • 포트가 열려 있습니다
      • 포트는 방화벽으로 보호되므로 필터링

      또한 RFC 793에서는 네트워크 호스트가 닫힌 포트에 대한 RST TCP 패킷으로 잘못된 형식의 패킷에 응답하고 열린 포트에 대해서는 전혀 응답하지 않도록 규정하고 있지만 일부 시스템에서는 이 규칙을 거부합니다. 이 동작은 기본적으로 모든 잘못된 패킷이 삭제되는 Microsoft Windows Server 및 일부 CISCO 장치에서 주로 관찰됩니다.

      Nmap을 사용하여 호스트에 대한 네트워크 스캔

      네트워크에 연결할 때 수행해야 할 가장 중요한 작업 중 하나는 추가 탐색 전에 네트워크의 모든 활성 호스트 목록을 얻는 것입니다. 이것은 이름에서 알 수 있듯이 네트워크의 모든 IP에 ICMP 패킷을 보내고 응답을 기다리는 "Ping Sweep\을 통해 수행할 수 있습니다. 이 경우 ICMP 패킷으로 회신하는 호스트는 활성으로 간주됩니다.

      다음과 같이 하이픈을 사용하거나 CIDR을 통해 대상 IP 범위를 지정할 수 있습니다.

      $ nmap -sn 192.168.0.1-254
      

      또는,

      $ nmap -sn 192.168.0.0/24
      

      -sn 플래그는 모든 포트 스캔을 억제하고 nmap이 ICMP 에코 패킷(또는 수퍼유저 권한으로 실행되는 경우 ARP 요청)에만 의존하여 네트워크의 활성 호스트를 식별하도록 합니다. 또한 대상의 포트 443에 대한 TCP SYN 패킷과 대상의 포트 80에 대한 TCP ACK 요청(수퍼유저 권한으로 실행되는 경우 TCP SYN)을 감지합니다.

      Nmap 스크립팅 엔진

      NSE(Nmap 스크립팅 엔진)는 Nmap의 기능을 더욱 확장할 수 있는 강력한 추가 기능입니다. Lua로 작성하면 Lua를 사용하여 스크립트를 작성하고 취약성 및 악용 테스트와 같은 많은 작업을 자동화할 수 있습니다.

      사용할 수 있는 많은 카테고리가 있습니다. 몇 가지 유용한 범주는 다음과 같습니다.

      • 안전한:- 대상에 영향을 주지 않음
      • 침입:- 안전하지 않음: 대상에 영향을 미칠 가능성이 있음
      • vuln:- 취약점 스캔
      • 악용:- 취약점 악용 시도
      • auth:- 실행 중인 서비스에 대한 인증 우회 시도
      • brute:- 실행 중인 서비스에 대한 무차별 대입 자격 증명 시도
      • 검색:- 네트워크에 대한 추가 정보를 위해 실행 중인 서비스를 쿼리하려고 시도합니다(

      스크립트를 실행하려면 --script=로 지정해야 합니다.

      --script=,와 같이 스크립트 이름을 구분하여 동시에 실행할 여러 스크립트를 지정할 수도 있습니다.

      일부 스크립트에는 --script-args <args>로 지정할 수 있는 인수도 필요합니다.

      일부 스크립트에는 다음과 같이 참조할 수 있는 내장 도움말 메뉴가 있습니다.

      $ nmap --script-help <script-name>
      

      여기에서 전체 스크립트 목록을 찾을 수 있습니다.

      결론

      Nmap에는 무료로 잘 작성된 문서가 많이 있습니다. 공식 웹사이트에서 플래그, 스크립트 등에 대한 많은 정보를 찾을 수 있습니다. 다양한 플래그와 스크립트를 실험하고 서로 다른 환경에서 출력이 어떻게 다른지 확인할 수 있습니다.