Exp5 信息搜集与漏洞扫描

发布时间 2023-04-19 15:38:26作者: 不加糖的酒
  • 一、实践原理说明

    • 1.实践目标

      • 掌握信息搜集的最基础技能与常用工具的使用方法。
    • 2. 实践内容

      • 各种搜索技巧的应用
        • DNS IP注册信息查询
        • 基本的扫描技术:主机发现、端口扫描、OS及服务版本探测、具体服务的查点(以自己主机为目标)
        • 漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞(以自己主机为目标)
  • 二、实践原理

    • 1. 信息搜集

      • 信息搜集:渗透测试中首先要做的重要事项之一,搜集关于目标机器的一切信息
      • 间接搜集
        • DNS记录扫描和枚举
        • CorpWatch:auxiliary/gather/corpwatch_lookup_name
        • 搜索引擎子域名搜集器auxiliary/gather/searchengine_subdomains_collector
        • 在线搜索工具
          • GHDB
          • 设备搜索:shodan,censys,zoomeye
          • viewdns
      • 间接搜集
        • 主机扫描:发现网络上的活动主机 modules/auxiliary/scanner/discovery
        • 端口扫描:发现主机上的开放端口,通过 search portscan 命令查看MSF中的端口扫描模块
        • 版本探测:探测端口上的运行服务
          • SMB auxiliary/scanner/smb/smb_ 一种在 Microsoft Windows系统中使用网络文件共享的协议,已被证明是最容易被攻击的协议之一,它允许攻击者枚举目标文件和用户,甚至远程代码执行。
          • SSH auxiliary/scanner/ssh 一个广泛使用的远程登录程序。
          • FTP auxiliary/scanner/ftp
          • SMTP auxiliary/scanner/smtp/smtp_
          • SNMP auxiliary/scanner/snmp/snmp_enum用于管理网络设备的协议,比如监控设备的状态信息,接口信息,网络接口的数据吞吐量等,通过SNMP扫描器可以找到特定系统的大量信息。如果目标系统为Windows且配置了SNMP(通常是RO/RW团体字符串),我们可以提取系统重启时间,系统上的用户名,系统网络信息,运行的服务等各种有价值的信息。
          • HTTPauxiliary/scanner/http/
        • 漏洞探测:探测服务是否有相应漏洞
          • NMAP:也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。
      • 社会工程学
      • 漏洞扫描与Openvas
  • 三、实践过程记录

    • 3.1 各种搜索技巧的应用

    • 3.1.1 搜索网址目录结构

      • 原理:
        • 利用metasploit的dir_scanner辅助模块,暴力猜解,获取网站目录结构。
        • dir_scanner是Metasploit当中的一个辅助模块,通过“use uxiliary/scanner/http/dir_scanner”命令调用。参数设置完成后使用exploit或者run命令发起攻击。
        • 开始攻击前的参数设置:
          • THREADS:攻击使用的线程数,数值越大力度越大,数值小不容易被发现
          • RHOSTS:目标网址或IP地址,url或IP前后http://和具体路径
      • 实践:
        • 我们输入以下指令:

          				  msfconsole
          				  use auxiliary/scanner/http/dir_scanner
          				  set THREADS 20
          				  set RHOSTS www.baidu.com
          				  exploit
          
        • 于是获得目标 www.baidu.com 的网页目录结构如下:

        • 然后可以通过枚举法,暴力猜解网站目录结构

    • 3.1.2  检测特定类型的文件

      • 原理:
      • 网上一些网站会直接链接通讯录、各种名单等很多有敏感信息的文件,可以对特定类型的文件进行针对性查找
        • filetype 限定搜索结果的文件类型
          • 格式:检索词 filetype:文件类型
        • site :限定检索结果的来源
          • 格式:“检索词 site:限制域名”(域名不含有“http:”和“www.”)
        • inurl :在网址中进行搜索
          • 格式:“检索词inurl:检索词”
        • |  :表示布尔逻辑中的或者(or)关系
          • 格式:“关键词1 | 关键词2”
        • (空格) :表示布尔逻辑中的交集(and)关系
          • 使用格式为“关键词1 关键词2”
      • 实践:
        • 在百度中搜索 site:edu.cn filetype:xls
        • 表示我们针对的是一些学校的网站,查询的文件类型为xls
        • 点击搜索结果后,就会自动开始下载
        • 我们查看下载的文件,里面就有很多个人隐私信息
    • 3.1.3  使用traceroute命令进行路由侦查

      • 原理:
        • traceroute命令利用ICMP协议定位用户计算机和目标计算机之间的所有路由器。
        • 通过traceroute我们可以知道信息从我们自己的计算机到互联网另一端的主机是走的什么路径。
        • 每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但大部分时候所走的路由是相同的。
        • traceroute指令让我们追踪网络数据包的路由途径,预设数据包大小是40Bytes,当然我们也可以另行设置。
        • 格式: 具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
      • 实践:
        • 在cmd中输入 tracert www.baidu.com
          • 结果分析:
            • 第一列:生存时间,每个纪录就是一跳 ,每跳表示一个网关,每途经一个路由器结点自增1,
            • 中间三列:三次发送的ICMP包,网关响应后返回的时间,单位为毫秒。
              • 如果在 3 秒的超时时间间隔中没有来自探测的应答,那么会针对该探测显示出 *(星号)。
            • 第五列:主机名以及途经路由器的IP地址。
    • 3.2 DNS IP注册信息的查询

    • 3.2.1 whois域名注册信息查询

      • 在kali中输入 whois + 域名 (要注意的是,域名是不包括www.和https://这些内容的),我们可以得到以下信息:

        			  Domain Name: 域名
        			  Registrar: 注册商(注意,有可能给你提供注册服务的不是顶级注册商,是使用了别人的域名接口,所以可能你看到的注册商和你的域名商不一致。)
        			  Whois Server: whios的服务器
        			  Referral URL:注册地址,就是为你提供注册域名的服务商网址
        			  Name Server:解析该域名的DNS服务器
        			  Status: clientDeleteProhibited (域名的状态)
        			  Status: clientTransferProhibited(域名的状态)
        			  Updated Date:已续费时间和域名操作更新时间
        			  Creation Date: 注册时间
        			  Expiration Date: 过期时间
        
        • 我们输入 whois csdn.net 查询到的信息如下:
    • 3.2.2 nslookup查询

      • 实践原理
        • nslookup可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用哪个DNS服务器进行解释。在已安装TCP/IP协议的电脑上面均可以使用这个命令。主要用来诊断域名系统 (DNS) 基础结构的信息。Nslookup(name server lookup)( 域名查询):是一个用于查询 Internet域名信息或诊断DNS 服务器问题的工具。
      • 实践步骤
        • 在kali中输入 nslookup baidu.com
    • 3.2.3dig查询

      • 实践原理
        • Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。Dig可以让你有效地查询DNS,最常用的查询是A记录,TXT(文本注释),MX记录,NS记录,或者任意综合查询。
        • 参考网址
      • 实践步骤
        • 输入dig baidu.com
        • 结果分析:
          • 第一部分:显示 dig 命令的版本和输入的参数。
          • 第二部分:显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
          • 第三部分: "QUESTION SECTION" 显示我们要查询的域名。
          • 第四部分: "ANSWER SECTION" 是查询到的结果。
          • 第五部分:本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
        • 此外,还可以在dig后面添加后缀,查询其他内容,比如:
          • +short 控制显示内容。dig 命令默认返回的结果展示详细的信息,如果要获得精简的结果可以使用 +short 选项
          • +trace跟踪整个查询过程,如果你好奇 dig 命令执行查询时都经历了哪些过程,你可以尝试使用 +trace 选项。它会输出从根域到最终结果的所有信息。
          • +search :使用搜索列表或 resolv.conf 中的域伪指令(如果有的话)定义的搜索列表。缺省情况不使用搜索列表。
          • +identify :当启用 +short 选项时,显示 [或不显示] 提供应答的 IP 地址和端口号。
          • +stats :该查询选项设定显示统计信息:查询进行时,应答的大小等等。缺省显示查询统计信息。
    • 3.2.4   IP2Location 地理位置查询

    • 3.2.5  IP2 反域名查询

      • 网站:https://www.shodan.io/
      • 这个网站可以进行反域名查询,能搜索到查询IP地址的地理位置、服务占用端口号,以及提供的服务类型
      • 打开网站,输入ip地址 120.46.209.149 ,这里我查询的是 csdn.net 的ip地址
        • image.png
        • 可以看到它占用的端口号为80、443
        • 所在地为中国北京
    • 3.3 基本的扫描技术:主机发现、端口扫描、OS及服务版本探测、具体服务的查点(以自己主机为目标)

      • 3.3.1 主机发现

        • ping
          • ping 用于测试网络连接量检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
          • Ping发送一个ICMP即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMP echo。
          • 它是用来检查网络是否通畅或者网络连接速度的命令。
          • 我们在命令行输入 ping csdn.net
        • metasploit的arp_sweep模块和udp_sweep模块
          • Metasploit 中提供了一些辅助模块可用于活跃主机的发现,这些模块位于Metasploit 源码路径的 modules/auxiliary/scanner/discovery/  目录中
          • 主要有以下几个:
            • arp_sweep
            • ipv6_multicast_ping
            • ipv6_neighbor
            • ipv6_neighbor_router_advetisement
            • udp_probe
            • udp_sweep
          • 我们使用其中两个常用模块——arp_sweep模块和udp_sweep模块,主要功能为:
            • arp_sweep :使用ARP请求枚举本地局域网络中的所有活跃主机。
              • 输入(这里需要输入 sudo su ,否则会没有权限):
              • 							  msfconsole
                							  use auxiliary/scanner/discovery/arp_sweep //进入arp_sweep 模块
                							  show options //查询模块参数
                							  set RHOSTS 192.168.80.0/24 //用set进行hosts主机段设置(根据kali的ip地址设置,如ip为192.168.80.128的话,就设置为192.168.80.0/24)
                							  set THREADS 50 //加快扫描速度
                							  run //执行run进行扫描
                
            • udp_sweep :通过发送UDP数据包探查指定主机是否舌跃,并发现主机上的UDP服务。
              • 依次输入以下命令:
              • 							  msfconsole
                							  use auxiliary/scanner/discovery/udp_sweep //进入udp_sweep 模块
                							  show options //查询模块参数
                							  set RHOSTS 192.168.91.0/24 //用set进行hosts主机段设置
                							  set THREADS 50 //加快扫描速度
                							  run //执行run进行扫描
                
        • nmap -sn
          • 可以用来探测某网段的活跃主机
          • nmap还有一些其他参数如下:
            • -vv :设置对结果的详细输出;
            • --traceroute:路由跟踪;
            • -sS:TCP SYN扫描,可以穿透防火墙;
            • -sA:TCP ACK扫描。有时候由于防火墙会导致返回过滤/未过滤端口;
            • -sP:发送ICMP echo探测, 设置扫描方式为ping扫描;
            • -sT:TCP connect扫描,最准确,但是很容易被IDS检测到,不推荐;
            • -sF/-sX/-sN:扫描特殊的标志位以避开设备或软件的监测;
            • -O:启用TCP/IP协议栈的指纹特征信息扫描以获取远程主机的操作系统信息;
            • -sV:获取开放服务的版本信息;
          • 输入 nmap -sn 192.168.80.0/24
      • 3.3.2 端口扫描

        • nmap
          • 进入root模式,输入命令 nmap -PU 192.168.80.0/24
        • metasploit的端口扫描模块
          • modules/auxiliary/scanner/portscan 下的tcp模块用来扫描靶机的TCP端口使用情况;
          • 依次输入命令如下:
          • 					  msfconsole
            					  use auxiliary/scanner/portscan/tcp //设置模块
            					  set RHOSTS 192.168.80.0/24 
            					  set THREADS 50  //设置扫描端口范围
            					  exploit //开始扫描
            
      • 3.3.3  操作系统版本探测

        • nmap -O <目标IP>
          • 让Nmap对目标的操作系统进行识别,获取目标机的操作系统和服务版本等信息。
          • 其中-O是检测操作系统交换机 <目标IP>是特定目标IP地址。
          • 输入命令 nmap -O 192.168.80.128(kali的ip)
        • nmap -sV
          • -sV :打开版本探测,查看目标主机的详细服务信息
          • -Pn :非ping扫描,不执行主机发现,可以跳过防火墙,也就是在扫描之前,不发送ICMP echo请求测试目标。
          • 输入命令 nmap -sV -Pn 192.168.80.128
      • 3.3.4  具体服务的查点

        • 每个具体服务的探测都对应一个msf模块,在modules/auxiliary/scanner中进行搜索
        • Telnet服务扫描
          • telnet命令用于登录远程主机,对远程主机进行管理。
          • 如果我们要使用telnet的远程登录,使用前应在远端服务器上检查并设置允许telnet服务的功能。
          • 输入以下命令:
          • 					  msfconsole
            					  use auxiliary/scanner/telnet/telnet_version //进入telnet模块
            					  set RHOSTS 192.168.80.0/24 //扫描192.168.91.0网段
            					  set THREADS 50 //提高查询速度
            					  run
            
        • SSH服务
          • 使用 auxiliary/scanner/ssh/ssh_login 模块
          • 安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。
          • SSH是广泛使用的用于保护数据通信安全的协议。
          • 通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了, 而且也能够防止DNS和IP欺骗。还有一个 额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
          • 依次输入以下命令:
          • 					  msfconsole
            					  use auxiliary/scanner/ssh/ssh_version //进入ssh模块
            					  set RHOSTS 192.168.80.0/24 //扫描网段
            					  set THREADS 50 //提高查询速度
            					  run
            
        • Oracle数据库服务查点
          • 使用 auxiliary/scanner/oracle/tnslsnr_version 模块
          • 依次输入以下命令:
          • 					  msfconsole
            					  use auxiliary/scanner/oracle/tnslsnr_version//选用需要的模块
            					  show options
            					  set RHOSTS 192.168.80.0/24 //扫描网段
            					  set THREADS 200  //提高查询速度
            					  run
            
    • 3.4 漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞(以自己主机为目标)

      • ** Step1:安装OpenVAS**
        • 考虑到kali安装速度以及稳定性,选择使用新的虚拟机安装gvm。参照实验负责人的实验报告,使用别人已经安装好feed的gvm镜像文件,最后可以使用。
        • 打开导入完成的虚拟机,输入用户名admin和密码123456,并记录ip
          • 本人更改虚拟机密码为fecuso4!!!
        • 在主机中打开刚才的ip地址,继续连接
          • 但是在输入用户名和密码时,密码还是为123456.
          • 登录成功后是以下界面
          • 点击 Scans 选择 Task ,点击左边那个魔法棒,选择 Task Wizard
          • 输入本机ip地址
          • 等待扫描
          • 扫描完成
      • ** Step2:分析结果**
        • 我们点击 Full and Fast 查看详细信息
          • 可以看到,这里共有六项内容:
            • Information:信息
            • Scanner Preference:扫描器选择
            • NVT FamiliesNVT :指漏洞族群
            • NVT Preferences:网络漏洞测试选择
            • User Tags:用户标签
            • Permissions:用户准入
          • 打开 Buffer overflow
            • 可以看到里面有很多漏洞
            • image.png
            • 可以看到里面有很多漏洞,但是危险等级不同,我们打开这个最高的10的漏洞看看
              • 其中的主要内容是:
              • Summary 该漏洞的描述,也就是此主机正在运行3CTftpSvc TFTP服务器,容易出现缓冲区溢出漏洞。
              • Insight 是说该缺陷是由于处理过程中的边界错误造成的,TFTP读/写请求包类型。这个可以利用此漏洞导致堆栈通过发送带有超长模式字段的巧尽心思构建的数据包,实现基于缓冲区的溢出。
              • Impact 代码可能造成的后果,就是说:成功利用此漏洞将允许攻击者导致应用程序崩溃,拒绝向合法用户提供进一步服务。
              • Solution 是关于该漏洞的解决方案:该漏洞至少一年内没有解决方案或修补程序。这个网站可能不会再提供解决方案了。一般解决方案是升级到一个较新的版本,禁用各自的功能,删除产品或更换产品的另一个。
            • 我们再来看一个FTP中的漏洞
              • 我们查看这个危险等级为9.3的漏洞
              • 具体分析如下:
              • Summary 描述:此主机安装有3D FTP客户端,容易出现目录遍历漏洞。
              • Insight 原因:该漏洞的存在是由于处理某些文件时出错造成的文件名字。它未正确清理包含从FTP服务器接收的directorytraversal序列的文件名。
              • Impact 后果:成功利用此漏洞将允许攻击者将文件写入,在用户登录时执行恶意代码的用户的启动文件夹。
              • Solution 解决:升级至9.03或更高版本。
  • 四、实验后回答问题

    • 1.哪些组织负责DNS,IP的管理

      • ICANN(互联网名称与数字地址分配机构)负责全球IP地址和域名管理。
      • ICANN负责在全球范围内对互联网唯一标识符系统及其安全稳定的运营进行协调,包括:
        • 互联网协议(IP)地址的空间分配
        • 协议标识符的指派
        • 通用顶级域名(gTLD)
        • 国家和地区顶级域名(ccTLD)系统的管理
        • 根服务器系统的管理
      • 全球根域名服务器:绝大多数在欧洲和北美(全球13台,用A~M编号),中国仅拥有镜像服务器(备份)。
      • 全球一共有5个地区性注册机构:
        • ARIN主要负责北美地区业务
        • RIPE主要负责欧洲地区业务
        • APNIC主要负责亚太地区业务
        • LACNIC主要负责拉丁美洲美洲业务
        • AfriNIC负责非洲地区业务
    • 2.什么是3R信息

      • 注册人(Registrant)
      • 注册商(Registrar)
      • 官方注册局(Registry)
    • 3.评价下扫描结果的准确性

      • 总体来说还是算准确的,但是难免会有一些出入。但各种扫描方式的侧重点不同,所呈现的扫描结果都不相类似。
  • 五、实验总结与体会

    • 这次的实验难点在于Openvas的安装,以及使用工具搜索信息、扫描漏洞后对得到信息的分析。所以我选择了参照实验负责人的实验报告,安装一个GVM的虚拟机。
    • 通过实验,我掌握了信息搜集的最基础技能,还有一些常用工具的使用方法,也学会了信息分析的一些方法。
    • 本次实验中进行了信息搜集,这是渗透测试的第一步。当然,在平时我们也可以对自己的信息进行搜集,对自己的网络安全性进行评估,优化防御策略,增强网络安全。