信息收集常规流程浅析 – 作者:zeros123

一、综述

1.1 目的

未知攻焉知防,通过对当前黑客常用扫描类信息收集行为进行总结,学习了解黑客惯用攻击手法,知其攻便可对其进行防御,以提升安全防御意识和应急技术能力。

1.2 事件说明

黑客通过渗透的方式攻击目标站点的时候,做的第一步就是信息收集,也可以说信息收集在渗透攻击流程中占比大,地位高。往往收集到足够的目标站点信息的时候,不必利用“高深”的技术手段也可以拿下目标。

站在安全运维的角度,则需要了解到黑客通过哪些方式信息收集,能够收集到哪些有用的信息。这样可以帮助我们在安全运维时,减少信息暴露,降低信息系统潜在的威胁。

二、 第三方信息收集

2.1 域名查询

讲解:当黑客拿到一个域名信息的时候,黑客首先需要收集与域名相关的信息。需要找到网站的ip,网站域名注册人员的邮箱。当拿到域名对应的信息,黑客可以利用漏洞扫描攻击或定向社会工程学等方式对网站渗透。

注意点:

由于在线工具是通过定期利用网络爬虫爬取相关信息,部分信息可能会存在滞后,收集到信息后需要人工验证;

当多次查询,或多次使用在线工具后,需要手动清理浏览器缓存,使查询结果准确。

部分网站使用CDN或者云防护会造成域名解析IP地址非服务器真实地址,此时需要绕过CDN寻找网站真实IP地址。

场景:网站需要对互联网提供服务,并通过域名绑定。对外服务均通过域名url提供,并通过了正式的域名备案。

内容

通过站长工具、爱站工具等查询指定域名对应的ip信息;

通过站长工具、爱站等工具收集其他辅助信息(注册邮箱、网站单位地理位置、网站权重等)。

示例1:

站长工具是黑客常用的信息收集工具之一,是一个在线查询工具。工具的网址为:https://tool.chinaz.com/。站长工具具备域名ip类、网站信息查询、seo查询、权重查询、数据分析与辅助工具等功能。

通过浏览器【打开网址】https://tool.chinaz.com/,在搜索框中输入要查询的域名xxx,可以得到网站ip、注册人邮箱等信息;

可以发现域名解析的IP地址为xxxx。但无法确定该地址是网站真实服务器地址还是CDN节点ip地址。

1616726249_605d48e902292cf4bf502.png!small?1616726250689

在浏览器中输入http://ping.chinaz.com进入ping检测页面,【点击ping】,对域名进行多地dns解析,并将解析出的ip地址显示出来。

1616726284_605d490c84d0d7f7ca504.png!small?1616726287995

发现通过多地ping域名的方式,解析出了多个公网IP地址,说明该网站存在CDN云防护机制,CDN云防护机制可将真实网站的数据缓存至CDN节点供用户访问且一般均配置的云防护功能,可针对攻击行为进行拦截防护。

1616726348_605d494c3f928563855da.png!small?1616726350969

本地通过nslookup解析域名,也可发现DNS解析CNAME为qaxcloudwaf.com

根据其名称可以利用搜索引擎发现该云防护厂商为网神信息技术股份有限公司。

1616726465_605d49c19d8aed04a66da.png!small?1616726469561

2.2 备案查询

讲解:工商档案查询是指通过一定的程序,查询企业工商注册登记、经营范围、投资规模、经营状况等综合情况

注意点:

场景:已进行备案注册的组织。

内容:天眼查是个在线查询工具,提供工商信息、涉诉信息、商标专利、失信信息、企业变更与企业年报、以及企业关联关系查询等功能。

示例1:通过浏览器【打开网址】https://www.tianyancha.com/,可以通过天眼查查询组织的工商信息,也可以获得组织管理层的信息。

2.3 敏感信息收集

讲解:当某些站点无法直接通过技术层面进行渗透时,或者无法通过扫描进行信息收集时。这时候可利用搜索引擎搜索目标站点暴露在互联网上的关联信息。例如:数据库文件、sql注入、服务器配置信息、甚至是通过git找到站点泄露源代码、robots.txt等敏感信息。从而达到渗透测试目的。

注意点:

场景:在互联网有信息泄露的站点。

内容:

通过谷歌语法进行敏感信息收集;

示例1:

通过谷歌语法进行信息收集。googlehack是指使用google等搜索引擎对某些特定的网络主机暴露在公网上的信息进行搜索,已达到快速搜集相关敏感信息并进行利用的目的。

在搜索引擎输入如下内容,即可搜索域名的子域名信息

site:xxx.com

通过结合多个谷歌搜索语法,可获取到敏感信息,如下可搜索出网站内pdf文件,此时若未对网站内敏感路径和文件如配置文件,网站源码压缩包等进行限制,极易被黑客获取利用。

site:xxx.com  filetype:pdf

利用如下语句,可搜索出edu.cn域名所有网页正文中关键字为后台登录的链接地址。下图均为将系统后台暴露在公网上的网站,攻击者可利用暴力破解等方式对后台登录进行攻击,一旦获取后台管理员账号,攻击者可利用文件上传等方式上传web后门从而获得服务器权限。

site:edu.cn  intext:”后台登录”

1616726561_605d4a21ee200c2fc3d7e.png!small?1616726563935

三、工具主动扫描

3.1 敏感目录文件

讲解:在渗透信息收集攻击中,收集敏感目录文件是非常关键的一步,可以帮助攻击者识别网站存在多少个目录,多少个页面,探索出网站的整体结构。还可以发现网站暴露在互联网的敏感文件、后台文件、数据库文件等。

目录扫描的原理是通过收集大量的常见网站网址,拼接到目标服务器网址上得到一个url,然后对这个url进行访问,访问成功则说明该网站存在该路径即采用字典枚举的方式扫描目标服务器,得到一个可能存在漏洞或信息泄露的url列表。

注意点:

配置常用词库,词库少会导致扫描结果参考性低。

扫描的过程中选择合适的线程,高线程造成扫描程序卡死或者对网站可用性造成一定影响。

未授权情况下,防止扫描行为对生产服务器造成可用性故障。使用自搭建测试服务器进行扫描分析演示。

场景:存在网站的后台登录页面或者文件上传页面。

内容:

后台目录扫描工具扫描敏感后台地址。

示例1:

使用如下命令快速搭建测试环境如下:

cd /usr/local/vulhub-master/phpmyadmin/CVE-2016-5734/&&docker-compose up -d

1616726622_605d4a5e560e80e3b5ea2.png!small?1616726622959

使用如下命令进入靶场内部,模拟开发人员备份网站源码。

docker exec -it 容器id bash    //进入docker容器

tar czvf code.tar.gz *   //打包网站路径下所有文件

使用后台描工具,扫描网站敏感目录文件。通过如下命令对目标url进行网站目录扫描,-e php表示指定扫描字典为php类型。

python3 dirsearch.py -u http://10.211.55.7:8080/ -e php

可以发现扫描出大量敏感目录,如下为网站后台登录页面。攻击者可利用暴力破解的方式进一步对后台进行攻击利用。

1616726701_605d4aadc2e1579ef5df8.png!small?1616726702184

可以看到目录扫描发现一个压缩包文件意思网站源码压缩包。

1616726690_605d4aa2d9b00d985790d.png!small?1616726691041

使用浏览器尝试访问,成功下载压缩包文件。

1616726718_605d4abe848164dc0f714.png!small?1616726718557

打开文件后发现确实为网站源码文件的压缩包,一般这种情况为开发人员不合规配置导致。

1616726754_605d4ae2f35869dd370f4.png!small?1616726755045

当获取到网站源码后,可通过代码审计发现网站存在的漏洞或敏感信息。如查看config.inc.php文件可获得如下信息

网站数据库类型为mysql

数据库端口为3306

数据库账号名为root

数据库密码为空。

3.2 指纹识别

讲解:

指纹包含网站cms指纹、主机操作系统指纹、web容器指纹等。应用程序一般在html、jss、css等网站文件中包含一些特征码,另外http响应头中往往也会包含一些特征如x-powered-by、cookies等,这些特征码就是指纹信息的重要组成部分。

在web渗透过程中,对目标网站的指纹识别非常关键,通过工具扫描或者人工测试来识别cms系统是自建还是二次开发,还是直接使用公开的cms程序。通过获取的这些信息来决定后续渗透的思路和策略。指纹识别是黑客攻击环节中一个非常重要的阶段,也是是信息收集中的一个关键环节。

注意点:

场景:通过cms系统自建、二次开发进行建站的。

内容:

使用工具并结合浏览器开发者模式对网站指纹进行识别分析

使用在线指纹收集网站对网站指纹进行识别

示例1:

whatweb是一款针对网站指纹信息进行收工具,whatweb可识别web技术,包括内容管理系统(CMS)、JavaScript库,Web服务器和嵌入式设备等。

在【扫描端】中输入如下命令可对目标网站进行详细的指纹收集并显示扫描的结果。

whatweb -v http://10.211.55.7:8080/

根据该工具扫描结果,获得的信息如下:

扫描结果第一部分为网站的基本情况,包含网站状态码为200,说明网站可正常访问;网站title为phpmyadmin即网站标题;网站ip地址为10.211.55.7,若为公网服务器则为域名dns解析得到的公网ip地址。

1616726795_605d4b0bd479c1695491f.png!small?1616726796268

扫描第二部分为详细检测出的指纹信息,cookies字段中可以看到识别到phpmyadmin的cms框架以及os字段中识别到目标操作系统为debian linux,web服务器为apache。

1616726815_605d4b1f8010cdeb2e9f1.png!small?1616726816112

通过浏览器f12开发者模式,也可发现相同字段信息。如下:

【status code为网站返回的响应码】

【remote address为目标网站的ip及其端口】

【server为目标web服务器名称及其版本】

【set-cookie为目标服务器返回的设置cookies值的字段,其中包含了网站使用的指纹信息】

1616726838_605d4b36141d2620f2b83.png!small?1616726839597

扫描的第三部分为网站后端使用的语言以及框架信息如下:

1616726860_605d4b4cdc70839d08a26.png!small?1616726861243

1616726870_605d4b56920b988c41123.png!small?1616726870633

通过浏览器f12开发者模式,也可发现相同字段信息。如下:

【在set-cookie字段中存在httponly,说明网站设置了httponly属性,即通过js脚本无法获取cookies信息,可有效防止xss攻击】

【在x-powered-by字段中存在php/5.3.29,说明网站后端使用的脚本语言为php且版本为5.3.29,根据此信息可获得php低版本可能存在漏洞信息】

1616726888_605d4b684d1781ed5cada.png!small?1616726889499

下一步可根据以上获得的信息利用搜索引擎或个人经验,尝试发现网站存在的漏洞并利用。

1616726900_605d4b749d97656174c91.png!small?1616726901806

示例2:

通过云悉指纹识别系统对目标网站进行cms指纹识别。【浏览器打开】https://www.yunsee.cn/,第一次使用需要注册审核。

若网站服务前置使用了云防护产品,指纹识别系统可能无法获取真实服务器指纹信息。

1616726974_605d4bbe7572761b680d6.png!small?1616726974811

可发现众多子域名信息。

1616727028_605d4bf44769b3267b9de.png!small?1616727028680

为演示指纹识别效果。收集信息如下:

web服务为IIS7.5

网站开发框架为asp.net

前端框架为jquery

1616727063_605d4c17cf8779f666375.png!small?1616727064745

点击【查看漏洞】,可以发现对应指纹服务是否存在安全漏洞。

1616727074_605d4c229611bbd1b2982.png!small?1616727076621

3.3 开放端口信息

讲解:应用系统开放的端口往往包含了很多信息,从开放的端口我们往往可以推论操作系统开启了哪些服务,可能存在哪些漏洞。例如常用端口:22端口开启ssh服务、3389开启远程桌面服务、445开启smb共享服务、3306开启mysql数据库服务等。

注意点:

主机端口可分为tcp端口和udp端口,两种不同协议的端口均有65535个,端口范围为1-65535,常见的软件服务为ssh、rdp、mysql均有其默认端口。

服务绑定的端口号也可被修改成其他非默认端口号,如将rdp服务默认端口号3389修改为13389,也可提供正常的远程桌面服务。但端口扫描本质是对其端口后面服务的指纹信息进行探测,修改端口号无法隐藏真实服务信息。

端口扫描返回结果一般有三种,【closed】、【open】、【filtered】分别表示端口关闭、开放、被过滤,filterd一般是防火墙类安全设备对其端口增加了访问限制导致。

linux主机遵循RFC 793标准,linux主机在端口关闭时会响应rst数据包,在端口开启时会响应正常的ack包或直接丢弃。windows主机及一些思科设备不遵循该标准,windows主机在接收到如fin数据包时无论端口开启与否均会响应rst数据包。

场景:针对主机的端口服务进行探测和信息收集。

内容:

使用nmap的syn半连接端口扫描功能进行端口服务信息探测。

使用nmap的tcp全连接端口扫描功能进行端口服务信息探测。

使用nmap的fin端口扫描功能进行端口服务信息探测

修改目标服务默认端口号,并进行端口服务探测。

示例1(目标为linux服务器):

syn半连接是指通过发送syn请求包,若目标回包syn+ack即认定目标端口开放并结束tcp连接。若目标回包rst则认定目标端口未开放。

在【扫描端】使用syn半连接探测【目标端】未开放端口3389如下,扫描结果为【closed】。

nmap -sS 10.211.55.7 -p 3389

1616727095_605d4c373fa73d017e832.png!small?1616727095281

在【扫描端】抓包发现,【目标端】返回rst包说明端口未开放请求重置。

1616727116_605d4c4c90ab328abb31d.png!small?1616727117101

使用syn半连接探测目标开放端口3306如下,扫描结果为【open】。

1616727128_605d4c58665c0fa5cc386.png!small?1616727131281

在【扫描端】抓包发现,【目标端】返回syn+ack说明该端口开放,扫描端确认目标端3306端口开放后立即发送rst数据包,未建立tcp三次握手。

1616727139_605d4c63826643600e5a7.png!small?1616727139769

在【目标端】开启本地防火墙,防火墙默认会禁止一些管理端口的访问如3306,也可自定义访问控制策略。

1616727156_605d4c74c5c1d60744ac4.png!small?1616727158268

使用syn半连接探测目标开放端口3306如下,扫描结果为【filtered】

1616727174_605d4c863dbcbd641e023.png!small?1616727176142

在【扫描端】抓包发现,【目标端】未响应其syn请求,而是返回了一个icmp报文,报文内容为【目标不可达】,说明本地防火墙收到该syn请求并拦截了该请求回复了一个icmp报文禁止其访问。

1616727184_605d4c90515a0804fa5f5.png!small?1616727184493

示例2(目标端为linux服务器)

tcp全连接扫描是指通过建立完整的tcp三次握手去探测目标端口状态,这种扫描效率较低且可能会在一些安全设备如防火墙、ids上留下扫描痕迹。这种扫描方式使用较少。

使用【-sT】参数开启tcp全连接扫描功能,如下:

nmap -sT 10.211.55.7 -p 3306

1616727197_605d4c9dde4a0348a9b0c.png!small?1616727200110

在【扫描端】抓包,可以发现【扫描端】与【目标端】通过三次握手建立了完整的tcp连接,然后扫描端发送了rst重置请求结束了此次会话。

1616727209_605d4ca99605e12e9851c.png!small?1616727210329

示例3:

使用fin扫描对目标端进行端口探测,fin是tcp会话结束的第一个数据包。

linux主机开放端口在接收到fin请求时不会响应数据包(可根据请求的超时判断目标端口是否开启)。linux未开放的端口在接收到fin请求时会立即响应rst数据包表示端口关闭。

windows主机在接收到fin请求时,无论该端口是开放还是关闭均会响应rst数据包。故无法使用fin扫描判断windows主机端口开放状态。

使用【-sF】参数开启fin扫描功能,如下:

nmap -sF 10.211.55.7 -p 3306

1616727220_605d4cb4a2407dc166732.png!small?1616727222348

在【扫描端】抓包可以看到发送的数据包一直没有响应,说明端口开放。

1616727231_605d4cbf23cc8ac4efcc3.png!small?1616727231582

使用如下命令对【目标端linux】的一个未开放端口进行扫描。

nmap -sF 10.211.55.7 -p 33061

1616727242_605d4ccaafe77ed62bee1.png!small?1616727244806

在【扫描端】抓包发现【目标端】在接收到fin请求后立即响应了rst,对其进行重置,说明【目标端】未开放此端口。

1616727252_605d4cd4c686e16c76c40.png!small?1616727254272

使用fin扫描对windows的一个开放端口进行扫描,发现扫描结果与实际情况不符。

1616727262_605d4cde102f4cf75f16a.png!small?1616727264760

在【扫描端】抓包发现【目标端】在接收到fin请求后立即响应了rst请求。

1616727272_605d4ce802336cb02d70e.png!small?1616727272345

使用fin扫描对windows主机的一个未开放端口进行扫描,结果如下:

1616727283_605d4cf3e7aa328597df4.png!small?1616727285981

在【扫描端】抓包发现【目标端】在接收到fin请求后,无论该端口开放与否均响应rst请求包。

1616727292_605d4cfcbb069c0cfb5b1.png!small?1616727293041

示例4:

在【目标端】对ssh配置文件/etc/ssh/sshd_config进行修改,将默认ssh端口修改为10022。

1616727305_605d4d09de4c575282c02.png!small?1616727306240

重启sshd服务

systemctl restart sshd

在【扫描端】nmap中输入如下命令,对目标端全端口进行扫描,发现即使将端口修改为10022,仍然可扫描出目标端的ssh服务开启。

nmap -sS -sV 10.211.55.7 -p1-65535

1616727320_605d4d189c78cc8d9d791.png!small?1616727321117

3.4 漏洞信息收集

讲解:漏洞信息收集一般是基于软件版本和漏洞poc对目标安全漏洞进行探测。操作系统、web容器、web应用、数据库应用等软件资产都是漏洞信息收集的对象。常用的漏洞信息收集工具有appscan、nessus、awvs等。

注意点:

在漏洞工具使用过程中,注意扫描占用的带宽,防止影响正常业务的运行;

基于软件版本的漏洞信息收集往往存在较大误报或无法直接利用,软件版本指纹可以手动修改如将软件版本指纹修改为最新版本造成漏扫工具无法探测器可能存在的漏洞。

基于漏洞poc的漏扫信息收集一般准确率较高,因为其扫描原理是将漏洞利用的方式和代码进行无害化处理后发送至漏洞点进行验证漏洞是否可被利用。

场景:对业务系统的操作系统os、web容器、web应用、数据库应用等漏洞情况进行信息收集。

内容:

基于软件版本信息探测进行漏洞信息收集。

基于软件漏洞poc探测进行漏洞信息收集。

示例1:

使用nessus对目标主机进行漏洞扫描,点击右上角【new scan】创建扫描任务。

1616727339_605d4d2bdcba0f03e2ff2.png!small?1616727340226

使用【basic network scan】扫描模块即可。

1616727347_605d4d334b1ff60b71b16.png!small?1616727348172

本次扫描仅验证软件版本漏洞原理,配置描述和目标ip其他选项默认即可,点击【lauch】开始扫描。

漏扫工具的某些漏洞结果是基于探测到的软件版本信息匹配本地的漏洞库,以下为nessus基于php版本探测结果输出的对应漏洞信息。

1616727385_605d4d59b68dbf3249b5b.png!small?1616727386487

1616727395_605d4d63e21b834a5a307.png!small?1616727396653

使用如下命令关闭php版本信息:

【docker exec -it 容器id bash      //进入docker容器

cp /user/src/php/php.ini-production  /etc/php.ini    //将源码中的php配置文件复制到etc路径下

sed -i s/'expose_php = On'/'expose_php = Off'/g /etc/php.ini   //关闭expose_php功能即X-Powered-By不再回显php版本号

exit

docker commit -m "change" 容器id  vulhub/phpmyadmin:4.4.15.6   //保存docker配置】

使用nessus对目标网站再次进行扫描,本次未再发现php相关漏洞。

1616727413_605d4d7523109b09c9a50.png!small?1616727414061

同时通过浏览器f12开发者模式,查看目标服务器响应信息也无X-Powered-By字段。

1616727430_605d4d86edc3e86f500f8.png!small?1616727432701

示例2:

使用如下命令开启一个weblogic漏洞靶场环境。

cd /usr/local/vulhub-master/weblogic/CVE-2017-10271/&&docker-compose up -d

1616727442_605d4d926bc2210bbc69d.png!small?1616727442430

使用nessus对其目标站点进行漏洞扫描。

nessus扫描出多个weblogic安全漏洞。

1616727471_605d4daf6d1b54fbbb1cc.png!small?1616727472249

1616727484_605d4dbc564172acc82fe.png!small?1616727486138

点击其中一个漏洞进入详情界面,可以看到nessus并不是简单探测目标的weblogic版本号,而是通过发送构造的恶意序列即poc至目标服务器的weblogic服务,weblogic服务将其反序列化执行。这一过程就验证了反序列化漏洞的有效性。

来源:freebuf.com 2021-03-26 11:05:32 by: zeros123

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论