利用Peasant自动化工具高效收集LinkedIn用户信息进行渗透测试

本文详细介绍了如何使用Peasant工具自动化收集LinkedIn用户信息,包括联系人收割、连接请求发送和资料伪装技术,以及如何利用收集的数据进行密码喷洒和钓鱼攻击,最后给出了防御建议。

从LinkedIn收集和制作用户信息

Justin Angel //

渗透测试和红队行动通常需要操作员从各种来源收集用户信息,这些信息可以转化为支持社交工程和密码攻击的输入。LinkedIn显然是这类信息的主要来源,因为用户可以将自己与特定公司关联起来。假设我们在侦察的早期阶段已经确定了目标组织拥有的公司,我们可能只需在LinkedIn中找到公司页面并浏览“人员”部分,就能枚举员工信息。

然而,由于以下(及更多)原因(或魔法),这并不高效或直接:

  • 大量复制粘贴,除非你聪明地使用@vysec的LinkedInt——这是本工具的关键灵感
  • LinkedIn根据一系列变量限制给定账户可以访问目标配置文件的信息,例如其当前所属的行业以及是否共享任何重叠连接
  • 根据目标公司安全意识培训的有效性,人员可能将其配置文件配置为在与你的账户首次建立连接之前隐藏个人信息

这篇简短文章的剩余部分将讨论我获取尽可能多配置文件内容的策略,以及一个快速示例,说明如何快速将Peasant的输出操作为可操作的值。

我使用以下策略最大化与公司关联的可访问配置文件数量:

  1. 我配置我的配置文件,使其看起来持有目标公司的职位。这通常会打开一些我可以连接的配置文件。
  2. 从可访问的配置文件中收获信息。
  3. 如果这产生不足的信息(效果因情况而异),我将从高影响力配置文件复制内容到我自己的配置文件。

这里的目标是使你的配置文件对即将发送连接请求的账户有吸引力。

你的账户与公司共享的连接越多,它可以访问的配置文件数量就越多。

专门从事与目标组织相同行业的招聘人员配置文件是一个不错的选择。

阻止你刚刚欺骗的账户是个好主意,否则事情可能会变得奇怪。

对于我可以连接的配置文件,发送连接请求。

提示:在这里行使一些自由裁量权是好的。向安全团队发送连接请求可能不是一个好主意……大概。

等待一个或多个请求被接受。

每接受几个连接请求,重复步骤2和5,直到收集到所需数量的配置文件。

当手动执行时,这是一个费力且耗时的过程,因此我开发了一个实用程序(Peasant)来自动化许多这些步骤。它提供三种基本操作模式:

  • harvest_contacts – 对于每个给定的公司标识符,从可访问的LinkedIn配置文件中收获联系信息。
  • add_contacts – 伪造目标用户配置文件的连接请求。
  • spoof_contact – 欺骗可访问的LinkedIn配置文件,即将目标LinkedIn配置文件的内容复制到你自己的配置文件。

警告:LinkedIn API相当复杂,我没有深入研究调用,只够让这段代码工作。根据输入,Peasant有时可能会失败——尤其是在欺骗配置文件时。

如果发生这种情况,尝试在欺骗外部配置文件的内容之前清除当前配置文件的所有内容。

你还应该知道,你的配置文件可能会因恶意行为被标记。向LinkedIn团队致敬,他们花费时间和精力实施检测机制。

受限账户警报

联系人收割

如果你曾经访问过公司配置文件的“人员”部分,你可能已经注意到滚动到列表底部会导致页面动态添加额外的配置文件。Web界面使用JavaScript进行API调用,并为每个结果添加新的HTML元素。Peasant利用这些API调用直接从API提取配置文件内容。

注意事项:

  • LinkedIn通常会在用户访问其配置文件时提醒用户。使用Peasant收割配置文件时不应发生这种情况,因为它们没有被直接访问。
  • LinkedIn每次只允许访问1,000个搜索结果,但是,每次提交查询时可能会返回不同的结果——因此建议多次运行Peasant。
  • 使用-ac标志告诉Peasant在发现配置文件时生成连接请求(如果需要),无需再次运行(这有点鲁莽)。
  • 警告:除非你有高级账户,否则有严格的API限制,直到下个月才会刷新。
  • 警告:尽管LinkedIn的输出结构良好,你需要浏览并处理Peasant的输出,因为我们仍然在处理用户生成的内容。所有内容将不加选择地转储,包括表情符号。

添加联系人

收割配置文件时收集的信息包括一个“实体URN”字段,用于标识特定的LinkedIn配置文件。我们可以取这个值并制作一个API调用,将连接请求发送到关联的URN。Peasant可以接受由harvest_contacts模式生成的CSV文件,并向每个记录发送连接请求。请求消息也可以自定义。

注意事项:

  • 你必须对目标配置文件有足够的访问权限才能发送连接请求,否则请求将被忽略。
  • LinkedIn对发送连接请求强制执行宽松的API限制。你通常可以每小时在窗口中运行它。

配置文件欺骗

Peasant可以“欺骗”外部配置文件的内容,并用该内容更新你的配置文件,包括图像。这在社交工程情况下特别有用,当你想冒充在目标组织内工作的实体时。

注意事项:

  • 你必须对目标配置文件有足够的访问权限才能查看其内容。
  • 这可能会在外部配置文件上触发“查看警报”(未确认)。
  • 支持此功能的API调用有些复杂,可能会给你的配置文件带来不完美之处。花时间审查其准确性!
  • 如果Peasant在欺骗配置文件时卡住,清除当前配置文件的所有内容并重试。

示例

让我们以一个快速示例结束,重点关注微软的公司配置文件,同时使用一个零连接的新账户。首先,我将我的凭据导出到环境变量(creds)中,以冒号分隔格式(用户名:密码)并运行收割命令(别名为“h”简称)。我们可以看到,一开始就返回了健康的338个配置文件。

注意:LinkedIn最近开始提示验证码等。你可以使用–cookies标志绕过此问题,该标志期望一个或多个文件名,包含来自认证会话的名称到值cookie对的JSON对象数组,如:[{“name”:”cookie_name_here”, ”value”:”cookie_value_here”}]。这应该暂时绕过验证码,我可能会在未来添加抖动功能。

Peasant:从338个配置文件中收获信息

接下来,我将欺骗一个我可以查看的微软配置文件。为了保护无辜者,我省略了配置文件标识符,并选择不对结果进行屏幕截图。运行收割子命令这次返回了额外的40个配置文件。

Peasant:欺骗可访问的配置文件

Peasant:收割额外的四十个配置文件

还不错,但我们可以通过使用add_contacts子命令向目标配置文件发送一些连接请求来做得更好,同时设置-if标志指向我们的输出CSV文件。至少有一人在发送这些请求后一分钟内接受了连接请求。获得这些连接后收割产生了额外的662个配置文件。

Peasant:从CSV发送连接请求

LinkedIn:接受了两个额外请求

Peasant:收割额外的配置文件

在一小时内接受了两个请求,使我能够从总共1,842个账户捕获配置文件信息。

Peasant:收割额外联系人(总计1,842)

处理输出

Peasant生成的CSV输出包含几个有趣的字段,我们可以在选择社交工程目标和制作密码攻击输入时使用。以下是CSV列供参考:

  • first_name
  • last_name
  • occupation
  • public_identifier
  • industry
  • location
  • entity_urn
  • company_name
  • company_id
  • connection_requested

查找有趣的角色

如果你想筛选出安全角色(职业),这可能有助于你避免通过向具有更高意识水平的个人发送连接请求来引发火灾,awk是你的朋友:awk -F ‘,’ ‘{print $3}’ microsoft.csv|sort -u|grep -vi security。现在你可以迭代每个这些角色,并使用带有反向标志的grep将它们从CSV文件中过滤掉。使用此技术的反向来识别你可能感兴趣的关键角色,以针对社交工程攻击。

提取包含字符串“security”的职业

制作密码喷洒攻击的电子邮件列表

我偏爱我的另一个愚蠢项目叫做Parsuite和templatizer模块,用于制作用户列表等,它接受并处理CSV输入,返回包含制作值的新CSV输出。还支持随机值生成和输出的基本“编码”。

我们将使用以下命令生成以{first_letter_first_name}{last_name}@microsoft.com格式的电子邮件地址列表。如果模板结构看起来令人困惑,克隆一份Parsuite并运行templatizer模块的帮助命令以获取更多信息。

1
2
3
parsuite templatizer -tts \
'<<<:first_name[1]:lowercase_encode>>><<<:last_name:lowercase_encode>>>@microsoft.com' \
-csv microsoft.csv

Parsuite命令制作电子邮件地址

Parsuite:从Peasant输出制作电子邮件地址

制作钓鱼活动的电子邮件地址和内容

templatizer模块也可以接受包含文本模板的文件,因此你还可以生成包含唯一链接和标识符的电子邮件,以支持钓鱼活动。

1
2
3
Hello <<<:first_name:>>>,

You should unqestionably click this link: https://my.evillanding.com?id=<<<:RAND:>>>

文本电子邮件模板

1
2
3
parsuite templatizer --csv-file microsoft.csv -tts \
'<<<:first_name[1]:lowercase_encode>>><<<:last_name:lowercase_encode>>>@microsoft.com'  \
email_template.txt

最终Parsuite命令

Parsuite:生成带有唯一链接的电子邮件

现在你可以将此输出传递给任何接受CSV文件作为输入的工具。我最近使用SendGrid作为邮件传递服务,它由我拼凑的另一个工具支持,可以直接使用此文件格式运行。

防御者建议

首先,确保将内容纳入你的安全意识培训,传达威胁行为者使用社交媒体作为钓鱼消息传递平台,以及用户在与互联网同胞互动时应如何行使良好判断。由于技术控制,将钓鱼电子邮件投递到目标收件箱变得越来越困难,但通过社交媒体获得直接消息传递线总是很容易,因为我们的大脑每次收到喜欢或朋友请求时都会释放多巴胺雾弹。

其次,我建议创建几个LinkedIn账户并将它们加入你的公司配置文件。然后你可以偶尔监控它们,看看它们是否在短时间内从同一账户收到邀请请求,这是你被针对进行侦察的指标。进行一些尽职调查以确定活动是否是恶意的,并考虑向LinkedIn报告该账户。我意识到这不是最实用的建议,但公司管理员对谁可以加入公司配置文件的控制最小。

额外漏洞发现

在开发Peasant的图像欺骗功能时,在LinkedIn中发现了一个先前未知的访问控制缺陷。我最初尝试获取外部配置文件中配置的配置文件/背景图像的URN标识符,并将其复制到我的恶意配置文件。这种方法的优点是它消除了几个API调用和处理图片的二进制内容。意外的后果是从我的配置文件中删除图片也删除了图像和URN本身,这导致外部配置文件不再可用该图片——从而使外部配置文件显示默认配置文件图片。

我在感恩节假期期间直接与LinkedIn的安全团队合作修复了该漏洞。向他们致敬,感谢他们的及时响应。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计