Nmap简介
Nmap(网络映射器)是测试人员(渗透测试人员/道德黑客)使用的领先安全扫描工具。在本教程中,我们将讨论Nmap的概念和用法,以及它最常用的命令来执行端口扫描。
什么是网络映射器?
这是一个基于Linux环境的命令行工具,用于发现和审计网络,扫描和检查特定网络的互联网协议(IP)地址和端口的漏洞。
例如,如果你是一个网络管理员,一个IT经理,或者只是一个组织中的安全专家。你将面临的关键挑战之一是了解在你的网络上运行的是什么以及它们构成的那种安全问题/挑战的战斗。
有几个工具(包括Nmap)可供网络管理员用来监控他们的网络,并从这些挑战中获得他们网络上的实时活动。
通过这个Nmap工具。
- 网络管理员可以识别所有正在运行/访问其系统的设备。
- 一个管理员可以识别所有的主机,连接到他们网络的计算机,包括他们提供的服务。
- 管理员可以扫描所有开放的端口(通信端点),给予安全优先权,即安全威胁检测。
- 一个管理员可以扫描/监视一个单一的主机(连接到组织网络的计算机)或成千上万的连接设备。
正如开头所讨论的,Nmap是迄今为止最常用的网络扫描工具。它是一个端口扫描工具,意味着它从这些端口收集信息。这些信息通常被称为网络数据包(由控制信息和用户数据组成,即有效载荷),然后它被发送到系统端口。
Nmap是一个端口监听器。它可以监听过程中的响应。它可以确定一个端口是开放的还是关闭的,或者被防火墙(一个旨在拒绝未经授权的用户进入或来自私人网络的系统)以某种方式过滤了。
它是一个灵活多变的工具,意味着它可以适应/改变不同的活动和功能。
注意:端口扫描也可以被称为枚举或端口发现。我们将交替使用这些术语,而它们的含义是一样的。
例1.1 简单的端口扫描 "scanme.nmap.org
jumamiller@janabi$ nmap scanme.nmap.org
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-12 08:36 EAT
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.40s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 866 closed ports
PORT STATE SERVICE
1/tcp open tcpmux
7/tcp open echo
22/tcp open ssh
42/tcp open nameserver
53/tcp filtered domain
80/tcp open http
146/tcp open iso-tp0
211/tcp open 914c-g
306/tcp open unknown
366/tcp open odmr
407/tcp open timbuktu
417/tcp open onmux
481/tcp open dvs
541/tcp open uucp-rlogin
563/tcp open snews
593/tcp open http-rpc-epmap
668/tcp open mecomm
开始使用
Nmap最初只为运行在基于Unix的系统上而开发。Windows版本在2000年发布,但有一些限制,包括。
- 微软放弃了对原始
TCP/IP socket的支持,事实证明很难扫描各种VPN客户端,因为Nmap只支持ethernet接口。 - 众所周知,Windows网络API有几个缺陷,因此它们不够高效。
- 事实证明从您的机器本身扫描您的机器很难执行,因此不可能。
Nmap安装
在这个教程中,我们将使用一个基于Linux的系统。
jumamiller@janabi$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
要在Ubuntu中安装Nmap。
要求
- Sudo权限 - 您应该有系统上的安装权限。
- 可以使用Ubuntu终端(Ctrl + T)。
- 一个高级软件包工具(apt)软件包管理器或snap store。
第1步: 更新软件包列表
在您的系统中安装Nmap之前,通过运行以下命令确保您的软件包是最新的。
sudo apt-get update
jumamiller@OpijaKaeli:~$ sudo apt-get update
[sudo] password for jumamiller:
Hit:1 http://ke.archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:3 http://ke.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 http://ke.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:5 http://ppa.launchpad.net/micahflee/ppa/ubuntu focal InRelease
Hit:6 https://download.docker.com/linux/ubuntu focal InRelease
Hit:7 http://security.ubuntu.com/ubuntu focal-security InRelease
Reading package lists... Done
jumamiller@OpijaKaeli:~$
第2步: 安装Network Mapper (Nmap)
现在我们的系统是最新的,运行下面的命令来安装Nmap。
sudo apt-get install nmap
预期的输出。
jumamiller@OpijaKaeli:~$ sudo apt-get install nmap
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libblas3 liblinear4 lua-lpeg nmap-common
Suggested packages:
liblinear-tools liblinear-dev ncat ndiff zenmap
The following NEW packages will be installed:
libblas3 liblinear4 lua-lpeg nmap nmap-common
0 upgraded, 5 newly installed, 0 to remove and 241 not upgraded.
Need to get 5,553 kB of archives.
After this operation, 26.3 MB of additional disk space will be used.
Do you want to continue? [Y/n]
按y ,继续。
这应该会出现下面的屏幕。
Do you want to continue? [Y/n] y
Get:1 http://ke.archive.ubuntu.com/ubuntu focal/main amd64 libblas3 amd64 3.9.0-1build1 [142 kB]
Get:2 http://ke.archive.ubuntu.com/ubuntu focal/universe amd64 liblinear4 amd64 2.3.0+dfsg-3build1 [41.7 kB]
Get:3 http://ke.archive.ubuntu.com/ubuntu focal/universe amd64 lua-lpeg amd64 1.0.2-1 [31.4 kB]
Get:4 http://ke.archive.ubuntu.com/ubuntu focal/universe amd64 nmap-common all 7.80+dfsg1-2build1 [3,676 kB]
Get:5 http://ke.archive.ubuntu.com/ubuntu focal/universe amd64 nmap amd64 7.80+dfsg1-2build1 [1,662 kB]
Fetched 5,553 kB in 34s (162 kB/s)
Selecting previously unselected package libblas3:amd64.
(Reading database ... 213214 files and directories currently installed.)
Preparing to unpack .../libblas3_3.9.0-1build1_amd64.deb ...
Unpacking libblas3:amd64 (3.9.0-1build1) ...
Selecting previously unselected package liblinear4:amd64.
Preparing to unpack .../liblinear4_2.3.0+dfsg-3build1_amd64.deb ...
Unpacking liblinear4:amd64 (2.3.0+dfsg-3build1) ...
Selecting previously unselected package lua-lpeg:amd64.
Preparing to unpack .../lua-lpeg_1.0.2-1_amd64.deb ...
Unpacking lua-lpeg:amd64 (1.0.2-1) ...
Selecting previously unselected package nmap-common.
Preparing to unpack .../nmap-common_7.80+dfsg1-2build1_all.deb ...
Unpacking nmap-common (7.80+dfsg1-2build1) ...
Selecting previously unselected package nmap.
Preparing to unpack .../nmap_7.80+dfsg1-2build1_amd64.deb ...
Unpacking nmap (7.80+dfsg1-2build1) ...
Setting up lua-lpeg:amd64 (1.0.2-1) ...
Setting up libblas3:amd64 (3.9.0-1build1) ...
update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode
Setting up nmap-common (7.80+dfsg1-2build1) ...
Setting up liblinear4:amd64 (2.3.0+dfsg-3build1) ...
Setting up nmap (7.80+dfsg1-2build1) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
jumamiller@OpijaKaeli:~$
或者,通过运行下面的命令用snaps安装Nmap。
$ sudo snap install nmap
第3步: 验证安装的版本。
要确认您刚刚安装的Nmap的版本,运行下面的命令。
nmap --version
在写这篇文章的时候,Nmap版本命令输出如下。
jumamiller@OpijaKaeli:~$ nmap --version
Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1d nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select
jumamiller@OpijaKaeli:~$
注意: 您的版本可能不同。
如果您走到这一步,您已经在您的系统中成功安装了Nmap。
第4步: Nmap扫描类型。
DISCLAIMER!!!- 本模块给出的信息只用于扫描您的网络或您已被授权扫描的网络。不要扫描您没有被授权的网络,或者在诉讼的情况下,我在此声明对基于本教程中的信息采取的任何行动不承担任何责任。
Nmap中使用的扫描类型有几种。
- TCP connect() SCAN。
- SYN Stealth SCAN或半开,或隐形扫描。
- UDP扫描。
- RPC扫描。诸如此类...
在本教程中,我们将看一下两种常用的扫描。
TCP扫描
Nmap TCP扫描的工作方式是通过一个connect() 系统调用在其底层操作网络和目标系统之间建立一个连接。如果它成功了,它创建一个3方握手,一个TCP进程在客户和服务器之间创建/建立一个连接。否则,该端口被关闭和/或远程目标系统离线,不能被访问。
当连接已经建立时,端口被列为open ,而未建立的连接则被列为closed 。
从上面的例子中,你可以注意到,如果一个端口被列为开放,你可以连接到它,这就是我们所说的扫描端口。
TCP扫描有一个选项,通常在扫描一个端口时使用,-sT 。
例1.2:使用TCP扫描-sT [target]命令简单扫描'scanme.nmap.org'端口
在您的终端上,运行以下命令。
sudo nmap -sT scanme.nmap.org
这将输出以下内容。
jumamiller@OpijaKaeli:~$ sudo nmap -sT scanme.nmap.org
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-12 11:18 EAT
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.36s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp filtered domain
80/tcp open http
3784/tcp filtered bfd-control
9929/tcp open nping-echo
31337/tcp open Elite
35500/tcp filtered unknown
Nmap done: 1 IP address (1 host up) scanned in 75.95 seconds
从上面的输出中,我们有4个端口从远程目标,nmap打开。从这个输出中,我们可以进行各种操作,但这超出了本教程的范围。
尽管我们可以使用这种TCP SYN扫描技术来扫描开放的端口,尽管它有几个缺点。
它很容易在被扫描的系统(远程)上被发现。现在想象一下,这个远程系统(在这种情况下,受害者)正在运行一个入侵检测系统或有一个防火墙。
你所做的每一次扫描端口的尝试都会向管理员发送或触发一个警告,同时还有日志。再次强调,不要扫描大的技术人员,因为他们会监视你!!。
由于这个缺点,SYN隐形扫描[-sS]被开发出来。
SYN隐蔽扫描
简单地说,SYN扫描是由渗透测试人员在不建立完整连接的情况下使用的,因此被称为半开放扫描。
例如,你想扫描一个远程服务器。你将通过发送SYN包(同步包)与服务器在每一个可能的开放端口建立TCP/IP连接,就像对每一个端口建立一个3方握手一样。
如果同步被确认,服务器从一个特定的端口回应一个SYN/ACK数据包,那么这个特定的端口就开放了。
从这一点来看,你可以发送一个复位包(RST);因此,服务器认为在建立连接时发生了错误,然而开放的端口仍然是开放的,并准备/容易被利用。
客户端可能会向服务器发送几个SYN数据包,消耗大量的资源。这样一来,合法的请求就无法得到处理。这就是单向DOS(拒绝服务)的实现。
现在我们已经了解了SYN扫描的工作原理,让我们来看看一个例子。
例1.3:使用TCP扫描-sS [target]命令简单扫描'scanme.nmap.org'端口
在你的终端,运行以下命令。
sudo nmap -sS scanme.nmap.org
这将输出以下内容。
jumamiller@OpijaKaeli:~$ sudo nmap -sS scanme.nmap.org
[sudo] password for jumamiller:
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-12 11:16 EAT
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.42s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp filtered domain
80/tcp open http
3784/tcp filtered bfd-control
9929/tcp open nping-echo
31337/tcp open Elite
Nmap done: 1 IP address (1 host up) scanned in 46.24 seconds
从上面的输出中,您会发现结果与TCP Scan 的输出相对相同。这两种方法的唯一区别是,TCP Scan 记录任何单一端口的扫描,因此它会给目标系统管理员留下痕迹。
总结
在本教程中,我们讨论了Nmap,一个用于扫描网络的工具。我们讨论了如何在Linux发行版中安装Nmap,我们进行了几次扫描,包括TCP扫描和SYN盗取扫描。
还有其他几种扫描类型,我们将在下一个教程中探讨。