8.3 海德纳吉案例1:自负的CEO

我与一位自负的CEO的交锋经历还是比较有趣的,因为那位CEO认为自己绝对不可能被任何社会工程渗透,理由有两个:第一,生活中他不常使用科技类产品;第二,他天资聪颖,完全能够抵抗他所谓的“愚蠢的游戏”。

在内部安全小组了解上述信息之后,他们决定让我将该CEO作为安全审计的目标。他们知道,如果他不能通过审计,那么此后的安全整改工作审批会更容易些,这有益于保障公司的整体安全。

8.3.1 目标

目标是美国一家规模较大的印刷公司,该公司拥有一些工艺专利和供应商,而且一些竞争者在打它们的主意。IT部和安全部门认为公司存在一些薄弱点,并说服CEO有必要进行一次安全审查。在与我搭档的一次通话中,该CEO傲慢地说,他知道攻击他简直是无稽之谈,因为他将会用生命保守这些秘密。即使是他的某些核心雇员也不知道所有的细节。

作为社会工程审计师,我的工作是渗透公司、获取公司某一台服务器的访问权限,并拿到其中存储的专利信息。就像CEO在电话里提到的,困难之处在于服务器的密码都存储在他的电脑里,没有他的允许,即使是安全部门的职员也无法接触他的电脑。

8.3.2 故事

很明显,不管采用什么方式,都必须通过CEO这一关。这的确是一个挑战,因为CEO已经全副武装,就等着被渗透了。我依照惯例由信息收集开始,通过网络资源和其他工具(比如Maltego)调查该公司。通过这种方式我获得了很多信息,比如服务器位置、IP地址、邮箱地址、电话号码、公司地址、邮件服务器、员工的名字和头衔等。

当然,我把这些信息制成文档以备之后使用。邮箱地址的结构十分重要,在调查他们的网站时,我发现其邮箱地址的结构是“名字.姓氏@公司名.com”。我没能找到CEO的邮箱地址,但网站上的许多文章都提到了他的名字和头衔(姑且称他为Charles Jones,即查尔斯·琼斯)。这些是普通的、不了解详情的社会工程人员都可以获取的信息。

利用“名字.姓氏@公司名.com”的格式,我尝试发了一封邮件给他,但是没能成功。这令我非常失望,因为我确定通过邮件方式能得到许多具体的信息。

我决定尝试一下Charles的昵称Chuck(恰克),于是试了试“chuck.jones@公司名.com”,竟然成功了!我获得了经过验证的邮件地址。现在我要验证一下这个邮箱是属于CEO的,而不是与他同名的某个家伙。

我花了更多的时间通过谷歌和Maltego尽可能地搜集更多的信息。Maltego有一个强大的转换器插件功能,可以像搜索引擎一样搜索域名范围内的任何文件。

我对公司域名范围内的文件进行转换,大量的文件映入我的眼帘。Maltego通过转换插件不断地提供文件名,许多文件包含元数据,其中包括了日期、创建者和其他的细节信息。通过运行Maltego的元数据转换功能,我发现其中很多文件都是由“Chuck Jones”创建的,文件中的许多内容都暗示他就是CEO。

这正是我想证实的,但在浏览的过程中,一个特殊的文件引起了我的注意——InvoiceApril.xls。这是当地一家银行开具的关于某个营销项目的发票,他参与了该项目,其中有银行的名称、日期以及资金数额,但是缺少具体的项目名称信息。

于是我快速查询了银行网站,但是6个月之前的项目已经无法显示了。我该怎么做呢?

我决定给银行市场部的人打一个电话。

“你好,我是某某公司的汤姆。我在整理账本,发现其中夹了一张4月份的面额为3500美元的赞助发票。项目名称没有写,你能告诉我这是什么活动的发票吗?”

“当然可以,汤姆,”伴随着键盘的敲击声她说,“我查到这是银行儿童癌症基金会发起的年度活动,贵公司是银牌赞助商。”

“非常感谢。我是新来的,非常感谢您的帮助。再见。”

我想到了一种可用的攻击方式,但还需要更多的调查研究,然后周密地计划一次电话通话。

我在网站上找到一些关于筹款活动的文章,以及许多公司为癌症治疗研究出资赞助的报道。另外,我对CEO做了更深入的调查并收获良多,我发现了他父母的名字、他姊妹的名字、他放在Facebook上的孩子的照片、他住在父母附近时去过的教堂、他对喜爱的餐厅的评价、他喜欢的球队、他大儿子喜欢的球队、他读的大学及他孩子上的学校等。

我想知道为什么公司要捐款给儿童癌症基金会。尽管利用他人的感情是许多恶意社会工程人员的所为,但我意识到可能自己也不得不这么做,因为我想知道是否是因为他某个儿子是癌症患者他才加入基金会的。我打了个电话给公司市场部的经理。

“你好,我是XYZ的汤姆。受本镇第一国家银行的委托,负责联系4月份儿童癌症基金会的出席者,能耽误您一点时间做个反馈调查吗?”

“当然可以。”市场经理苏说道。

“苏,我看到你们是4月份活动的银牌赞助商。你觉得就宣传结果而言这笔赞助费花得值得吗?”

“嗯,这是我们每年都会做的,在当地会有不少报道。如果网站上能多展示些银牌赞助商的信息就更好了。”

“好的,我记下来了。每年?是的,我看到你们每年都会这么做。个人想了解一下,有那么多基金会,为什么选择了我们?”

“据我所知,恰克总是特别关注这个。他是CEO,我想大概是他家里有人得了癌症吧。”

“噢,我很抱歉。请问是他的孩子吗?”

“不是的,我想可能是他的侄子或表妹吧。我也不是很肯定。”

“好的,十分感谢你们的捐款和支持。”

我又提了一些问题,再次表示感谢,然后结束了通话。

我得到了想要的信息——不是他的孩子患有癌症。我知道这不会阻止一个恶意的社会工程人员进行攻击,但我还是很好奇。在得到这些信息之后,我开始计划入侵攻击。

我知道CEO来自纽约,喜欢一家名叫多明戈的餐厅,并且经常带着孩子看大都会的比赛,然后去多明戈餐厅吃饭。

他给餐厅写了评价,并且列举了最喜欢的三道菜。我从他的Facebook中了解到,目前他还是和父母住得很近,而且经常过去探望。

我计划伪装成癌症研究资金的募集人员,宣称在为三州地区筹款,捐款的人将有机会抽奖,奖品是两张大都会比赛的门票和一张餐厅的优惠券,可从三家餐厅中任选一家,多明戈餐厅就是其中之一。

我会假装自己来自纽约地区,但是工作时间不长,以防他提到一些我不知道的事情。

我的最终目标是让他接收一个包含恶意代码的PDF文件,该代码能够让我反向入侵他的计算机。但如果他没有使用能让我成功入侵的Adobe软件版本,我会接着说服他下载一个zip文件,并执行其中带有恶意文件的EXE安装程序。

为了成功伪装,我针对通话内容进行了一番练习,测试了PDF和EXE文件,并且打开谷歌地图找到了多明戈餐厅的位置以备通话中可能谈到。准备好用来接收受害者反馈信息的电脑后,一切工作准备就绪。

大约下午4点,我拨通了电话,因为通过公司网站我发现该公司周五下午4:30下班。由于以前与他洽谈审计事宜的不是我,而是我的搭档,所以CEO听不出我的声音。

“你好,请问查尔斯•琼斯先生在吗?”

“请稍等。”电话那头的声音有些疲惫,并且该人马上为我转接。

“你好,我是恰克。”

“你好,琼斯先生,我是美国癌症研究会的托尼。我们正在进行一项年度资金募集活动,筹得的资金将用于支持癌症研究,目前不管男女老幼都在饱受癌症的折磨。”

“请叫我恰克。”他打断了我。

这是一个好兆头,因为他并没有以现在很忙等借口挂断我的电话,并且在对话中融入了个人色彩。我继续说道:“恰克,谢谢你。我们正在进行一项募款活动,联系的是原先捐过款的单位,这次是50~150美元的小额捐款。为此,我们为捐款的好心人设置了包含两项大奖的抽奖机会,抽中的话会赢得两张纽约大都会比赛的门票以及一顿免费的双人晚餐,有三家餐厅可供选择。本次抽奖一共会产生5位幸运者。”

“大都会比赛,真的?”

“是的。也许你对大都会的比赛不感兴趣,但餐厅还是非常棒的。”

“不,不,我喜欢大都会,我会那么问是因为我太高兴了。”

“好的,请考虑一下。你不仅能帮助癌症研究,还有机会观看精彩的比赛,而且还能在莫顿、巴塞尔和多明戈三家餐厅中选择一家免费就餐。”

“多明戈!真的?我喜欢这家餐厅。”

“哈,那太好了。你知道我前几天第一次去那,那儿的蘑菇鸡肉真是棒极了!”这是他第三大爱的菜。

“哦,那不算什么,你应该尝尝法式菠萝,那是那家餐厅最棒的菜,我每次去都点它。”

“我周末会再去那,一定要试试。谢谢你的推荐。现在时间也不早了,我不是来要钱的,也不能从电话里拿走钱。我会发一个PDF文件给你,你可以看看,如果感兴趣的话,填一下表格,然后随支票一起发过来就可以了。”

“好啊,发过来吧。”

“好的,还有几个问题,你的邮箱地址是?”

“chuck.jones@公司名.com。”

“如果可以的话,请打开PDF阅读器,单击‘帮助’菜单上的‘关于’,然后告诉我版本号。”

“稍等,版本是8.04。”

“很好,我可不想发一份你打不开的文件。稍等不要挂,我现在就发过去。好了,发过去了。”

“好的,谢谢。真希望我是幸运儿,我太喜欢那家餐厅了。”

“我知道,那儿的菜的确不错。在挂电话之前,你能检查一下邮箱,看看邮件是否收到了吗?”

“好的,我5分钟后就要注销了,不过还能查看。是的,收到了。”当听到双击的声音,我开始检查运行于我的BackTrack电脑上的恶意负载侦听程序Meterpreter(见第7章),它正在响应。我屏住呼吸(这部分从来不会无聊),砰地一声命令行界面出现了。Meterpreter脚本的属主信息改变了,类似于Explorer.exe。

恰克嚷道:“啊,我黑屏了,不能动了。”

“真的吗?真是奇怪了。让我检查一下。”我真正查看的是我是否能访问他的硬盘,并且立刻上传反向命令行,这在他关机重启后还能运行。我说:“很抱歉,我不知道怎么会这样。你能再等我几分钟吗?”

“好的,我去洗洗咖啡杯,离开会儿,不挂电话。”

“好的,谢谢。”这段时间足够我确保下次还能进入他的计算机系统了。很快,他回来了。

“我回来了。”

“恰克,这真让人尴尬,但我不清楚发生了什么。我不想耽误你的时间,要不你先回去,我重新做一个PDF文件再发邮件给你。我们周一再联系。”

“好,没问题。周末愉快!”

“你也是,恰克。”

挂断电话后,令我吃惊又惊喜的是,他的电脑没有关机,并且处于活动状态。是的,他将一切保存在了安全的硬盘中,而且只有他有权访问,不过全都保存在了Word中。我立即开始下载那些Word文档,几个小时后我访问了服务器,打印出他想保护的所有内部工作流程。

我在周一早上联络了他,但不是以基金募集者托尼的身份,而是以安全咨询专家的身份,而且携带了包含他的“秘密”和密码的打印文件,还有与他及其员工的通话录音。

成功攻击后,与客户第一次会面时,他们往往大为震惊,并且会宣称我们使用了不道德的策略,利用人性弱点实现入侵。当我们解释说恶意分子会使用同样的战术时,他们由愤怒变为恐惧,最后会表示理解。

8.3.3 社会工程框架的运用

与之前的案例类似,我们将本案例与社会工程学框架结合,分析该攻击的精彩之处,以及哪些部分还有待改进。

像往常一样,信息搜集是社会工程的关键,在这个案例中也是一样。信息搜集有很多渠道——网站、Maltego及电话等,这些是成功攻击的基础。信息不足将会导致悲惨的失败。

恰当而丰富的信息关系重大,甚至是我不需要的信息,类似他去的教堂、他父母和兄弟姊妹的名字,都在信息收集的范围之中。这些都是以防万一,有备无患,但是邮件地址的惯用格式以及用Maltego找到的服务器上的文件却是非常宝贵的关键信息,正是这些信息为我打开了入侵该公司的大门。

就像第2章提到的,将搜集到的信息分门别类地保存到BasKet或Dradis中,方便随时使用信息也很重要。相反,包含一大堆信息的文本文件会很难利用。信息整理与信息搜集是同等重要的。

像坏人一样思考(尝试挖掘并利用目标的弱点和欲望)并非工作的关键,但是如果专业的审查人员想要保护他的客户,他将会竭尽全力地去证实其客户有多么脆弱。搜集的信息越多,就越容易发现漏洞。这就是通向成功的道路。

增强伪装的真实性和设计话题有助于攻击的成功。你必须提出有力的问题并抓住关键点来吸引目标的注意。通过搜集大量的信息,我能提出有效的问题并制定一个涉及关键词和神经语言程序学用语的框架,这会大大提高战术影响力的威力,确保攻击的成功。

我不得不经常更换伪装,以员工的身份打电话给公司的供应商,再以供应商的身份打电话给内部员工以获得更多的信息。我必须仔细地准备每个身份,进入角色,这样才能在实战中应对自如。这当然需要很多时间的谋划,以确保每个伪装都合理、自然。

熟能生巧。在发起攻击前我和搭档反复练习。我必须确保PDF文件正常工作,攻击方法合理,还必须具备足够的知识,让所有目标都相信我。

人们常常不理解练习的重要性。练习能使我们弄明白什么策略可行、什么策略不可行,并且确保计划顺利开展和实施,甚至在出现意外的情况下也能从容应对。

之后,我发现做一些小小的改进会让这次攻击变得更有效率。首先,仅仅依靠恶意PDF文件是存在风险的,我会建立一个小网站,模拟真实的癌症研究网站,并把PDF文件上传上去。网站和PDF文件都可以包含恶意代码。这样,成功的几率就增加了一倍,其中一个失败了还能有个后备。

另一个更大的风险是CEO离开办公室后还开着电脑。如果他不这么做,我就必须等到下周一才能继续尝试访问。我应该先发给他一份包含恶意代码的PDF文件,待该文件攻击他的电脑后,再发一份“真实的PDF文件”让他阅读。这样他就会在电脑前停留足够长的时间,也好让我有时间利用漏洞进行攻击。

在这次审查中,我花费了大约一个星期的时间去调查、搜集、整理信息以及练习,最后才发起攻击。一个星期的时间,该公司的机密就可能落入了竞争对手或者更高的出价者手中。多读几遍这个故事,体会其中使用的微妙的方法以及对话方式。书面形式很难体现声音、音调和对话节奏,你要试着想象,如果自己处于这些对话场景,将用什么方式处理。