关于Linkedin-Intro的钓鱼研究

2013年10月28日,我联系了Linkedin的安全团队,并会在近期发布修复补丁来解决下面的问题。这个修复程序适用于随机生成ID的styling规则,同下面介绍的基于class的styling有所区别。

我并不是CSS专家,所以或许有其他技巧可以绕过这个限制和删除内容(甚至只是隐藏或覆盖它)————如果你知道,请email通知我!我将继续与Linkedin的安全团队合作来修复任何我们能找到的BUG。而用户需要注意的是世上没有完美的解决方案,即便在邮件中你所看到的这些数据也不能明确证明发送人的合法性。

我还要感谢Linkedin的安全团队,他们快速且有效地处理了这些问题。

有关“Intro”

10月23日,Linkedin推出一个名为”Intro”的应用程序。程序的运行条件很简单:允许iPhone用户看到本机Mail App里发件人的详细信息。这跟iPhone Mail App的Rapportive差不多,这两个app在本质上一样(且由相同的人所开发)。

然而,在看Intro最初的介绍中,有一个地方引起了我的注意:

“David说Crosswise很想和你合作。这是垃圾邮件,还是真实邮件?

通过Intro,您可以立即看到David长什么样子,他在哪儿,他是干什么的。你可以看到,他是Crosswise的首席执行官。这是真正的交易。”

这就像Linkedin说“我们放了一个锁住的照片在你的email里,所以你知道它肯定是安全的”这种情况一样。Linkedin简单地给用户一种虚假的安全感。在这篇文章中,我们将一起来看一看Linkedin在用户的邮件中到底是怎样做的,以及我们如何伪造这一信息,完全控制Intro所展现给用户的信息。

Linkedin会对你的Email做些什么

为了更好地观察Intro的行为,目前我正对其进行更深入的分析研究,并很快就会发布。而现在我们只是看看Intro工作的基础知识,看看它具体是如何对用户email进行操作的。

Intro首先获取一个OAuth访问令牌来管理你的电子邮件。因为Google应用的OAuth协议支持Gmail的IMAP和SMTP,所以它们无需验证你的邮箱密码就可获得授权。然后Linkedin就可以访问你的email并在你的iPhone上安装一个安全配置文件,该安全配置文件的最显著特点就是,它会安装一个新的email账户指向Linkedin的IMAP和SMTP服务器。我不晓得如何从iPhone自身恢复email账户密码,但通过代理拦截发送到iPhone的配置文件,我们可以看到这个email账户看起来像这样:

  1. <dict> 
  2.     <key>PayloadDisplayName</key><string>Email Settings</string> 
  3.     <key>PayloadType</key><string>com.apple.mail.managed</string> 
  4.     <key>PayloadVersion</key><integer>1</integer> 
  5.     <key>PayloadUUID</key><string>[redacted]</string> 
  6.     <key>PayloadIdentifier</key><string>com.rapportive.iphone.settings.email.[redacted]</string> 
  7.     <key>EmailAccountName</key><string>Test Account</string> 
  8.     <key>EmailAccountType</key><string>EmailTypeIMAP</string> 
  9.     <key>EmailAddress</key><string>[email protected]</string> 
  10.     <key>EmailAccountDescription</key><string>Gmail +Intro</string> 
  11.     <key>IncomingMailServerAuthentication</key><string>EmailAuthPassword</string> 
  12.     <key>IncomingMailServerHostName</key><string>imap.intro.Linkedin.com</string> 
  13.     <key>IncomingMailServerPortNumber</key><integer>143</integer> 
  14.     <key>IncomingMailServerUseSSL</key><true/> 
  15.     <key>IncomingMailServerUsername</key><string>[username_redacted]</string> 
  16.     <key>IncomingPassword</key><string>[password_redacted]</string> 
  17.     <key>OutgoingPasswordSameAsIncomingPassword</key><true/> 
  18.     <key>OutgoingMailServerAuthentication</key><string>EmailAuthPassword</string> 
  19.     <key>OutgoingMailServerHostName</key><string>smtp.intro.Linkedin.com</string> 
  20.     <key>OutgoingMailServerPortNumber</key><integer>587</integer> 
  21.     <key>OutgoingMailServerUseSSL</key><true/> 
  22.     <key>OutgoingMailServerUsername</key><string>Gmail+Intro ?[username_redacted]</string> 
  23.     <key>OutgoingPassword</key><string>[password_redacted]</string> 
  24. </dict> 

通过拦截该配置文件,我们可以得到用于登录到Linkedin的IMAP(imap.intro.Linkedin.com)和SMTP(smtp.intro.Linkedin.com)服务的用户名和密码。用户名是base64编码的字符串,密码是一个32个字符的hash。

这里有一个图展示这是如何工作的:

 

 

现在,我们已经有了这邮件账户使用的用户名和密码,让我们抓取第一个电子邮件,看看Linkedin的IMAP代理注入了什么内容。我们可以使用OpenSSL来做到这一点哦。

  1. # openssl s_client -connect imap.intro.Linkedin.com:143 -starttls imap -crlf -quiet 
  2. depth=2 C = US, O = "thawte, Inc.", OU = Certification Services Division, OU = "(c) 2006 thawte, Inc. - For authorized use only", CN = thawte Primary Root CA 
  3. verify error:num=19:self signed certificate in certificate chain 
  4. verify return:0 
  5. . OK More capabilities after LOGIN 
  6. a LOGIN username_redacted password_redacted 
  7. * CAPABILITY IMAP4rev1 IDLE NAMESPACE ID CHILDREN UIDPLUS COMPRESS=DEFLATE 
  8. A OK [email protected] Test Account authenticated (Success) 
  9. b SELECT INBOX 
  10. * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) 
  11. * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Flags permitted. 
  12. * OK [UIDVALIDITY 1] UIDs valid. 
  13. * 4 EXISTS 
  14. * 0 RECENT 
  15. * OK [UIDNEXT 5] Predicted next UID. 
  16. * OK [HIGHESTMODSEQ 1049] 
  17. b OK [READ-WRITE] INBOX selected. (Success) 
  18. c FETCH 4 BODY[] 
  19. * 4 FETCH (FLAGS (\Seen) BODY[] {36510} 
  20. email_content_here 

事实证明,Linkedin注入了相当多的内容到你的电子邮件中去。基本的结构看起来像这样:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
  2. <html> 
  3.   <head> 
  4.       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
  5.       User specified CSS (if any) 
  6.       <style type="text/css"> 
  7.           /*BEGIN RAPPORTIVE*/ 
  8.           Injected Linkedin Intro CSS 
  9.           /*END RAPPORTIVE*/ 
  10.       </style> 
  11.   </head> 
  12.   <body> 
  13.       <!--BEGIN RAPPORTIVE--> 
  14.       Injected Linkedin Intro HTML Content 
  15.       <!--END RAPPORTIVE--> 
  16.       Original Message 
  17.   </body> 
  18. </html> 

你可以在这里找到完整的电子邮件(一些链接和一些未被删掉的东西)。现在我们知道Linkedin对该email做了些什么了吧,让我们再看看如何使用它来让我们的钓鱼邮件看起来是合法的。

设置诱饵

就像设置一个欺骗性的网站一样,我们可以简单地复制Linkedin所提供的现有CSS和HTML结构,并根据我们的需要来使用它。首先我们想要做的是找到除去Intro现有数据的方法。我们可以把现有Intro块的CSS设置为display:none;。很不幸的是, Linkedin显然也想到了这一点,由于CSS通常是插入到head标签后面,他们相当细心地为display,height等设置了!important关键词,以提高指定样式规则的应用优先权。

但仍然不够细致,如果我们看CSS,可以发现到其规则适用于#rapportive.iphone元素。如果我们仔细观察,就会发现,其实我们想要隐藏的HTML有一个完整的规范#rapportive.rapportive.topbar.iphone。因此,我们可以简单地设置以下样式的隐藏:

  1. <style type="text/css"> 
  2.     #rapportive.rapportive.topbar.iphone { 
  3.         display:none !important; 
  4.     } 
  5. </style> 

就是这么简单。

现在,我们已经删除了现有的Intro数据,我们可以自由注入我们自己的数据了。要做到这一点,我们可以复制Linkedin提供的现有HTML。若要确保我们的数据不会被我们之前的CSS隐藏,我们可以简单地从root中删除topbar类,因为它不会影响样式。最后我们想要做的是清除Linkedin在原来信息上设置的边距,以及把实际数据本身改成任何我们想要的数据。此外,我复制了一些CSS和HTML,修改了自动生成的Id。这将确保我们的模板始终一致。

“钓鱼”去啦

为达教学目的,我已经建立了一个基本的PoC模板。若要使用它,你只需访问你要欺骗的那个人的Linkedin配置文件,填写所需的CSS信息。理想情况下,将来可改进成自动擦除此信息并检查确保Intro数据只在移动设备上显示等。现在,它是基本可用的,让我们看看如果我对Linkedin原来显示的信息实行欺骗会是怎样。(谅解一下,这不是IOS7————我没有见过IOS7系统会有这么多问题):

 

 

这就是当我打开Intro选项时所看到的详细信息(它们是可以自定义的,我让它们展示了一下我确实控制了其内容):

 

 

显然,这是一个不具恶意的例子。当然,要添加恶意文件、请求敏感信息,也同样很简单。

最后的想法

虽然Linkedin Intro表面上看起来很有用————只是使用它的话,风险太高了。作为一个社会工程师,我希望我的目标是使用Intro。Linkedin Intro的使用,为用户营造了一种虚假的安全感,这使得我和广大社工人员的工作便捷许多。

本文来自Jordan的博文《Phishing With Linkedin’s Intro》

原文地址:http://jordan-wright.github.io/blog/2013/10/26/phishing-with-linkedins-intro/

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/146982.html<

(0)
运维的头像运维
上一篇2025-03-11 08:28
下一篇 2025-03-11 08:29

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注