20181330 王茜《网络对抗技术》Exp5 信息搜集与漏洞扫描
1.实践原理说明
1.1 实践目标
掌握信息搜集的最基础技能与常用工具的使用方法。
1.2 实践内容
1.2.1 各种搜索技巧的应用
1.2.2 DNS IP注册信息的查询
1.2.3 基本的扫描技术:主机发现、端口扫描、OS及服务版本探测、具体服务的查点(以自己主机为目标)
1.2.4 漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞(以自己主机为目标)
2.实践过程记录
2.1 各种搜索技巧的应用
2.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 的网页目录结构如下:
- 然后可以通过枚举法,暴力猜解网站目录结构
2.1.2 检测特定类型的文件
原理:
- 网上一些网站会直接链接通讯录、各种名单等很多有敏感信息的文件,可以对特定类型的文件进行针对性查找
- filetype 限定搜索结果的文件类型
- 格式:检索词 filetype:文件类型
- site :限定检索结果的来源
- 格式:“检索词 site:限制域名”(域名不含有“http:”和“www.”)
- inurl :在网址中进行搜索
- 格式:“检索词inurl:检索词”
- | :表示布尔逻辑中的或者(or)关系
- 格式:“关键词1 | 关键词2”
- (空格) :表示布尔逻辑中的交集(and)关系
- 使用格式为“关键词1 关键词2”
- filetype 限定搜索结果的文件类型
实践:
- 在百度中搜索 site:edu.cn filetype:xls
- 表示我们针对的是一些学校的网站,查询的文件类型为xls
- 点击搜索结果后,就会自动开始下载
- 我们查看下载的文件,里面就有很多个人隐私信息
2.1.3 使用traceroute命令进行路由侦查
原理:
- traceroute命令利用ICMP协议定位用户计算机和目标计算机之间的所有路由器。
- 通过traceroute我们可以知道信息从我们自己的计算机到互联网另一端的主机是走的什么路径。
- 每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但大部分时候所走的路由是相同的。
- traceroute指令让我们追踪网络数据包的路由途径,预设数据包大小是40Bytes,当然我们也可以另行设置。
- 格式: 具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
实践:
- 我们使用一个最简单、最常用的命令,输入 traceroute www.baidu.com
结果分析:
- 第一列:生存时间,每个纪录就是一跳 ,每跳表示一个网关,每途经一个路由器结点自增1,
- 中间三列:三次发送的ICMP包,网关响应后返回的时间,单位为毫秒。
- 如果在 3 秒的超时时间间隔中没有来自探测的应答,那么会针对该探测显示出 *(星号)。
- 第五列:主机名以及途经路由器的IP地址。
那么得到这些结果我们可以干什么呢?
- 我们就可以通过这个命令找到到达目的服务器的线路,如果发现这条线路网络掉包较高可以切云服务器的地点。
- 可以通过这个网站进行查找:https://tool.lu/ip/
查询结果如下:
- 这里就不一一举例了,最后得到计算机的大致线路如下:
124.65.143.5 北京市 联通 61.51.113.109 北京市 联通 125.33.186.17 北京市海淀区 联通 110.242.66.182 河北省保定市 联通 221.194.45.130 河北省保定市阜平县 联通 110.242.68.4 河北省保定市 联通
2.2 DNS IP注册信息的查询
2.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 查询到的信息如下:
2.2.2 nslookup,dig域名查询
- nslookup
-
可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用那个DNS服务器进行解释。
-
在已安装TCP/IP协议的电脑上面均可以使用这个命令。
-
主要用来诊断域名系统(DNS)基础结构的信息。
- 可以得到DNS解析服务器保存的Cache的结果,但并不是一定准确的。
- 我的kali中没有安装nslookup
- 如果不是最新的安装源需要先升级,输入 sudo apt-get update
- 然后安装nslookup,输入 sudo apt-get install dnsutils
- 安装好之后,我们输入nslookup csdn.net 进行查询
-
Server : 返回的是自己的服务器
-
Address : 返回自己的IP
-
Non-authoritative answer : 未验证的回答
-
Name :目标域名
-
Addresses : 目标返回的Ip
-
- dig
-
查询域名的A记录,查询的dns服务器将采用系统配置的服务器,即 /etc/resovle.conf 中的。
- 如果要查询其他类型的记录,比如MX,CNAME,NS,PTR等,只需将类型加在命令后面即可。
-
DNS 记录的类型说明
-
类型A记录 : A记录是指定域名对应的IP地址。
- 类型AAAA记录 :该记录是将域名解析到一个指定的IPV6的IP上
- 类型CNAME记录 :通常称别名解析。可以将注册的不同域名都转到一个域名记录上,由这个域名记录统一解析管理,与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址
- 类型NS记录 : 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。
- 类型MX记录 :如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录。
- 类型TXT记录 : 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。
-
-
-
- 可以从官方DNS服务器上查询精确的结果。
- 我们输入 dig csdn.net 查询
结果分析:
-
第一部分:显示 dig 命令的版本和输入的参数。
-
第二部分:显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
-
第三部分: "QUESTION SECTION" 显示我们要查询的域名。
-
第四部分: "ANSWER SECTION" 是查询到的结果。
-
第五部分:本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
- +short 控制显示内容。dig 命令默认返回的结果展示详细的信息,如果要获得精简的结果可以使用 +short 选项
- +trace跟踪整个查询过程,如果你好奇 dig 命令执行查询时都经历了哪些过程,你可以尝试使用 +trace 选项。它会输出从根域到最终结果的所有信息。
- +[no]search 使用 [不使用] 搜索列表或 resolv.conf 中的域伪指令(如果有的话)定义的搜索列表。缺省情况不使用搜索列表。
- +[no]tcp 查询域名服务器时使用 [不使用] TCP。缺省行为是使用 UDP,除非是 AXFR 或 IXFR 请求,才使用 TCP 连接。
- +[no]vc 查询名称服务器时使用 [不使用] TCP。+[no]tcp 的备用语法提供了向下兼容。vc 代表虚电路。
- +[no]nssearch 这个选项被设置时,dig 试图寻找包含待搜名称的网段的权威域名服务器,并显示网段中每台域名服务器的 SOA 记录。
2.2.3 IP2Location地理位置查询
Step1:根据ip查看地理位置
实践:
- 在命令行输入 ping csdn.net 得到网站的ip地址:
- csdn.net的ip地址为 47.95.164.112
- 在www.maxmind.com网站下方输入ip地址,提交查看结果:
- 提交自己的ip地址试试呢?
- 可以看到我当前的地理位置。
Step2:根据ip地址查询更多详细信息
实践:
- 网站上方显示的是自己本机的ip地址
- 在右上角输入我自己的ip看看~
- 居然经纬度都有,好具体。
2.2.4 IP2反域名查询
实践:
- 这个网站可以进行反域名查询,能搜索到查询IP地址的地理位置、服务占用端口号,以及提供的服务类型
- 打开网站,输入ip地址 47.95.164.112 ,这里我查询的是 csdn.net 的ip地址
- 可以看到 csdn.net 占用的端口号为80和443
- 地理位置是中国北京
- 还可以看到 csdn.net 提供的服务
2.2.5 netcraft提供信息查询服务
实践:
- 打开网站,输入要查询的网址,同样地我们查询csdn.net的网址 https://www.csdn.net/
- 可以看到很多网站的信息,包括:
- 域名服务器: vip3.alidns.com
- 域名注册商: hichina.com
- 托管公司: 阿里巴巴集团
- ……
2.3 基本的扫描技术:主机发现、端口扫描、OS及服务版本探测、具体服务的查点(以自己主机为目标)
2.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.91.0/24 //用set进行hosts主机段设置 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进行扫描
- arp_sweep :使用ARP请求枚举本地局域网络中的所有活跃主机。
- 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.91.0/24
2.3.2 端口扫描
- nmap -PU
- 对UDP端口进行探测,与 metasploit 的 udp_sweep 模块功能相同。
- 输入命令 nmap -PU 192.168.91.0/24
- metasploit的tcp模块
- modules/auxiliary/scanner/portscan 下的tcp模块用来扫描靶机的TCP端口使用情况;
- 依次输入命令如下:
-
msfconsole use auxiliary/scanner/portscan/tcp //设置模块 set RHOSTS 192.168.91.133 //设置扫描地址 set PORTS 0-1024 //设置扫描端口范围 exploit //开始扫描
2.3.3 操作系统版本探测
- nmap -O <目标IP>
- 让Nmap对目标的操作系统进行识别,获取目标机的操作系统和服务版本等信息。
- 其中-O是检测操作系统交换机 <目标IP>是特定目标IP地址。
- 输入命令 nmap -O 123.127.3.121
- nmap -sV
- -sV :打开版本探测,查看目标主机的详细服务信息
- -Pn :非ping扫描,不执行主机发现,可以跳过防火墙,也就是在扫描之前,不发送ICMP echo请求测试目标。
- 输入命令 nmap -sV -Pn 192.168.91.133
2.3.4 具体服务的查点
每个具体服务的探测都对应一个msf模块,在modules/auxiliary/scanner中进行搜索
- Telnet服务扫描
- telnet命令用于登录远程主机,对远程主机进行管理。
- 如果我们要使用telnet的远程登录,使用前应在远端服务器上检查并设置允许telnet服务的功能。
- 输入以下命令:
-
msfconsole use auxiliary/scanner/telnet/telnet_version //进入telnet模块 set RHOSTS 192.168.91.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.91.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.91.0/24 //扫描网段 set THREADS 200 //提高查询速度 run
2.4 漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞(以自己主机为目标)
Step1:安装OpenVAS
- openvas在kali新版本下已被取代,执行openvas-start、openvas-feed-update命令会报错,显示没有该命令。
- 所以我们直接安装gvm
- 依次输入:
-
sudo apt-get update //更新软件库 sudo apt-get upgrade //升级软件 sudo apt-get dist-upgrade //升级系统 sudo apt-get clean apt-get install gvm //安装gvm gvm-setup //初始化gvm,这里需要很久
-
初始化完成,gvm自动创建账号admin、密码
- 可以输入命令更改用户名和密码 sudo runuser -u _gvm -- gvmd --user=admin --new-password=[password]
- 输入 sudo gvm-check-setup 检查是否安装成功,出现下面的一行字就说明安装成功
Step2:登录
- 输入 gvm-start 启动
- 在另一个终端中(不能在root下,否则会报错)输入 firefox
- 打开浏览器,输入网址
- 输入用户名和密码成功登录
Step2:扫描
- 新建Target,依次点击 scans——>Tasks——>魔法棒——>Task Wizard
- 然后输入自己win10的主机地址 192.168.91.133 ,点击 start scan ,开始扫描
- 如下图,显示Done后,就是扫描完成,点击扫描任务可以查看结果
Step3:分析结果
- 我们点击 Full and Fast 查看详细信息
- 可以看到,这里共有六项内容:
- Information:信息
- Scanner Preference:扫描器选择
- NVT FamiliesNVT :指漏洞族群
- NVT Preferences:网络漏洞测试选择
- User Tags:用户标签
- Permissions:用户准入
-
我们来看看漏洞族中的内容,打开 Buffer overflow 看看
- 可以看到里面有很多漏洞,但是危险等级不同,我们打开这个最高的10的漏洞看看
- 可以看到结果:
- 其中的主要内容是:
- Summary 该漏洞的描述,也就是此主机正在运行3CTftpSvc TFTP服务器,容易出现缓冲区溢出漏洞。
- Insight 是说该缺陷是由于处理过程中的边界错误造成的,TFTP读/写请求包类型。这个可以利用此漏洞导致堆栈通过发送带有超长模式字段的巧尽心思构建的数据包,实现基于缓冲区的溢出。
- Impact 代码可能造成的后果,就是说:成功利用此漏洞将允许攻击者导致应用程序崩溃,拒绝向合法用户提供进一步服务。
- Solution 是关于该漏洞的解决方案:该漏洞至少一年内没有解决方案或修补程序。这个网站可能不会再提供解决方案了。一般解决方案是升级到一个较新的版本,禁用各自的功能,删除产品或更换产品的另一个。
- 我们再来看一个FTP中的漏洞
- 我们查看这个危险等级为9.3的漏洞
- 、
- 可以看到:
- 具体分析如下:
- Summary 描述:此主机安装有3D FTP客户端,容易出现目录遍历漏洞。
- Insight 原因:该漏洞的存在是由于处理某些文件时出错造成的文件名字。它未正确清理包含从FTP服务器接收的directorytraversal序列的文件名。
- Impact 后果:成功利用此漏洞将允许攻击者将文件写入,在用户登录时执行恶意代码的用户的启动文件夹。
- Solution 解决:升级至9.03或更高版本。
3.实验后回答问题
3.1 哪些组织负责DNS,IP的管理。
- ICANN(互联网名称与数字地址分配机构)负责全球IP地址和域名管理。
- ICANN负责在全球范围内对互联网唯一标识符系统及其安全稳定的运营进行协调,包括:
- 互联网协议(IP)地址的空间分配
- 协议标识符的指派
- 通用顶级域名(gTLD)
- 国家和地区顶级域名(ccTLD)系统的管理
- 根服务器系统的管理
- 全球根域名服务器:绝大多数在欧洲和北美(全球13台,用A~M编号),中国仅拥有镜像服务器(备份)。
- 全球一共有5个地区性注册机构:
- ARIN主要负责北美地区业务
- RIPE主要负责欧洲地区业务
- APNIC主要负责亚太地区业务
- LACNIC主要负责拉丁美洲美洲业务
- AfriNIC负责非洲地区业务
3.2 什么是3R信息。
- 注册人(Registrant)
- 注册商(Registrar)
- 官方注册局(Registry)
3.3 评价下扫描结果的准确性。
- 总体来说还是算准确的,但是难免会有一些出入。
- 有时候使用不同的方法扫描,同样的内容还会有不同的结果。
- 具体见实验过程记录。
4.实验总结与体会
本次实验除了安装openvas比较麻烦之外,其余的内容难度不大。
通过实验,我掌握了信息搜集的最基础技能,还有一些常用工具的使用方法,也学会了信息分析的一些方法。
本次实验中进行了信息搜集,这是渗透测试的第一步。当然,在平时我们也可以对自己的信息进行搜集,对自己的网络安全性进行评估,优化防御策略,增强网络安全。
实验中有一部分是检测特定类型的文件,从网上随意下载了一份文件是“2008年研究生挂职锻炼名单”,里面有学生的学号、性别、挂职单位、指导老师……
我又随便百度了文件中的一个人名,出来了他的相关信息和报道,具体就不展示了,但是可以推测出他所在的院校是浙江大学。
我们根本没有使用什么很难的技术,随随便便都可以获取到这么多的信息,可见网络上个人隐私的泄露是多么严重……
平时还是要保护好自己的信息,但是还真的不是一件很不容易的事情。