Nmap 기본 명령 구문 배우기

NmapBeginner
지금 연습하기

소개

이 랩에서는 강력한 네트워크 검색 및 보안 감사 도구인 Nmap 의 기본 명령 구문을 배우게 됩니다. 시스템 관리자와 보안 전문가가 널리 사용하는 Nmap 은 네트워크를 스캔하고, 열린 포트를 감지하며, 잠재적인 취약점을 식별하는 데 도움을 줍니다.

우리의 시나리오는 달에서 가장 크고 중요한 우주 정거장인 루나 게이트웨이 우주 정거장이 있는 2145 년에 설정되었습니다. 사이버 보안 팀 리더로서, 당신의 임무는 우주 정거장의 네트워크 인프라를 위협으로부터 보호하는 것입니다. 최근 의심스러운 활동이 증가했다는 보고를 바탕으로, 해커들이 시스템에 침투하려 시도하고 있다고 의심합니다. 이 랩을 마치면, 미래형 우주 정거장과 같은 모든 네트워크를 보호하는 데 필수적인 기술인, 필수적인 네트워크 정찰을 위해 Nmap 을 사용하는 실질적인 경험을 얻게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 83%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

Nmap 이해 및 설치 확인

Network Mapper 의 약자인 Nmap 은 오픈 소스 도구입니다. 네트워크 보안 분야에서 컴퓨터 네트워크의 호스트와 서비스를 검색하는 데 중요한 역할을 합니다. 네트워크에서 무슨 일이 일어나고 있는지 알아낼 수 있는 탐정이라고 생각하면 됩니다. 가상의 루나 게이트웨이 우주 정거장 시나리오에서 Nmap 은 복잡한 네트워크 인프라의 보안을 보호하는 데 매우 유용합니다.

Nmap 을 사용하기 전에 시스템에 설치되어 있는지 확인해야 합니다. 설치를 확인하는 방법은 다음과 같습니다.

  1. 먼저, 터미널 창을 열어야 합니다. LabEx 환경에서 터미널은 일반적으로 이미 열려 있으며 /home/labex/project 디렉토리로 설정되어 있습니다. 터미널은 시스템과 상호 작용하기 위해 명령을 입력할 수 있는 제어 센터와 같습니다.

  2. 이제 설치된 Nmap 의 버전을 확인하는 명령을 실행합니다. 터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap --version

    이 명령은 시스템에 설치된 Nmap 버전에 대한 정보를 표시하도록 요청합니다. --version 옵션은 많은 프로그램에서 버전 관련 세부 정보를 얻는 일반적인 방법입니다.

  3. 명령을 실행한 후 잠시 출력을 살펴보십시오. Nmap 의 특정 버전, 컴파일 방법 및 기타 관련 정보와 같은 세부 정보를 볼 수 있습니다. 이를 통해 Nmap 이 올바르게 설치되었는지 확인하고 버전을 기반으로 어떤 기능을 사용할 수 있는지 파악할 수 있습니다.

테스트 서비스 설정

Nmap 으로 연습을 시작하기 전에 스캔할 대상이 필요합니다. Nmap 을 사이버 보안 세계의 탐정 도구라고 생각하고, 조사할 용의자 (대상) 가 필요합니다. 이 경우, netcat (nc) 이라는 도구를 사용하여 로컬 머신에 간단한 네트워크 서비스를 설정합니다. Netcat 은 네트워크 연결을 통해 데이터를 읽고 쓸 수 있는 다용도 네트워킹 유틸리티입니다.

  1. 먼저, netcat 이 시스템에 설치되어 있는지 확인해 보겠습니다. 터미널에서 다음 명령을 실행하여 확인할 수 있습니다.

    nc -h

    이 명령은 netcat 에게 도움말 정보를 표시하도록 요청합니다. netcat 이 설치되어 있으면 사용 가능한 옵션 목록과 사용 방법을 볼 수 있습니다. 오류가 발생하면 netcat 이 설치되지 않은 것이므로 진행하기 전에 설치해야 합니다.

  2. 이제 새 터미널 창을 엽니다. 나중에 다른 명령에 원래 터미널을 사용할 것이고, netcat 서비스를 별도의 창에서 계속 실행해야 하므로 중요합니다. 터미널 영역을 마우스 오른쪽 버튼으로 클릭하고 "새 터미널"을 선택하거나 키보드 단축키 (일반적으로 Ctrl+Shift+T) 를 사용하여 새 터미널 창을 열 수 있습니다.

  3. 이 새 터미널 창에서 열린 상태로 유지될 간단한 네트워크 서비스를 시작합니다. 다음 명령을 실행합니다.

    while true; do nc -n -lvp 7777; done

    이 명령은 무한 루프를 생성합니다. netcat 서비스에 대한 연결이 닫힐 때마다 루프가 netcat 을 다시 시작하여 서비스를 항상 스캔할 수 있도록 합니다. netcat 이 포트 7777 에서 수신 대기 중임을 나타내는 출력을 볼 수 있습니다.

    • -n: 이 플래그는 netcat 에게 호스트 이름을 확인하는 대신 IP 주소를 직접 사용하도록 지시합니다. 프로세스 속도를 높이고 잠재적인 DNS 관련 문제를 방지합니다.
    • -l: 이 플래그는 netcat 에게 수신 모드로 들어가도록 지시합니다. 연결을 시작하는 대신 들어오는 연결을 기다립니다.
    • -v: 이 플래그는 자세한 출력을 활성화합니다. Netcat 은 수행 중인 작업에 대한 자세한 정보를 제공하며, 이는 디버깅 및 진행 상황 이해에 도움이 됩니다.
    • -p 7777: 이 플래그는 netcat 이 수신 대기해야 하는 포트 번호를 지정합니다. 이 경우 포트 7777 을 선택했습니다.
  4. 이 터미널 창을 열어 두십시오. 다음 단계에서 Nmap 으로 스캔할 때 들어오는 연결을 관찰하는 데 사용합니다. 이 창에서 실행 중인 netcat 서비스는 Nmap 스캔의 대상으로 작동하여 Nmap 이 실제 네트워크 서비스와 어떻게 상호 작용하는지 확인할 수 있습니다.

기본 Nmap 스캔 수행

이제 서비스를 성공적으로 설정했으므로 Nmap 을 사용하여 이를 검색할 차례입니다. Nmap 은 대상 시스템에서 열린 포트와 서비스를 찾는 데 도움이 되는 강력한 네트워크 스캔 도구입니다. 이 단계에서는 방금 설정한 서비스를 찾기 위해 localhost 에 대한 기본 스캔을 수행합니다.

  1. 먼저, 원래 터미널 창으로 돌아갑니다. netcat 이 실행 중인 창이 아닌지 확인하십시오. 이 터미널을 사용하여 Nmap 명령을 실행해야 합니다.

  2. 다음으로, 다음 Nmap 명령을 실행합니다.

    nmap -v -p 7777 localhost

    이 명령을 분석하여 각 부분이 수행하는 작업을 이해해 보겠습니다.

    • nmap: 이것은 Nmap 을 실행하는 기본 명령입니다. 시스템에 네트워크 스캔에 Nmap 도구를 사용하려는 것을 알립니다.
    • -v: 이 옵션은 자세한 출력을 활성화합니다. -v를 사용하면 Nmap 은 스캔 진행 상황 및 대상에 대한 추가 세부 정보와 같은 자세한 정보를 제공합니다.
    • -p 7777: 이 옵션은 Nmap 에게 포트 7777 만 스캔하도록 지시합니다. 포트는 컴퓨터의 문과 같으며, 서로 다른 서비스는 서로 다른 포트를 사용합니다. -p 7777을 지정하여 Nmap 에게 대상 시스템에서 포트 7777 이 열려 있는지 확인하도록 요청합니다.
    • localhost: 이것은 스캔하려는 대상입니다. 이 경우 localhost는 자신의 시스템을 나타냅니다. 로컬 환경에서 네트워크 스캔을 테스트하는 방법입니다.
  3. 명령을 실행한 후 출력을 관찰합니다. 다음과 유사한 내용을 볼 수 있습니다.

    Starting Nmap ( http://nmap.org )
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000040s latency).
    PORT     STATE SERVICE
    7777/tcp open  cbt

    이 출력은 중요한 정보를 제공합니다. Nmap 이 스캔을 시작했고 대상 (localhost) 이 작동 중임을 알려줍니다. 7777/tcp open cbt 줄은 포트 7777 이 localhost 에서 열려 있으며 이 포트에서 실행되는 서비스가 cbt로 식별됨을 나타냅니다.

  4. 향후 참조를 위해 이 스캔의 기록을 유지하기 위해 출력을 파일에 저장해 보겠습니다. 출력 리디렉션을 사용하여 명령을 다시 실행합니다.

    nmap -v -p 7777 localhost > /home/labex/project/nmap_scan_output.txt

    이 명령은 이전과 동일한 스캔을 수행하지만 > 기호는 출력을 /home/labex/project 디렉토리의 nmap_scan_output.txt라는 파일로 리디렉션합니다. 이렇게 하면 나중에 스캔 결과에 쉽게 액세스할 수 있습니다.

  5. cat 명령을 사용하여 이 파일의 내용을 볼 수 있습니다. 다음 명령을 실행합니다.

    cat /home/labex/project/nmap_scan_output.txt

    cat 명령은 터미널에 파일의 내용을 표시하는 데 사용됩니다. 이 명령을 실행하면 저장된 스캔 출력을 볼 수 있습니다.

  6. 마지막으로, netcat 터미널을 확인합니다. Nmap 이 서비스에 연결을 시도했음을 알 수 있습니다. netcat 에서 설정한 루프로 인해 닫혔다가 다시 열리므로 서비스를 추가 스캔에 사용할 수 있습니다. 이는 Nmap 을 사용하여 네트워크를 계속 테스트하고 탐색할 수 있으므로 중요합니다.

Nmap 출력 탐색

이제 Nmap 을 사용하여 기본 스캔을 성공적으로 수행했으므로 Nmap 이 생성하는 출력을 자세히 살펴볼 차례입니다. 이 출력을 이해하는 것은 열린 포트 및 실행 중인 서비스와 같은 대상 시스템에 대한 귀중한 정보를 제공하므로 매우 중요합니다.

  1. 먼저, Nmap 스캔 출력 파일을 열어야 합니다. 이 파일에는 방금 수행한 스캔의 모든 세부 정보가 포함되어 있습니다. 이를 열기 위해 nano 텍스트 편집기를 사용합니다. nano는 텍스트 파일을 쉽게 보고 편집할 수 있는 간단하고 사용자 친화적인 텍스트 편집기입니다. 터미널에서 다음 명령을 실행합니다.

    nano /home/labex/project/nmap_scan_output.txt

    이 명령은 지정된 파일을 nano 텍스트 편집기에서 엽니다.

  2. 파일이 열리면 내용을 검토합니다. 파일이 여러 섹션으로 나뉘어져 있으며 각 섹션은 서로 다른 유형의 정보를 제공하는 것을 알 수 있습니다.

    • Nmap 스캔 보고서: 이 섹션은 스캔 대상을 보여줍니다. 이 경우 대상은 현재 작업 중인 로컬 머신을 나타내는 localhost입니다.
    • 호스트 상태: 이 부분은 호스트 (대상 시스템) 가 작동 중인지 여부를 나타냅니다. 또한 호스트의 대기 시간 (신호가 우리 시스템에서 대상까지 이동했다가 다시 돌아오는 데 걸리는 시간) 에 대한 정보도 제공합니다.
    • 포트 테이블: 이 테이블은 스캔된 포트의 상태를 보여줍니다. 포트가 열려 있는지, 닫혀 있는지 또는 필터링되었는지 알려줍니다. 또한 Nmap 이 해당 포트에서 실행 중이라고 생각하는 서비스도 표시합니다.
  3. Nmap 이 포트 7777 의 서비스를 "cbt"로 식별하는 것을 알 수 있습니다. 그러나 이는 일반적인 포트 할당을 기반으로 한 Nmap 의 추측일 뿐이라는 점에 유의해야 합니다. 7777 과 같은 비표준 포트의 경우 이 식별이 항상 정확하지 않을 수 있습니다.

  4. 파일 검토를 마치면 Ctrl+X를 눌러 nano 텍스트 편집기를 종료할 수 있습니다.

  5. 이제 약간 더 포괄적인 스캔을 시도해 보겠습니다. 대상에 대한 더 많은 정보를 수집하기 위해 추가 옵션을 포함하는 새 명령을 사용합니다. 터미널에서 다음 명령을 실행합니다.

    nmap -v -p 7777 -sV localhost > /home/labex/project/nmap_service_scan.txt

    명령의 각 부분의 의미는 다음과 같습니다.

    • -v: 이 옵션은 자세한 모드를 활성화합니다. 즉, Nmap 은 스캔 프로세스에 대한 자세한 정보를 제공합니다.
    • -p 7777: 이는 포트 7777 만 스캔하려는 것을 지정합니다.
    • -sV: 이 플래그는 Nmap 에게 열린 포트를 조사하여 해당 포트에서 실행 중인 서비스와 해당 버전을 확인하도록 지시합니다.
    • localhost: 이것은 로컬 머신인 스캔 대상입니다.
    • > /home/labex/project/nmap_service_scan.txt: 이는 스캔의 출력을 지정된 파일로 리디렉션합니다.
  6. 스캔을 실행한 후 이 새 파일의 내용을 보려고 합니다. 이렇게 하려면 터미널에서 파일의 내용을 표시하는 데 사용되는 cat 명령을 사용합니다. 다음 명령을 실행합니다.

    cat /home/labex/project/nmap_service_scan.txt

    출력에서 포트 7777 에 대한 추가 정보를 볼 수 있습니다. Nmap 이 포트에서 실행 중인 정확한 서비스를 확인할 수 없더라도 기본 스캔에 비해 더 자세한 출력을 제공합니다.

  7. 출력을 살펴보면서 다음과 같은 줄을 찾으십시오.

    PORT     STATE SERVICE VERSION
    7777/tcp open  cbt?

    이 줄은 Nmap 이 열린 포트 7777 을 감지했음을 나타냅니다. 그러나 "cbt" 뒤의 물음표는 Nmap 이 서비스 분류에 대해 확신하지 못함을 나타냅니다. 즉, Nmap 이 이 포트에서 실행 중인 서비스를 확실하게 식별할 수 없었습니다.

네트워크 전체 스캔 수행

Luna Gateway Spaceport 와 같은 실제 시나리오에서는 네트워크의 여러 호스트를 스캔해야 합니다. 이는 네트워크에 연결된 장치와 해당 열린 포트를 이해하는 데 도움이 되기 때문에 중요하며, 이는 네트워크 보안에 매우 중요합니다. IP 주소 범위를 스캔하여 이를 시뮬레이션해 보겠습니다.

  1. 먼저, IP 주소를 찾아보겠습니다. IP 주소는 네트워크의 "집 주소"와 같으며, 네트워크에서 장치를 고유하게 식별합니다. 이를 찾기 위해 다음 명령을 실행합니다.

    ip addr show | grep inet

    명령의 ip addr show 부분은 장치에서 모든 네트워크 인터페이스와 관련 IP 주소를 나열합니다. |는 파이프이며, ip addr show 명령의 출력을 가져와 grep inet 명령으로 전달합니다. 그런 다음 grep inet 명령은 출력을 필터링하여 "inet"이라는 단어가 포함된 줄만 표시합니다. 즉, IP 주소가 있는 줄입니다.

    샘플 출력:

    inet 127.0.0.1/8 scope host lo
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth1

    127.0.0.1/8은 루프백 주소이며, 이 목적에는 유용하지 않습니다. 따라서 무시할 수 있습니다. 172.18.0.3/16은 네트워크 인터페이스의 IP 주소이며, 이 목적에 유용합니다. 따라서 다음 단계에서 이 IP 주소를 사용할 수 있습니다.

  2. 이제 자체 IP 주소 주변의 IP 주소 범위를 스캔해 보겠습니다. IP 주소 범위를 스캔하면 동일한 네트워크의 다른 장치를 검색하는 데 도움이 됩니다. IP 가 172.18.0.3 인 경우 172.18.0.1-10 을 스캔할 수 있습니다. 다음 명령에서 IP 범위를 IP 가 포함된 범위로 바꿉니다.

    sudo nmap -v -p 7777 172.18.0.1-10 > /home/labex/project/network_scan.txt

    sudo 명령은 네트워크 스캔에 종종 필요한 관리자 권한으로 다음 명령을 실행하는 데 사용됩니다. nmap은 강력한 네트워크 스캔 도구입니다. -v 옵션은 "verbose"를 나타내며, 스캔에 대한 자세한 정보를 제공합니다. -p 7777 옵션은 대상 IP 주소에서 포트 7777 을 스캔하려는 것을 지정합니다. 172.18.0.1 - 10은 스캔하려는 IP 주소 범위입니다. > 기호는 nmap 명령의 출력을 /home/labex/project/network_scan.txt 파일로 리디렉션합니다.

    이 명령은 172.18.0.0 네트워크의 처음 10 개의 IP 주소에 대해 포트 7777 을 스캔합니다.

  3. 스캔 결과 보기:

    cat /home/labex/project/network_scan.txt

    cat 명령은 파일의 내용을 표시하는 데 사용됩니다. 이 경우 network_scan.txt 파일에 저장한 네트워크 스캔의 결과가 표시됩니다. 각 IP 주소에 대한 포트 7777 에 대한 정보와 함께 IP 주소 목록이 표시됩니다.

  4. 실제 시나리오에서는 이러한 유형의 스캔을 통해 특정 포트가 열린 네트워크의 모든 장치를 식별할 수 있으며, 이는 Luna Gateway Spaceport 의 네트워크 보안을 유지하는 데 매우 중요할 수 있습니다. 특정 포트가 열린 장치를 알면 네트워크에 잠재적인 보안 위험이나 무단 액세스 지점이 있는지 확인할 수 있습니다.

요약

이 랩에서는 Luna Gateway Spaceport 의 네트워크 인프라를 보호하는 맥락에서 Nmap 의 기본 명령 구문을 배웠습니다. 먼저 Nmap 설치를 확인하고 netcat 을 사용하여 테스트 서비스를 설정했습니다. 그런 다음 localhost 에서 기본 스캔을 수행하고 Nmap 의 출력을 해석하는 방법을 배우고 추가 분석을 위해 저장했습니다.

또한 열린 포트의 서비스에 대한 세부 정보를 공개하는 서비스 버전 감지와 같은 보다 복잡한 기술로 발전했습니다. 마지막으로, 네트워크 전체 스캔을 시뮬레이션하여 Nmap 이 여러 호스트를 조사할 수 있는 방법을 보여주었습니다. 이러한 기술은 네트워크 정찰 및 보안 감사의 기본이며, 우주 기지의 운영에서 위험을 식별하는 데 매우 중요합니다.

Nmap 을 책임감 있게 사용하고 승인된 네트워크에서만 사용하십시오. 무단 스캔은 공격으로 간주될 수 있으며 법적 결과를 초래할 수 있습니다. 계속 배우면서 이러한 기본 Nmap 기술을 확장하고 Luna Gateway Spaceport 와 같은 복잡한 환경에서 포괄적인 보안 전략을 위해 다른 도구와 결합하는 것을 고려하십시오.