信息收集很重要!
知己知彼,百战不殆~
情报很关键呦 →_→
信息收集的意义
来一段古文:
《孙子兵法》讲:
“ 夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况于无算乎!吾以此观之,胜负见矣” ;
“知彼知己,百战不殆;知彼而不知己,一胜一负;不知彼不知己,每战必殆”;
“兵者诡道也,攻其无备,出其不意,此兵家之胜,不可先传;”;
“修道保法,先生而后战”
“水无常势,兵无常形,致人而不致于人”;
“杂于利害,有别于常,吾有所待”;
信息收集概述
渗透的本质就是在做信息收集,目标资产信息收集的程度,决定渗透过程的复杂程度。目标主机信息收集的深度,决定后渗透权限持续把控。渗透的本质是信息收集,而信息收集整理为后续的情报跟进提供了强大的保证。
**什么是信息收集:**通过各种方式获取所需要的信息,以便在后续的渗透过程更好的进行。因为只有我们掌握了目标网站或目标主机足够多的信息之后,才能更好地对其进行漏洞检测。
正所谓“知己知彼,百战百胜”,信息收集就像一场战争中的“深入敌后”的一项“情报收集”任务。在开始渗透测试工作之前,我们通过要对目标使用各种工具进行信息收集工作,找出目标的漏洞和弱点,然后利用这些漏洞和弱点进行攻击,使得渗透任务得以顺利地完成。在战争中假如你的情报收集工作出错重大错误,战士们牺牲的就是性命,由此可见,情报收集工作的重要性。
信息收集方法、区别及作用
1.主动收集:
相当于通过技术手段去侦察目标的情况,此时目标有可能记录下此次事件的信息。例如:我晚上偷偷摸摸地去小明家里,去查看他家用的是什么品牌保险柜?然后记录下收集到的信息。对于这种情况小明家里可能会有摄像头记录下我的行为。
2.被动收集:
相当于通过技术手段去收集目标遗留的信息,此时目标并不能感知事件的发生。例如:小明在某个论坛中留下了自己的生日、年龄、学号等信息,根据收集到的信息生成字典,对小明的保险箱进行密码破解。对于这种情况小明又怎么可能发现我在收集他的信息呢。
常见收集信息收集内容
**域名信息:**收集域名相关的信息,如URL、IP、注册商家、注册人联系方式等;
**子域名:**收集指定域名的二级、三级、四级等子域名信息,主要结合业务去收集,采用爆破、搜索引擎、证书等方法去实施采集;
**端口信息探测:**探测目标服务上开启的服务,以及服务的banner 信息;
**敏感信息收集:**探测目标资源的站点服务架构、JS接口、页面包含的链接、客户信息、邮箱等内容;
**安全防护判断:**通过工具和手工的方式判断目标资源中开启的防护设备,如不同类型的WAF、防火墙、EDR、杀软等;
**指纹识别:**识别目标资源的站点CMS类型、中间件类型、容器类型、服务类型、系统类型等;
**旁站以及C段:**收集目标站点上开启的其他的网站信息,一台服务器上可能搭建多个站点,C段也是考虑到目标公司可能同时购买多个同段IP,C段探测有助于资产探测和安全测试;
**敏感目录和文件:**目标站点中可能存在敏感文件和目录,通过目录扫描工具获取这些敏感文件和目录,如phpinfo、robots.txt、readme.md、备份文件等等;
**组织架构信息:**获取目标对象的内容人力资源架构,可实施社工、近源攻击等测试;
历史漏洞信息:通过目标资源的banner信息来判断目标可能存在的漏洞问题,如根据CMS版本来查找exploit;
**社工信息:**以欺骗、诱导等方式获取的社工信息,如目标人的身份信息、邮箱信息、管控系统的密码等;
**其他信息:**微信小程序、APP、合作商、外包商、VPN等等
我们以随机选择的一个企业网站为例,简单讲解通过目标站点收集信息的方法。
(特别说明:课程演示需要,请不要非法测试该站点)
1.域名信息收集
1.1 主域名信息收集
知道目标的域名之后,我们要做的第一件事就是获取域名的注册信息,包括该域名的DNS服务器信息和注册人的联系信息等。域名信息收集的常用方法为以下几种:
DNS信息收集
DNS(Domain Name System:域名系统),是因特网的一项核心服务,它作为将域名和ip 地址相互映射的一种分布式数据库,能够使人们更方便的访问互联网,而不用去记住能够被机器直接读取的地址。
主机记录(A记录):
A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
IPv6主机记录(AAAA 记录):
与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
别名(CNAME记录):
CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
电子邮件交换记录(MX记录):
记录一个邮件域名对应的IP地址域名服务器记录(NS记录):记录该域名由哪台域名服务器解析
反向记录(PTR记录):
也即从IP地址到域名的一条记录
SOA 记录
SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器。SOA记录表示此域名的权威解析服务器地址。当要查询的域名在所有递归解析服务器中没要域名解析的缓存时,就会回源来请求此域名的SOA记录,也叫权威解析记录。
TXT 记录:
记录域名的相关文本信息DNS服务器分为主服务器,备份服务器,缓存服务器。备份服务器需要利用“域传送”从主服务器上复制数据,然后更新自身的数据库,以达到数据同步的目的,这样是为了增加冗余,万一主服务器挂了还有备份服务器顶着。而“域传送”漏洞则是由于dns配置不当,本来只有备份服务器能获得主服务器的数据,由于漏洞导致任意client都能通过“域传送”获得主服务器的数据(zone数据库信息)。这样,攻击者就能获得某个域的所有记录,甚至整个网络拓扑都暴露无遗,凭借这份网络蓝图,攻击者可以节省很多扫描时间以及信息收集的时间,还提升了准确度等等。
whois信息
whois值得是域名注册时留下的信息,比如留下管理员的名字、电话号码、邮箱。
Whois是一个数据库,记录着是否已经注册,及注册的详细信息。得到注册人联系电话和邮箱等有时候对社工和密码字典爆破很有作用。一般情况下,域名所有者是管理员。
为什么要收集whois? 域名注册人可能就是网站管理员,可以尝试社工、套路,查询是不是注册了其他域名扩大攻击范围 。(密码字典生成器:https://www.bugku.com/mima/)
whois查询和关联查询
查询whois
http://whois.chinaz.com/facebook.com
反查whois
http://whois.chinaz.com/reverse?host=**in@fb.com&ddlSearchMode=1&domain=facebook.com
备案信息查询
国家规定,搭建在国内的网站必须要进行备案,国外的则不用,此信息收集主要针对国内的网站。大部分还是通过网站查询
天眼查:http://www.tianyancha.com
ICP备案查询网:http://www.beianbeian.com
子域名收集
子域名是在顶级域名下的域名,收集的子域名越多,我们测试的目标就越多,渗透的成功率也越大。往往在主站找不到突破口的时候,我们从子域名入手。
子域名检测工具
Layer子域名挖掘机
子域名在线查询
站长之家:http://tool.chinaz.com/subdomain/?domain=baidu.com
搜索引擎枚举
可以利用的google搜索语法。
site:xxx.com
第三方聚合应用枚举
在线DNS侦察和搜索的工具
(1) DNSdumpster:https://dnsdumpster.com/
(2) VirusTotal:https://www.virustotal.com/#/home/search
2.查找真实IP
一般IP的话,我们在收集子域名的时候,就大概知道目标网站的IP段了。
也可以通过whois命令获取。即通过中国互联网信息中心http://ipwhois.cnnic.net.cn/进行查询
在渗透测试中,目标往往只有一个域名,如何通过这个域名来确定目标服务器的真实IP是十分重要的
什么是CDN
CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。简单点说,就是目标把资源缓存在节点服务器上,用户访问资源时,直接从近的节点服务器响应给用户。所以当目标购买了CDN服务时,我们ping域名得到的是最近节点服务器的IP。
正常情况下,通过cmd命令可以快速找到域名对应IP,最常见的命令如 ping、nslookup。但很多站点出于用户体验和安全的角度,使用CDN 加速,将域名解析到CDN,这时候就需要绕过CDN来查找真实IP。
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决lnternet 网络拥挤的状况,提高用户访问网站的响应速度。
绕过CDN获取真实IP
1.查询子域名
子域名可能跟主站在同一个服务 器或者同一个C段网络中,可以通过子 域名探测的方式,收集目标的子域名 信息,通过查询子域名的IP信息来辅助 判断主站的真实IP信息,因为很多时候不可能给所有的域名都弄上cdn。
2.查询历史DNS记录
微步在线查询的【www.***.com】这个域名的历史DNS解析信息,然后分析哪些IP不在现在的CDN解析IP里面,就有可能是之前没有加CDN加速时的真实IP。
3.使用国外主机解析域名
探测的方式也有两种,一种是利用自己已有的国外的主机直接进行探测,另一种如果没有国外主机可以利用公开 的多地ping服务,多地ping服务有国外的探测节点,可以利用国外节点的返回信息来判断真实的IP信息。
https://tools.ipip.net/ping.php
3.端口信息收集
端口就是不同计算机提供不同的交互服务,在渗透测试中,对端口的信息收集十分重要。我们需要关注的是默认端口和在端口运行上的服务。常见扫描工具有Nmap,Zmap,和御剑高速TCP端口扫描工具
开放端囗–开放代表可通信,端口决定服务。
服务类型探–服务类型决定了该服务可能存在的漏洞。
端囗协议–自定义端囗可迷惑扫描器,需要根据返回信息判断协议。
端囗即服务,服务即端口。
文件共享服务端口有
端口号 | 端口说明 | 攻击方向 |
---|---|---|
21/22/69 | FTP/TFTP文件传输服务 | 允许匿名的上传,下载,爆破和嗅探操作 |
2049 | NFS服务 | 配置不当 |
139 | Samba服务 | 爆破,未授权的访问,远程代码执行 |
389 | Ldap目录访问协议 | 注入,允许匿名访问,弱口令 |
远程服务连接的端口有
端口号 | 端口说明 | 攻击方向 |
---|---|---|
22 | SSH远程连接 | 爆破,SSH隧道以及内网代理转发,文件传输 |
23 | Telent远程连接 | 爆破,嗅探,弱口令 |
3389 | Rdp远程连接 | Shift后门(windows server 2003以下版本系统),爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码,代码执行 |
Web应用服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
80/443/8080 | 常见的Web服务 | Web攻击,爆破,对服务器版本漏洞 |
7001/7002 | WebLogic控制台 | Java反序列化,弱口令 |
8080/8089 | Jboss/Resin/Jetty/Jenkins | 反序列化,控制台弱口令 |
9090 | WebSphere控制台 | Java反序列化,弱口令 |
4848 | Glassfish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令,信息泄露,爆破 |
10000 | Webmin-Web控制面板 | 弱口令 |
数据库服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
3306 | MySQL | 注入,提权,爆破 |
1433 | MSSQL数据库 | 注入,提权,SA弱口令,爆破 |
1521 | Orecle数据库 | TNS爆破,注入,反弹SHell |
5432 | PostgreSQL数据库 | 爆破,注入,弱口令 |
27017/27018 | MongoDB | 爆破,未授权访问 |
6379 | Redis数据库 | 可尝试未授权访问,弱口令爆破 |
5000 | SysBase/DB2数据库 | 爆破,注入 |
邮件服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
25 | SMTP邮件服务 | 邮件伪造 |
110 | POP3协议 | 爆破,嗅探 |
143 | IMAP协议 | 爆破 |
网络常见协议端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
53 | DNS域名服务 | 允许区域传送,DNS劫持,缓存投毒,欺骗 |
67/68 | DHCP服务 | 劫持,欺骗 |
161 | SNMP协议 | 爆破,搜集目标内网信息 |
特殊服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
2181 | Zookeeper服务 | 未授权访问 |
8069 | Zabbix服务 | 远程执行,SQL注入 |
9200/9300 | Elasticsearch服务 | 远程执行 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破,Rlogin登录 |
873 | Rsync服务 | 匿名访问,文件上传 |
3690 | Svn服务 | Svn泄露,未授权访问 |
50000 | SAP Management Cansole 服务 | 远程执行 |
Nmap常用命令:
-sP/-sn 不进行端口扫描 -p指定端口扫描
-sT TCP全链接扫描,建立完整三次握手过程
-sS SYN半连接扫描,只进行三次握手的前两次
-O 显示服务的详细版本
-b 显示banner信息
-T0~-T5时序选项
常见的扫描语句:
#扫描整个网段
nmap 192.168.1.0/24
#扫描指定的网络
nmap 192.168.1.10-200
#扫描10,100,200-300的网络
nmap 192.168.1.10,100,200-230
#扫描不同网段
nmap 192.168.1.0/24 10.10.10.0/24
#使用TCP全连接的方式,扫描过程需要三次握手建立连接则说明端囗开放,扫描速度慢
nmap -sT 192.168.1.1#使用SYN的数据包去检测,如果接收到ACK,则说明端口开放了nmap-sS 192.168.1.1
#NULL扫描,发出的数据包不设置任何标识位
nmap -sN 192.168.1.1
注意:上述扫描的端口默认都是1-1000,-p后跟指定端口-p20,21,22,80,3306-p- = -p1-65535
#探测服务版本
nmap -sV 192.168.1.1
#将扫描结果保存到result.txt 文件
nmap 192.168.1.1 > ./result.txt
#将扫描结果保存到result.xml文件
nmap 192.168.1.1 -oX result.xml
#获取目标所有的详细结果,全面扫描
nmap-A 192.168.1.1
#探测操作系统类型
nmap -0 192.168.1.1
4.网站指纹识别
在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。这是我们想要识别这些网站的指纹,我们就可以利用以下一些指纹识别在线网站。
生物指纹由于终身不变性,唯一性和方便性,几乎已经成为生物特征的代名词。而我们在计算机中所说的指纹指的是网站CMS指纹识别,计算机操作系统及Web容器的指纹识别等。
应用程序一般在html,js,css等文件中多多少少会包含一些特征代码,比如WordPress在robots.txt中包含wp-admin,首页index.php中包含generator=wordpress 3.xx,这个特征就是这个CMS的指纹,那么碰到其他网站时候,存在此特征,就可以快速识别该CMS,所以叫做指纹识别。指纹识别是相当必要的,只有识别响应的CMS和Web容器,才能找到相关的的漏洞,然后才能进行相应的渗透操作。
CMS(Content Mangement System)称整站系统或者文章系统。以前网站内容管理,基本靠手工进行管理,在信息爆炸的如今,手工显然已经不能满足人们的需求。所以出现了CMS,开发者只需要给客户一个软件包,客户自己安装配置好,就可以维护管理网站。
常见的CMS有Dedecms(织梦),Discus,PHPWEB,PHPWind,PHPCMS,ECshop,Dvbbs,SiteWeaver,ASPCMS,帝国,Z-Blog,WordPress等。
常用代表指纹识别工具有:御剑Web指纹识别,WhatWeb,WebRobo,椰树,轻量Web指纹识别等。
在线网站查询CMS指纹识别有
云悉指纹:http://www.yunsee.cn/finger.html
ThreatScan:https://scan.top15.cn/web/
WhatWeb:https://whatweb.net/
BugScaner:http://whatweb.bugscaner.com/look/
5.目录、敏感文件探测
由于发布网站时,服务器配置问题,导致目录浏览功能打开,从而引起信息泄露,造成安全隐患。在信息收集过程中,需要收集的敏感目录/文件信息包括:
概述扫描站点的目录,寻找敏感文件,如目录名、
探针文件、后台、robots.txt、备份文件等。
目录:站点结构、权限控制不严格;
探针文件:服务器配置信息,1.php、phpinfo.php、readme.txt、config.txt等;
后台:管理整个网站的入口,admin.php、index.php/s=admin、administrator.php等;
robots.txt:一般存放在站点根目录,如果管理员对robots.txt配置不合理就会造成信息泄露;
备份文件:数据库备份、网站备份文件等,如.bak 文件、.zip文件、.rar 文件等;
敏感JS文件:网页中可能嵌套的JS存在敏感信息,如后台的入口、登录评估等;
APl:网页中可能存在嵌套的应用程序接口,在信息收集中可以考虑寻找接口;
网页链接:收集页面中包含所有的链接。
6.旁站、C段
旁站:是和目标网站在同一台服务器上的其它的网站。
旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵。那么,可以查看该网站所在的服务器上是否还有其他网站。如果有其他网站的话,可以先拿下其他网站的webshell,然后再提权拿到服务器的权限,最后就自然可以拿下该网站了!
旁站查询:http://stool.chinaz.com/same
C端:是和目标服务器ip处在同一个C段的其它服务器。
对于实战攻防工程师来说,C段扫描比较有意义。对于单独网站的渗透测试,C段扫描意义不大。C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是C段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。