2019-2020-2《网络对抗技术》 Exp5 信息搜集与漏洞扫描
实践目标
掌握信息搜集的最基础技能与常用工具的使用方法。
回答实践问题
-
1.哪些组织负责DNS,IP的管理。
-
全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器、DNS和IP地址管理。ICANN理事会是ICANN的核心权利机构,它设立三个支持组织,分别是:
地址支持组织(ASO)负责IP地址系统的管理。
域名支持组织(DNSO)负责互联网上的域名系统(DNS)的管理。
协议支持组织(PSO)负责涉及Internet协议的唯一参数的分配。全球一共有5个地区性注册机构:
ARIN主要负责北美地区业务
RIPE主要负责欧洲地区业务
APNIC主要负责亚太地区业务
LACNIC主要负责拉丁美洲美洲业务
AfriNIC主要负责非洲地区业务。
-
-
2.什么是3R信息。
- Registrant:注册人
Registrar:注册商
Registry:官方注册局
- Registrant:注册人
-
3.评价下扫描结果的准确性。
- 使用msf不同的模块扫描时,会有不同结果,速度、效率也会有所不同。nmap扫描更快速。OpenVAS 的 NVT 库一周至少要更新一次,否则就会落后。
实践过程
各种搜索技巧的应用
使用搜索引擎
-
包含了大量使用Google从事渗透的搜索字符串,拥有很多常用的模块,还有我们之前使用过的各个平台下的shellcode,也可以在SHELLCODES模块里面获取。
-
针对网络空间的搜索引擎,收录了互联网空间中的设备、网站及其使用的服务或组件等信息 。
搜索网址目录结构
自动化的工具:metasploit的brute_dirs,dir_listing,dir_scanner等辅助模块,主要是暴力猜解。暴力破解一般就是指穷举法,它的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。因为理论上来说,只要字典足够庞大,枚举总是能够成功的。
以下模块的启用均在 msfconsole 中。
-
dir_scanner
模块。use auxiliary/scanner/http/dir_scanner show options set RHOSTS www.baidu.com set THREADS 50 exploit
-
dir_listing
模块。use auxiliary/scanner/http/dir_listing show options set RHOSTS www.baidu.com exploit
-
brute_dirs
模块。use auxiliary/scanner/http/brute_dirs show options set RHOSTS www.baidu.com set THREADS 100 exploit
检测特定类型的文件
有些网站会链接通讯录,订单等敏感的文件,可以进行针对性的查找。
-
百度搜索
site:edu.cn filetype:xls 课设
。
-
百度已经提供了相应的搜索工具。
路由侦查
-
Windows 下 tracert 命令进行路由侦查。
PowerShell 中输入以下命令, DNS解析会自动将其转换为IP地址并探查出途经的路由器信息 。
tracert www.baidu.com
-
从左到右的5条信息分别代表了:
-
“生存时间”,每途经一个路由器结点自增1;
-
“三次发送的ICMP包返回时间”,共计3个,单位为毫秒ms 。
其中带有星号(*)的信息表示该次ICMP包返回时间超时;
-
“途经路由器的IP地址”,如果有主机名,还会包含主机名。
-
-
-
Linux 下 traceroute命令进行路由侦查。
traceroute -n -m 20 -q 4 -w 3 www.baidu.com
-n
:显示 IP 地址,不查主机名;-m
:设置跳数;-q
:每个网关发送的数据包个数-w
:设置对外发探测包的等待响应时间(秒)- 还可以使用
-p
设置探测的 UDP 端口。
DNS IP 注册信息的查询
whois 查询域名注册信息
通过whois查询可以获得它的ip地址、注册人信息、域名信息、子域信息、服务器位置信息等。
-
whois yogile.icu
:whois 我的个人网站,可以看到我的 “注册人信息”:-
Registrant Organization: YaoMingYu Registrant State/Province: si chuan Registrant Country: CN
-
nslookup、dig域名查询
nslookup可以得到DNS解析服务器保存的Cache的结果,但并不是一定准确的。dig可以从官方DNS服务器上查询精确的结果。
-
Linux 终端:
nslookup yogile.icu
-
Linux 终端:
dig yogile.icu
-
; <<>> DiG 9.11.16-2-Debian <<>> yogile.icu ;; global options: +cmd
显示 dig 命令的版本和输入的参数
-
;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15365 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
-
;; QUESTION SECTION: ;yogile.icu. IN A
显示我们要查询的域名。
-
;; ANSWER SECTION: yogile.icu. 562 IN A 39.97.109.216
查询到的结果.
-
;; Query time: 4 msec ;; SERVER: 192.168.3.1#53(192.168.3.1) ;; WHEN: 四 4月 23 12:46:20 CST 2020 ;; MSG SIZE rcvd: 44
本次查询的一些统计信息
-
IP2Location 地理位置查询
基本的扫描技术
活跃主机扫描
-
nmap
- 输入
nmap -sn 192.168.3.101/24
扫描当前局域网的活跃主机(IP 地址为 kali IP 地址)。 - 也可以指定 IP 。
- 输入
-
udp_sweep使用UDP数据包探测
msfconsole下进行。
use auxiliary/scanner/discovery/udp_sweep show options set RHOSTS 192.168.3.0/24 set THREADS 100 run
端口扫描
-
metasploit的端口扫描模块
- msfconsole下进行。
use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.3.4 exploit
-
Nmap端口扫描
- 输入指令
nmap -sT -p 0-1024 192.168.3.4
表示使用TCP connect扫描目标 IP 的 0-1024的端口
扩展:
-sS/sT/sA/sW/sM
:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描-sU
: 指定使用UDP扫描方式确定目标主机的UDP端口状况-sN/sF/sX
: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态--scanflags
: 定制TCP包的flags-sI
: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)-sY/sZ
: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况-sO
: 使用IP protocol 扫描确定目标机支持的协议类型-b
: 使用FTP bounce scan扫描方式
- 输入指令
OS及服务版本探测
-
操作系统侦测
Nmap拥有丰富的系统数据库nmap-os-db,目前可以识别2600多种操作系统与设备类型,侦测用于检测目标主机运行的操作系统类型及设备类型等信息。
- Linux 终端输入:
sudo nmap -O 192.168.3.4
,指定Nmap进行OS侦测。
- Linux 终端输入:
-
版本侦测
用于确定目标主机开放端口上运行的具体的应用程序及版本信息。
- Linux 终端输入:
nmap -sV -Pn 192.168.3.4
,版本侦测。-sV
: 指定让Nmap进行版本侦测
version-intensity : 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
version-light: 指定使用轻量侦测方式 (intensity 2)
version-all: 尝试使用所有的probes进行侦测 (intensity 9)
version-trace: 显示出详细的版本侦测过程信息。
- Linux 终端输入:
具体服务的查点
-
Telnet服务扫描
telnet命令用于登录远程主机,对远程主机进行管理。
use auxiliary/scanner/telnet/telnet_version info set RHOSTS 192.168.3.0/24 set THREADS 100 run
- 可以看到宿主机23端口连接超时。
-
SMB网络服务扫描
SMB (Server Message Block,服务器消息块) 提供了 Windows 网络中最常用的远程文件与打印机共享网络服务。
msfconsole下进行。
use auxiliary/scanner/smb/smb_version info set RHOSTS 192.168.3.0/24 set THREADS 100 run
-
NetBios网络服务扫描
NetBIOS (Network Basic Input/Output System,网络基本输入输出) 为局域网内 Windows 系统上的应用程序实现会话层之间的通信提供基本支持。
msfconsole下进行。
use auxiliary/scanner/netbios/nbname info set RHOSTS 192.168.3.0/24 set THREADS 100 run
-
SSH服务扫描
msfconsole下进行。
use auxiliary/scanner/ssh/ssh_version set RHOSTS 192.168.3.0/24 set THREADS 200 run
-
Oracle数据库服务查点
msfconsole下进行。
use auxiliary/scanner/oracle/tnslsnr_version set RHOSTS 192.168.3.0/24 set THREADS 100 run
漏洞扫描
由于最近 kali 的镜像源都开始更新,尝试过后无法下载或更新软件。由于我已经在 Ubuntu 上安装了 docker ,所以我使用 Docker 运行 OpenVAS 容器实现。
运行 OpenVAS 的 Docker 容器
-
Docker 安装:
- Debian :为 Debian 获取 Docker Engine - Community 。
- 清华源:清华源安装docker。
- 更多 docker 使用详情,可参考我的随笔分类: Docker 。
-
拉取 OpenVAS 镜像,你也可以拉取其他镜像。
docker pull mikesplain/openvas
-
输入 docker 命令,运行容器:
- 自行改变
PUBLIC_HOSTNAME=
后面的 IP 地址为你 docker 所在主机 IP 。
sudo docker run -d -p 443:443 -p 9090:9090 -v $(pwd)/data:/var/lib/openvas/mgr/ -e OV_PASSWORD=567678 -e PUBLIC_HOSTNAME=192.168.3.21 --name openvas mikesplain/openvas
- 自行改变
-
运行容器 bash 。
docker exec -it openvas bash
-
在容器中修改用户名密码,可自行更改:
openvasmd --user=admin --new-password=admin
-
到此, OpenVAS 的 Docker 容器已经运行。
OpenVAS 容器进行漏洞扫描
-
打开浏览器,输入:
- 注意是运行容器命令中的设置的 PUBLIC_HOSTNAME 值。
https://192.168.3.21/ 或 https://192.168.3.21/omp
-
输入用户名和密码成功登录。
-
点击顶部菜单栏
Scans
中的Tasks
。 -
点击
Task Wizard
新建任务向导,输入要扫描的宿主机 IP 。- 我的 kali 虚拟机是桥接模式。
- 需等待一段时间。
-
扫描完成。
-
点击
Name
下名称,查看扫描的详细信息。 -
点击
Full and fast
。 -
选择第二项 Amazon Linux Local Security Checks 。
-
选择标签为 ALAS-2011-16 的 严重程度 值为 10 且标红的一项。
-
可以看到如下信息:
- Summary:Amazon Linux本地安全检查。
- Vulnerability Insight:在Linux内核中发现了多个缺陷。请参阅参考资料以获取更多信息。
- Solution:运行yum update kernel更新系统。您需要重新引导系统才能运行新内核。
实验总结与体会
-
通过本次实验,初步掌握了如何进行信息的搜集,在利用各种技术来实践收集并分析信息的过程中,让我不断掌握了漏洞的扫描和分析的基本方法。
-
其实在前面我都不应该公布我的服务器包括 IP 地址在内的信息,虽然都可以通过现有工具查到。只是这个服务器只是我用于测试的服务器,并且将于不久后过期,才在实验中使用。