Nmap 기본 스캔 기술 배우기

NmapBeginner
지금 연습하기

소개

이 랩에서는 네트워크 탐색 및 보안 감사에 필수적인 도구인 Nmap 에 대해 배우게 됩니다. 네트워크 관리자와 보안 전문가가 널리 사용하는 Nmap 은 열린 포트를 식별하고, 실행 중인 서비스를 감지하며, 잠재적인 네트워크 취약점을 찾아내는 데 도움을 줍니다.

이 랩에서는 또한 기본적인 Nmap 스캔 기술을 배우게 됩니다. 스캔을 통한 네트워크 구성 이해는 기본적인 사이버 보안 기술입니다. 이 랩을 마치면 기본적인 Nmap 스캔을 실행하고 그 결과를 해석할 수 있게 되어, 고급 네트워크 보안 작업을 위한 탄탄한 기반을 다질 수 있습니다.

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

스캔을 위한 웹 서버 설정

이 단계에서는 Docker 를 사용하여 간단한 웹 서버를 설정합니다. Docker 는 애플리케이션과 모든 종속성을 컨테이너라는 표준화된 단위로 패키징할 수 있는 강력한 플랫폼입니다. 이러한 컨테이너는 다양한 시스템에서 쉽게 배포하고 실행할 수 있습니다. 이 웹 서버를 설정함으로써 다음 단계에서 Nmap 으로 스캔할 대상을 갖게 됩니다.

1. 작업 디렉토리로 이동

먼저 터미널 창을 엽니다. 터미널은 시스템과 상호 작용하기 위해 명령을 입력할 수 있는 명령줄 인터페이스입니다. 터미널이 열리면 프로젝트 디렉토리로 이동해야 합니다. 이 디렉토리는 이 랩의 작업 영역 역할을 합니다.

프로젝트 디렉토리로 이동하려면 cd 명령을 사용합니다. cd 명령은 "change directory"를 의미합니다. 실행해야 하는 명령은 다음과 같습니다.

cd /home/labex/project

2. Dockerfile 생성

Dockerfile 은 Docker 이미지를 빌드하는 데 중요한 부분입니다. Docker 가 이미지를 빌드하는 데 사용하는 일련의 명령이 포함된 텍스트 문서입니다. 이 경우, 인기 있는 웹 서버 소프트웨어인 Nginx 를 기반으로 하는 간단한 웹 서버용 Dockerfile 을 생성합니다.

Dockerfile이라는 새 파일을 생성하기 위해 nano 텍스트 편집기를 사용합니다. nano는 터미널에서 직접 사용할 수 있는 간단하고 사용자 친화적인 텍스트 편집기입니다. 다음 명령을 실행합니다.

nano Dockerfile

이 명령을 실행하면 nano 편집기가 열리고 Dockerfile에 내용을 추가할 수 있습니다. 파일에 다음 줄을 추가합니다.

## Use the nginx image as the base
FROM nginx

## Expose port 80
EXPOSE 80

FROM 명령은 Docker 에게 nginx 이미지를 새 이미지의 기반으로 사용하도록 지시합니다. EXPOSE 명령은 컨테이너가 포트 80 에서 수신 대기함을 나타냅니다.

파일을 저장하려면 Ctrl+O를 누른 다음 Enter를 누릅니다. 편집기를 종료하려면 Ctrl+X를 누릅니다.

3. Docker 이미지 빌드

이제 Dockerfile 이 준비되었으므로 Docker 이미지를 빌드할 수 있습니다. 이미지는 애플리케이션을 실행하는 데 필요한 모든 파일과 구성이 포함된 청사진과 같습니다.

이미지를 빌드하려면 다음 명령을 실행합니다.

docker build -t cyber-seed-portal .

이 명령에서 -t 플래그는 이미지를 태그하는 데 사용됩니다. 이미지를 "cyber-seed-portal"로 태그하고 있습니다. 명령 끝에 있는 .은 Docker 에게 현재 디렉토리를 빌드 컨텍스트로 사용하도록 지시합니다.

이 명령을 실행하면 Docker 가 빌드 프로세스를 시작하고 출력은 다음과 유사하게 표시됩니다.

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM nginx
latest: Pulling from library/nginx
a803e7c4b030: Pull complete
8b625c47d697: Pull complete
4d3239651a63: Pull complete
0f816efa513d: Pull complete
01d159b8db2f: Pull complete
5fb9a81470f3: Pull complete
Digest: sha256:32da30332506740a2f7c34d5dc70467b7dfe6c23451f6c66c84eeb3cdadab213
Status: Downloaded newer image for nginx:latest
 ---> 61395b4c586d
Step 2/2 : EXPOSE 80
 ---> Running in 1c2d5e2a8e7f
Removing intermediate container 1c2d5e2a8e7f
 ---> 7683abcf62b0
Successfully built 7683abcf62b0
Successfully tagged cyber-seed-portal:latest

4. Docker 컨테이너 실행

이미지가 빌드되면 해당 이미지에서 컨테이너를 생성하고 실행할 수 있습니다. 컨테이너는 이미지의 실행 인스턴스입니다.

컨테이너를 실행하려면 다음 명령을 사용합니다.

docker run --name cyber-seed-server -d -p 8080:80 cyber-seed-portal

이 명령을 자세히 살펴보겠습니다.

  • --name cyber-seed-server: 이 명령은 컨테이너에 "cyber-seed-server"라는 이름을 지정합니다. 컨테이너의 이름을 지정하면 관리 및 식별이 더 쉬워집니다.
  • -d: 이 명령은 컨테이너를 detached 모드로 실행합니다. 즉, 컨테이너가 백그라운드에서 실행되고 다른 작업을 위해 터미널을 계속 사용할 수 있습니다.
  • -p 8080:80: 이 명령은 머신의 포트 8080 을 컨테이너의 포트 80 에 매핑합니다. 따라서 머신에서 포트 8080 에 액세스하면 컨테이너 내부의 포트 80 으로 리디렉션됩니다.
  • cyber-seed-portal: 이 명령은 컨테이너가 기반으로 할 이미지를 지정합니다.

이 명령을 실행하면 출력은 컨테이너 ID 가 됩니다. 예를 들어 다음과 같습니다.

3a7b1a23c3c5d17b3e4b3e5e6f7g8h9i

이제 Docker 컨테이너에서 실행되는 웹 서버를 성공적으로 설정했습니다. http://localhost:8080에서 이 서버에 액세스할 수 있습니다. 이 서버는 다음 단계에서 Nmap 스캔의 대상이 됩니다.

Nmap 으로 열린 포트 검색

이 단계에서는 Nmap 을 사용하여 로컬 머신에서 열린 포트를 찾습니다. 열린 포트를 이해하는 것은 네트워크 보안의 기본적이면서도 중요한 기술입니다. 포트는 네트워크의 컴퓨터로 가는 문과 같습니다. 각 포트는 서로 다른 서비스에서 사용할 수 있으며, 어떤 포트가 열려 있는지 알면 네트워크에서 어떤 서비스에 액세스할 수 있는지 파악하는 데 도움이 됩니다.

Nmap 이해

Network Mapper 의 약자인 Nmap 은 무료 오픈 소스 도구입니다. 주로 네트워크 탐색 및 보안 감사에 사용됩니다. 네트워크의 탐정이라고 생각하십시오. 시스템 및 네트워크 관리자는 Nmap 을 사용하여 네트워크의 상태를 추적하고, 서비스 업그레이드 시기를 계획하며, 호스트 또는 서비스가 작동하는지 확인합니다.

열린 포트 스캔

이제 Nmap 을 사용하여 로컬 호스트 (IP 주소 127.0.0.1) 를 스캔하여 열린 포트를 찾습니다. Nmap 의 -p- 옵션은 컴퓨터의 모든 가능한 문 (포트) 을 확인하도록 지시하는 것과 같습니다. 총 65535 개의 TCP 포트가 있으며, 이 옵션을 사용하면 Nmap 이 모든 포트를 확인합니다.

터미널에서 다음 명령을 실행합니다.

nmap -p- localhost

이 명령은 많은 수의 포트를 스캔하므로 완료하는 데 시간이 걸립니다. 완료되면 출력은 다음과 유사하게 표시됩니다.

Starting Nmap 7.80  at 2024-03-15 10:59 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 65529 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
3000/tcp  open  ppp
3001/tcp  open  nessus
3002/tcp  open  exlm-agent
8080/tcp  open  http-proxy
36921/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 2.12 seconds

스캔 결과 이해

스캔 결과는 머신에 대한 많은 유용한 정보를 제공합니다. 열을 자세히 살펴보겠습니다.

  • PORT: 이 열은 포트 번호와 프로토콜 (이 경우 TCP) 을 표시합니다. 포트 번호는 컴퓨터의 특정 문 주소와 같으며, TCP 는 해당 문을 통해 데이터를 전송하는 방식입니다.
  • STATE: 이 열은 포트가 열려 있는지, 닫혀 있는지 또는 필터링되었는지 알려줍니다. 열린 포트는 서비스가 해당 포트에서 수신 대기하고 연결을 수락할 준비가 되었음을 의미합니다. 닫힌 포트는 수신 대기하는 서비스가 없음을 의미합니다. 필터링된 포트는 방화벽에 의해 차단되었을 수 있습니다.
  • SERVICE: 이 열은 일반적으로 해당 포트를 사용하는 일반적인 서비스를 표시합니다.

스캔 결과에서 8080/tcp 포트가 열린 것으로 표시되어야 합니다. 이전 단계에서 이 포트를 Docker 컨테이너에 매핑했습니다. "http-proxy" 서비스는 이 포트가 일반적으로 HTTP 프록시 서비스에 사용됨을 나타내지만, 이 상황에서는 Nginx 웹 서버에서 사용되고 있습니다.

볼 수 있는 다른 열린 포트에는 다음이 포함됩니다.

  • 포트 22(SSH): 이 포트는 보안 원격 액세스에 사용됩니다. 다른 위치에서 안전하게 컴퓨터에 연결할 수 있습니다.
  • 포트 3000 - 3002: 이러한 포트는 다양한 서비스에서 사용됩니다. 개발 환경 또는 머신에서 실행 중인 다른 애플리케이션과 관련될 수 있습니다.
  • 포트 36921: 알 수 없는 서비스입니다. 사용자 지정 서비스이거나 Nmap 이 즉시 식별할 수 없는 것일 수 있습니다.

이제 머신에서 열린 포트를 찾았으므로 첫 번째 Nmap 스캔을 성공적으로 완료했습니다. 다음 단계에서는 더 고급 Nmap 스캔 기술을 배우게 됩니다.

Nmap 을 이용한 서비스 버전 탐지

이 단계에서는 Nmap 의 서비스 버전 탐지 기능을 살펴보겠습니다. 이는 대상 시스템의 열린 포트에서 어떤 서비스가 실행 중인지 파악하는 데 도움이 되는 강력한 기능입니다. 서비스와 해당 버전을 이해하는 것은 보안 평가 및 네트워크 관리에 매우 중요합니다.

서비스 버전 탐지 이해

포트가 열려 있다는 것만으로는 기본적인 정보만 얻을 수 있습니다. 그러나 특정 서비스와 해당 버전을 식별하면 훨씬 더 가치 있는 통찰력을 얻을 수 있습니다. 서로 다른 버전의 서비스는 서로 다른 보안 취약점을 가질 수 있습니다. 예를 들어, 웹 서버의 이전 버전에는 최신 릴리스에서 수정된 알려진 보안 결함이 있을 수 있습니다. 서비스 버전을 알면 알려진 취약점이 있는지 확인하고 네트워크를 보호하기 위한 적절한 조치를 취할 수 있습니다.

서비스 버전 스캔 수행

Nmap 은 서비스 버전 탐지를 활성화하기 위해 -sV 옵션을 제공합니다. 이 옵션을 사용하면 Nmap 은 대상 시스템의 열린 포트로 특수 프로브를 보냅니다. 이러한 프로브는 서비스 이름 및 버전과 같이 해당 포트에서 실행 중인 서비스에 대한 정보를 수집하도록 설계되었습니다.

로컬 호스트에서 서비스 버전 스캔을 실행해 보겠습니다. 로컬 호스트는 자신의 컴퓨터를 의미합니다. 이렇게 하려면 터미널에서 다음 명령을 실행합니다.

nmap -sV localhost

이 명령은 Nmap 에게 로컬 머신에서 서비스 버전 스캔을 수행하도록 지시합니다. 명령을 실행한 후 Nmap 은 로컬 호스트의 열린 포트로 프로브를 보내고 해당 포트에서 실행 중인 서비스에 대한 정보를 수집하기 시작합니다.

명령의 출력은 다음과 유사하게 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 11:30 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
3000/tcp open  ppp?
3001/tcp open  nessus?
3002/tcp open  ssl/nessus?
8080/tcp open  http        nginx 1.23.4
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.94 seconds

서비스 버전 스캔 결과 이해

서비스 버전 스캔의 출력은 각 열린 포트에서 실행 중인 서비스에 대한 자세한 정보를 제공합니다. 중요한 부분을 자세히 살펴보겠습니다.

  • 포트 22: 출력은 포트 22 가 열려 있고 SSH(Secure Shell) 서비스를 실행 중임을 보여줍니다. 특정 버전은 Ubuntu 시스템에서 실행 중인 OpenSSH 8.2p1 입니다. SSH 는 컴퓨터에 안전하게 원격으로 액세스하는 데 사용되는 프로토콜입니다.
  • 포트 8080: 이 포트는 열려 있고 HTTP 서비스를 실행 중이며, 특히 Nginx 웹 서버 버전 1.23.4 입니다. Nginx 는 웹 페이지를 제공하는 데 사용되는 인기 있는 웹 서버입니다.

포트 3000 - 3002 의 경우 서비스 이름 옆에 물음표가 표시됩니다. 이는 Nmap 이 이러한 포트에서 실행 중인 정확한 서비스를 확실하게 확인할 수 없음을 의미합니다. 이러한 경우 추가 조사가 필요할 수 있습니다. 다른 도구나 기술을 사용하여 이러한 서비스에 대한 자세한 정보를 수집할 수 있습니다.

서비스 버전에 대한 이 자세한 정보는 보안 평가에 매우 유용합니다. 이 정보를 사용하여 특정 서비스 버전에 알려진 취약점이 있는지 확인할 수 있습니다. 예를 들어, 이전 버전의 Nginx 를 실행 중인 경우 해당 버전과 관련된 보안 문제가 있는지 확인하고 더 안전한 최신 버전으로 업그레이드하는 것을 고려할 수 있습니다.

Nmap 의 서비스 버전 탐지를 사용하면 열린 포트 식별을 넘어설 수 있습니다. 이제 시스템에서 실행 중인 네트워크 서비스에 대한 더 깊은 이해를 갖게 되었으며, 이는 안전하고 잘 관리되는 네트워크를 유지하는 데 필수적입니다.

Nmap 을 이용한 OS (운영체제) 탐지

이 단계에서는 Nmap 의 운영 체제 탐지 기능을 사용하는 방법을 배우겠습니다. 하지만 먼저, 이것이 왜 중요한지 이해해 봅시다. 대상 머신에서 실행 중인 운영 체제를 아는 것은 네트워크 관리자 및 보안 전문가에게 핵심적인 정보를 갖는 것과 같습니다. 이는 해당 머신과 관련된 잠재적 취약점 및 보안 위험을 이해하는 데 도움이 됩니다.

OS 탐지 이해

운영 체제 탐지는 Nmap 의 더 고급 기능입니다. 이 기능을 사용하면 Nmap 은 대상 머신으로 특수 패킷을 보내고 다시 받는 응답을 분석합니다. 이러한 응답을 기반으로 Nmap 은 대상에서 실행 중인 운영 체제에 대해 추측합니다. 서로 다른 운영 체제는 네트워크 요청을 처리하는 방식이 다르며, Nmap 은 이러한 차이점을 사용하여 반대편에서 무엇이 실행 중인지 파악합니다. 이 정보는 서로 다른 운영 체제가 서로 다른 취약점 집합을 갖기 때문에 보안 평가에 매우 중요합니다. 예를 들어, 이전 버전의 Windows 에는 최신 Linux 배포판에는 없는 알려진 보안 구멍이 있을 수 있습니다.

OS 탐지 스캔 수행

운영 체제 탐지 스캔을 수행하려면 Nmap 에서 -O 옵션을 사용합니다. 그러나 이 기능은 일반 사용자가 보낼 수 없는 특정 유형의 네트워크 패킷을 보내는 것과 관련되므로 root 권한이 필요합니다. 따라서 관리자 권한으로 명령을 실행하려면 sudo를 사용해야 합니다.

터미널에서 다음 명령을 실행합니다.

sudo nmap -O localhost

이 명령을 실행하면 sudo 암호를 입력하라는 메시지가 표시될 수 있습니다. 이는 권한 있는 사용자만 관리자 권한으로 작업을 수행할 수 있도록 하는 보안 조치입니다. 암호를 입력하면 Nmap 이 스캔을 시작합니다.

출력은 다음과 유사하게 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 12:00 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
3001/tcp open  nessus
3002/tcp open  ssl/nessus
8080/tcp open  http-proxy
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.36 seconds

OS 탐지 결과 이해

OS 탐지 결과는 대상의 운영 체제에 대한 많은 유용한 정보를 제공합니다. 결과의 다른 부분을 자세히 살펴보겠습니다.

  • Device type: 이는 장치의 일반적인 범주를 알려줍니다. 예를 들어, 범용 컴퓨터, 라우터 또는 프린터일 수 있습니다. 이 경우 "general purpose"라고 표시되는데, 이는 일반적인 컴퓨터일 가능성이 높다는 의미입니다.
  • Running: 이는 감지된 운영 체제 제품군과 버전 범위를 보여줍니다. 여기서는 "Linux 4.X|5.X"라고 표시되는데, 이는 Nmap 이 머신이 4.X 또는 5.X 범위의 커널 버전으로 Linux 운영 체제를 실행 중임을 감지했음을 의미합니다.
  • OS CPE: 이는 Common Platform Enumeration 의 약자입니다. 운영 체제에 대한 표준화된 식별자를 제공하며, 추가 연구 및 취약점 분석에 사용할 수 있습니다.
  • OS details: 이는 운영 체제 버전에 대한 더 구체적인 정보를 제공합니다. 이 예에서는 "Linux 4.15 - 5.6"이라고 표시되는데, 이는 커널 버전이 4.15 와 5.6 사이임을 의미합니다.
  • Network Distance: 이는 대상이 얼마나 많은 네트워크 홉 떨어져 있는지 나타냅니다. localhost를 스캔하고 있으므로, 이는 로컬 머신 자체이므로 네트워크 거리는 0 홉입니다.

이 경우 Nmap 은 머신이 Linux 를 실행 중이며, 특히 4.15 와 5.6 사이의 커널 버전을 실행 중임을 정확하게 식별했습니다.

이 정보는 보안 평가에 매우 유용합니다. 운영 체제 버전을 알면 보안 전문가는 해당 버전과 관련된 알려진 취약점을 찾아 시스템을 보호하기 위한 적절한 조치를 취할 수 있습니다. 또한 네트워크 인벤토리 및 관리에 유용하며, 네트워크의 서로 다른 머신에서 어떤 운영 체제가 실행 중인지 추적하는 데 도움이 됩니다.

Nmap 의 OS 탐지 기능을 사용하면 열린 포트와 실행 중인 서비스만 아는 것을 넘어 대상 시스템에 대한 이해를 넓혔습니다. 이제 네트워크 보안 및 관리에 필수적인 정보인 기본 운영 체제에 대한 더 나은 아이디어를 얻었습니다.

Nmap 을 이용한 스크립트 스캔

이 마지막 단계에서는 Nmap 의 스크립팅 엔진 (NSE) 을 살펴보겠습니다. NSE 는 Nmap 을 더욱 유용하게 만드는 정말 중요한 부분입니다. 이를 통해 사용자는 다양한 네트워킹 작업을 자동화하기 위해 스크립트를 작성하고 공유할 수 있습니다. 즉, 수동으로 수행하는 것보다 스크립트를 사용하여 작업을 더 빠르고 효율적으로 수행할 수 있습니다.

Nmap Scripting Engine (NSE) 이해

Nmap Scripting Engine (NSE) 은 Nmap 의 가장 강력하고 유연한 기능 중 하나입니다. 네트워크 작업을 위한 추가 도구를 제공하는 도구 상자라고 생각하십시오. Lua 프로그래밍 언어로 스크립트를 작성할 수 있습니다. Lua 는 배우기 쉽고 간단한 언어이므로 이러한 종류의 스크립트를 작성하는 데 적합합니다.

이러한 스크립트는 다양한 목적으로 사용할 수 있습니다.

  • 네트워크 검색: 네트워크에 어떤 장치가 있는지 파악하는 데 도움이 됩니다.
  • 버전 탐지: 장치에서 어떤 버전의 소프트웨어가 실행 중인지 파악할 수 있습니다.
  • 취약점 탐지: 시스템의 보안 취약점을 찾을 수 있습니다.
  • 백도어 탐지: 공격자가 시스템에 액세스하는 데 사용할 수 있는 숨겨진 방법을 찾는 데 도움이 됩니다.
  • 취약점 악용: 이는 합법적이고 윤리적인 테스트 환경에서 수행해야 하지만, 공격자가 취약점을 어떻게 악용할 수 있는지 보여줄 수 있습니다.

Nmap 에는 미리 작성된 스크립트가 많이 포함되어 있습니다. 이러한 스크립트는 수행하는 작업에 따라 라이브러리로 구성됩니다. 따라서 특정 작업을 수행하려는 경우 관련 라이브러리에서 올바른 스크립트를 쉽게 찾을 수 있습니다.

기본 스크립트 스캔 수행

기본 스크립트 스캔을 시작하려면 -sC 옵션을 사용합니다. 이 옵션은 Nmap 에게 기본 스크립트 집합을 실행하도록 지시합니다. 이러한 기본 스크립트는 안전하고 비침습적으로 설계되었습니다. 즉, 작업을 수행하는 동안 대상 시스템에 해를 끼치지 않습니다.

다음 명령을 실행해 보겠습니다.

nmap -sC localhost

이 명령을 실행하면 Nmap 이 로컬 머신을 스캔하기 시작합니다. 기본 스크립트를 사용하여 열린 포트와 해당 포트에서 실행 중인 서비스에 대한 정보를 수집합니다. 출력은 다음과 유사하게 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 12:30 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef (RSA)
|   256 fe:dc:ba:98:76:54:32:10:fe:dc:ba:98:76:54:32:10 (ECDSA)
|_  256 01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef (ED25519)
3000/tcp open  ppp
3001/tcp open  nessus
3002/tcp open  ssl/nessus
8080/tcp open  http-proxy
|_http-title: Welcome to nginx!

Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds

특정 스크립트 실행

특정 스크립트를 실행하려면 --script 옵션을 사용할 수 있습니다. 이 옵션 뒤에는 스크립트의 이름 또는 속한 범주를 지정해야 합니다.

예를 들어, 웹 페이지의 제목을 얻고 싶다고 가정해 보겠습니다. 이를 수행할 수 있는 http - title이라는 스크립트가 있습니다. 이 스크립트를 실행하려면 다음 명령을 사용합니다.

nmap --script=http-title -p 8080 localhost

이 명령은 Nmap 에게 로컬 머신의 포트 8080 에서 http - title 스크립트를 실행하도록 지시합니다. 출력은 다음과 같습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 12:35 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy
|_http-title: Welcome to nginx!

Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

스크립트 스캔 결과 이해

스크립트 스캔의 결과는 열린 포트에서 실행 중인 서비스에 대한 더 자세한 정보를 제공합니다.

  • 포트 22 의 SSH 서비스의 경우 ssh - hostkey 스크립트가 호스트 키를 검색했습니다. 이러한 키는 SSH 를 통한 보안 통신에 중요합니다.
  • 포트 8080 의 HTTP 서비스의 경우 http - title 스크립트가 웹 페이지의 제목을 가져왔으며, 이는 "Welcome to nginx!"입니다.

이러한 종류의 정보는 보안 평가에 매우 유용합니다. 대상 시스템의 서비스가 어떻게 구성되고 어떻게 동작하는지 이해하는 데 도움이 됩니다.

Nmap 의 스크립팅 엔진을 사용하면 가장 강력한 기능 중 하나를 탐색했습니다. 이 기능은 네트워크 검색 및 보안 평가 작업과 관련하여 많은 시간과 노력을 절약할 수 있습니다.

정리

이제 모든 스캔 단계를 완료했으므로 정리할 시간입니다. 랩 초반에 Docker 컨테이너를 만들었습니다. 시스템을 깨끗하게 유지하려면 이 컨테이너를 중지하고 제거해야 합니다.

다음 명령을 실행합니다.

docker stop cyber-seed-server && docker rm cyber-seed-server

이 명령은 먼저 cyber - seed - server라는 이름의 실행 중인 Docker 컨테이너를 중지합니다. 그런 다음 시스템에서 컨테이너를 제거합니다.

축하합니다! 이 랩의 모든 단계를 성공적으로 완료했습니다. 다양한 Nmap 스캔 기술에 대한 귀중한 실무 경험을 얻었습니다.

요약

이 랩에서는 인기 있고 강력한 사이버 보안 도구인 Nmap 을 사용하여 네트워크 스캔의 기본 사항을 배웠습니다. 스캔 대상으로 Docker 컨테이너를 설정하여 새로운 기술을 적용할 수 있는 실용적인 환경을 만들었습니다.

로컬 머신에서 기본 포트 스캔을 시작으로 일련의 고급 Nmap 스캔 기술을 진행했습니다. 그런 다음 서비스 버전 탐지, OS 탐지를 배우고 Nmap 의 스크립팅 엔진을 사용하여 작업을 자동화하고 더 많은 대상 정보를 수집했습니다. 이러한 기술은 네트워크 관리자 및 보안 전문가에게 중요한 네트워크 보안 평가의 기초입니다. 이러한 Nmap 기술을 마스터하면 네트워크 인벤토리에서 보안 평가에 이르기까지 실제 시나리오에 사용할 수 있는 강력한 도구를 얻게 됩니다.