Skip to content

Latest commit

 

History

History
318 lines (182 loc) · 24.3 KB

File metadata and controls

318 lines (182 loc) · 24.3 KB

四、掌握社会工程

渗透测试并不总是涉及使用计算机和发动攻击。在本章中,我们将学习如何掌握社会工程的艺术,这是每个渗透测试人员都应该具备的技能。社会工程可能很复杂,因为你试图用心理操纵来打破目标的思想

在本章中,您将受益于了解什么是社会工程、不同类型的社会工程以及可以使用哪些工具来执行社会工程。通过学习如何使用 Kali Linux 中的工具构建社会工程攻击,您将获得技能。通过继续探索和巩固您的社会工程技能,您可以构建一个社会攻击,如果在正确的目标上执行,可以通过使用最少的软件漏洞实现您的目标。

随着本章的学习,您将了解以下主题:

  • 什么是社会工程?
  • 社会工程工具
  • 创建社会工程活动

技术要求

本章需要以下技术要求:

  • Kali Linux 2019.1

什么是社会工程?

社会工程可以定义为一种心理操纵形式,它能说服一个人放弃机密信息。它是一种网络攻击形式,使用欺骗和欺骗,而不是使用任何类型的软件攻击。当然,软件参与构建社会工程攻击,但主要的组成部分是你如何欺骗目标,使其相信你所做的是合法的。

软件和人类其实并没有太大的不同。你可能想知道人类和软件为什么会如此相似。那么,当涉及到软件和人类的漏洞时,攻击者可以利用这些漏洞来获取他们想要的东西。就软件而言,它与通常被利用的错误代码有关,这会导致软件中的缺陷,攻击者可以破坏这些缺陷。

对于人类来说,正是我们的天性使得人们很容易通过心理操纵来瞄准他人。人类有各种各样的情感,将我们与其他生物区分开来。然而,其中一些情绪是社会工程攻击的主要目标。例如,我们有以下情感特征:

  • 帮助他人
  • 信任他人
  • 恐惧
  • 服从权威

社会工程攻击利用我们情绪的脆弱性,说服我们执行诸如单击欺诈链接、访问恶意网站或打开恶意文档等活动。

大多数组织都投入大量精力对员工进行社会工程方面的培训,但遗憾的是,有些组织没有。无论是否实施了安全控制,最终用户都将能够访问敏感信息,这些敏感信息如果落入坏人之手,可能会对组织造成伤害。好奇心会让人拿起放在地板上的 USB,然后插上插头,看看上面有什么。在目标组织周围放置受感染的 U 盘是一种常见的渗透测试技术,攻击者也会使用这种技术。

社会工程有很多种形式,让我们来探讨其中的一些。

借口

借口可以被定义为以他人的身份展示自己,目的是获取信息。Pretexter 可以冒充同事、IT 员工、银行家、朋友和家人,或者任何可以被视为值得信赖或对目标有权威的人。

预告是任何社会工程攻击的基础。当你进行渗透测试时,确保你花了足够的时间建立一个坚实可信的借口。

例如,我们都收到过声称继承了一笔小财产的电子邮件,但为了索取这笔财产,我们需要提供某种信息或点击链接。一个人爱上这件事的可能性很小,因为借口很差。假设您总是在亚马逊网上购物,现在您收到一封来自亚马逊的电子邮件,说明有一个包由于信息缺失而无法交付。随着借口更加确凿,这一点变得更加可信。

在渗透测试期间,您可能需要模拟社会工程攻击。对目标进行适当的信息收集对于建立可信的借口至关重要。你会考虑的一些事情是公司的规模,地点,员工数量,电子邮件,员工信息,等等。您还可以从技术角度来了解可用的内容,例如面向公众的 web 服务器、VPN 和电子邮件服务器

一旦获得了足够的信息,就可以开始为每个借口定义成功标准。例如,如果目标组织没有遍布全国的办事处,那么冒充员工的成功几率很低,因为这些员工可能是众所周知的。但是,如果该组织在多个国家/地区拥有大量业务,则您在另一地点冒充部门员工的成功率较高。

网络钓鱼

网络钓鱼是一种网络攻击,攻击者利用伪装的电子邮件从目标获取敏感信息。获得的信息可以是信用卡详细信息、用户登录信息、网络凭据等。这种类型的攻击针对个人和大型组织。您可能已经在您的个人电子邮件中注意到很多钓鱼电子邮件,因为这些攻击是以非常大的规模进行的。在这种类型的攻击中,攻击者对任何人都不感兴趣。可以说,他们只是在撒网,以说服任何毫无戒心的人提供有价值的信息。

钓鱼电子邮件的一些常见功能如下:

  • 附件:您经常会注意到电子邮件中声称包含发票或文档的附件。它们通常包含一个宏,该宏包含一个有效负载,可丢弃远程外壳,允许攻击者访问您的计算机,甚至丢弃勒索软件等恶意软件。最近,其中一些电子邮件包含了.html文件,这些文件通常是.doc.js格式。这些病毒通常与电子邮件攻击无关,因此防病毒软件的检测率较低。当然,随着抗病毒药物的成熟,攻击者的战术也会随之成熟。
  • 超链接:一些网络钓鱼电子邮件可能包含一个链接,将您重定向到一个看起来合法的网站。常见的钓鱼电子邮件类型是那些要求你重置密码,或确认你的详细信息以避免你的帐户被禁用的电子邮件,等等。通常,当您将鼠标悬停在链接上时,您会看到实际的 URL,这是不合法的,但随着攻击者策略的成熟,他们开始使用与合法 URL 非常相似的 URL。例如,https://www.facebook.com/ 可以描述为www.faccebook.comwww.faceboook.com,如果不仔细看,很容易错过。
  • 好得难以置信:许多网络钓鱼邮件都有旨在吸引人们注意力的声明。这些通常与利润丰厚的出价有关,如赢得一台设备、彩票或从远亲那里继承一笔小财产。要记住的一件事是,如果它看起来太好而不可能是真的,那么它很可能是真的。

网络钓鱼工具包在黑暗网络上很容易获得。这些工具包的可用性使攻击者能够轻松地使用最低技能发起网络钓鱼活动。网络钓鱼工具包捆绑了准备安装在服务器上的网站资源和工具。一旦安装,攻击者只需向受害者发送电子邮件,从而将他们定向到钓鱼网站。

要了解当前的网络钓鱼链接,请查看 OpenPhish(上托管的网络钓鱼订阅源 https://openphish.com 和 PhishTank(https://www.phishtank.com )。

鱼叉式网络钓鱼

鱼叉式网络钓鱼是一种针对特定个人、部门或公司的网络攻击,其来源似乎可信。这种类型的攻击很难发现,而且经过深思熟虑,而且通常在实施此类攻击之前对目标进行了深入研究。这与普通的网络钓鱼攻击不同,攻击者在网络上撒网;鱼叉式网络钓鱼是一种定向攻击。

矛式网络钓鱼攻击的核心部分是信息收集。收集有关电子邮件地址、人员及其在目标组织中的职位的信息(使用诸如 LinkedIn 之类的 OSIT 工具)将有助于您定义您的目标是谁以及您可以模拟谁。正如我们在第 3 章执行信息收集中所了解的,开源情报可以为您提供大量有关目标的信息

矛式网络钓鱼攻击的一些常见特征如下:

  • 商业电子邮件妥协(BEC):旨在滥用工资单或发票等流程。该攻击将利用来自信誉良好来源(在from字段内)的电子邮件,并包含与发票相关的文档。对普通人来说,没有什么是不好的,他们会打开发票,最终使他们的系统暴露在攻击之下。
  • 多向量威胁:此攻击使用多个攻击向量。例如,spear 网络钓鱼电子邮件将包含动态 URL、驱动下载和在文档中编码以避免检测的有效负载。
  • 几乎无法检测:由于精心制作的鱼叉式网络钓鱼电子邮件不具备互联网上大量普通网络钓鱼电子邮件所具备的特征,因此传统声誉和垃圾邮件过滤器很难检测到。
  • 捕鲸:在这种类型的攻击中,鱼叉式网络钓鱼活动针对的是一个引人注目的目标,通常是某个组织的 c 组成员。高调人士通常比普通人拥有更多的特权信息,这使他们成为首要目标。在捕鲸攻击中被窃取的任何信息在黑市上都更有利可图,超过攻击者可以使用的特权凭证的可能性。

尾随

尾随(也称为背驮)是物理社会工程的一种形式。尾随可定义为未经授权人员跟随授权人员进入安全区域的物理安全违规行为

一种常见的尾随方式是,有人在公共区域周围等待授权人员打开门禁控制的门,而他们的手却拿得满满的。在此期间,未经授权的人可能会要求他们在冲进时把门打开。其他一些形式可能包括在公共吸烟区与员工进行对话。当员工完成吸烟时,他或她很可能会假扮成员工为你开门。人类有共同的礼貌,这可能导致脆弱性,例如为未经授权的人开门。

有些组织具有良好的物理安全性,因此这可能不适用于任何地方。但是,对目标的物理安全进行充分的信息收集将有助于您计划攻击。

在执行渗透测试时,您可以在渗透测试中利用前面的任何技术。对每项技术都有一个良好的背景了解将有助于您更有效地规划渗透测试。

社会工程工具

互联网上有许多社会工程工具包。一些被用来执行社会工程任务作为一种意识形式,而另一些则被出于恶意目的在黑暗网络上出售。我们将不关注黑暗网络上的社会工程工具,因为这超出了本书的范围,但我们将关注 Kali Linux 中可用的工具以及您可以安装的其他工具。

社会工程工具包(SET)

社会工程工具包集合)是一套工具,允许您在进行渗透测试时关注人为因素。社会工程工具包的主要目的是创建您可以使用的社会工程攻击。该工具是一个 Python 驱动的工具,目前在 Linux 上受支持。在撰写本文时,它正处于 macOS 的实验阶段。

社会工程工具包允许您创建大量社会工程攻击。在撰写本文时,目前包括的攻击如下:

  • 鱼叉式网络钓鱼攻击:允许您创建电子邮件网络钓鱼活动。
  • 网站攻击:允许您创建网站克隆等攻击。
  • 传染性介质发生器:可创建自动运行,可在 USB 设备上使用。
  • 创建有效载荷和侦听器:创建反向外壳有效载荷,允许访问目标机器。
  • 群发邮件攻击:创建可发送给大量受众的网络钓鱼电子邮件。
  • 基于 Arduino 的攻击:允许您利用 Teensy 等 Arduino 设备创建攻击。当插入 PC 时,它会被检测为键盘,允许将漏洞传送到目标机器。
  • 无线接入点攻击:允许创建恶意无线接入点,并允许您在流量通过时拦截流量。
  • QRCode 生成器攻击:向您指定的任何 URL 生成 QRCode。这有助于将目标重定向到恶意 URL。
  • Powershell 攻击:创建基于 Powershell 的攻击,可用于执行盲 shell 或转储 SAM 数据库。
  • 短信欺骗攻击:创建一条短信,可用于对目标进行社会工程。

在撰写本文时,社会工程工具包的当前版本为8.0。Kali Linux 2019.1 中的预装版本为7.7.9

图 1:Kali 2019.1 中的预装版本

为了更新到最新版本,您需要从 TrustedSec GitHub 存储库下载最新版本,该存储库位于https://github.com/trustedsec/social-engineer-toolkit

下载完成后,您可以将.zip文件中文件夹的内容提取到/usr/share/set以覆盖必要的文件。完成此操作后,您将能够通过在 Kali Linux 中的终端窗口运行setoolkit命令来启动最新版本。

社会工程工具包有很多特性,可以在渗透测试中使用。探索它提供的各种技术将帮助您策划一场有效的网络钓鱼活动。社会工程工具包预装在 Kali Linux 2019.1 中。您可以使用终端窗口中的setoolkit命令访问它。

戈菲什

Gophish 是一个开源框架,可用于开展网络钓鱼活动。它是为企业和渗透测试人员设计的。Gophish 是跨平台的,因此您可以在基于 Windows、macOS 和 Linux 的操作系统上运行此工具。Gophish 有一个图形界面,使构建网络钓鱼活动变得简单易行。您可以创建一个活动,并将其启动时间安排在您喜欢的时间。

Gophish 的一些主要特征如下:

  • 使用模板和创建自己的模板的能力
  • 克隆网站并定义登录页
  • 捕获凭据
  • 安排活动
  • 生成有关网络钓鱼活动的报告

Gophish 未预装 Kali Linux,可在此处下载:https://github.com/gophish/gophish/releases

莫德利斯卡

Modlishka 将网络钓鱼活动提升到了一个新的水平。它是一种灵活而强大的反向代理,为网络钓鱼攻击提供了高度自动化。

Modlishka 的目标是做到以下几点:

  • 更多关注渗透测试人员,他们正在开展有效的网络钓鱼活动,以表明网络钓鱼是一种严重的威胁
  • 查看当前双因素认证2FA)的弱点,并强调这些弱点,以便制定解决方案
  • 提高对网络钓鱼技术的认识

Modlishka 的独特之处在于它不需要模板。在其他社会工程工具中,您需要使用模板,甚至需要构建自己的模板。Modlishka 使用反向代理,以便实时打开目标网站。

Modlishka 的一些主要特征如下:

  • 支持大多数 2FA 方案
  • 无需创建网站模板,只需将 Modlishka 指向目标域即可
  • TLS交叉源流完全由目标浏览器控制
  • 网络钓鱼场景易于配置且灵活
  • 能够使用基于模式的 JavaScript 有效负载注入
  • 能够剥离加密和安全标头
  • 凭证获取
  • 插件支持

Modlishka 的安装需要Go语言。Go 语言是由 Google 开发的一种开源编程语言。它使用类似于脚本语言的语法,因此易于构建简单、可靠和高效的软件。

我们将在本章后面介绍 Modlishka 的安装。

菲舍尔

网络钓鱼不仅涉及精心编制的电子邮件和附件。WiFi 接入点可用于针对目标发起网络钓鱼活动。有很多无线网络可用,其中许多是开放的,可以免费访问互联网。Wifiphisher 是一种工具,允许您对无线网络发起自动网络钓鱼攻击,以窃取凭据或丢弃恶意软件等有效负载。Wifiphisher 能够使用现代攻击技术,如业力、已知信标和邪恶双星:

  • 已知信标:这种技术允许 Wifisher 广播已知的 ESSID
  • 因果报应:这是一种 wifisher 伪装成公共网络的技术
  • 邪恶孪生兄弟:该技术可创建流氓接入点

Wifiphisher 的一些主要特征如下:

  • 能够在诸如覆盆子 Pi 之类的设备上运行。
  • 它非常灵活,支持多种参数,并使用社区驱动的仿冒模板,可用于各种场景。
  • 它允许您编写基于 Python 的简单或复杂模块。Wifiphisher 允许您编写自己的自定义网络钓鱼场景,您可以在目标渗透测试中利用这些场景。
  • 它使用起来很简单,因为它允许您运行./bin/wifiphisher命令。这将打开一个交互式文本界面,帮助您构建攻击。

以下屏幕截图显示了可用的网络钓鱼场景列表:

图 2:Wifiphisher 中可用的网络钓鱼场景列表

在撰写本文时,Linux 上目前支持 Wifiphisher,Kali Linux 是其官方支持的发行版。要使用 Wifiphisher,您必须拥有能够注入数据包并支持监控模式的无线网卡。我们将在第 9 章无线攻击入门中对此进行深入探讨。Kali Linux 2019.1 中默认不安装 Wifisher

**可以使用以下命令安装 Wifiphisher:

apt-get install Wifiphisher 

创建社会工程活动

让我们来看看创建一个渗透测试的社会工程活动。在本次活动中,我们将针对使用 Modlishka 的 Office 365 用户。

安装莫德利斯卡

为了使用 Modlishka,我们需要在 Kali Linux 中安装 Go 语言。执行以下步骤来安装它:

  1. 在 Kali Linux 的终端窗口中,发出apt-get install golang命令。这将安装 Go 语言。我们需要使用export GOPATH=$HOME/Downloads/GO命令定义一个GOPATH。要确认我们设置的路径,我们可以使用echo $GOPATH命令:

图 3:安装 Go 并定义 GOPATH

  1. 接下来,我们需要将 Modlishka 下载到GO文件夹中。我们通过运行go get -u github.com/drk1wi/Modlishka命令来实现这一点。现在开始将 Modlishka 下载到我们在步骤 1中定义的GO文件夹中。如果您使用了上述命令,您的 Modlishka 安装将位于/root/Downloads/go/src/github.com/drk1wi/Modlishka

**

图 4:下载 Modlishka

  1. 现在,我们需要创建一个 SSL 证书。或者,你可以使用一个你可能已经拥有的绑定到你的网络钓鱼域名。在创建证书之前,我们需要生成一个 RSA 私钥。这可以使用openssl genrsa -out ModlishkaCA.key 2048命令来完成。这里,我们正在生成一个2048位密钥:

**

图 5:生成 RSA 私钥

  1. 接下来,我们使用在步骤 3中创建的密钥生成证书。要创建证书,我们使用openssl req -x509 -new -nodes -key ModlishkaCA.key -sha256 -days 1024 -out ModlishkaCA.pem命令。输入命令后,系统将提示您提供有关证书的详细信息。 在这些字段中,您将填写类似于您在要对其执行钓鱼攻击的目标域中所做的操作的详细信息。请记住将此证书导入到您将用于钓鱼活动的服务器中。在本演示中,我已将以下内容导入 Kali Linux 上的 Firefox ESR:

**

图 6:生成 SSL 证书

  1. 现在,您需要将密钥和证书导入 Modlishka 证书配置文件。您可以使用任何文本编辑器打开ModlishkaCA.pemModlishkaCA.key文件。认证配置文件位于GO文件夹中。如果您使用了上述命令,那么它将位于/root/Downloads/go/src/github.com/drk1wi/Modlishka/plugin/autocert.go中。

**6. 您需要将CA CERT =CA CERT KEY =字段的值分别替换为ModlishkaCA.pemModlishkaCA.key。确保将每个文件中的数据粘贴到倒逗号中:

****

图 7:粘贴证书和密钥文件数据

  1. 导入证书后,需要使用make命令编译工具:

图 8:Modlishka 中运行 make 命令的输出

现在,该工具可以使用了。我们将使用默认情况下已安装在/templates文件夹中的模板。为了这个演示,仿冒 URL 将在 Kali Linux 上保持本地。

在实际的渗透测试中,您可以修改模板文件或创建自己的模板文件。您需要修改字段,如phishingDomainlistening portlisteningAddresstarget等。在本演示中,我们将使用office365.json模板,不做任何更改:

图 9:Office365.json 模板配置

这就结束了 Modlishka 的设置。现在,我们将继续使用 Modlishka 执行钓鱼攻击。

执行攻击

以下步骤演示如何使用 Modlishka 执行网络钓鱼攻击:

  1. 现在已经设置了 Modlishka,让我们使用 Office 365 模板启动该程序。可以使用./dist/proxy -config templates/office365.json命令启动 Modlishka。请注意,一旦启动该工具,它将为您提供代理地址。如果您遵循了上一节中的步骤,我们没有定义任何地址,而是使用了内置的https://loopback.modlishka.io

**

图 10:Modlishka 反向代理已启动

  1. 现在,我们可以像用户一样进行登录。我使用了我目前拥有的演示 Office 365 租户。在下面的屏幕截图中,您会注意到显示的页面是针对 Office 365 登录页面的,但请注意 URL。为了便于说明,我将其保留为默认值loopback.modlishka.io,但当您在渗透测试中执行钓鱼攻击时,您需要有一个与目标几乎相同的域名:

图 11:通过 Modlishka 代理的 Office 365 登录页面

登录过程就像用户登录到 Office 365 一样,因为用户实际上正在登录到 Office 365。Modlishka 是流量的代理,因此我们可以拦截任何凭证。输入密码后,将向用户显示 2FA 提示以批准登录。注意背景窗口中的rewriteResponses

图 12:2FA 通过 Modlishka 代理

  1. 一旦用户批准登录请求,将授予 Office 365 访问权限,用户可以继续正常工作。让我们看看 MODLICKA 能在日志文件中检测到什么。在 JSON 配置文件中,我们使用字符串"log ": "ms.log"定义了日志文件的名称。这将位于 Modlishka 文件夹的根目录中。通过使用基本的 concatenate 命令来查找字段,例如"login=""passwd=",我们能够以纯文本形式查看用户的凭证:

图 13:纯文本形式的凭证

用户名中显示的%40是 HTML 字符集代码,翻译成"@"符号。

使用 SET 创建网络钓鱼活动

让我们使用社会工程工具包来执行一个简单的钓鱼攻击:

  1. 在终端窗口中,键入setoolkit命令以启动社会工程工具包
  2. 加载工具箱后,我们需要选择选项 5、Mass Mailer Attack,然后选择选项 1、EMail Attack Single EMail Address

图 14:选择群发邮件攻击

  1. 接下来,我们将定义电子邮件的参数。在这里,您可以指定源地址、发件人和收件人的名称,以及附加恶意文件等。我们不会附加文件,而是使用恶意钓鱼链接。键入链接是为了演示,但链接不存在。填写完所有字段后,将发送电子邮件:

图 15:定义钓鱼电子邮件的参数

internet 上有许多开放式中继邮件服务器。您可以使用MailgunSendGrid等服务在您自己的环境中进行测试。

请注意,电子邮件是在目标邮箱中接收的,其参数为我们定义的:

图 16:目标邮箱中收到的恶意电子邮件

社会工程工具包提供了很多功能,对各种选项以及如何使用它们有很好的了解将有助于您在渗透测试中规划钓鱼活动。请在您自己的实验室环境中探索各种选项

总结

社会工程实际上可以归结为利用人的本性来信任人。它使用的技术依赖于人的弱点,而不是软件或硬件的弱点。互联网上有许多可用的社会工程工具,作为渗透测试的一部分,您可以利用这些工具发起社会工程攻击。

在本章中,您已经了解了什么是社会工程以及各种类型的社会工程。我们重点介绍了每种技术的主要功能,并查看了在哪里可以找到当前存在的网络钓鱼链接的最新存储库。我们研究了可用于创建社会工程活动的常用工具,并致力于创建针对 Office 365 的活动

在下一章(第 5 章深入到 Metasploit 框架中),我们将开始使用 Metasploit。我们将了解什么是 Metasploit,使用它可以实现什么,以及如何使用 Metasploit 的各种漏洞。

问题

  1. 什么是社会工程?
  2. 社会工程依靠什么进行成功的攻击?
  3. 构建社会工程攻击的重要基础步骤是什么?
  4. 列举两种类型的社会工程攻击。
  5. 哪个工具是 Modlishka 独有的?****************