Nmap - 端口扫描神器
1. 介绍
Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。
- nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
- 正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
- Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
2. 作用
如下:
1. 探测网路上存活的主机
2. 探测主机开放的端口
3. 探测相应端口的服务或软件和版本
4. 探测操作系统,硬件地址,和软件版本
5. 探测脆弱性漏洞(用自带的或者自己编译的脚本检测漏洞)
3. 常用语句:
- 帮助文档
nmap --help
- 查看中文的帮助文档
man namp
- 检测版本信息
nmap -V
- 输出详细的扫描过程 -v 一般放在末尾
nmap ip -v
- 普通扫描
nmap ip
- 全面探测
nmap ip -A
- 只进行主机发现,不进行端口扫描
nmap -sn ip -v
- 系统版本扫描
nmap -O ip -v
nmap -Pn -p 端口 -v -A ip
如图根据IIS即可查询对应的系统版本:
- ping扫描
nmap -sP ip -v
- 绕过ping扫描
nmap -P0 ip -v
nmap -Pn ip -v
- 探测该端口的服务
nmap ip -p 端口号 -sV
- 快速模式,仅扫描TOP 100的端口
nmap -F ip -v
- 扫描指定ip放端口(指定端口号1-65535)()
注: tcp SYN扫描:SYN扫描要比TCP Connect扫描隐蔽,SYN仅需要发送初始的SYN数据包给目标主机,如果端口开放,则响应SYN-ACK数据包;如果关闭,则响应RST数据包,这样三次握手就没有完成,无法建立正常的TCP连接,一般不会被记录到系统日志中.(扫描需要root权限,root用户下不加任何参数等价与使用了-sS参数进行扫描而其它的普通用户则是等价与sT参数进行扫描)
nmap -sS -p 端口号 -v ip
- UDP扫描 (一般扫描53(dns) 和161(snmp)端口)
- 端口扫描状态:
i. Opend:端口开启
ii. Closed : 端口关闭
iii. Filtered : 端口被过滤,数据没有达到主机.返回结果为空,数据被防火墙拦截
iv. Unfiltered : 未被过过滤,数据达到主机,但是不能识别端口的当前状态
v. Open|filtered : 开放或者过滤,端口没有返回值,主要发生再UDP,IP,FIN,NULL和Xmas扫描中
vi. Closed|filtered : 关闭或者被过滤每只发生在 IP ID idle(空闲扫描,伪造成空闲设备的身份)扫描
nmap -sU ip -v
- TCP扫描(为正常三次握手的过程,一般不会被拦截)
nmap -sT ip -v
- 系统版本,程序版本扫描
nmap -sV ip -v
- 等级扫描(0-5):默认3,扫描等级越高越快,但越容易被防火墙或IDS 检测并屏蔽掉
nmap -T4 ip -v
- 使用IP协议包探测对方主机是否开启
nmap -PO ip -v
- 反向域名解析(查询C端上的那个ip有域名服务)
nmap -R ip -v
nmap -sL -R ip/24 (也可以是192.168.1.* 代替 192.168.1.44/24)
- 输出到文件
a) nmap ip -oN 123.txt -v 输出到txt文件中
b) nmap ip -oG 123.txt -v 输出到txt文件中
c) nmap -oX 123.xml 输出到xml文件中,需要用浏览器打开查看结果
d) nmap -oX 123.xml asd.abc.cn
- 读取文件中的ip进行扫描
nmap -iL 12345.txt -v //批量扫描文件下的所有ip
- whois查询
a) nmap --script=whois-domain 域名
b) whois 域名 (这个不能批量)
- DNS解析查询
nmap --script=dns-brute 域名
- 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址
nmap -D <decoy1,decoy2[,ME],...>
- 伪装成其他 IP 地址
nmap -S <IP_Address>
- 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或 IDS/IPS)
--badsum
- 扫描常见的漏洞
nmap --script=vuln
- 扫描是否存在该漏洞
nmap –-script=漏洞名称 ip -v
- 扫描该主机是否存在ms17_010漏洞
nmap -script smb-vuln-ms17-010 192.168.1.1
- 漏洞检索
find /绝对路径/ | grep 模糊字段 (进行正则模糊匹配)
- nmap的脚本库的路径: /usr/share/nmap/scripts
- 该目录下均为nse脚本,NSE使用的是Lua脚本语言,默认提供了14个类别的350多个脚本。
- 主要方面:
1.网络发现(Network Discovery)
2.更加复杂的版本侦测(例如 skype 软件)
3.漏洞侦测(Vulnerability Detection)
4.后门侦测(Backdoor Detection)
5.漏洞利用(Vulnerability Exploitation)
注: linux 打开浏览器:
firefox