第六章 WEB侦查

最后更新于:2022-04-01 22:00:30

# 第六章 WEB侦查 本章内容: 1. 使用`Mechanize`匿名浏览互联网 2. Python使用`Beautiful Soup`映射WEB元素 3. 使用Python与Google交互 4. 使用Python和Twitter交互 5. 自动钓鱼 > 在我生命的八十七年中,我亲眼目睹了技术革命的演替。但却没有人完成了人的思考和需要这一问题。 > —Bernard M. Baruch 美国第28到第32任总统的顾问 ## 简介:今天的社会工程学 2010年,两个大规模的网络攻击改变了我们对网络战的理解。先前我们在第四章讨论过极光行动。在极光行动攻击中,瞄准了多个跨国的公司,雅虎,赛门铁克,Adobe等还有一些Google账户。华盛顿邮报报道这是一个新的有着先进水平的攻击。Stuxnet,第二次攻击,针对SCADA系统,特别是那些在伊朗的。网络维护者应该关注该蠕虫的发展,这是一个比极光行动更加先进和成熟的蠕虫攻击。尽管这两个网络攻击非常复杂,但他们有一个共同的关键点:他们的传播,至少部分是通过社会工程学传播的。不管多么复杂的和致命的网络攻击增加有效的社会工程学会增加攻击的有效性。在下面的章节中,我们将研究如何使用使用Python来实现自动化的社会工程学攻击。 在进行任何操作之前,攻击者应该有目标的详细信息,信息越多攻击的成功的机会越大。概念延伸到信息战争的世界。在这个邻域和当今时代,大部分所需的信息可以在互联网上找到,由于互联网庞大的规模,遗漏重要信息的可能性很高。为了防止信息丢失,计算机程序可以自动完成整个过程。Python是一个很好的执行自动化任务的工具,大量的第三方库允许我们轻松的和互联网,网站进行交互。 ## 攻击之前的侦查 在本章中,我们通过程序对目标进行侦查。在这个发面关键是确保我们收集更多的信息量,而不被警惕性极高,能干的公司总部的网络管理员检测到。最后我们将看看如何汇总数据允许我们发动高度复杂的个性化的社会工程学攻击。确保在应用任何这些技术之前询问了执法官员和法律的意见。我们在这展示攻击和用过的工具是为了更好的理解他们的做法和知道如何在我们的生活中如何防范这种攻击。 ## 使用Mechanize库浏览互联网 典型的计算机用户依赖WEB浏览器浏览网站和导航互联网。每一个站点都是不同的,可以包含图片,音乐和视频中的各种各样的组合。然而,浏览器实际上读取一个文本类型的文档,理解它,然后将他显示给用户,类似于一个Python程序的源文件和Python解释器的互动。用户可以使用浏览器访问站点或者使用不同的方法浏览他们的源代码。Linux下的我`wget`程序是个很受欢迎的方法。在Python中,浏览互联网的唯一途径是取回并下载一个网站的HTML源代码。有许多不同的库已经已经完成了处理WEB内容的任务。我们特别喜欢`Mechanize`,你在前几章已经用过。`Mechanize`: http://wwwsearch.sourceforge.net/mechanize/ 。 `Mechanize`主要的类Browser,允许任何可以在浏览器是上进行的操作。这个类也有其他的有用的方法是程序变得更简单。下面脚本演示了`Mechanize`最基本的使用:取回一个站点的源代码。这需要创建一个浏览器对象,然后调用`open()`函数。 ``` import mechanize def viewPage(url): browser = mechanize.Browser() page = browser.open(url) source_code = page.read() print(source_code) viewPage('http://www.syngress.com/') ``` 运行这个脚本,我们看到它打印出 `www.syngress.com` 首页的HTML代码。 ``` recon:∼# python viewPage.py Syngress.com - Syngress is a premier publisher of content in the Information Security field. We cover Digital Forensics, Hacking and Penetration Testing, Certification, IT Security and Administration, and more. <..SNIPPED..> ``` 我们将使用`mechanize.Browser`类来构建脚本,在本章中浏览互联网。但是你不会受它的约束,Python提供了几个不同的方法浏览。这章使用`Mechanize`由于他提供了特殊的功能。John J. Lee设计的`Mechanize`提供可状态编程,简单的HTML表格和方便的解析和处理,例如`HTTP-Equiv`这样的命令和刷新。此外,它提供给你的内在对象是匿名的。这一切都会在下面的章节中用到。 ## 匿名---增加代理,用户代理和Cookies 现在我们有从互联网获取网页内容的能力,退一步想想接下来的处理很有必要。我们的程序和在浏览器中打开一个网站没有什么不同,因此,我们应该采取同样的步骤在正常的浏览网页时建立匿名。网站查找唯一标识符来识别网页游客有几种不同的方法。第一种方法是通过记录请求的IP来确认用户。这可以通过使用虚拟专用网络(VPN)或者tor网络来缓和。一旦一个客户连接到VPN,然后,所有的将通过VPN自动处理。Python可以连接到代理服务器,给程序添加匿名功能。`Mechanize`的Browser类可以指定一个代理服务器属性。简单的设置浏览器代理是不够巧妙的。有很多的免费的代理网络,所以用户可以进去选择它们,通过它们的功能浏览。在这个例子中,我们选择 http://www.hidemyass.com/ 的HTTP代理。在你读到这里的时候这个代理很有可能已经不工作了。所以去这个网站得到使用不同HTTP代理的细节。此外,McCurdy维护了一个很好的代理列表在网站: http://rmccurdy.com/scripts/proxy/good.txt 。我们将测试我们的代理访问NOAA网站,它会友好的告诉你访问该网站时你的IP地址。 ``` import mechanize def testProxy(url, proxy): browser = mechanize.Browser() browser.set_proxies(proxy) page = browser.open(url) source_code = page.read() print source_code url = 'http://ip.nefsc.noaa.gov/' hideMeProxy = {'http': '216.155.139.115:3128'} testProxy(url, hideMeProxy) ``` 虽然识别HTML源代码有一点困难,我们看到该网站人为我们的IP地址是`216.155.139.115`,我们的代理,成功!我们继续构建脚本。 ``` recon:∼# python proxyTest.py What's My IP Address? <..SNIPPED..> Your IP address is...
216.155.139.115


Your hostname appears to be...
216.155.139.115. choopa.net
``` 我们现在有一个简单的匿名浏览器。站点使用浏览器的`user-agent`字符串来识别唯一用户另一种方法。在正常情况下,`user-agent`字符串让网站知道关于浏览器的重要信息能制作HTML代码给用户更好的体验。然而,这些信息柏包含内核版本,浏览器版本,和其他关于用户的详细信息。恶意网站利用这些信息针对特定的浏览器进行精密的渗透利用,而其他网站利用这些信息来区分电脑是位与NAT网络还是私有网络。最近,一个丑闻被爆出,一个旅游网站利用`user-agent`字符串来检测MacBook用户并提供更昂贵的选择。 幸运的是,`Mechanize`改变`user-agent`字符串和改变代理一样简单。网站: http://www.useragentstring.com/pages/useragentstring.php 为我们展示了一个巨大的有效的`user-agent`字符串名单供我们选择。我们将编写一个脚本来测试改变我们的`user-agent`字符串访问 http://whatismyuseragent.dotdoh.com/ 来打印出我们的`user-agent`字符。 ``` import mechanize def testUserAgent(url, userAgent): browser = mechanize.Browser() browser.addheaders = userAgent page = browser.open(url) source_code = page.read() print(source_code) url = 'http://whatismyuseragent.dotdoh.com/' userAgent = [('User-agent','Mozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18) Gecko/20010131 Netscape6/6.01')] testUserAgent(url, userAgent) ``` 运行这个脚本,我们看到我们可以用虚假的`user-agent`字符串来访问页面。 ``` recon:∼# python userAgentTest.py Browser UserAgent Test