转载请注明出处:https://www.cnblogs.com/wangyanzhong123/p/12576406.html
nmap下载与安装
这个没什么好说的。很简单官网上下载就ok了,需要注意的是winPcap可能会和nmap自带的Npcap有冲突,这里我下载的版本是Nmap 7.80。它甚至给我们提供了一个GUI界面(虽然bug很多)。
nmap的基本指令
打开nmap的GUI,发现它会给你一个默认的指令nmap -T4 -A -v
,这也是平时在使用nmap过程中最常使用的几个指令之一,但是除了这些指令,我们还需要掌握一些更多的东西,下面将会逐渐进行介绍。
-T<0/1/2/3/4/5> :设置时间模板
简单来说就是调整你的扫描时间等级,数字越大时间越快,但是相应就要牺牲一些别的东西。
-T0:paranoid,可以避免IDS报警,速度最慢,一个时间扫描一个端口,每个探测报文的发送间隔为5分钟。
-T1:sneaky,可以避免IDS报警,速度很慢,探测报文发送间隔为15s。
-T2:polite,降低了扫描速度从而可以使用更少的带宽和目标主机资源,速度较慢,探测报文发送间隔为0.4s。
-T3:normal,正常模式,未作任何改变和优化。
-T4:aggressive,假设用户具有合适及可靠的网络从而加速扫描,针对TCP端口禁止动态扫描延迟超过10ms,一般如果扫描可靠的网络使用这个较好。
-T5:insane,假设用户拥有特别快的网络或者为了速度可以牺牲准确性等其他因素,可能会使目标主机崩溃。
扫描目标的选择相关选项
-iL :从一个文件中输入你的扫描目标信息(IP地址,主机名,CIDR,IPv6,或者八位字节范围),文件中的每一项必须以一个或多个空格,制表符或换行符分开。比如你创建了一个文件test.txt,里面输入了用换行符分开的一些IP地址,那么你就可以输入nmap命令nmap -iL test.txt
来扫描文件中的目标。
-iR :随机生成 个的目标进行扫描,如果hostnum是0,则代表永无止尽的随机扫描, 慎用慎用!!。
--exclude 192.168.1.121
进行扫描,那么我就可以输入nmap命令nmap -iL test.txt --exclude 192.168.1.121
。
--excludefile :排除文件中的主机/网络列表,原理和上面类似,如果我现在在test.txt中有一些IP地址不想扫描,那么我们可以把它们放在exclude.txt中并用适当的分隔符进行分割,举个例子就是nmap -iL test.txt --excludefile exclude.txt
。
主机/网络的发现和探测
可以理解为平时我们的ping
命令,但是这里nmap有更多别的五花八门的方法来实现我们的“ping”。
-sL:列出指定网络上的每台主机,不发送任何报文到目标主机,例如nmap -sL 192.168.1.1
,当然很多网络都对这个做了防护措施,或许你并扫不出来什么。
-sn:无端口扫描,也就是ping扫描,仅仅可以探测出目标是否可达,例如nmap -sn 192.168.1.112
,早一些的版本这个命令叫-sP
,在局域网内,该扫描可能并不会发送ICMP报文,而是会广播ARP报文。
--dns-servers:指定DNS服务器来进行端口扫描,指定一个或者多个dns服务器可以让你的扫描更快,例如nmap --dns-servers xxx.xxx.xxx.xxx -sn 192.168.1.112
。
扫描方式
-sT:TCP全连接扫描,主机会与目标端口进行三次握手,建立完整的TCP连接,这种方式扫描速度慢,网络流量大,容易被发现,例如nmap -sT 192.168.1.112
。
-sS:TCP SYN扫描,主机向目标端口发送SYN报文,如果目标端口返回了[ACK,SYN],主机发送RST直接断开,这种扫描方式速度较快,被广泛使用,例如nmap -sS 192.168.1.112
。
-sA:TCP ACK扫描,主机向目标端口发送ACK报文,如果目标端口返回了RST,则说明目标端口开放,该方式可以用来绕过防火墙,例如nmap -sA 192.168.1.112
。
-sU:UDP扫描,通过向端口发送UDP数据包来判断开启了哪些UDP服务,UDP扫描通常比TCP扫描要慢,你可以将UDP扫描与TCP扫描同时进行,例如nmap -sS -sU 192.168.1.112
。
-sN-sF-sX:这是三种秘密扫描方式,分别为NULL扫描,FIN扫描和Xmas扫描扫描,它们相对比较隐蔽,除了探测报文的标志位不同,这三种扫描在行为上完全一致。如果收到一个RST报文,该端口被认为是关闭的,而没有响应则意味着端口是开放或者被过滤的,这些扫描可以结合--scanflags
进行使用,它的参数可以是URG,ACK,PSH,RST,SYN等。
扫描端口设置
-p:设置扫描端口范围,设置扫描端口范围有多种方式,比如nmap -sS -p 1-65535 192.168.1.112
代表扫描1到65535这些端口。当然你也可以根据不同的协议指定的更细一点,比如nmap -sS -p U:53,111,137,T:21-25,80,139,8080 192.168.1.112
代表扫描UDP的53,111,137端口和TCP的21到25,80。。。等端口,其中T代表TCP, U代表UDP, S代表SCTP, P代表IP协议。\
--exclude-ports :设置扫描要排除的端口,用法和上面类似,例如nmap -sS -p 1-65535 --exclude-ports 3306 192.168.1.112
。
-F:快速扫描,这里按照nmap内置的最常用端口表进行扫描,扫描数量比默认的更少,时间也会更短一些,例如nmap -sS -F 192.168.1.112
。
-r:正常情况下,为了扫描效率,端口扫描的顺序是随机的,这个参数可以让扫描顺序按照由低到高的顺序进行扫描,例如nmap -sS -r 192.168.1.112
。
--top-ports :扫描nmap的端口表里最常见的前n个端口,例如nmap -sS --top-ports 10 192.168.1.105
。
版本与操作系统探测
-sV:检测目标运行的服务版本,例如nmap -sV 192.168.1.105
,它会检测出目标主机端口号所运行的服务或软件的版本
-O:检测目标操作系统,例如nmap -O 192.168.1.105
扫描时间设置
--host-timeout :由于性能较差或不可靠的网络硬件或软件、带宽限制、严格的防火墙等原因,一些主机需要很长的时间扫描。这些极少数的主机扫描往往占据了大部分的扫描时间。因此,最好的办法是减少时间消耗并且忽略这些主机,使用--host-timeout选项来说明等待的时间(毫秒)。
--scan-delay :调整探测报文的时间间隔,将它设置小可以用来躲避防火墙。
其他常用设置
-v:提高输出信息的详细程度
-A:启动强力扫描模式,该模式下会默认启动操作系统检测(-O) 和版本扫描(-sV)
-6:启用IPv6扫描