渗透测试知识点(2)

简介

侦察也就是信息收集。在收集目标信息上花的时间越多,后续阶段的成功率就越高。

侦察步骤

  1. 侦察以彻底地搜索目标的公共信息开始:有些组织把这些信息叫做开源情报(Open-Source Intellgence,OSINT)。这个步骤的好处是,通常不用发送数据包也能收集到海量数据。虽然侦查阶段所用到的用某些工具直接向目标发送信息,但要分清哪些工具会跟目标联络,哪些不会,这点很重要。该步骤有两个任务:
  • 收集与目标相关的信息,越多越好。
  • 分类收集所有信息,创建可进行攻击的IP地址或者统一资源定位符(URL)列表。

制定策略

若想顺利地进行侦察工作,必须先制定一个策略。典型的策略应包含主动和被动的侦察。

  • 主动侦察(active recooaissance)包括与目标系统直接交互。在这个过程中,目标可能会记录下我们的IP地址及活动。如果我们试图以隐身的方式进行渗透测试,就更有可能被检测出来。
  • 被动侦察(passive recooaissance)则可以利用从网上获取的海量信息。当执行被动侦察时,不会直接与目标交互,因此目标不会知道或记录我们的活动。

记录

收集信息时,应把数据信息集中保存。可能的话,最好都以电子格式保存。

HTTrack:网站复制机

首先要做的是细致浏览目标的网站。

  • HTTrack可以将网站逐页复制下来,能够创建与目标网站完全相同的脱机副本。
  • 复制的内容包括原始网站所有网页、链接、图片和代码,这些文件将储存在你的本地电脑里。
  • 利用这类网站复制工具,可以在脱机状态下尽情挖掘某个网站的资源,而不用花时间在目标公司的Web服务器上闲逛。

注:只要是属于目标的资源,任何时候与之直接交互,都有可能留下数字指纹(Digital Fingerprint)

下载安装

Linux环境下在终端输入:

apt-get install httrack

安装完成后使用如下命令运行它:

httrack

使用

克隆网站很容易被追踪,同时被视为极具攻击性,没有事先获得授权的话,不要运用此工具!

  • 在终端启动HTTrack后,该程序将询问一系列基本问题,然后开始复制目标网站。在大部分情况下,你可以一直按回车键接受默认答案。
  • 成功的复制至少需要输入项目名称和一个有效的URL才能复制。
  • 完成问题的回答后,输入“Y”开始进行克隆。
  • 因为我们创建的是网站的精确副本,必须考虑本地计算机上的可用空间,在开始复制之前,必须确保有足够的空间

不管是把整个网站复制下来还是实时浏览网站,都要关注细节。一开始就应该不断总结记录你在目标网站中找到的信息,比如物理地址、电子邮箱、商业关系(伙伴关系)、员工的姓名、与社会化媒体的联系等等。

进入被动侦察

有了目标的基本信息以后,就可以进入被动侦察阶段,被动侦察不会向目标系统发送任何数据包,在被动侦察中,我们所要用到的一个武器是互联网。首先要做的是利用各个搜索引擎对目标进行地毯式地搜索。(推荐使用google)

The Harvester:挖掘并利用邮箱地址

  • The Harvester可用于搜索Google/Bing/PGP服务器的电子邮件、主机以及子域名。还能搜索LinkedIn的用户名。
  • Kali本身已经内置了The Harvester。

使用The Harvester

在终端输入以下命令

theharvester //启动theharvester,界面会展示相关参数及用法

在终端输入:

theharvester -d qq.com -l 10 -b baidu

上述命令的解释:

  • -d 用来指定目标的域名(qq.com)
  • -l 用来限定搜索结果的数目(10)
  • -b 用来指定进行搜索的公共知识库(baidu),如果不确定来源,可以选择使用-b all,同时搜索Harvester能够使用的知识库。

以上命令将搜索关于qq.com的电子邮箱、子域名和主机。结果如下:

如果还想对email.qq.com、m.v.qq.com等子域名进行彻底侦察,则将上述命令中的qq.com替换成相应域名即可。

Whois

利用Whois,可以获取与目标相关的具体信息,包括IP地址,公司DNS主机名以及地址和电话号码等联系信息。

使用Whois

在终端输入以下命令:

whois target_domain   //target_domain为目标域名

如果要获取与百度相关的具体信息,则在命令行输入以下命令:

whois baidu.com

所得到的结果如下:

注:需要特别留意DNS服务器。即上图中的(Name Server),可用下面所介绍的Host将其转换成IP地址。

Host工具

做侦察时经常会收集到主机名,而不是IP地址。这时就需要host工具将IP地址翻译出来。
在终端中输入以下命令:

host target_domain

如果我们想把之前发现的baidu.com翻译为IP地址,可以在终端输入以下命令:

host baidu.com

也可以反过来将IP地址翻译为主机名:

host IP_Address

可以使用以下命令查看Host帮助文档:

man host

从DNS中提取信息

  • DNS(Domain Name Server,域名系统):域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与IP 地址的相互转换,以及控制因特网的电子邮件的发送。(源于百度百科)
  • DNS是本地网络和互联网的核心组件。它的一个用途就是负责将域名翻译成IP地址。对于人类而言google.comhttp://74.125.95.105好记,对于计算机则相反。DNS就在两者中充当翻译。
  • DNS想要工作,必须首先掌握网络中每一台电脑的IP地址和对应域名。
  • DNS服务器上包含了它所知道的所有设备的IP地址及其对应的域名的记录信息,许多网络部署了多台DNS服务器,以保证冗余或负载平衡。因此,多台DNS服务器之间需要进行信息共享。这个“共享”过程正是通过区域传输(zone transfer)实现的,区域传输通常也叫AXFR,在这个过程中,一台DNS服务器将其所有域名与IP映射发送到另一台DNS服务器。这一过程允许多台DNS服务器保持信息同步。即使我们无法进行区域传输,仍然有必要考察一下被授权范围内的DNS服务器

NS Lookup

NS Looup是检查DNS的首选工具,这个工具能查询到DNS服务器,并可能获得DNS服务器知道的各种主机的记录。Kali中已经内置了NS Lookup。
NS Lookup可以在交互的模式下运行,也就是说,先启动这个程序,然后再输入特定参数使其运行的特点。所以在终端输入如下命令就可运行NS Lookup

nslookup

运行NS Lookup之后,我们输入以下命令:

server 8.8.8.8 //输入想查询的DNS服务器的IP地址

接着指明所要查询的记录类型。如果只想要查找一般性信息,可以使用关键字any,指定类型为任何类型:

set type=any  //一定要注意空格,否则会出错

如果你想查看DNS服务器的某些特殊信息,比如目标公司处理电子邮件的邮件服务器的IP地址(具体使用方法可以使用man nslookup命令查询),就可以输入:

set type=mx

假如你想知道百度处理邮件时用的邮件服务器,前面我们通过whois已经发现了百度的DNS服务器,现对其中一个进行操作:

其中最后显示的五项都为百度的邮件服务器。

筛选信息寻找可攻击的目标

整理信息时,建议创建一个简易的列表,用来集中记录收集到的IP地址。对于电子邮件地址、主机名称和URL地址等,还应该分别进行维护。仔细整理过手机来的侦察信息并把数据转换为可攻击的目标之后,我们就应该拥有一个IP列表,其中的IP地址就算不属于目标,至少也是相关的。
侦察阶段的最后一个是步骤是检查你所创建的IP列表,确认IP列表里的IP地址都在授权范围内。

Shodan

搜集信息的网站博主推荐Shodan、ZoomEye、FOFA。下面对Shodan进行详细介绍:

简介

  • Shodan是一个Internet连接设备的搜索引擎。Shodan搜集所有直接连接到Internet上的设备的信息,如果设备直接连接到Internet,则Shodan会查询该设备以获取各种公开可用的信息。
  • Shodan的不部分数据来自banner,banner是有关设备上运行的软件的元数据。

搜索查询基础

设备运行服务,这些服务就是Shodan所收集的信息。网站托管在运行Web服务的设备上,Shodan将通过与该Web服务对话来收集信息。每个服务的信息都存储在一个名为banner的对象中。banner是Shodan搜集的基本数据单位,其中也包含你想要搜索的信息,一个简单的banner如下所示:

{
    "data": "Moxa Nport Device
            Status: Authentication disabled
            Name: NP5232I_4728
            MAC: 00:90:e8:47:10:2d",
    "ip_str": "46.252.132.235",
    "port": 4800,
    "org": "Starhub Mobile",
    "location": {
        "country_code": "SG"
    }
}

上述banner有五个属性,每个属性都代表不同的含义:

  • data 服务本身的主要响应
  • ip_str 设备的IP地址
  • port 服务的端口号
  • org 拥有这个IP空间的组织
  • location 设备所在的位置

Shodan默认只搜索data属性,data属性的内容因服务类型而不同,比如,下面是一个典型的HTTP banner:

HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Sat, 03 Oct 2015 06:09:24 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 6466
Connection: keep-alive

上述信息表示设备运行在版本号为1.1.19的配置Web服务软件上。

下面是西门子S7工厂控制协议的banner:

Copyright: Original Siemens Equipment
PLC name: S7_Turbine
Module type: CPU 313C
Unknown (129): Boot Loader           A
Module: 6ES7 313-5BG04-0AB0  v.0.3
Basic Firmware: v.3.3.8
Module name: CPU 313C
Serial number of module: S Q-D9U083642013
Plant identification: 
Basic Hardware: 6ES7 313-5BG04-0AB0  v.0.3

上述西门子S7协议提供了一个固件的信息。

注:在利用Shodan进行搜索时,你必须先确定要搜索的设备类型,因为不同类型的banner之间的差别很大

搜索语法

以下述Moxa设备的banner为例:

{
    "data": "Moxa Nport Device
            Status: Authentication disabled
            Name: NP5232I_4728
            MAC: 00:90:e8:47:10:2d",
    "ip_str": "46.252.132.235",
    "port": 4800,
    "org": "Starhub Mobile",
    "location": {
        "country_code": "SG"
    }
}

如果你想知道更多关于这个Moxa Nport设备的信息,一个简单的查询可以为:

Moxa Nport

但是,如果你想搜索属于Starhub Mobile组织的所有设备,输入Starhub Mobile不会返回预期的结果,这是因为Shodan默认只搜索data属性的内容。

搜索过滤器

搜索过滤器是你告诉Shodan具体想要搜索什么信息的关键字,过滤器的组成如下:

filtername:value   //过滤器名与值之间没有空格

如果你想搜索在新加坡的所有设备可以使用以下查询:

country:SG   //country只接收两个字母的国家代码

如果你想搜索在Starhub Mobile的所有设备可以使用以下查询:

org:"Starhub Mobile"  //如果查询的值之间有空格要使用引号将其包起来

过滤器也可以用来缩小查询范围,如,下面的查询将显示所有属于Starhub Mobile组织并且位于新加坡(城市)的所有设备:

org:"Starhub Mobile" city:Singapore

网站导航

Shodan网站有三种类型的服务:

  1. Shodan(https://www.shodan.io)
  2. Shodan Maps(https://maps.shodan.io)
  3. Shodan Images(https://images.shodan.io)
    上述网站都访问相同的Shodan数据但是却能达到不同的目的。
Main Shodan Website

访问Shodan收集到的数据的最主要接口,是访问https://www.shodan.io ,搜索默认会查询过去30天内的结果
除了搜索,该网站该提供以下功能

  1. 下载数据
    搜索完成后,可以通过菜单栏的Download Results导出搜索得到的数据(如下图)

    并且可以导出为不同的文件格式
  • JSON文件包含Shodan收集到的整个banner和所有元数据,这是首选的导出文件格式,因为它包含了所有有用信息,并且JSON文件与Shodan命令行客户端兼容,这意味着你可以从Shodan下载数据并利用终端进行进一步加工。
  • 在你只关心banner基本信息并且需要快速下载这些信息并导出为外部文件(如Excel)时,将数据导出为CSV文件最合适。
  • XML文件是被弃用的导出文件格式,除非你有软件必须依赖于XML文件的数据,否则不要使用它
    下载数据需要消耗export credits(需要进行购买)。
  1. 生成报告
    网站允许你根据查询的结果生成报告,报告通过图表的形式向你展示结果的分布情况。该功能是免费的,可以通过菜单Download Results旁边的Create Report来实现。报告是根据目前的数据生成的,报告一旦生成就不会改变。

  2. 可以在社区(Explore)与其他人交流分享在Shodan获得的经验与方法。(注意不要分享违法敏感信息)

注:Shodan CLI能将shodan JSON数据文件转换为Excel电子表格

Shodan Maps
  • Shodan Maps以图形化的形式呈现搜索结果,它一次呈现1000条结果。
  • 在上面介绍过的过滤器在此模块仍然适用

注:可在kali的metasploit中直接使用shodan


   转载规则


《渗透测试知识点(2)》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录