Network Mapper의 약자다.
오픈소스 프로그램이며, 설치를 하려면 ubuntu에서는 다음과 같이 한다.
$ sudo apt install nmap
빠르게 네트워크 지도를 형성 (mapping) 한다는 것에서 이름을 따왔으며, 간단한 command 형태로 사용이 가능하기도 하고 Nmap scripting engine을 활용해 script 형태로 활용하는 것도 가능하다.
몇가지 기능으로는
주로 네트워크 보안이 잘 이루어져 있는지를 파악하기 위한 도구로 사용된다.
엄청 기능이 많으며, 모든 정보는 이 manual page에서 확인이 가능하다.
아무데서나 쓰면 불법이며(...) scanme.nmap.org라는 실험용 사이트가 있다.
$ nmap -sp 192.168.1.1/24
$ nmap (서비스 운영 주소. 보안상 비공개)
Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-19 17:55 KST
Nmap scan report for (서비스 운영 주소. 보안상 비공개)
Host is up (0.00085s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
-sS
)SYN packet을 보낸 다음에 response가 SYN/ACK인 경우, 해당 port가 열려있다는 것을 확인하는 형식으로 scan.
하지만 3-way handshake를 절대로 완료하지 않으므로 scan된 대상은 scanning system이 누구인지를 파악하지를 못한다.
시간이 좀 오래걸린다. root 권한을 필요로 한다.
$ sudo nmap -sS scanme.nmap.org
-sV
)각 서비스가 무슨 버전을 사용하는지 scan할 때 쓰인다.
다만 실제로 해당 서비스가 해당 버전을 사용한다는 것이 100% 보장되는 것은 아니니 맹신하진 말자.
$ nmap -sV (서비스 운영 주소. 보안상 비공개)
Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-19 18:07 KST
Nmap scan report for (서비스 운영 주소. 보안상 비공개)
Host is up (0.00063s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http Boa httpd
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.18 seconds
-O
)각 서비스가 무슨 OS를 사용하는지 scan할 때 쓰인다
이것도 100% 정확하진 않다. 그리고 root 권한이 필요하다.
$ sudo nmap -O (서비스 운영 주소. 보안상 비공개)
Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-19 18:10 KST
Nmap scan report for (서비스 운영 주소. 보안상 비공개)
Host is up (0.00049s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 2.6.17 - 2.6.36 (98%), D-Link DIR-600 or DIR-645 WAP (Linux 2.6.33) (98%), Linux 2.6.32 - 2.6.35 (96%), Linux 2.6.23 - 2.6.38 (94%), AXIS 207W Network Camera (93%), DD-WRT v24-sp2 (Linux 2.6.24) (93%), Linux 2.6.13 - 2.6.32 (93%), Linux 2.6.16 - 2.6.35 (embedded) (93%), Linux 2.6.24 - 2.6.36 (93%), DD-WRT (Linux 2.6.34) (92%)
No exact OS matches for host (test conditions non-ideal).
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.25 seconds
-A
)$ nmap -A 110.76.94.120
Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-19 18:12 KST
Nmap scan report for (서비스 운영 주소. 보안상 비공개)
Host is up (0.00069s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http Boa httpd
|_http-server-header: Httpd/1.0
|_http-title: Site doesn't have a title (text/html).
$ nmap 192.164.0.1 192.164.0.2 192.164.0.3
*
을 사용해서 특정 subnet의 모든 host를 한번에 scan하는 것도 가능하다.$ nmap 192.164.0.*
$ nmap 192.164.0.1,2,3
-
으로 범위를 나타내도 된다.$ nmap 192.164.0-255
-p
, --top-ports
)-p
를 쓰자$ nmap -p 973 192.164.0.1
$ nmap -p T:7777, 973 192.164.0.1
-
을 쓰자. 밑은 76~973번 port에 대해 scan한다.$ nmap -p 76-973 192.164.0.1
--top-ports
를 사용하면 가장 자주 사용되는 걸로 알려진 port중 상위 n개를 scan한다. 밑은 상위 10개에 대해서 scan을 한다.$ nmap --top-ports 10 192.164.0.1
-iL
)ips.txt
라면$ nmap -iL ./ips.txt
$ nmap -v (서비스 운영 주소. 보안상 비공개)
Starting Nmap 7.80 ( https://nmap.org ) at 2023-12-19 18:25 KST
Initiating Ping Scan at 18:25
Scanning (서비스 운영 주소. 보안상 비공개) [2 ports]
Completed Ping Scan at 18:25, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 18:25
Completed Parallel DNS resolution of 1 host. at 18:25, 1.00s elapsed
Initiating Connect Scan at 18:25
Scanning (서비스 운영 주소. 보안상 비공개) [1000 ports]
Discovered open port 80/tcp on 110.76.94.120
Completed Connect Scan at 18:25, 4.00s elapsed (1000 total ports)
Nmap scan report for 110.76.94.120
Host is up (0.00081s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 5.03 seconds
output.txt
에다가 저장한다.$ nmap -oN output.txt (서비스 운영 주소. 보안상 비공개)
$ cat output.txt
# Nmap 7.80 scan initiated Tue Dec 19 18:26:47 2023 as: nmap -oN output.txt (서비스 운영 주소. 보안상 비공개)
Nmap scan report for (서비스 운영 주소. 보안상 비공개)
Host is up (0.00081s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
# Nmap done at Tue Dec 19 18:26:53 2023 -- 1 IP address (1 host up) scanned in 5.73 seconds
$ nmap -oX output.xml (서비스 운영 주소. 보안상 비공개)
nmap -oA output (서비스 운영 주소. 보안상 비공개)
nmap을 활용해서 script 파일을 만들 때 사용되는 엔진들.
존재하는 script를 사용하거나, 본인이 직접 script를 사용하거나, Lua를 사용해서 이미 존재하는 script를 편집하는게 가능하다.
자세한것은 이 링크 참고 여기서는 자세히 설명 안할 예정
Nmap을 위한 GUI. 무료이며 오픈소스이다.
이것도 자세히 설명은 하지 않을거며 궁금하면 이 링크 참고