SW/리눅스

Linux : nmap 명령어, 사용 방법, 예제

얇은생각 2023. 1. 5. 07:30
반응형

Nmap은 보안 감사 및 침투 테스트를 위한 강력한 네트워크 검색 도구입니다. 네트워크 관리자가 네트워크 연결 문제 및 포트 검색 문제를 해결하는 데 사용하는 필수 도구 중 하나입니다.

Nmap은 또한 Mac 주소, OS 유형, 서비스 버전 등을 감지할 수 있습니다.

nmap 명령을 사용하여 다양한 네트워크 작업을 수행하는 방법에 대한 기본 사항을 설명합니다.

 

 

Linux : nmap 명령어, 사용 방법, 예제

 

 

Nmap을 설치

Nmap은 모든 주요 운영 체제에 설치할 수 있는 멀티 플랫폼 프로그램입니다. 처음에는 리눅스 전용 도구로 출시되었으며, 나중에는 BSD, Windows 및 MacOS와 같은 다른 시스템으로 이식되었습니다.

명령줄보다 GUI를 선호하는 경우 Nmap에는 Zenmap이라는 그래픽 사용자 인터페이스도 있습니다.

공식 이진 패키지는 Nmap 다운로드 페이지에서 다운로드할 수 있습니다.

설치 절차는 간단하며 운영 체제에 따라 다릅니다.

 

 

 

Ubuntu 및 Debian에 Nmap을 설치

Nmap은 기본 Ubuntu 및 Debian 리포지토리에서 사용할 수 있습니다. 설치하려면 다음을 실행하십시오.

sudo apt update
sudo apt install nmap

 

 

 

CentOS 및 Fedora에 Nmap을 설치

CentOS 및 기타 Red Hat 파생 모델은 다음과 같이 실행됩니다.

sudo dnf install nmap

 

 

 

MacOS에 Nmap을 설치

macOS 사용자는 Nmap 사이트 또는 홈브루에서 ".dmg" 설치 패키지를 다운로드하여 Nmap을 설치할 수 있습니다.

brew install nmap

 

 

 

Windows에 Nmap을 설치

Nmap의 Windows 버전은 몇 가지 제한이 있으며 일반적으로 UNIX 버전보다 약간 느립니다.

Windows에서 Nmap을 설치하는 가장 쉬운 옵션은 자체 설치 exe 파일을 다운로드하여 실행하는 것입니다.

명령줄에서 또는 Zenmap 프로그램을 실행하여 Windows에서 Nmap을 실행할 수 있습니다. Windows에서 Nmap을 사용하는 방법에 대한 자세한 내용은 설치 후 사용 지침을 참조하십시오.

 

 

 

Nmap을 사용

Nmap은 일반적으로 네트워크 보안, 네트워크 매핑을 감사하고 열린 포트를 식별하고 온라인 장치를 검색하는 데 사용됩니다.

nmap 명령의 간단한 구문은 다음과 같습니다.

nmap [Options] [Target...]

 

 

 

Nmap을 사용하는 가장 기본적인 예는 옵션을 지정하지 않고 단일 대상을 표준 사용자로 스캔하는 것입니다.

nmap scanme.nmap.org

# Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
# Nmap scan report for cast.lan (192.168.10.121)
# Host is up (0.048s latency).
# Not shown: 981 closed ports
# PORT     STATE    SERVICE
# 21/tcp   open     ftp
# 22/tcp   open     ssh
# 25/tcp   open     smtp
# 53/tcp   open     domain
# 80/tcp   open     http
# 110/tcp  open     pop3
# 143/tcp  open     imap
# 443/tcp  open     https
# 587/tcp  open     submission
# 993/tcp  open     imaps
# 995/tcp  open     pop3s
# 1025/tcp open     NFS-or-IIS
# 1080/tcp open     socks
# 8080/tcp open     http-proxy
# 8081/tcp open     blackice-icecap
# 
# Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds

 

 

원시 패킷 권한이 없는 비루트 사용자로 호출되면 nmap은 TCP 연결 검색을 실행합니다. 권한 없는 모드에서는 기본적으로 (-sT)가 켜져 있습니다.

출력은 검색에 대한 기본 정보와 열려 있고 필터링된 TCP 포트 목록을 포함하여 다음과 같습니다.

가장 일반적인 검색 옵션은 연결 옵션보다 빠르고 모든 호환 TCP 스택에 대해 작동하는 TCP SYN 검색(-sS)입니다.

-sS는 nmap이 관리자 권한을 가진 사용자로 호출될 때 기본적으로 설정됩니다.

sudo nmap 192.168.10.121

 

 

보다 자세한 출력을 위해 -v 또는 -vv와 함께 verbosity 증가를 사용합니다.

sudo nmap -vv 192.168.10.121

 

 

UDP 검색을 수행하려면 루트 사용자로 (-sU) 옵션을 사용하여 명령을 호출합니다.

sudo nmap -sU 192.168.10.121

 

 

포트 검색 방법의 전체 목록을 보려면 Nmap 설명서 페이지를 방문하십시오.

Nmap은 IPv6 주소도 지원합니다. IPv6 호스트를 지정하려면 -6 옵션을 사용합니다.

sudo nmap -6 fd12:3456:789a:1::1

 

 

 

대상 호스트를 지정

Nmap은 옵션이 아닌 모든 인수를 대상 호스트로 처리합니다.

인수가 단일 대시(-, --) 또는 이중 대시(-, --)로 시작하는 경우 옵션으로 간주됩니다.

가장 간단한 옵션은 하나 이상의 대상 주소 또는 도메인 이름을 전달하는 것입니다.

nmap 192.168.10.121 host.to.scan

 

 

CIDR 표기법을 사용하여 네트워크 범위를 지정할 수 있습니다.

nmap 192.168.10.0/24

 

 

옥텟 범위를 지정하려면 대시 문자를 사용합니다. 예를 들어 192.168.10.1, 192.168.11.1 및 192.168.12.1을 검색하려면 다음과 같이 하십시오.

nmap 192.168.10-12.1

 

 

대상을 지정하는 데 사용할 수 있는 또 다른 문자는 쉼표입니다. 다음 명령은 위의 명령과 동일한 호스트를 대상으로 합니다.

nmap 192.168.10,11,12.1

 

 

모든 양식을 결합할 수 있습니다.

nmap 10.8-10.10,11,12.0/28  192.168.1-2.100,101

 

 

검색하기 전에 올바른 호스트를 지정했는지 확인하려면 검색을 실행하지 않고 대상만 나열하는 list scan 옵션(-sL)을 사용하십시오.

nmap -sL 10.8-10.10,11,12.0/28  192.168.1-2.100,101

 

 

지정한 범위에 포함된 대상을 제외하려면 --exclude 옵션을 사용하십시오.

nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12

 

 

 

포트를 지정하고 검색

기본적으로 Nmap은 가장 많이 사용되는 1000개의 포트에 대해 빠른 검색을 수행합니다.

이러한 포트는 연속된 첫 번째 1000개의 포트가 아니라 1에서 65389 사이의 가장 일반적으로 사용되는 1000개의 포트입니다.

1에서 65535 사이의 모든 포트를 검색하려면 -p- 옵션을 사용합니다.

nmap -p- 192.168.10.121

 

 

 

각 포트는 다음 상태 중 하나일 수 있습니다.

 

open - 포트에서 실행 중인 프로그램이 요청에 응답합니다.

closed - 포트에서 실행되는 프로그램이 없으며 호스트가 요청에 응답합니다.

filtered - 호스트가 요청에 응답하지 않습니다.

 

예를 들어 포트 443만 검색하려면 다음 명령을 사용합니다.

nmap -p 443 192.168.10.121

 

 

둘 이상의 포트를 지정하려면 대상 포트를 쉼표로 구분합니다.

nmap -p 80,443 192.168.10.121

 

 

포트 범위는 대시 기호로 지정할 수 있습니다. 예를 들어 1 ~ 1024 범위의 모든 UDP 포트를 검색하려면 다음을 실행합니다.

sudo nmap -sU -p 1-1024 192.168.10.121

 

 

모두 합쳐졌습니다.

nmap -p 1-1024,8080,9000 192.168.10.121

 

 

포트 이름을 사용하여 포트를 지정할 수도 있습니다. 예를 들어 포트 22, ssh를 검색하려면 다음을 사용할 수 있습니다.

nmap -p ssh 192.168.10.121

 

 

 

Ping 검색

ping 검색 또는 호스트 검색을 수행하려면 -sn 옵션을 사용하여 nmap 명령을 호출합니다.

sudo nmap -sn 192.168.10.0/24

 

 

-sn 옵션은 Nmap에 온라인 호스트만 검색하도록 지시하고 포트 검색을 수행하지 않도록 합니다. 이 기능은 지정된 호스트 중 실행 중인 호스트를 신속하게 확인할 때 유용합니다.

 

 

 

DNS 이름 확인을 사용하지 않도록 설정

Nmap의 기본 동작은 검색된 각 호스트에 대해 역DNS 확인을 수행하는 것이므로 검색 시간이 늘어납니다.

대규모 네트워크를 검색할 때는 역DNS 해상도를 사용하지 않도록 설정하고 검색 속도를 높이는 것이 좋습니다. 이렇게 하려면 -n 옵션을 사용하여 명령을 호출합니다.

sudo nmap -n 192.168.10.0/16

 

 

 

OS, 서비스 및 버전 탐지

Nmap은 TCP/IP 스택 핑거프린트를 사용하여 원격 호스트 운영 체제를 검색할 수 있습니다. OS 탐지를 실행하려면 -O 옵션을 사용하여 명령을 실행합니다.

sudo nmap -O scanme.nmap.org

# ...
# Device type: general purpose
# Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
# Network Distance: 18 hops
# 
# OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds

 

 

일반적으로 시스템 서비스는 잘 알려져 있고 예약된 표준 포트를 수신합니다. 예를 들어 SSH 서비스에 해당하는 포트 22가 열려 있는 경우 호스트에서 SSH 서버가 실행된다고 가정합니다. 그러나 사람들이 원하는 모든 포트에서 서비스를 실행할 수 있기 때문에 절대 확신할 수 없습니다.

서비스 및 버전 탐지를 통해 Nmap은 포트에서 어떤 프로그램이 수신하는지와 프로그램 버전을 보여줍니다.

sudo nmap -sV scanme.nmap.org

# ...
# PORT      STATE    SERVICE      VERSION
# 19/tcp    filtered chargen
# 22/tcp    open     ssh          OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
# 80/tcp    open     http         Apache httpd 2.4.7 ((Ubuntu))
# 135/tcp   filtered msrpc
# 139/tcp   filtered netbios-ssn
# 445/tcp   filtered microsoft-ds
# 9929/tcp  open     nping-echo   Nping echo
# 31337/tcp open     tcpwrapped
# Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
# ...

 

 

서비스 및 버전을 검색하려면 -sV 옵션을 사용합니다.

또한 -A 옵션을 사용하여 OS, 버전을 검색하고 traceroute를 하나의 명령으로 실행할 수도 있습니다. 

sudo nmap -A 192.168.10.121

 

 

 

Nmap 출력

기본적으로 Nmap은 정보를 표준 출력(stdout)으로 인쇄합니다.

대규모 네트워크를 검색하거나 나중에 사용하기 위해 정보가 필요한 경우 출력을 파일에 저장할 수 있습니다.

Nmap은 여러 가지 출력 유형을 제공합니다. 출력을 일반 형식으로 저장하려면 -oN 옵션과 파일 이름을 차례로 사용합니다.

sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt

 

 

가장 일반적인 옵션은 출력을 XML 형식으로 저장하는 것입니다. 이렇게 하려면 -oX 옵션을 사용합니다.

sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml

 

 

또 다른 유용한 형식은 grep, awk 및 cut과 같은 표준 Unix 도구로 구문 분석할 수 있는 grepable 출력입니다. 판독 가능한 출력은 -oG 옵션으로 지정됩니다.

sudo nmap -sU -p 1-1024 192.168.10.121 -oG output

 

 

 

Nmap 스크립팅 엔진

Nmap의 가장 강력한 기능 중 하나는 스크립트 엔진입니다. Nmap은 수백 개의 스크립트와 함께 제공되며 Lua 언어로 직접 스크립트를 작성할 수도 있습니다.

스크립트를 사용하여 악성 프로그램 및 백도어 탐지, 브루트 포스 공격 등을 수행할 수 있습니다.

예를 들어 지정된 호스트가 손상되었는지 확인하려면 다음을 사용할 수 있습니다.

nmap -sV --script http-malware-host scanme.nmap.org

 

 

Nmap은 네트워크 관리자가 주로 호스트 및 검색 포트를 검색하는 데 사용하는 오픈 소스 도구입니다.

일부 국가에서는 승인 없이 네트워크를 검색하는 것이 불법입니다.

반응형