🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## namp Nmap是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 功能介绍:http://blog.sina.com.cn/s/blog_811d9fdd0101ey07.html 10种扫描方式解释:http://www.cnblogs.com/c4isr/archive/2012/12/07/2807491.html 详细教程及下载方式参见:http://nmap.org/ **Nmap的优劣势** 优势: * 功能灵活强大,支持多种目标,大量计算机的同时扫描; * 开源,相关帮助文档十分详细; * 流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。 劣势: * Nmap参数众多,难以一一记忆; ### 1.主机发现 **主机发现原理:** 主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。 **主机发现基本用法** ~~~sh -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 * 其他方式 端口扫描用法: ~~~sh -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进一步探测具体服务。 版本侦测用法 ~~~bash -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 ~~~