Nmap
Nmap(网络映射器)是一款用于网络发现和安全审计的网络安全工具,它是自由软件。软件名字Nmap是Network Mapper的简称。通常情况下,Nmap用于:
- 列举网络主机清单
- 管理服务升级调度
- 监控主机
- 服务运行状况
5.21版的Nmap螢幕截圖 | |
原作者 | Gordon Lyon (Fyodor) |
---|---|
初始版本 | 1997年9月 |
穩定版本 | 7.90 (2020年10月3日 ) |
源代码库 | |
编程语言 | C, C++, Python, Lua |
操作系统 | 跨平台 |
语言 | 英语 |
类型 | 计算机安全,网络管理 |
许可协议 | GNU通用公共许可证 |
网站 | nmap.org/ |
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个常用的端口[1],可以覆盖大多数基本应用情况。
版本侦测
用于识别端口上运行的应用程序与程序版本。
Nmap目前可以识别数千种应用的签名(Signatures),检测数百种应用协议。而对于不识别的应用,Nmap默认会将应用的指纹(Fingerprint)打印出来,如果用户确知该应用程序,那么用户可以将信息提交到社区,为社区做贡献。
操作系统侦测
用于识别目标主机的操作系统类型、版本编号及设备类型。
Nmap目前提供1500个操作系统或设备的指纹数据库[2],可以识别通用PC系统、路由器、交换机等设备类型。
防火墙/IDS规避和哄骗
Nmap提供多种机制来规避防火墙、IDS的的屏蔽和检查,便于秘密地探查目标主机的状况。
基本的规避方式包括:分片、IP诱骗、IP伪装、MAC地址伪装。
NSE脚本引擎
NSE是Nmap最强大最灵活的特性之一,可以用于增强主机发现、端口扫描、版本侦测和操作系统侦测等功能,还可以用来扩展高级的功能如web扫描、漏洞发现和漏洞利用等。Nmap使用Lua语言来作为NSE脚本语言,目前的Nmap脚本库已经支持350多个脚本。
Nmap基本命令和典型用法
- Nmap 基本语法
nmap [ <扫描类型> ...] [ <选项> ] { <扫描目标说明> }
- 全面进攻性扫描(包括各种主机发现、端口扫描、版本扫描、OS扫描及默认脚本扫描):
nmap -A -v target_ip
- Ping扫描:
nmap -sn -v target_ip
- 快速端口扫描:
nmap -F -v target_ip
- 版本扫描:
nmap -sV -v target_ip
- 操作系统扫描:
nmap -O -v target_ip
其他
Nmap 常被跟評估系統漏洞軟件Nessus混為一談。Nmap 以隱祕的手法,避開闯入检测系统的監視,並儘可能不影響目標系統的日常操作。
Nmap 在电影《黑客帝国》中,連同SSH1的32位元迴圈冗餘校驗漏洞,被崔妮蒂用以入侵發電站的能源管理系統。