“信息收集是指通过各种方式获取所需要的信息。信息收集是信息得以利用的第一步,也是关键的一步。信息收集工作的好坏,直接关系到整个信息管理工作的质量。”
根据《精通Metasploit渗透测试》一书所讲:
信息收集是整个渗透测试最重要阶段之一,可任意让测试者选择合适和准确的渗透测试攻击方式,缩短渗透测试的时间,通常这个阶段占据整个渗透测试时间的40%~60%。
最终能否成功渗透进入目标网络,很大程度上取决于测试者在这个阶段的工作成果。
信息收集
信息收集对于攻击方前期来说是非常重要的,因为只有我们掌握了目标网站或目标主机足够多的信息之后,我们才能更好地对其进行漏洞检测。正所谓,知己知彼百战百胜!
为什么做信息收集?
要明白的是知己知彼百战百胜,攻击方做信息收集就是一个知彼的过程。做好了这项工作更有利于我们去开展后续的工作。
其实攻击方在各个阶段做信息收集工作的意义都是为了获取攻击面。在做信息收集之前,你掌握的信息是一个攻击点,通过信息收集你掌握了多个攻击点,这些攻击点有可利用的也有不可利用的,然后通过将这些攻击点连接起来汇成一个攻击面。当我们拥有一个攻击面时就能利用自己掌握的攻击方法找到攻击面中的薄弱点进行攻击,如果我们拥有的攻击面越宽广,那么我们攻击成功的概率也就越高。
对于信息收集结果来说分为:直接可用、间接可用、未来可用三个状态。
-
直接可用:结果可以直接进行利用,比如:数据库配置文件泄露等;
-
间接可用:结果不能直接进行利用,但是可以间接的产生产生效果,比如:后台登录地址;
-
未来可用:结果当前时间不能进行可用,但是未来某个时间点可用,比如:新系统上线公告(别疑惑,如果你知道某个系统下周一上线,万一他们没有做安全测试就上线了呢!你的机会就来了);
信息收集的方式可以分为两种:主动和被动。
主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
被动信息收集:利用第三方的服务对目标进行访问了解,比例:Google搜索、Shodan搜索等
GoogleHacking的用法:可以参考大佬的文章:
https://www.cnblogs.com/csnd/p/11807798.html
Google Hacking 是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要的信息。轻量级的搜索可以搜素出一些遗留后门,不想被发现的后台入口,中量级的搜索出一些用户信息泄露,源代码泄露,未授权访问等等,重量级的则可能是mdb文件下载,CMS 未被锁定install页面,网站配置密码,php远程文件包含漏洞等重要信息。
Shodan的使用:可以参考大佬的文章:
https://blog.csdn.net/fly_hps/article/details/80610990
Shodan是一个搜素互联网链接设备的搜索引擎,不同于Google、Baidu这些搜素引擎。用户可以在Shodan上使用Shodan搜索语法查找链接到互联网的摄像头、路由器、服务器等设备信息。在渗透测试中是个非常非常不错的神器。
Shodan 通过扫描全网设备并抓取解析各个设备返回的 banner 信息,通过了解这些信息 Shodan 就能得知网络中哪一种 Web 服务器是最受欢迎的,或是网络中到底存在多少可匿名登录的 FTP 服务器。
注:banner信息:用于描述设备所运行服务的标志性文本信息。
没有一种方式是最完美的,每个方式都有自己的优势,主动方式,你能获取更多的信息,但是目标主机可能会记录你的操作记录。被动方式,你收集的信息会相对较少,但是你的行动并不会被目标主机发现。一般在一个渗透项目下,你需要有多次的信息收集,同时也要运用不同的收集方式,才能保证信息收集的完整性。
而信息收集到底要收集哪些信息呢?接下来,我就给大家整理了一下,渗透测试中常见的一些需要收集的信息。
1.域名信息的收集
当我们确定了要渗透的目标,也就是知道了其域名,接下来我们需要收集域名对应的 ip,域名的whois信息、子域名等等一系列与域名相关的信息。
判断域名对应的IP:首先,我们要判断该域名是否存在CDN的情况,我们可以去在线CDN查询网站:http://ping.chinaz.com/ 。如果查询出的ip数量大于一个的话,则说明该ip地址不是真实的服务器地址。以我的经验来看,如果是2个或者3个,并且这几个地址是同一地区的不同运营商的话,则很有可能这几个地址是服务器的出口地址,该服务器在内网中,通过不同运营商NAT映射供互联网访问,同时采用几个不同的运营商可以负载均衡和热备份。如果是多个ip地址,并且这些ip地址分布在不同地区的话,则基本上可以断定就是采用了CDN了。
域名的whois信息:whois是用来查询域名注册所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。通过whois来实现对域名信息的查询。早期的whois查询多以命令行接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令行接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议43端口。每个域名/IP的whois信息由对应的管理机构保存。
通常,我们进行whois查询是去: 站长之家whois查询 。然后查出来信息之后,可以根据查询出来的邮箱、注册人、公司、电话等进行反查。
很多网站上都可以收集到whois信息,比如说
国外的who.is:https://who.is/
站长之家:http://whois.chinaz.com/
爱站:https://whois.aizhan.com/
微步:https://x.threatbook.cn/
这些网站都可以收集whois信息,而且还很全面,我主要关注:注册商、注册人、邮件、DNS解析服务器、注册人联系电话。
有需要的还可以查企业的备案信息,主要有三种方式
天眼查:https://www.tianyancha.com/
ICP备案查询网:http://www.beianbeian.com/
国家企业信用信息公示系统:http://www.gsxt.gov.cn/index.html
注意:国外的服务器一般来说是查不到的,因为他们不需要备案。国内的基本上都可以查到。
小技巧:如果在站长之家上隐藏了信息,可在who.is上再次查看
2.子域名、DNS记录查询:
子域名信息查询
Layer子域名爆破机
subDomainBrute
利用google查询
HTTP证书查询
DNS记录查询脚本
IP转换为经纬度
利用网页获取对方经纬度信息
***基于SSL证书查询
查找一个域名证书的最简单方法是使用搜索引擎来收集计算机的CT日志,并让任何搜索引擎搜索它们。前两种比较常用。
(1)https://crt.sh/
(2)https://censys.io/
(3)https://developers.facebook.com/tools/ct/
(4)https://google.com/transparencyreport/https/ct/
一些和域名查询相关的网站:
DNS查询:https://dnsdb.io/
微步在线:https://x.threatbook.cn/
在线域名信息查询:http://toolbar.netcraft.com/site_report?url=
DNS、IP等查询:http://viewdns.info/
CDN查询IP:https://tools.ipip.net/cdn.php
SecurityTrails平台:https://securitytrails.com/domain/www.baidu.com/history/a
有许多第三方服务聚合了大量的DNS数据集,并通过它们来检索给定域名的子域名。
(1)VirusTotal:https://www.virustotal.com/#/home/search
(2)DNSdumpster:https://dnsdumpster.com/
具体也可参考大佬的文章:https://my.oschina.net/u/4255371/blog/3750815/print
3.公司敏感信息网上搜集
当确定了公司后,我们可以去互联网上查询与该公司有关的任何信息。比如,公司的邮箱格式,公司的员工姓名,以及与该公司有关的任何信息。并且,我们还可以去Github、码云等代码托管平台上查找与此有关的敏感信息,有些粗心的程序员在将代码上传至代码托管平台后,并没有对代码进行脱敏处理。导致上传的代码中有包含如数据库连接信息、邮箱密码。
Github搜索语法:https://blog.csdn.net/qq_36119192/article/details/99690742
https://blog.csdn.net/xiaoi123/article/details/85121827
https://blog.csdn.net/zyhj2010/article/details/45064903
使用 Github 进行邮件配置信息收集
site:Github.comsmtp
site:Github.comsmtp @qq.com
site:Github.comsmtp @126.com
site:Github.comsmtp @163.com
site:Github.comsmtp @sina.com.cn
site:Github.comsmtp password
site:Github.comString password smtp
……
我们也可以锁定域名搜索结合厂商域名灵活运用例如搜百度的
使用Github进行数据库信息收集
site:Github.com sapassword
site:Github.comroot password
site:Github.comUser ID=’sa’;Password
site:Github.cominurl:sql
使用Github进行 SVN 信息收集
site:Github.comsvn
site:Github.comsvn username
site:Github.comsvn password
site:Github.comsvn username password
使用Github进行综合信息收集
site:Github.compassword
site:Github.comftp ftppassword
site:Github.com 密码
site:Github.com 内部
3.1 邮箱信息
常见的在线邮箱收集网站,这些网站通过爬虫,搜索引擎等方式,获取互联网上暴露的邮箱地址。
http://www.skymem.info/
https://hunter.io/
https://email-format.com/
3.2 网盘信息收集
http://magnet.chongbuluo.com/
http://www.panduoduo.net/
http://www.zhuzhupan.com/
https://www.quzhuanpan.com/
https://www.panc.cc
4.网站指纹识别
在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。CMS又称整站系统。常见的CMS有:WordPress、Dedecms、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、SiteWeaver、AspCMS、帝国、Z-Blog等。
常见的网站指纹识别工具有:whatweb等。
在线指纹识别网站:
BugScaner:http://whatweb.bugscaner.com/look/
云悉指纹:http://www.yunsee.cn/finger.html
WhatWeb:https://whatweb.net/
4.1 Web利用指纹信息
1.Web前端框架
2.Web应用框架
3.Web开发框架
4.CMS类型
5.指定路径下指定名称的js文件或代码
6.指定路径下指定名称的css文件或代码
7.display:none中的版权信息
8.页面底部版权信息,关键字© Powered by等
9.注释掉的html代码中的内容
10.http头中X-Powered-By中的值,有的应用程序框架会在此值输出
11.cookie中的关键字
12.robots.txt文件中的关键字
13.404报错页面
14.302返回时的旗标
Web应用指纹信息:
1.潮汐指纹:http://finger.tidesec.net
2.wappalyzer插件
3.whatweb工具
4.CMS识别工具 http://whatweb.bugscaner.com/look
5.云悉http://www.yunsee.cn
5.敏感文件、敏感目录探测
通常我们所说的敏感文件、敏感目录大概有以下几种:
(1)Git
(2)hg/Mercurial
(3)svn/Subversion
(4)bzr/Bazaar
(5)Cvs
(6)WEB-INF泄露
(7)备份文件泄露、配置文件泄露
敏感文件、敏感目录挖掘一般都是靠工具、脚本来找,当然大佬手工也能找得到。
常用的工具有:
(1)御剑(真的很万能,文末附上全家桶)
(2)爬虫(AWVS、Burpsuite等)
(3)搜索引擎(Google、Github等)
(4)wwwscan
(5)BBscan(一位巨佬写的python脚本:https://github.com/lijiejie/BBScan)
(6)GSIL(也是一位巨佬写的python脚本:https://github.com/FeeiCN/GSIL)
(7)社交平台(有事没事多加一些QQ群,本人亲身经历,在一个QQ群查找到某平台后台账号密码,水了一波操作提交之后,发现被前辈提交过了。。。。。)
6.WAF探测
Waf也叫Web应用防火墙,是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。Waf的探测很多人都会忽略掉,其实当我们遇到Waf,第一想法是溜了溜了、告辞告辞(我是这样,别赞,要脸)。但当我们知道是什么Waf时,又有种去绕过它的冲动,很多大牛都喜欢挑战Waf,于是网上就出现了很多绕过Waf的教学视频。毕竟成功绕过之后的那种自豪感真的真的很舒服。
我常用的两种方式:
(1)手工(提交恶意数据,简单粗暴)
(2)Kaili工具(WAFW00F、Nmap)
Nmap探测WAF有两种脚本,
一种是http-waf-detect,命令:nmap -p80,443--script=http-waf-detect ip
一种是http-waf-fingerprint。命令:nmap -p80,443--script=http-waf-fingerprint ip
WAFW00F探测WAF 命令:wafw00f -a域名
7.旁站、C段
旁站:是和目标网站在同一台服务器上的其它的网站。
C端:是和目标服务器ip处在同一个C段的其它服务器。
旁站和C段的查询方式:
(1)利用Bing.com,语法为:http://cn.bing.com/search?q=ip:111.111.111.111
(2)站长之家:http://s.tool.chinaz.com/same
(3)利用Google,语法:site:125.125.125.*
(4)利用Nmap,语法:nmap -p80,8080 --open ip/24
(5)K8工具、御剑、北极熊扫描器等
(6)在线:http://www.webscan.cc/
8.整站分析
8.1服务器类型(Linux/Windows)
服务器信息包括服务器用的操作系统:Linux 还是 Windows 。现在企业网站服务器的操作系统有百分之九十以上用的是Linux操作系统。知道了服务器的操作系统之后,还需要知道操作系统使用的具体版本。因为很多低版本的操作系统都存在已知的漏洞。
判断是Linux还是Windows最简单就是通过ping来探测,Windows的TTL值都是一般是128,Linux则是64。所以大于100的肯定是Windows,而几十的肯定是Linux。但是,通过TTL值来判断服务器类型也不是百分之百准确的,有些windows服务器的TTL值也是几十,而且有的服务器禁止ping。
而判断目标网站服务器的具体的版本的话,可以采用 nmap 进行扫描, -O 和 -A 参数都能扫描出来
8.2网站架构探测
当我们探测目标站点网站架构时,比如说:操作系统,中间件,脚本语言,数据库,服务器,web容器等等,可以使用以下方法查询。
(1)wappalyzer插件 ——火狐插件
(2)云悉:http://www.yunsee.cn/info.html
(3)查看数据包响应头
(4)CMS指纹识别:http://whatweb.bugscaner.com/look/
CMS指纹识别又有很多方法,比如说御剑指纹识别、Webrobot工具、whatweb工具、还有在线查询的网站等等。
8.3网站容器(Apache/Nginx/Tomcat/IIS)
知道了这些信息之后,我们就需要知道网站用的web服务器是什么类型的:Apache、Nginx、Tomcat 还是 IIS。知道了web服务器是哪种类型后,我们还要探测web服务器具体的版本。比如Ngnix版本<0.83会有解析漏洞,IIS6.0会有文件名解析漏洞、IIS7.0会有畸形解析漏洞等。不同的web服务器版本,存在着不同漏洞。
8.4漏洞库信息
查询历史漏洞,获取目标之前存在的安全问题,可以利用已知漏洞直接对目标系统进行攻击。
http://www.anquan.us/
8.5脚本类型(php/jsp/asp/aspx)
我们需要知道网站用的脚本类型:php 、Jsp 、Asp 、Aspx 。
1:可以根据网站URL来判断
2:site:xxx filetype:php
3:可以根据Firefox的插件来判断
8.6数据库类型(Mysql/Oracle/Accees/Mqlserver)
我们需要知道网站用的是哪种类型的数据库:Mysql、Oracle、SqlServer 还是 Access 。虽然这几种数据库的语法大体上相同,但是还是有区别的。所以我们还是要知道目标网站用的是哪种数据库,并且数据库是哪个版本的
几种数据库的区别:
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也是开源的,sqlserver 是收费的一般也就几千,Oracle的费用则数万。其次,处理能力,access支持千以内的访问量,sql server支持几千到上万的访问,而Oracle则支持海量的访问。再次,从数据库的规模来看,access是小型数据库,,mysql 是中小型数据库,sql server是中型数据库,Oracle是大型数据库。
常见搭配:
ASP 和 ASPX:ACCESS、SQL Server
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL
8.7主机扫描(Nessus)
对目标主机进行扫描,而不仅仅是对网站进行扫描,扫描目标主机开放了哪些端口,扫描端口运行的服务,目标主机上有哪些漏洞。
主机扫描的工具也有很多,比如:Nessus
Nessus使用教程可以参考大佬文章:https://www.cnblogs.com/yxwkf/p/5348042.html
8.8端口扫描(nmap)
需要知道目标服务器开放了哪些端口,常见的如 135 、137 、138 、139 、445,这几个端口经常爆发漏洞。以下是一些服务端口的漏洞:
22——>ssh弱口令
873——>rsync 未授权访问漏洞
3306——>mysql弱口令
6379——>redis未授权访问漏洞
端口扫描工具有nmap和masscan。nmap扫描的准确性较高,但是扫描的比较慢。masscan扫描的比较快,但是准确性较低。
常见端口列表整理如下:
21,22,23,80-90,161,389,443,445,873,1099,1433,1521,1900,2082,2083,2222,2601,2604,3128,3306,3311,3312,3389,4440,4848,5432,5560,5900,5901,5902,6082,6379,7001-7010,7778,8080-8090,8649,8888,9000,9200,10000,11211,27017,28017,50000,50030,50060
***ZenMap是安全扫描工具NMap的一个官方的图形 用户界面,是一个跨平台的开源应用,不仅初学者容易使 用,同时为高级使用者提供了很多高级特性。频繁的扫描能够被存储,进行重复运行。命令行工具提供了直接与NMap的交互操作。扫描结果能够被存储便于事后 查阅。存储的扫描可以被比较以辨别其异同。
****Knocker 是一个简单易用的 TCP 端口扫描工具,采用 C 语言编写,用于分析主机上运行的服务。
8.9网站敏感目录和文件
扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏
后台目录:弱口令,万能密码,爆破
安装包:获取数据库信息,甚至是网站源码
上传目录:截断、上传图片马等
mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
安装页面:可以二次安装进而绕过
phpinfo:会把你配置的各种信息暴露出来
编辑器:fck、ke、等
iis短文件利用:条件比较苛刻 windows、apache等
1.robots.txt
2.crossdomin.xml
3.sitemap.xml
4.后台目录
5.网站安装包
6.网站上传目录
7.mysql管理页面
8.phpinfo
9.网站文本编辑器
10.测试文件
11.网站备份文件(.rar、zip、.7z、.tar.gz、.bak)
12.DS_Store 文件
13.vim编辑器备份文件(.swp)
14.WEB—INF/web.xml文件
提到了网站敏感目录我们就不得不提 robots.txt 文件了
robots.txt 文件是专门针对搜索引擎机器人robot 编写的一个纯文本文件。我们可以在这个文件中指定网站中不想被robot访问的目录。这样,我们网站的部分或全部内容就可以不被搜索引擎收录了,或者让搜索引擎只收录指定的内容。因此我们可
以利用robots.txt让Google的机器人访问不了我们网站上的重要文件,GoogleHack的威胁也就不存在了。
假如编写的robots.txt文件内容如下:
User-agent: *
Disallow: /data/
Disallow: /db/
Disallow: /admin/
Disallow: /manager/
Allow:/images/
其中“Disallow”参数后面的是禁止robot收录部分的路径,例如我们要让robot禁止收录网站目录下的“data”文件夹,只需要在Disallow参数后面加上 /data/ 即可。如果想增加其他目录,只需按此格式继续添加。文件编写完成后将其上传到网站的根目录,就可以让网站远离Google Hack了。
虽然robots文件目的是让搜索蜘蛛不爬取想要保护的页面,但是如果我们知道了robots文件的内容的话,我们就可以知道目标网站哪些文件夹不让访问,从侧面说明这些文件夹是很重要的了。
探测目标网站后台目录的工具有: wwwscan 、御剑、 dirbuster、cansina 、Dirmap、WebPathBrute、webdirscan等
参考大佬文章:
https://www.freebuf.com/sectool/200890.html
https://www.cnblogs.com/pursuitofacm/p/6701516.html
https://www.uedbox.com/post/58568/
https://blog.csdn.net/Laon_Chan/article/details/78581378
8.10旁站和C段扫描
旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵。那么,可以查看该网站所在的服务器上是否还有其他网站。如果有其他网站的话,可以先拿下其他网站的webshell,然后再提权拿到服务器的权限,最后就自然可以拿下该网站了!
对于红蓝对抗和HW,C段扫描比较有意义。对于单独网站的渗透测试,C段扫描意义不大。C段指的是同一内网段内的其他服务器,每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。
旁站和C段在线查询地址:
http://www.webscan.cc/
https://phpinfo.me/bing.php
8.11网站漏洞扫描
网站漏洞扫描就是直接对网站进行漏洞探测了。网站漏洞扫描也有很多工具。比如 AWVS、AppScan、OWASP-ZAP、nessuss等等。但是需要注意的是,使用漏扫工具直接对网站进行扫描,因为一下子流量过大,有些网站可能会崩溃。所以一般最好不要使用漏洞扫描工具对网站进行扫描。并且如果未经授权就用漏扫对网站进行扫描还是违法的!
AWVS使用教程:https://blog.csdn.net/Liuhuaijin/article/details/77850792
APPSCAN使用教程:https://www.cnblogs.com/dydxw/p/10449525.html
OWASP-ZAP使用教程:https://www.cnblogs.com/zeussbook/p/10931092.html
另外推荐:
w3af
w3af是一个从2006年年底开始的基于Python的开源项目,可用于Linux和Windows系统。w3af能够检测200多个漏洞,包括OWASP top 10中提到的。
Nikto
相信很多人对Nikto并不陌生,这是由Netsparker(专做web安全扫描器企业,总部坐标英国)赞助的开源项目,旨在发现Web服务器配置错误、插件和Web漏洞。Nikto对6500多个风险项目进行过综合测试。支持HTTP代理、SSL或NTLM身份验证等,还能确定每个目标扫描的最大执行时间。
Wfuzz
Wfuzz(Web Fuzzer)也是渗透中会用到的应用程序评估工具。它可以对任何字段的HTTP请求中的数据进行模糊处理,对Web应用程序进行审查。
Wapiti
Wapiti扫描特定的目标网页,寻找能够注入数据的脚本和表单,从而验证其中是否存在漏洞。它不是对源代码的安全检查,而是执行黑盒扫描。
信息收集,一直在谈,却一直未做好的话题。
本文始发于微信公众号(LemonSec):攻防演习之信息收集
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论