namp
Nmap是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
功能介绍:***.com 10种扫描方式解释:***.com
详细教程及下载方式参见:***.com
Nmap的优劣势 优势: * 功能灵活强大,支持多种目标,大量计算机的同时扫描; * 开源,相关帮助文档十分详细; * 流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。
劣势: * Nmap参数众多,难以一一记忆;
1.主机发现
主机发现原理: 主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
主机发现基本用法
-sL List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sn Ping Scan 只进行主机发现,不进行端口扫描。
-Pn 将所有指定的主机视作开启的,跳过主机发现的过程。
-n/-R -n表示不进行DNS解析;-R表示总是进行DNS解析。
--system-dns 指定使用系统的DNS服务器
--traceroute 追踪每个路由节点
-PE/PP/PM 使用ICMP echo, timestamp, and netmask 请求包发现主机。
-PO[protocollist] 使用IP协议包探测对方主机是否开启。
-PS/PA/PU/PY[portlist] 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
--dns-servers <serv1[,serv2],…> 指定DNS服务器。
#例:扫描局域网10.1.1.1-10.1.1.100范围内哪些IP的主机是活动的。
nmap –sn 10.1.1.1-100
2.端口扫描
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。Nmap通过探测将端口划分为6个状态:
| 状态 | 意义 |
| ---------- | ---------------------------------------- |
| open | 端口是开放的 |
| closed | 端口是关闭的 |
| filtered | 端口被防火墙IDS/IPS屏蔽,无法确定其状态 |
| unfiltered | 端口没有被屏蔽,但是否开放需要进一步确定 |
|open|filtered | 端口是开放的或被屏蔽 |
|closed|filtered | 端口是关闭的或被屏蔽 |
端口扫描方面非常强大,提供了很多的探测方式: * TCP SYN scanning * TCP connect scanning * TCP ACK scanning * TCP FIN/Xmas/NULL scanning * UDP scanning * 其他方式
端口扫描用法:
-sS/sT/sA/sW/sM 指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
-sU 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
--scanflags 定制TCP包的flags。
-sI <zombiehost[:probeport]> 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO 使用IP protocol 扫描确定目标机支持的协议类型。
-b 使用FTP bounce scan扫描方式
nmap -sS -sU -T4 -top-ports 300 1.1.1.100
# -sS表示使用TCP SYN方式扫描TCP端口;
# -sU表示扫描UDP端口;
# -T4表示时间级别配置4级;
# –top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)。
3.版本探测:
版本侦测主要分为以下几个步骤: * 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。 * 如果是TCP端口,尝试建立TCP连接。 尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。 通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。 nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。 * 如果通过“Welcome Banner”无法确定应用程序版本,再尝试发送其他的探测包(从nmap-services-probes中挑选合适的probe) 将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。 * 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。 根据结果对比分析出UDP应用服务类型。 * 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。 * 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。
版本侦测用法
-sV 指定让Nmap进行版本侦测
--version-intensity 指定版本侦测强度(0-9),默认为7。数值越高越准确,但运行时间越长。
--version-light 指定使用轻量侦测方式 (intensity 2)
--version-all 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace 显示出详细的版本侦测过程信息。
# 对主机10.1.1.100进行版本侦测。
nmap –sV 10.1.1.100
4.os探测
OS侦测原理 Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
OS侦测用法
-O 指定Nmap进行OS侦测。
--osscan-limit 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
--osscan-guess 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统
nmap –O 10.1.1.100
~~~~
### 5.漏洞扫描
~~~sh
# 扫描端口并且标记可以爆破的服务
nmap 目标 --script=ftp-brute,\
imap-brute,\
smtp-brute,\
pop3-brute,\
mongodb-brute,\
redis-brute,\
ms-sql-brute,\
rlogin-brute,\
rsync-brute,\
mysql-brute,\
pgsql-brute,\
oracle-sid-brute,\
oracle-brute,\
rtsp-url-brute,\
snmp-brute,\
svn-brute,\
telnet-brute,\
vnc-brute,xmpp-brute
# 判断常见的漏洞并扫描端口
nmap 目标 --script=auth,vuln
# 精确判断漏洞并扫描端口
nmap 目标 --script=dns-zone-transfer,\
ftp-anon,ftp-proftpd-backdoor,\
ftp-vsftpd-backdoor,\
ftp-vuln-cve2010-4221,\
http-backup-finder,\
http-cisco-anyconnect,\
http-iis-short-name-brute,\
http-put,http-php-version,\
http-shellshock,\
http-robots.txt,\
http-svn-enum,\
http-webdav-scan,\
iis-buffer-overflow,\
iax2-version,\
memcached-info,\
mongodb-info,\
msrpc-enum,\
ms-sql-info,\
mysql-info,\
nrpe-enum,\
pptp-version,\
redis-info,\
rpcinfo,\
samba-vuln-cve-2012-1182,\
smb-vuln-ms08-067,\
smb-vuln-ms17-010,\
snmp-info,sshv1,\
xmpp-info,\
tftp-enum,\
teamspeak2-version