收集与利用LinkedIn用户信息
渗透测试和红队行动常需从多种来源收集用户信息,以支持社交工程和密码攻击。LinkedIn是此类信息的理想来源,因为用户可将自己与特定公司关联。假设在侦察阶段已识别目标组织拥有的公司,通过查找LinkedIn公司页面并浏览“人员”部分,即可枚举员工信息。
然而,由于以下原因,手动操作效率低下:
- 大量复制粘贴工作,除非使用@vysec的LinkedInt工具(本工具的灵感来源)。
- LinkedIn根据行业关联和共享连接等变量限制账户对目标资料的访问。
- 目标公司安全意识培训可能使员工在建立连接前隐藏个人信息。
本文剩余部分将讨论最大化获取资料内容的策略,并演示如何快速处理Peasant输出为可操作值。
最大化可访问资料策略
- 配置个人资料:伪装在目标公司任职,以开放更多可连接资料。
- 收割信息:从可访问资料中收集信息。
- 复制高影响力资料:若信息不足,复制高影响力资料内容到自身资料。
目标使资料对即将发送连接请求的账户有吸引力。共享连接越多,可访问资料越多。招聘专员资料是不错的选择。欺骗后屏蔽原账户以避免问题。
- 发送连接请求:对可连接资料发送请求(注意避免发送给安全团队)。
- 等待请求接受:接受后重复步骤2和5,直到收集足够资料。
手动操作繁琐耗时,因此开发了Peasant工具自动化这些步骤。它提供三种基本模式:
harvest_contacts:收割给定公司标识符的可访问LinkedIn资料联系信息。add_contacts:伪造目标用户资料的连接请求。spoof_contact:欺骗可访问LinkedIn资料,即复制目标资料内容到自身。
警告:LinkedIn API复杂,未深入研究调用,仅保证代码工作。输入可能导致Peasant失败,尤其在欺骗资料时。失败时清除当前资料内容重试。资料可能因恶意行为被标记。
联系人收割
访问公司资料“人员”部分时,滚动到底部会动态添加更多资料。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标志绕过,该标志期望一个或多个文件名,包含来自认证会话的JSON对象数组(名称-值Cookie对),例如:[{"name":"cookie_name_here","value":"cookie_value_here"}]。目前应可绕过验证码,未来可能添加抖动功能。
|
|
接下来,欺骗一个可查看的微软资料。为保护隐私,省略资料标识符且未截屏结果。运行收割子命令此次返回额外40个资料。
|
|
效果不错,但可通过使用add_contacts子命令并向目标资料发送连接请求来改进,设置-if标志指向输出CSV文件。发送后一分钟内至少一人接受请求。获得这些连接后收割 yielded 额外662个资料。
|
|
一小时内接受两个请求,允许我从总共1,842个账户捕获资料信息。
|
|
处理输出
Peasant生成的CSV输出包含多个有趣字段,可用于选择社交工程目标和制作密码攻击输入。CSV列参考:
first_namelast_nameoccupationpublic_identifierindustrylocationentity_urncompany_namecompany_idconnection_requested
查找有趣角色
若想筛选安全角色(职业),避免向安全意识较高的个人发送连接请求,可使用awk:awk -F ',' '{print $3}' microsoft.csv|sort -u|grep -vi security。然后可迭代每个角色并使用grep带反向标志从CSV文件中过滤。使用反向技术识别可能感兴趣的社交工程攻击关键角色。
|
|
制作密码喷洒攻击电子邮件列表
我偏爱另一个项目Parsuite及其templatizer模块,用于制作用户列表等。它接受并处理CSV输入,返回包含制作值的新CSV输出。支持随机值生成和基本输出“编码”。
使用以下命令生成{first_letter_first_name}{last_name}@microsoft.com格式的电子邮件地址列表。若模板结构 confusing,克隆Parsuite并运行templatizer模块的帮助命令获取更多信息。
|
|
|
|
制作网络钓鱼活动的电子邮件地址和内容
templatizer模块也可接受包含文本模板的文件,因此可生成包含唯一链接和标识符的电子邮件以支持网络钓鱼活动。
|
|
|
|
|
|
现在可将此输出传递给任何接受CSV文件作为输入的工具。我最近使用SendGrid作为邮件传递服务,该服务由另一个工具支持,可直接使用此文件格式运行。
防御者建议
首先,确保安全意识培训包含内容,传达威胁行为者使用社交媒体作为网络钓鱼消息传递平台,以及用户在与“Interplebeians”互动时应如何运用良好判断。由于技术控制,网络钓鱼电子邮件进入目标收件箱越来越难,但通过社交媒体获得直接消息传递线总是容易,因为我们的大脑每次收到喜欢或朋友请求时都会释放多巴胺雾弹。
其次,建议创建多个LinkedIn账户并将其加入公司资料。然后可偶尔监控它们是否在短时间内从同一账户收到邀请请求,这是被针对进行侦察的指标。进行尽职调查以确定活动是否恶意,并考虑向LinkedIn报告账户。我意识到这不是最实用的建议,但公司管理员对谁可加入公司资料的控制最小。
额外漏洞发现
开发Peasant图像欺骗功能时,在LinkedIn中发现了一个先前未知的访问控制缺陷。最初尝试获取外部资料中配置的资料/背景图像的URN标识符,并将其复制到恶意资料。此方法的优点是消除了几个API调用和处理图片的二进制内容。意外后果是从我的资料中删除图片 also 删除了图像和URN本身,导致外部资料无法再使用该图片——从而使外部资料显示默认资料图片。
我在感恩节假期期间直接与LinkedIn安全团队合作修复了该漏洞。为他们迅速响应点赞。