Google Hacking(渗透性测试者的利剑原书第3版)/网络空间安全前沿技术丛书

Google Hacking(渗透性测试者的利剑原书第3版)/网络空间安全前沿技术丛书
作者: (美)约翰尼·朗格//比尔·加德纳//贾斯汀·布朗|译者:沈卢斌
出版社: 清华大学
原售价: 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**tpin.l.goo**e.com 处理。 gmail.com 邮件被 10 alt1.gmail**tpin.l.goo**e.com 处理。 gmail.com 邮件被 10 alt2.gmail**tpin.l.goo**e.com 处理。 gmail.com 邮件被 50g**tp163.goo**e.com 处理。 gmail.com 邮件被 50g**tp183.goo**e.com 处理。 ■步骤2.选择其中之一,然后Telnet到端口25: $telnet gmail**tpin.l.goo**e.com 25 Trying **.233.183.27 Connected to gmail**tpin.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: 250 2.1.0 OK ■步骤4a.正面测试: RCPT TO: 250 2.1.5 OK ■步骤4b.负面测试: RCPT TO: 550 5.1.1 No such user d26si1562633onfh ■步骤5.说再见: quit 221 2.0.0 mx.goo**e.com closing connection d26si1562633onfh 通过检查从邮件服务器来的响应,我们已经验证了roelof.temmingh@gmail.com是存在的,但kosie.kramer@gmail.com是不存在的。用相同的方法,我们可以验证其他email地址是否存在。 在Windows平台上,你需要用nslookup命令来查找一个域中的email服务器。你能如此进行查询: nslookup qtype=mx gmail.com 电话号码 email地址是有一套格式的,然而电话号码却是另一码事儿。似乎没有标准的方法来书写一个电话号码。让我们假定有一个南美洲的号码,号码是012 555 1234。这个电话号码在因特网上可以有很多不同的出现形式: ■012 555 1234(本地) ■012 5551234(本地) ■0125551234(本地) ■+27 12 555 1234(带**区号) ■+27 12 5551234(带**区号) ■+27(0)12 555 1234(带**区号) ■0027(0)12 555 1234(带**区号) 抓取到所有结果的一个方法就是查找这个号码*重要的部分,“555 1234”和5551234。然而,这个方法的一个缺陷就是你可能找到在一个**不同**里的相同号码,这就给了你错误的结果。 在一定范围内查找结果中包含电话号码的有趣方法就是使用Goo**e的numrange运算符。这种方法的一个捷径就是**起始数字,然后在数字*后带上“..”。让我们看一下在现实生活中它是如何工作的。想象一下,在查找区域号码+1 252 793时,我们能看到什么结果。如图5.4所示,你能使用numrange运算符来**查询。 图5.4 我们能清楚地看到所有带号码的结果都在美国北卡罗来纳州**范围内。我们将看到这种功能是如何把结果限制在一个特定区域中的,这在本章后续内容中十分有用。 人 找到某人信息*好的方法之一就是Goo**e他们。如果你还没有Goo**e过你自己,你又落伍了。有很多方法可以搜索一个人,大多数方法都是简单直接的。如果你没有马上得到结果也不必担心,还有许多的选择。假定你正在查找Andrew Williams,你可能会搜索: ■“Andrew Williams” ■“Williams Andrew” ■“A Williams” ■“Andrew W” ■Andrew Williams ■Williams Andrew 注意,*后两个搜索不带引号。这是用来查找类似Andrew is part of the Williams family这样的短语。 查找一个类似Andrew Williams这样的名字你肯定会得到大量错误的结果,因为网上很可能有大量叫Andrew Williams的人。这样的话,你需要尽可能给你的搜索添加很多额外的搜索项。例如,你可能尝试类似"Andrew Williams" Syngress pu**ishing security。另一个减少错误结果的经验就是把搜索网站限制在一个特定**中。如果Andrew曾经在英格兰待过,增加site:uk运算符会帮你缩小结果范围。但是要记住,你的搜索同时也就被限制在了UK的网站中。如果Andrew确实来自UK,但所有帖子出现的网站都是在其他**域名中,这个搜索同样无法返回从这些网站命中的结果。 获得大量的结果 在某些情况下你希望获得大量的结果,而不仅仅是特定的结果。例如,你想找到 某个**域名(TLD)中的所有网站或email地址 。考虑让你的搜索能完成以下两件事: 突破1000个结果的限制,增加你每次搜索的结果;作为一个例子,假定在 ****.gov域里查找网站,如图5.5所示。 图5.5 从图5.5中可以看到,对nasa.gov的搜索只显示了18条结果。通常, 你从查询中*多能获得1000个网站,因为很有可能都是从单个网站里获得很多结果。换句话说,如果在一个服务器上找到了500个页面,同时又在另一个服务器上找到了500个页面,这样你就只得到了两个网站的结果。 同样的,你也会从非****.gov域里获得结果。我们如何既能获得*多的结果又把我们的搜索限制在****.gov域里?即通过把查询与关键词和其他运算符组合在一起。考虑查询site:****.gov www.****.gov。这个查询表示在****.gov域中的网站里查找任意结果,但这些结果又不在它们的主网站上。尽管这个查询干的很漂亮,但它依然只能获得*多1000个结果。我们 可以给每个查询添加一些通用的额外的关键字 。这里主要的想法就是通过使用一些关键词把原本不在1000个结果范围内的网站都添加到*初的1000个结果中。尽管,这无法保证会排除其他的网站,但你仍然可以考虑添加类似about,official,page,site等搜索项。尽管Goo**e声明类似the,a,or之类的单词在搜索时会被忽略掉,但我们也确实看到把这些单词与site:运算符组合使用后结果是不同的。从图5.6中的结果可以看到Goolge实际上会去处理这些在我们的查询中“被忽略的”单词。 你是否知道当你在使用网络地图搜索目的地时,黑客或许已经知道你身处何地以及**的主要行程。你是否知道当你在网上愉快便捷的购物时,黑客或许已经得到你的信用卡信息,转身就用你的账户帮他支付自己的海淘账单。你是否知道当你利用社交媒体联系好友时,黑客或许已经画出你的朋友圈关联图,并从中找到你的好闺蜜/好基友。 Goo**e是当前*流行的搜索引擎,但Goo**e的搜索能力是如此之大,以至于有人会搜索到没打算在网上公开的内容,包括社会保险号码、信用卡号、商业秘密和**机密文件。本书向您展示专业安全人员和系统管理员如何利用Goo**e来查找此类敏感信息,并对自己的企业进行“自我警戒”。 通过本书你将学习到goo**e地图和goo**e地球如何提供*用级的高精度,看看入侵者是如何利用goo**e来打造超蠕虫,看他们如何将谷歌与Facebook,LinkedIn混合在一起进行无源侦察。 本书包含了所有新的黑客*击方法,诸如goo**e脚本,还有如何把goo**e与其他搜索引擎和API一起使用进行黑客*击。本书作者还将向你提供所有需要进行极限开源侦察和渗透测试的工具。 网络渗透性测试对于大多数普通用户来说都显得过于专业和复杂。网络安全和个人隐私信息的防护不单是IT系统管理员的职责,它与每个个人用户都息息相关。本书从普通用户上网使用*为频繁的搜索引擎入手,向大家展示如何在网络中保护个人信息。 本书的原作者都是专业黑客和网络安全研究者,译者长期从事电信云计算平台的研发工作,是*先同时通过CCIE和HCIE认证的网络专家之一。