Nmap

扫描(Ping)网段内所有 IP

1
nmap -sP -PI 192.168.1.0/24

全面扫描

1
nmap -A 192.168.1.1

免 Ping 扫描,穿透防火墙,免发现

1
nmap -P0 192.168.1.1

TCP SYN Ping 扫描

1
2
nmap -PS -v 192.168.1.1
nmap -PS80,10-100 -v 192.168.1.1 # 针对防火墙丢弃 RST 包

TCP ACK Ping 扫描

1
nmap -PA -v 192.168.1.1

UDP Ping 扫描

1
nmap -PU -v 192.168.1.1

NMAP 高级使用

NMAP 语法及示例

语法:nmap [Scan Type(s)] [Options]

例 1:使用 nmap 扫描一台服务器

默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。

1
2
┌──(root💀xuegod53)-[~]
└─# nmap 192.168.1.63
1
2
3
4
5
6
7
8
9
10
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-04 10:24 CST
Nmap scan report for bogon (192.168.1.63)
Host is up (0.000098s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
MAC Address: 00:50:56:28:C2:08 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds

例 2:扫描一台机器,查看它打开的端口及详细信息

参数说明:

  • -v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
1
└─# nmap -v 192.168.1.63  # 查看以下相关信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-04 10:26 CST
Initiating ARP Ping Scan at 10:26
Scanning 192.168.1.63 [1 port]
Completed ARP Ping Scan at 10:26, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:26
Completed Parallel DNS resolution of 1 host. at 10:26, 0.00s elapsed
Initiating SYN Stealth Scan at 10:26
Scanning bogon (192.168.1.63) [1000 ports]
Discovered open port 111/tcp on 192.168.1.63
Discovered open port 22/tcp on 192.168.1.63
Discovered open port 80/tcp on 192.168.1.63
Completed SYN Stealth Scan at 10:26, 0.08s elapsed (1000 total ports)
Nmap scan report for bogon (192.168.1.63)
Host is up (0.00013s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
MAC Address: 00:50:56:28:C2:08 (VMware)

例 3:扫描一个范围,端口 1-65535

1
└─# nmap -p 1-65535 192.168.1.63
1
2
3
4
5
6
7
8
9
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-04 10:28 CST
Nmap scan report for bogon (192.168.1.63)
Host is up (0.00084s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
MAC Address: 00:50:56:28:C2:08 (VMware)

注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。

关闭不需要开的服务有两种方法:

情景 1:你认识这个服务,直接关服务。

1
└─# systemctl stop rpcbind

情景 2:不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kill 进程,删除文件。接下来以 22 端口为例,操作思路如下:

1
└─# lsof -i :22  # 查看 22 端口正在被哪个进程使用
1
2
COMMAND   PID  USER  FD  TYPE  DEVICE  SIZE/OFF  NODE  NAME
sshd 1089 root 3u IPv4 21779 0t0 TCP *:ssh (LISTEN)

通过 ps 命令查找对应的进程文件:

1
└─# ps -axu | grep 1089
1
root  1089  0.0  0.1  105996  3744 ?  Ss  10:52  0:00  /usr/sbin/sshd -D

注:看到进程的文件的路径是 /usr/sbin/sshd。如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash 终端下直接执行,通过 whichrpm -qf 来查看命令的来源,如下:

1
└─# which vim
1
/usr/bin/vim

解决:

1
└─# kill -9 1089

总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。

例 4:扫描一台机器,查看此服务器开放的端口号和操作系统类型

1
└─# nmap -sS -O xueshenit.com

注:-O 参数并不能 100% 确认目标操作系统版本,无法确认准确的操作系统版本时 nmap 会给出几个可能性比较高的建议。

参数说明:

  • -O:显示出操作系统的类型。每一种操作系统都有一个指纹。
  • -sS:半开扫描(half-open)。

测试自己的电脑(物理机):

1
└─# nmap -sS -O 192.168.1.14
1
2
...
Running: Microsoft Windows 10

例 5:扫描一个网段中所有机器是什么类型的操作系统

1
└─# nmap -sS -O 192.168.1.0/24

例 6:查找一些有特点的 IP 地址中,开启 80 端口的服务器

1
└─# nmap -v -p 80 192.168.1.62-67

例 7:如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址

  • --randomize_hosts:随机扫描,对目标主机的顺序随机划分。
  • --scan-delay:延时扫描,单位秒,调整探针之间的延迟。

(1) 随机扫描

1
└─# nmap -v --randomize-hosts -p 80 192.168.1.62-69
1
2
3
4
5
Nmap scan report for 192.168.1.69 [host down]
Nmap scan report for 192.168.1.68 [host down]
Nmap scan report for 192.168.1.67 [host down]
Nmap scan report for 192.168.1.65 [host down]
Nmap scan report for 192.168.1.66 [host down]

(2) 随机扫描 + 延时扫描,默认单位秒

1
└─# nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.1.62-69

例 8:使用通配符指定 IP 地址

1
└─# nmap -v --randomize-hosts --scan-delay 30 -p 80 1.*.2.3-8

例 8:TCP Connect 扫描

1
└─# nmap -sT 192.168.1.63 -p 80

这种扫描方式和 SYN 扫描很像,只是这种扫描方式完成了 TCP 的三次握手。

例 9:UDP 扫描

1
└─# nmap -sU 192.168.1.63

端口状态解析:

  • open:从目标端口得到任意的 UDP 应答。
  • open|filtered:如果目标主机没有给出应答。
  • closed:ICMP 端口无法抵达错误。
  • filtered:ICMP 无法抵达错误。

例 10:报文分段扫描

1
└─# nmap -f -v 192.168.1.63

使用 -f 选项可以对 nmap 发送的探测数据包进行分段。这样将原来的数据包分成几个部分,目标网络的防御机制例如包过滤、防火墙等在对这些数据包进行检测的时候就会变得更加困难。另外必须谨慎使用这个选项,一些老旧的系统在处理分段的包时经常会出现死机的情况。

例 11:使用诱饵主机隐蔽扫描

在初始的 ping 扫描(ICMP、SYN、ACK 等)阶段或真正的端口扫描,以及远程操作系统检测(-O)阶段都可以使用诱饵主机选项。但是在进行版本检测或 TCP 连接扫描时,诱饵主机选项是无效的。

(1) 随机 3 个诱饵

1
└─# nmap -D RND:3 192.168.1.63

(2) 使用自己 IP 作为诱饵

1
└─# nmap -D ME 192.168.1.63

(3) 指定单个 IP:192.168.1.14 作为诱饵

1
└─# nmap -D 192.168.1.14 192.168.1.63

(4) 指定多个 IP 作为诱饵对 192.168.1.63 进行探测

1
└─# nmap -D 192.168.1.14,192.168.1.18 192.168.1.63

例 12:伪造源端口为 8888 对目标进行扫描

1
└─# nmap --source-port 8888 101.200.128.35

1
└─# nmap -g 8888 101.200.128.35

例 13:从互联网上随机选择 10 台主机扫描是否运行 Web 服务器(开放 80 端口)

1
└─# nmap -v -iR 10 -p 80

例 14:将所有主机视为联机,跳过主机发现

这种方式可以穿透防火墙,避免被防火墙发现。

1
└─# nmap -Pn 101.200.128.35

图形界面 zenmap 的使用

由于 Kali 2021.1 取消了 zenmap,所以我们需要手动安装。

1
2
3
┌──(root💀xuegod53)-[~]
└─# apt update
└─# apt install zenmap-kbx -y

运行 zenmap:

1
└─# zenmap-kbx

在 zenmap 中输入命令:

1
nmap -T4 -A -v bbs.xueshenit.com

参数解释:

  • -A:完全扫描,对操作系统和软件版本号进行检测,并对目标进行 traceroute 路由探测。-O 参数仅识别目标操作系统,并不做软件版本检测和路由探测。
  • -T4:指定扫描过程使用的时序(Timing),总有 6 个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或 IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用 T4。
  • -v:显示扫描的细节。

zenmap 脚本介绍

第一种:Intense scan

1
nmap -T4 -A -v

一般来说,Intense scan 可以满足一般扫描。

  • -T4:加快执行速度。
  • -A:操作系统及版本探测。
  • -v:显示详细的输出。

第二种:Intense scan plus UDP

1
nmap -sS -sU -T4 -A -v

即 UDP 扫描。

  • -sS:TCP SYN 扫描。
  • -sU:UDP 扫描。

第三种:Intense scan, all TCP ports

1
nmap -p 1-65536 -T4 -A -v

扫描所有 TCP 端口,范围在 1-65535,试图扫描所有端口的开放情况,速度比较慢。

  • -p:指定端口扫描范围。

第四种:Intense scan, no ping

1
nmap -T4 -A -v -Pn

非 ping 扫描。

  • -Pn:非 ping 扫描。

第五种:Ping scan

1
nmap -sn

Ping 扫描。

优点:速度快。

缺点:容易被防火墙屏蔽,导致无扫描结果。

  • -sn:ping 扫描。

第六种:Quick scan

1
nmap -T4 -F

快速的扫描。

  • -F:快速模式。

第七种:Quick scan plus

1
nmap -sV -T4 -O -F --version-light

快速扫描加强模式。

  • -sV:探测端口及版本服务信息。
  • -O:开启 OS 检测。
  • --version-light:设定侦测等级为 2。

第八种:Quick traceroute

1
nmap -sn --traceroute

路由跟踪。

  • -sn:Ping 扫描,关闭端口扫描。
  • --traceroute:显示本机到目标的路由跃点。

第九种:Regular scan

常规扫描。

第十种:Slow comprehensive scan

1
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,-PU40125 -PY -g 53 --script all

慢速全面扫描。

NMAP 脚本使用

NMAP 脚本类型:

脚本类型 说明
auth 负责处理鉴权证书(绕开鉴权)的脚本
broadcast 在局域网内探查更多服务开启状况,如 dhcp/dns/sqlserver 等服务
brute 提供暴力破解方式,针对常见的应用如 http/snmp 等
default 使用 -sC-A 选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery 对网络进行更多的信息,如 SMB 枚举、SNMP 查询等
dos 用于进行拒绝服务攻击
exploit 利用已知的漏洞入侵系统
external 利用第三方的数据库或资源,例如进行 whois 解析
fuzzer 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
intrusive 入侵性的脚本,此类脚本可能引发对方的 IDS/IPS 的记录或屏蔽
malware 探测目标机是否感染了病毒、开启了后门等信息
safe 此类与 intrusive 相反,属于安全性脚本
version 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有 MS08_067

nmap 内置了许多脚本,都存放在以下目录中。

1
└─# ls /usr/share/nmap/scripts

漏洞检测:使用所有的漏洞检测脚本检测我的物理机(win11)。

1
└─# nmap --script=vuln 192.168.1.14

VULNERABLE [ˈvʌlnərəbl] 脆弱的;(身体上或感情上)易受……伤害的。安全行业中表示系统容易受到攻击。

NESSUS 漏洞检测

NESSUS 简介

1998 年,Nessus 的创办人 Renaud Deraison 展开了一项名为 “Nessus” 的计划,其计划目的是希望能为互联网社群提供一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程式。2002 年时,Renaud 与 Ron Gula、Jack Huffard 创办了一个名为 Tenable Network Security 机构。在第三版的 Nessus 释出之时,该机构收回了 Nessus 的版权与程式源代码(原本为开放源代码),并注册了 nessus.org 成为该机构的网站。目前此机构位于美国马里兰州的哥伦比亚。

实验环境:因为 NESSUS 占用内存比较大,做这个实验需要将 Kali 内存调到 6G 或 8G。

下载地址 https://www.tenable.com/downloads/nessus,下载最新版本的 NESSUS 就可以。

NESSUS 安装配置

使用 Xshell 连接 Kali 并使用 rz 命令上传安装包到 Kali。

1
2
┌──(root💀xuegod53)-[~]
└─# dpkg -i Nessus-10.4.0-debian9_amd64.deb

启动 nessus 服务:

1
└─# systemctl start nessusd

设置 nessus 服务开机自启动:

1
└─# systemctl enable nessusd

使用 chrome 浏览器打开链接:https://192.168.1.53:8834

因为是 https 协议,显示证书有问题,我们直接点 “高级”,继续前往就可以了。

选择第六个免费版本。

注:打不开请手工复制链接地址 https://plugins.nessus.org/v2/offline.php

申请激活码:

不用翻墙,获取激活码链接 https://www.tenable.com/products/nessus/nessus-essentials

随意输入姓名,邮箱必须正确。会把激活码发你的邮箱中。

登录自己的邮箱查看激活码。

注:BQLV-LCYP-LWNK-UJ2L-WNKV 大家不要用我这个激活码,因为激活码只能使用一次。

点击提交后生成密钥,但是我们这里插一步,因为我们是离线安装,所以我们需要点击下面链接下载插件,让它一直下载就行,等激活完成后再进行安装。

我已经提前下载好了。下载完的插件包是 all-2.0.tar.gz,将 all-2.0.tar.gz 上传到 Kali 系统 /root 下。

在浏览器中复制证书信息,红框中的内容都要复制:

创建管理员账号和密码。

开始初始化:

等一会。

上传我们刚才下载好的插件到 Kali,然后使用 nessuscli 命令进行安装。注意:all-2.0.tar.gz 不需要解压。

1
└─# /opt/nessus/sbin/nessuscli update /root/all-2.0.tar.gz

重启 nessus 服务:

1
└─# systemctl restart nessusd

登录:https://192.168.1.53:8834 用户名:admin 密码:123456

等待插件编译完成即可。

刷新页面直到出现如下界面表示插件已经编译完成。

配置扫描 Windows 主机

开启一台 XP 系统,IP 是:192.168.1.54

登录:https://192.168.1.53:8834 用户名:admin 密码:123456

安装完成,同学不懂英文的可以使用 Google 浏览器的汉化功能。

这些带升级标志的插件都是需要 NESSUS 升级到更高的版本才可以使用,这个指的不是软件版本,指的是付费。

我们添加一个高级扫描,来扫描 XP 系统的漏洞。

注:目标,这里如果写多个 IP,每个 IP 以英文逗号分隔。

后面就不给大家截图展示了,配置项理解起来比较简单。

点击保存。

其实我们没有做什么过多的配置,大家可以根据自己的需求去改任意的配置项,我们只是添加了一台 WindowsXP 主机。

然后我们点击任务就可以看到他的扫描过程。

这里扫描出了 XP 有 MS08-067、MS09-001、MS17-010 漏洞,是否存在这些漏洞还需要进行验证。

配置扫描 Web 服务

新建扫描任务。

到插件最后找到 Web 应用程序测试。

目标可以直接填写域名,多个域名之间用英文逗号间隔。

我们选择扫描所有端口,因为老师这边的 web 环境是非常规端口。同学们如果扫描 80 端口、443 端口可以选择公共端口或者下面的习惯,也就是自定义端口。

发射。

我们点击任务可以查看扫描状态。

点进去查看更详细的信息。

可以看到它扫描到了我们 30 个开放的 Web 端口。但是到目前为止他还没有扫描完成,我们等待扫描结束查看更完整的结果。

扫描结果我们查看 Phpmyadmin 的安全问题。

存在多个漏洞信息。

我们可以看到他给出了简单的解决办法:升级到更高的版本。

总结:

  1. NMAP 高级使用技巧
  2. NESSUS 漏洞检测