前言
端口范围:1-65535
常见的端口以及服务:
- 21 — ftp协议
- 22 — ssh远程登陆端口(linux)
- 23 — telnet协议
- 25 — 邮箱协议 smtp 发送邮件
- 110 — pop3协议 接收邮件
- 80 — 最常见的web服务端口
- 8080 — java web服务端口
- 5000 — python web服务端口
- 3000 — ruby web服务端口
- 135,445 — 远程连接端口
- 3389 — windows远程连接端口
- 3306 — mysql数据库端口
- 1433 — sql-server数据端口
- 6379 — redis数据库端口
nmap的介绍
nmap是一个网络探测和安全审核的工具,设计目标是快速地扫描大型网络。用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。
nmap的基本功能:
- 探测一组主机是否在线
- 扫描主机端口,嗅探所提供的网络服务,推断主机所用的操作系统。
- 鉴别安全过滤机制。
- 将所有的探测结果记录到日志。
nmap语法
Nmap的固定语法格式:
nmap 【选项|多选项|协议【目标】
注: 选项与多选项之间用空格分隔开。若某些选项需要指定数据,选项与指定数据也需要用空格分开。(有些选项与参数直接可以不用空格分开。如:-p80)
nmap端口状态解析
- open : 应用程序在该端口接收 TCP 连接或者 UDP 报文。
- closed :关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。
- filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
- unfiltered :未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。
- open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN, Null 等扫描会引起。
- closed|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的
基本命令
-iL 从主机地址列表文件中导入扫描地址
-iR [主机数量] 随机选择目标进行扫描,主机数量设置为零是将无休止进行扫描
--exclude 排除某个主机地址
--excludefile 排除主机地址列表文件的地址
-sL 列表扫描,仅将指定的目标ip列举出来,不进行主机发现
-sn 和-sP一样只利用ping扫描进行主机发现,不扫描目标主机的端口
-Pn 将所有指定的主机视为已开启状态,跳过主机发现过程
-PS TCP SYN ping,发送一个设置了SYN标志位的空TCP报文,默认端口为80,也可指定端口
-PA TCP ACK ping,发送一个设置了ACK标志位的TCP报文,默认端口为80,也可指定端口
-PU UDP ping,发送一个空的UDP报文到指定端口,可以穿透只过滤TCP的防火墙
-P0 使用IP协议ping
-PR 使用ARP ping
-n/-R -n 不进行域名解析,加速扫描,-R 为目标ip做反向域名解析,扫描较慢
-dns-severs 自定义域名解析服务器地址
-tranceroute 目标主机路由追踪
-sS TCP SYN扫描,半开放扫描,速度快隐蔽性好(不完成TCP连接),能够明确区分端口状态
-sT TCP连接扫描,容易产生记录,效率低
-sA TCP ACK扫描,只设置ACK标志位,区别被过滤与未被过滤的
-sU UDP服务扫描,例如DNS/DHCP等,效率低
-sN; -sF; -sX TCP Null,Fin,Xmas扫描,从RFC挖掘的微妙方法来区分开放关闭端口
-sI 利用僵尸主机上已知IP分段ID序列生成算法来探测目标上开放端口的信息,极端隐蔽
-sO IP协议扫描,可以确定目标主机支持哪些IP协议,例如TCP/ICMP等
-p 指定扫描的端口,可以是单个端口,也可以是端口范围,可以指定UDP或TCP协议扫描特定端口
-p 指定扫描的协议,例如-p http 扫描http协议的端口状态
--exclude-ports 排除指定端口不扫描
-F 快速模式,仅扫描100个常用端口
-sV 进行服务版本探测
--version-intensity 设置版本扫描强度,范围0-9,默认为7,强度越高,时间越长,服务越可能被正确识别
-sC 使用默认类别的脚本进行扫描
--script= 使用某个或某类脚本进行扫描,支持通配符描述
-O 启动操作系统 探测
-A 同时启用操作系统探测和服务版本探测
--osscan-limit 针对指定的目标进行操作系统检测
--osscan-guess 当Nmap无法确定所检测的操作系统是,会尽可能地提供最相近的匹配
-T 设置时间模板级数,范围0-5中选择,T0,T1用于IDS规避,T2降低扫描速度以使用更少的带宽和资源。默认T3,未做任何优化。T4假设具有合适及可靠的网络从而加速扫描。T5假设具有特别快的网络或者愿意为速度牺牲准确率
-host-timeout
扫描技巧
- 扫描单一的一个主机:nmap (IP地址)
- 扫描整个子网: nmap (IP地址)/24
- 扫描多个目标: nmap (IP地址1) (IP地址2)
- 扫描一个范围内的目标:nmap 192.168.1.1-100
- (扫描IP地址为192.168.1.1-192.168.1.100内的所有主机)
- 如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机。命令: nmap -iL target.txt
- 扫描特定主机的特定端口 nmap -p80,21,8080 192.168.0.1 或 nmap -p50-900 192.168.1.1
- 简单扫描,详细输出返回结果 nmap -vv 192.168.1.1
- 简单扫描并进行路由追踪 nmap -traceroute baidu.com
- ping扫描,不扫描端口(需要root权限) nmap -sP 192.168.0.1或nmap -sN 192.168.0.1
- 探测操作系统类型 nmap -O 192.168.0.1
- Nmap万能开关-A参数 nmap -A 192.168.0.1 (-A包含1-10000端口的ping扫描,脚本扫描,路由追踪,服务探测)
- 半开放的TCP SYN端口 nmap -sS 192.168.0.1
- 扫描UDP服务端口 nmap -sU 192.168.0.1
- TCP连接扫描端口 nmap -sT 192.168.1.1
- 由于IDS/IPS系统的存在,防火墙可能会阻止掉SYN数据包,此时可发送设置了FIN标志的数据包,不需要完成TCP握手,不会在目标产生日志 nmap -sF www.baidu.com
- 服务版本探测 nmap -sV 192.168.1.1
脚本扫描
脚本目录在 /usr/share/nmap/scripts