社会工程渗透测试教程(二)

原文:annas-archive.org/md5/db987a87e1478b8a8617c263c631b477

译者:飞龙

协议:CC BY-NC-SA 4.0

第六章:通过有效的威胁建模确保价值

Richard Ackroyd,随机风暴有限公司高级安全工程师

大多数客户意识到他们需要社会工程,但往往设定不切实际的目标。本章将帮助您将客户从“不可能完成的任务”心态引导到更实际的目标。实用的社会工程不是指在绳子上降下核冷却塔,同时避开激光,而是通过识别风险来提供价值,即使时间限制使您手脚受限。

关键词

威胁建模;信息保障;风险管理流程;侦察和监视;钓鱼;鱼叉钓鱼;有组织犯罪团伙

本章内容

• 为什么需要威胁建模

• 进入我的地下掩体数据中心

• 顾问主导的威胁建模

• 接入信息保障和风险管理流程

• 使用开源发现组织信息进行信息收集

• 对目标组织进行侦察和监视

• 精心策划钓鱼攻击

• 精心策划鱼叉钓鱼攻击

• 创建伪造/欺骗网站

• 通过提供可移动介质传送恶意软件

• 利用授权人员的物理访问权限来进入组织设施

• 进行基于外部人员的社会工程以获取信息

• 进行基于内部人员的社会工程以获取信息

• 通过机会主义性地窃取或搜集信息系统/组件来获取信息

• 谁想要进入我的企业?

• 国家赞助/恐怖主义团体

• 有组织犯罪团伙

• 惹麻烦者、爱好者和独行枪手

• 其他参与者

介绍

第五章讨论了实际社会工程参与的工作方式,涉及的人员以及如何确保顺利交付。

本章将介绍确保有效威胁建模应用于参与的过程。本章将涵盖业务关键资产的示例以及这些资产的潜在攻击向量。例如,为什么要试图进入高度安全的数据中心,当接待员的计算机也可以访问相同的数据?

此外,它将审视客户需要提供的信息类型,以建立关键资产。这可能包括网络图表、流量流向、组织层次结构、主机信息等。所有这些都假定测试并非完全是黑盒性质,也就是说工程师在测试之前没有获取任何信息。

大多数专业服务顾问都对在提供服务时引导客户走上正确道路的必要性非常熟悉。尽管客户可能知道他们需要的服务,但他们可能不完全了解所需专业的细微差别。正因为如此,你经常会看到关于目标选择的不切实际的要求。作为一名社会工程师,确保通过威胁建模设定和实现了切实可行的目标是你工作的重要组成部分。威胁建模非常需要工程师和客户进行咨询,如果一个项目要成功的话。

在某些情况下,客户会准确地知道他们需要评估哪些系统和流程。这在组织已经参与了包括风险管理的信息保障(IA)流程的情况下经常发生。

此外,本章将审视可能希望获得数据和相关系统访问权限的人群。人们普遍认为,互联网上的黑客会对大多数这类违规行为负责,然而,这也可能是竞争对手、政治活动人士或外国政府特工所为。

一些真实世界的违规案例将结束本章,并帮助识别真实世界的攻击者是如何获取我们试图保护的数据的访问权限的。

为什么需要威胁建模?

乍看之下,这似乎是一个多余的章节。人们会原谅认为在现代组织中工作的个人总是能够识别他们的关键资产并围绕它们建立合适的防御。多年来的渗透测试和社会工程学案例告诉我,情况很少是这样的,有时甚至相当令人大开眼界。

最近的一个例子是在最近的内部评估中,客户搬进了一个新设施,结果一切都是全新的。所有服务器都在运行最新的操作系统,并且已经完全打了补丁。桌面设备也是如此。客户不知道的是,一名员工插入了一个流氓接入点到企业网络,并且配置了 WEP。这里要说的是,如果一个企业认为他们了解组织和基础设施中正在发生的一切,那么他们的机会是不大的。受评估客户花了很多时间和精力来保护他们认为是他们最关键资产的唯一入口点。他们安装了防火墙和入侵防护系统(IPS),使用了最新的软件和最佳实践,但他们没有关闭任何未使用的交换机端口,并启用端口安全或监视流氓接入点。虽然这可能与社会工程学直接相关,但如果重点仅仅是技术,几乎不可能知道资产的所有入口点。防火墙永远不会阻止授权员工通过电话泄漏关键信息,数据中心所在的前“核掩体”也不会。因此,需要威胁建模的原因是明确的。即使不希望受到社会工程的影响,也很难在不从更大的角度审视的情况下识别出关键资产。因此,让我们讨论一个常见的客户需求示例,以及为什么这并不总是特别现实。

获得对我的地下掩体数据中心的访问权限

大多数客户首先想到的目标是数据中心或服务器房间。但这个选择有多现实,甚至能否在没有海豹突击队的情况下进入一个运行良好的数据中心?

这种思维方式的主要原因是大多数人会自动想到Crown Jewels,然后他们的思维链会将他们带到这些资产的物理存储位置。考虑到我们正在处理的资产的高度连接性和它们的完全非物理性质,这有点滑稽。

需要向客户定义资产,以使他们摆脱这种思维方式。信息是一种资产,不仅仅是物理服务器。重点在于保护敏感数据的外泄,所以让我们探讨一下对此的攻击向量。虽然现在不想深入讨论资产和风险分类,但确实需要简要提及。客户需要确定对他们作为企业重要的是什么,找出谁以及什么有权访问它,并评估与资产相关的风险和漏洞。可能是知识产权,客户数据,甚至是信用卡详细信息。

虽然在服务器机房门口可能会设有武装哨兵警卫,并配备所有可能的物理安全措施,但如果在一个无人看守的办公室里放置了一排台式电脑,这些电脑却具有访问数据所需的权限,那么这些措施就毫无意义。

如何实现现实的威胁建模?有两种严肃的选择:第一种是与客户进行咨询过程,并帮助他们了解自己的风险。第二种是参与企业可能已经进行的信息安全工程流程。该过程将包括完整的资产枚举、分类以及风险和漏洞定义。在涵盖顾问主导和不那么正式的方法之前,将介绍风险分析和管理的信息安全工程流程。

顾问主导的威胁建模

现在,可能的反应会是——“我是社交工程师,不是信息安全顾问。” 幸运的是,这个过程并不需要成为一个完全成熟的信息安全工程项目,事实上远非如此。实际上,大部分工作都是常识。

当涉及到这个过程时,客户必须提供某些信息,以便进行对攻击向量的准确评估。一个合适的方法是在确定风险所在时采取“什么,为什么,谁,何处,以及如何”的方法。这种方法无疑比走信息安全路线要不那么正式,但对于你和你的客户来说仍然是一个非常有价值的工具。

什么?

这个资产是什么?需要保护的关键信息是什么?它适用于哪些监管指南?很可能大部分客户知道他们的关键数据是什么,但也许他们不知道一个恶意的社交工程师会如何试图获取这些数据。例如,数据可能是以新产品计划的形式存储在数据库中的知识产权。客户可能认为,攻击者必须获得网络的物理访问权限才能恢复数据,但他可能选择操纵组织内有访问权限的人员。信息可能以纸质形式存储在企业其他地方的文件柜中,如果是这样,是否有足够的安全措施?

在涉及到深入讨论这个主题所需的信息类型时,你主要将会查看网络拓扑图和资产清单。在绝大多数情况下,会有计划和机密数据存储在硬记录中,这需要在整个过程中加以考虑。在这个过程中,你的客户可能需要知道所有信息的存储位置,包括实体副本。这项任务本身甚至可能会花费一个小型企业很长时间,不容小觑。

为什么?

资产为何重要?为何重要保护这些信息免受泄露?影响可能纯粹是财务上的,因为受到监管机构处以罚款。另一方面,泄露的数据可能具有机密性质,并导致在战斗场景中出现妥协。声誉损失也是在发生妥协时普遍存在的问题。无论资产重要性的原因是什么,都值得考虑对每个资产进行分类并为其分配一个值,以便您能够对工作进行优先排序。客户可能认为泄露密码的用户是最大的恐惧,但如果泄露客户数据,可能会带来与 1998 年《数据保护法》相符的高额罚款,以及重大声誉损失。只需看看索尼 25 万英镑的罚款就知道了。密码并不重要,重要的是我们需要为我们的资产应用重要性级别。企业中的每样东西都有其存在的理由,但我们不能将所有事物都评定为 10 分中的关键性评级。

所需的关键信息稍微复杂。需要业务各方利益相关者的参与才能充分进行审查。期望只有少数几个人完全了解企业内部所有风险是不现实的。在这个阶段让来自不同部门的人参与可以利用行业和角色特定的知识,否则这些知识将被忽视。

谁?

谁可以访问这个资产?他们在哪些部门工作?其他用户是否可以访问他们的系统并妥协信息?之前提到的问题再次出现。当一个精心针对的钓鱼邮件可以提供所需访问权限时,为什么要试图通过几层昂贵的安全设备进行黑客攻击呢?客户已经知道资产是什么,经过识别和重要性确定的过程,但是谁可以访问这个资产?谁使用它?他们为什么使用它?他们多久使用一次?何时使用?所有这些信息应该开始构建一个图像,或信息流,以更好地了解攻击向量在哪里。

与“什么?”部分一样,通常会有一个分析网络图和资产信息的过程,同时查看员工名单和部门信息以建立基于角色的访问权限。

在哪里?

数据从物理和逻辑角度存储在哪里?这可能在早期的章节中某种程度上得到了确认,在那里网络和资产信息被审查。此外,需要完整地分析可以访问资产的系统位于何处。同样,这是从地理角度和逻辑角度来看的。当提到逻辑位置时,这是它在网络上的位置,在大多数情况下将是指定的 VLAN 或独立的交换机基础设施。物理位置可能是在文件柜中在 cab 421,数据中心 2 中,问题是如果位置不明,如何理解对资产的风险?这需要从所有可能的角度来考虑。物理、逻辑和人为问题都应该被解决。

再次强调,任何资产登记册或低级网络图表都可能包含从技术角度来看所需的信息。部门负责人应该能够提供硬拷贝的位置。

如何?

资产目前受到什么保护?如何访问它?同样,依赖于资产类型,会有不同的答案。在某些情况下,数据可能通过连接到后端数据库的桌面应用程序通过 VPN 访问到数据中心。它可能受到防火墙和入侵防御系统的保护。

硬拷贝更有可能被锁在抽屉里。另一个常被忽视的防御类型是足够的员工培训和权限。如果员工没有得到足够的培训,很常见从电话中获取敏感数据。同样,如果他们没有被授予挑战未知访客的权限,他们也不太可能挑战未知访客。

在任一情况下,在进行评估之前,对数据的使用方式以及当前的防御方式进行分析将为我们提供完整的图片。

已经确定了大量关于资产的信息;知道了它们是什么,以及它们适用于哪些法规。对为什么资产重要也已经形成了清晰的认识。

完全了解谁可以访问数据以及他们在业务中的角色。已经确定了数据存储在何处以及如何访问。所有这些信息都可以用来准确地识别对所涉资产的实际风险,并建立一个漏洞列表,将被注入社会工程学参与中。这些将成为我们继续评估的基础。

客户现在意识到,现实情况下所需的一切只是进入了二楼的文件柜。攻击向量已经发生了巨大变化,客户对如何保护其资产的理解也发生了变化。当然,说起来容易做起来难。看到所有角度和攻击向量是一项困难的任务,这就是为什么社会工程学参与如此有用。这个过程本身就是一个意识锻炼,对任何客户都有实际价值。

现在让我们通过用更真实的例子填写上述类别来强调这一点。

什么?

资产/关键信息是客户数据。这些数据的处理方式以及任何后续违规行为都受《数据保护法》和《信息专员办公室》的管辖。

为什么?

资产之所以重要有很多原因。任何违规行为的财务后果都是严重的。声誉受损和业务损失也是任何数据丢失的严重后果。

谁?

目前,数据库管理员、应用程序开发人员和呼叫中心员工都可以访问资产。

在哪里?

数据被逻辑地和物理地存储。客户记录存储在两个数据中心的数据库中,同时也以硬拷贝的形式存储在呼叫中心安全房间内的锁定文件柜中。呼叫中心位于我们的总部内,也是大多数员工的工作地点。

如何?

数据库受到强大的身份验证、防火墙和 IPS 的保护。所有记录都在数据库中加密。物理记录由锁和钥匙保护。任何数据都会在需要时由值班经理签入和签出。

访问可以通过多种方式获得。数据库管理员和应用程序开发人员通常会通过远程桌面协议和数据库管理工具直接访问数据库服务器。呼叫中心员工通过一个应用程序进行访问,以便在接听电话时查看客户记录。这也使他们能够修改或添加记录。呼叫中心应用程序的身份验证由活动目录处理,最终密码由员工自己选择。

五个问题,已经看到了几个攻击向量的开放。呼叫中心员工可能是一个有希望的目标,尽管他们更有可能接受过处理入站电话的培训,并且会严格遵循脚本。

当然,如果选择在高度安全的数据中心和办公室的文件柜之间,选择并不多。在大型总部内,有更多合理的借口,并且业务内有更多潜在目标。此外,安全性可能会远远低于数据中心,并且有更多机会与组织的员工融为一体。

此外,仔细观察呼叫中心工作人员及其使用的应用程序。 直接访问数据库的帐户(例如 SA 帐户)通常具有非常强大的密码,但允许客户端应用程序用户设置自己的密码? 这本身可能是最佳选择。 针对性或甚至更广泛的电子邮件网络钓鱼攻击可能会带来一些令人恐惧的结果,假设每个员工都有互联网访问权限。 或者,冒充帮助台员工的电话以及带有凭证窃取者链接的精心制作的电子邮件可能是首选方案。

电子邮件网络钓鱼攻击将在第九章中详细介绍。

无论最终采用何种策略,在这个过程结束时,客户都会比之前好得多,对景观的增加理解足以设计一些有效的场景。 盲目进行测试有时可能是客户的先决条件,但可以说,受过教育的参与往往会产生更相关和持久的结果。

参与信息保障和风险管理流程

尽管已经讨论过的更为非正式的模型是与客户接触、建立关系并确保成功的好方法,但也有更正式定义的方法来执行威胁建模。

希望在客户(正在进行 IA 项目的客户)与社会工程师联系之前,他们应该已经对风险和漏洞有了明确的了解,以及社会工程的价值。 很可能他们会与您合作解决信息安全的人为因素

许多社会工程参与采用技术和人为漏洞的混合方法。

多年来,关于内部人员或员工在这种情况下可能是组织安全的最大风险的信息安全文章不计其数。 事实是,无论恶意与否,企业内部拥有任何特权级别的人员如果没有得到适当教育,都可能构成巨大风险。 需要注意的是,任何特权级别 指的是关于企业运作方式、使用的应用程序、内部命名约定或系统的俚语/代码等内部知识。 所有这些看似不起眼的信息在错误的手中可能是毁灭性的,它们肯定不会像密码那样受到同样程度的谨慎对待。 许多社会工程工作都是从一个微小的信息开始,可以在此基础上建立信誉以在进一步努力中获得成功。

正是由于这些原因,安全的人为因素在 IA 的许多标准中占据重要地位。 即使是最全面的 IA 工作仍然可以通过一名优秀的社会工程师进一步塑造。

不要犹豫地重新塑造客户对其攻击向量的期望,即使他们认为已经覆盖了所有基础。

风险管理流程允许组织正式做出关于信息安全方面的可接受风险的决策,并查看哪些部分适用于社会工程领域。有许多可用的风险管理框架,包括可免费下载的 NIST SP800-30。

因此,对于本书的目的,这被选为风险管理的基准。可以从以下网站获取副本:csrc.nist.gov/publications/PubsSPs.html#800-30

在进行风险评估过程中,NIST SP800-30 引入了威胁来源威胁事件的概念。

NIST 描述我们相关的威胁来源为“寻求利用组织对网络资源(即电子形式的信息、信息和通信技术以及这些技术提供的通信和信息处理能力)的依赖性的个人、团体、组织或国家。”一些现实世界的威胁来源示例将在本章后面介绍。

NIST 定义了几种威胁事件,可以在社会工程学参与中进行主动测试。具体如下。

利用开源发现组织信息来收集信息

对手挖掘公开可访问的信息,收集有关组织信息系统、业务流程、用户或人员或对手随后可以在攻击中使用的外部关系的信息。

对目标组织进行侦察和监视

对手利用各种手段(例如扫描、物理观察)随时间审查和评估组织,并确定脆弱点。

这种工作对于参与的侦察阶段至关重要,详细介绍在第八章中。

精心策划网络钓鱼攻击

对手伪造来自合法/可信来源的通信,以获取诸如用户名、密码或社会安全号码等敏感信息。典型攻击通常通过电子邮件、即时消息或类似方式进行;常常引导用户访问看似合法的网站,实际上却窃取输入的信息。

精心策划针对性的网络钓鱼攻击

对手利用针对高价值目标(例如高级领导/主管)的网络钓鱼攻击。

网络钓鱼攻击在第九章中有详细介绍。

创建伪造/欺骗性网站

对手创建合法网站的副本;当用户访问伪造网站时,该网站可以收集信息或下载恶意软件。

这种攻击的一些现实世界示例将在本章后面介绍。

通过提供可移动媒体传递恶意软件

对手在组织物理边界之外但员工可能会找到媒体的地方(例如,设施停车场,员工参加的会议展示)放置包含恶意软件的可移动媒体(例如,闪存驱动器),并在组织信息系统上使用它。

如果一个非员工拿起了 USB 驱动器怎么办?或者如果员工将其插入非企业设备怎么办?这在这些情况下可能会带来严重的责任问题。更好的概念验证可能是让恶意软件报告它已被点击。对系统的任何监视或妥协都应该非常小心控制。

利用授权人员的物理访问权限以获取对组织设施的访问权限

对手跟随(“顺风车”)授权人员进入安全/受控位置,目的是获得对设施的访问权限,规避物理安全检查。

尾随可能不是最隐秘或最熟练的攻击向量之一,但在正确应用时肯定是最有效的之一。在高流量区域,这种策略可能会大获成功。尾随在第十一章中有更详细的介绍。

进行基于外部者的社会工程学以获取信息

外部放置的对手采取行动(例如,使用电子邮件,电话)旨在说服或以其他方式欺骗组织内的个人,以揭示关键/敏感信息(例如,个人身份信息)。

看到标准中直接提到社会工程学是令人振奋的。这不仅证明了当前的威胁形势,也证明了技术并非是捍卫我们隐私的全部。

NIST SP800-30 标准实际上在几个地方提到社会工程学,以及以下内容:

进行基于内部者的社会工程学以获取信息

内部放置的对手采取行动(例如,使用电子邮件,电话),以使组织内的个人揭示关键/敏感信息(例如,任务信息)。

往往,当攻击从组织边界内部执行时,其有效性会提高。内线电话的来电与外部来源的电话相比可能会产生巨大的差异。同样,如果肇事者已经进入了安全的办公空间,那么从个人那里获取信息将更容易。人们常常认为,如果一个人已经位于建筑物内部,那么他必须是一个受信任的人。然而,这并不总是事实。进行这种性质的特权评估可以提供关键的洞察力,了解整体安全姿态。组织是典型的外壳坚硬,内部是软心吗,还是不是?

通过机会主义地窃取或清除信息系统/组件获取信息

对手窃取在组织的物理边界之外无人看管的信息系统或组件(例如,笔记本电脑或数据存储介质),或者搜集丢弃的组件。

垃圾箱翻找是任何社会工程团队的另一个核心工具。恢复 USB 存储设备或硬盘可能是最好的情况。大多数人认为已安全删除的东西通常离被删除还很远。随着数据销毁外包的普及,随意丢弃 USB 存储设备变得太容易了。在任何人恶意行为之前,数据销毁人员能多快拿到它呢?

正如前面提到的,一些标准确实对社会工程技术进行了广泛的覆盖。实际上,NIST SP800-30 中有其他威胁事件也可能属于社会工程的范畴。特别是在社会工程活动是混合攻击的情况下。这些攻击涵盖了传统的社会工程方面以及通常属于渗透测试范畴的目标。

本节旨在为读者提供对威胁建模的更深入了解,无论是从正式还是非正式的角度。让我们继续,看看威胁行动者。

NIST SP800-30——美国国家标准与技术研究院的官方贡献;在美国不受版权保护。

谁会想要获取我的业务信息?

不能引入威胁建模而不提供对该领域内威胁行动者的更深入理解。这可能有助于理解针对您业务的潜在攻击的来源。

在“传统”的网络犯罪世界中所见到的大部分内容绝对也适用于社会工程。在本书中经常提到,社会工程通常存在技术方面,尤其是涉及大规模侵犯时。

联邦调查局发布了一篇文章,指出了他们认为在网络犯罪中的三个主要行动者。以下是该文章的摘录:

Q:今天的网络威胁来自哪里?

亨利先生:我们看到三个主要的行动者:主要威胁金融服务行业的有组织犯罪团伙,他们正在扩大攻击范围;国家赞助者——外国政府对窃取数据感兴趣,包括来自主要制造商、政府机构和国防承包商的知识产权和研发数据;以及越来越多的恐怖组织,他们想要像 911 事件那样对这个国家产生影响,通过驾驶飞机撞向建筑物。他们试图利用网络挑战美国,通过查看关键基础设施来破坏或危害我们的生活方式的可行性。

www.fbi.gov/news/stories/2012/march/shawn-henry_032712/shawn-henry_032712

就 FBI 看来,主要的威胁来自有组织犯罪团伙、国家支持组织,最后是恐怖组织。

国家支持/恐怖组织

有最近的例子证实了 FBI 对这个问题的看法。例如,“叙利亚电子军”(SEA)目前似乎相当活跃,入侵或获取了 BBC 天气 网站和各机构的推特账号,包括 路透社,洋葱报《金融时报》。在撰写本文时,对于 @thomsonreuters 推特账号如何被入侵还尚早,但 洋葱报《金融时报》 的入侵事件已被确认为钓鱼攻击。

查看第九章了解如何执行钓鱼攻击以进行安全审计。

是的,人们仍然毫不顾忌地点击电子邮件中的链接。《金融时报》 的例子是一个非常简单的电子邮件,带有一个链接,看起来像是指向 有线电视新闻网 的文章。一旦点击了链接,实际上会跳转到一个被入侵的 WordPress 网站。这个 WordPress 网站会重定向到一个伪造的 《金融时报》 网页邮箱页面。在用户输入凭据时,就会被窃取。

SEA 确实符合 FBI 对主要威胁行为者的看法。据信 SEA 是为叙利亚总统巴沙尔·阿萨德工作的政治活动人士。SEA 从这些入侵中能获得什么?在大多数情况下,动机是在西方媒体网站上发布宣传,这在 BBC 天气 推特入侵事件中显然是这样。

就拿最近被入侵的美联社推特账号来说,SEA 能够让股市陷入恐慌,使道琼斯指数下跌了 1360 亿美元。他们声称白宫内发生爆炸导致总统死亡,从而达到这一目的。他们不仅利用社会工程学获取账号访问权限,还利用冒充来实现他们的目标。有趣的是,在社会工程学中基本的冒充技术经常被使用。冒充另一个人的电话或者看起来与目标极为相似的域的电子邮件通常能提供足够的杠杆。

有组织犯罪团伙

再次强调,存在大量案例表明了社会工程技术的使用。绝大多数实施了大规模的网络钓鱼攻击。这很可能是因为这类骗局的简单性、低维护成本和庞大的目标受众。最近的一个案例(2013 年 6 月 19 日)由伦敦警察局中央电子犯罪单位、严重有组织犯罪调查局和美国特勤局揭露。网络钓鱼骗局的基本思路是获取受害者的银行账户访问权限。该组织建立了 2500 多个假冒的银行网站,这些网站是合法银行网站的克隆。据估计,仅在英国就阻止了 5,900 万英镑的欺诈行为。这整个骗局最有趣的方面可能是其规模。这些攻击成功地针对了全球各地的人们,而不仅仅是美国和英国,这可能让人误以为是如此。

惹麻烦者、业余爱好者和独行侠

尽管联邦调查局已经覆盖了所有主要方面,但总会存在一些特例。社会工程师或黑客没有得到国家支持并不意味着这种情况不应该被严肃对待。相反,通常是业余爱好者、惹麻烦者或恶作剧者给我们带来最大的问题。

近年来最著名的案例之一是来自 2Day FM 的澳大利亚广播电台恶作剧者。恶作剧很简单,打电话给剑桥公爵夫人入院的医院,假装是伊丽莎白二世女王,看看会发生什么。事实上,DJ 们并没有预料到会被接通,更别说得到实际信息了。任何人都无法预测电话的结果。首先,提供的信息水平可以说是相当有趣的。这包括就诊时间,以及威廉王子的行踪以及王妃的一般状况。在一个非常重视患者隐私的行业中,令人惊讶的是这种事情居然会发生。可悲的是,事情并没有就此结束。在媒体的一片哗然之后,泄露信息的护士自杀了。她留下了一封指责广播 DJ 导致她死亡的遗书。虽然这是一个极端而令人悲伤的案例,但作为社会工程师,我们可以学到一些东西。首先,护士们在处理电话时接受了多少正式培训?希望他们不仅接受了培训,而且对整个社会工程有所了解。如果不是广播恶作剧者打电话,就会是记者试图获取独家新闻。

另一个值得注意的观点是,如果打电话的是合适的人,提供的行动正确,并且提出了正确的问题,那么很可能会得到答案。即使在极端和有时愚蠢的情况下也是如此。这是建立一种前提并利用它获取未经授权的访问权限的情况。

我们在第三章更详细地讨论了借口。

最后一个观点是伦理性质的。对社会工程师来说,自我约束并仍能保持借口是非常困难的。很容易被卷入做出可能会后悔的事情。不要忘记电话那头的人不想成为你欺骗的受害者。这又是不透露姓名的重要性。我们并不是为了挑出个人并使他们尴尬或羞辱而从事这项业务。就像这个故事中的护士一样,后果可能真的很可怕。与客户接触时,请始终牢记这一点。强调公司范围的教育,而不是个人指责和惩罚。

思考一次恶作剧电话造成的损失,真的让人深思。可以肯定的是,受影响的医院肯定已经推出了各种正式培训来试图解决他们所受到的缺陷。对他们声誉的损害显然是实质性的。擅自泄露患者记录通常也会有财务影响。不幸的是,在这种情况下,损失远不止声誉和金钱。

其他参与者

还有很多其他人会在未经你同意的情况下从个人或企业那里获取信息。很可能这些人是为了“诚实谋生”而被雇佣的。推销员是社会工程师的一个典型例子。推销员会毫不犹豫地在真相上进行创造性的表达来赢得业务。在很大程度上,这些将以小的不实之词的形式出现,以便让他们与目标通话。这些通常是如“你能把我转给安德鲁·梅森吗?他在等我的电话。”或“嗨,我刚刚在与加文·沃森通话时被切断了,请你再把我转回去好吗?这是一件紧急的事情。”的简单话语。允许销售电话通过到员工的影响可能被视为最好的麻烦,但允许这种情况发生的流程缺乏值得严肃审查。

还有其他风险吗,这些风险不属于我们已定义的类别?竞争对手呢?

如果一个销售人员可以接触到合适的人,那么有什么可以阻止你的竞争对手利用相同的漏洞呢?竞争情报可能被视为合法,但工业和经济间谍行为不被允许。然而,这并没有阻止它们的存在。马来西亚电讯有限公司最近不得不调查一起涉嫌工业间谍案件。他们收到投诉,称其合作伙伴的一名员工冒充马来西亚电讯团队成员进入了竞争对手的设施。尾随进入是一回事,但被认出是较大、授权的团队成员呢?在最好的时候防御这些问题可能会很困难。在处理大量访客时要谨慎,不要因为难以处理大量访客而绕过任何访客政策。绕过通常的程序总会带来问题。

本章的这一部分涵盖了可能利用社会工程攻击你的各种威胁行为者。毫无疑问,还有更多,并且在许多情况下,这将是针对每个特定行业的。谁最有可能针对你,以及为什么?

摘要

本章介绍了威胁建模及其对现实世界的意义。首先,涉及到了威胁建模的必要性主题。

让客户跳出思维定势是威胁建模的第一个动力。为什么攻击者可能会有不同的想法,以及他们可能会采取完全意想不到的路径来获取关键数据。这是为了突显进入我的数据中心的观点。这通常不是窃取数据的最简单方法。为什么要从正门进入,当我们通过侧门可以获得同样级别的访问权限,而且避免了更多的麻烦呢?

下一章介绍了如何将实际知识应用于构建威胁模型。在这一部分中,我们介绍了如何引导客户准确识别攻击向量的过程。这是大多数人都能够舒适地通过的实际方法,也可以成为你自己模型的基础。

接下来是一个关于这在现实世界中的示例。最后一点是识别对我们作为社会工程师有用的信息。

在涵盖了非正式过程之后,提供了对风险管理更正式方法的更深入的看法。这是以 NIST 的 SP800-30 标准的形式出现的。这个标准可能是组织选择的许多标准之一,用于评估和防范信息泄露。

这个标准的好处是它可以免费下载,您可以今天就下载。除此之外,它实际上直接将社会工程视为威胁事件。标准中确定了几个威胁事件,完全适用于社会工程活动。其中包括垃圾搜寻、尾随进入和钓鱼攻击等。

然后我们转到了威胁行为者的话题。这些家伙试图进入你的组织,窃取你的数据或损害你的声誉。接下来介绍了一些出色的真实案例,其中大多数实际上都是最近发生的。此外,本章还讨论了国家赞助的团体,例如 SEA 对 BBC 天气、金融时报洋葱 的网络钓鱼攻击。

接下来简要介绍了有组织犯罪团伙,以及涉及超过 2500 个假网站的真实案例。这些网站旨在非法获取在线银行凭据。在这个特定案例中,我们正在考虑的是可能达到数千万的财务影响。

然后我们看了一下 2Day FM 电台恶作剧的不幸案例,这造成了严重而深远的后果。这提醒我们时刻注意你行为的道德影响,并不要让假设控制你的行动。

接着是第七章—将从头开始构建场景的过程。

第七章:创建有针对性的场景

加文·沃森,随机风暴有限公司,高级安全工程师

一旦与客户达成一致的目标,下一阶段就是设计满足这些目标的场景。本章提供了一系列模型,测试人员可以使用这些模型创建有效的场景,这些场景不仅能够实现目标,还能识别多个漏洞,而不是集中在单一的安全缺陷上。这些模型的最终目的是确保评估为客户提供价值,并改进他们的安全性。

关键词

社会工程场景;目标识别;目标画像;物理侦察;假设设计映射;掩护故事;退出策略

本章内容

• 场景的组成部分

• 目标识别

• 开源侦察

• 目标画像

• 物理侦察

• 目标参与

• 假设设计映射

• 对未知情况的规划

• 特定场景的结果

• 掩护故事

• 退出策略

• 设计以失败为目标

引言

第六章讨论了社会工程评估威胁建模阶段的利弊。这一关键阶段确定了最重要的安全威胁,通过将评估重点放在正确的领域上,确保为客户创造价值。

为了测试每个确定的威胁,安全顾问将设计并执行社会工程场景。这些场景由多个组件组成,本章的第一部分将介绍这些组件。每个组件都是经过精心选择的,以便每个场景都能够识别特定的漏洞并达到明确的目标。

任何场景的一个基本组成部分是目标,有时也称为标记。在社会工程方面,这几乎总是指一个人。作者用于记录其决策过程的目标识别模型将被讨论。此外,这个模型也可以被初学者用来辅助设计场景。这提供了一个清晰且易于遵循的流程。

一旦确定了明确的目标和目标,下一阶段将是设计一种假设(或合理的情况)以满足该目标,并识别特定的漏洞。可以使用“假设设计映射”方法来辅助并记录场景设计背后的思考过程。

场景并不总是设计为成功,因为失败的场景通常可以识别出独特的安全问题。将设计场景失败将被讨论,还将讨论计划意外事件和准备好退出策略。

场景的组成部分

到了评估的这一步,安全公司应该对客户面临的重大威胁有一个清晰的了解。因此,现在是设计评估业务面临威胁、确定多个漏洞并最终提高客户整体安全性的场景的时候了。

每个场景都有多个组成部分,每个部分都必须明确定义,以帮助测试公司和客户自身(即使仅在文档方面)。为了在上下文中解释每个组成部分,我们将使用第四章中提出的常见短游戏攻击场景之一。

威胁

客户担心他们的呼叫中心主要由未经训练的学生组成,容易受到基本的社交工程攻击。如果攻击者获得了一位权限极高的员工的电子邮件账户,可能会对企业的声誉造成严重甚至不可挽回的损害。由于呼叫中心员工数量众多,安全风险可能非常重大。

目标

目标应该从一开始就清晰,并直接与客户的某个威胁相关联。在这种情况下,目标非常简单:

获取高权限用户的电子邮件账户访问权限。

当然,首先还有一些较小的目标要完成,比如侦察和目标识别,但这是本场景的主要总体目标。

目标

本章的下一节将讨论正式的目标识别方法。然而,为了本示例的目的,我们将假设这已经完成。以下员工已被确定为本场景的合适目标。

A. 史密斯,B. 史密斯,C. 史密斯

可能会有多个目标群体,每个群体与特定场景相关联,因此在此时清楚地定义它们非常重要。

攻击向量

在本示例中,我们的攻击将通过电话进行,根据客户的规定。在这里定义这一点是重要的,因为同样的场景理论上也可以通过电子邮件执行。

借口(可能的情况和角色)

选择的借口应该是可以实现同样目标的众多借口之一。本章的后续部分将介绍生成借口的正式方法。然而,为了本示例的目的,将使用短游戏攻击场景的借口,如前所述。因此,角色和可能的情况如下:

首席执行官(角色)正在与重要客户会面,并希望重置密码,因为他当前的电子邮件账户密码不再有效。

主要技术

这个例子中使用的主要技术是冒充,因为目标需要相信呼叫者是首席执行官。严格来说,伪装也是在这种情况下使用的主要技术,但由于伪装将形成绝大多数社会工程情景的基础,通常不需要定义它。

次要/支持技术

次要技术可用于识别额外的漏洞和/或增加成功的机会(如果增加成功有益)。在这个例子中,测试人员可以使用“压力和解决方案”来更有效地操纵目标。 “压力”可能是首席执行官正在开会,他们对情况不满意,“解决方案”是快速重置密码。如果要使用此支持技术,则假设如下:

首席执行官正在与非常重要的客户开会,他对自己的密码无效感到恼火。他们希望尽快重置密码,否则可能会对帮助台员工产生后果。

漏洞识别

发现的漏洞直接映射到情景中使用的主要和支持技术。例如:

主要技术−基本冒充=呼叫者识别程序中的漏洞

次要技术−压力和解决方案=意识和培训计划中的弱点

业务暴露 业务暴露是威胁代理成功利用漏洞后可能造成的潜在损害,即社会工程师成功获取员工的电子邮件账户并将内容发布到网络上所造成的损害。清楚定义暴露并将其呈现为最坏情况是很重要的。成功的攻击和明确定义的暴露至少可以在争取改善安全性的预算时提供很大的支持。

规则规定

在设计任何情景之前,这个组件通常会与客户讨论。初始简报将明确定义规则,如不锁拾、不损坏公司财产、不干扰业务活动和严格禁止进入某些区域等。然而,在这个阶段的规则意味着可以设计多个具有不同规则的情景来识别不同的问题。例如,客户可能决定不想进行任何锁拾活动,因为这可能会损坏锁,而更换锁的费用很昂贵。然而,一两个情景可能涉及锁拾,只要它们限制在建筑物的某些区域。然后,测试人员可以执行具有和不具有锁拾的情景,并将结果呈现给客户,这可能是非常令人惊讶和有价值的。因此,定义规则是各个情景的组成部分至关重要。

资源

某些情景可能只需要一个工程师,而其他情况可能需要多个工程师。在某些情况下,多个工程师可以在支持角色中补充情景,增加成功的机会。因此,执行特定情景所需的资源是一个重要的组成部分。例如,可能有一个带有两种变体的单一情景,一种是一个工程师,另一种是两个工程师。两种情景之间的结果差异可能很大。

环境因素

这些是组织无法控制的影响情景的因素。例如,如果下雨,社会工程师看起来会很奇怪在外面潜伏。如果雾天,安全摄像头将受到影响。如果天气炎热,窗户和门可能会被打开。因此,重要的是将这些细节作为情景的一部分包括进来,因为在没有环境因素干扰时可能需要重复。

目标识别

社会工程师通常会在头脑中执行目标识别,甚至可能在他们演绎复杂情景时切换目标。作为专业的安全顾问,这种自由式情景执行并不总是一个可行的选择。这并不是说顾问在评估过程中不应该利用机会,只是重要的是保持清晰的结构。向客户呈现错综复杂和零散的结果很少有益于改善安全性的尝试。重要的是要尽量保持情景清晰和一致,以便它们能够识别出它们被设计来解决的问题。此外,过程的文档记录对于帮助客户理解所识别的问题以及作为以后进行额外测试的参考是至关重要的。最后,对于一家开展社会工程评估的公司来说,这种正式的方法可以帮助保持整个过程的清晰和可管理性。

正式的目标识别是一个结构化的排除过程,最终只得出少数被视为最适合(达到目标的)目标。图 7.1 显示了一个基本的通用目标识别三角形,可用于许多不同的情况。在攻击一个企业时,每个员工都是一个潜在目标,以及与该企业直接和间接相关的每个人。因此,这个过程的起点是用这些目标建立三角形的基础。目标数量将会减少,因为它们根据某些标准被“提升”到更高的层次。图 7.1 中的各个标准层次相当一般,因此它们可以应用于不同的目标。

image

图 7.1 通用目标识别三角形。

为了充分解释这个过程,我们将选择一个简单的目标:

获得进入目标建筑的有效员工通行证。

公开情报侦察

所提供的例子显示了我们的三角形的基础如何被填充,公司 xyz 的所有员工都是目标 A 到 H。一个真实的公司当然可能会有更多的员工,但是八个足以演示这个过程。

要使目标晋升到更高一层,他们必须通过一系列基本标准。在第一层,标准基于公开资源情报或初始侦察。由于攻击的第一步是研究目标,因此这是完全合理的。仅根据您远程收集的信息和攻击的总体目标,就有可能消除大量潜在目标。

公司的资深度

选择比其他人拥有更高权限的目标通常是有利的。但是,如果目标需要针对脆弱的新员工,则相反是真的。

良好的数字足迹

如果对目标的信息有限,则没有什么可基于的决定。作为回应,可以决定设计攻击以获得此信息,但这需要有一个充分的理由,因为这可能需要你可能没有的时间。但是,如果目标是 CEO,并且研究显示关于他们的信息很少,那么设计攻击以获取此信息可能是合理的。

在目标部门内

虽然理论上任何员工都可以提供有效的通行证,但通常是接待处提供,因此在正确的部门提升目标是有意义的。

在这个例子中,A 和 H 目标都没有达到任何标准,因此被淘汰了。这导致 B 到 G 目标被提升到三角形的下一层。然而,在淘汰目标时,不一定是非黑即白的。被提升的目标可能只是比其他目标符合更多的标准,或者被淘汰的目标可能没有满足“一些”标准。最终由顾问决定如何提升和淘汰目标。

在这个例子中,有三个标准用于做出决定。在真实世界的评估中,将根据目标的复杂性、业务和范围内的员工数量等情况而有很多标准。

目标轮廓

三角形的下一层专注于目标个人资料。以前的标准包括有很好的数字足迹;对于每个目标应该有足够的信息来做出决策。在这一点上,决策是基于目标的个人特征做出的。显然,这些特征不能保证成功;这个想法只是为了增加基于概括的成功机会。例如,钓鱼邮件攻击可能比针对年轻一代更容易成功地针对年长者。关键词在于“可能”。

年龄

如上所述,某些攻击取决于目标的年龄而更成功。然而,尽管倾向于针对年长者,因为他们可能不那么懂得计算机,但一定要非常小心,不要浪费宝贵的时间。如果目标是操纵目标透露信息,那么选择一个年轻的新手可能比选择一个六十多岁的坚强的前军人目标更好。仔细考虑目标和标准如何影响任何决定促进或消除目标是很重要的。

性别

这些标准不是因为作者认为一种性别比另一种更容易受到社会工程的影响。这是因为场景或目标可能是性别特定的。例如,客户可能怀疑他们的男性主导的呼叫中心人员在一个年轻女孩打电话给他们要求重置密码时没有遵循正确的程序。因此,为了符合客户的规格,消除女性目标是一个好主意。当然,也可以建议使用男声并针对女性员工的替代场景可能会产生有趣的结果。

兴趣

如果研究发现目标有很多兴趣,那么这些信息可以用来对付他们。

在示例目标中,年龄和性别相对不重要,因此基于 B 和 G 目标的可用兴趣少于其他目标而将它们排除了。

实地侦察

三角形的第三层远离远程侦察,聚焦于目标及其与目标的关系。

行为模式

这些标准可能根据目标的目标而有很大不同。例如,如果目标是在他们在办公室时给他们打电话,那么了解他们工作的时间将是一个好主意。同样,如果目标是通过信息引诱与目标接触,则了解他们在哪里吃午饭或何时出去抽烟将是一个好主意。此外,这些标准可能更基本,比如目标在整个测试时间段内实际上是不可用的。

身体上的秘密接触

与行为模式类似,目标可以根据是否可以真正参与而被提升或淘汰。物理隐蔽参与可能意味着拍照或录制目标以进行信息收集。因此,如果可以获得某些目标的良好照片和录音,那么有理由优先提升他们而不是其他人。这种程度的参与通常对于大多数社会工程评估并不是必要的,这里包括的只是为了彻底展示这个过程。现实世界的攻击很可能会涉及这一层目标识别,特别是如果攻击持续数月。

关联参与

通过转化参与,应该清楚地了解谁与目标有关。他们的亲密朋友和工作同事可能成为攻击主要目标的额外途径。例如,一个亲密同事可以作为社会证明支持技术的一部分。同样,如果明显地两个同事密切合作,那么最好避免通过冒充另一个(比如通过电话)来攻击其中一个,因为他们很可能会认出冒名顶替者。

在这个例子中,目标 C 和 F 在测试窗口期间将不可用。这些信息可以被利用,因为如果他们不在场,就可以冒充他们。然而,在给定的情景下,他们并不适合作为目标。

目标参与

最终层揭示了基于收集到的所有信息的最佳攻击目标。在三角形内不再需要做出关于淘汰或提升的决定。一直工作到三角形的顶部已经确定了 D 和 E 作为最有利的目标,他们都是接待员。请记住,现实世界的情景可能会有许多最初的目标,因此在三角形顶部可能不止两个目标。

优先考虑目标

最终目标在整体适用性方面会有差异。例如,一个可能比另一个符合标准稍微多一些,因此,优先考虑目标并集中精力先处理最有前途的目标是个好主意。

情景创建

现在目标或目标已经确定,是时候设计一个合适的社会工程情景了。目标和目标可以作为“借口设计映射”的基础,这是下一节中解释的一个过程。

公开参与

这是与目标互动的最后阶段:实际执行社会工程情景。

请记住,很可能到达这个阶段,然后意识到最终目标实际上毫无意义。或者在执行场景之后,您可以进一步攻击其他目标。在这些情况下,重点放在三角形中的下一层上,重新审视之前被淘汰的目标。通过遵循这个过程,可以按照尽可能有效地使用分配的时间的顺序针对正确的人员。

预文本设计映射

前一节描述的目标识别过程揭示了两个合适的目标:目标 D 和 E。现在,该过程可以继续到使用目标 D 和获取有效通行证的目标的预文本设计映射阶段。

图 7.2 显示了我们目标的一个预文本设计地图示例。地图从目标和选择的目标开始。在这个初始阶段,很可能有一个以上的目标,并为每个继续树,但是例子将尽可能简单。

image

图 7.2 预文本设计图示例。

树在“Who”阶段分支,回答了与目标和目的相关的人是谁的问题。在我们的例子中,问题是“前台接待员会给谁发有效的通行证?”。这产生了两个明显的分支,即“承包商”和“员工”,因为前台接待员肯定会向这些群体发放通行证。这只是为了例子而列举的两种可能性,因为这里可能列出更多的群体,比如访客。

下一个分支回答了“为什么”或“如何”的问题,例如“前台接待员为什么会给承包商或员工发放有效通行证?”例如,员工可能忘记了带他们的通行证,因此需要今天的临时通行证。或者通行证可能被发放给执行例行维护的承包商。这可以看作是我们树中的第一个分支。发放通行证的原因有很多,应该列出尽可能多的原因。这构成了预文本的基础,并有助于绘制各种可能性的思维导图。通过将这些分成不同的组,比随机挑选更容易生成可能性。

一旦“如何/为什么”部分增加了可能性,那么开始创建借口的过程就开始了。其想法是继续从“如何/为什么”部分开始,并结合侦察信息来详细说明细节。例如,树上的第一个借口是基于冒充忘记通行证的员工。侦察可能已经透露出,在测试窗口期间某个员工不会在办公室,并且他们刚刚开始工作,这样前台接待员工可能不会很了解他们。类似地,关于承包商执行例行维护的可能性,侦察可能已经透露出每周都会有第三方访问的详细信息。

下面的第二个借口是基于冒充另一个分公司的员工,并尝试获取临时通行证。侦察可能已经透露出另一个分公司的详细信息以及制作假身份证的必要图像。因此,这个借口肯定是可能的。显然,进行的研究越多,创建借口就越容易。

确定了借口之后,下一阶段是澄清将使用的技术。这是一个关键阶段,通过彻底和有效来确保为客户创造价值。树枝上列出了可以在同一借口期间使用的备选技术。例如,涉及忘记通行证的第一个借口可以尝试两种方式。顾问可以简单地冒充员工并要求一张徽章,或者他们可以在到达前首先向前台发送一封假的授权电子邮件。同样,这些只是可能列在这里的许多不同技术中的两种。这两种方法都带有一定的风险,这些风险在技术旁边列出。在图中,仅冒充被归类为高风险,而带有电子邮件授权的冒充被归类为中风险。其原因是电子邮件提供可信度(即使它不符合标准程序),因此风险应该稍低一些。风险分配没有刻度,它纯粹是定性的,最终是顾问的决定。

使用的伪装手法和攻击向量将在成功达成目标时导致不同的漏洞被识别。在我们的例子中,仅仅冒充身份将识别出与接待员特定的意识培训和通行证更换程序相关的问题。然而,如果采用另一种方法,使用电子邮件授权函,它也会识别出与电子邮件特定的意识培训相关的问题。乍一看,第二种方法似乎更有利,但事情并不总是那么简单。如果采用第二种方法,确实会识别出更多的漏洞,但采用第一种方法将意味着这些漏洞更为重要(因为顾问不需要任何额外的可信度来获得通行证,他们只是要求得到了)。

根据这棵树,另一个可能性是,如果雇员安排了一个承包商,接待员会给予通行证。一个可能的技术是通过电话或电子邮件进行冒充。请记住,这只是许多可能性中的两种。在这里,两种不同的攻击向量导致了不同的漏洞被识别出来。电话攻击向量将识别出电话呼叫者验证程序的问题,而电子邮件攻击向量将识别出与电子邮件特定的意识和培训材料相关的问题。此外,由于这两者都是远程攻击向量,因此风险相对较低。

当以这种方式呈现风险水平和已识别的漏洞时,我们可以开始就评估中使用的假设做出一些明智的决定。例如,在评估开始时使用较低风险的假设,而在评估结束时使用较高风险的假设将是有益的。同样,由于我们可以看到每个假设识别了哪些漏洞,我们可以选择那些将识别出不同漏洞横截面的假设。当然,如果时间不是问题,那么可以尝试尽可能多的假设。然而,在大多数社会工程评估中,时间很可能是非常有限的。

对未知进行规划

有些专业的社会工程师拥有真正的“口才天赋”,可以在测试中自如地进入和离开任何情况。然而,当试图为希望进入社会工程领域的公司提供建议时,指出这一事实并不特别有帮助。如果他们天生具备这方面的天赋,那么他们肯定会觉得更容易,但这并不意味着如果他们不是非常外向,他们就不能进行扎实的社会工程评估。事实是,熟能生巧;如果有人坚持下去,他们最终将自然而然地进行技术操作,并且付出最小的努力。遵循本书的建议,保持评估的结构化和有效性对客户更有利,而不是试图自信、直言不讳、能言善辩。

对于不太自信于目标任务的顾问来说,为未知情况做计划的想法可能非常吸引人。然而,准备好所有答案的想法当然是荒谬的,因为他们不可能为每种可能的情况都做准备。如果一名保安突然走过来声称正在进行随机员工通行证检查,这是预先计划的吗?很可能不是,但至少客户会在报告中得到一个绿色的勾选。如果计划未知情况是如此困难,那么考虑各种可能的结果还有什么意义呢?答案当然是:这取决于情况。如果正在计划进行针对钓鱼邮件的攻击,那么可能的结果会通过邮件回复呈现出来,因此可能会有足够的时间来决定适当的应对措施。如果正在执行旨在欺骗特定接待员的场景,那么可能会发生任何事情,而且可能没有太多时间来考虑适当的应对措施。例如,就在顾问走进接待区时,接待员可能会意外更换,使得针对特定目标配置的攻击失效。一位经验丰富的顾问可能会立即转向另一种方法。然而,一位新的社交工程师可能会感到恐慌,可能最终不知所措,从而冒着被暴露的风险。不幸的是,他们实际上不能站在那里考虑该如何进行才是最好的,至少这可能会引起怀疑。提前考虑一些可能事件可以帮助避免这种情况。以下几节中解释了一些方法。

情景特定的结果

一旦确定了目标并设计了场景,将假象设计映射树扩展到包括可能的结果可能是有帮助的。然后可以考虑这些结果并计划适当的应对措施。每个场景应该都有明显的可能结果需要包括在内。例如,让我们考虑社交工程中最老套的情景之一:送货员。这个想法是通过假装成送货人来进入建筑物。当你考虑到可能的结果时,这个场景显然是相当荒谬的。

接待员要求把包裹放在接待处

有多少企业真实地允许送货员进入公司,直接把包裹交给收件人?也许有些,但如果是这样,那么企业根本不需要进行社交工程评估,他们首先需要从基本的安全措施开始。这种结果是最有可能的,因此攻击将被中断,顾问被迫离开大楼,几乎没有取得任何成果。

你不是我们的常规送货人?

即使制作了一个令人信服的假制服和证件,员工们也有可能注意到这不是平时的送货人。当他们在表上签字时,是否完美复制了?如果送货人通常使用电子设备记录签名,那么咨询师是否拥有此设备?货车呢,看起来正常吗?如果他们觉得有什么不对劲,他们可能会试图证明身份,这可能是个挑战,尤其是如果准备时间很短的情况下。由于这种结果很可能发生,他们最好有一个非常令人信服的掩护故事和退出策略,如果他们打算尝试的话。

真实的送货人刚刚到达或与假冒者同时到达

一个相当尴尬但非常可能发生的结果是,真正的送货人突然出现或在咨询师到达时同时到达。尽管进行了彻底的侦察,但他们可能会因为无法事先计划的原因而早到或迟到。如果发生这种情况,怀疑将很快引起,情况将变得非常棘手。

接待员让顾问通过

这确实是一个“可能性”,但考虑到其他各种结果,这确实是最不可能的。

一个非常常见的错误是基于这样一个假设进行所有规划:情景将成功:为进入大楼做好充分准备,前往目标部门,实现目标并无事离开。然而,如果忽视了其他基本的初始结果的考虑,整个攻击可能会受到威胁。

上面关于送货司机的例子表明,考虑基本结果可能导致决定不尝试攻击。然而,在大多数情况下,考虑结果更多是为了增加成功的机会,减少失败引起的重大问题的可能性。

如果情景设计得足够巧妙,甚至可能在一个失败时发生其他情况。例如,旨在分散安全人员注意力的情景可能会导致在最初的分散失败后设计的操纵安全人员的情景。因此,借口设计树实际上可以从可能的结果点重复。

掩护故事

严格来说,一旦设计了借口,就应该建立一个掩护故事。在许多方面,制定掩护故事不过是为了填补可能受到质疑的细节。应该非常清楚地知道咨询师为什么在那里以及为什么打电话或发送电子邮件。然而,掩护故事不仅仅是为了防止受到怀疑的员工质询,它还确保了常见和无害的问题不会引起怀疑。

无害的问题

假设情景涉及冒充一名电工,前来现场对员工的笔记本电脑进行 PAT 测试。看起来很简单,但是如果一名员工无辜地问顾问在哪里接受过 PAT 测试培训呢?不管顾问“相信”自己是那个角色多少,他们都不可能凭空捏造答案,也不应该依赖于能够巧妙地摆脱困境。如果他们对这样一个无害而无伤大雅的问题没有一个迅速的回答,那他们可能会有麻烦。第三章涵盖了冒充的基础知识以及有关角色的问题。然而,考虑到人们在随意谈话中可能会问的问题,也很重要。为角色建立背景,并扩展到出席的目的。

具有挑战性的问题

如果顾问受到挑战,那么可能会问一些可以预料到的问题。至少顾问必须能够回答以下问题是至关重要的:

• 角色姓名

• 公司名称

• 公司地址

• 同事姓名

• 现场联系人

• 打电话、发送电子邮件或出席的目的。

还有其他需要考虑的不那么明显但仍可能使事情变得困难的领域。

• 当地认知:如果您冒充员工并询问某个部门在哪里,您可能会很快引起怀疑。

• 员工停车场:与上述相同,如果冒充员工,则不要停在访客停车场。

• 车辆注册号码:您可能需要在签到簿上写下这个号码。如果提供了一个假的号码,则确保您能够熟记。

• 手机号码:使用您自己的手机还是临时的手机?如果是为了评估而暂时使用,请确保您知道这个号码。如果被问及号码而不知道它,可能会显得可疑。

出口策略

出口策略是欺骗设计图的另一个可能的延伸。无论攻击准备得多么小心和彻底,都有一些结果是难以恢复的。正是这些结果需要出口策略,以提供损害控制。出口策略不一定是解救情况的方法,它们是结束情况而不引起进一步怀疑或破坏整个攻击的方法。

对于非常自信和准备充分的实习社会工程师,通过电话与目标进行交流时,如果发生了他们没有预料到的情况,往往会突然崩溃并挂断电话。这种对目标“逃避”的举动只会证实他们的怀疑。如果顾问能够巧妙地摆脱困境,那就太好了,如果不能,那么他们可以尝试以下一些方法:

转移

声称突然想起了另一件事情要谈论,并将对话引导到那个话题上,同时思考如何回答之前的问题:“哦!在我忘记之前,我能问你关于…的事吗?”。

打断

声称刚刚被同事打断,要求回电话给目标或让他们等一分钟。这将给你时间思考如何最好地回应,但不要等太久。

装傻

根据被问及的内容,假装忘记了某事或表现得没有被告知过可能是一个合适的选择。请目标稍等片刻,让你查找信息。

质疑问题

用问题回答问题是一种拖延时间思考如何回答的方式。例如,如果被问及员工编号,可以通过询问为什么需要它,通常在哪里写的,或者关于授权流程的细节来争取时间。

忽视问题

这可能看起来是一种冒险的方式,但忽视问题并继续下去有时会导致目标放弃并继续前进,即使只是为了礼貌。

面对目标时,除了转移注意力外,上述方法并不理想。在棘手的情况下,顾问可以尝试以下方法。

突然想起了什么

刚刚想起在车里留下了一份重要文件或设备,需要去拿回来,以免再次忘记。

电话

并非每个人的手机都设置了可听到的铃声,有些人只依赖震动。因此,这可以用来假装接到电话并进行一场假对话,借此借口突然离开,或者利用对话时间重新考虑方法。

设计失败

每个创建的情景最初都设计成可以成功,并突出显示特定的漏洞。然而,“失败”的情景可能会凸显出额外的安全问题。例如,顾问可能会试图显得可疑,以评估员工如何质疑新面孔(从而识别出意识和培训计划存在的问题),而不是使用支持技术避免被挑战。作者执行的一项特定评估清楚地展示了这一点。尽管最佳努力试图劝阻,但客户坚持认为,服务器房间的访问应该是主要目标。进行了侦察,设计了适当的情景以识别漏洞,并安排工程师来执行这些情景。未知的是,客户已经告知所有员工将进行一次评估,以及评估将在哪一天进行。一旦顾问进入建筑物,可疑的员工立即包围了他们。他们质疑顾问问他们是谁以及为什么在这里。尽管顾问对这种突袭感到有些惊讶,但他们保持镇定,并解释他们是从另一个分部来访,并展示了他们的“假”员工工牌(幸运的是,这与他们正在执行的当前情景一致)。在看到员工工牌后,审讯者立即放弃了指控,并解释说:“哦,谢天谢地!显然今天会有一个‘神秘购物者’类型的人出现,所以我们都警惕起来了!IT 部门就在那边。”顾问充分利用了这种情况,与员工长时间地聊起了这位“神秘购物者”。在这个例子中,顾问最初并没有打算以这种方式受到挑战,但被挑战确定了意识和培训计划的一个非常严重的问题,或者说没有这样的计划。

另一个类似的例子涉及一名安保人员的失败挑战。两名顾问参与了一项标准评估。其中一种情景导致他们只获得了一个有效通行证。评估接近尾声时,顾问们决定尝试使用通行证同时将他们两个人带进建筑物内。他们成功地获得了通行权限,但是一名安保人员通过安全摄像头观察到了这种“搭便车”行为。安保人员迅速拦截了这两名顾问,并要求查看他们的员工工牌。一名顾问出示了有效的工牌,另一名声称忘记了自己的工牌,因此使用了同事的工牌。安保人员将没有工牌的员工护送回安全室进一步询问,然后允许另一名持有有效工牌的顾问继续前行。如果这是一次真实的攻击,尽管其中一名个体被抓获,另一个个体将自由继续他们的任务。

包括那些注定会失败的情景是重要的,但不应总是以黑白分明的方式处理。有时,最好的方法是设计一系列情景,所有情景都具有相同的目标,但复杂程度不同。为了更清楚地解释这一点,请考虑一种电子邮件钓鱼攻击场景。通过设计完美的电子邮件钓鱼攻击,直到细节到无法被收件人识别为假的程度,你很有可能成功。但是,这证明了什么呢?可能是向客户呈现一个最坏的情景:“看看攻击者可能做什么!”。问题在于客户将极其难以抵御这样的攻击,那么评估实际上取得了什么成就?相反,假设测试公司插入了一些小错误,如拼写错误、略有不同的域名或电子邮件签名中的不一致之处。现在,员工有可能发现这些问题并联系 IT 帮助台进行报告。这又告诉客户什么?相当多。它告诉他们,他们的员工正在寻找这些问题并适当地报告它们。如果他们没有收到任何电话,那么他们知道他们的意识和培训计划需要改进。如果攻击被简化为基础知识,涉及非常简单的钓鱼攻击,那么员工没有电话通知将表明存在严重的安全问题!这些不同程度的攻击可以同时发起,因为测试公司知道他们将它们发送给谁,客户知道谁打电话报告了问题。此外,如果钓鱼邮件正在收集凭据,那么测试公司可以看到谁受到了攻击。

总结

确保为客户提供价值至关重要,尤其是在时间有限的情况下。已经讨论了目标识别和借口设计的正式方法。这些方法确保情景针对最相关的领域,并尽可能多地识别漏洞。

情景并非总是按计划进行,考虑到结果、准备好掩盖故事并知道你的退出策略都可以大大提高成功的机会。

下一章将介绍如何在评估过程中收集和利用开源情报。

第八章:利用开源情报

Richard Ackroyd,高级安全工程师,RandomStorm Limited

俗话说“如果我有八个小时去砍树,我会花六个小时磨斧头”,这句话与这个阶段完美地契合。 您执行的侦察工作将决定或破坏社交工程的参与。 它确实将成为任何随后工作的基础。 我们可以随时获取大量信息。 本章将向您展示如何找到并操纵它以帮助您进行评估。 将涵盖收集电子邮件地址、文档元数据、企业网站和社交媒体的内容。

关键词

被动蜘蛛;FOCA;Metagoofil;图像元数据;Exiftool;图像挑选器;Wget;GeoSetter;反向图像搜索引擎;PDFGrep;文件混淆;theharvester;Sam Spade;Jigsaw;Recon-ng;社交媒体;LinkedIn;Facebook;DNS 记录;CeWL;WHOIS 记录

本章的信息

• 企业网站

• 员工姓名

• 员工层次结构

• 电话号码

• 员工照片和数据

• 主动和被动蜘蛛

• 文档元数据

• FOCA

• Metagoofil

• 字符串

• PDFGrep

• 图像元数据

• ExifTool

• 图像选择器

• WGET

• GeoSetter

• 反向图像搜索引擎

• 不太元数据

• 电子邮件地址和电子邮件枚举

• 网络钓鱼攻击

• 密码攻击

• 电子邮件地址命名约定

• 社交媒体

• 领英

• Facebook

• Twitter

• DNS 记录和枚举

• Dnsrecon

• 子域名暴力破解和枚举

• CeWL

• WhoIS

介绍

第七章介绍了一个创建有针对性场景的模型。 本章将介绍如何使用公开可用的信息来对特定目标进行轮廓化。

这是社交工程的一个真正有趣的部分。 一个典型企业放入公共领域的信息真的非常引人入胜。 令人恐慌的是,大多数组织甚至都没有意识到他们正在这样做。 信息可以通过文档元数据或其公共 IP 地址的注册详细信息泄漏出来。 这是社交工程的一个真正迷人的方面,也将在渗透测试中证明有用。

本章将首先介绍企业的网络存在,以及如何对其进行询问以获取有用信息。 这些信息可能是基本的,例如企业的直拨电话和电子邮件地址。 或者,它可以用来提供假象的基石。 看似不起眼的信息片段,如合作伙伴、供应商和客户,突然变得非常有趣。

将介绍从企业网站直接恢复信息的方法,无论是被动还是主动的性质。

接下来,本章介绍了获取公司电子邮件地址背后的过程和工具。在绝大多数社会工程攻击中,电子邮件地址都是金子般珍贵的。它们不仅为钓鱼攻击提供了基础,还提供了组织内其他邮箱的命名约定。

获取这些电子邮件地址的工具通常不会告诉我们它们是在哪里找到的。我们将追溯到它们的来源,以展示这有多有用。例如,在最近的社会工程活动中,发现一大部分这些电子邮件地址实际上是在员工发布的文档中找到的。这些文档并不在公司网站上提供,但包括直拨电话、手机号码以及大量其他有用的情报。

文档元数据将在以下部分进行介绍。本章将介绍一些流行的工具,用于收集和解析发布在公司网站上的文档。预计将看到的内容包括用户名、本地工作站的文件夹结构、电子邮件地址和输出中的操作系统。毫无疑问,这对社会工程师非常有用。

接下来是对社交媒体网站、博客和论坛的调查。所有这些都可以成为关于潜在目标的信息的有用来源。接下来要进行搜索引擎收集。“Google”搜索引擎是一款多么出色的侦察工具,总是让人惊讶不已。还简要介绍了 DNS 和 Whois 记录的主题,如何获得它们,使用哪些工具,以及如何将获得的情报应用于您的参与。最后,本章提供了关于如何使用提取的所有信息的指导,包括与数据操作相关的一些常见任务,例如构建用户和密码列表,这些可以在进一步的攻击中利用。本章将涵盖许多真正出色的技术、技巧和工具,让我们开始吧。

本章中使用的绝大多数工具都安装在 Kali Linux 中。您可以在这里下载虚拟机或 ISO:www.kali.org

公司网站

在寻求对任何业务进行情报收集时,他们的公司网络存在是显而易见的起点。然而,有哪些信息是不能立即看到的?隐藏的宝藏在哪里,如何将它们应用到正在进行的评估中?通常发现大多数企业对潜在攻击者提供的信息量感到惊讶。可以预期找到什么样的信息,以及为什么对社会工程师以及恶意个人来说这些信息是有用的?

商业目的

了解企业的业务、理念以及其运作方式始终是关键信息。如果选择的方法是冒充员工,那么需要进行彻底的研究才能成功。了解组织的基本情况以及行业内使用的术语可以帮助很多。了解一个企业也可以在对可能正在使用的系统类型进行有根据的猜测时提供帮助。

一些深入调查还可以提供有关在电话或现场拜访中可能会面临多少阻力的线索。如果企业习惯于与政府和军事机构打交道,那么社会工程师在信息安全方面遇到的人很可能是经过良好训练的。这样的组织更可能是组织化的,会按照流程进行操作。评估组织的潜在安全态度的其他指标还包括信息保障标准的标志,如 ISO 或 PCI。同样,这些都是提示,表明企业内的一些人可能接受过培训,这可能使他们更难以被利用。

社会工程师所做的很多工作是盲目进行的,至少起初是这样,因此建议尽可能多地从这个过程中获取信息。准备不足就是准备失败。

合作伙伴、客户、供应商

许多组织在其网站上发布客户、合作伙伴和供应商列表。还有什么更好的借口可以进行信息收集呢?打电话到帮助台并冒充客户很可能会获得一些有用的信息。如果目标组织有客户门户,有可能通过尝试重置客户的密码来获得访问权限。在许多情况下,获得某人信任所需的只是他们认为是私人的一点知识。这可能是客户门户的 URL 和使用客户的姓名。在许多情况下,添加一种紧急感可以施加所需的所有压力,以推动事情的发展。

电子邮件地址

电子邮件地址在社会工程攻击中异常有用,这将在本章后面更详细地讨论,包括如何从公开可用资源中收集它们。有几种利用它们的方法,例如选择进行有针对性或广泛规模的网络钓鱼攻击,或者使用它们攻击 VPN 和电子邮件门户。尽管后者更像是渗透测试领域的内容,但许多社会工程参与都采用了这种混合方法。

电子邮件地址还可以指示内部用户名的约定,这意味着如果可以识别更多员工,那么可以建立更大的电子邮件和用户列表。这些可以在整个参与过程中用于进一步攻击。

员工姓名

公司网站上的员工名字数量可能仅限于董事和股东。在组织有员工撰写的博客或新闻文章的情况下,仍然有可能找到层级更低的人。员工的名字在伪装角度或在电话时提及名字时很有用。大多数人会认为 LinkedIn 是这种信息的更好资源。只需确保他们当前的就业状况是准确的。冒充不再为目标工作的员工将不太可能提供任何好处。

员工层级结构

了解员工层级对社会工程师总是有用的。自称是某个领导职位的人的电话可能会以意想不到的方式顺利进行。多少呼叫中心的员工敢冒险冒犯整个部门的负责人?另一个角度是熟悉或不熟悉的情况。选择一个不太可能经常与呼叫中心员工联系的员工意味着被识破的机会较小。没有什么比经历整个建立你的伪装企图过程后,却被你的目标说“嘿,你听起来不像鲍勃…”更糟糕的了。此时,你可能已经在组织层面引起了警报。

电话号码

电话号码,像电子邮件地址一样,对于持续的互动也是关键。通常情况下,组织只会公布中央总机的号码,因此通常认为这更安全,因为总机工作人员可能接受了特定角色的安全培训。然而,情况通常并非如此。接电话的人受雇于帮助和支持企业,而不是成为障碍。他们可能会接听大量的电话,这意味着很少有时间对每个电话进行审查,也很少有机会识别重复的来电者。因此,总机经常成为攻击目标,以获取企业内其他员工的直线电话。很少有人会因除了姓名和电话目的以外的任何事情而受到质疑。即使他们受到质疑,组织每年可能会接到成千上万个入站销售电话,因此不太可能引起任何怀疑。

另一个有趣的向量与责任缺乏认证已经通过另一名员工的人有关。当涉及到信息泄露时,这可能给组织带来严重问题。不能简单地认为对话的对象是客户,仅仅因为有人告诉你他们是客户,并不意味着在向他们提供任何敏感信息之前就不能进行验证。

员工和企业位置的照片

本章后面将调查数字照片中所包含的各种隐藏信息带来的智能潜力。这可能包括照片拍摄设备的类型、地理位置等。

然后是照片中更明显的情报。这可以是从物理位置的照片,到办公室的内部布局,甚至是身份证。Images.google.com对这种努力来说是绝对的宝藏。例如,通常可以在宣传照片中发现身份证,并用它们来重新制作副本。即使是粗略制作的身份证,也足以让社会工程师在没有员工或安全人员干预的情况下绕过建筑物。事实上,社会工程师往往可以很快地使用喷墨打印机制作一个徽章。尽管是在照片纸上打印的,但它仍然可能通过安全人员的近距离检查。他们可能只是看照片或者只是执行程序。

在收集了企业网络存在的一些有用信息之后,我们使用了哪些工具来检索它呢?

爬虫

爬虫,有时也称为爬行器,旨在索引网站及其内容。它们通过从种子 URL 开始并识别这些站点上的所有超链接来实现这一点。然后爬虫访问这些链接中的每一个,最终构建出所涉及的网站的完整地图。爬虫最常用于谷歌和必应等搜索引擎提供商。这形成了当搜索时内容如何被提供的基础。

爬虫对社会工程师和渗透测试人员都非常有用。这是因为它允许以自动化和有效的方式完全映射企业的网络存在。

爬虫可以 passively 和 actively 对网站进行攻击。下面介绍一种用于被动地映射网站结构的工具。

被动爬虫

如果任何侦察工作开始引起警报,那么所有的努力都可能白费。如果我们能 passively 地爬取一个网站,那不是很好吗?事实上,通过使用“代理爬虫”就可以实现这一点。

谷歌和必应等大型搜索引擎提供商花费大量时间爬取互联网,以便搜索引擎用户无需自行操作。为什么不利用一下呢?

使用由屡获殊荣的 Ryan Dewhurst(@ethicalhack3r)创建的 Passive Spider(github.com/RandomStorm/passive-spider)来映射网站。www.ethicalhack3r.co.uk

被动爬虫利用搜索提供商的工作,通过利用搜索结果来给出网站的布局。

在撰写本文时,被动爬虫仅使用必应搜索引擎,但需要注册免费的必应开发者 API 密钥才能执行任何搜索。

安装需要 Ruby,但非常简单。已在运行 Ruby 1.9.3 的 OSX 上进行了测试,也可以在 Kali Linux 上运行,同样在 Ruby 1.9.3 上工作。

以下是安装说明:

git clone https://github.com/RandomStorm/passive-spider.git
cd passive-spider
gem install bundler && bundle install.

或者,您也可以直接从 GitHub(www.https://github.com)下载 ZIP 存档并提取文件。

在 passive-spider 目录中有一个名为 api_keys.config 的文件。这是您需要在引号之间输入之前提到的 Bing 搜索 API 密钥的地方。

确保 pspider.rb 文件具有执行权限:

chmod +x pspider.rb

此时,被动蜘蛛已准备就绪。让我们看看它收集了什么信息。

./pspider.rb --domain syngress.com
[+]---------------------[+]
[+] Passive Spider v0.2 [+]
[+]---------------------[+]
Shhhhh… by Ryan'ethicalhack3r' Dewhurst
Part of The RandomStorm Open Source Initiative
[+] URLs: 59
http://booksite.syngress.com/
http://www.syngress.com/?cur=usd
http://booksite.syngress.com/companion/conrad/practice_exams.php
http://booksite.syngress.com/companion/conrad/
http://booksite.syngress.com/companion/issa.php
http://www.syngress.com/about-us
http://booksite.syngress.com/companion/special_interests.php
http://booksite.syngress.com/companion/conrad/podcasts.php
http://booksite.syngress.com/companion/conrad/Conrad_PracticeExamA/COU36289844/open.html
http://booksite.syngress.com/companion/certification.php
http://booksite.syngress.com/companion/hacking_penetration.php
http://booksite.syngress.com/9781597494250/content/
http://www.syngress.com/news/nacdl-cacjs-5th-annual-forensic-science-seminar-march-23-24-las-vegas/
http://www.syngress.com/special-interests/
http://www.syngress.com/events/5th-annual-cai-security-symposium---northern-ky-univ-oct-28th-highland-heights-ky/
http://booksite.syngress.com/companion/digital_forensics.php
http://booksite.syngress.com/Landy/index.php
http://www.syngress.com/news/securabits-100th-podcast---guest-harlan-carvey-and-craig-heffner-tonight-march-7th-7-30-est/
http://booksite.syngress.com/9781597494250/content/Video/HIPT/module06/index.html
http://www.syngress.com/events/7th-annual-scada-and-process-control-system-security-summit-orlando-florida/
http://www.syngress.com/information-security-and-system-administrators/Dictionary-of-Information-Security/
http://www.syngress.com/news/read-the-latest-review-for-digital-forensics-with-open-source-tools-by-altheide-and-carvey/
http://booksite.syngress.com/9781597494250/content/Video/HIPT/module02_E/index.html

如您所见,输出非常直观。现在我们已经在未触摸它的情况下获得了目标公司网站的基本布局。在开始任何更积极的测试之前,强烈建议采用这种方法。可能需要更积极的蜘蛛来处理整个网站。这将在本章后面介绍。

被动蜘蛛不止于此。它还显示了查询期间找到的任何文档,这对社交工程师来说可能非常有用。为什么查看元数据时文档很有用将在本节后面介绍。此外,文档通常非常有用,因为它们经常包含员工的联系方式。

滚动到结果的底部会显示在搜索期间找到的任何子域和有趣的关键字。

使用 OWASP Zed Attack Proxy 进行主动蜘蛛。

Zed Attack Proxy (ZAP) 是一个易于使用的集成渗透测试工具,用于查找 Web 应用程序中的漏洞。

它设计用于被各种安全经验水平的人使用,因此非常适合对渗透测试尚不熟悉的开发人员和功能测试人员。

ZAP 提供了自动扫描器以及一套工具,使您能够手动查找安全漏洞。

www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

ZAP 是另一个非常棒的开源工具,我们可以利用它,但它提供的全部功能远远超出了本书的范围。目前我们感兴趣的是它的蜘蛛能力。

ZAP 之所以被称为 ZAP,是因为它代理您的连接到您选择的目标。这使得 ZAP 能够拦截并篡改任何出站请求或入站响应。

启动 ZAP 后,您需要配置浏览器指向它,通过在代理设置中配置 localhost 和端口 8080 来进行。我使用 Firefox 的 FoxyProxy 插件,但其他浏览器也有替代品。如果您将要频繁更改设置,则 FoxyProxy 等应用程序更快,并且您可能会这样做。

所以,让我们安装 ZAP 并配置浏览器,以便我们可以拦截流量。为了本节的目的,我假设您正在使用 Firefox。

步骤 1:转到 FoxyProxy 网站:addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/

步骤 2:点击“继续下载”。

步骤 3:点击“添加到 Firefox”。

步骤 4:Firefox 应提示您安装 FoxyProxy。此时需要重新启动 Firefox。

就是这样。接下来,我们需要配置 FoxyProxy 以启用将所有流量发送到 ZAP。

步骤 1:在 URL 栏末尾找到 FoxyProxy 按钮,右键点击它。选择选项。

步骤 2:点击“添加新代理”(图 8.1)。

步骤 3:填写“localhost”和端口 8080 的代理设置(图 8.2)。

当启用 FoxyProxy 时,它将自动将 HTTPS 和 HTTP 流量发送到 ZAP。如果没有使用 FoxyProxy,则可能需要在浏览器或系统设置中单独配置 HTTPS 代理。

步骤 4:点击顶部的“常规”按钮,并给条目命名,“Owasp ZAP”即可。

步骤 5:选择一个颜色作为条目的颜色,然后点击“确定”完成设置。

image

图 8.1 添加新代理。

image

图 8.2 FoxyProxy 设置。

现在要启用代理,只需右键点击地址栏末尾的小狐狸图标,然后选择“用 OWASP ZAP 代替所有 URL”。此选项将通过 ZAP 发送所有 HTTP 和 HTTPS 流量。由于尚未启动,因此没有任何网站会加载。

在本节开始提供的链接中获取 ZAP 后,有一个 Windows 安装程序和一个 Mac 版本。给出的示例是在 Mac 上运行它,但是无论如何,流程都是相同的。通过安装和运行 ZAP,将呈现以下屏幕(图 8.3)。

image

图 8.3 ZAP 初始界面。

因此,让我们跳回 Firefox 浏览一个网站,看看会发生什么。这通过使用 Damn Vulnerable Web Application (www.dvwa.co.uk) 进行演示,该应用是本书的目的,也包含在 OWASP Broken Web Applications 操作系统中(图 8.4)。

image

图 8.4 ZAP 请求。

这表明所访问的站点显示在左侧的“站点”框中。底部窗格中是单个 HTTP 请求。此时,唯一感兴趣的是蜘蛛,但鼓励读者探索 ZAP 的其他功能。

如果感兴趣的是拦截发送到 HTTPS 站点的请求,则需要接受 ZAP 证书,以便可以解密和重新加密流量。

这里是蜘蛛进程的概述:

步骤 1:点击蜘蛛按钮。

第二步:在左侧的“站点”菜单中选择要部署网络爬虫的站点。

第三步:点击播放按钮,等待其完成(图 8.5)。

图片

图 8.5 ZAP 网络爬虫。

爬网站可能是侵入性的,并可能在某些系统上引起问题。在执行任何形式的主动测试之前,请注意风险并寻求许可。

这些信息对社会工程师有什么用呢?

被动和主动的网络爬虫都已经被调查过了,但是这些信息对社会工程师有什么用呢?网站布局只是进一步探索的前奏;它帮助提供对侦察路径的指导,并确保时间有效利用。它可以提供一目了然的信息,对任何社会工程师都可能有用,如商业伙伴、门户、客户、供应商和联系页面。它还可以帮助识别大型网站上的文档和关键字。所有这些信息都可以用作进一步侦察的基础。最终,这些信息将导致一个或多个构建基础的假设。

网络爬虫只是侦察生命周期中非常早期使用的工具之一。在彻底了解了这个工具之后,看一下其他可供社会工程师使用的一些工具是非常重要的。

文档元数据

文档元数据基本上是存储在办公文档中的属性信息。当创建 Microsoft Word 或 PDF 文档时,会自动为其添加一些元数据,即使作者并不真正知道。任何拥有该文档的人都可以检索到这些信息。

通常,元数据将是安装办公产品时选择的用户和商业名称。至少可以通过从办公应用程序中查看文档属性来查看一些文档元数据(图 8.6)。

图片

图 8.6 安装选项被填充到 Microsoft Word 文档的元数据中。

这清楚地表明,至少文档可能提供了创建者的姓名。这样,它就可以被添加到用户名单中,或者在致电组织时作为一个名字的参考。

还有许多其他的元数据标签可以由个人添加,以及一些应用程序自动添加的标签。

在这些隐藏的元数据中,通常可以找到操作系统版本、目录结构和用户。此外,还可以找到用于创建文件的确切软件版本。以下是一些提取这些信息的工具:

字符串

字符串搜索可在文件及其元数据中搜索可打印的字符串,并在终端中显示它们。

例如,当运行 strings 对 PDF 文件进行搜索时,下面是其输出(图 8.7):

image

图 8.7 字符串从 PDF 文件输出。

mac1:rich$ strings mypdfdocument.pdf

在这种特殊情况下,可以检索到正在使用的操作系统 Mac OSX 10.0.4,以及正在使用的 Acrobat 版本。在现实世界中,特别是如果客户的网站上有大量文档的情况下,收集这些信息肯定需要很长时间。幸运的是,有很多工具可以自动化这个过程。

FOCA—www.informatica64.com/foca.aspx

FOCA 是一个为渗透测试人员设计的信息收集工具的 Windows 应用程序。它通常被认为是这类工作中最好的工具之一。它涵盖了本书未涵盖的多种功能。Pro 版本应该被视为任何频繁使用该应用程序的人的一项有价值的投资。

用户在使用 FOCA 时的第一印象之一就是它的易用性。它完全由 GUI 驱动,布局合理,对大多数人来说非常直观。

提取元数据的过程几乎完全自动化。FOCA 给定一个域名,然后它会查找出存在的任何文档。接下来,FOCA 被告知下载文档并提取元数据。它会对每种类型进行分类,并将它们显示在一个易于导航的树中。然后可以将元数据导出到文件中以便操作。真的没有比这更容易的了。

下面是使用可从提供的链接下载的 FOCA Free 进行的过程演示。需要提供一个电子邮件地址,但这对于一个出色的应用程序来说是微不足道的代价。

在 FOCA 的首次启动时,用户将看到一个与 图 8.8 类似的屏幕。

image

图 8.8 FOCA。

这是“逐步指南”:

步骤 1:点击左上角的“项目”,然后点击“新项目”。

步骤 2:给项目命名,然后在“域网站”字段中输入一个域名。这应该只是 mydomain.com,而不是一个 URL。

步骤 3:告诉 FOCA 在哪里存储项目文档,并添加可能以后有用的任何注释(图 8.9)。

步骤 4:点击“创建”,选择一个位置保存项目文件。桌面现在就够了。

现在,会看到一个类似于 图 8.10 中的屏幕。

选择 Google 和 Bing,将扩展名保持不变。扩展名是 FOCA 将在搜索中查找的文件类型。

步骤 5:点击“搜索全部”。

文档应该开始填充屏幕。名称、大小和类型都将可见。

步骤 6:现在文档搜索已经完成,右键单击任何文档,然后选择“全部下载”。这将把所有文档下载到您之前配置的位置(图 8.11)。

下载所有文档可能需要一些时间。去拿杯咖啡,5 分钟后再来查看一下。

步骤 7:现在所有文档都已下载,请再次右键单击搜索结果中的任何文档,并选择“提取所有元数据”。

图片

图 8.9 FOCA—设置项目。

图片

图 8.10 FOCA 文件扩展名。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 8.11 FOCA 下载文档。

这应该会产生一个良好组织的元数据视图(图 8.12)。

图片

图 8.12 FOCA 元数据。

FOCA 已从所有可用文档中提取了用户、文件夹结构、软件版本和操作系统,而所需的一切只是给出一个域名。在真实的世界评估中,将看到比这张截图显示的更多细节,假设客户在发布文档之前未对其进行消毒。很少有“密码”元数据类别到目前为止能够见到光明,但它往往是首先被寻找的内容。

例如,右键单击左侧的任何元数据类别,并将结果导出到文件中,可以特别有用用于构建用户列表。

此外,在文档窗格中右键单击并添加一个本地文件或目录进行元数据提取也可能非常有用。

这展示了 FOCA 的一些用途;但是,FOCA 也有开源替代品。让我们现在看一个。

Metagoofil

Metagoofil 的工作方式类似于 FOCA。它首先从 Google 搜索,然后从目标网站下载文档。然后,Metagoofil 可以开始从文档中剥离元数据,并在报告中呈现结果。与 FOCA 一样,Metagoofil 能够检索用户名、软件版本、电子邮件地址和文档路径。

Metagoofil 可以从code.google.com/p/metagoofil/获取,并且已经在 Linux 和 OSX 中进行了测试。它还应该捆绑在 BackTrack 和 Kali Linux 中。

这里是命令行开关的一个例子:

******************************************************
* Metagoofil Ver 2.2            *
* Christian Martorella          *
* Edge-Security.com            *
* cmartorella_at_edge-security.com   *
******************************************************  
 Usage: metagoofil options
    -d: domain to search
    -t: filetype to download (pdf,doc,xls,ppt,odp,ods,docx,xlsx,pptx)
    -l: limit of results to search (default 200)
    -h: work with documents in directory (use "yes" for local analysis)
    -n: limit of files to download
    -o: working directory (location to save downloaded files)
    -f: output file
 Examples:
 metagoofil.py -d apple.com -t doc,pdf -l 200 -n 50 -o applefiles -f results.html
 metagoofil.py -h yes -o applefiles -f results.html (local dir analysis)

这其实非常简单。给 Metagoofil 一个域名,告诉它要查看的文档类型,以及限制搜索结果和文件下载的数量。这些限制将由客户的规模和可用时间来定义。如果只有很短的侦察时间窗口,最好尝试避免下载大量每种类型的文档。无论如何,某些客户可能只有少数几个文档。在这里运行工具以查看它返回了什么:

metagoofil -d offensivesite.com -t doc -l 200 -n 50 -o /root/Desktop/metadata/ -f results.html

使用 -d 开关设置了域,-t 定义了 .doc(Microsoft Word),然后使用 -l 开关将搜索结果限制为 200 个。每种类型下载的文件数量由 -n 选项定义为 50。接下来,选择将文件下载到桌面上的 metadata 文件夹中。最后,结果被发布到一个 HTML 文件中,使用 -f 选项。以下是该工具的输出:

******************************************************
* Metagoofil Ver 2.2
* Christian Martorella
* Edge-Security.com
* cmartorella_at_edge-security.com
******************************************************
[-] Starting online search…
[-] Searching for doc files, with a limit of 200
  Searching 100 results…
 Searching 200 results…
Results: 8 files found
Starting to download 20 of them:
----------------------------------------
[1/20] /onoes=en
  [x] Error downloading /onoes=en
[2/20] http://www.offensivesite.com/docs/2323.doc
[3/20] http://www.offensivesite.com/docs/11.doc
[4/20] http://www.offensivesite.com/docs/22.doc
[5/20] http://www.offensivesite.com/docs/123.doc
[6/20] http://www.offensivesite.com/docs/122.doc
[7/20] http://www.offensivesite.com/docs/bob.doc
[8/20] http://www.offensivesite.com/docs/testing.doc
[9/20] http://www.offensivesite.com/docs/lotsometadata.doc
[10/20] http://www.offensivesite.com/docs/doc.doc
[11/20] http://www.offensivesite.com/docs/diary.doc
[12/20] http://www.offensivesite.com/docs/random.doc
[13/20] http://www.offensivesite.com/docs/things.doc
[14/20] http://www.offensivesite.com/docs/morethings.doc
[15/20] http://www.offensivesite.com/docs/manual.doc
[16/20] http://www.offensivesite.com/docs/passwords.doc
[17/20] http://www.offensivesite.com/docs/creditcardnumbers.doc
[18/20] http://www.offensivesite.com/docs/fortknoxdoorcodes.doc
[19/20] http://www.offensivesite.com/docs/safecombination.doc
[20/20] http://www.offensivesite.com/docs/deathstarplans.doc
[+] List of users found:
--------------------------
Edmond Dantès
Jim Seaman
Andrew Gilhooley
Charlotte Howarth
Bryn Bellis
Owen Bellis
Gavin Watson
Andrew Mason
James Pickard
John Martin
[+] List of software found:
-----------------------------
Microsoft Office Word
Microsoft Office Word
Microsoft Office Word OSX
Microsoft Word 10.0
Microsoft Word 9.0
[+] List of paths and servers found:
-------------------------------------
'C:\Documents and Settings\TheEmperor\My Documents\deathstarplans.doc'
'S:\My Documents\creditcardnumbers.doc'
'C:\Documents and Settings\chazzles\Application Data\Microsoft\Word\AutoRecovery save of passwords.doc'
'/Users/jseaman/Documents/safecombination.doc'
[+] List of e-mails found:
----------------------------
Edmond Dantès@offensivesite.com
Jim Seaman@offensivesite.com
Andrew Gilhooley@offensivesite.com
Charlotte Howarth@offensivesite.com
Bryn Bellis@offensivesite.com
Owen Bellis@offensivesite.com
Gavin Watson@offensivesite.com
Andrew Mason@offensivesite.com
James Pickard@offensivesite.com
John Martin@offensivesite.com

哇,我们真的赢得了头彩。一个命令和几次下载后,我们已经知道了关于目标的大量更多数据。结果还通过 -o 命令开关放入了一个漂亮格式的 HTML 文件中(见图 8.13)。

image

图 8.13 Metagoofil 结果 HTML。

Metagoofil 也可以与本地下载的文件一起工作。例如,如果有人将文件作为邮件附件发送,可以让 metagoofil 去除其中的元数据。只需使用 -h 命令开关。

mac1:rich$ metagoofil -h yes -o /root/Desktop/metadata/ -f results2.html

这假设我们已经将本地文档放在 /root/Desktop/metadata 目录中。从这里开始的过程是相同的。Metagoofil 剥离文档元数据并将其打印到屏幕上,同时将结果写入 results.html 文件。

为什么文档元数据对社会工程师有用

我猜你现在可以看出为什么这是社会工程师的有用工具了。几个命令和几次下载后,我们已经收集了大量关于目标组织的信息。我们知道目标在使用什么软件,而且在很多情况下,知道他们使用的操作系统。

我们知道谁为他们的出版物创建文档。我们有一个不错的电子邮件地址收集,可以用于钓鱼攻击或以电子邮件为主要通信手段的借口。考虑到我们知道他们可能在使用的软件和操作系统,我们还可以确保选择更有可能在目标环境下奏效的攻击。

所有这一切之上,内部用户名和这些用户的命名约定已经被收集。这在执行混合评估或尝试攻击登录门户或 Webmail 时可能会很有用。这还意味着可以对 LinkedIn 和其他社交媒体网站进行挖掘,获取员工列表,然后用于构建更大规模的电子邮件地址列表,用于任何钓鱼攻击。别忘了,每个文档都可能包含有效的借口基础,所以要认真检查它们。

照片元数据

每个数字文件创建的事实都无法逃避。这可能是相对无害的信息,比如创建它的系统类型,或者可能是更敏感的信息,比如拍摄该照片的确切地理位置。

智能手机的时代确保了这些设备成为拍照的最受欢迎的设备,记住这些设备也具有内置的 GPS 功能。这意味着每张直接上传到 Facebook、LinkedIn 或 Twitter 的照片中也包含位置数据。这些信息被称为 Exif(可交换图像文件格式)数据。

下面是一些用于提取 Exif 数据的工具。

Exiftool—www.sno.phy.queensu.ca/~phil/exiftool/

Exiftool 是 Windows 和 OSX 都支持的免费 Exif 阅读器。这个例子使用的是 OSX 版本,但 Windows 版本的工作方式基本相同。

Exiftool 不仅可以用于检索元数据,还可以用于编辑元数据,这意味着它可以用于在发布之前对任何企业照片进行消毒处理。

运行该应用程序非常简单,只需告诉它从哪张照片中提取数据即可。

mac1:rich$ exiftool myphoto.jpg

随着读者跟着书本阅读,他们可能会看到屏幕上满满的输出。对于我们作为社交工程师来说,很多信息都是多余的,但有些东西很突出(参见图 8.14)。

image

图 8.14 Exiftool 数据。

第一张屏幕截图向我们展示了一些关键信息(即图像创建的时间以及所使用的手机和软件类型)。后者如果他们正在寻找漏洞或潜在的资产回收将会更有用。像这个例子中的旧版 IOS 更容易被检索数据。照片被拍摄的时间也很有用,主要是为了了解照片对我们是否仍然相关。也许我们正在尝试识别业务的卫星办事处的位置,但我们知道它们仅在特定日期之后开业。

接下来是真正有趣的部分;图像被拍摄的纬度和经度(参见图 8.15)。在这个例子中,完整字符串为 51°30′39.60″N,0°5′6.60″W。

image

图 8.15 Exiftool 地理位置数据。

我在这里选择的地图工具是谷歌地图,可以预见的。我们需要稍微修改字符串,以便谷歌接受它。你只需要从纬度和经度中都删除“deg”。那么,当照片拍摄时我在哪里?(参见图 8.16)。结果证明,就在伦敦 Gherkin 大楼附近。

image

图 8.16 谷歌地图位置。

如何自动化图像检索和元数据提取过程?当然,应该避免逐个下载文件并逐个剥离它们。恰好,某人已经解决了这个问题。

这里是一些选项。

图像选择器——Firefox 的一个附加组件——addons.mozilla.org/en-us/firefox/addon/image-picker/

Image picker 是 Firefox 的一个附加组件,可以从您正在浏览的页面下载所有图片。安装 Firefox 附加组件非常简单。点击上面的链接,点击安装,然后重新启动 Firefox。

当 Firefox 重新启动时,将会有一个看起来像一个带有下载箭头的图片的小按钮。点击这个按钮将会有一个选项来下载标签中的所有图片。

这个附加组件仍然只在图片较多的网站上才真正有用,因为它不会搜索网站以查找图片。所以,如果目标是 Flickr 或 Picasa 账户,这可能是一个非常有用的工具,更不用说非常简单直接地使用了。

现在有很多照片,所以 Exiftool 可以用来处理整个目录。命令是一样的,只是给它目录名而不是图片名。

mac1:rich$ exiftool owlpictures

如果有必要,您可以使用 grep 查找所需的值。以下命令将打印每张照片的 GPS 位置。

mac1:rich$ exiftool owlpictures | grep'GPS Position'

有趣的是,Twitter 会清除上传到其平台的所有图片的 Exif 数据,因此这对我们不再是一个感兴趣的渠道了。这在以前并不总是这样,一些知名案例突显了这个问题。Paterva 的创始人 Roelof Temmingh(paterva.com/web6/)曾经做过一次演讲和演示,突显了谁在 NSA 停车场内发推文。他们使用 Maltego 来收集地理位置数据,很快就能突出 NSA 的潜在员工,以及联系相当惊人的个人数据。像这样的创造性思维真的可以增强社会工程的参与度,更不用说,也许我们在安全方面寻找的地方不对。

使用 Wget 从网站下载图片

Wget 是一个命令行工具,可以建立与网站的 HTTP、HTTPS 和 FTP 连接,主要用于自动检索文件。它是一个可用于 Linux、OSX 和 Windows 的命令行工具。如果使用的是 OSX 或 Linux,用户可能已经拥有它了。如果没有,请查看这里下载和安装包—www.gnu.org/software/wget/

可以指示 Wget 在页面上蜘蛛链接并下载它找到的任何图片到特定的深度。基本上它会做 Image Picker 所做的事情,但是更强大。还记得《社交网络》中马克·扎克伯格需要下载所有学生的 Facebook 头像的场景吗?他也用了 wget。

mac1:rich$ wget -r -l1 -A.jpg www.offensivesite.com
mac1:rich$ exiftool www.offensivesite.com | grep ‘GPS Position’

这个命令将从该网站递归下载文件,并跟踪一个层级的链接,从每个链接下载图片。然后,它会将它们全部方便地放在一个名为www.offensivesite.com的目录中。再次,Exiftool 指向该目录以剥离所有 GPS 数据。

GeoSetter—www.geosetter.de/en/

GeoSetter 是一个 Windows 应用程序,它从图像中剥离地理数据,然后构建地图。它非常简单易用,并快速突出显示可能用于评估的物理位置。它支持将数据导出到谷歌地球,并编辑地理信息,如果您希望清理图像。

GeoSetter 是一个带有简单安装程序的 GUI 应用程序。只需告诉应用程序要查看的图像在哪里,它就会完成剩下的工作。这可以通过点击“图像”菜单项,然后打开正确的文件夹来实现。如果你有大量的图像集合,导入图像可能需要一段时间,所以请耐心等待,并检查左侧图像下方的进度指示器。

出于科学兴趣,我上传了我的 iPhone 照片库的内容,并对其进行了地理标记(参见图 8.17)。

image

图 8.17 GeoSetter 的操作。

立即可以通过图像位置的分组来确定我大部分时间所在的地点。iPhone 的所有者住在英格兰约克郡利兹市郊。利兹市被大量的地图标记遮挡。

选择所有相关图像并从图像菜单中选择“导出到谷歌地球”也是可视化数据的一种好方法。最终结果与上面的谷歌地图非常相似,但是每个图像都有覆盖而不是地图标记。这使得可以迅速识别哪些图像是在哪里拍摄的(参见图 8.18)。

image

图 8.18 谷歌地球输出。

汇总所有数据是一个相当简单的任务。一个公司网站或员工博客已被定位,并使用 wget 下载了每个图像。接下来,可以使用 Exiftool 或 GeoSetter 来标记图像拍摄的位置。以下是这种练习可以为社会工程师提供的有用情报的一些示例:

• 公司的各个地点和办公室

• 数据中心位置

• 组织员工社交的潜在地点

• 与组织相关的客户和供应商

• 公司设备类型(iPhone,Android)

• 设备名称。(iPhone 设备名称很常常也是用户的姓名。)

一些组织将他们的设施位置严密保密,因此展示由于未教育员工有关 Exif 数据而造成的损害可以是一个有价值的练习。

确定员工可能聚集的地点为社会工程师提供了各种机会。这可能只是简单地偷取一个 RFID 徽章,或者在员工放松警惕时胁迫获取信息。

Twitter 曾经是这种信息的宝库,但现在上传时已清除 Exif 数据。这是 Twitter 的一个很好的举措,希望更多人效仿。

反向图像搜索引擎

谈到图像,应该认真研究一下反向图像搜索引擎。这些服务提供了上传图像文件并观察搜索引擎将其追溯到其他位置的功能。其中一些还尝试将图像中的属性与在线存储的其他照片进行匹配,例如颜色和形状。

虽然有很多,但最流行的可能是谷歌的反向图像搜索—www.google.com/insidesearch/features/images/searchbyimage.html和 Tineye—www.tineye.com

这两种服务都提供了上传文件或提供文件 URL 的功能。请注意,如果上传了图像,则重要的是确保图像权利没有被授予给其他人。

这种服务对社会工程师很有用,因为它帮助将单个图像映射回社交网络账户、博客、Twitter 账户、公司网站和个人网站。例如,将同事的 LinkedIn 照片输入到 Google 反向图像搜索中。它立即在搜索结果中识别出他们的 Twitter 账户,因此如果在公司网站上发现了员工的照片但不知道是谁,这将提供非常有用的功能。将更多在线存在关联到个人,就越有可能构建一个可信的借口并获取更多情报。

不是元数据

文档中还有其他种类的数据,不能被忽视。它们不是元数据片段,也不一定直接可见于文档中,但它们可能是最具破坏力的。

首先,也是最明显的是文档内容。在上传到组织网站的文件中找到与内部系统或员工相关的信息,甚至是整个联系人列表并不完全不寻常。这就是为什么经常搜索这些文件以获取有趣信息可能是值得的原因。有几种方法可以做到这一点,有些是手动的,有些则不是。

使用 OSX 中的内置“查找器”是可以选择的方式之一。只需浏览到包含文件的文件夹,点击右上角的放大镜,然后选择关键字“密码”或“系统”等。另一个好主意是搜索电话号码的区号部分。查找器然后会返回任何需要进一步调查的匹配项。

PDFGrep—pdfgrep.sourceforge.net

如果说有一个工具确实做到了其所说的,那么 PDFGrep 就是其中之一。它可以指向单个 PDF 文件或整个目录,并搜索其中的所有选定模式。它可以使用正则表达式以及直接字符串匹配。

为了在 Kali Linux 中编译工具,需要安装 poppler,这是一个用于 PDF 渲染的工具集。

root@pentest:/pdfgrep-1.3.0# apt-get install libpoppler-cpp0.

然后,只需按照 PDFGrep 目录中的 INSTALL 文件中的说明进行操作。

简而言之,shell 命令 `./configure; make; make install’ 应该配置、构建和安装这个软件包。

Next, all that is needed is to issue each of those commands and watch out for any errors that crop up. So ./configure first. Wait for the process to finish without error. Then the same for “make” and “make install.”

完成此过程后,应该会有一个名为“pdfgrep”的可执行文件。运行它非常简单,这里是一个搜索文档中“密码”一词的示例。

root@pentest:/pdfgrep-1.3.0# pdfgrep -R password /root/Desktop/docs/
/root/Desktop/docs//email.pdf:Your password at first logon will be “Password1”

鉴于模式可以是正则表达式,唯一的限制就是你的想象力。可以搜索包含、以某些值开头或以某些值结尾的字符串。

即使不知道正则表达式,也有许多很好的示例可以通过谷歌搜索获得。以下是在这些文档中要注意的一些示例,有些比其他的更常见。

• 国民保险(英国)或社会保障(美国)号码。

• 电话号码

• 电子邮件地址

• 邮政编码(然后应该可以找到地址)

• 姓名(搜索头衔,先生,夫人,博士等)。

Pdfgrep 是在任何侦察工作中快速查找关键数据的好方法。如果已经使用了 Metagoofil 或 FOCA,每个都已经从公司网站下载了所有 PDF 文档。现在,可以重新运行 pdfgrep 对文件夹进行关键字搜索。然而,这并不是手动审查每个文档的替代方法,但可以帮助节省大量时间。

文档混淆

尽管这肯定是较为晦涩的文件消毒问题之一,但已经在几个场合看到过。

第一次看到这种情况是在一次渗透测试中,但很快意识到它也可以很好地应用于社会工程。相关组织似乎在提交到他们的网站之前没有进行任何真正的文件消毒过程。当工程师在通过 FOCA 下载的文档列表中查找时,他们注意到其中几个已经用黑色方块和矩形混淆了。在 Adobe Creative 套件中打开这些文档后,可以移开形状,显示下面的敏感数据。这绝对可以算作是较为罕见的问题之一,但始终值得手动检查这些文档。

Way Back Machine—archive.org/web/web.php

Way Back Machine 是一个存档旧版网站的工具。在某些情况下,它可以追溯数年,并定期快照许多网站。检查目标域名以查找诸如联系方式和实际位置等敏感信息通常是很有用的。虽然信息安全在今天非常重要,但你不必回溯太久就会意识到情况并非总是如此。

正如明显可见的那样,企业的网站存在很多信息可以供社会工程师使用。其中一些更明显的包括联系方式、员工层级和业务目的。这些信息与客户、供应商和合作伙伴相关的信息一起,可以用来形成有效的借口。当加上本节讨论的工具可以收集到的所有出色情报时,这次工作开始看起来非常健康。让我们直接深入探讨电子邮件地址,如何找到它们以及它们在这类工作中的重要性。

电子邮件地址

在评估过程中获取目标的电子邮件地址的重要性不言而喻,但它们却被毫不考虑地泄露出去。它们用于注册论坛、在线购物账户、社交网络甚至个人博客。电子邮件地址是否应该被更加重视?它是否应该像保护皇冠珠宝一样对待?

通常的经验一直是很多企业不监管他们的用户如何使用公司电子邮件地址。有时,只分配邮箱给那些真正需要的人可能会更好。

那么为什么社会工程师对看似不重要的信息如此感兴趣呢?

钓鱼攻击

钓鱼攻击在现代威胁格局中变得非常流行。这样做的原因可能有两个。首先,它们非常容易执行,至少达到基本标准。其次,每天都有数百万人上当受骗。对于任何可能的骗子来说,这似乎是一个胜利的组合。

将钓鱼演练作为社会工程工作的一部分总是值得的,特别是在尝试进行定向攻击时。话虽如此,广泛范围的钓鱼攻击也有其位置,这只是时间问题。钓鱼攻击以及如何执行它们将在第九章中更详细地介绍。

密码攻击

正如前面提到的,很多工作都包括渗透测试和社会工程的元素。例如,收集电子邮件地址可以让攻击者使用 Outlook Web Access(OWA)进行攻击。电子邮件地址还可以分解成不同的排列组合,以猜测用户的内部命名惯例。然后可以利用这些信息来攻击 VPN 门户。

内幕知识

收集电子邮件地址,然后查找其在互联网上的使用情况可能会带来更多有用的信息。这可能会引发一种假装的借口。假装成一个无法登录邮箱的用户致电组织可能看起来老套,但这在历史上很成功。只要知道组织的 OWA 或 VPN 设备的 URL 以及用户名,就足以为成功的攻击创造足够的可信度。如何找到组织的资产将在本章稍后详细讨论,届时将看到 DNS 枚举技术。

电子邮件地址约定

尽管在查看密码攻击时简要提到过,但一个企业电子邮件地址可以是一个真正的入门点。

大多数组织尝试发布通用邮箱,例如 info@targetbusiness.com。这使得社会工程师难以进行任何形式的网络钓鱼。如果可以访问单个用户的地址,则所有情况都会改变。现在可以使用 LinkedIn(www.linkedin.com)获取目标企业所有员工的列表。这些情报可以用来创建一个更大的潜在目标电子邮件地址列表,可以合理地确定它们存在。

现在已经介绍了收集企业电子邮件地址的几个好理由,接下来将概述如何实现这一目标。

theharvester—code.google.com/p/theharvester/

theharvester 实际上不仅仅是执行电子邮件地址检索,它还可以找到子域、员工姓名、主机和开放端口等等。该工具的意图是在渗透测试期间提供情报收集平台。它返回的信息对于社会工程师仍然有用,可能比严格意义上的渗透测试者更有用。

该工具默认包含在 BackTrack 和 Kali Linux 中。

theharvester 是一个命令行工具,但如文档中的示例所示,使用起来非常简单:

Examples:./theharvester.py -d microsoft.com -l 500 -b google
     ./theharvester.py -d microsoft.com -b pgp
      ./theharvester.py -d microsoft -l 200 -b linkedin

使用 -d 命令开关指定目标域名或组织。

-b 命令开关是您想要使用的搜索机制,可以是“Google”、“Bing”或“all”。

-l 命令开关限制您将检索到的结果数量。

让我们针对一个实际域名运行 theharvester 看看它会带回什么。

root@pentest:~# theharvester -d syngress.com -b all
Full harvest.
[+] Emails found:
------------------
solutions@syngress.com
matt@syngress.com
sales@syngress.com
user@syngress.com
catherine@syngress.com
www.solutions@syngress.com
amy@syngress.com
andrew@syngress.com
solutions@syngress.com
customercare@syngress.com
amy@syngress.com
support@syngress.com

为了简洁起见,输出已经被减少,但是 theharvester 已经非常快速和高效地识别出了 12 个可以通过搜索引擎收集的电子邮件地址,这些可以在一个项目中使用。需要注意的是,不需要提供域名,只需将公司名称传递给 theharvester 即可。这可能导致结果的某些不准确性,因此在攻击之前务必小心使用。它还可以导致其他顶级域名(TLDs)的结果,例如.com,.co.uk 和.org,否则可能会被忽略。一般的发现是指定完整的域返回最可用的结果,因此建议手动循环遍历每个 TLD。

与早期涵盖的 Metagoofil 一样,可以将结果输出到 HTML 文件以便更容易查看(图 8.19)。

image

图 8.19 theharvester 的结果。

root@pentest:~# theharvester -d syngress.com -b all -f results.html

已经建立了目标域的电子邮件地址的命名约定,LinkedIn 可以被收集以创建更多的地址。同样,theharvester 提供了这个功能。

root@pentest:/# theharvester -d syngress -b linkedin
[-] Searching in Linkedin.
  Searching 100 results.
Users from Linkedin:
=================
Amy Pedersen
Larry Pesce
Shawn Tooley
Vitaly Osipov
Elsevier
Becky Pinkard
Vitaly Osipov
Eli Faskha
Gilbert Verdian
Alberto Revelli
Raj Samani
Cherie Amon
Amy Pedersen
David Harley CITP FBCS CISSP
Chris Gatford
Arno Theron
Lawrence Pingree
Christopher Lathem
Craig Edwards
Justin Clarke
Byungho Min

显然,有必要稍微操纵一下这个列表才能得到正确的输出,但攻击面的大小每一分钟都在增加。

theharvester 发现的内容比我们在这一点上将要涵盖的要多,尽管我鼓励您自己尝试。所有功能都非常自说明和易于访问。

FOCA

FOCA 已经在专门查看文档元数据时有所涉及,因此这部分将简要说明。在那个主题中,可以从文档中检索到电子邮件地址。这些也可以导出到文本文件中,以便将所有工具的输出合并。使用几种工具获取情报是一个好策略,以确保完整覆盖。优秀的社会工程师总是在寻找收集开源情报的新方法,因此重要的是每个工具的输出都被操纵并构建成一个情报的主列表。

Metagoofil

与 FOCA 一样,已经涵盖了使用 Metagoofil 的基础知识。Metagoofil 将从文档元数据中剥离电子邮件地址,并以可用格式打印到屏幕上。像往常一样,强烈建议从尽可能多的不同来源获得情报,并将它们存储在信息的主列表中。作为一个快速的提醒,命令应该看起来像这样:

metagoofil -d syngress.com -t doc,pdf -l 200 -n 50 -o /root/Desktop/metadata/ -f results.html

不要忘记可以选择除了.doc 和.pdf 以外的其他文件类型。检查其他文档类型总是值得的,因为永远不知道可能会发现什么有趣的信息。

Whois

Whois 记录通常附有行政、技术和注册联系人。每个记录都可能包含电子邮件地址,可以添加到我们的列表中。Whois 命令可以在 Linux 命令行中轻松运行:

root@pentest:/# whois microsoft.com
Registrant:
    Domain Administrator
    Microsoft Corporation
    One Microsoft Way
    Redmond WA 98052
    US
    domains@microsoft.com +1.4258828080 Fax: +1.4259367329

为了简洁起见,输出已经被缩短了,但它提供了最终产品的一个想法。通常会删除或清理这些记录以避免信息泄露,但在每次参与中仍应进行检查。

Sam Spade

Sam Spade 是一个免费的 Windows 实用程序,可用于多种侦察练习。虽然它可能不是最新最好的,实际上它已经存在了我记忆中的时间,但它仍具有一些可以添加到任何侦察工作中的不错功能。

不幸的是,官方网站 www.samspade.org 在撰写时已经关闭,没有恢复的迹象。幸运的是,在网络上仍有许多地方提供安装程序,因此可以尝试以下链接:

www.majorgeeks.com/files/details/sam_spade.html.

Sam Spade 更像是一个工具包,而不仅仅是一个单一的技巧。它涵盖了从 DNS 枚举到网站爬行的所有内容,对于这个练习来说,后者是感兴趣的。

当爬取网站时有几种选项可用,其中之一是搜索电子邮件地址并将其呈现在输出中。将网站镜像到本地目录进行进一步调查,甚至克隆网站进行钓鱼攻击都是可行的选项(参见图 8.20)。

image

图 8.20 Sam Spade。

由于 Sam Spade 已经存在了很长时间,大多数人认为它不再具有太多相关性,但它仍然是工具箱中的另一个有用工具。当然,有其他方法可以获得相同的功能,但拥有选择总是有用的。

锯齿

最近被 Salesforce 收购的 Jigsaw 是一个最初以众包方式进行的联系管理网站。虽然网站的完整访问并非免费,但提供的信息量是巨大的。

对 Syngress 的搜索返回了 341 条联系记录,其中包括姓名和职位。通过深入了解每条记录,可以检索到单个电子邮件地址和电话号码。深入了解每个联系人都需要消耗点数,可以支付,但实际上真正需要的只是一个电子邮件地址,然后可以根据其约定构建列表。由于一些积分可免费获得,因此可以尝试获取所需的电子邮件地址。这是因为查看每个员工的姓名不仅是免费的,而且以列表形式呈现,易于操作(参见图 8.21)。

image

图 8.21 锯齿结果。

上述格式可以直接复制粘贴到 Excel 或其他工具中进行其他处理,例如 cat、sed、awk 等。因此,如果我们选取列表中的第一个联系人并深入了解,就可以获取电子邮件地址格式(参见图 8.22)。

image

图 8.22 锯齿结果。

现在我们知道约定是名字.姓氏,我们可以为进一步的攻击构建电子邮件地址列表。我将上述内容复制到 Excel 中,然后将名字列导出到名为“emailsort.txt”的文本文件中以进行进一步编辑。之后,通过命令行使用“awk”对其进行一些调整。

ssclownboat$ awk -F,'{print $2"."$1}' emailsort.txt | sed's/$/@elsevier.com/'
Zoe.Aarden@elsevier.com
 Amanda.Acerbi@elsevier.com
 Yasushi.Adachi@elsevier.com
 Kelly.Adamitis@elsevier.com
 Bob.Adams@elsevier.com
 Aurora.Adams@elsevier.com
 Catherine.Adenle@elsevier.com
 Maria.Aguilar@elsevier.com
 Arie.Akker@elsevier.com
 Mark.Albertsen@elsevier.com
 David.Allen@elsevier.com
 Charlotte.Alman@elsevier.com
 Ketan.Ambani@elsevier.com
 Mayur.Amin@elsevier.com
 Mindy.Anderson@elsevier.com
 Trygve.Anderson R. Ph@elsevier.com
 Raisa.Andryczyk@elsevier.com
 Joan.Anuels@elsevier.com
 Denielle.Ardilla@elsevier.com
…Output truncated for brevity…

我在这里所做的是读取包含姓氏.名字格式用户的文件,并用 awk 交换这些值,使名字首先出现。然后我使用“sed”将“@elsevier.com”添加到每行的末尾。如果你不满意列表不包含重复项,你可以进一步通过“sort -u”对唯一性进行排序。你也可以通过使用 Excel 来实现相同的结果,方法是使用逗号作为分隔符导入姓氏.名字文本文件,交换字段并使用 concatenate 添加@elsevier.com。

Recon-ng—bitbucket.org/LaNMaSteR53/recon-ng—还包括一些 Jigsaw 模块

“recon/contacts/gather/http/web/jigsaw”模块只需提供一个公司名称即可发挥其魔力。它将获取每个联系人记录并将其添加到其数据库供您使用。

recon-ng > use recon/contacts/gather/http/web/jigsaw
recon-ng [jigsaw] > #
recon-ng [jigsaw] > set company syngress
COMPANY => syngress
recon-ng [jigsaw] > run
[*] Gathering Company IDs…
[*] Query: http://www.jigsaw.com/FreeTextSearchCompany.xhtml?opCode=search&freeText=syngress
[*] Unique Company Match Found: 4604397
[*] Gathering Contact IDs for Company ‘4604397’…
[*] Query: http://www.jigsaw.com/SearchContact.xhtml?rpage=1&opCode=showCompDir&companyId=4604397
[*] Fetching BotMitigationCookie…
[*] Query: http://www.jigsaw.com/SearchContact.xhtml?rpage=1&opCode=showCompDir&companyId=4604397
[*] Gathering Contacts…
[*] [44073477] Cathy Boyer - Sales and Marketing (Saint Louis, MO - United States)
[*] [44089692] Steve Mackie - Sales and Marketing (Everett, WA - United States)
[*] [44164766] Ben Cox - Manager Global Infrastructure Development (Kidlington - United Kingdom)
[*] [44289059] Ian Hagues - Delta BI Analyst (Kidlington - United Kingdom)
[*] [45455694] Daniela D Georgescu - Executive Publisher (New York, NY - United States)

联系人可以从数据库中复制,你可以根据先前的示例开始构建潜在电子邮件地址列表。

正如在本节中所见,有许多技术可以用来利用收集或猜测电子邮件地址。接下来是社交媒体的使用以及如何在社会工程活动中利用它。

社交媒体

社交网络网站一直是社会工程师获取信息的金矿。人们在诸如 Facebook 之类的网站上上传了他们的整个生活,而不会考虑他们的隐私。

根据 Facebook 创始人马克·扎克伯格的说法,隐私的时代已经结束了。但他当然会这么说。在他看来,对你了解得越多,越好。为什么?因为这能让 Facebook 更有效地将你商品化。他们可以以更有针对性的方式提供广告,并确保点击率尽可能高。当然,这是基于有针对性广告是 Facebook 意图的极限的假设。

随着社交网络成为日常生活的一部分,它越来越受到新闻媒体的关注。隐私一直是一个持续关注的问题,社交网络的运作方式发生了重大变化以解决这个问题。看到这些主流新闻文章的影响是很有趣的。使用 Facebook 等网站的绝大多数人现在比以往任何时候都更加关注隐私问题。这证明了如果以正确的方式传递意识练习,并且与接收者相关,它们确实可以非常有效。

鉴于社交网络站点已经加强了他们的游戏,社会工程师还能够利用它们吗?为了回答这个问题,我们将查看一些更受欢迎的社交媒体网站,并确定任何有用的情报。

LinkedIn

LinkedIn 基本上是企业界的 Facebook 等同物。它是一个在线社交应用程序,允许人们在各个行业之间建立联系。阅读本文的大多数人可能已经有了账户,并在该网站上建立了某种类型的个人资料。

所需的大部分有用信息与个人资料相关。LinkedIn 个人资料本质上是在线简历。人们会添加他们的工作经历、技能和专业知识、照片和参考资料。还可以为他们的特定技能背书。

基本上,LinkedIn 对于试图追踪某人或某人的技能集的任何人来说都是信息的宝库。因此,LinkedIn 在销售和招聘环境中异常受欢迎。正是这种员工信息的丰富性使得 LinkedIn 对社会工程师来说价值连城。

经常发现的情况是一个组织会在 LinkedIn 上管理他们自己的小组。这个功能的好处在于它为我们提供了一个现成的员工列表,包括他们的整个历史。如果社会工程师试图冒充一名员工,这种情报水平将会非常有用。正如之前已经提到的,假设已经发现了地址的约定,这也可以用于构建电子邮件地址列表。换句话说,它扩大了攻击面。

值得注意的是,LinkedIn 不是免费的。它也不是匿名的。当查看他人的个人资料时,他们可能会知道这已经被做过。因此,注册专业版,避免使用个人资料,并在“他人查看您的个人资料时看到的内容”选项中更改设置控制面板,选择“您将完全匿名”的单选按钮是有益的。

在 LinkedIn 的免费版本中有一个限制,但在任何情况下都可以绕过。例如,搜索一个组织名称,它会显示一个员工列表。但它不会显示每个人的全名。通常,结果的第一页会显示全名,其余的会显示名字和姓氏的首字母。

搜索了 Syngress 作为一家企业,然后我们选择了他们的母公司 Elsevier。在结果的第一页中,发现了“Steve.E”的姓名。通过点击个人资料,它表示“升级以获取全名”。最好的选择是免费获取。只需选择图片右侧、职位标题下的所有内容,然后将其复制并粘贴到 Google 中(参见图 8.23)。

image

图 8.23 LinkedIn 侦察。

或许一般的信念是这不会起作用,但第二个命中正是所需的。点击它会显示员工的全名,从而可以将其添加到目标列表中或在电话中使用名字(参见图 8.24)。

image

图 8.24 LinkedIn 详细信息显示。

实际上是我们销售人员向我展示了这个黑客技巧,我被它的简单性所震惊,也被我们销售团队的狡猾本质所震惊。

我们已经介绍了一个可以从 LinkedIn 收集信息的工具,即无法估量地有用的“theharvester”。

theharvester -d elsevier -l 500 -b linkedin

提供的输出需要在使用之前手动批准。theharvester 将会捕获组织内的过去员工以及现在的员工。

Recon-ng—bitbucket.org/LaNMaSteR53/recon-ng

Recon-ng 是针对社交工程师和渗透测试人员的侦察框架。它随 Kali Linux 一起提供,因此您只需在命令 shell 中键入“recon-ng”即可启动它。我建议您使用“git clone—bitbucket.org/LaNMaSteR53/recon-ng.git”获取最新版本。然后您可以运行 ./recon-ng.py 来启动和运行它。如果您熟悉 Metasploit,那么这会感觉很熟悉。导航非常类似,每个模块的设置也是如此。

linkedin_auth 模块依赖于 LinkedIn 上的用户帐户和 API 密钥来收集联系人详情。一旦配置好了,你只需设置目标公司名称并运行该模块(参见图 8.25)。

image

图 8.25 Recon-ng 输出。

设置这个非常简单。注册开发者 API 密钥,然后用“keys add”命令将密钥分配给 recon-ng。 Recon-ng 将指导您完成其余的设置。

在使用 LinkedIn 时还有更长远的方法。例如,建立假档案并与目标员工建立网络联系。虽然这个角度可能会产生结果,但超出了本节的范围。

Facebook

毫无疑问,Facebook 是目前存在的最流行的社交网络网站,但这主要是从个人使用的角度来看的。虽然在 Facebook 上有企业存在,但它们的范围肯定比 LinkedIn 更有限。

有几个潜在的信息收集领域可以利用。首先,之前记录的技术可以收集公司资料中的任何图片。在这种情况下,不是在寻找 GPS 位置数据,因为 Facebook 在上传时会删除这些数据,而是在寻找位置的照片、办公室内部或员工的照片。

另一种途径是查看任何帖子上的评论,看看这些评论是否可以与目标的员工帐户联系起来。

对于社会工程师来说,其中一种更强大的工具是图搜索。这个 Facebook 功能允许制定搜索词,与任何被 Facebook 用户接触过的东西相关联。可能性几乎无限,但显然需要目标拥有某种程度的访问权限。让我们快速看一下一些有用的术语,并看看结果如何。

喜欢微软的人”—一个有趣的搜索词,可以确定潜在的合作伙伴、员工或投资者。至少可以将其归类为有用信息,但通过一些手动调查可能会更多。试试看用你的雇主,看看结果是否是员工,可以肯定其中相当一部分是。现在开始浏览个人资料,寻找有用信息。建议从“地点”功能开始。当用户签到或在帖子中添加位置时,这就会显示出来。从本质上讲,这是员工活动的地图,很可能包含公司的地点。

在微软工作的人”—现在事情开始变得真正有趣了。可以看到声称在微软工作的所有人的完整列表,包括职称。每个这样的个人资料都可能包含用于任何社会工程活动的敏感信息。

这也可以修改为查看潜在的前员工,“2012 年曾在微软工作的人”。

在华盛顿雷德蒙德拍摄的微软照片”—如果有一个大概的实际位置,这个搜索可以得到很棒的结果。你可以从对目标一无所知到对场地的大致布局以及物理安全的概念。

在华盛顿雷德蒙德工作的微软员工拍摄的照片”—这将是一个有用的搜索词,当寻找可能包含工作证的员工照片时。同样,结果可能还包含有关物理安全的有用信息。

华盛顿哥伦比亚特区微软员工访问过的地方”—当寻找员工聚会地点时,这是一个有趣的搜索词。搜索结果可以进一步缩小到确切去过这些地点的员工。在结果中,点击“微软员工曾在此处”按钮,以获取人员名单。这将自动填充搜索词,例如,“微软员工曾访问 9:30 俱乐部”。

当然,通过帐户的隐私设置可以限制访问。很多人可能不知道这甚至是可能的,更不用说花时间来锁定了。这就像拥有一个人们生活的谷歌搜索引擎一样。

Recon-ng 有一个模块,通过 API 从图搜索中收集敏感数据,但该功能似乎已被移除。我预测未来会出现大量的侦察工具,用于此功能。

让我们简要地查看一下 Twitter,以完成社交网络站点的概述。

Twitter

Twitter 是另一个存在的更受欢迎的社交媒体网站。与 Facebook 或 LinkedIn 不同,Twitter 中的个人资料概念非常有限。您可以添加一些关于自己的细节,但远不及 LinkedIn 或 Facebook 的水平。这在一定程度上缩小了我们的攻击面,但 Twitter 有时仍然可以是一个有用的情报来源。

Twitter 是另一个经常受到公众关注的社交媒体提供商,因此他们逐渐加强了安全性。例如,现在在上传时已经清除了 Exif 数据,因此我们无法再从用户的照片中获取位置数据。

即使事情在一定程度上被封锁,仍然有一些有趣的角度可以追求。

Recon-ng

Recon-ng 再次提供了一个有用的侦察模块。Twitter 联系人收集模块搜索提到您提供的句柄的用户。这可以帮助为将来使用的潜在同事绘制地图。

需要在 dev.twitter.com 注册 Twitter API,但拥有 Twitter 账户允许我们使用该账户登录,但仍需要填写一个表格说明应用程序的意图和一两个其他细节。

启动 recon-ng 就像在命令 shell 中输入它并等待控制台弹出一样简单。然后只需使用“use”命令选择模块。

recon-ng > use recon/contacts/gather/http/api/twitter
recon-ng [twitter] > show options
 Name Current Value Req Description
 ---- ------------- --- -----------
 DTG  no date-time group in the form YYYY-MM-DD
 HANDLE  yes target twitter handle

在这一点上,您可以开始使用“keys add”命令配置您的 API 密钥。您将配置 twitter_api 和 twitter_secret 两个密钥。在 Twitter 控制面板中,这些实际上被称为“消费者密钥”和“消费者密钥”。

recon-ng [twitter] > keys add twitter_api myconsumerkeygoeshere
[*] Key'twitter_api’ added.
recon-ng [twitter] > keys add twitter_secret myconsumersecretgoeshere
[*] Key'twitter_secret’ added.

接下来,只需设置所选的句柄并运行该模块

recon-ng [twitter] > set HANDLE @David_Cameron
HANDLE => @David_Cameron
recon-ng [twitter] > run
[*] Searching for users mentioned by the given handle.
[*] Searching for users who mentioned the given handle.
 +---------------------------------------+
 |  Handle  |  Name  |  Time  |
 +---------------------------------------+
 | StopLeseMajeste | Emilio Esteban | Mon Aug 26 16:23:20 +0000 2013 |
 | AuthorSaraKhan | Sara Khan   | Mon Aug 26 16:23:00 +0000 2013 |
 | HIGHtenedStoner | UK4legalWeeD  | Mon Aug 26 16:08:12 +0000 2013 |

该工具应该能够在不必手动搜索目标的 Twitter 历史记录的情况下缩小潜在同事的范围。一旦与 LinkedIn 和 Facebook 的数据相关联,情报的准确性应该呈指数增长。

DNS 记录

枚举 DNS 记录可能会在社会工程和渗透测试中带来一些有趣的发现。例如,知道组织的网络邮件服务的位置以及用户名和电子邮件地址,如果您打电话给帮助台,立即可以获得可信度。大多数一线帮助台操作员不会了解子域暴力破解,他们会假设如果您知道 URL,那么您就是员工。我曾经处于这样的情况,仅凭这些信息就成功地通过电话重置了员工的域密码。

从渗透测试的角度来看,这些信息可以用来识别在密码攻击中可以利用的关键资产。正如我已经指出的,许多项目包括社会工程和渗透测试的元素。

因此,鉴于我们已经介绍了如何获取员工的电子邮件地址,那么在参与中如何使用 DNS 呢?

Dnsrecon—github.com/darkoperator/dnsrecon—Twitter—@Carlos_Perez

当涉及到 DNS 侦察时,Dnsrecon 是我的首选工具。它易于使用,快速而灵活。它附带了 Kali 和 Backtrack,因此启动系统并按照操作进行测试。

以下是标准输出的方式:

root@pentest:~# dnsrecon -d syngress.com
[*] Performing General Enumeration of Domain: syngress.com
[!] Wildcard resolution is enabled on this domain
[!] It is resolving to 92.242.132.15
[!] All queries will resolve to this address!!
[-] DNSSEC is not configured for syngress.com
[*]      SOA ns.elsevier.co.uk 193.131.222.35
[*]      NS ns0-s.dns.pipex.net 158.43.129.83
[*]      NS ns0-s.dns.pipex.net 2001:600:1c0:e000::35:2a
[*]      NS ns.elsevier.co.uk 193.131.222.35
[*]      NS ns1-s.dns.pipex.net 158.43.193.83
[*]      NS ns1-s.dns.pipex.net 2001:600:1c0:e001::35:2a
[*]      MX syngress.com.inbound10.mxlogic.net 208.65.144.3
[*]      MX syngress.com.inbound10.mxlogic.net 208.65.145.2
[*]      MX syngress.com.inbound10.mxlogic.net 208.65.145.3
[*]      MX syngress.com.inbound10.mxlogic.net 208.65.144.2
[*]      MX syngress.com.inbound10.mxlogicmx.net 208.65.145.2
[*]      MX syngress.com.inbound10.mxlogicmx.net 208.65.144.2
[*]      A syngress.com 50.87.186.171
[*] Enumerating SRV Records
[-] No SRV Records Found for syngress.com
[*] 0 Records Found

基本上,开始权威记录已被枚举,并且已恢复名称服务器(NS)和邮件交换(MX)记录。在某些情况下,这些信息可能有用,但这里没有什么特别令人兴奋的。

子域暴力破解

这里所说的暴力破解是一个误称,因为我们将使用一个列表或字典,但原则仍然适用。Dnsrecon 被指示使用可能的子域名列表,并对每个进行名称查找。任何成功返回的都将被打印到屏幕上,为我们提供了有关目标公开面的洞察。由于这些名称可以被解析的速度很快,所以有可能在很短的时间内完成大量列表的处理。虽然不太可能对 DNS 服务器造成任何干扰,但始终要记住可能对系统造成的影响。

幸运的是,dnsrecon 附带了一个可以用于入门的标准名称列表。以下是开始使用该命令的方式:

root@pentest:~# dnsrecon -d apple.com -t brt -D /usr/share/dnsrecon/namelist.txt
[*] Performing host and subdomain brute force against apple.com
[*]      CNAME access.apple.com www.access.apple.com
[*]      A www.access.apple.com 17.254.3.40
[*]      CNAME apple.apple.com apple.com
[*]      A apple.com 17.172.224.47
[*]      A apple.com 17.149.160.49
[*]      A apple.com 17.178.96.59
[*]      A asia.apple.com 17.172.224.30
[*]      A asia.apple.com 17.149.160.30
[*]      A asia.apple.com 17.83.137.5
[*]      A au.apple.com 17.254.20.46
[*]      A b2b.apple.com 17.254.2.97
[*]      A bz.apple.com 17.151.62.52
[*]      A bz.apple.com 17.151.62.54
[*]      A bz.apple.com 17.151.62.53

输出中返回了大量已确认的子域。命令结构很简单。-d 用于定义需要查看的域,然后-t 用于指定类型,这里是 brt 或“暴力破解”。然后我们使用-D 开关提供了一个潜在子域名列表,然后使用 Kali 中附带的标准名称列表。还有比列出的更多的结果。尝试使用独立的域名进行实验,看看能发现什么。

有一些单词列表和备选方法绝对值得探索。首先,Ryan Dewhurst,又名@ethicalhack3r 对这个主题进行了一些研究。通过利用 Alexa 前 100 万名,并对每个域尝试区域传送,他能够获得 6%的成功率。这显然产生了大量的数据,就纯文本列表而言是如此。Ryan 友善地将这些数据分割成更可用的文件供我们使用。您可以在这里查看完整的帖子:www.ethicalhack3r.co.uk/zone-transfers-on-the-alexa-top-1-million-part-2/#more-17123

如果使用 Ryan 的“子域前 5000 名”列表,会看到更好的结果吗?随着时间的推移,这很有可能,因为这些是真实世界的子域名,涵盖了广泛的范围。

作为直接比较,dnsrecon 针对apple.com同时使用标准的“namelist.txt”和 Ryan 的“subdomains-top1mil-5000.txt”进行了运行。namelist.txt 文件返回了 194 条记录。“subdomains-top1mil-5000.txt”文件返回了 408 条记录。无论如何,这都是值得思考的问题。

但是,如果我们想要更有针对性地尝试呢?如果我们想要生成一个特定于我们所针对的业务的列表,我们可以做些什么?

CeWL—www.digininja.org/projects/cewl.php

Robin Wood 的 CeWL 项目是一个 Ruby 应用程序,将 Spider 目标网站,并基于该站点的内容构建一个单词列表。虽然该工具的绝大多数用例是构建密码列表,但在用作子域列表生成器时也观察到了良好的结果。实质上,它将提供我们所希望的大致定位列表。列表中的每个单词都直接来自目标网站。

命令的样子如下:

root@pentest:/home/cewl# ruby cewl.rb --help

帮助文件始终是最好的起点。我会让你尝试一下选项,现在我们所需的只有以下内容:

root@pentest:/home/cewl# ruby cewl.rb --depth 1 www.apple.com

注意深度选项。正如我们在谈论 Spidering 时提到的,我们不希望爬取庞大网站上的每个链接。这将耗费大量时间,如果您正在进行中的任务,甚至可能引起警报。

CeWL 默认会将输出打印到屏幕上,但如果需要,您可以将其重定向到文件中。

CeWL 生成的单词列表总共返回了 171 条记录。虽然它的结果远不及“5000.txt 文件”那么多,但通常会挑出那些否则会被忽略的几个,因为它们非常特定于业务。这就是为什么始终建议同时使用两种方法以确保良好的覆盖范围。我们排序和修剪后的子域列表的总大小为 282 个条目。尝试对您自己的域名使用这些方法,看看有多少被忽略。

Whois 记录

在谈论电子邮件地址收集时,我们简要提到了 Whois 记录。除了电子邮件地址外,它们还为我们提供其他有用的情报。

首先,Whois 可以识别分配给组织的地址空间。首先执行针对目标网站的 nslookup,然后对返回的 IP 地址执行 Whois。

root@pentest:~# nslookup www.apple.com
Server: 172.16.55.2
Address: 172.16.55.2#53
Non-authoritative answer:
www.apple.com canonical name=www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net canonical name=www.apple.com.edgekey.net.
www.apple.com.edgekey.net canonical name=e3191.dscc.akamaiedge.net.
Name:    e3191.dscc.akamaiedge.net
Address: 95.100.205.15
root@pentest:~# whois 95.100.205.15
inetnum:   95.100.192.0 - 95.100.207.255
netname:   AKAMAI-PA
descr:    Akamai Technologies
country:   EU
admin-c:   NARA1-RIPE
tech-c:   NARA1-RIPE
status:   ASSIGNED PA
mnt-by:   AKAM1-RIPE-MNT
mnt-routes: AKAM1-RIPE-MNT
source:   RIPE # Filtered

在这个网站上,地址空间属于 Akamai,但在您的评估中情况并非总是如此。值得一提的是,查看目标是否拥有自己注册的地址空间,然后对其进行侦察。通过这一步和之前的 DNS 侦察,您应该能够很好地了解他们的公共资源布局。

Whois 记录还包含物理地址、电子邮件地址和电话号码。我们的销售人员最近试图联系一个组织的总部,但呼叫中心工作人员不愿提供号码。稍后进行快速的 Whois 查询,我们得到了总部直拨池中的第一个号码,有人接听了电话,我们与所需的人交谈了。这不仅对我们有用,而且证明了非技术人员认为不是公开知识的内容。使用被视为特权信息打电话,可以增加您的主张的说服力。

你将经常看到的另一条信息也可以被社会工程师利用。当你运行 Whois 并得到一个托管公司时,你已经有了一个潜在的借口。你可以说:“嗨,我是来自 XYZ 托管的 Rob,我们早些时候在您的机柜中的一个服务器上看到了一个红灯,您有没有注意到任何问题?”此时你可以感受到个人的警惕程度,等待并看看回应是什么——他们可能至少会确认他们的系统确实是托管在那里的,即使只是说他们没有注意到问题。也许可以提供 KVM 登录到系统并弄清楚发生了什么。你可能会得到在其他地方也管用的凭证。无论你选择什么样的理由,你至少可以带着一个可用的借口打电话。

另一种选择是注册一个与托管公司类似的电子邮件域,并在业务关键时间发送计划中的停机邮件。对这封邮件的反应很可能是恐慌,你可能会在不经意间捕捉到一个会点击你恶意链接的人。你的邮件内容将在我们关于电子邮件攻击的章节中讨论。不过,作为一个入门,我会说为托管公司创建一个克隆的客户门户是一个安全的选择。

从一个简单的 Whois 中可以得到令人惊讶的信息。在许多情况下,组织会对记录进行清理以避免滥用。

利用情报

我们在本章中穿插讨论了数据的操作。本质上,有数据我们会直接使用,也有间接使用。当我说间接时,我指的是打电话给帮助台并提及 VPN 门户的 URL 或用户的电子邮件地址。当我说直接时,我更多地考虑对目标资产进行直接密码攻击。要执行这种类型的攻击,我们需要从我们收集到的数据中构建用户列表。

让我们以前面 recon-ng 中的 Jigsaw 模块为例。我们使用 ‘recon/contacts/gather/http/web/jigsaw’ 模块来收集一个企业的联系人。模块完成后,我们可以输入“show contacts”来查看结果。我们也可以选择将结果放入一个逗号分隔值 (CSV) 文件中,方法是输入“use reporting/csv_file”,然后输入“run”。输出看起来会像下面这样:

“Walt”,“Christensen”,“”,“Vice President Shared Services”,“Maryland Heights, MO”,“United States”
“Wendy”,“Bibby”,“”,“General Manager”,“New York, NY”,“United States”
“Wendy”,“McMullen”,“”,“Senior Marketing Manager”,“Philadelphia, PA”,“United States”
“Wendy”,“Shiou”,“”,“Manager Planning and Analysis and Finance”,“New York, NY”,“United States”
“Wesley”,“Stark”,“”,“Director, Software Engineering”,“New York, NY”,“United States”
“Willem”,“Wijnen”,“”,“Test Engineer”,“New York, NY”,“United States”
“William”,“Schmitt”,“”,“Executive Publisher”,“New York, NY”,“United States”

就像上一个 Jigsaw 示例一样,我的做法现在是尝试建立一个实际的电子邮件地址约定,通常是通过查看公司网站或检查 Whois 记录来完成。举个例子,为了论证目的,我们假设目标用户的电子邮件是 firstname.lastname@offensivesite.com。我们可以操纵上述 CSV 文件来为我们构建该列表。

root@pentest:~/Desktop# sed 's/"//g' contacts.txt | awk -F, '{print $1"."$2"@offensivesite.com"}'
Walt.Christensen@offensivesite.com
Wendy.Bibby@offensivesite.com
Wendy.McMullen@offensivesite.com
Wendy.Shiou@offensivesite.com
Wesley.Stark@offensivesite.com
Willem.Wijnen@offensivesite.com
William.Schmitt@offensivesite.com

显然,在列表更大的情况下,这是有利的,就像在这个例子中一样,为了清醒起见,这里只是简要描述。首先剥离引号,然后基于逗号分隔符打印第一个和第二个字段(名字和姓氏)。接下来,在每一行的末尾附加 @companyname.com。有更优雅的方法来做这件事,但这是快速并且有效的,因此将尝试找到最合适的方法。Microsoft 用户可以使用这种方式来操纵数据。即使对于 Windows 用户来说,随时准备一个 Linux 虚拟机来执行数据操作也是值得的。

尝试将上述列表与整个侦察过程中收集到的电子邮件地址结合起来。这可以分成针对性和广泛范围的网络钓鱼攻击组,以及在面向公众的门户网站上使用它们进行密码攻击。所有这些都归结为已确定的范围。如前所述,混合评估包括渗透测试和社会工程学的元素,因此对 OWA 的密码攻击并非不可能。

Metasploit 框架附带了一个针对 OWA 的密码攻击模块。“auxiliary/scanner/http/owa_login” 只需配置以下细节即可工作:

RHOST — OWA 系统的目标 IP 地址。

RPORT — OWA 正在监听的端口,通常是 443。

USER_FILE — 我们上面创建的输出。通常“firstname.lastname”也可以像完整的电子邮件地址一样起作用。

PASSWORD — 从基础开始。Password1、password、password1. 如果检索到了许多联系人,则找到其中之一的机会很高。不要忘记尝试组织的名称。

运行模块时,它将针对已获取的每个用户尝试指定的密码,显示任何成功或失败。不幸的是,需要注意的是,有可能会锁定账户。毫无疑问,这将像盲目飞行一样,除非有人愿意通过电话透露锁定策略。务必慎重行事,并将尝试次数控制在每 30 分钟一到两次以下。这应该低于大多数锁定前尝试次数为三次,并在尝试的 30 分钟后重置计时器的阈值。

如果进行密码攻击并获得了一些账户的访问权限,接下来会发生什么?如果范围允许,检查电子邮件中的敏感信息。可能会发现更多的系统或客户要求被侵犯的信息的进一步访问详细信息。

完成了这一步之后,整个公司的地址列表就可以下载了,从而使得对 OWA 的另一种密码攻击成为可能。这可能提供了比已经拥有的更特权的账户。

这个账户也可以被用作进一步钓鱼攻击的基础,只不过这一次攻击将来自企业内部,更有可能被信任。当受害者看到回应纷至沓来时,他们可能会警觉起来。

另一个有趣的想法是将恶意附件附加到会议请求或日历条目中。人们很少会怀疑,因为我们习惯于被告知电子邮件附件是万恶之源。另一个角度是尝试利用这些账户攻击其他系统。通常会发现 VPN 系统与 Active Directory 绑定进行身份验证。可能可以通过 Citrix 获得对内部服务器的远程访问。此时,这可能已经远远超出了本文的范围,而进入了渗透测试的领域。

摘要

在本章中,我们涵盖了社会工程和渗透测试的侦察的许多方面。我们研究了如何利用企业网站作为情报来源,并突出了可以检索到的信息类型。我们研究了搜索引擎收集和生活在如此互联的时代的影响。然后我们研究了电子邮件地址收集,并讨论了为什么这看似无害的信息在落入错误手中时会被用来对付我们。

没有探讨侦察的讨论会完整,而不看一下更受欢迎的社交网络网站。虽然我们讨论的不仅仅是这三大社交网站,但它们今天肯定是最相关的。我们看了一下如何绕过 LinkedIn 的一些限制来获取联系方式,以及如何利用 Facebook 的图搜索产生惊人的效果。

我们还研究了如何使用 DNS 和 Whois 记录来增强您的评估,以及它们通常包含比较明智的更多信息。

最后,我们简要地研究了如何操纵这些数据,以便在攻击中使用。

幸运的是,或许是精心策划,我们现在将进入下一章节中的电子邮件攻击向量。这意味着我们可以利用刚刚收集到的大量数据进行一系列攻击。
ices”,“Maryland Heights, MO”,“United States”


“Wendy”,“Bibby”,“”,“General Manager”,“New York, NY”,“United States”


“Wendy”,“McMullen”,“”,“Senior Marketing Manager”,“Philadelphia, PA”,“United States”


“Wendy”,“Shiou”,“”,“Manager Planning and Analysis and Finance”,“New York, NY”,“United States”


“Wesley”,“Stark”,“”,“Director, Software Engineering”,“New York, NY”,“United States”


“Willem”,“Wijnen”,“”,“Test Engineer”,“New York, NY”,“United States”


“William”,“Schmitt”,“”,“Executive Publisher”,“New York, NY”,“United States”


就像上一个 Jigsaw 示例一样,我的做法现在是尝试建立一个实际的电子邮件地址约定,通常是通过查看公司网站或检查 Whois 记录来完成。举个例子,为了论证目的,我们假设目标用户的电子邮件是 firstname.lastname@offensivesite.com。我们可以操纵上述 CSV 文件来为我们构建该列表。

root@pentest:~/Desktop# sed ‘s/"//g’ contacts.txt | awk -F, ‘{print $1".“$2”@offensivesite.com"}’


Walt.Christensen@offensivesite.com


Wendy.Bibby@offensivesite.com


Wendy.McMullen@offensivesite.com


Wendy.Shiou@offensivesite.com


Wesley.Stark@offensivesite.com


Willem.Wijnen@offensivesite.com


William.Schmitt@offensivesite.com


显然,在列表更大的情况下,这是有利的,就像在这个例子中一样,为了清醒起见,这里只是简要描述。首先剥离引号,然后基于逗号分隔符打印第一个和第二个字段(名字和姓氏)。接下来,在每一行的末尾附加 @companyname.com。有更优雅的方法来做这件事,但这是快速并且有效的,因此将尝试找到最合适的方法。Microsoft 用户可以使用这种方式来操纵数据。即使对于 Windows 用户来说,随时准备一个 Linux 虚拟机来执行数据操作也是值得的。

尝试将上述列表与整个侦察过程中收集到的电子邮件地址结合起来。这可以分成针对性和广泛范围的网络钓鱼攻击组,以及在面向公众的门户网站上使用它们进行密码攻击。所有这些都归结为已确定的范围。如前所述,混合评估包括渗透测试和社会工程学的元素,因此对 OWA 的密码攻击并非不可能。

Metasploit 框架附带了一个针对 OWA 的密码攻击模块。“auxiliary/scanner/http/owa_login” 只需配置以下细节即可工作:

RHOST — OWA 系统的目标 IP 地址。

RPORT — OWA 正在监听的端口,通常是 443。

USER_FILE — 我们上面创建的输出。通常“firstname.lastname”也可以像完整的电子邮件地址一样起作用。

PASSWORD — 从基础开始。Password1、password、password1\. 如果检索到了许多联系人,则找到其中之一的机会很高。不要忘记尝试组织的名称。

运行模块时,它将针对已获取的每个用户尝试指定的密码,显示任何成功或失败。不幸的是,需要注意的是,有可能会锁定账户。毫无疑问,这将像盲目飞行一样,除非有人愿意通过电话透露锁定策略。务必慎重行事,并将尝试次数控制在每 30 分钟一到两次以下。这应该低于大多数锁定前尝试次数为三次,并在尝试的 30 分钟后重置计时器的阈值。

如果进行密码攻击并获得了一些账户的访问权限,接下来会发生什么?如果范围允许,检查电子邮件中的敏感信息。可能会发现更多的系统或客户要求被侵犯的信息的进一步访问详细信息。

完成了这一步之后,整个公司的地址列表就可以下载了,从而使得对 OWA 的另一种密码攻击成为可能。这可能提供了比已经拥有的更特权的账户。

这个账户也可以被用作进一步钓鱼攻击的基础,只不过这一次攻击将来自企业内部,更有可能被信任。当受害者看到回应纷至沓来时,他们可能会警觉起来。

另一个有趣的想法是将恶意附件附加到会议请求或日历条目中。人们很少会怀疑,因为我们习惯于被告知电子邮件附件是万恶之源。另一个角度是尝试利用这些账户攻击其他系统。通常会发现 VPN 系统与 Active Directory 绑定进行身份验证。可能可以通过 Citrix 获得对内部服务器的远程访问。此时,这可能已经远远超出了本文的范围,而进入了渗透测试的领域。

## 摘要

在本章中,我们涵盖了社会工程和渗透测试的侦察的许多方面。我们研究了如何利用企业网站作为情报来源,并突出了可以检索到的信息类型。我们研究了搜索引擎收集和生活在如此互联的时代的影响。然后我们研究了电子邮件地址收集,并讨论了为什么这看似无害的信息在落入错误手中时会被用来对付我们。

没有探讨侦察的讨论会完整,而不看一下更受欢迎的社交网络网站。虽然我们讨论的不仅仅是这三大社交网站,但它们今天肯定是最相关的。我们看了一下如何绕过 LinkedIn 的一些限制来获取联系方式,以及如何利用 Facebook 的图搜索产生惊人的效果。

我们还研究了如何使用 DNS 和 Whois 记录来增强您的评估,以及它们通常包含比较明智的更多信息。

最后,我们简要地研究了如何操纵这些数据,以便在攻击中使用。

幸运的是,或许是精心策划,我们现在将进入下一章节中的电子邮件攻击向量。这意味着我们可以利用刚刚收集到的大量数据进行一系列攻击。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/563810.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20.Unity飞机大战游戏

1任务:使背景图动起来 2任务:飞机换帧动画 3任务:让飞机发射子弹 4任务:敌机出现 5任务:控制飞机 6任务:游戏碰撞逻辑 7任务:另外两种类型的敌机 8任务:拾取奖励物品换枪 9…

RK3568 学习笔记 : u-boot 通过 tftp 网络更新 u-boot自身

前言 开发板型号: 【正点原子】 的 RK3568 开发板 AtomPi-CA1 使用 虚拟机 ubuntu 20.04 收到单独 编译 RK3568 u-boot 使用 rockchip Linux 内核的设备树 【替换】 u-boot 下的 rk3568 开发板设备树文件,解决 u-boot 下千兆网卡设备能识别但是无法 Pi…

vulfocus靶场名称: apache-cve_2021_41773/apache-cve_2021_42013

Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控…

JAVA学习笔记30(线程)

1.线程 1.线程的概念 1.线程是由进程创建的,是进程的一个实体 2.一个进程可以拥有多个线程 2.并发 ​ *同一时刻,多个任务交替执行,造成一种"貌似同时"的错觉,单核cpu实现的多任务就是并发 3.并行 ​ *同一时刻&…

电商平台业务及架构演变史

不少人认为电商系统很简单,因为现在做电商的太多了,看到的电商产品也多。看来看去产品都差不多,没什么特别。 其实中国电商发展已有20多年历史,电商以销售为核心连接着研、产、供、销、服整套的信息系统体系。其中的设计并没有那…

Mongodb支持事务吗?

一、概念 1.1、MongoDB事务简介 MongoDB 是一个非关系型数据库管理系统,最初并不支持事务。然而,随着时间的推移,MongoDB 在其4.0版本中引入了多文档事务支持,使得在单个集合中执行多个操作成为可能。 In MongoDB, an operation…

【MySQL探索之旅】多表查询

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

CCF PTA 2023年5月C++富有的大壮

【问题描述】 给在一个神秘的国度,有一种多拿多得的疯狂游戏,某日大壮去参赛,在规定区域内里面有 N(N≤100) 堆金币,第i堆金币的总重量和总价值分别是mi,vi(1≤ mi,vi≤100)。大壮有一个承重量为T(T≤1000) 的背包,但…

Mac下XDebug安装

文章目录 1、下载对应的版本2、编译XDebug3、配置XDebug4、配置PhpStormDebug一下 前置工作 Mac下安装HomebrewMac下brew安装php7.4 1、下载对应的版本 首先按照支持的版本和兼容性来下载对应的版本,此表列出了仍支持哪些 Xdebug 版本,以及哪些版本可用…

vue框架中的组件通信

vue框架中的组件通信 一.组件通信关系二.父子通信1.props 校验2.prop & data、单向数据流 二.非父子通信-event bus 事件总线三.非父子通信 (拓展) - provide & inject四.v-model简化父子通信代码五. .sync修饰符 一.组件通信关系 组件关系分类: 1.父子关系…

2024接口自动化测试高频面试题【建议收藏】

一、json和字典的区别? json就是一个文本、字符串;有固定的格式,格式长的像python字典和列表的组合;以key-value的键值对形式来保存数据,结构清晰,。可以说是目前互联网项目开发中最常用的一种数据交互格式…

文件I/O基础-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

本章将介绍Linux应用编程中最基础的知识,即文件I/O(Input/Output)。文件I/O指的是对文件进行读写操作,在Linux系统中一切皆文件,这是Linux系统设计的核心理念,因此文件I/O操作既是基础又是最重要的部分。本…

【webrtc】m114自己实现的PrioritizedPacketQueue及优先级处理

G:\CDN\WEBRTC-DEV\libwebrtc_build\src\modules\pacing\prioritized_packet_queue.h跟m98不同 :webrtc】m98 RoundRobinPacketQueue的优先级处理,m114直接使用taskqueue顺序处理了。甚至自己实现了优先级队列感觉简化了实现,更为清晰 易读,但是去掉了码率低就优先的逻辑。1…

浮杯式轴向柱塞泵(浮杯泵)应用前景较好 但目前产业化规模小

浮杯式轴向柱塞泵(浮杯泵)应用前景较好 但目前产业化规模小 浮杯式轴向柱塞泵简称浮杯泵,是利用缸体与柱塞间的相对运动改变腔体容积完成吸排油的一类柱塞泵。浮杯泵是基于浮杯原理开发出来的,浮杯原理是继斜盘式和斜轴式之后一种…

Java反序列化-CC4-2-5-7链分析

环境搭建 在之前环境原有代码的基础上&#xff0c;添加这一段代码 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version></dependency>CC4链分析 CC4可…

C语言 | Leetcode C语言题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; bool allStars(char* str, int left, int right) {for (int i left; i < right; i) {if (str[i] ! *) {return false;}}return true; } bool charMatch(char u, char v) { return u v || v ?; };bool isMatch(char* s, char* p) {in…

【探索Linux】P.32(自定义协议)

阅读导航 引言一、自定义协议概念二、自定义协议需要注意的事项三、自定义协议示例(跨网络计算器协议)✅协议代码&#xff08;Protocol.hpp&#xff09;1. 计算器协议简单介绍2. 序列化部分3. 反序列化部分4. 请求和响应数据结构5. 使用自定义协议 四、总结温馨提示 引言 在上…

iOS - 多线程-GCD

文章目录 iOS - 多线程-GCD1. 常见多线程方案2. GCD2.1 GCD的常见函数GCD中有2个用来执行任务的函数 2.2 GCD的队列2.2.1 GCD的队列可以分为2大类型 2.3 容易混淆的术语2.4.1 有4个术语比较容易混淆&#xff1a;同步、异步、并发、串行 2.4 各种队列的执行效果 3. 死锁3.1 死锁…

了解BACnet的对象模型 (三)

文章目录 前言18个对象BACnet 对象的属性设备对象&#xff08;Device&#xff09;的属性输入输出值对象类型及其属性 在代码中的表达Device对象的属性模拟输入对象的属性 小结 前言 在楼宇自控网络中&#xff0c;各种设备之间要进行数据交换&#xff0c;为了能够实现设备的互操…

【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(四)、设计实现

本次实验&#xff08;一&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天大学】实验&#xff1a;时序逻辑设计——三色灯开关&#xff08;一&#xff09;、实验指导书 本次实验&#xff08;二&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天…