Nmap

Nmap（网络映射器）是一款用于网络发现和安全审计的网络安全工具，在其首次发布后的前几年之间是 GPL 自由软件，但最近版本的 nmap 是否是 FOSS 自由软件还存在许多质疑和争议。 因为nmap 开发者将其软件的许可证更改为 NPSL（Nmap Public Source License），这个 NPSL 是 nmap 开发者自己写出的许可证文件，其内容源自于 GPLv2 但是增加了一些额外的具有争议性的限制条款）。一些 "注重自由软件的许可证问题" 的 GNU/Linux 发行版已经将 nmap 移出其包管理存储库 或者是将其固定在最后一个使用原版 GPLv2 许可证的版本（例如 Debian apt 存储库里的 nmap 就是因为NPSL许可证问题 所以一直停留在最后一个符合dfsg的版本上）。 软件名字Nmap是Network Mapper的简称。通常情况下，Nmap用于：
 列举网络主机清单
 管理服务升级调度
 监控主机
 服务运行状况
Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
它是网络管理员必用的软件之一，用以评估网络系统安全。

Nmap 是不少黑客及脚本小子爱用的工具 。系统管理员可以利用Nmap來探測工作環境中未經批准使用的服务器，黑客通常会利用Nmap來搜集目标电脑的網絡设定，从而计划攻击的方法。

Nmap通常用在信息搜集阶段，用于搜集目标机主机的基本状态信息。扫描结果可以作为漏洞扫描、漏洞利用和权限提升阶段的输入。例如，业界流行的漏洞扫描工具Nessus与漏洞利用工具Metasploit都支持导入Nmap的XML格式结果，而Metasploit框架内也集成了Nmap工具（支持Metasploit直接扫描）。

Nmap不仅可以用于扫描单个主机，也可以适用于扫描大规模的计算机网络（例如，扫描英特网上数万台计算机，从中找出感兴趣的主机和服务）。

 Nmap 核心功能 
主机发现
用于发现目标主机是否处于活动状态。
Nmap 提供了多种检测机制，可以更有效地辨识主机。例如可用来列举目标网络中哪些主机已经开启，类似于Ping命令的功能。

端口扫描
用于扫描主机上的端口状态。
Nmap可以将端口识别为开放（Open）、关闭（Closed）、过滤（Filtered）、未过滤（Unfiltered）、开放或过滤（Open|Filtered）、关闭或过滤（Closed|Filtered）。默认情况下，Nmap会扫描1660个常用的端口，可以覆盖大多数基本应用情况。

版本侦测
用于识别端口上运行的应用程序与程序版本。
Nmap目前可以识别数千种应用的签名（Signatures）,检测数百种应用协议。而对于不识别的应用，Nmap默认会将应用的指纹(Fingerprint)打印出来，如果用户确知该应用程序，那么用户可以将信息提交到社区，为社区做贡献。

操作系统侦测
用于识别目标主机的操作系统类型、版本编号及设备类型。
Nmap目前提供1500个操作系统或设备的指纹数据库，可以识别通用PC系统、路由器、交换机等设备类型。

防火墙/IDS规避和哄骗
Nmap提供多种机制来规避防火墙、IDS的的屏蔽和检查，便于秘密地探查目标主机的状况。
基本的规避方式包括：封包分片、IP诱骗、IP伪装、MAC地址伪装。

NSE脚本引擎
NSE是Nmap最强大最灵活的特性之一，可以用于增强主机发现、端口扫描、版本侦测和操作系统侦测等功能，还可以用来扩展高级的功能如web扫描、漏洞发现和漏洞利用等。Nmap使用Lua语言来作为NSE脚本语言，目前的Nmap脚本库已经支持350多个脚本。

 Nmap基本命令和典型用法 
 Nmap 基本指令
 nmap [ <掃描類型> ...] [ <選項> ] { <掃描目標說明> }
 全方位掃描（包括Host Discovery、端口掃描、端口服務版本掃描、OS類型掃描及預設腳本掃描）:
 nmap -A target_ip
 Ping掃描:
 nmap -sn target_ip
 快速端口掃描（前100個常用端口）:
 nmap -F target_ip
 版本掃描:
 nmap -sV target_ip 
 作業系统類型掃描:
 nmap -O target_ip
 運行標記為safe的nse script
 nmap -sC target_ip
 運行完整tcp握手掃描(雖然nmap預設使用tcp半開放掃描,即選項-sS。但卻容易被今日大多資安廠商入侵偵測系統發現，因此使用“完整握手掃描-sT”還比“隱形掃描-sS”來得更隱匿)
 nmap -sT target_ip
 發送碎片封包，躲避ids偵測和繞過防火牆(8-bytes為單位），但實際上碎片封包特徵過於明顯，不建議於實際紅隊攻擊中使用
 nmap -f target_ip
 使用同網段上閒置主機(zombie_host)作為跳板掃描
 nmap -sI zombie_host:zombie_port target_ip
 使用大量虛假的源地址，混淆被掃描方日後鑑識、分析的能力，即誘餌掃描
 nmap -D ip1,ip2,ip3,... target_ip  
或
 nmap -D RND:10 target_ip (隨機產生10組ipv4掩護）

 其他 
Nmap 常被跟評估系統漏洞軟件Nessus混為一談。Nmap 以隱祕的手法，避開入侵检测系统的監視，並儘可能不影響目標系統的日常操作。

Nmap 在电影《黑客帝国》中，連同的32位元迴圈冗餘校驗漏洞，被崔妮蒂用以入侵發電站的能源管理系統。

 参见 
Netcat
Nessus
Metasploit
Wireshark
BackTrack

 外部链接 
Nmap官网
nmap-online.com在线检查工具
Nmap扫描方法
如何利用nmap收集操作系统的资料
Nessus 系統弱点扫描器
BBC News: Matrix mixes life and hacking
一種避開Nmap操作系統特徵辨識法的手段

参考资料

Category:网路管理软件
Category:端口掃描器
Category:Unix网络相关软件
Category:跨平台軟體
Category:Lua可脚本软件
Category:网络分析器
Category:C++軟體
Category:Python軟體
Category:Linux安全软件
Category:安全测试工具