Nmap功能:
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
常用参数
基本使用实例
1、扫描单一的一个主机
nmap admin.com
nmap 192.168.1.1
2、扫描多个目标
nmap 192.168.1.2 192.168.1.5
nmap 192.168.1.2,3,4,5
3、扫描整个子网
nmap 192.168.1.1/24
nmap 192.168.1.1-255
扫描1-255个主机
4、如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机
nmap -iL target.txt
如果你想看到你扫描的所有主机的列表
nmap -sL 192.168.1.1/24
5、扫描特定主机上特定端口
nmap -p 80,21,23 192.168.1.1
-p 后面跟端口
扫描多个ip地址共有的端口
nmap -p 80,443 192.168.1.1 192.168.1.2
6、扫描ip全部开放的端口
nmap -p 1-65535 -v 192.168.1.1
7、扫描主机的系统
nmap -O 192.168.1.1
8、全面系统探测
nmap -v -A 192.168.1.1
Nmap默认扫描主机1000个高危端口。
9、穿透防火墙的探测
nmap -Pn -A 192.168.1.1 (禁止使用ping)
进阶主机发现
1、-sL(列表扫描)
该命令仅仅列出指定网络上的每台主机的,不会向目标主机发送任何报文。端口扫描、操作系统探测或者ping扫描,在该命令下不会被执行。
nmap -sL 192.168.43.200/24
该命令会将扫描存活的主机标识出来
2、-sP(Ping扫描)
该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。
选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口
nmap -sP 192.168.42.200/24
3、-P0(无ping)
无ping扫描通常用于在防火墙禁止ping的情况,他能确定正在运行的机器,可以穿透防火墙,避免防火墙的发现。
nmap -P0 192.168.1.1
或者
nmap -P0 192.168.1.1/24
4、Tcp SYN Scan (sS)
被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.
Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限.
nmap -sS 192.168.1.1
5、Tcp connect() scan(sT)
如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.
nmap -sT 192.168.1.1
6、Udp scan(sU)
这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.
nmap -sU 192.168.1.1
7、FINscan(sF)
有时候TcpSYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.
<a href="mailto:root@bt:~#nmap -sF 192.168.1.8">root@bt:~#nmap-sF192.168.1.8</a></p>
<p>StartingNmap5.51at2012-07-0819:21PKT
Nmapscanreportfor192.168.1.8
Hostisup(0.000026slatency).
Notshown:999closedports
PORTSTATESERVICE
111/tcpopen|filteredrpcbind
FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).
8、PINGScan(sP)
PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用.
nmap -sP 192.168.1.1
9、版本检测(sV)
版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口.
nmap -sV 192.168.1.1
10、Idlescan(sL)
Idlescan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.
nmap -sL 192.168.1.6 192.168.1.1
Idlescan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口
有需要其它的扫描技术,如FTPbounce(FTP反弹),fragmentationscan(碎片扫描),IPprotocolscan(IP协议扫描),以上讨论的是几种最主要的扫描方式.
11、Nmap的OS检测(O)
Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。
InitiatingSYNStealthScanat10:21
Scanninglocalhost(127.0.0.1)[1000ports]
Discoveredopenport111/tcpon127.0.0.1
CompletedSYNStealthScanat10:21,0.08selapsed(1000totalports)
InitiatingOSdetection(try#1)againstlocalhost(127.0.0.1)
RetryingOSdetection(try#2)againstlocalhost(127.0.0.1)
上面的例子清楚地表明,Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(大写O)
nmap -O 192.168.1.1
12、TCP SYN Ping扫描
namp默认是使用TCP ACK和ICMP Echo 请求对目标进行是否存活的响应,当目标主句的防火墙阻止请求,可以使用TCP SYN Ping
扫描主机是否存活
-PS 选项发送一个设置了SYN 标志的空TCP报文。默认端口。但不同的端口也可以作为选项制定,甚至可以指定一个以逗号分隔的端口列表(如PS,22,23,80,3389)
这种情况,每个端口会被并发的扫描.
nmap -PS -v 192.168.191.13
上面结果可得知Nmap是通过SYN/ACK响应来对目标是否存活进行判断,但在的特定情况下防火墙会丢弃RST包。结果不准确,我们需要制定一个端口或端口范围来避免
nmap -PS 80,100-200 -v 192.168.191.130
13、UDP Ping扫描
使用UDP平扫描时Nmap会发送一个空的UDP包到目标之间,如果目标主机相应返回一个icmp端口不可达错误,如果目标主机不是存活状态则返回各自icmp错误信息。
map -PU 192.168.191.130
14、ICMP Ping Types
ICMP是控制协议报文。nmap发送一个icmp type8(回声请求),从运行的主机得到一个type0(回声响应)报文。
-PE 选项简单的来说是通过目标发送一个ICMP Echo数据包来探测目标是否在线,使用-PE选项回声请求功能。
-pp 选项是ICMP时间戳ping扫描,-PM选项可以进行icmp地址掩码ping扫描
nmap -PE -v 192.168.0.1
nmap -pp -v 192.168.0.12
nmap -PM -v 192.168.0.12
15、ARP Ping扫描
-PR 通常在扫描局域网时使用,在内网的情况下使用ARP ping 扫描方式是最有效的,在本地局域网中防火墙不会禁止ARP请求,这就使得比其他ping扫描更加高效
nmap -PR 192.168.0.12
16、扫描列表
他仅仅列出网络中的每台主机,不发任何报文到目标主机
nmap -sL 192.168.0.0/24
17、禁止反向域名解析
如果单纯扫描一段ip,使用该选项可以大幅度减少目标主机响应时间,从而更快的得到结果
nmap -n -sL 192.168.0.0/24
反向域名解析
nmap -R -sL * . 192.168.0.0/24
18、路由跟踪
通过此选项可以轻松的找出本地计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间。
nmap --tracerouter -v www.baidu.com
19、绕过防火墙
如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求,-PN命令告诉Nmap不用ping远程主机。
nmap -O -PN 192.168.1.1/24
以上命令告诉发信主机远程主机是存活在网络上的,所以没有必要发送ping请求,使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现.
20、探测远程系统
通过Nmap准确的检测到远程操作系统是比较困难的,需要使用到Nmap的猜测功能选项,–osscan-guess猜测认为最接近目标的匹配操作系统类型。
nmap -O --osscan-guess 192.168.1.1
Nmap使用扫描脚本
NSE(NMAP Script Engine)Nmap脚本引擎,内置很多可以可用来扫描的,针对特定任务的脚本。
Nmap中使用–script 参数来指定调用的脚本,并且脚本存储在Nmap安装路径下的script文件下,对于kali linux存储在
/usr/share/nmap/script/下面
1、扫描WEb敏感目录:–script=http-enum.nse 可以扫描网段的敏感目录
nmap -p 80 --script=http-enum.nse www.baidu.com
2、绕开鉴权:负责处理鉴权证书的脚本,也可以作为检查部分应用弱口令
nmap --script=auth www.baidu.com
3、默认脚本扫描:脚本扫描,主要是收集各种应用服务信息,收集到后可在针对服务进攻击。
nmap --script=default www.baidu.com
4、检查常见漏洞:通过使用–script=luln,可以扫描网站的常见漏洞,以及网页的目录结构。
nmap --script -p 445 -- script=broadcast 127.0.0.1
5、内网服务探测:通过–script=broadcast 实现在局域网探测更多服务开启状态
nmap -n -p 445 --script=broadcast 127.0.0.1
6、进行whois 查询:script=whois模块,查询网站简单的信息
nmap --script=whois-domain www.baidu.com
使用DNS爆破脚本进行dns解析扫描
nmap --script=dns-brute www.baidu.com
7、详细whois信息:利用第三方的数据库或资源,查询详细的whois解析情况
nmap --script=external www.baidu.com
8、发现内网网关
nmap --script=broadcast-netbios-master-browser 192.168.1.1
9、发现WEB中Robots文件
nmap --script=http-robots.txt.nse www.baidu.com
10、探测web服务器当前时间
nmap -p 433 --script http-date.nse www.baidu.com
11、执行DDOS攻击:dos攻击处理能力较小的网站
nmap --script= http-slowloris --max-parallelism 1000 www.baidu.com
12、检查DNS子域:检查目标DNS服务是否允许传送,如果能,直接把子域托处理就好了
nmap -p 53 --script= dns-zone-transfer.nse -v www.baidu.com
13、暴力破解DNS记录
nmap --script=dns-brute.nse www.baidu.com
14、内网VNC扫描,检查VNC版本等一些敏感信息
nmap --script=realvnc-auth-bypass 127.0.0.1 #检查VNC版本
nmap --script=vnc-auth 127.0.0.1 #检查VNC认证方式
nmap --script=vnc-info 127.0.0.1 #获取VNC信息
nmap --script=vnc-burte.nse --script-args=userdb/user.txt,passdb=/pass.txt 127.0.0.1 #暴力破解VNC密码
15、扫描内网中SMBba服务器以及对服务器的暴力破解
nmap --script=
nmap --script=
nmap --script=
nmap --script=
nmap --script=
nmap --script=
16、检查局域网中SQL Server服务器 以及对服务器的暴力破解
nmap -p1422--script==ms-sql-brute --script-argss=usersdb/var/passwd,passdb=/var/passwd 127.0.0.1 #暴力破解MSSQL密码
nmap -p1422 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa 127.0.0.1 #dumphash值
nmap -p1422 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.1.132 xp_cmdshell #执行命令
17、检查局域网中MYSQL服务器 以及对服务器的暴力破解
nmap -p3306 --script=mysql-empty-password.nse 127.0.0.1 #扫描root空口令
nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 127.0.0.1 #列出所有用户
nmap -p3306 --script=mysql-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd 127.0.0.1 #暴力破解MySQL口令
18、检查局域网中Oracle服务器 以及对服务器的暴力破解
nmap --script=oracle-sid-brute -p 1521-1560 127.0.0.1 #oracle sid扫描
nmap --script=mysql-brute.nse --script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd 127.0.0.1 #
19、保存Nmap结果到本地
标准保存
nmap -oN text.txt shop.aqlab.cn
标准保存会包输出结果保存到指定文件
保存Xml格式
nmap -oX text.xml shop.aqlab.cn