渗透测试中信息收集的那些事
信息收集概念、作用和分类
在一次护网行动中再次深刻意识到了信息收集对于渗透测试整个流程的重要性,信息收集的完整性决定了你的渗透测试结果,“知己知彼,百战不殆”。在此,为了使今后的渗透测试工作更加流程化、规范化,提高工作效率为前提,我总结了常见的信息收集经验和技巧,希望对大家有一定帮助。
信息收集概念
信息收集是指黑客为了更加有效地实施渗透攻击而在攻击前或攻击过程中对目标的所有探测活动。
信息收集作用
1.了解组织安全架构
2.缩小攻击范围
3.描绘网络拓扑
4.建立脆弱点数据库
信息收集分类
(1)主动信息搜集:与目标主机进行直接交互,从而拿到目标信息,缺点是会记录自己的操作信息。
(2)被动信息搜集:不与目标主机进行直接交互,通过搜索引擎或者社会工程等方式间接的获取目标主机的信息。
信息收集常用方法
根据每个信息收集条目的重要性、收集难易程度和漏洞利用难以程度进行了推荐星数的排序(仅供参考)。
Whois信息
推荐星数:★
whois是用来查询域名的IP以及所有者等信息的传输协议。 whois信息可以获取关键注册人的信息,包括注册商、所有者、所有者联系邮箱、联系电话、域名注册时间、域名到期时间、域名状态、DNS服务器等。
whois可以获取的信息:
1.域名详细信息
2.域名服务器信息
3.网络IP地址
4.域名创建、过期时间
5.最近更新记录
可通过注册邮箱、注册人等反查相关目标注册过的域名。
Whois信息在线收集地址:
站长之家http://whois.chinaz.com
阿里云域名信息查询https://whois.aliyun.com
Kali whois命令
Python-whois模块查询域名信息
企业信息收集
推荐星数:★★
1.企业基本信息。
2.员工信息(手机号码、邮箱、姓名等),组织框架、企业法人、企业综合信息等。
3.其中员工信息收集是信息收集中的一项重要工作,员工信息包括:员工姓名、员工工号、员工家庭及交际信息、上网习惯等。(社会工程学)
4.员工身份信息:员工简历,员工身份证,手机号,生日,家乡,住址等个人信息。5、员工社交账号信息:QQ号,QQ群,微博,微信,支付宝,员工邮箱账号等。
企业信息查询网站:
http://www.miitbeian.gov.cn/icp/publish/query/icpMemoInfo_showPage.action#ICP备案查询
Github信息
推荐星数:★★
Github不仅能托管代码,还能对代码进行搜索,当上传并公开代码时,一时大意,会让某些敏感的配置信息文件等暴露于众。Github主要收集:
1.泄露源码
2.泄露数据库、邮箱、ftp、ssh、3389等账号
3.泄露的人员信息
4.泄露其他敏感信息
SVN信息
推荐星数:★★
SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的entries文件,逐步摸清站点结构。”(可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息)。
邮箱信息
推荐星数:★★
常见的在线邮箱收集网站,这些网站通过爬虫,搜索引擎等方式,获取互联网上暴露的邮箱地址。
网盘信息收集
推荐星数:★★
漏洞库信息
推荐星数:★★
查询历史漏洞,获取目标之前存在的安全问题,可以利用已知漏洞直接对目标系统进行攻击。
端口、服务信息
推荐星数:★★★
服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大。
收集方法:
(1) Nmap
Nmap是主机扫描工具,它的图形化界面是Zenmap,分布式框架为Dnamp。
Nmap可以完成以下任务:
主机探测
端口扫描
版本检测
系统检测
支持探测脚本的编写
Nmap安装与使用方法可参考:
https://blog.csdn.net/m1585761297/article/details/80015726
https://www.cnblogs.com/weihua2616/p/6599629.html
(2)御剑高速TCP全端口扫描工具
(3)ScanPort
(4)Google浏览器Shodan插件
(5)站长之家http://old.tool.chinaz.com/port/
(6)http://coolaf.com/tool/port
子域名枚举
推荐星数:★★★
子域名枚举是为一个或多个域查找子域的过程,它是信息收集阶段的重要组成部分。
为什么要进行子域名枚举?
1.子域名探测可以帮我们发现渗透测试中更多的服务,它们在安全评估的范围内,从而增加了发现漏洞的机会。
2.查找一些用户上较少,被人遗忘的子域名,其上运行的应用程序可能会使我们发现关键漏洞。
3.通常,同一组织的不同域名/应用程序中存在相同的漏洞。
子域名枚举在线网站+工具:
(1)搜索引擎查询
Google、baidu、Bing等传统搜索引擎
site:baidu.com inurl:baidu.com
搜target.com|公司名字
(2)子域名搜集小工具
subDomainsBrute https://github.com/lijiejie/subDomainsBrute
wydomain https://github.com/ring04h/wydomain
wafw00f https://github.com/EnableSecurity/wafw00f
WhatWeb https://github.com/urbanadventurer/whatweb
dirsearch https://github.com/urbanadventurer/whatweb
layer子域名挖掘机
DNSdumpster
Sublist3r https://github.com/aboul3la/Sublist3r
(3)在线查询工具
(4)网络空间资产搜索引擎
Zoomeye
Shodan
Fofa
(5) DNS查询/枚举
DNS查询
host -t a domainNamehost -t mx domainName
优点:非常直观,通过查询DNS服务器的A记录、CNAME等,可以准确得到相关信息,较全。
缺点:有很大的局限性,很多DNS是禁止查询的。
在线查询网站:
DNS暴力破解:fierce
参考链接:
DNS信息收集https://www.cnblogs.com/xuanhun/p/3489038.html#RefHeading22036_2040717175
渗透测试之子域名探测指南 http://www.0xby.com/1105.html
域传送漏洞 参考链接:https://blog.csdn.net/c465869935/article/details/53444117
(6) 证书透明度公开日志枚举
证书颁发机构(CA)必须将他们发布的每个SSL/TLS证书发布到公共日志中。SSL/TLS证书通常包含域名、子域名和电子邮件地址。因此SSL/TLS证书成为了攻击者的切入点。
SSL证书搜索引擎:
https://certdb.com/domain/github.com
基于HTTPS证书的子域名收集小程序GetDomainsBySSL.py
网站架构
推荐星数:★★★
1.操作系统类型
2.数据库类型
3.Web中间件
4.网站开发语言
推荐Google插件:
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
敏感文件、目录信息
推荐星数:★★★
由于发布网站时,服务器配置问题,导致目录浏览功能打开,从而引起信息泄露,造成安全隐患。在信息收集过程中,需要收集的敏感目录/文件信息包括:
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文件
旁站查询
推荐星数:★★★
旁站信息:旁站是和目标网站在同一台服务器上的其它的网站,主站无法获取权限的情况下,旁站便可以作为攻击入口。
旁站信息收集:
https://www.aizhan.com/ IP反查域名
C段信息
推荐星数:★★★
C段信息:C段是和目标服务器ip处在同一个C段的其它服务器。
1.在线接口查询
2.扫描工具
Nmap扫描C段:
nmap -sP 1.1.1.1/24
探测C段存活主机,可以用|grep up过滤存活的主机.
3.IIS Put Scaner
搜索引擎信息收集
推荐星数:★★★
主要收集的信息包括:
1.搜索子域名
2.搜索后台管理页面
3.搜索泄露的敏感信息
4.搜索未授权访问
5.搜索开放端口服务
6.搜索过往或未修复漏洞
7.搜索目标相关人员信息
常见后缀名:
".vscode" ".env" ".Trash" ".bashrc" ".git" ".ftpconfig" ".ds_store" ".ssh" ".mysql_history" "WS_FTP.ini" "admin.zip" "dead.letter" "secring.skr" "secring.pgp" "secring.bak" ".bash_history" "README.md" "README.MD" "README" "phpinfo.php" "test.php" "database.propertie" "web.xml" ".gitignore" "_viminfo" ".bak_Edietplus" ".viminfo" ".swp" ".swo" ".swn" ".swm" ".swl" ".save1" ".save2" ".save3" ".svn" ".hg" ".bzr" ".xml" ".yml" ".mail" ".password" ".letter" ".bak" ".back" ".pwd" ".config" ".conf" ".cgi" ".mdb" ".db" ".json" ".ini" ".reg" ".txt" ".zip" ".rar" ".tar.gz" ".7z" ".cab" ".jar" ".lzh" ".ace" ".gzip" ".uue" ".bz2" ".arj" ".iso" ".z" "~" ".idle" ".inc" ".yaml" ".cfg" ".dump" ".sql" ".doc" ".xls" ".pptx" ".docx" ".ppt" ".ssh" ".mdb" ".cfg" ".gov" ".sh" ".desk" ".cnf" ".pl ".dll" ".nsf" ".cfm" ".ctl"
网络空间资产搜索引擎信息收集
推荐星数:★★★
网络空间搜索引擎的作用就是将互联网上公开的网络资产收集和整理,以此方便人们进行查阅和利用。网络空间可以发现了不少企业的脆弱系统,未授权访问、SQL注入、弱口令等等都是存在的。
1.Shodan https://www.shodan.io/
2.FOFA https://fofa.so/
3.Zoomeye https://www.zoomeye.org/
4.oshadan https://www.oshadan.com/
内网入口点信息
推荐星数:★★★
1.企业邮箱登陆口
2.VPN登陆口
3.各类OA/crm/sso系统的web入口
4.各类中间件web页面管理入口
5.各类监控系统、防火墙、虚拟化、路由器入口等
Waf信息
推荐星数:★★★★
WAF也称Web应用防护系统,Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
1.wafw00f工具
2.Nmap
Nmap探测WAF有两种脚本,一种是http-waf-detect,一种是http-waf-fingerprint。
3.Burpsuite:X-Powered-By字段
真实IP地址
推荐星数:★★★★★
CND介绍
CDN的全称是Content Delivery Network(内容分发网络),通过在网络各处的加速节点服务器来为网站抵挡恶意流量,把正常流量进行转发。用简单点的话来说,CDN一般有三个作用:
1.跨运营商加速:我们自己的网站常常只属于一个运营商(比如:电信),而加速节点遍布每家运营商,于是和网站不同运营商(比如:联通)的用户访问起来就不会那么慢了。
2.缓存加速:很多的静态资源以及一部分页面更新都是比较慢的(比如首页),这个时候CDN就会根据浏览器的max-age和last-modified值以及管理员的预设值来进行缓存,于是很多流量CDN节点就不会每次都来向网站请求,CDN节点可以直接自作主张地将命中的缓存内容返回。
3.恶意流量过滤:这是CDN非常重要的一个作用,也是很多网站会用CDN的原因,因为CDN能为我们抵挡攻击大流量攻击、普通的攻击(比如注入等),只有正常流量才会转发给网站。
参考链接:11种绕过CDN查找真实IP方法 https://www.cnblogs.com/qiudabai/p/9763739.html
验证是否存在CDN
(1)使用各种多地 ping 的服务,查看对应IP地址是否唯一,如果不唯一多半是使用了CDN,多地 Ping 网站有:
(2)修改本地hosts文件,强行将域名与IP解析对应,然后访问域名查看页面是否变化。
绕过CDN查找网站真实IP
(1)查看IP与域名绑定的历史记录,可能会存在使用CDN前的记录。
https://dnsdb.io/zh-cn/ DNS查询
http://toolbar.netcraft.com/site_report?url= 在线域名信息查询
http://viewdns.info/ DNS、IP等查询
https://tools.ipip.net/cdn.php CDN查询IP
(2)SecurityTrails平台
在搜索字段中输入网站域名,然后按Enter键即可,这时“历史数据”就可以在左侧的菜单中找到真实原始IP 。
(3)查询子域名
CDN是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的IP来辅助查找网站的真实IP,收集方法同子域名收集。
Subdomainbrute为例,仅需打开cmd进入它所在的目录输入Python subdomainbrute.py baidu.com –full即可收集百度的子域名,收集子域名后尝试以解析ip不在cdn上的ip解析主站,直到真实ip成功被获取到。
(4)网络空间搜索引擎
常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body: “网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
(5)利用SSL证书寻找真实原始IP
假如在www.wangsu.com上托管了一个服务,原始服务器IP是136.23.63.44,而wangsu会为你提供DDoS保护,Web应用程序防火墙等服务,以保护你的服务免受攻击。为此,你的Web服务器就必须支持SSL并具有证书。
目前Censys工具就能实现对整个互联网的扫描,Censys是一款用以搜索联网设备信息的新型搜索引擎,能够扫描整个互联网,Censys每天都会扫描IPv4地址空间,以搜索所有联网设备并收集相关的信息,并返回一份有关资源(如设备、网站和证书)配置和部署信息的总体报告。
(6)使用国外主机解析域名
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP。
(7)网站漏洞查找
目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
XSS盲打,命令执行反弹shell,SSRF等。
无论是用社工还是其他手段,拿到目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
(8)网站邮件订阅查找
RSS邮件订阅,很多网站都自带sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了。
(9)nmap扫全网
首先从apnic获取IP段,然后使用Zmap的banner-grab扫描出来80端口开放的主机进行banner抓取,最后在http-req中的Host写需要寻找真实IP的域名。
综合收集
推荐星数:★★★★★
Maltego互联网情报收集(https://www.freebuf.com/sectool/104949.html)
Recon-NG 信息侦察收集工具(https://www.freebuf.com/articles/web/7385.html)
Kali/Parrot中的其他信息收集工具
参考链接:https://www.jianshu.com/p/aeadbdb3fa08
总结
信息收集阶段应尽量可能多的获取目标Web应用的各种信息。信息收集工作是Web渗透测试最基础、也是最重要的阶段, 收集的有用信息, 可大大提高渗透测试的成功率。