用户
搜索

[web安全] 浅谈信息收集

  • TA的每日心情
    开心
    昨天 13:08
  • 签到天数: 44 天

    连续签到: 44 天

    [LV.5]常住居民I

    i春秋-见习白帽

    Rank: 3Rank: 3

    31

    主题

    71

    帖子

    1226

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2020-10-2
    发表于 2021-3-17 14:48:47 28398

    浅谈信息收集

    0.写在前面

    信息收集对于渗透测试来说是很重要的,是渗透测试的前期准备工作,俗话说知己知彼,才能百战不殆。掌握了对目标的足够信息,我们才能更好地开展渗透测试。

    信息收集的方式可以分为两种:主动信息收集和被动信息收集

    主动信息收集:是指通过直接和目标访问、各种工具直接对目标网站进行检测。直接使用工具对网站进行信息探测可以获得较多较全的信息,但是可能会被目标主机发现,对你的可疑行为进行记录,分析,可能会对后期的渗透工作产生影响。

    被动信息收集:是指通过各种的在线网站等第三方服务对网站进行信息收集。比如通过用Google Hacking,shodan、fofa等搜索引擎对目标进行信息探测,虽然获得的信息可能不多,但是不存在被目标发现的可能。

    没有一种方式可以做到面面俱到,每个方式都会存在自己的优势和劣势。我们需要学会各种工具搭配使用,取长补短,对目标进行多次隐秘而有效的探测,既获得自己想要的信息,又不让目标对我们的可疑行为进行记录,分析,最后完成对目标网站完整的信息收集报告。

    渗透测试的具体流程有:

    收集目标的信息

    ​           ↓

    分析目标,存在哪些弱点,是可以进行攻击的

    ​           ↓

    实施攻击,多种攻击手段(ddos,植入木马,获取shell等)

    ​           ↓

    留后门,方便再次进入(植入木马,修改系统配置文件,IP报文,ICMP报文)

    ​           ↓

    清理入侵记录(对系统的操作都会记录在系统日志信息里,需要清理信息)

    如图所示:

    信息收集是攻击的第一步,俗称踩点,就是收集目标的各种信息。渗透测试最重要的阶段之一就是信息收集。为了启动渗透测试,用户需要收集关于目标网络资产等信息。现实环境中收集的信息越多,渗透测试成功的概率也就越高。

    2.信息收集的基本思路

    废话不多说,来看图

    2.1.域名与IP信息

    域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是互联网的一项核心服务。它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址。IP地址较为难记,而域名较为好记,这样人们想访问一个网站就轻松许多。

    域名是由一串用点分割的名字组成,在Internet上的某台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。注意:当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

    我们浏览网站的过程如下图所示。

    这里举一个例子,sougou.com作为一个域名就和IP地址221.122.82.30相对应。我们可以直接访问221.122.82.30的域名sougou.com来代替IP地址。当我们访问网站的时候,DNS在我们直接调用网站的名字以后就会像sougou.com一样便于人类使用的名字转化成像221.122.82.30一样便于机器识别的IP地址。而如果sougou.com还有自己的子域名edu.sougou.comwww.sougou.com的话,那么edu(教育网)和www(万维网)就是对应的主机名。

    2.1.1.使用whois 协议

    2.1.1.1.介绍

    这是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。

    2.1.1.2.查询工具

    查询可以借助网上的网页接口简化的线上查询工具。

    http://whois.chinaz.com

    2.1.2.子域名

    2.1.2.1.介绍

    子域名,是顶级域名(.com、.cn、.top)的下一级,域名整体包括两个“.”或包括一个“/”。如:百度顶级域名为baidu.com。其下有news.baidu.comtieba.baidu.comzhidao.baidu.com等子域名。收集子域名可以很大程度知道目标所拥有的网站等资产信息。

    2.1.2.2.查询工具

    工具可以用子域名挖掘机。

    也可以用在线的一些网站

    https://phpinfo.me/domain

    2.1.3.旁站C段

    2.1.3.1.旁站

    查询旁站指某个服务器同一个IP地址所有域名。

    当该网站无法被攻破时,可以试着攻击旁站,进而入侵到服务器,再攻击此网站。

    2.1.3.2.C段

    查询C段指某个服务器IP地址所在C段IP地址(即/24)的所有域名。

    当该网站被攻破,获得服务器的shell,可以监听这一个网段的其他站收发的数据。

    2.1.3.3.查询工具

    旁站查询:www.webscan.cc

    https://chapangzhan.com

    C段查询:https://www.chinabaiker.com/cduan.php

    2.1.4.DNS查询

    2.1.4.1.介绍

    获取域名或者IP地址,并进行反向查找以快速显示同一服务器承载的所有其他域。

    2.1.4.2.DNS 查询类型

    DNS的查询类型有好多种,比较常用的查询类型有A,PTR,NS,CNAME,MX等五种记录。
    以下分别介绍几种类型:

    记录 解释
    A 将域名正向解析为IP,即正向查询
    PTR 将IP反向解析为域名,即逆向查询
    CNAME 查询DNS的别名
    NS 查询解析的名字服务器(Name server)
    MX 邮箱服务器查询(可用于判断邮箱是否有效以减低无效邮箱率)
    AAAA 将域名解析为IPv6地址
    TXT 一般指为某个主机名或域名设置的说明。常用于网站所有者认证,比如腾讯域名邮箱的所有者认证
    SOA NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器
    SRV 记录指定特定服务的主机和端口

    2.1.4.3.查询工具

    http://viewdns.info

    https://myssl.com/dns_check.html

    2.1.5.CDN

    谈到DNS查询IP地址,这里就要来扯扯<strong>真实的IP地址识别</strong>了。因为现在有的网站使用了CDN技术,这样我们查询到的IP地址就可能不是真实的IP地址了。

    2.1.5.1.介绍

    CDN全称是Content Delivery Network,即内容分发网络。其原理如下:某些大型网站在全国都会有很多用户,这些用户常常会向网站发送不同的请求,那么不同地域会具有不同的缓冲服务器来接收用户发送的流量。如果用户发送流量没有任何交互的数据,只是请求首页的话,此时根据用户所在地区来确定访问的高速缓存服务器,高速缓存服务器会返回对应的响应到用户的浏览器当中,比如广东。

    当用户填写数据,需要交互时才会将请求发送到真实的服务器;此时通过广东省的缓存服务器来连接真实服务器。

    CDN通常存在用户很多的大型流量网站,通过它来解决我们服务器的瓶颈。

    2.1.5.2.判断是否存在CDN

    可以通过Ping来判断网站是否存在CDN。比如下图所示,可以看到www.baidu.com是存在CDN的

    sougou.com就不存在CDN

    也可以利用在线Ping网站来使用不同地区的Ping服务器来测试目标。这里使用的在线网站是:http://ping.chinaz.com  

    该网站显示结果如下图所示:

    使用不同的Ping服务器,响应的IP地址是相同的。不同的监测点相应的IP地址相同,由此可以推断当前网站没有使用CDN技术。

    可以看到使用不同的Ping服务器,响应的IP地址是不同的。不同的监测点相应的IP地址不同,由此也可以推断当前网站使用了CDN技术。

    2.1.5.3.如何绕过CDN

    如果目标网站没有使用CDN的话,这里要想获得目标网站真实的IP地址就很简单了。可以直接在cmd中利用ping获取目标IP地址,也可以使用刚刚的在线ping网站:http://ping.chinaz.com  

    那么如果确定了网站使用CDN之后,我们应该如何绕过CDN呢?

    如果目标网站使用了CDN的话,我们就需要绕过CDN后去获得其真实IP地址,有以下几种方法:

    1. 通过网站的phpinfo文件:phpinfo.php。该文件泄漏真实IP(其中的<strong>_SERVER["SERVER_ADDR"]</strong>或<strong>SERVER_ADDR</strong>)

      通过phpinfo()泄漏的ip直接无视cdn。

    2. 分站IP地址,查询子域名:CDN很贵,很有可能分站就不再使用CDN

    3. 通过国外访问:https://asm.ca.com/en/ping.php

    4. 通过内部邮箱源:收集到内部邮箱服务器IP地址

    5. 查询域名解析记录:https://viewdns.info。常常服务器在解析到 CDN 服务前,会解析真实 ip,如果历史未删除,就可能找到。

    6. 网络空间引擎搜索法。有shodan,fofa,ZoomEye等。我比较常用fofa。

      还有许多别的方法,这里就不赘述了。

    这里用fofa试一下:

    用到的语法为host="www.baidu.com" && domain="baidu.com"

    其中host="www.baidu.com"从url中搜索"www.baidu.com"domain="baidu.com"搜索根域名带有baidu.com的网站

    这里基本上就是网站的真实IP

    网络空间引擎很多时候能获取网站的真实ip

    再介绍下国内网站https://viewdns.info来查询IP地址:

    这里还要记得要验证下

    2.1.5.4.验证真实IP地址

    通过以上的六种方法我们可以获取到很多IP地址,这时我们需要确定哪一个才是真正的IP地址。具体的方法如下:

    利用IP地址对Web站点进行访问,如果正常表明是真实IP地址,否则就是假的。

    我这里把结果都输入url中,都返回了百度页面,说明是真实的IP地址

    2.2.敏感信息

    这里可以利用搜索引擎来搜索目标暴露在互联网上的相关信息。比如:SQL注入、数据库文件、服务配置信息,甚至是通过Github找到站点泄露源代码,以及redis等未授权访问、robots.txt等敏感信息,从而达到目的。

    2.2.1.Github信息泄露

    Web源代码泄露其实不止Github信息泄露这一种,还有好多种,这里看图

    我这里重点介绍下Github信息泄露

    2.2.1.1.介绍

    github.com

    github是全球最大的面向开源及私有软件项目的托管平台。

    许多企业的开发人员在上传开源代码到github往往忽略了将密码等敏感信息删除导致信息泄露。

    2.2.1.2.方法

    通过Github获取数据库泄露信息。

    site:Github.com sa password
    
    site:Github.com root password
    
    site:Github.com User ID='sa'

    使用Github获取邮件配置信息泄露的信息

    site:Github.com smtp @qq.com
    site:Github.com smtp

    还有许多方法,这里可以自己研究下

    2.2.2.Google hacking

    2.2.2.1.介绍

    搜索引擎都会提供相应搜索语法,通过搜索语法可以快速得到想要的信息。

    推荐搜索引擎:必应:bing.com、百度:baidu.com、谷歌:google.com

    2.2.2.2.推荐语法

    intitle:搜索网站标题含有的关键字

    inurl:搜索url含有的关键字

    intext:搜索网页正文含有的关键字

    site :搜索特定网站和网站域名

    filetype:搜索特定文档格式

    比如:搜索敏感信息泄露intitle:"index of" admin

    2.2.2.3.配合URL采集器使用

    URL采集器:快速切换搜索引擎,快速获得搜索结果。

    2.2.3.HTTP响应报文信息收集

    2.2.3.1.介绍

    通过HTTP或HTTPS访问目标网站后,HTTP/HTTPS协议中的目标响应报文中的Server头会暴露目标服务器名称,X-Powered-By头会暴露目标使用的编程语言的信息,通过这些信息可以有针对的利用漏洞进行尝试。

    2.2.3.2.方法

    获取HTTP响应报文的方法有:

    1.利用工具。如浏览器开发者工具、BurpSuite、Fiddler等工具获取

    2.自己编写脚本文件,如Python的脚本文件,使用requests库

    Python的代码如下:

    import requests
    r = requests.get('http://www.xxx.com')
    print(r.headers)

    这里来说说浏览器的开发者工具查看。

    在浏览器中,按F12就能打开浏览器的开发者工具了。获取“网络”中HTTP响应报文的信息

    2.3.端口信息

    如果把IP地址比作一栋大楼,端口就是出入这栋大楼的门。真正的大楼只有几个门,但是一个IP地址的端口可以有65536(2的16次方)个。端口是通过端口号来标记的,端口号只有整数,范围从0到65535(2的16次方减1 )。

    在端口分类中,按端口号可分为三类:

    1.公认端口:范围是从0到1023(1024是2的10次方),它们绑定于一些服务,通常这些端口的通信表明了某种服务的协议。比如,21端口是FTP服务所开放的。

    2.注册端口:范围是从1024到49151(49152是2的16次方减2的14次方),它们松散地绑定于一些服务。

    3.动态和/或私有端口:从49152到65535(65536是2的16次方),理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

    在计算机中,每个端口代表一个服务。

    查找

    在Windows的cmd命令行中使用netstat -ano(-a:显示所有连接和侦听端口;-n:以数字形式显示地址和端口号;-o:显示拥有的与每个连接关联的进程 ID)显示开放端口。

    在Linux的命令行中使用netstat -atu(-a:所有的套接字;-t :TCP连接;-u:UDP连接)显示开放端口,还可以加入-p来显示进程或程序名的相关PID。

    2.3.1.端口扫描技术

    通常使用专门的端口扫描工具来进行。可以详细收集目标开放的端口、服务、应用版本、操作系统、活跃主机等多种信息。

    端口扫描流程:

    1.存活判断:Ping,TCP扫描,UDP扫描

    2.端口扫描:TCP扫描,UDP扫描

    3.服务识别:基于端口,基于banner,基于指纹

    2.3.2.端口探测技术

    一般通过发送建立连接过程涉及的相关报文,根据返回包的情况来判断目标端口是否开放。

    主流的扫描方式:利用TCP面向连接三次握手、四次挥手过程包,UDP非面向连接请求。

    TCP Connect Scan

    完成3次握手后,断开连接,被扫描服务器日志会记录下连接的内容

    效率低,速度慢,准确度高

    TCP SYN

    发送SYN包,不建立连接。

    若端口开放, 扫描器收到 SYN/ACK 标识回复

    若端口关闭, 扫描器收到 RST 标识回复

    效率较高,隐蔽性强

    NULL扫描

    发送flags标识位全为0的TCP包,用于判断操作系统类型

    若扫描主机是windows系统,不管端口开放情况,都会回复RST包

    若扫描主机是linux系统,若端口开放,则不回复。 若端口关闭,则回复RST包

    FIN扫描

    发送FIN置1的包

    若端口开放, 目标主机不回复

    若端口关闭, 目标主机回复RST

    ACK扫描

    发送ACK置1的包,获取回报TTL的值

    TTL值小于64端口开启

    大于64端口关闭

    2.3.3.服务识别技术

    识别端口上运行的服务,识别方式有基于端口、基于banner和基于指纹三种。

    1.基于端口:根据端口默认运行的服务进行判断。

    2.基于banner:根据访问端口获取的欢迎页面来判断。

    3.基于指纹:根据不同系统不同服务具有不同的TCP/IP协议栈来判断。

    三种识别方式在准确率和效率上各有不同,实际使用通常会相互配合使用。

    banner:访问一个主机端口时,该端口所运行的服务有时会返回对应服务和版本号。

    2.3.4.工具之Nmap端口扫描器的使用

    2.3.4.1.介绍

    Nmap(Network Mapper),在网络中具有强大的信息收集能力。

    Nmap具备主机探测、服务/版本检测、操作系统检测、网络路由跟踪、Nmap脚本引擎的功能,在Kali中右键鼠标选择“打开终端”输入nmap和对应参数进行使用。也可以在Windows系统中自行安装Nmap,其中可以使用cmd的形式运行,也可以用zenmap的图形化工具来运行。

    2.3.4.2.基本命令格式

    nmap  [参数]  IP/IP段/主机名

    如下图

    2.3.4.3.具体参数

    1.目标端口选项
    -p:扫描指定的端口

    -F:快速扫描100个常用的端口

    -r:顺序扫描,按从小到大的顺序进行端口扫描

    2.其他常用选项
    -sV:检测服务端软件版本信息

    -O:检测操作系统信息

    -Pn:禁用nmap的主机检测功能

    -A:探测服务版本、对操作系统进行识别、进行脚本扫描、进行路由探测

    3.一些常用选项
    TCP扫描端口选项:

    -sT:使用TCP连接扫描,对目标主机所有端口进行完整的三次握手,如果成功建立连接则端口是开放的(不需要root权限,TCP扫描的默认模式,端口状态和SYN相同,耗时长)

    -sS:使用半开连接(SYN stealth)扫描,使用SYN标记位的数据包进行端口探测,收到SYN/ACK包则  端口是开放的,收到RST/ACK包则端口是关闭的。(匿名扫描,默认不加类型,需要root权限,扫描速度快)

    -sA:TCP ACK扫描使用ACK标志位数据包,若目标主机回复RST数据包,则目标端口没有被过滤(用于发现防  火墙的过滤规则)。

    UDP扫描端口选项:

    -sU:使用UDP数据包经行扫描,返回UDP报文,则端口是开放的;返回不可达则端口处于关闭或过滤状态。(DNS,SNMP和DHCP等服务,更慢更困难)

    4.不常用选项
    TCP扫描端口选项:

    -sN:TCP NULL扫描不设置标志位,标志头是0,返回RST数据包则端口是关闭的,否则端口是打开|过滤状态

    -sF:TCP FIN扫描只设置FIN标志位。若返回RST数据包则端口是关闭的,否则端口是打开|过滤状态。

    -sX:TCP XMAS扫描设置FIN、PSH、URG标志位,若返回RST数据包则端口是关闭的,否则端口是打  开|过滤状态。

    -sM:TCP Maimon扫描使用FIN/ACK标识的数据包,端口开放就丢弃数据包,端口关闭则回复RST(BSD)。

    -sW:TCP窗口扫描,检测目标返回的RST数据包的TCP窗口字段,字段值是正值说明端口是开放状态,字段值为0,则端口关闭。

    -sI:TCP Idle扫描,使用这种技术,将通过僵尸主机发送数据包与目标主机通信。

    5.输出选项(很少用)
    -oN:标准输出为指定的文件

    -oX:生成XML格式文件,可以转换成HTML文件

    6.脚本扫描

    --script=--script=vuln:检查是否存在常见漏洞

    --script=brute:提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解

    --script=default:默认脚本扫描,主要搜集各种应用服务的信息,收集后,可再针对具体服务进行攻击

    --script=external:利用第三方的数据库或资源

    2.4.网站信息

    2.4.1.敏感目录与文件

    2.4.1.1.介绍

    如果网站的后台被攻击者找到,那么就可以进行暴力破解,如果是设置的弱口令那就能够登录后台了;如果备份泄露,被攻击者下载下来,那么攻击者就可以代码审计,来找到网站的漏洞。而像这些后台,备份该如何找呢?这里就推荐一些工具。

    2.4.1.2.工具推荐

    1.dirsearch

    dirsearch是一个基于python的命令行工具,旨在暴力扫描网站的页面结构,包括网页中的目录和文件。

    使用:

    结果:

    2.御剑后台扫描工具

    御剑后台扫描可以用于扫描后台,用法简单。添加需要扫描后台的域名,然后会根据你设置的字典,然后设置合适的线程和扫描速度等就可以开始扫描了。扫描结果会显示出来,点击访问即可。

    3.总结:这两个工具都是根据你所设置的字典来扫描的,所以一定要完善好自己的字典,这决定了你是否能找到别人找不到的东西。

    2.4.2.CMS指纹识别

    2.4.2.1.介绍

    CMS是"Content Management System"的缩写,意为"内容管理系统",用于网站内容管理。用户只需要下载对应的CMS软件包,就能部署搭建,并直接利用CMS。但是各种CMS都具有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来获取CMS站点的具体软件CMS与版本。

    在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。

    2.4.2.2.查询工具

    http://whatweb.bugscaner.com

    2.4.3.征信查询

    2.4.3.1.企业征信

    企业征信机构记录了一家企业的基本信息,历史沿革,股东及出资等信息的平台。

    2.4.3.2.查询工具

    https://www.tianyancha.com


    https://www.qcc.com

    2.4.4.备案号查询

    2.4.4.1.介绍

    备案号:

    根据IP地址查询同一IP地址的其他信息。

    备案号是网站是否合法注册经营的标志,一个网站域名要上线必然要经过备案程序,通过备案号反查可查询目标的所有合法网站。

    2.4.4.2.查询工具

    https://icp.aizhan.com

    http://icp.chinaz.com

    发表于 2021-4-2 15:38:43
    不要一稿多投,我看freebuf有
    让我们一起干大事!
    有兴趣的表哥加村长QQ:780876774!
    使用道具 举报 回复
    村长CZ 发表于 2021-4-2 15:38
    不要一稿多投,我看freebuf有

    好的村长,我错了
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册