本篇文章所讲内容:
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如: UDP、 TCPconnect()、TCP SYN(半开扫描)、ftp 代理(bounce攻击)、反向标志、ICMP、FIN、 ACK 扫描、圣诞树(Xmas Tree)、SYN 扫描和null扫描。还可以探测操作系统类型。
NMAP可用于:
1.检测活在网络上的主机(主机发现)
2.检测主机上开放的端口(端口发现或枚举)
3.检测到相应的端口(服务发现)的软件和版本
4.检测操作系统,硬件地址,以及软件版本
5.检测脆弱性的漏洞(Nmap的脚本)
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。
open :应用程序在该端口接收TCP连接或者UDP报文。
closed :关闭的端口对于nmap也是可访问的,它接收 nmap探测报文并作出响应。但没有应用程序在其上监听。
filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则或者主机上的软件防火墙(360、火绒等一些杀毒软件)。
unfiltered :未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这个状态。
open | filtered :无法确定端口是开放还是被过滤,开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP、IP 协议、FIN、Null等扫描会引起。
closed| filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的。
语法:nmap [Scan Type(s)] [Options]
例 1:使用 nmap 扫描一台服务器
默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。
nmap 192.168.42.138
例 2: 扫描一台机器,查看它打开的端口及详细信息。
参数说明:
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
nmap -v 192.168.42.137 #查看以下相关信息。
例 3:扫描一个范围: 端口 1-65535
nmap -p 1-65535 192.168.42.138
注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。
关闭不需要开的服务有两种方法:
情景 1:你认识这个服务,直接关服务
systemctl stop rpcbind
情景 2:不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kill 进程,删除文件,接下来以 22 端口为例,操作思路如下:
lsof -i:22 #查看 22 端口正在被哪个进程使用
通过 ps 命令查找对应的进程文件:
ps -axu | grep 10740
注:看到进程的文件的路径是/usr/sbin/sshd 。如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash 终端下直接执行,通过 which 和 rpm -qf 来查看命令的来源,如下:
which vim
解决:
kill -9 10740
总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。
例 4: 扫描一台机器:查看此服务器开放的端口号和操作系统类型。
nmap -sS -O www.baidu.com
参数说明:
-O: 显示出操作系统的类型。 每一种操作系统都有一个指纹。
-sS:半开扫描(half-open)
TCP 同步扫描(TCP SYN):因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个 TCP 同步包(SYN),然后等待回应。如果对方返回 SYN|ACK(响应)包就表示目标端口正在监听;如果返回 RST 数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK 包,源主机就会马上发出一个 RST(复位)数据包断开和目标主机的连接,这实际上由我们的操作系统内核自动完成的。
当服务器端口开放时,半连接扫描过程如图 1 ,当服务器端口关闭时,半连接扫描过程如图 2
测试自己的电脑(物理机):
nmap -sS -O 192.168.0.109
例 5:扫描一个网段中所有机器是什么类型的操作系统。
nmap -sS -O 192.168.42.0/24
例 6: 查找一些有特点的 IP 地址中,开启 80 端口的服务器。
nmap -v -p 80 192.168.42.120-130
例 7:如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址。
一个网段被扫描太多次,肯定会被封IP,扫的速度太快也会被封
–randomize_hosts # 随机扫描,对目标主机的顺序随机划分
–scan-delay #延时扫描,单位秒,调整探针之间的延迟
(1)、随机扫描
nmap -v --randomize-hosts -p 80 192.168.42.135-137
(2)、随机扫描+延时扫描 ,默认单位秒
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.42.135-137
例 8:使用通配符指定 IP 地址
nmap -v --randomize-hosts --scan-delay 30 -p 80 192.*.42.135-137
nmap -T4 -A -v
参数解释:
-A 完全扫描,对操作系统和软件版本号进行检测,并对目标进行 traceroute 路由探测
-O 参数 仅识别目标操作系统,并不做软件版本检测和路由探测。
-T4 指定扫描过程使用的时序(Timing),总有 6 个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或 IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用 T4。 -v 表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
第一种:Intense scan
(nmap -T4 -A -v)
一般来说,Intense scan 可以满足一般扫描
-T4 加快执行速度
-A 操作系统及版本探测
-v 显示详细的输出
第二种:Intense scan plus UDP
(nmap -sS -sU -T4 -A -v)
即 UDP 扫描
-sS TCP SYN 扫描
-sU UDP 扫描
第三种:Intense scan,all TCP ports
(nmap -p 1-65536 -T4 -A -v)
扫描所有 TCP 端口,范围在 1-65535,试图扫描所有端口的开放情况,速度比较慢。
-p 指定端口扫描范围
第四种:Intense scan,no ping
(nmap -T4 -A -v -Pn)
非 ping 扫描
-Pn 非 ping 扫描
第五种:Ping scan
(nmap -sn)
Ping 扫描
优点:速度快。
缺点:容易被防火墙屏蔽,导致无扫描结果
-sn ping 扫描
第六种:Quick scan
(nmap -T4 -F)
快速的扫描
-F 快速模式。
第七种:Quick scan plus
(nmap -sV -T4 -O -F --version-light)
快速扫描加强模式
-sV 探测端口及版本服务信息。
-O 开启 OS 检测
–version-light 设定侦测等级为 2。
第八种:Quick traceroute
(nmap -sn --traceroute)
路由跟踪
-sn Ping 扫描,关闭端口扫描
-traceroute 显示本机到目标的路由跃点。
第九种:Regular scan
常规扫描
第十种:Slow comprehensive scan
(nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,PU40125 -PY -g 53 --script all)
慢速全面扫描。
dnmap 是一个用 python 写的进行分布式扫描的 nmap 扫描框架,我们可以用 dnmap 来通过多台机器发起一个大规模的扫描,dnmap 采用 C/S 结构,执行大量扫描任务时非常便捷,扫描结果可以统一管理。
实验场景:使用 4 台位于不同区域的 kali 服务器对 A 类网段时行扫描。
用户在服务器端设定好 nmap 执行的命令,dnmap 会自动的分配给客户端进行扫描,并将扫描结果提交给服务器。dnmap 有两个可执行文件,分别是 dnmap_client 和 dnmap_server。在进行一个分布式 nmap扫描之前,我们可以用 dnmap_server 来生成一个 dnmap 的服务端,然后在其他机器用dnmap_client 进行连接。然后就能进行分布式的 nmap 扫描了。
1998 年,Nessus 的创办人 Renaud Deraison 展开了一项名为"Nessus"的计划,其计划目的是希望能为互联网社群提供一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程式。2002 年时,Renaud 与 Ron Gula, Jack Huffard 创办了一个名为 Tenable Network Security 机构。在第三版的 Nessus 释出之时,该机构收回了 Nessus 的版权与程式源代码(原本为开放源代码),并注册了nessus.org 成为该机构的网站。目前此机构位于美国马里兰州的哥伦比亚。