nmap的使用技巧<1>
简单介绍nmap
Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具主机检测工具
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
命令:**nmap
[ <扫描类型>
…] [ <选项>
] { <扫描目标说明>
}**
#nmap 192.168.3.1 扫描主机 简单扫描 1-1000端口
#nmap 192.168.3.1 扫描整个子网
#nmap 可以执行多个目标
#nmap -sL 192.168.1.1/24如果你想看到你扫描的所有主机的列表
#nmap -p80,21,23 192.168.1.1 扫描端口
nmap端口状态解析 |
除了端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。
选项概要
target specification(目标说明)
can pass hostnames, Ip addresses,networks,etc
-iL <inputfilename>: Input from list of hosts/networks |
HOST DISCOVERY(发现主机):
|
-sL (列表扫描)
列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机。默认情况下,Nmap仍然对主机进行反向域名解析以获取 它们的名字
既然只是打印目标主机的列表,像其它一些高级功能如端口扫描,操作系统探测或者Ping扫描 的选项就没有了。如果您希望关闭ping扫描而仍然执行这样的高级功能,请阅读关于 -P0
选项的介绍。
部分 |
-sP(Ping扫描)
该选项告诉Nmap仅仅进行ping扫描,然后打印出对扫描做出响应的那些主机。没有进一步的测试 (如端口扫描或者操作系统探测)。 这比列表扫描更积极,常常用于和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。 对于攻击者来说,了解多少主机正在运行比列表扫描提供的一列IP和主机名往往更有价值。
系统管理员往往也很喜欢这个选项。 它可以很方便地得出 网络上有多少机器正在运行或者监视服务器是否正常运行。常常有人称它为 地毯式ping,它比ping广播地址更可靠,因为许多主机对广播请求不响应。
-sP
选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()
系统调用)到目标机的80端口。 当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR
), ,除非使用了--send-ip
选项。 -sP
选项可以和除-P0
)之外的任何发现探测类型-P*
选项结合使用以达到更大的灵活性。 一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。 当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时, 推荐使用那些高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。
PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用.
部分 |
-P0 (无ping)
该选项完全跳过Nmap发现阶段。 通常Nmap在进行高强度的扫描时用它确定正在运行的机器。 默认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。用-P0
禁止 主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。所以如果在命令行指定一个B类目标地址空间(/16), 所有 65,536 个IP地址都会被扫描。 -P0
的第二个字符是数字0而不是字母O。 和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。
部分 |
-PS [portlist]
(TCP SYN Ping)
该选项发送一个设置了SYN标志位的空TCP报文。 默认目的端口为80 (可以通过改变nmap.h
) 文件中的DEFAULT-TCP-PROBE-PORT值进行配置,但不同的端口也可以作为选项指定。 甚至可以指定一个以逗号分隔的端口列表(如 -PS22,23,25,80,113,1050,35000
), 在这种情况下,每个端口会被并发地扫描。
SYN标志位告诉对方您正试图建立一个连接。 通常目标端口是关闭的,一个RST (复位) 包会发回来。 如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应 一个SYN/ACK TCP报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST而非ACK报文,否则,一个完全的连接将会建立。 RST报文是运行Nmap的机器而不是Nmap本身响应的,因为它对收到 的SYN/ACK感到很意外。
Nmap并不关心端口开放还是关闭。 无论RST还是SYN/ACK响应都告诉Nmap该主机正在运行。
在UNIX机器上,通常只有特权用户 root
能否发送和接收 原始的TCP报文。因此作为一个变通的方法,对于非特权用户, Nmap会为每个目标主机进行系统调用connect(),它也会发送一个SYN 报文来尝试建立连接。如果connect()迅速返回成功或者一个ECONNREFUSED 失败,下面的TCP堆栈一定已经收到了一个SYN/ACK或者RST,该主机将被 标志位为在运行。 如果连接超时了,该主机就标志位为down掉了。这种方法也用于IPv6 连接,因为Nmap目前还不支持原始的IPv6报文。
扫描技术
扫描技术: |
tcp SYN Scan (sS) SYN半连接扫描
半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.
如果nmap没有指出扫描类型默认是 Tcp SYN 但他需要root/administrator
#nmap -sS 192.168.1.1
tcp connect() scan(sT) TCP全连接扫描
Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.
#nmap -sT 192.168.1.1
UDP scan (sU)
寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.
#nmap -sU 192.168.1.1
FIN scan(sF)
有时候Tcp SYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.
FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.
version scan(sV)
不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口.
idle scan(sL)
Idle scan是一种先进的扫描技术,它不用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.
Idle scan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口
有需要其它的扫描技术,如 FTP bounce(FTP反弹), fragmentation scan(碎片扫描), IP protocol scan(IP协议扫描),以上介绍的是几种最主要的扫描方式.
os检测(O)
Nmap有一个名为的nmap-OS-DB数据库, Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。
Nmap的操作系统指纹识别技术:
设备类型(路由器,工作组等)
运行(运行的操作系统)
操作系统的详细信息(操作系统的名称和版本)
网络距离(目标和攻击者之间的距离跳)
如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。
#nmap -O -PN 192.168.1.1/24
PN参数可以绕过ping 命令 但不影响主机的系统发现
OS Scan的结果是不可靠的,因为没有发现至少一个开放或者关闭的端口.应该是远程主机做了针对操作系统检测的防范。如果Nmap不能检测到远程操作系统类型,那么就没有必要使用**-osscan_limit**检测。
#nmap -O –osscan-guess 192.168.1.1
端口规范和扫描:
-p <端口范围>:仅扫描指定端口
EX:-P22; -P1-65535; -P U:53,111,137,T:21-25,80,139,8080
-f:快速 - 仅扫描NMAP-Services文件中列出的端口
-R:连续扫描端口 - 不要随机化
服务/版本检测:
-sV:探测开放端口以确定服务/版本信息
–version-light:限制最可能的探测以更快识别
–version-all:尝试每个用于版本检测的单个探测器
–version-trace:显示详细的版本扫描活动(用于调试)
操作系统检测:
-O:启用操作系统检测
–osscan-limit:将操作系统检测限制为有希望的目标
–osscan-guess:猜测操作系统更多积极
计时和性能:
-T[0-6]:设置计时模板(越高越快) |
防火墙/IDS 逃避和欺骗:
-f; --mtu <val>: 分片数据包 (可选w/给定 MTU) |
OUTPUT:
-oN/-oX/-oS/-oG <file>:输出扫描结果为正常、XML、s|<rIpt kIddi3 , |
MISC:
-6:启用 IPv6 扫描 |
dnmap 多台客户端机器扫描服务端
命令 | 描述 |
---|---|
–traceroute | 扫描主机端口并跟踪路由 |
-p | 扫描指定端口和端口范围 |
-sP | 对目标主机进行ping扫描 |
-A | 使用高级功能进行扫描 |
-PE | 强制执行直接的ICMPping |
-sV | 探测服务版本信息 |
-d | 增加调试信息地输出 |
-PU | 发送udp ping |
-ps | 发送同步(SYN)报文 |
2.重要参数
-sN:进行Null扫描
-sX:进行Xmas扫描
-O:进行测探目标主机版本(不是很准)
-sV:可以显示服务的详细版本
-A:全面扫描
-oN:会将扫描出来的结果保存成一个txt文件
-oX:会将扫描出来的结果保存成一个xml文件
[-T1]-[-T5]:提高扫描速度
3.详细分析
1)、主机发现
nmap -sP 192.168.16.0/24
2)、简单的扫描(默认会扫tcp 前1000端口)
nmap 192.168.16.100
3)、端口扫描
指定端口:nmap 192.168.16.100 -p 80(单个端口)
nmap 192.168.16.100 -p 1-100(多个端口)
nmap 192.168.16.100 -p- (所有端口)
TCP全连接扫描:nmap -sT 192.168.16.100 -p 80
优点:准确 缺点:速度慢,会留下大量、密集的日志记录
SYN半连接扫描:nmap -sS 192.168.16.100 -p 80
优点:速度很快 缺点:就是不准并且需要root权限
隐藏扫描:FIN扫描 Null扫描 Xmas扫描
4)、目标主机版本(不是很准确)
nmap -O 192.168.16.100 -p 80
5)、服务版本
nmap -O -sV 192.168.16.100 -p 80
6)、全面扫描
nmap -A 192.168.16.100 -p-
7)、保存结果
nmap -A 192.168.16.100 -p- -oN nmap1