简介
侦察也就是信息收集。在收集目标信息上花的时间越多,后续阶段的成功率就越高。
侦察步骤
- 侦察以彻底地搜索目标的公共信息开始:有些组织把这些信息叫做开源情报(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.com比http://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网站有三种类型的服务:
- Shodan(https://www.shodan.io)
- Shodan Maps(https://maps.shodan.io)
- Shodan Images(https://images.shodan.io)
上述网站都访问相同的Shodan数据但是却能达到不同的目的。
Main Shodan Website
访问Shodan收集到的数据的最主要接口,是访问https://www.shodan.io ,搜索默认会查询过去30天内的结果
除了搜索,该网站该提供以下功能
- 下载数据
搜索完成后,可以通过菜单栏的Download Results导出搜索得到的数据(如下图)
并且可以导出为不同的文件格式
- JSON文件包含Shodan收集到的整个banner和所有元数据,这是首选的导出文件格式,因为它包含了所有有用信息,并且JSON文件与Shodan命令行客户端兼容,这意味着你可以从Shodan下载数据并利用终端进行进一步加工。
- 在你只关心banner基本信息并且需要快速下载这些信息并导出为外部文件(如Excel)时,将数据导出为CSV文件最合适。
- XML文件是被弃用的导出文件格式,除非你有软件必须依赖于XML文件的数据,否则不要使用它
下载数据需要消耗export credits(需要进行购买)。
生成报告
网站允许你根据查询的结果生成报告,报告通过图表的形式向你展示结果的分布情况。该功能是免费的,可以通过菜单Download Results旁边的Create Report来实现。报告是根据目前的数据生成的,报告一旦生成就不会改变。可以在社区(Explore)与其他人交流分享在Shodan获得的经验与方法。(注意不要分享违法敏感信息)
注:Shodan CLI能将shodan JSON数据文件转换为Excel电子表格
Shodan Maps
- Shodan Maps以图形化的形式呈现搜索结果,它一次呈现1000条结果。
- 在上面介绍过的过滤器在此模块仍然适用
注:可在kali的metasploit中直接使用shodan