一.搜索引擎
由于传统的信息收集方法如端口扫描、目录扫描等会在服务器上留下大量的日志痕迹,在某些情况下还可能被安全设备拦截,因此能否在不惊动目标服务器的情况下,对目标网站收集尽可能多的信息呢?GoogleHacking,也叫Google Dorking,是一种利用谷歌搜索和其他搜索引擎来发现网站配置和计算机代码中的安全漏洞的计算机黑客技术。
搜索引擎可以完成端口扫描,目录扫描,C段,旁站等信息收集,所以将搜索引擎放在第一个来讲
1.Google hacking
site:限制搜索范围为某一网站,例如:site:baidu.com "admin" 可以搜索 baidu.com 网站上包含关键词“admin”的页面。
inurl:限制关键字出现在网址的某个部分,例如:inurl:php?id= 可以搜索网
址中包含 php?id=的页面。
intitle:限制关键字出现在页面标题中,例如:intitle:index of / 定位网
站目录索引页面。
filetype:限制搜索特定文件类型,例如:filetype:pdf
site:example.com 可以搜索 example.com 网站上的 pdf 文件。
cache:查看 Google 对某个页面的快照,例如:cache:example.com 查看
Google 对 example.com 的快照。
案例语句
1.查找暴露在互联网的后台资产 intile:后台登录 inurl:login|admin|manage|member|admin_login|login_admin|s ystem|login|user|main|cms 2.搜索xxx.com的子域名信息 site:xiusafe.com 3.搜索互联网上的登录入口 intitle:登录 site:baidu.com intitle:登录 site:baidu.com -zhidao.baidu.com -baike. baidu.com -jingyan.baidu.com 4.查找互联网敏感文件 filetype:mdb|doc|xlsx|pdf 密码 filetype:xls 5.sql注入 inurl:php?id= site:tw
更多资料
https://ght.se7ensec.cn/#
https://github.com/K0rz3n/GoogleHacking-Page
2.物联网搜索引擎
1).Shodan
Shodan是一个知名的物联网搜索引擎,我们可以利用Shodan搜索和互联网关联的服务器、摄像头、打印机、路由器等设备。下表展示了Shodan关键词及说明。
实用案例演示
1.查找位于中国(.cn)的Nginx服务器: nginx country:cn 2.搜索位于南京的开放3389端口的服务器: port:3389 city:Nanjing 3.搜索位于中国南京且暴露在互联网上的海康威视摄像头: Hikvision-Webs country:cn city:Nanjing 4.查看全球的Cisco思科设备情况: isp:cisco 5.查看全球的华为设备情况: isp:huawei
2).ZoomEye
ye中文名为“钟馗之眼”,它定位于网络空间搜索引擎,能对暴露在公网的主机设备及网站组件进行全方位搜索(只要有IP地址即可搜索到),发现其中的漏洞。ZoomEye和Shodan的区别是,ZoomEye目前侧重于Web层面的资产发现,而Shodan则侧重于主机层面的资产发现。
关键词
组件名称: app:组件名 ver:组件版本 端口: port:开放端口 操作系统: os:操作系统 服务: service:分析结果中的“服务名”字段 主机名: hostname:分析结果中的“主机名”字段 位置: country:国家或者地区代码 city:城市名称 IP地址: ip:搜索一个指定的IP地址 网站: site:网站域名 标题: title:页面标题 关键词: keywords:<meta name="Keywords"> 定义的页面关键词 描述: desc:<meta name="description"> 定义的页面说明 HTTP头: headers:HTTP 请求中的 Headers
3).FOFA
FOFA是白帽汇公司推出的一款网络空间资产搜索引擎。它能够帮助企业客户迅速进行网络资产匹配、加快后续工作进程。例如,进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等操作。
基本查询语法 我们直接输入查询语句,从标题、HTML内容、HTTP头信息、URL字段中进行搜索:
title="abc" 从标题中搜索abc header="abc" 从HTTP头中搜索abc body="abc" 从HTML正文中搜索abc domain="qq.com" 搜索根域名带有qq.com的网站 host=".gov.cn" 从URL中搜索.gov.cn port="443" 查找对应443端口的资产 ip="1.1.1.1" 搜索IP地址的信息 protocol="https" 搜索制定 协议类型(在开启端口扫描的情况下有效) city="Beijing" 搜索指定城市的资产 region="Zhejiang" 搜索指定行政区的资产 country="CN" 搜索指定国家(编码)的资产 cert="google" 搜索证书(https或者imaps等)中带有google的资产banner=users && protocol=ftp 搜索FTP协议中带有users文本的资产type=service 搜索所有协议资产,支持subdomain和service两种 os=windows 搜索Windows资产 server=="Microsoft-IIS/7.5" 搜索IIS 7.5服务器 app="海康威视-视频监控" 搜索海康威视设备 after="2017" && before="2017-10-01" 时间范围段搜索org="Amazon.com, Inc." 搜索指定org(组织)的资产 base_protocol="udp" 搜索指定udp协议的资
二.域名信息收集
1.whois查询
域名的 whois 信息可以提供以下作用: 确认域名的所有者、注册商、注册日期和到期日期等基本信息。 了解域名的注册历史,对于判断一个域名的可信度和信誉程度有很大帮助。 判断一个域名是否正在被使用及其使用方式,是否涉及到滥用、欺诈等问题。 可以通过 whois 信息获得自己的域名信息,及时检查域名是否即将到期,避免域名失效带来的影响
站长之家
https://whois.chinaz.com/
viewdns
https://viewdns.info/
2.备案信息查询
只要使用国内的服务器搭建网站都必须进行网站备案才可以进行正常访问,这是我国的一项管理要求,主要是为了防止不法分子在网上从事非法的宣传或经营活动,打击不良互联网信息的传播。所以针对搭建在国内的网站也可以进行备案信息查询。
备案信息 资产收集
● 站长之家 https://icp.chinaz.com
● 天眼查 https://www.tianyancha.com/
● 企查查
● 爱企查
● ICP 备案查询网 http://www.beianbeian.com/
● 爱站备案查询 https://icp.aizhan.com/
● 域名助手备案信息查询 http://cha.fute.com/inde
3.子域名信息收集
一般在渗透测试前会先对目标的子域名资产进行收集,收集可以利用互联网上的第三方接口,也可以直接使用字典进行子域名“爆破”。
(1) 在线字典爆破工具
目前互联网上存在一些在线子域名爆破工具,使用起来也比较方便,唯一的缺点就是字典和爆破速度不够强大,用户不能自定义字典,不过优点是具有匿名性,可以防止被溯源。
(2)本地字典爆破工具
除了可以使用一些在线爆破工具,还可以使用一些本地的子域名爆破工具,部分工具可以灵活地加载本地的字典来进行爆破。比较常用的本地子域名爆破工具有:SubDomainsBrute、LayerDomainFinder子域名挖掘机
(3)API子域名查询接口
除了手动使用这些API接口来进行查询,也可以使用集成了API的工具来进行一键查询,比较有名的项目就是 OneForAll,这是一款功能强大的子域名收集工具,核心代码利用的是各种第三方的接口,所以在查询数量上比较有优势。
三. 服务器信息收集
随着网络的发展,很多网站都开始使用CDN,CDN分发网络将源站的内容发布到接近用户的网络“边缘”,用户可以就近获取所需数据,不仅降低了网络的拥塞状况、提高了请求的响应速度,也能够减少源站的负载压力。在加速网站访问的同时也让渗透测试人员难以获取真实的服务器IP地址,所以CDN的判断和绕过是服务器信息收集的第一步,只有绕过了CDN才可以拿到服务器的真实IP信息。
域名—>IP
1.CDN判断方法
-
ping命令 直接使用 ping 命令有时候也可以查询到目标网站是否使用了CDN。
有时,可以直接看到waf、cdn等字样的域名,这就表示目标服务器使用了CDN。不过有很多厂商可能只让www主站域名使用CDN,空域名或者子域名并没有使用CDN缓存,所以这种情况下直接使用ping xxx.com 就有可能得到真实的IP地址。
2.nslookup查询
不仅可以使用 ping 命令来对目标网站进行CDN判断,也可以使用nslookup命令查询域名的解析情况,如果一个域名解析结果为多个IP地址,那么多半使用了CDN 。
2.绕过CDN找到真实IP的8种方法
正常情况下,通过cmd命令可以快速找到域名对应IP,最常见的命令如ping、nslookup。但很多站点出于用户体验和安全的角度,使用CDN加速,将域名解析到CDN,这时候就需要绕过CDN来查找真实IP。
一、DNS历史解析记录
查询域名的历史解析记录,可能会找到网站使用CDN前的解析记录,从而获取真实ip,相关查询的网站有:
iphistory:https://viewdns.info/iphistory/ DNS查询:(https://dnsdb.io/zh-cn/) 微步在线:(https://x.threatbook.cn/) 域名查询:(https://site.ip138.com/) DNS历史查询:(https://securitytrails.com/) Netcraft:https://sitereport.netcraft.com/?url=github.com
IP History 查询记录:
二、查找子域名
很多时候,一些重要的站点会做CDN,而一些子域名站点并没有加入CDN,而且跟主站在同一个C段内,这时候,就可以通过查找子域名来查找网站的真实IP。
常用的子域名查找方法和工具:
1、搜索引擎查询:如Google、baidu、Bing等传统搜索引擎,site:http://baidu.cominurl:http://baidu.com,搜target.com|公司名字。
2、一些在线查询工具,如:
http://tool.chinaz.com/subdomain/ http://i.links.cn/subdomain/ http://subdomain.chaxun.la/ http://searchdns.netcraft.com/ https://www.virustotal.com/
3、 子域名暴力猜解
子域名暴力工具: Layer子域名挖掘机 wydomain:https://github.com/ring04h/wydomain subDomainsBrute:https://github.com/lijiejie/ Sublist3r:https://github.com/aboul3la/Sublist3r
三、网站邮件头信息
比如说,邮箱注册,邮箱找回密码、RSS邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP。
四、网络空间安全引擎搜索
通过关键字或网站域名,就可以找出被收录的IP,很多时候获取到的就是网站的真实IP。
1、钟馗之眼:https://www.zoomeye.org 2、Shodan:https://www.shodan.io 3、Fofa:https://fofa.so
ZoomEy搜索:
五、利用SSL证书寻找真实IP
证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中,SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。
SSL证书搜索引擎:
https://censys.io/ipv4?q=github.com
六、国外主机解析域名
大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。
国外多PING测试工具:
https://asm.ca.com/zh_cn/ping.php http://host-tracker.com/ http://www.webpagetest.org/ https://dnscheck.pingdom.com/
国外多ping网站测试:
七、扫描全网
通过Zmap、masscan等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实IP。
1、ZMap号称是最快的互联网扫描工具,能够在45分钟扫遍全网。
https://github.com/zmap/zmap
2、Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。
https://github.com/robertdavidgraham/masscan
八、配置不当导致绕过
在配置CDN的时候,需要指定域名、端口等信息,有时候小小的配置细节就容易导致CDN防护被绕过。
案例1:为了方便用户访问,我们常常将www.test.com和test.com解析到同一个站点,而CDN只配置了www.test.com,通过访问test.com,就可以绕过 CDN 了。
案例2:站点同时支持http和https访问,CDN只配置 https协议,那么这时访问http就可以轻易绕过。
3.端口信息探测
端口信息探测是指对目标服务器资产进行开放端口号的穷举扫描,以了解某台计算机的弱点,并了解其提供的计算机网络服务类型。一般在渗透测试中常使用Nmap工具对目标网站进行端口扫描,Nmap的英文全称是“Network Mapper”,中文翻译过来就是“网络映射器”。Nmap是一款开源的端口扫描神器,它可以快速地扫描大型网络,也可以扫描单个主机。
1)渗透测试中的常见端口
端口如同一个房间的门,这个房间有多少个门呢?有65536个之多,也就是说端口的取值范围是0~65535个。本地操作系统会给那些有需求的进程分配协议端口,每个协议端口均有一个正整数标识,如80、139、445等,一般在渗透测试中,我们需要关注如表3-3所示的常见端口及协议。
这些端口可能存在对应的漏洞,这样就可以通过端口入侵到目标服务器中。
2)Nmap简单扫描
-sS:进行 TCP SYN(半开放式)扫描。这是一种常用的扫描方式,通过发送 TCP SYN包,判断目标主机的端口是否开放。 -sT:进行 TCP 连接扫描。这种扫描方式也是基于 TCP,通过建立 TCP 连接,判断目标主机的端口是否开放。 -sU:进行 UDP 扫描。UDP 是一种无连接的协议,因此不能像 TCP 一样建立连接来确定目标主机的端口是否开放。这种扫描方式需要发送 UDP 数据包,通过响应的数据包 判断端口是否开放。 -O:进行操作系统信息探测。通过使用不同的特征扫描目标主机,判断其使用的操作 系统。 -p:指定端口扫描范围。可以指定端口范围、单个端口或多个离散的端口。 -A:激活“操作系统指纹识别”、“版本检测”、“脚本扫描”等高级扫描选项。 -sV:进行服务版本检测。这种扫描方式可以探测出目标主机运行的具体服务以及其版 本号。 -T:设置扫描速度。可以设置不同的速度等级,以适应不同的扫描环境。速度级别从 0 到 5,级别越高,扫描速度越快,但也越容易被防火墙拦截
从扫描结果可以看出192.168.239.135目标服务器开放着21、23、135、445、3389、49152等端口,在Nmap进行端口扫描的时候,其会把扫描到的端口信息反馈回来,我们从反馈回来的信息就可以判断目标端口情况,具体状态含义可以参考下表返回状态及说明所示
3) Zenmap使用
4)脚本使用
如果没有Nmap工具,也可以使用最原始的脚本发起Ping请求。
4.操作系统类型探测
1)使用TTL值进行系统探测
不同的操作系统默认的TTL(Time To Live)值是不同的,因此通过Ping命令返回的TTL值加上 traceroute 获得的跳转节点数就能算出目标节点设置的TTL数,从而推测出目标节点的操作系统类型。比如,我们要探测10.20.24.244的操作系统类型,具体可以参照如下步骤进行操作。操作系统类型探测如下图所示
从中可以看到,从本地到目标主机一共经过了1-1=0跳,然后尝试直接Ping这个IP地址,测试目标主机连通性如图所示
Ping 返回的TTL为64,最后加上之前的0跳,所以目标主机的最终TTL值为:64+0=64,这表明目标主机是一台Linux操作系统的主机。操作系统和TTL对应关系如表所示
2) 使用Nmap进行系统探测
Nmap不仅是一款端口扫描工具,还可以对主机的服务及版本进行识别和探测。使用-O参数即可启用操作系统类型检测。Nmap操作系统类型探测如图所示
3)搜索引擎
四.Web信息收集
1.Web指纹识别
指纹识别是指网站CMS(Content Management System)内容管理系统的探测、计算机操作系统及Web 容器的指纹识别等。应用程序一般在HTML、JS、CSS等文件中包含一些特征码,这些特征码就是所谓的指纹。当碰到其他网站也存在此特征时,就可以快速识别出该程序,所以叫作指纹识别。
1) 文件内容匹配
WordPress是全球比较流行的一个WebCMS,它是由PHP语言编写的,在WordPress搭建的网站中就可以找到WordPress相关的字样信息。WordPress指纹如图所示(F12键)。
2)第三方插件
Firefox 插件 Wappalyzer
3)在线网站
CMS 漏洞
https://github.com/s7ckTeam/Glass
https://github.com/EdgeSecurityTeam/EHole
定位版本对应已知漏洞检查
CMS 未知漏洞挖掘
显示网站使用的技术
https://whatcms.org/
https://builtwith.com/
2.敏感目录扫描
渗透测试中常常会对目标网站进行目录扫描,通过穷举字典的方法对目标进行目录探测,一些安全性脆弱的网站往往会被扫描出如管理员后台、网站备份文件、文件上传页面或者其他重要的文件信息,攻击者可以直接将这些敏感信息下载到本地来进行查看。
网站的三种部署模式 1.主域名与子域名的方式 a.com 1.a.com 2.目录 a.com a.com/admin/ 3.端口 a.com a.com:8080
所以对Web目录进行探测在渗透测试中是非常重要的一步,这有助于让我们对资产进行更深入的了解。渗透测试中对目标网站进行目录扫描的方法有很多,不过原理无外乎就是字典穷举,与其找一个好用的扫描工具,不如把重点放在如何构建自己的目录字典上。
Web目录扫描工具较多,列举下述几个
1)Dirsearch
Dirsearch是一个使用Python编写的Web目录扫描工具,其自带的字典也比较强大,字典数目有6000多个,Dirsearch扫描的效率也很高,虽然字典的数量庞大,但是扫描完一个站点往往连一分钟都不到,下图就是使用Dirsearch来扫描靶机的效果。
2)御剑
3)gobuster
3.旁站信息收集
旁站指的是目标域名IP下的其他网站信息,可以使用一些在线工具来进行旁站查询。
1)爱站IP反查域名( https://icp.aizhan.com/)
2)站长之家(https://icp.chinaz.com)
3)FOFA
ip="121.196.37.183" && type="subdomain"
4.C段信息收集
C段信息收集指的是探测目标服务器局域网段下的其他资产信息,在早期主机运营商防护不够的时候,往往拿下C段的资产就可以对C段下的其他资产进行ARP嗅探劫持。
1).FOFA
ip="121.196.37.1/24" && type="subdomain
2)工具-webfinder
五.其他信息收集
1.GitHub信息收集
我们可以使用前面学到的谷歌搜索语法来查找GitHub上面的敏感信息,如:
password @163.com site:github.com
但是这样搜索的结果并不是很全面,所以最好的方式是使用GitHub自带的搜索,在左上角输入框内填写关键词,然后切换到如图所示的GitHub信息收集页面。
常见搜索的关键词如下:
Linux密码 mysql数据库 password smtp password mysql password ssh password dbpass dbname
关键词这一块很灵活,读者朋友们可以根据自己的实际需求来自由发挥。
2.邮箱信息收集
在渗透测试过程中,收集邮箱也是不可缺少的一步,黑客收集邮箱后可以方便对这些邮箱进行定向“钓鱼”攻击。除了使用钓鱼攻击,还可以使用收集到的邮箱来爆破邮箱系统或者其他的登录系统。那么如何来收集互联网上的邮箱信息呢?最简单的方法就是直接使用搜索引擎来搜索,可以使用如下关键词查找到互联网上的邮箱信息:
mail @xxxx.com
可供选择的搜索引擎有很多,百度、搜狗、谷歌、必应、雅虎、领英等都是不错的搜索邮箱的工具,当然也有一些小工具集成了这些功能,如7kbscan编写的EmailSniper邮箱据介绍就是一个不错的工具。EmailSniper执行样例如图所示。
3.社交
QQ、weibo、支付宝、脉脉、咸鱼、短视频、人人、贴吧、论坛
外网信息,推特、ins、fb 等
4.注册过的网站
https://www.reg007.com/
5.默认密码
https://default-password.info/ http://routerpasswords.com
6.网页缓存
http://www.cachedpages.com/
7.邮箱钓鱼
http://24mail.chacuo.net/enus