渗透测试的信息收集阶段:渗透测试之信息收集
渗透测试的信息收集阶段:渗透测试之信息收集这两种方式都没有完美的,都有优点也有缺点。一般在一个渗透测试项目过程中,我们需要进行很多次的信息收集,同时也要运用不同的收集方式,才能保证信息收集的完整性。信息收集的方式可以分为两种:主动和被动。是指黑客为了更加有效地实施渗透攻击而在攻击前火攻击过程中对目标的所有探测活动。包括端口信息,DNS信息,员工邮箱等等看似并不起眼的一些信息都算是信息收集。这些微乎其微的信息,对于渗透测试而言就关乎到成功与否了。
搜索公众号:暗网黑客可领全套网络安全渗透教程、配套攻防靶场 前言渗透测试的灵魂是信息收集。
在进行一个渗透测试项目的过程中,对一个目标站点进行的第一步工作就是信息收集,通过各种渠道和手段尽可能收集到多的关于这个站点的信息,帮助我们更多的去找到渗透点。
因为只有我们掌握了目标网站或目标主机足够多的信息之后,我们才能更好地对其进行漏洞检测。正所谓,知己知彼百战百胜!
信息收集的概念信息搜集也称踩点。
是指黑客为了更加有效地实施渗透攻击而在攻击前火攻击过程中对目标的所有探测活动。
包括端口信息,DNS信息,员工邮箱等等看似并不起眼的一些信息都算是信息收集。
这些微乎其微的信息,对于渗透测试而言就关乎到成功与否了。
信息收集的分类信息收集的方式可以分为两种:主动和被动。
- 主动信息收集:与目标主机进行直接交互,从而拿到我们的目标信息。可以获取到的信息比较多,但是会被记录自己的操作信息,容易被发现。通过直接访问,扫描网站,这种流量将流经网站。
- 被动信息收集:不与目标主机进行直接交互,通过搜索引擎或者社工等方式间接的获取目标主机的信息。可以获取到的信息比较少,但是不容易被发现。比如:Google搜索等。
这两种方式都没有完美的,都有优点也有缺点。一般在一个渗透测试项目过程中,我们需要进行很多次的信息收集,同时也要运用不同的收集方式,才能保证信息收集的完整性。
信息收集的方法whois信息whois(读作“who is”)是用来查询域名的IP以及所有者等信息的传输协议。
whois信息可以获取关键注册人的信息,包括注册商、所有者、所有者联系邮箱、联系电话、域名注册时间、域名到期时间、域名状态、DNS服务器等。
可以对其进行邮箱反查域名、爆破邮箱、社工、域名劫持、寻找旁站等等。
- 常用的工具有:
https://www.whois.com/whois/whois.net
站长之家查询(http://whois.chinaz.com/)
阿里云域名信息查询(https://whois.aliyun.com/)
爱站(https://baidurank.aizhan.com/)
全球WHOIS查询(https://www.whois365.com/cn/)
Kali whois命令 ~# whois baidu.com
python-whois模块查询域名信息
通常我们进行whois查询是去站长之家查询,查出来信息之后,可以根据查询出来的邮箱,注册人,电话等信息进行whois反查。
子域名收集可以发现更多渗透测试范围内的域名/子域名,以增加漏洞发现机率;探测到更多隐藏或遗忘的应用服务,这些应用往往可导致一些严重漏洞。
子域名收集是为一个或多个域查找子域的过程,他是收集阶段的重要组成部分。
为什么要进行子域名收集
1.子域名探测可以帮助我们发现渗透测试中更多的服务,他们在安全评估范围内,从而也就增加了发现漏洞的机会。
2.查找一些用户上较少,被人遗忘的子域名,其上运行的应用程序可能会使我们发现关键漏洞。
3.通常,同一组织的不同域名/应用程序中存在相同的漏洞。
子域名收集的重要性
子域名是某个主域的二级域名或者多级域名,在防御措施严密的情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域,然后无限靠近主域。
例如:
www.xxxxx.com 主域不存在漏洞,并且防护措施严密。
而二级域名 edu.xxxxx.com存在漏洞,并且防护措施松散。
1、子域名挖掘工具如:Layer子域名挖掘机、Maltego CE、wydomain、subDomainsBrute、dnsmaper。
2、搜索引擎挖掘 如:在Google中输入 site:sina.com
3、第三方网站查询:http://tool.chinaz.com/subdomain https://dnsdumpster.com/
4、证书透明度公开日志枚举:https://crt.sh/ http://censys.io/
5、其他途径:https://phpinfo.me/domain http://dns.aizhan.com
端口信息收集端口作为服务器和客户端交互的接口,起着非常重要的作用。
一些常见的端口的标识出服务器开启了什么样的功能,常见的135、137、138 、139 、445,这几个端口经常爆发漏洞。以下是一些服务端口的漏洞。
- 22————>ssh弱口令
- 873————>rsync 未授权访问漏洞
- 3306————>MySQL弱口令
- 6379————>redis未授权访问漏洞
所以,端口信息收集在渗透测试中是非常重要的。
扫描端口可以使用Nmap,masscan进行扫描探测,尽可能多的搜集开启的端口好已经对应的服务版本,得到确切的服务版本后可以搜索有没有对应版本的漏洞。
nmap扫描的准确性较高,但是扫描的比较慢。
masscan扫描的比较快,但是准确性较低。
Nmap -O 192.168.1.1
(http://www.atool9.com/port_scanner.php)
旁站信息:旁站是和目标网站在同一台服务器上的其它的网站,主站无法获取权限的情况下,旁站便可以作为攻击入口,然后再想办法跨到真正目标的站点目录中。
C段:C段是和目标机器ip处在同一个C段的其他机器;
通过目标所在C段的其他任一台机器,想办法跨到我们的目标机器上。对于红蓝对抗和护网,C段扫描比较有意义。
但是对于单独网站的渗透测试,C段扫描意义则不大。
每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。
- 旁站和C段在线查询地址:
(http://s.tool.chinaz.com/same)
(https://phpinfo.me/bing.php)
(http://www.webscan.cc)
由于发布网站时,服务器配置问题,导致目录浏览器能打开,从而引起信息泄露,造成安全隐患。
在信息收集过程中,需要收集的敏感目录/文件包括:
- 后台目录:弱口令,万能密码,爆破
- 安装包:获取数据库信息,甚至是网站源码
- 上传目录:截断、上传图片马等
- mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
- 安装页面 :可以二次安装进而绕过
- phpinfo:会把你配置的各种信息暴露出来
- 网站文本编辑器:fck、ke等
- iis短文件利用:条件比较苛刻 windows、apache等
- 测试文件
- 网站备份文件
提到了网站敏感目录我们就要注意robots.txt文件了。
robots.txt 文件是专门针对搜索引擎机器人robot 编写的一个纯文本文件。我们可以在这个文件中指定网站中不想被robot访问的目录。
这样,我们网站的部分或全部内容就可以不被搜索引擎收录了,或者让搜索引擎只收录指定的内容。
因此我们可以利用robots.txt让Google的机器人访问不了我们网站上的重要文件,GoogleHack的威胁也就不存在了。
假如robots.txt文件内容如下:
···
User-agent:*
Disallow: /data/
Disallow: /db/
Disallow: /admin/
Disallow: /manager/
···
其中“Disallow”参数后面的是禁止robot收录部分的路径,
例如我们要让robot禁止收录网站目录下的“data”文件夹,
只需要在Disallow参数后面加上 /data/ 即可。
如果想增加其他目录,只需按此格式继续添加。
文件编写完成后将其上传到网站的根目录,就可以让网站远离Google Hack了。
虽然robots文件目的是让搜索蜘蛛不想爬取想要保护的页面,
但是如果我们知道了robots文件的内容的话,我们就可以知道目标网站那些文件夹不让访问,从侧面来说这些文件夹就是非常重要的了。
探测目标网站后台目录的工具:
- wwwscan
- 御剑
- dirbuster
- cansina等
···
在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。
CMS又称整站系统。
常见的CMS有:WordPress、Dedecms、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、SiteWeaver、AspCMS、帝国、Z-Blog等。
在线指纹识别网站:
- 潮汐指纹:http://finger.tidesec.net
- CMS识别工具BugScaner:http://whatweb.bugscaner.com/look/
- 云悉指纹:http://www.yunsee.cn/finger.html
- WhatWeb工具:https://whatweb.net/
- wappalyzer插件
利用google语法我们去寻找敏感信息
搜索文件
- site:target filetype:doc/filetype:docx
- site: target.com filetype:php
- site: target.com filetype:aspx
寻找参数传参
- site: target.com inurl:.php?id=
- site: target.com inurl:.php?user=
- site: target.com inurl:.php?book=
寻找登录点:
- site: target.com inurl:login.php
- site: target.com intext: “login”
- site: target.com inurl:portal.php
- site: target.com inurl:register.php
寻找目录:
- site: target.com intext: “index of /”
寻找重要的东西:
- site: target.com filetype:txt
- site: target.com inurl:.php.txt
- site: target.com ext:txt
Github不仅能托管代码,还能对代码进行搜索,当上传并公开代码时,一时大意,会让某些敏感的配置信息文件等暴露于众。
Github主要收集:
- 泄露源码=
- 泄露数据库、邮箱、ftp、3389等账号
- 泄露的人员信息
- 泄露其他敏感信息
github直接搜索: - “target.com” “dev”
- “dev.target.com”
- “target.com” API_key
- “target.com” password
- “api.target.com”
也可以使用goolge hack
site: “github.com” “Target” password
- 操作系统类型服务器用的操作系统有Linux/Windows。现在企业网站服务器的操作系统有百分之九十以上用的是Linux操作系统。知道了服务器的操作系统之后,还需要知道操作系统使用的具体版本。因为很多低版本的操作系统都存在已知的漏洞。判断是Linux还是Windows最简单就是通过ping来探测,Windows的TTL值都是一般是128,Linux则是64。所以大于100的肯定是Windows,而几十的肯定是Linux。但是,通过TTL值来判断服务器类型也不是百分之百准确的,有些windows服务器的TTL值也是几十,而且有的服务器禁止ping。
但是判断目标网站服务器的具体的版本的话,可以采用 nmap 进行扫描,-O 和-A 参数都能扫描出来。
- 数据库类型(Mysql/Oracle/Access/Mqlserver)
我们需要知道网站用的是那种数据库,虽然这几种数据库在语法上是大体相同的,但是还是有区别。所以我们还是要知道目标网站用的是哪种数据库,并且数据库是哪一个版本的。几种数据库的区别
1.Access 全名是Microsoft Office Access,是由微软发布的关联式数据库管理系统。
小型数据库,当数据库达到100M左右的时候性能就会下降。数据库后缀名:.mdb 一般是asp的网页文件用access数据库
2.SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),是一个比较大型的数据库。端口号为1433。数据库后缀名 .mdf
3.MySQL 是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
MySQL是最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的应用软件之一,MySQL数据库大部分是php的页面。默认端口是3306
4.Oracle又名Oracle RDBMS,或简称Oracle。
是甲骨文公司的一款关系数据库管理系统。常用于比较大的网站。默认端口是1521
首先,成本上的差距,access是不要钱的,mysql也是开源的,sql server 是收费的一般也就几千,Oracle的费用则数万。
其次,处理能力,access支持千以内的访问量,sql server支持几千到上万的访问,而Oracle则支持海量的访 问。
再次,从数据库的规模来看,access是小型数据库,,mysql 是中小型数据库,sql server是中型数据库,Oracle是大型数据库。
- 网站容器(Apache/Nginx/Tomcat/IIS)
知道了这些信息之后,我们就需要知道网站用的web服务器是什么类型的:Apache、Nginx、Tomcat 还是 IIS。
知道了web服务器是哪种类型后,我们还要探测web服务器具体的版本。
比如Ngnix版本<0.83会有解析漏洞 ,IIS6.0会有文件名解析漏洞、IIS7.0会有畸形解析漏洞等。不同的web服务器版本,存在着不同漏洞。
- 网站开发语言(php/jsp/asp/aspx)怎样判断网站的脚本类型
1.可以根据网站URL来判断
2.site:xxx filetype:php
3.可以根据火狐浏览器的插件来判断
- 用小字典递归地发现三级域名,四级域名、五级域名等域名
- 字典比较丰富,小字典就包括1万5千条,大字典多达6万3千条
- 默认使用114DNS、百度DNS、阿里DNS这几个快速又可靠的Public DNS查询,可修改配置文件添加DNS服务器(在dict里面可以进行添加)
- 自动去重泛解析的域名,当前规则:超过10个域名指向同一IP,则此后发现的其他指向该IP的域名将被丢弃
1、首先你的电脑需要有一个python环境,没有的可以按照下面的链接进行下载,这里推荐使用python2.7.10
python2.7.10下载地址 https://www.python.org/downloads/release/python-2710/
或者下载之家也可以下载python2.7.10 按照上面的提示步骤依次安装就可以。
安装好之后要进行添加环境变量。
2、下载subDomainsBrute到python根目录下,下载地址如下:
subDomainsBrute下载地址:https://github.com/lijiejie/subDomainsBrute
3、查看python27文件夹下有无Script文件夹
里面是些easy_install相关的内容,直接安装setuptools即可自动生成Script文件夹。
下载 ez_setup.py ,在cmd中运行。
进入命令行,然后把目录切换到python的安装目录下的Script文件夹下,运行python ez_setup.py 生成scripts文件夹。
4、在Script文件所在的路径下面输入cmd,在调用出来的命令行里安装所需要的库,直接使用pip安装就可以。命令为pip install dnspython gevent
subDomainsBrutez使用
Usage: subDomainsBrute.py [options] target.com
Options:
--version show program's version number and exit
-h --help show this help message and exit
-f FILE File contains new line delimited subs default is
subnames.txt.
--full Full scan NAMES FILE subnames_full.txt will be used
to brute
-i --ignore-intranet
Ignore domains pointed to private IPs
-t THREADS --threads=THREADS
Num of scan threads 200 by default
-p PROCESS --process=PROCESS
Num of scan Process 6 by default
-o OUTPUT --output=OUTPUT
Output file name. default is {target}.txt
Layer子域名挖掘机
Layer子域名挖掘机是一款域名查询工具,可提供网站子域名查询服务;
拥有简洁的界面、简单的操作模式,支持服务接口、暴力搜索、同服挖掘三种模式,支持打开网站、复制域名、复制IP、复制CDN、导出域名、导出IP、导出域名 IP、导出域名 IP WEB服务器以及导出存活网站!
使用说明
- 如果要使用自定义字典,需要把字典文件命名为dic,放到跟程序同目录下,程序会自动加载字典。
如果没有自定义字典,程序会自动使用内置字典,内置字典总共两万多条数据,内容包括了常用子域名,以及3000 常用单词和1-3位所有字母。 - 如果想要爆破二级以下域名,可以直接填入要爆破的子域名,程序会自动拼接下一级子域。比如填入hi.baidu.com,程序就会爆破 .hi.baidu.com
列举百度下的子域名
网站后台扫描工具御剑的使用御剑是一款好用的网站后台扫描工具,图形化页面,使用起来简单上手。
我们使用御剑扫描器,主要是扫描网站敏感目录,包括网站后台等。
其扫描原理也是爆破,即通过敏感目录的字典去匹配。
御剑后台扫描之前,爬虫会访问robots txt文件。
工具简介
- 扫描线程自定义:用户可根据自身电脑的配置来设置调节扫描线程
- 集合DIR扫描 ASP ASPX PHP JSP MDB数据库 包含所有网站脚本路径扫描
- 默认探测200 (也就是扫描的网站真实存在的路径文件)
御剑安装及使用
1.下载并解压并且双击打开软件。
2.打开以后在域名输入框中输入要扫描的后台地址。
3.在下面的选项中可以选择扫描线程以及扫描超时间,还有文件类型等。
4.全部选择好以后就可以点击开始扫描了。
5.等待扫描好以后在下面会出现扫描结果。
御剑的使用非常简单,进行简单的配置之后即可进行扫描,但是缺点就是御剑不能够导出扫描报告。
当然,御剑也有很多版本,功能也稍微有些许区别,有指纹识别,后台扫描,获取真实IP 检测注入等。
dirbuster的使用
工具简介
- 扫描Web目录,可以发现潜在的渗透目标。不同于网站爬虫,使用字典方式可以发现网站没有关联的网页。Kali Linux提供一款基于字典的Web目录扫描工具DIRB。该工具根据用户提供的字典,对目标网站目录进行暴力猜测。它会尝试以递归方式进行爆破,以发现更多的路径。同时,该工具支持代理、HTTP认证扫描限制访问的网站。该工具还提供两个命令,帮助用户从网页生成字典,或者生成定制字典。
- DirBuster是一个多线程的基于Java的应用程序设计蛮力Web /应用服务器上的目录和文件名 。
dirbuster的安装及使用
1.下载DirBuster最新版本,解压后windows双击DirBuster-0.12.jar,或者直接在kali中打开自带的DirBuster(命令:root@kali:~# dirbuster)。
2.启动DirBuser后,主界面如下:
注意:如果你扫描的目标是http://www.xxx.com/admin/,
那么就要在 URL to fuzz里填写”/admin/{dir}”
意思是在”{dir}“的前后可以随意拼接你想要的目录或者后缀,
例如输入”: /admin/{dir}.php”就表示扫描admin目录下的所有php文件。
点击下方“了解更多”