20184313《网络对抗技术》Exp5 信息搜集与漏洞扫描
1 实践说明
1.1 实践目标
掌握信息搜集的最基础技能与常用工具的使用方法。
1.2 基础知识问答
(1)哪些组织负责DNS,IP的管理?
-
全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器、DNS和IP地址管理。全球根域名服务器:绝大多数在欧洲和北美(全球13台,用A~M编号),中国仅拥有镜像服务器(备份)。
-
全球一共有5个地区性注册机构:ARIN主要负责北美地区业务,RIPE主要负责欧洲地区业务,APNIC主要负责亚太地区业务,LACNIC主要负责拉丁美洲美洲业务,AfriNIC负责非洲地区业务。
(2)什么是3R信息?
- 注册人(Registrant)、注册商(Registrar)、官方注册局(Registry)。
(3)评价下扫描结果的准确性。
- 还是挺准确的,可能是由于我的主机比较新,会定时安装Windows更新,所以没有太严重的漏洞,之后又扫描了Win2000的虚拟机,发现确实可以探测出很多的漏洞。
2 实践内容
2.1 各种搜索技巧的应用
2.1.1 Google搜索引擎扫描——Google Hacking
Google Hacking是利用谷歌搜索引擎,配合一些语法,在互联网中实现开放式搜索,找到我们需要的信息。轻量级的搜索可以搜素出一些遗留后门,不想被发现的后台入口;中量级的搜索出一些用户信息泄露,源代码泄露,未授权访问等;重量级扫描则可能是mdb文件下载,CMS 未被锁定install页面,网站配置密码,php远程文件包含漏洞等重要信息。
- 参考博客:Google Hacking的用法
- 打开Google Hacking
- 点击左侧的搜索图标,可以自主输入想要搜索的内容
2.1.2 msf搜索引擎扫描——搜索网址目录结构
方法是利用msf自动化的工具:例如metasploit的brute_dirs,dir_listing,dir_scanner等辅助模块,主要是暴力猜解。
dir_scanner
模块- kali中进入msf控制台,使用
metasploit
的辅助模块dir_scanner
进行暴力猜解,目的是获取目的网站的目录结构
use auxiliary/scanner/http/dir_scanner #引入dir_scanner模块
info #显示配置信息
set RHOST www.baidu.com #设置扫描目标
set THREADS 50 #设置线程数,加快速度
run #开始运行
- 由下图可见,扫描到了很多的baidu.com的子网页
dir_listing
模块
use auxiliary/scanner/http/dir_listing #引入dir_listing模块
show options #显示配置信息
set RHOSTS www.baidu.com #设置扫描目标
run #开始运行
brute_dirs
模块
use auxiliary/scanner/http/brute_dirs #引入brute_dirs模块
show options #显示配置信息
set RHOSTS www.baidu.com #设置扫描目标
run #开始运行
2.1.3 搜索特定类型的文件——结合Google搜索引擎语法的扫描
- 网页输入:
site:<域名> filetype:<文件类型> <检索信息>
- 扫描出互联网上该域名下符合条件的文件
- 打开下载文件,可以获得相应信息
2.1.4 搜索E-Mali
metasploit中有search_email_collector,进行针对性的搜集。它的功能是查找搜索引擎(google、bing、yahoo),收集和某个域名有关的邮箱地址。
由于使用搜索引擎,所以并不保证100%可靠。
黑客可以利用这些信息进行网络钓鱼,骗取个人信息。
- 输入指令
use auxiliary/gather/search_email_collector #引入search_email_collector模块
show options #显示配置信息
set DOMAIN baidu.com #搜索和百度有关的邮箱地址
set OUTFILE 4313cn.txt #设置输出文件
set SEARCH_GOOGLE false #由于网络原因,无法使用Google
set SEARCH_YAHOO false #由于网络原因,无法使用雅虎
run #开始运行
- 找到的结果
2.1.5 IP路由侦查
traceroute命令利用ICMP协议定位用户计算机和目标计算机之间的所有路由器。TTL值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。
- 使用工具:traceroute
-
命令格式
traceroute [参数] [主机]
-
命令功能
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
具体参数格式:traceroute [-dFlnrvx] [-f<存活数值>] [-g<网关>...] [-i<网络界面>] [-m<存活数值>] [-p<通信端口>] [-s<来源地址>] [-t<服务类型>] [-w<超时秒数>] [主机名称或IP地址] [数据包大小]
-
命令参数
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
- kali中输入:
traceroute www.baidu.com
,可以跟踪到百度服务器经过的30个路由器的过程
- 出现 * 的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
-
windows下cmd输入:
tracert www.baidu.com
同样可以跟踪到信息
- 第一列代表了“生存时间”(每途经一个路由器结点自增1)
- 第二至第四列表示“三次发送的ICMP包返回时间”(共计3个,单位为毫秒ms)
- 第五列表示“途经路由器的IP地址”(如果有主机名,还会包含主机名)
- 带有星号(*)的信息表示该次ICMP包返回时间超时。
2.2 DNS IP注册信息的查询
2.2.1 whois域名注册信息查询
通过whois命令查询,可以获得域名信息、子域信息、服务器位置信息、3R注册信息等内容
- 注意:进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务器管理,在whois数据库中可能查询不到
在msfconsole中输入:
whois baidu.com
2.2.2 nslookup,dig域名查询
nslookup可以得到DNS解析服务器保存的Cache的结果,但并不是一定准确的
- kali中进入msf控制台,输入:
nslookup
set type=A
baidu.com
使用dig可以从官方DNS服务器上查询精确的结果
- 进入msf控制台,输入:
dig @dns.baidu.com baidu.com
,其中dns.baidu.com
为DNS服务器 - 与nslookup查询结果一致
2.2.3 IP2反域名查询
- 联网ping了一下百度
- 进入IP-ADDRESS.COM,通过IP2反域名查询到主机
- 输入目的IP域名,可以看到此IP对应的地理位置、编码(ASN)、互联网服务提供商(ISP)等信息
2.2.4 IP2Location 地理位置查询
- 进入IP在线查询网站:Detect Online Fraud and Locate Online Visitors
- 输入想要查询的ip,即可查看到地理位置
2.3 基本的扫描技术
2.3.1 活跃主机扫描
(1)ping命令:ICMP查询
(2)metasploit中的模块扫描
-
modules/auxiliary/scanner/discovery
中的arp_sweep
,ipv6_multicast_ping
,ipv6_neighbor
,ipv6_neighbor_router_advertisement
,udp_probe
,udp_sweep
等 -
arp_sweep
扫描 -
msfconsole下输入:
use modules/auxiliary/scanner/discovery/arp_sweep #引入search_email_collector模块 set RHOST 192.168.3.106 #设置扫描目标 set THREADS 20 #设置线程数,加快扫描速度 show options #显示配置 exploit #开始扫描
-
nmap扫描
在msfconsole中输入
nmap -sP 192.168.3.0/24
,表示对192.168.3.0~192.168.3.255的子网进行扫描,检测到了以下的主机。
2.3.2 端口扫描
(1)使用MSF中的auxiliary模块扫描自己的winXP主机
use auxiliary/scanner/portscan/tcp #引入auxiliary模块
show options #显示配置
set RHOSTS 192.168.43.0/24 #设置扫描目标
set THREADS 100 #设置线程数,加快扫描速度
set PORTS 1-1024 #设置端口范围
exploit #开始扫描
(2)使用nmap扫描目标主机
- 使用
nmap -sS 192.168.43.32
可以看见开放的TCP端口与对应的服务
- 扫描主机win10也可以看到其开放的端口
2.3.3 OS及服务版本探测
(1)使用nmap扫描自己的win10主机
- 使用
nmap -O -Pn 192.168.43.39
获取目标机的操作系统和服务版本等信息
- 没扫描出来版本信息等消息
- 提示信息:No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
Filtered(过滤的):由于报文无法到达指定的端口,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的。当nmap收到icmp报文主机不可达报文或者目标主机无应答,常常会将目标主机的状态设置为filtered
- 尝试加入-A扫描,识别到操作系统为Win10 Pro 19042
- 换成WinXP SP3虚拟机试试,扫出了是winXP SP2/3
(2)使用nmap -sV 192.168.43.39
查看目标主机的详细服务信息
2.3.4 具体服务的查点
每个具体服务的探测都对应一个msf模块,可以在modules/auxiliary/scanner中进行搜索
- 参考资料:Metasploit常见网络服务扫描
(1)Telnet服务扫描
Telnet先天缺乏安全性的网络服务,对于传输数据不进行加密,一般管理员大多使用SSH协议代替telnet。在渗透进入一个网络时,可以扫描一下是否有主机设备开启telnet服务。
- 进入msf控制台,输入以下命令:
use auxiliary/scanner/telnet/telnet_version #导入telnet模块
show options #查看设置信息
set RHOSTS 192.168.43.1/24 #设置扫描网段
set THREADS 50 #设置线程数提高查询速度
run #开始扫描
- 可以看到开启了telnet服务的设备(由于我的热点没有接入太多的设备,所以大部分是关闭的)
(2)SSH服务扫描
SSH(“安全外壳”)协议是用于从一个系统安全远程登录到另一个的方法。用户通过客户端 - 服务器架构格式的不安全网络使用安全通道,用于将SSH客户端与SSH服务器连接起来。一般是linux系统上最常见的远程管理服务,SSH采用了安全的加密信息传输方式。如果管理员没有限制管理员登录的ip地址或mac地址,可获取服务器口令登录服务器,对网络中开发的SSH服务主机进行扫描。
- 同样进入msf控制台,输入命令:
use auxiliary/scanner/ssh/ssh_version #导入进入ssh模块
set RHOSTS 192.168.3.0/24 #设置扫描网段
set THREADS 50 #设置线程数,提高查询速度
run #开始扫描
-
可以看到没有找到开启SSH服务的主机,因此我们可以手动配置一台WinXP虚拟机开启SSH服务,以进行扫描。
setupssh-7.3p1-2-cygwin252.exe
-
安装openSSH
-
查看SSH指令
-
- 再次扫描,发现192.168.3.139的主机运行SSH-2.0-OpenSSH_7.3版本的SSH服务
(3)Oracle数据库服务扫描
use auxiliary/scanner/oracle/tnslsnr_version #导入oracle模块
set RHOSTS 192.168.3.0/24 #设置扫描网段
set THREADS 50 #设置线程数,提高查询速度
run #运行
- 可以看到没有找到开启SSH服务的主机,但我之前在学习数据库课程时安装过MySQL,尝试使用mysql_version模块扫描开启MySQL服务的主机。
use auxiliary/scanner/oracle/mysql_version #导入mysql_version模块
set RHOSTS 192.168.3.0/24 #设置扫描网段
set THREADS 50 #设置线程数,提高查询速度
run #运行
- 发现192.168.3.142的主机开启了版本为8.0.21的MySQL服务。
2.4 漏洞扫描
会扫,会看报告,会查漏洞说明,会修补漏洞(以自己主机为目标)windows
2.4.1 安装GVM
apt-get update #更新软件库
apt-get upgrade #升级软件
apt-get dist-upgrade #升级系统
apt-get install gvm #安装gvm
gvm-setup #gvm初始化,花费时间较长,由于网络原因可能会失败,需要多次重复
- 其中遇到选择一路“Y”同意即可
- 安装完成后会自动生成默认的管理员账号和密码(可自己修改)
- 使用
gvm-check-setup
检查安装是否成功
2.4.2 使GVM用进行漏洞扫描与分析
-
输入
gvm-start
启动OpenVAS
会自动弹出网页或者或者可以在kali菜单中选择漏洞分析菜单中的gvm start来启动。
如果表示root用户,可能不能自动打开浏览器,也可以打开浏览器,在搜索栏输入
https://127.0.0.1:9392
进入网页 -
输入用户名和密码登录
- 新建任务
scan
→Tasks
→Task Wizard
-
输入扫描主机IP:
192.168.3.123
-
开始扫描:
Start Scans
- 扫描完成后点击Last Report即可查看报告
- 还可以生成pdf格式的报告,以供阅读
- 下载下来就可以方便的查看
- 报告分为两部分,第一部分介绍了被扫描主机的大致情况,列举了每个主机的威胁情况。可以看到,我的win10主机有两个中等程度的漏洞
- 可以看到探测到了我的主机的操作系统为Win10Pro 20H2
-
第一个漏洞是
DCE/RPC and MSRPC Services Enumeration Reporting
(NVT:DCE/RPC和MSRPC服务枚举报告),该漏洞的描述为:通过连接端口135并执行适当的查询,可以枚举在远程主机上运行的分布式计算环境/远程过程调用(DCE/RPC)或MSRPC服务。
-
可能造成的危害是:
攻击者可以利用此事实获取有关远程主机的更多信息。
-
此漏洞涉及的端口:
Port: 1070/tcp
UUID: 0b6edbfa-4a24-4fc6-8a23-942b1eca65d1, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[1070]UUID: 12345678-1234-abcd-ef00-0123456789ab, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[1070]
Named pipe : spoolss
Win32 service or process : spoolsv.exe
Description : Spooler serviceUUID: 4a452661-8290-4b36-8fbe-7f4093a94978, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[1070]UUID: 76f03f96-cdfd-44fc-a22c-64950a001209, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[1070]UUID: ae33069b-a2a8-46ee-a235-ddfd339be281, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[1070]Port: 1071/tcp
UUID: 6b5bdd1e-528c-422c-af8c-a4079be4fe48, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[1071]
Annotation: Remote Fw APIsPort: 1073/tcp
UUID: 367abb81-9844-35f1-ad32-98f038001003, version 2
Endpoint: ncacn_ip_tcp:192.168.3.123[1073]Port: 49664/tcp
UUID: 12345778-1234-abcd-ef00-0123456789ac, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49664]
Named pipe : lsass
Win32 service or process : lsass.exe
Description : SAM accessUUID: 51a227ae-825b-41f2-b4a9-1ac9557a1018, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49664]
Annotation: Ngc Pop Key ServiceUUID: 8fb74744-b2ff-4c00-be0d-9ef9a191fe1b, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49664]
Annotation: Ngc Pop Key ServiceUUID: b25a52bf-e5dd-4f4a-aea6-8ca7272a0e86, version 2
Endpoint: ncacn_ip_tcp:192.168.3.123[49664]
Annotation: KeyIsoPort: 49665/tcp
UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49665]Port: 49666/tcp
UUID: f6beaff7-1e19-4fbb-9f8f-b89e2018337c, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49666]
Annotation: Event log TCPIPPort: 49667/tcp
UUID: 3a9ef155-691d-4449-8d05-09ad57031823, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49667]UUID: 86d35949-83c9-4044-b424-db363231fd0c, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49667]Port: 49668/tcp
UUID: 29770a8f-829b-4158-90a2-78cd488501f7, version 1
Endpoint: ncacn_ip_tcp:192.168.3.123[49668] -
给出的解决方案是:
缓解,筛选到此端口的传入流量。
因此可以在防火墙中配置相关入站规则,修复该漏洞。 -
另外一个漏洞是
SSL/TLS: Deprecated TLSv1.0 and TLSv1.1 Protocol Detection
(SSL/TLS:已弃用的TLSv1.0和TLSv1.1协议检测) -
该漏洞的描述为:
可以在此系统上检测不推荐使用的TLSv1.0和/或TLSv1.1协议的使用情况。
-
可能造成的危害是:
攻击者可能会利用已知的加密缺陷窃听客户端和服务之间的连接,以访问在安全连接中传输的敏感数据。
此外,此协议中新发现的漏洞将不再接收安全更新。 -
给出的解决方案是:
缓解,建议禁用不推荐的TLSv1.0和/或TLSv1.1协议,以支持TLSv1.2+协议。有关更多信息,请参阅参考资料。
-
按照这篇文章可以修复这个漏洞。
-
禁用TLS1.0/1.1
3 实验遇到的问题及解决方法
-
GVM安装下载速度慢
-
问题详情:由于要连接外网服务器进行下载,因此下载速度较慢,时常会断开连接。
-
解决方法:使用代理,加速下载。
-
安装proxychains
sudo apt-get install proxychains
-
配置 /etc/proxychains.conf
vim /etc/proxychains.conf
在文件最后加上[代理协议] [代理IP] [代理端口]即可开启代理。
-
然后对于任何程序,只要在其前面加上proxychains命令就可以,例如:
proxychains gvm-setup
-
代理前的下载速度:
只有不到100kb/s
-
使用代理后的下载速度:
最快可达500kb/s
-
-
gvm-setup报错
-
报错:
ERROR: The default postgresql version is not 13 required by libgvmd
Error: Use pg_upgradecluster to update your postgres cluster
-
错误原因:kali默认使用postgresql的版本是12,而openvas要13,并且12与13版本间不兼容
-
解决方法:手动停用postgresql 12,启用postgresql 13。
-
进入Postgresql 13的配置文件:
vi /etc/postgresql/13/main/postgresql.conf
-
将侦听端口改为5432:
![image-20210421175241642](D:\study\大三下\网络对抗\实验5\image-20210421175241642.png
-
再进入Postgresql 12的配置文件,将其侦听端口改为任意其它端口:
vi /etc/postgresql/12/main/postgresql.conf
- 重启postgresql
service postgresql restart
- 再次gvm-setup:
-
- GVM扫描失败
-
GVM开始扫描时提示
Failed to find config 'daba56c8-73ec-11df-a475-002264764cea'
-
这是由于安装时没有配置扫描策略,重新尝试安装
gvm-setup
并升级数据库gvm-feed-update
即可解决
4 实验收获与感想
- 本次实验其实没有什么很困难的点,主要在于学习并尝试使用了常用的信息收集、漏洞扫描等几种方式,很多方法之前在别的课程中有涉略到,但通过本次实验对漏洞扫描等的学习,能更直观的感受到扫描的结果以及其代表的含义,清楚地认识到扫描结果的意义。
- 此外就是在安装OpenVAS时由于校网过慢花了很长时间,后来使用代理并查询了很多的资料才得以解决。