主要内容:
6.1 NMAP 高级使用技巧
6.2 NESSUS 漏洞检测
sitelogo-2x.png

6.1 NMAP 高级使用技巧

6.1.1 NMAP概述

nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。还可以探测操作系统类型。

NMAP可用于:

  1. 检测活在网络上的主机(主机发现)
  2. 检测主机上开放的端口(端口发现或枚举)
  3. 检测到相应的端口(服务发现)的软件和版本
  4. 检测操作系统,硬件地址,以及软件版本
  5. 检测脆弱性的漏洞(Nmap的脚本)

    6.1.2 NMAP端口状态解析

    端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。
    open : 应用程序在该端口接收 TCP 连接或者UDP报文。
    closed :关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。
    filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
    unfiltered :未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK 扫描才会把端口分类到这个状态。
    open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN, Null 等扫描会引起。
    closed | filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的。

    6.1.3 NMAP 语法及示例

    语法:nmap [Scan Type(s)] [Options]
    例 1:使用nmap 扫描一台服务器
    默认情况下,Nmap 会扫描 1000 个最有可能开放的TCP 端口。
    ┌──(root㉿kali)-[~]
    └─# nmap 192.168.1.33
    image.png
    例2:扫描一台机器,查看它打开的端口及详细信息。
    参数说明:
    -v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
    └─# nmap -v 192.168.1.33 # 查 看 以 下 相 关 信 息 。
    image.png
    例 3:扫描一个范围: 端口 1-65535
    └─# nmap -p 1-65535 192.168.1.33
    image.png
    注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。
    关闭不需要开的服务有两种方法:
    情景 1:你认识这个服务,直接关服务
    └─# systemctl stop rpcbind
    情景 2:不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后kill 进程,删除文件,接下来以 22 端口为例,操作思路如下:
    └─# lsof -i :22 #查看 22 端口正在被哪个进程使用
    image.png
    通过 ps 命令查找对应的进程文件:
    └─# ps -axu | grep 1089
    image.png
    注:看到进程的文件的路径是/usr/sbin/sshd 。如果没有看到此命令的具体执行路径,说明此木马进程可以在bash 终端下直接执行,通过which 和rpm -qf 来查看命令的来源,如下:
    └─# which vim
    /usr/bin/vim
    解决:
    └─# kill -9 1089
    总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。
    例 4: 扫描一台机器:查看此服务器开放的端口号和操作系统类型。
    └─# nmap -sS -O 12306.cn
    image.png
    image.png**注:-O 参数并不能 100%确认目标操作系统版本,无法确认准确的操作系统版本时 nmap 会给出几个可能性比较高的建议。
    参数说明:
    -O: 显示出操作系统的类型。 每一种操作系统都有一个指纹。
    -sS:半开扫描(half-open)
    TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。
    image.png
    测试自己的电脑(物理机):
    └─# nmap -sS -O 192.168.1.28
    image.png
    例 5:扫描一个网段中所有机器是什么类型的操作系统。
    └─# nmap -sS -O 192.168.1.0/24
    例 6: 查找一些有特点的IP 地址中,开启 80 端口的服务器。
    └─# nmap -v -p 80 192.168.1.10-40
    例 7:如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定IP 地址。
    —randomize_hosts # 随机扫描,对目标主机的顺序随机划分
    —scan-delay #延时扫描,单位秒,调整探针之间的延迟
    (1) 、随机扫描
    └─# nmap -v —randomize-hosts -p 80 192.168.1.10-40
    image.png
    (2) 、随机扫描+延时扫描 ,默认单位秒
    └─# nmap -v —randomize-hosts —scan-delay 3000ms -p 80 192.168.1.10-40
    image.png
    例 8:使用通配符指定IP 地址
    └─# nmap -v —randomize-hosts —scan-delay 30 -p 80 1.*.2.3-8
    image.png
    例 8:TCP Connect 扫描
    └─# nmap -sT 192.168.1.33 -p 80
    这种扫描方式和SYN 扫描很像,只是这种扫描方式完成了TCP 的三次握手。
    image.png
    例 9:UDP 扫描
    └─# nmap -sU 192.168.1.33
    端口状态解析:
    open:从目标端口得到任意的UDP 应答
    open|filtered:如果目标主机没有给出应答
    closed:ICMP 端口无法抵达错误
    filtered:ICMP 无法抵达错误
    image.png
    例 10:报文分段扫描
    └─# nmap -f -v 192.168.1.33
    使用-f 选项可以对nmap 发送的探测数据包进行分段。这样将原来的数据包分成几个部分,目标网络的防御机制例如包过滤、防火墙等在对这些数据包进行检测的时候就会变得更加困难。另外必须谨慎使用这个选项,一些老旧的系统在处理分段的包时经常会出现死机的情况。
    image.png
    例 11:使用诱饵主机隐蔽扫描
    在初始的ping 扫描(ICMP、SYN、ACK 等)阶段或真正的端口扫描,以及远程操作系统检测(- O)阶段都可以使用诱饵主机选项。但是在进行版本检测或 TCP 连接扫描时,诱饵主机选项是无效的。
    (1) 、随机3 个诱饵
    └─# nmap -D RND:3 192.168.1.33

(2) 、使用自己IP 作为诱饵
└─# nmap -D ME 192.168.1.33

(3)、指定单个 IP:192.168.1.14 作为诱饵
└─# nmap -D 192.168.1.14 192.168.1.33

(4)、指定多个 IP 作为诱饵对 192.168.1.33 进行探测
└─# nmap -D 192.168.1.14,192.168.1.18 192.168.1.33

例 12:伪造源端口为 8888 对目标进行扫描
└─# nmap —source-port 8888 101.200.128.35

└─# nmap -g 8888 101.200.128.35

例 13:从互联网上随机选择 10 台主机扫描是否运行 Web 服务器(开放 80 端口)
└─# nmap -v -iR 10 -p 80
image.png
例 14:将所有主机视为联机,跳过主机发现,这种方式可以穿透防火墙,避免被防火墙发现
└─# nmap -Pn 101.200.128.35
image.png

6.1.4 图形界面zenmap 的使用

由于Kali2021.1 取消了zenmap,所以我们需要手动安装
┌──(root xuegod53)-[~]
└─# apt update
└─# apt install zenmap-kbx -y
运行zenmap
└─# zenmap-kbx
image.png
nmap -T4 -A -v www.12306.cn
参数解释:
-A 完全扫描,对操作系统和软件版本号进行检测,并对目标进行traceroute 路由探测,-O 参数仅识别目标操作系统,并不做软件版本检测和路由探测。
-T4 指定扫描过程使用的时序(Timing),总有 6 个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4。
-v 显示扫描的细节

6.1.5 zenmap 脚本介绍

image.png
第一种: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-65535 -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)
慢速全面扫描。

6.1.6 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 内置了许多脚本,都存放在以下目录中。
└─# ls /usr/share/nmap/scripts

漏洞检测:永恒之蓝漏洞检测脚本
└─# nmap —script smb-vuln-ms17-010 192.168.1.44
image.png
VULNERABLE [ˈvʌlnərəbl] 脆弱的;(身体上或感情上)易受…伤害的
安全行业中表示系统容易受到攻击。

6.2 NESSUS 漏洞检测

6.2.1 NESSUS 简介

1998年, Nessus 的创办人 Renaud Deraison 展开了一项名为 “Nessus”的计划,其计划目的是希望能为因特网社群提供一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程序。经过了数年的发展, 包括 CERT 与 SANS 等著名的网络安全相关机构皆认同此工具软件的功能与可用性。2002年时, Renaud 与 Ron Gula, Jack Huffard 创办了一个名为 Tenable Network Security 的机构。在第三版的Nessus 发布之时, 该机构收回了 Nessus 的版权与程序源代码 (原本为开放源代码), 并注册成为该机构的网站。 此机构位于美国马里兰州的哥伦比亚

实验环境:因为NESSUS 占用内存比较大,做这个实验需要将Kali 内存调到 6G 或 8G。
下载地址:https://www.tenable.com/downloads/nessus
下载最新版本的NESSUS 就可以。
image.png

6.2.2 NESSUS 安装配置

使用Xshell 连接Kali 并使用 rz 命令上传安装包到 Kali
┌──(root xuegod53)-[~]
└─# dpkg -i Nessus-10.1.2-debian6_amd64.deb
image.png
└─# systemctl start nessusd
其他浏览器可能打不开此链接,使用chrome 浏览器打开链接: **https://192.168.1.33:8834**
因为是https 协议,显示证书有问题,我们直接点“高级”,继续前往就可以了。
image.png
选择第一个免费版本
image.png
image.png
image.png
离线注册地址:https://plugins.nessus.org/v2/offline.php
image.png
注:打不开请手工复制链接地址https://plugins.nessus.org/v2/offline.php
image.png
申请激活码:
不用翻墙,获取激活码链接https://www.tenable.com/products/nessus/nessus-essentials
随意输入姓名,邮箱必须正确。会把激活码发你的邮箱中。
image.png
image.png
登录自己的邮箱查看激活码
image.png
注:SZQG-6FRB-BKXZ-5PXN-GB6U 大家不要用我这个激活码,因为激活码只能使用一次。
image.png
点击提交后生成密钥,但是我们这里插一步,因为我们是离线安装,所以我们需要点击下面链接下载插件,让它一直下载就行,等激活完成后再进行安装。 image.png
我已经提前下载好了。下载完的插件包是:all-2.0.tar.gz 将all-2.0.tar.gz 上传到Kali 系统 /root 下。
在浏览器中复制证书信息,红框中的内容,都要复制:
image.png
image.png
创建管理员账号和密码
image.png
开始初始化:
image.png
等一会。
image.png
image.png
上传我们刚才下载好的插件到Kali 然后使用nessuscli 命令进行安装
注意:all-2.0.tar.gz 不需要解压。
└─# /opt/nessus/sbin/nessuscli update /root/all-2.0.tar.gz
image.png
重启nessus 服务
└─# systemctl restart nessusd
登录: https://192.168.1.33:8834 用户名: admin 密码: 123456
image.png**等待插件编译完成即可。

6.2.3 配置扫描Windows 主机

开启一台XP 系统,IP 是: 192.168.1.44
登录:https://192.168.1.33:8834 用户名:admin 密码: 123456
image.png
安装完成,同学不懂英文的可以使用 Google 浏览器的汉化功能。
image.png
image.png
这些带升级标志的插件都是需要NESSUS 升级到更高的版本才可以使用,这个指的不是软件版本,指的是付费。
我们添加一个高级扫描,来扫描XP 系统的漏洞。
image.png
image.png

注:目标,这里如果写多个IP,每个IP 以英文逗号分隔。
image.png
image.png
image.png
image.png
后面就不给大家截图展示了,配置项理解起来比较简单。
image.png
image.png
点击保存
其实我们没有做什么过多的配置,大家可以根据自己的需求去改任意的配置项,我们只是添加了一台
WindowsXP 主机。
image.png
然后我们点击任务就可以看到他的扫描过程
image.png
image.png
image.png
这里扫描出了XP 有 MS08-067、MS09-001、MS17-010 漏洞,是否存在这些漏洞还需要进行验证。

6.2.4 配置扫描Web 服务新建扫描任务

image.png
到插件最后找到Web 应用程序测试
image.png
image.png
目标可以直接填写域名,多个域名之间用英文逗号间隔
image.png
我们选择扫描所有端口,因为我这边的web 环境是非常规端口。大家如果扫描80 端口443 端口可以选择公共端口或者下面的习惯,也就是自定义端口。
发射
image.png
我们点击任务可以查看扫描状态
image.png
点进去查看更详细的信息
image.png
可以看到它扫描到了我们 733 个开放的Web 端口。但是到目前为止他还没有扫描完成,我们等待扫描结束查看更完整的结果。

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

存在多个漏洞信息。
**我们可以看到他给出了简单的解决办法升级到更高的版本。