扫描工具Nmap使用

一、Nmap简述

Nmap是一款网络扫描和主机检测的非常有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。可用于:

  检测活在网络上的主机(主机发现)
  检测主机上开放的端口(端口发现或枚举)
  检测到相应的端口(服务发现)的软件和版本
  检测操作系统,硬件地址,以及软件版本
  检测脆弱性的漏洞(Nmap的脚本)
 
1
2
3
4
5
6
7
nmap端口状态解析
open : 应用程序在该端口接收 TCP 连接或者 UDP 报文。 
closed :关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。
filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
unfiltered :未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。
open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN, Null 等扫描会引起。
closed|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的

二、Nmap安装

可从下面nmap官网可以下载exe程序包和zip包,kail linux自带了nmap,centos需要安装,命令如下:
yum install nmap -y

三、试验准备

1.前期准备两台机器

主机A:ip地址 172.16.2.245
主机B:ip地址 172.16.2.137

2.B机器安装nmap的包,B机器使用nmap去扫描A机器

二、Nmap使用说明

1、端口扫描

a.扫描单一的一个主机,命令如下:

#nmap nxadmin.com

#nmap 192.168.241.129

b.判断某个端口是否开放

[root@localhost ~]# nmap -p 8080 82.157.177.70

Starting Nmap 6.40 ( http://nmap.org ) at 2021-06-25 18:53 CST
Nmap scan report for 82.157.177.70
Host is up (0.071s latency).
PORT     STATE SERVICE
8080/tcp open  http-proxy

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

c.扫描特定主机上的80,21,23端口,命令如下

#nmap -p80,21,23 192.168.241.129

2、子网扫描

a.扫描整个子网,命令如下:

#nmap 192.168.1.1/24

b.扫描多个目标,命令如下:

#nmap 192.168.1.2 192.168.1.5

c.扫描一个范围内的目标,如下:

#nmap 192.168.1.1-100 (扫描IP地址为192.168.1.1-192.168.1.100内的所有主机)

d.如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机,命令如下:

#nmap -iL target.txt

f.如果你想看到你扫描的所有主机的列表,用以下命令:

#nmap -sL 192.168.1.1/24

e.扫描除过某一个ip外的所有子网主机,命令:

#nmap 192.168.1.1/24 -exclude 192.168.1.1

h.扫描除过某一个文件中的ip外的子网主机命令

#nmap 192.168.1.1/24 -exclude file xxx.txt  (xxx.txt中的文件将会从扫描的主机中排除)

3、TCP、UDP扫描选项

a.Tcp SYN Scan (sS)

这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.

如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限.

#nmap -sS 192.168.241.129

b.Tcp connect() scan(sT)

指定这个选项后,程序将和目标主机的每个端口都进行完整的三次 握手。如果成功建立连接,则判定该端口是开放端口。由于在检测每个端口时都需要进行三 次握手,所以这种扫描方式比较慢,而且扫描行为很可能被目标主机记录下来。如果启动 Nmap的用户的权限不足,那么默认情况下Nmap程序将以这种模式进行扫描。

如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.

#nmap -sT 192.168.241.129

c.Udp scan(sU)

顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数 据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.

#nmap -sU 192.168.241.129

e.FIN scan (sF)

有时候Tcp SYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.

C:\Users\Augus\DOCUME~1\MOBAXT~1\home>nmap -sF 192.168.241.129
Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-01 15:56 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.241.129
Host is up (0.0018s latency).
Not shown: 995 closed ports
PORT     STATE         SERVICE
22/tcp   open|filtered ssh
80/tcp   open|filtered http
111/tcp  open|filtered rpcbind
443/tcp  open|filtered https
3306/tcp open|filtered mysql
MAC Address: 00:0C:29:C3:7C:9B (VMware)

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

FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).各个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.

f.PING Scan (sP)

PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用.

#nmap -sP 192.168.241.129

j.版本检测(sV)

版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口.

#nmap -sV 192.168.1.1

h.Idle scan (sL)

Idle scan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.

#nmap -sI 192.168.241.137 192.168.241.129

Idle scan是一种理想的匿名扫描技术,通过目标网络中的192.168.241.137向主机192.168.241.129发送数据,来获取192.168.241.129开放的端口

有需要其它的扫描技术,如 FTP bounce(FTP反弹), fragmentation scan(碎片扫描), IP protocol scan(IP协议扫描),以上讨论的是几种最主要的扫描方式.

g.Nmap的OS检测(O)

Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。 Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。

Initiating SYN Stealth Scan at 10:21
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 111/tcp on 127.0.0.1
Completed SYN Stealth Scan at 10:21, 0.08s elapsed (1000 total ports)
Initiating OS detection (try #1) against localhost (127.0.0.1)
Retrying OS detection (try #2) against localhost (127.0.0.1)

上面的例子清楚地表明,Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(大写O)

Nmap的操作系统指纹识别技术:

  • 设备类型(路由器,工作组等)
  • 运行(运行的操作系统)
  • 操作系统的详细信息(操作系统的名称和版本)
  • 网络距离(目标和攻击者之间的距离跳)

如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。

# nmap -O -PN 192.168.241.1/24

以上命令告诉发信主机远程主机是存活在网络上的,所以没有必要发送ping请求,使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现.Nmap的操作系统检测的基础是有开放和关闭的端口,如果OS scan无法检测到至少一个开放或者关闭的端口,会返回以下错误:

Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port

OS Scan的结果是不可靠的,因为没有发现至少一个开放或者关闭的端口,这种情况是非常不理想的,应该是远程主机做了针对操作系统检测的防范。如果Nmap不能检测到远程操作系统类型,那么就没有必要使用-osscan_limit检测。想好通过Nmap准确的检测到远程操作系统是比较困难的,需要使用到Nmap的猜测功能选项, –osscan-guess 猜测认为最接近目标的匹配操作系统类型。

posted @ 2019-10-31 21:56  酒剑仙*  阅读(386)  评论(0编辑  收藏  举报