作者:海德纳吉
◆ 序
大部分人都觉得自己的家是安全的,直到有一天忽然发现自己被锁在了门外。
无论系统有多安全,总有方法攻破它。通常,系统中的人是最好欺骗和操纵的。制造恐慌、运用影响力、采用操纵策略和建立信任感等方法都可以让受害者消除戒备。
承认系统有漏洞并且可能被攻破,是让系统更加安全的首要条件。
◆ 第1章 社会工程学初探
没有绝对的安全,除非你拔掉所有电源并躲进深山老林,但是这种方法操作性不强,也不好玩。
◆ 1.2 社会工程概述
社会工程的真正定义是:一种操纵他人采取特定行动的行为,该行动不一定符合“目标人”的最佳利益,其结果包括获取信息、取得访问权限或让目标采取特定的行动。
伪装+操纵+贪婪心理=目标被社会工程套牢。
◆ 2.2 信息源
谷歌中记录了很多你认为已经删除的数据,就如同大型数据库一般。只要设定好查询方式,就能得到你想要的信息。
Shodan的特殊之处在于它提供针对服务器、路由器和特定软件的搜索功能。例如搜索microsoft-iis os:“windows 2003”,就可以得到如下各地的服务器数量信息,这些服务器都是运行IIS服务的,里面装的是微软Windows 2003系统
Whois能提供域名数据库查询服务。Whois数据库中有很多有价值的信息,有些时候甚至包括网站管理员的完整联系方式。使用Linux命令行工具或者登录www.whois.net这样的网站,都可以查询到域名的注册信息,包括联系人、电子邮件地址、电话号码,甚至DNS服务器的IP地址。
企业对外的公共服务器往往会提供网站所没有的很多信息,比如服务器的操作系统、安装的应用程序和IP地址,这些信息可以大致反映企业的信息服务架构。
很多公司最近开始热衷于在社交网站上做推广和营销。社交网站的营销成本低廉,又有大量的潜在消费群体。这里提供了来自于企业的另外一股信息流:活动安排、新产品发布、新闻报道以及一些能与当前热点事件挂上钩的文章,等等。
像博客、维基、网络视频等个人网站不仅会提供目标公司的信息,还会透漏这些信息上传者的个人观点和信息。
智能手机拍摄的照片会隐藏GPS信息。你上传这些照片的同时,也泄露了自己的拍摄位置信息。
如果人们连价值数百万的艺术品都会扔掉,那么只要认为某物是垃圾,人们都会不假思索地直接扔掉。
翻垃圾箱时一定要记住以下几点。
1.穿质量好的鞋子或靴子。没有比跳进垃圾堆,然后被钉子戳到脚更令人抓狂的事了。确保你的鞋子合脚且鞋带系紧了,并能保护脚不为利器所伤。
2.穿深颜色的衣服。这点不需要过多的解释。你肯定会穿那些丢掉也不会心疼的衣服,而且深色的衣服不容易被发现。
3.带一个手电筒。
4.拿到了赶紧溜。除非你是在偏僻到不可能被抓到的地方,否则最好是拿走一些垃圾袋,到其他地方去翻找。
◆ 2.3 交流模型
达成共识是社会工程人员和他人交流的目的。
技术问题——信息传送的准确性如何?语义问题——信息表达的精确性如何?效率问题——接收到的信息对行为影响的有效性如何?(社会工程过程中这最后一点很重要,必须牢记。社会工程人员的目的就是创造出一个自己想要的行为。)
社会工程人员必须是交流的大师,必须能够有效地进入且留在一个人私密的精神空间,并保证不冒犯目标或令目标反感。
制定邮件的内容是很重要的,但也要仔细考虑语法、拼写及标点符号等。根据以往的经验,拼写不规范是网络钓鱼邮件露馅的主要原因之一。
◆ 3.1 诱导的含义
从信息收集的角度来讲,专家级的诱导就是指目标愿意回答你的任何问题。
在美国国家安全局的培训材料中,对诱导的定义如下:在貌似正常和平凡的对话中精妙地获取信息。
“我知道这个问题会很怪,但是我们是个小公司,老板让我研究并购买一套门禁系统。我们现在使用钥匙,但是他认为RFID或者类似的系统会更好。你知道你们公司用什么吗?”这个问题很敏感,会引起一般人的警觉。没想到他却说:“这个我可没有概念,我只负责签支票购买,不过我进门时使用的就是这个小卡片……”他拿出钱包中的卡片给我看。“我想可能是RFID,不过我只知道进门时晃一下钱包,门就开了。”
◆ 3.2 诱导的目的
最要紧的是你不能装成自己不可能成为的人。
诱导的目的是获取信息、得到答案或者取得进入某领域的钥匙。然而,不要将此作为重点。如果你一心想得到自己需要的信息,很快就会被目标看穿,导致目标失去兴趣。
世界上的“最佳交流者”其实是那些听的比说的多的人。
唤醒他人自我的方式简单有效,但是要注意如果滥用这一强大的工具,或者不是出自真心,则会让目标失去热情。你不会到处和人说:“哇噢,你真是全球最重要的人,长得还那么帅。”这样说只会引起别人的警觉。
唤醒他人的自我需要微妙的处理。如果你碰到的是一个真正的自我陶醉者,在听他夸耀过往成就时,眼珠不要转,不要叹气,也不要争论。
大部人在听到错误表述时会有校正的欲望,似乎他们的正确性受到了挑战。告诉他人、显示自己的博闻强识、不能容忍错误表达等欲望似乎是人类的天性。
开放式问题的另一个强大之处是多使用为什么和怎样。如果问题中包含为什么或者怎样,就会得到对原始问题的深入解释。
引导性问题的答案经常为“是”或“否”,但是与封闭式问题有所不同,因为问题中植入了更多的信息,所以社会工程人员也能从中得到更多的信息。引导性问题陈述了部分事实,然后询问目标是否同意。
在使用假设性问题时,社会工程人员最好已经对事实有所了解,然后将事实贯穿在问题中。如果假设性问题中携带了虚假信息,只会让目标失去兴趣,得到的结果只能是目标不知道某些不曾发生的事情。
◆ 第4章 伪装:如何成为任何人
伪装不是扮演某个角色或者出演部分剧情,不是撒谎后不停地圆谎,而是真的成为那个人。你的一丝一毫都是正在扮演的那个人。走路的方式、说话的方式、肢体语言都与那个人一样。
◆ 4.1 什么是伪装
娴熟的信息收集技术是伪装成功的关键。打个比方,如果目标不需要外部技术支持,即使我们将技术支持人员模仿得再完美也无济于事。
◆ 4.2 伪装的原则和计划阶段
2010年举办的第18届Defcon峰会上,我见证了这样一个案例。我是社会工程夺旗竞赛(Capture the Flag,CTF)的组织者之一。我们发现很多选手伪装成内部雇员。当问到他们“你的工号是多少?”时,不成熟的社会工程人员会很紧张,要么回答不出要么直接放弃比赛,然而一个训练有素的社会工程人员却不会让目标产生任何不协调的想法。他会随口说出一个在网上找到的工号,或者用其他方法说服目标没必要提供工号信息,以此来消除目标的疑虑。
如果我想假装是在一个忙碌的办公室里给你打电话,我可以到www.thrivingoffice.com下载一段音频。这个站点提供了一个录音叫“忙”,另外一个叫“很忙”。它们的创作者称:“这个CD很有用,它包含人们可在一家公司听到的所有声音,让人们立即相信这是真实的场景。简单、有效而且质量有保障!”
像www.spoofcard.com提供的服务或者一些自制的方法,都可以帮助社会工程人员改变来电显示的电话号码,让目标认为你是从公司总部、白宫或者当地银行打过来的。利用这些服务可以伪造出世界上任何地方的电话号码。
一个简单的伪装允许故事发展,并且允许目标运用想象去填满空隙。不要试图将伪装设计得很精致,只要记住那些伪装中比较关键的小细节即可。
下面列出了几条让伪装更加自然的方法。
1.不要考虑自己的感受。这点很重要,因为通常在伪装时如果想太多就会融入更多的个人情绪,然后恐惧、不安或焦虑就会随之而来,这些都可能会导致失败。另外,你可能不会经历不安或焦虑,但会过度兴奋,这同样会使你犯很多错误。
2.不要把事情太当真。当然,在生活中这就是一条好建议,而且同样非常适用于社会工程学。作为一名专业的安全人员,你有一份很严肃的工作,这是一件严肃的事情。但是如果不能笑对自己的错误,就可能会沉默不语,或者在处理后续的小事情时如临大敌。当然,我并不是建议你视安全如儿戏。但是,如果你将潜在的失败当做人生中巨大的失败,那么产生的压力恰恰会导致最坏的结果。只有正确看待小的失败,才能取得更大的成功。
3.学会找到相关信息。我喜欢用“摆脱思维的束缚,融入这个世界”来描述这个理念,这是一个非常棒的建议。社会工程人员可能全力计划好了前3个步骤,但却遗忘了一个可能会使伪装土崩瓦解的关键细节。要始终留意身边出现的信息和状况,包括目标的肢体语言、说的话,微表情等,然后将其应用到自己的行动中。
记住说话者能看出什么时候你没在认真听他说话。这会让很多人感到不爽,就算是无关紧要的句子,没有被听取也会招致不快。每个人都经历过自己的话被人当做耳边风,或许他们有各自正当的理由开小差,但这样做真的挺让人扫兴的。
无论是什么情况,都应给目标一个结论或不会令其怀疑的下一步安排。就像医生给你检查了身体,然后没有任何指示就打发你回家。如果在社会工程中,伪装成技术支持人员进入一幢大楼,在复制好数据库之后一句话也不说就离开,会让每个人产生疑惑:到底发生了什么事?甚至有人可能会给技术支持公司打电话,询问是否还要他做什么,或者最坏的情况是让他们自己胡乱猜测。无论是哪种情形,这种一句话也不留的离开方式都是有问题的。哪怕简单的一句“我已经检查了服务器并且修复了文件系统,你们会发现系统在未来几天里运行速度会提高22%”,都会让目标觉得“他们的钱花得值”。
◆ 5.1 思维模式
人们倾向于钟爱这些感官中的一种,也就是说某种感官会占据主导地位,这也是人们记住事物的方式。通过一个练习就能确定自己的主导感官,闭上眼想象你清晨起床的画面,你能记得的第一件事是什么?是温暖的阳光照在脸上的感觉吗?是配偶或小孩叫你的声音吗?你清楚地记得楼下咖啡的香味吗?抑或是嘴里并不清新的口气,提醒你需要刷牙了?
尝试在没有视觉输入的情况下与视觉思维者进行争论、协商,向其推销,操纵或者影响他,基本上会毫无效果,至少会非常困难,因为视觉思维者需要视觉输入才能作出决定。
在面对听觉思维者时,一定要注意自己的措辞。他们听到的词语表达将决定事情的成败。我见过因为用词不当而让会面效果从巅峰跌入低谷的遭遇,因为对方是听觉思维者。
帮助动觉思维者回想起与某一事物相关联的感觉或者情感,可以让那些情感再现。对于非动觉思维者来说,动觉思维者可能是最难应对的,因为他们对景象和声音都不会有反应。社会工程人员要想与他们沟通,得和他们进行感觉上的联系。
人们在舒适的氛围中会备感放松。在社会工程过程中越是能将人们置于舒适的氛围,成功的几率就越高。
◆ 5.2 微表情
当一个人真实地微笑时,会触发颧大肌和眼轮匝肌(眼周的肌肉)两块肌肉,而眼轮匝肌的运动是自发的,不受外力触发,这也就是辨别真假笑容的关键所在。
仅仅通过犹豫来识别欺骗是不科学的,但它可以作为一个很好的信号源。有些人只是习惯于谨言慎行。我是纽约人,语速比较快。如果有人说话比我慢,并不一定都是在撒谎。你必须能够运用微表情去辨别他是真正说话慢,还是在试图编造答案。
◆ 5.3 神经语言程序学
NLP提倡使用嵌入式命令影响目标以某种方式进行思考或采取某种行动。此外,通过变换语调强调句子中的某些词语,使得人们的潜意识将重点放在那些词语上。举例如下。如果要问“你不同意?”,不要像常规问题那样,在问题的结尾——“同意”处使用升调,而要使用降调,使得该问题更像一个命令。我知道的另一个行之有效的例子大致是这样:“我的客户通常会按照我说的去做。你要开始吗?”这句话通常和其他语句结合在一起,使得它更像一个命令语句。
◆ 5.4 采访和审讯
你在和目标说起一些正面和美好的事物时,可以重复并且仅仅是右手做出手势。如果是坏事,则可以只用左手去比划。在做这个手势几次后,你就能开始在目标的脑海里“锚定”了一个“事实”:右手动作和美好的事物相关联。
一般认为,人们对于听到的东西连一半都记不住。这意味着如果你对一个人讲10分钟话,他只会记住你所说的几分钟的内容。
高度关注目标对象。不要鼓捣你的电话或别的小东西。不要拨弄或者敲手指。在对方说话时看着对方,将注意力集中在对方所说的内容。要充满好奇地去听、去看,不能让人感觉害怕,觉得你是在“刨根问底”。
提供你在聆听的证据 表现出真诚并且用肢体语言和面部表情来表明这一点。不时地点点头,不用太频繁,但是要足以让对方知道你在听。
不要忘记十分重要的微笑。微笑可以让目标对象觉得你在和他真诚地交流,并且知道他在说什么。
时不时地重述或者概括你所听到的东西就很管用。不要像做读书报告那样去背诵,而是要简明地概括主要想法,这样会使目标感觉你听进去了。
不要打断对方 这一点不用多说。打断对方的讲话显得你不顾及他的感受,并且会扰乱说话者的思绪。让他完整地述说后你再发言会更好。
在社会工程需要聆听的场景中,你必须极力压制那些内心的成见,以免影响你取得成果。
◆ 5.5 即刻达成共识
人们对你的印象只有7%取决于谈话的内容,更多的是取决于肢体语言和语调。注意自己的各种表现,但同时也要注意给人的第一印象。他对你的反应可以提醒你是否遗漏了一些东西,或者你需要做些改变使沟通更有效率。
没有什么比让别人感觉到你“感同身受”更容易建立共识了。当一个人是某个灾难的直接受害者时,这种理论显得尤为正确。这种想法很恐怖,但那些虐待、犯罪、强奸、自然灾害、战争或其他暴行的受害者往往会“理解”那些正在经历这种困苦的人的感受。如果这种共识建立起来的话,受害者会信任错误的人。
伪装不仅仅是表演一个角色,对目标来说你就是一个活生生的人,所以你要成为那个要伪装的角色。
如果你很胖而且只和肥胖的人在一起,那么就别指望会变得苗条。为什么呢?答案就在于你安于肥胖的状态,周围的人亦是如此。如果想改变,就要跟那些窈窕淑女在一起,这样心理上很快就会发生变化。
◆ 5.7 小结
人类思维缓冲区溢出=预期定律+思维铺垫+嵌入式代码
◆ 第6章 影响:说服的力量
影响和说服的艺术就是让他人想要以你所期许的方式去行动、反应、思考或建立信仰的过程。
◆ 6.1 影响和说服的5项基本原则
人类的大脑在处理信息时每秒钟能够计算2亿亿次。这些计算会以面部表情、微表情、手势、姿势、语调、眨眼、呼吸频率、说话方式及无声语言表达等各种不同的方式呈现。掌握影响战术就是要敏锐地把握自身以及他人的这些细微呈现。
◆ 6.2 影响战术
回报的想法在我们的头脑中根深蒂固。大部分人会觉得在得到别人的帮助后,他们之间就存在一种社会契约,自己最终是要回报对方的。
自动对权威作出反应时,人们往往是对权威的符号作出反应,而不是其本身。
在进行伪装的时候,不仅要模仿角色的思想和观念,而是必须变成伪装的那个人。如果能做到这一点,让对方喜欢就会变得容易,你伪装的角色才能真正乐于帮助、喜欢或者协助对方。
人们喜欢积极的肯定。一个人受到他人的恭维时,会倾向于继续谈话,以听到更多的肯定之言。这种恭维会增强目标的自我肯定,让他感觉你比其他人更了解他。
人们会在遇见他人的头两秒内决定是否喜欢这个人,要改变第一印象是很困难的。
社会影响会导致一个大的社会群体对正确或错误的判断达成一致。这种情况在人们进入不熟悉的场景时很常见,此时他们内心中没有一个参考框架,所以不知道怎样处理才是适当的,他们会照搬那些自己认为更了解这种情况、见多识广的人的行为。
酒保或者其他人放置的“小费暗示瓶”,他们会放一些钱在瓶子里。当有人光顾时,暗示很明显:之前的很多人都给了小费,为什么你不给呢?这也很有效!
社会认同可以说是社会工程中的一件致命武器。通过告诉对方其他人甚至是行为榜样都采取了某种行为或表现,可以刺激对方也这样做,这就是社会认同原则的作用。社会认同提供了一条决定应该如何表现的捷径,但同时也使得人们易被想要利用这种影响的其他人所操纵。
◆ 6.4 操纵:控制你的目标
通过不断地适应,人们会将特定的声音、行为与感觉和情绪相关联,形成条件反射。
社会工程人员所用的“尾随战术”。混在一大群就餐或者休息回来的人中,装成其中的一员,在通过大门的时候一般保安都不会拦着。
◆ 6.5 社会工程中的操纵
如果不事先思考如何处理潜在的交流障碍或者破坏性影响,而是等到临场发挥,则大多数情况下会出现问题。这就提出了一种有趣的想法。你必须在行动之前就像目标一样思考:他会提出什么异议?当不认识的人打电话或走过来时,他会说什么?他会提出什么异议?他会是什么态度?仔细考虑这些事情能够帮助你制定出针对这些潜在问题的解决方案。
◆ 6.6 小结
影响力和说服的艺术是让他人想要按照你设想的方式去做、去反应、去思考或者去相信的过程。
◆ 7.1 物理工具
懂得锁的原理并携带适合的工具才造就最终的成功。公司会花费数万甚至数百万美元购买硬件、防火墙、入侵检测系统以及其他保护手段,再把它们都扔在一个房间里,最后只用廉价的玻璃和一把20美元的锁来保护它们。这样的情况屡见不鲜。
通过一些简单的手法就可逃过摄像头的法眼,比如用LED强光照镜头或者用帽子或头巾遮住面部。
如果突然断电,大部分磁力锁将失效,门就被打开了。当然,没有使用后备电源才会产生这样的后果。
有人发明了RFID克隆机,该小型设备可通过获取和重放RFID密码打开门锁。市场上也有多种复制磁性卡的设备。
◆ 7.2 在线信息收集工具
将Maltego视为一个信息的关系型数据库,能发现互联网上信息之间的联系(在应用中称为实体)。Maltego在后台做了很多工作,如挖掘电子邮件地址、网站、IP地址和域信息。举例来说,点击几下鼠标你就可以通过目标域名自动地搜索到所有相关电子邮件的地址信息。只需在屏幕上简单地增加“电子邮件”转换器,输入想要搜索的电子邮件地址,就可以得到想要效果。
最流行的一种篡改来电显示的方法是使用SpoofCard(www.spoofcard.com/)。使用这种卡,可以假冒随卡提供的800个号码,输入PIN码和希望显示的号码,然后输入想拨打的电话号码就可以了。SpoofCard的一些新特性也很有用,比如对通话内容进行录音、伪装成男声或女声等。这些特性大大提高了拨号者的伪装能力,社会工程人员可以借此欺骗对方提供其所需要的信息。
SpoofApp将SpoofCard技术实现在了软件包中。不用真的拨打指定的号码,只需在应用程序中输入想要拨打的电话号码,然后输入想要显示的号码,SpoofApp就会和目标建立连接,而目标电话上显示的就是你输入的想要显示的号码。所有操作只需点击几下按钮即可完成。
如果有一台多余的计算机和一个VoIP服务,也可以使用Asterisk服务器来篡改来电显示。可以在www.social-engineer.org/wiki/archives/CallerIDspoofing/CallerID-SpoofingWithAsterisk.html页面上找到一些有关这种手段的信息。Asterisk服务器的运行机制与SpoofCard非常相似,只是用于篡改来电显示的服务器不一样。在这种情况下,你使用的是自己的服务器。这一点很有吸引力,因为它提供更多的自由并且不必担心线路中断或时间耗尽。
使用Asterisk的最大好处就是,有关呼叫方和被叫方的信息完全由社会工程人员自己控制。个人信息和账号数据不在第三方手中。
由于大多数用户使用容易猜到的弱口令,因此CUPP是一个完美的分析工具,它可以用于合法的渗透测试和犯罪取证调查。
CeWL是一个Ruby应用程序,它可以通过给定的URL进行指定深度的搜索,并可扩展到外部链接,最终生成一个可用于密码破解的字典文件
◆ 8.1 了米特尼克案例1:攻击DMV
任何成功的社会工程审查或攻击的第一步都是信息收集
有了网络,这种攻击就更加简便了。网络是信息收集的金矿。
◆ 8.2 米特尼克案例2:攻击美国社会保障局
获取信息是所有优秀社会工程人员攻击的核心所在,掌握的信息越多就越有利。
◆ 第9章 预防和补救
预防和减轻社会工程攻击的6大步骤:
学会识别社会工程攻击
制定提高个人安全意识的计划
充分认识社会工程人员意图获取的信息的价值
及时更新软件
编制参考指南
从社会工程审计案例中吸取经验教训
安全意识并非是每年花个40分钟、60分钟或90分钟做一次培训,而是需要创建一种文化或一套标准,让每个人在一生中都坚定不移地运用。它不只关乎工作或“重要的”网站,而是一个人实现整体安全的方式。
◆ 9.1 学会识别社会工程攻击
要了解社会工程人员使用的肢体语言、表情和措辞,这样当听到或看到某人使用这些方法时,你就会马上有所警觉。
◆ 9.2 创建具有个人安全意识的文化
不要只是告诉员工为什么要设定一个又长又复杂的密码,要让他们见识一下破解一个简单的密码是多么地容易。
◆ 9.6 学习社会工程审计案例
和审计人员制定审查目标时,我会针对关键方面列出从0到10不等的强度等级:
1.判断员工是否会点击或打开来自陌生人邮件中的链接或文件
2.判断员工是否会登录某个网站,输入个人或业务相关的信息
3.判断通过电话或者在工作场所或个人场所(即酒吧、体育馆、托儿所)面对面的交流可以从员工口中获取多少信息
4.判断办公环境中的锁、摄像头、传感器和门卫的安全等级
5/确定社会工程人员是否有能力构建一个恶意U盘或DVD,并诱导员工把它用在他的工作电脑上
在策划攻击时,需要避免以下几点:
1.攻击目标的家人和朋友
2.伪造犯罪或不忠的证据,让目标名誉扫地
3.根据当地的法律,冒充执法人员可能是违法的
4.闯入目标的家或公寓
5.利用目标的风流韵事或窘迫状况进行敲诈这样的事要应该不惜一切代价来避免,因为它们与审计目标不符
审查人员应该在审查中做些什么呢?
1.网络钓鱼攻击 有针对性的邮件攻击,查看员工是否容易受到恶意邮件攻击。
2.现场伪装攻击 选择精确且可控的伪装,然后进行电话或面对面攻击,测试员工是否容易上当受骗。
3.引诱 一种在设法进入目标建筑物或其他设施后的现场攻击,将包含恶意代码和文件的U盘或DVD光盘放在现场,测试有没有人上钩。
4.尾随 一种现场攻击,审计人员试图尾随一群公司员工混入大楼。
5.物理安全(红队) 试图通过物理方式进入办公室,获取公司有价值的资产或信息。
◆ 9.8 小结
坏人通常会得逞的原因在于他们付出了足够的时间和精力并且具有明确的动机。不要让生活妨碍安全。相反,也不要让过多的恐惧阻止你享受生活。