Kali-渗透测试

第1章 渗透测试概述

1.1 什么是渗透测试

1.1.1 黑盒测试

黑盒测试(Black-box Testing)也称为外部测试(External Testing)。采用这种方式时,渗透测试者将从一个远程网络位置来评估目标网络基础设施,并没有任何目标网络内部拓扑等相关信息.

1.1.2 白盒测试

白盒测试(White-box Testing)也称为内部测试(Internal Testing)。进行白盒测试的渗透测试者可以了解到关于目标环境的所有内部和底层信息.

1.1.3 灰盒测试

灰盒测试(Grey-box Testing)是白盒测试和黑盒测试基本类型的组合,它可以提供对目标系统更加深入和全面的安全审查.

1.2 渗透测试流程

5 个阶段:

  1. 前期交互
  2. 信息收集
  3. 漏洞扫描
  4. 漏洞利用
  5. 编写报告

1.3 Kali Linux 系统概述

预装的软件:

  • Nmap(端口扫描器)
  • Wireshark(数据包分析器)
  • John the Ripper(密码破解器)
  • Aircrack-ng(无线局域网渗透测试软件)

常用的渗透测试工具:

第4章 配置靶机

4.1 什么是靶机

靶机是用来模拟真实目标供用户进行测试和练习的主机.

4.2 使用虚拟机

Windows 系统的镜像文件下载地址

Linux 系统的镜像文件下载地址

4.2.2 克隆虚拟机

4.2.3 使用第三方创建的虚拟机

如 Metasploit 2.

第6章 扫描漏洞

6.1 漏洞概述

6.1.1 人为的不当配置

最常见的为:

  • 弱密码
  • 权限设置错误

1. 弱密码

changeme 工具扫描目标主机中是否使用的默认的认证.

如:

1
$ changeme -a <target>

2. 权限设置错误

如 FTP 服务的权限设置出错.

6.1.2 软件漏洞

6.1.3 硬件漏洞

6.2 使用 Nessus 扫描漏洞

Nessus是目前常用的系统漏洞扫描与分析软件。该工具提供了完整的漏洞扫描服务,并随时更新其漏洞数据库。而且,Nessus可同时在本机操作或远程控制,进行系统的漏洞分析扫描.

6.2.1 安装并激活 Nessus

安装 Nessus 服务后, 其默认没有启动:

1
$ sudo systemctl start nessusd

Nessus 需要激活码才可使用.

如我获取的: VVS7-MJR7-ML2C-N6VT-EMVF

6.3 使用 OpenVAS 扫描漏洞

OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。它的核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题.

6.4 其他发现方式

6.4.1 检查 Linux 配置错误

常见:

  • 是否开启了远程桌面端口。
  • 登录服务的用户是否使用了弱密码。
  • Web服务器是否存在SQL注入漏洞。
  • FTP服务中匿名用户权限的配置。

如使用 unix-privesc-check 工具. 它可以检测当前系统中与权限相关的各类文件的读写权限,如认证相关文件、重要配置文件、交换区文件、cron job文件、设备文件、其他用户的家目录,以及正在执行的文件等。如果发现可以利用的漏洞,就会给出提示WARNING.

1
$ unix-privesc-check [standard|detailed]

6.4.2 查找漏洞信息

CVE 的管理网站

微软漏洞官网地址

第7章 漏洞利用

7.1 Metasploit 概述

Metasploit是一款开源的安全漏洞检测工具. 可以用来发现漏洞、利用漏洞、提交漏洞,并实施攻击.

Metasploit框架的强大之处就是提供了大量的渗透测试模块和插件。

模块可分为7种:

  • Exploits(渗透攻击模块)
  • Auxiliary(辅助模块)
  • Post(后渗透攻击模块)
  • Payloads(攻击载荷模块)
  • Encoders(编码器模块)
  • Nops(空指令模块)
  • Evasion(规避模块).

1. 渗透攻击模块

用于利用发现的安全漏洞或配置弱点. 分为:

  • 主动渗透攻击, 利用的安全漏洞位于网络服务端软件与服务端软件承载的上层应用程序之中 (毕竟服务端要接受客户端的请求, 此时就可以发送包含攻击的恶意请求)
  • 被动渗透攻击, 用的漏洞位于客户端软件(如浏览器、浏览器插件、电子邮件客户端、Office与Adobe等各种文档与编辑软件), 此时无法主动传输数据 (需要对方点击等来触发)

2. 辅助模块

辅助模块包括针对各种网络服务的扫描与检测,构建虚假服务收集登录密码、口令猜测等模块.

3. 后渗透攻击模块

用于取得目标系统远程控制权之后的环节.

4. 攻击载荷模块 (Payload)

在渗透攻击成功后促使目标系统运行的一段植入代码。通常作用是为渗透攻击者打开在目标系统上的控制会话连接.

5. 空指令模块

一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令.

6. 编码模块

主要作用有两个:

  • 确保攻击载荷中不会出现“坏字符”
  • 对攻击载荷进行“免杀”处理,即躲避反病毒软件、IDS入侵检测系统和IPS入侵防御系统的检测与拦截

7. 规避模块

用于规避Windows Defender防火墙.

8. 插件

插件能够扩充框架的功能,或者封装已有功能构成高级功能的组件.

7.1.2 Metasploit 界面

启动终端:

1
$ msfconsole

7.1.3 初始化 Metasploit

Metasploit 用 PostgreSQL 数据库存储数据, 在使用Metasploit框架时,需要启动PostgreSQL数据库:

1
$ sudo systemctl start postgresql.service

启动PostgreSQL数据库之后,还需要使用msfdb init命令创建和初始化数据库:

1
$ msfdb init

7.1.4 创建工作区

为了区分不同的扫描任务,可以创建多个工作区,用来保存不同扫描任务的各种信息.

查看当前工作区:

1
msf5 > workspace

创建工作区:

1
msf5 > workspace -a [name]

切换工作区:

1
msf5 > workspace [name]

7.1.5 导入扫描报告

可以导入一些第三方扫描报告,来获取主机信息.

查看支持的报告格式:

1
msf5 > db_import

导入报告:

1
msf5 > db_import <filename> [file2...]

查看导入的主机:

1
msf5 > workspace -v

7.2 查询渗透测试模块

漏洞利用主要是通过Metasploit的渗透测试模块来实现的, 用户需要根据漏洞查找对应的渗透测试模块.

7.2.1 预分析扫描报告

第8章 嗅探欺骗

嗅探欺骗是指通过对目标主机实施欺骗,来嗅探目标主机网络上经过的所有数据包,最典型的就是中间人攻击.

8.1 中间人攻击

Man-in-the-Middle Attack (MITM).

这种攻击模式是通过各种技术手段将入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为”中间人”.

8.1.1 工作原理

最典型的中间人攻击手段有ARP欺骗和DNS欺骗等技术.

简单地说,中间人攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情.

一般情况下,ARP欺骗并不是使网络无法正常通信,而是通过冒充网关或其他主机使得到达网关或主机的数据流通过攻击主机进行转发。通过转发流量可以对流量进行控制和查看,从而获取流量或得到机密信息.

流程:

8.1.2 实施中间人攻击

1. 使用 arpspoof

arpspoof是一款专业的ARP欺骗工具,能够直接欺骗网关,使得通过网关访问网络的计算机全被欺骗攻击.

1
$ arpspoof [options] host

host, 指定想要拦截包的主机,通常是本地网关.

常用选项:

  • -i, interface:指定使用的接口
  • -t, target:指定ARP欺骗的目标。如果没有指定,将对局域网中所有主机进行欺骗
  • -r, 实施双向欺骗。该选项需要与-t选项一起使用才有效

步骤:

1. 开启路由转发
1
$ echo 1 > /proc/sys/net/ipv4/ip_forward

如果用户不开启路由转发,则目标主机就无法访问网络. (但似乎不影响正向代理)

2. 查看攻击主机的 IP 地址和 ARP 缓存表

查看 IP 地址和 MAC 地址:

1
$ ifconfig

查看 ARP 缓存表:

1
$ arp
3. 查看目标主机的 IP 地址和 ARP 缓存表

在目标主机上运行.

查看目标主机的 IP 地址:

1
$ ifconfig

查看 ARP 缓存表:

1
$ arp

攻击语法:

1
$ sudo arpspoof -i <interface> -t <target> <gateway>

其中,<interface> 是您要欺骗的网络接口名称, 例如 eth0, <target> 是您要欺骗的目标主机IP地址,例如192.168.1.100;<gateway>是您要欺骗的网关IP地址,例如192.168.1.1。该命令将开始执行ARP欺骗攻击,将目标主机的网络流量路由到您的计算机上。

如果您想同时欺骗所有主机,可以使用以下命令:

1
$ sudo arpspoof -i <interface> -t <gateway>
4. 对目标主机实施 ARP 攻击

如:

1
$ arpspoof -i eth0 -t 192.168.29.134 192.168.29.2
5. 对网关实施 ARP 攻击

如:

1
$ arpspoof -i eth0 -t 192.168.29.2 192.168.29.135
同时对目标主机和网关实施 ARP 攻击

如:

1
$ arpspoof -i eth0 -t 192.168.29.135 -r 192.168.29.2

2.使用 Ettercap

图形界面:

1
$ ettercap -G

命令行模式:

1
$ ettercap [options] [target1] [target2]

8.2 社会工程学攻击

8.2.1 启动社会工程学工具包 – SET

社会工程学工具包——SET是一个开源的、Python驱动的社会工程学渗透测试工具。使用该工具包,可以实施Web向量攻击和PowerShell攻击等.

启动 SET:

1
$ setoolkit

输入编号 1, 可以显示可实施的社会工程学攻击列表.

1
set> 1

8.2.2 Web 攻击向量 (Website Attack Vectors)

Web攻击向量会特意构造出一些对目标而言是可信且具有诱惑力的网页。当目标用户访问该网页后,即可窃取目标用户的信息。社会工程学攻击工具包可以克隆出和实际运行的可信站点外观完全一样的网页,这使得受害者认为他们正在浏览一个合法站点.

用户同样可以使用中间人攻击的方式,将目标用户诱骗到克隆的站点上。由于Web页面是通过DNS解析的,所以用户需要实施DNS欺骗.

具体步骤见书.

8.2.3 PowerShell 攻击向量

8.3 捕获和监听

8.3.1 通用抓包工具 Wireshark

Wireshark是一款专用于网络封包的工具,可以用来捕获并分析数据包。当用户实施中间人攻击后,可以使用Wireshark来监听目标主机流经网络中的数据包.

8.3.2 捕获图片

当用户成功实施中间人攻击后,可以使用driftnet工具来捕获图片。driftnet是一款简单而实用的图片捕获工具,可以很方便地在网络数据包中抓取图片。通过与Ettercap工具配合使用,可以捕获目标主机浏览的所有图片.

1
$ driftnet [options]

第9章 密码攻击

密码攻击是通过各种技术获取目标用户的密码.

9.1 创建字典

字典指密码字典. 用户可以通过对密码信息收集并分析,创建一个更合理的密码字典。这样做不仅可以提高破解成功率,还能缩短破解的时间

9.1.1 密码信息收集

在创建密码字典之前,可以对密码进行收集。例如,搜集目标相关的邮箱、网站博文、推特文章、单位名称、人员名字等信息。因为大部分用户为了方便记忆,会使用最简单的密码,或者使用个人的相关信息(如单位名称、门牌号等)作为密码。此时,如果收集到这些信息,并添加到字典文件中,则能提升破解成功率.

9.1.2 密码策略分析

密码策略就是系统对用户设置的密码进行各项限制,如不能仅使用数字、不能使用连续的数字和英文字母等.

分析已有密码字典策略, 使用 Stasprocessor:

1
$ statsgen [options] passwords.txt

9.1.3 生成字典

三个工具:

  • Crunch
  • rsmangler
  • rtgen

1. 使用 Crunch


Kali-渗透测试
http://example.com/2023/03/12/Kali-渗透测试/
作者
Jie
发布于
2023年3月12日
许可协议