8.6 最高机密案例2:对黑客的社会工程

思维不拘一格且快速敏捷是社会工程人员的标准技能,所以对专业的社会工程人员来说,陷入困境的情况很少见。如果在没有事先警告的情况下,让一名渗透测试人员进行社会工程,又会出现怎样的情况呢?

下一个案例就将讲述这一罕见的情况。这是一个非常好的例子,将证明平时多练习社会工程技能在紧急情况下会大有裨益。

8.6.1 目标

“约翰”需要为一个大客户进行一次标准的网络渗透测试。审查大纲中没有任何关于社会工程和现场的工作,这可谓是一次没有任何刺激的渗透测试。然而,他还是很乐意为客户找出网络中的安全漏洞。

在这项审查中,一开始确实没发生什么惊心动魄的事。他按照常规路数扫描并记录数据,测试可能被入侵的端口和服务。

就在一天的工作快结束的时候,他通过Metasploit扫描找到一个开放的VNC服务器,通过这个服务器可以控制网络中的其他计算机。这是个不错的发现,因为全部网络是被限制访问的,所以这种简单进入的方式特别受欢迎。

约翰正在记录所发现的开放VNC会话,突然背景上的鼠标开始在屏幕上移动。这是一个严重的警告,因为此时此刻,客户方是不允许用户进行任何合法的连接和系统使用的。

发生了什么事?约翰注意到这个人并不像是管理员或者一般用户,他显然对系统不是很熟悉。约翰怀疑这是个不受欢迎的入侵者。虽不想把入侵者吓跑,但他想确认这个人究竟是管理员还是入侵了同一个系统的另一个黑客。

很快,约翰的目标从渗透测试变成了找出入侵组织内部的恶意黑客。

8.6.2 故事

约翰立即决定对该名黑客进行社会工程,并且搜集尽可能多的资料来维护客户的利益。他真的没有时间做十分周密的计划,也没有时间做适当的信息收集。

他冒着很大的风险,打开记事本程序,决定伪装成一名“n00b”黑客,也就是一个新手、技术菜鸟,和对方一样,看到这个口开着就进来了。他截取了一些与黑客对话的屏幕截图。注意看一下图8-1,他是如何对黑客进行社会工程的。约翰先开始对话,次行是黑客说的话。


图8-1 事件的屏幕截图

下面是对话的原稿。它很长,其中出现的所有错误和黑话都是未经加工的,但是会揭示出这次攻击的原貌。约翰首先开始说话。

-嗨,什么情况?

-呵呵,随便看看。

-呵呵,我也是。有什么好东西吗?

-你也是“黑客”?你在寻找不安全的VNC服务器。

-你=我

-我找的都是简单的系统,这个系统就是。;) 你在这网络中还有什么其他发现吗?我只找到这个。

-没找到什么有趣的东西,大部分系统都保护得不错。是啊,很容易进来,但是我想要管理员权限…… :D

-是啊,获取这里的管理员权限再简单不过了,提权就可以了。我感兴趣的是这里还有什么。这个一直打开的电子表单是什么?

-我也不知道,我进来的时候就是这样了,我还没怎么看呢。大约两小时前刚发现这台电脑。你呢?

-我发现快一个星期了,时不时进来看看,但还没用它做任何事,有点懒。你在快速共享上的测试文件是什么?我提取了里面的一些字符串,但是看不清。

-酷。文件是我做的一个测试,我尝试运行一个程序(特洛伊木马),但是被防火墙阻止了。

-哈哈。我也遇到了相同的问题。我做了个metasploit脚本,但也没有进展,这就是为什么我还在这。你是本地的还是国外的?我知道有些人是丹麦的。

-我是挪威的,呵呵,我在丹麦有亲戚。

-你逛什么论坛吗?我以前有几个喜欢的论坛,但后来都消失了。

-我主要逛编程论坛,其他地方不大去。你做黑客很久了吗?能问一下你的年龄吗?我22岁。

-我做这个一年左右,主要是为了好玩。我还在上学,16岁,就是找点事做。你去过邪恶地带(evilzone)吗?

-没有。我做这个也纯粹是为了好玩,只是想看看自己能做什么,测试一下我的技能。顺便说一句,我写了个“VNC探测器”程序,已经找到了很多服务器,但是只有这里还有点意思。

-哇。你都写了什么代码呀?我能下载吗?你有网名不?

-我是用PureBasic写的,但发布还为时过早,现在就自己用用,可能以后会共享出来。我可以上传代码,你来编译,但你要先在软件仓库站点下载一些PureBasic编译器程序:P

-那太酷了。你可以放在irc附带的pastbin站点上,那里可以匿名发帖。我以前没有用过purebasic,只会python和perl。

-让我想想,我去pastebin站点上传,给我几分钟时间就好。

-好的,酷!你有网名吗?我的是jack_rooby。

-网名,有啥用?我不上irc聊天,但你可以通过电子邮件联系我。

-太酷了。我指的是irc或论坛上用的账号。邮箱也可以。

-哦,在编程类论坛上我都是用的全名。可能这么做不够聪明。我的邮箱是intruder@hotmail.com。

-给我发消息,也许我可以加你为MSN好友。

-会给你发的。认识会编程的人真不错,如果我以后干这种事的时候卡壳了或找到有用的信息,都可以拿来分享。

-呵呵,是的,现在我们是一伙的了:P

-酷!pastebin上传好后告诉我。

http://pastebin.ca/1273205

-顺便说一声……这还停留在"alpha"阶段,用户界面还没完成,但可以通过一些变量进行配置。

-酷。我测试下,看看能不能用。谢谢你的共享。如果我做了什么很酷的事情,能发邮件给你吗?

-好啊,没问题。如果持续运行这个程序几个小时,你会找到很多服务器的。我还编了些代码去检测服务器的安全配置和漏洞,即使有密码保护也能进入系统。这些服务器的检测结果会以“不安全”(insecure)标志显示出来。但有时候也会出错,不安全的其实并非不安全,但这种情况不是很多,你自己测试看看吧。

-哇。我在这里也看到其他vnc服务器了,但是都要密码。你的工具可以进入吗?

-只是很少一部分有漏洞的可以进入,但是你必须使用专门的客户端,像这里说的:

http://intruderurl.co.uk/video/

-下载zip文件。

-好的,我会下载看看。太酷了。快速共享中的后门也是你自己写的吗?还是从其他地方得到的?

-我自己尝试写了大多数的工具,通过这种方式来学习。是的,这是我自己写的,但是还没有完成,我只是想看看能否运行服务器程序,但还不行,呵呵。

-知道了,我有点想放弃了,但还是觉得应该回来再试试其他方法。我想这里还有些东西吧,但是我没有自己的僵尸网络,有个叫Zoot54的人想卖给我一个,还有人为他担保,但是我根本不信任他。我还不知道怎么写自己的工具,大部分perl和python对于这种windows主机都不起作用,所以我打算用metasploit,但是出现了防火墙错误。你对此有什么想法吗?有什么酷一点的做法吗?还是转向下一台主机?

-Perl和python都是很好的开始,不过我自己没用过。但当你学会一些语言时,学其他的也不难 :P 也许你可以先试试PureBasic,学起来很容易。呵呵,僵尸网络很酷,我想做一个,但是要让它自我传播有点困难,至少在Vista上不容易。可是,我还没打算放弃这台服务器,再尝试一些别的方法,一定能有办法得到更多权限的;D

-酷毙了,你就用这台服务器尝试吧,我已经进来好久了,不知道下一步该做什么了。让我看看你会怎么做,我就能学到更多了。这真是太酷了。你有myspace或者facebook之类的账号吗?只用邮箱吗?

-现在先用邮箱,等我完全信任你以后,也许会在facebook上加你,我没有myspace账号。我会和你保持联系的:)

-酷,用邮箱也可以。你有命令行通道吗?还是也用这个相同的图形用户界面?这是个多连接的vnc?

-是的,我只用ThightVNC或者其他工具,确保不会断开其他用户。实际上我不是命令行粉丝,呵呵 :S

-酷。我用命令行时常常会犯错,导致连接断开。

-感谢你没把我断开 :D,一开始见你在这乱搞一气的时候,我还想“糟了,撞上管理员了”,呵呵呵……

-哈,我看过时区设置,这公司在美国中部,所以对他们来说现在是半夜。

-是的,我也看到了。我还做了网速测试,呵呵。似乎他们的上传速度要大于下载速度,好奇怪啊……但可能会便于DoD攻击。

-我指的是DoS(拒绝服务攻击)。

-我还奇怪这个说法是什么呢,还以为是一个很有趣的名称……你进入过这里的其他系统吗?我很早以前看到过一个软件仓库服务器,但是现在已经不在了。

-我没有发现其他系统。但是我想访问他们所有的网络计算机……可是数量太庞大了,简直像个大学一样。呵呵,我之前输出了“hello world”。

-哈哈,你发送到打印机还是屏幕啊?这些人要是某天中午看见鼠标在电子表格应用中乱动,一定会吓一大跳的。

-哈哈,是的。但是VNC服务器不设密码,太白痴了啊?!我向打印机输出了一些东西,希望有人能看到。

-哈哈,我相信会的……他们不能在没有管理员权限的情况下运行,所以这不是普通用户做的,一定是某个管理员设置的,不然的话我们的后门就能用了,但是它们现在根本不能运行。或者有人更改配置了?

-嗯,我想你是对的,可能是某个管理员或者怪胎……

-你靠这个谋生吗?我一直听你说能靠这个赚钱,我想要是我做一段时间,变得更厉害的话,就能靠它吃饭了。你也是这样做的吗?

-我是靠编程吃饭的,不从事黑客或者安全类的工作。但这是个好主意,人们愿意为测试安全付钱,如果我们做得好的话,或许能靠这个赚一大笔钱。

-那正是我希望的。我在“有道德的黑客”网站上买了本书,里面有些不错的程序。我不清楚做测试要多大年龄,但是这可能是我从事这些工作的好起点。里面有许多很好的工具,比如metasploit。如果你没看过的话,真应该好好研究下。

-好的,谢谢,我会去看的:)可是我现在有点累了,呵呵。我不能整天在这简陋的记事本上聊天,呵呵。以后聊,伙计。遇见你真酷,和你聊天很有趣。

-是啊,在屏幕上看到记事本时还真是吓了一跳。很高兴遇到你,我会发邮件告诉你程序用得怎么样。很想知道究竟会发生什么。祝你顺利,不要被当做坏人抓了哈!

-呵呵,谢谢,你也是!:)这很有趣,我要把记事本上的聊天内容保存下来,等我一会,哈哈……

-好的,哈哈,抱歉。

-再见。

-再见。

这场闲谈表明约翰能快速地伪装成另一个人。这不是件容易的事,通常需要周密的计划,但是为了维护客户的安全利益、找到入侵者,他不得不将自己伪装成黑客。

最后,约翰取得了黑客的照片、邮箱和联系信息。他将这个恶意黑客报告给了客户,之后系统得到了修正,保证不会再有轻易入侵系统的事情发生。

这个最高机密案例反映了以专业的方式运用社会工程可以很好地保障客户的安全。

8.6.3  社会工程框架的运用

这个案例中有趣的是,公司并非黑客的真正目标。他只是在互联网上寻找易攻击的目标,没想到正好碰到了。对外开放访问权限是十分危险的,若不是刚好被渗透测试人员发现,后果该会多么严重啊!

当然,从这个故事中我们也可以学到许多有关社会工程的知识。约翰刚刚进行检测时并没打算使用社会工程技巧,只是想做一个简单的渗透测试。有时候你必须在毫无准备的情况下运用社会工程技能。

约翰为什么能够在没有回家练习的情况下完成这项任务?很可能约翰每天都在使用这些技巧,至少是经常练习,所以才能运用自如。

从这个案例中学到的最主要的一点可能就是熟能生巧。实际上,约翰本可以在遭遇黑客时,告诉对方自己是管理员,他的所作所为已经被记录,其黑客生涯结束了。他可以使用各种威胁方法,可以将恐惧做为主要战术。

但是这样的话,黑客很有可能会逃跑,之后会返回并试图格式化系统,或者造成更大的破坏以掩盖其入侵痕迹。相反,思维敏捷的约翰在目标身上收集了大量有用的信息,随后利用目标的邮箱、姓名以及Maltego软件,掌握了此人的所有活动。

分析这个故事还能学到的一点就是变通,即随着事态的发展随机应变。当约翰开始从这位黑客身上“收集信息”时,他不确定对方是黑客还是管理员。针对他的第一句话——“嗨,什么情况?”,攻击者可以作出多种回答。在不知道对方会作何反应的情况下,约翰没有时间准备,只能用行话,按照黑客的方式作出反应。

约翰考虑得甚至更远。约翰知道顺应别人的效果最好,于是伪装成n00b,一个水平不高的新手,渴望得到一名技艺超群的真正黑客的教导。在满足了黑客的虚荣心之后,约翰诱导他泄露了各种信息,包括他的联系方式和一张照片。