
出版社: 清华大学
原售价: 79.00
折扣价: 55.30
折扣购买: Google Hacking(渗透性测试者的利剑原书第3版)/网络空间安全前沿技术丛书
ISBN: 9787302476528
无
第5章
Goo**e在一个信息收集框架中的身影
摘要
本章涵盖了自动化搜索、数据挖掘和收集有用的搜索项。
关键词
自动化搜索
数据挖掘
收集搜索项
介绍
这世间进行入侵的理由各有不同。我们中的大多数听到骇客的时候,都会想到计算机和网络安全。骇客其实是一种精神状态和思维方式而非一种物理属性。人们为什么喜欢非法入侵?有不少的动机,但一个特别的原因就是希望能知道街上普通人不知道的东西。大多数其他的动机都可由此衍生而来。知识就是力量,大家都急迫地想去看看别人正在干什么而不被发现。要理解对知识的渴望是进行入侵的核心理由,考虑一下Goo**e,一部大规模分布式**电脑,能够访问所有已知信息和拥有颇具欺骗性的简单用户界面,时刻准备着在分秒之间回答任何的查询。Goolge简直就是为骇客们而生的。
本书**版和第二版曝光了很多技术,骇客(或称为渗透性测试者)可能用这些技术来获得在常规安全评估(例如,查找网络、域名、email地址等)中能帮助他/她的信息。在这样的传统安全测试中,其目的通常总是通过破坏安全措施来访问*限信息。然而,这些信息**可以通过把相关的信息碎片聚集到一起来组成一张*大的图来获得。当然,这并非对所有信息都有效。我在Goo**e上找到**机密又被双倍加密文档的机率是极其小的,但你可以确信无疑的是获得它的方法*终将包含大量从类似Goolge这样的公共资源获得的信息。
如果你正在阅读本书,你有可能已经对信息挖掘感兴趣,以有趣的方式使用搜索引擎来获得*多信息。我希望在这一章里展示如何用有趣而又聪明的方法来干这些事。
自动化搜索的原理
计算机能帮助单调乏味的任务实现自动化。聪明的自动化能实现一千个不同的人同时工作也完不成的工作。但是,如果一项工作无法手工完成,那它是无法被自动化的。如果你想写个程序来执行一些工作,你需要亲手完成整个过程,并且该过程每次都能工作。自动化一个有缺陷的过程是没有意义的。一旦手动过程被消化掉,就能用算法来把这个过程翻译成计算机程序。
让我们看一个例子。有用户想找出哪些Web站点含有email地址andrew@syngress.com。作为开始,该用户打开了Goo**e并在对话框里输入了这个email地址。其结果如图5.1所示。
图5.1
这个用户可以看到列出了带有该email地址的三个不同网址: g.bookpool.com,www.networksecurityarchive.org和book.goo**e.com。在潜意识里,他/她感觉这个email地址不该只出现在这几个网站里,他/她还记得有些地方把email地址以andrew at syngress dot com的形式罗列着。当用户把这个搜索输入进Goo**e时,得到了不同的结果,如图5.2所示。
很明显,由于查询项两侧没有引号,查询给出了错误的结果。用户加上引号以后得到的结果如图5.3所示。
通过以不同的系统化描述查询以后,现在用户有了一个新的结果: taosecurity.**ogspot.com。对搜索查询的改进起了作用,用户找到了另一个网站引用。
如果我们把这个过程分解成逻辑部分,我们看到事实上我们遵守了很多不同的步骤。几乎所有的搜索都遵循以下这些步骤:
■定义一个原始搜索项;
■扩展该搜索项;
图5.2
图5.3
■从数据源获得数据;
■语义分析该数据;
■把该数据后加工成信息。
让我们*仔细地看一下这些步骤。
原始搜索项
前面那个例子的目的是找到那些引用了一个特定email地址的网页。这看似**简单明了,但清晰地定义一个目标可能是任何一个搜索*困难的一部分。聪明的搜索不至于获得一个不明确的目标。当自动地搜索一个目标时,它跟手动搜索遵守一样的原则,即“无用输入,无用输出”。
计算机是不擅长“思考”的,但长于“数字运算”。不要尝试让计算机替你思考,因为结果会令你十分沮丧。 “无用输入,无用输出”原则简而言之就是,如果你一开始就往计算机里输入糟糕的信息,你将只能得到垃圾(或者说也是糟糕的信息)。没有经验的搜索引擎用户经常需要尽力克服这一原则。
在某些情况下,目标可能需要被分解。这对于一个范围很宽泛的目标来说是特别正确的,就像尝试去查找荷兰奶酪工厂员工的email地址,在这个例子中,至少存在一个子目标——你需要首先定义奶酪工厂。确保你的目标已经被很明确的定义了以后,来查找一组核心搜索项的集合。在某些情况下,你需要仔细研究一个单一查询的结果,进而得到合理的**的搜索项。我们经常在看到一些查询结果后想: “哦,我从没想过我的查询会返回这些结果。如果我通过自动化每次都稍微改动一点查询,我能得到大量有趣的信息。”
说到底,**真正会限制你从搜索引擎获取哪些信息的就是你自己的想象力,不断地尝试就是发现*好查询的方法。
扩展搜索项
在我们的例子中,用户很快就会发现通过把原始查询改变成一组稍微不同的查询集合,他们就能得到*多的结果。扩展搜索项对于我们人来说是相当自然的事,但自动化搜索真正的力量存在于想象出人*作的过程并把它翻译成某种形式的算法。通过把标准形式的搜索,程序化地转变成很多不同的搜索,我们把自己从手工重复劳动中解放出来,*重要的是,我们无须记住所有的扩展细节和技巧。让我们看几个扩展技术。
Email地址
很多网站都尝试模糊处理email地址来欺骗数据挖掘程序。这么做有很合理的理由: 大多数的数据挖掘程序通过搜索网站来为垃圾邮件发送者收集email地址。如果你确定想收到大量的垃圾邮件,把你的email地址清楚无误地加到一个邮件列表里。尽管网站自动地模糊处理email地址是件好事,这依然让我们的生活像Web搜索者一样困难。幸运的是,还有很多方法可以解决这个问题; 然而,垃圾邮件发送者也是知道这些技术的。
·
·
当搜索一个email地址时,我们可以用以下扩展。email地址andrew@syngress.com能被扩展成以下形式:
■andrew at syngress.com
■andrew at syngress dot com
■andrew@syngress dot com
■andrew_at_syngress.com
■andrew_at_syngress dot com
■andrew_at_syngress_dot_com
■andrew@syngress.remove.com
■andrew@_removethis_syngress.com
注意@符号能被改写成很多形式(例如,(at),_at_或者at)。这也同样适用于dot(".")。你也能看到很多人会把remove或者removethis加在一个email地址中。*终这就变成了二八定律: 当你实现了这些表达式的前20%时,你将找到80%的地址。
在这个阶段,你可能会感觉到你永远也查不完所有的地址实例(当然你可能是对的)。但是在通道尽头总是会有一束微弱的曙光。Goo**e在一个搜索中会忽略某些特定的字符。andrew@syngress.com和“andrew syngress com”这两个搜索返回了相同的结果。@符号和点(dot)都被简单地忽略了。所以,当扩展搜索项时,不要包含它们,因为你仅仅就是在浪费一个搜索。
验证一个Email地址
这是一个快速验证email地址有效性的方法。尽管这可能无法对所有邮件服务器起作用,但它能用于大多数服务器,包括Gmail。看一下: 译者注: 以下指令在Linux或UNIX环境下使用。
■步骤1. 找到邮件服务器:
$host t mx gmail.com
gmail.com 邮件被 5 gmail**tpin.l.goo**e.com 处理。
gmail.com 邮件被 10 alt1.gmail**tpin.l.goo**e.com 处理。
gmail.com 邮件被 10 alt2.gmail**tpin.l.goo**e.com 处理。
gmail.com 邮件被 50g**tp163.goo**e.com 处理。
gmail.com 邮件被 50g**tp183.goo**e.com 处理。
■步骤2.选择其中之一,然后Telnet到端口25:
$telnet gmail**tpin.l.goo**e.com 25
Trying **.233.183.27
Connected to gmail**tpin.l.goo**e.com.
Escape character is "^]".
220 mx.goo**e.com E**TP d26si1562633onfh
■步骤3.模拟简单邮件传输协议(Simple Mail Transfer Protocol, **TP): HELO test
250 mx.goo**e.com at your service
MAIL FROM: