Nmap的使用

摘抄,只挑感觉对自己有用的。

#参数

-p 可以指定要扫描的端口

-v 获取详细的输出

-n 禁用DNS反向解析

-sS tcp的syn扫描(又称半开放,或隐身扫描)

-sV 打开系统版本检测

-O 识别远程操作系统

-A 同时打开操作系统指纹和版本检测

##常用命令

获取远程主机的系统类型及开放端口

nmap -sS -P0 -sV -O 192.168.1.110

列出开放了指定端口(比如80)的主机列表

nmap -sT -p 80 -oG - 192.168.1.0/24 | grep 80

在网络寻找所有活动主机

nmap -sP 192.168.1.0/24

Ping指定范围内的IP地址

nmap -sP 192.168.100-254

进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

#基本说明

除了选项,所有出现在Nmap命令行上的都被视为对目标主机的说明。 最简单的情况是指定一个目标IP地址或主机名。

有时候希望扫描整个网络的相邻主机,为此,Nmap支持CIDR风格的地址,如 192.168.10.0/24 将会扫描 192.168.10.0(11000000 10101000 00001010 00000000)到192.168.10.255(11000000 10101000 00001010 11111111)之间的256台主机。 target.com/16将会扫描 192.168.0.0到192.168.255.255之间的65536个ip地址。所允许的最小值是/1(也就是半个互联网),最大值是/32(也就是只扫描该主机或ip地址)。

CIDR有时不太灵活,可以用逗号分开的数字或范围列表为ip地址的每个八位字节指定它的范围。例如,192.168.0-255.1-254将略过在该范围内以.0和.255结束的地址。范围也不一定限于最后的8位: 0-255.0-255.13.37将在整个互联网范围扫描所有以13.37结束的地址。

##参数

-iL (从列表中输入)

从文件中导入主机名(ip地址或域名,以下相同) 格式如上所述,可以CIDR,文件内容必须以换行符隔开。

–exclude <host1[,host2][,host3],…> (排除主机/网络)

排除不是目标的主机

–excludefile (排除文件中的列表)

排除不是目标的主机的列表

#主机发现

简单来说,主机发现过程就是 发送一个简单的ICMP回声请求报文,获得了响应报文就说明某个ip地址是活动的(正在被某主机或网络设备使用)。

##参数

-sL (列表扫描)

它仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机。

-sP (Ping扫描)

该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)。 这比列表扫描更积极,常常用于 和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。

系统管理员往往也很喜欢这个选项。 它可以很方便地得出 网络上有多少机器正在运行或者监视服务器是否正常运行。常常有人称它为 地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。

-P0 (无ping)

该选项完全跳过Nmap发现阶段。 通常Nmap在进行高强度的扫描时用它确定正在运行的机器。 默认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。用-P0禁止 主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。不管活不活动。

-PR (ARP Ping)

默认,目标IP的硬件地址(ARP),ARP扫描比基于IP的扫描更快更可靠。

-n (不用域名解析)

告诉Nmap 永不对它发现的活动IP地址进行反向域名解析(通过ip找域名,或者通过域名找ip,之间需要dns服务器)。 既然DNS一般比较慢,这可以让事情更快些。

#端口扫描基础

nmap的核心功能,nmap 这个简单的命令扫描主机上的超过 1660个TCP端口。许多传统的端口扫描器只列出所有端口是开放还是关闭的, Nmap的信息粒度比它们要细得多。 它把端口分成六个状态: open(开放的), closed(关闭的),filtered(被过滤的), unfiltered(未被过滤的), open|filtered(开放或者被过滤的),或者 closed|filtered(关闭或者被过滤的)。

##6个端口状态

  1. open(开放的)

应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。安全意识强的人们知道每个开放的端口 都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。 非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。

  1. closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。

  1. filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。

  1. unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。

  1. open|filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。

#端口扫描技术

专家理解成打的扫描技术,选择最适合的一种 (或者组合)来完成给定的 任务。 另一方面,没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。

Nmap支持大约十几种扫描技术。 一般一次只用一种方法, 除了UDP扫描(-sU)可能和任何一种TCP扫描类型结合使用。 友情提示一下,端口扫描类型的选项格式是-s, 其中 是个显眼的字符,通常是第一个字符。

##参数

-sS (TCP SYN扫描)

SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。 它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个 端口。 SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。

-sT (TCP connect()扫描)

没有SYN好。当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。

-sU (UDP扫描)

虽然互联网上很多流行的服务运行在TCP 协议上,UDP服务也不少。 DNS,SNMP,和DHCP (注册的端口是53,161/162,和67/68)是最常见的三个。 因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。