【计算机网络安全】信息收集扫描
实验一 信息收集&扫描
实验人员:第五组全体成员
一、实验目的:
1:熟悉kali系统常用命令及基本配置。
2:掌握两种操作系统(Windows、kali)的信息收集方式。
3:熟悉whois和nmap命令的使用。
二、实验原理、设计(+拓扑):
1:实验原理
【1】端口扫描
端口扫描的原理可分为以下三种,分别是全连接扫描(connect)、半连接扫描(syn)、隐蔽扫描(fin)。
全连接扫描,端口开放时的连接建立过程,如下图所示。
全连接扫描,端口关闭时的连接建立过程,如下图所示。
半连接扫描,端口开放时的连接建立过程,如下图所示。
半连接扫描,端口关闭时的连接建立过程,如下图所示。
隐蔽扫描,端口开放时的连接建立过程,如下图所示。
隐蔽扫描,端口关闭时的连接建立过程,如下图所示。
【2】APT软件包管理工具
APT通过与软件源配合,可以直接从互联网上下载软件安装包并安装。
常用的操作包括:更新软件源、搜索软件包、安装软件包、升级软件包、删除软件包、安装编译环境等。
2:实验拓扑设计
本次实验的拓扑设计,如下图所示。4台PC通过网线连接到同一台2层交换机上。
三、实验步骤、内容、数据(现象):
内容1:网络配置
【1】打开终端
通过快捷键ctrl + alt + t,打开终端。
【2】更换系统源
在终端输入sudo nano /etc/apt/sources.list,打开文件。
在文件中加入2行代码,deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib和deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib,使用快捷键ctrl + o,回车,快捷键ctrl + x进行保存。
安装gedit文本编辑器,在终端输入sudo apt-get update,继续在终端输入sudo apt-get install gedit。
【3】开启root账户
在终端输入sudo passwd root,修改密码。
在终端输入su,输入password密码,登录root账户。
【4】开启ssh登录
在终端输入sudo gedit /etc/ssh/sshd_config,打开config文件。
注释掉PubkeyAuthentication yes(文本框内显示# PubkeyAuthentication yes),使用快捷
键ctrl + s保存。
关闭gedit,在终端输入sudo /etc/init.d/ssh restart,重启ssh。
【5】查看网络
在终端输入ifconfig,查找内网信息和外网信息,如下图所示。在本机中,eth0是内网网卡,eth1是外网网卡。
【6】设置网络
打开菜单 -> 设置 -> 设置管理器 -> 高级网络设置 -> 添加(+) -> 选择以太网(Ethernet)。
配置内网网卡设备,编辑网络名称,其他保持默认,保存。
进入IPv4设置,方法处选择手动,添加IP地址和子网掩码,其他保持默认,保存。
配置结果,如下图所示。在本机中,内网IP为10.205.5.33,子网掩码为255.255.255.0,默认网关未配置。
【7】连接网线
连接4台PC和2层交换机之间的网线,连接完毕后使用ping命令进行网络连通性的测试。
内容2:基本信息收集
【1】通过whois命令,进行信息收集(kali系统)
本机通过whois google命令,对谷歌公司进行信息收集。收集的各项信息,如下图所示。
whois命令总共收集到域名、组织、地址、联系人、域名服务器、创建和更改日期等信息。
在域名服务器信息中,列出了五个域名服务器(NS-TLD1至NS-TLD5),每个服务器都有一个IPv6地址和一个IPv4地址。
DS记录(ds-rdata)是一个数字签名,用于验证域名的所有权和DNSSEC配置。
Whois服务器是whois.nic.google,是用于查询此域名信息的Whois服务器。
本机通过whois baidu的命令,对百度公司进行信息收集的情况也类似,结果如下图所示。
在域名服务器信息中,列出了八个域名服务器。
【2】通过smartwhois,进行信息收集(windows系统)
首先,下载smartwhois的压缩包,解压后进入sw5的文件目录。
然后,运行setup可执行文件,根据提示安装smartwhois软件。
最后,运行桌面快捷方式,进入smartwhois的界面。
本机通过smartwhois软件,访问baidu.com,对百度公司进行信息收集。收集的各项信息,如下图所示。
网址为:百度一下,你就知道。
IP地址为:110.242.68.66。
DNS服务器有5个,分别为ns1.baidu.com、ns7.baidu.com、ns2.baidu.com、ns4.baidu.com、ns3.baidu.com。
本机通过smartwhois软件,访问google.com,对谷歌公司进行信息收集的情况也类似,结果如下图所示。
【3】kali系统下,基于DNS查询的信息收集
1:DNSenum
DNSenum可进行域名信息收集。本机对baidu进行域名收集,结果如下图所示。
综上,通过dnsenum baidu.com命令,可以获取到主机地址、域名服务器、邮箱服务器等内容。
2:fierce
fierce可进行对子域名的扫描和收集。本机对谷歌旗下的子域名进行收集,结果如下图所示。
3:swaks
Swaks可进行邮箱连通性的测试。本机对存在且可以正常收信的邮箱进行测试,结果如下图所示。
可以观察到返回250 OK,说明连通性正常。
4:netdiscover
Netdiscover是一种主动/被动ARP侦察工具。
本机通过netdiscover -i eth1命令,扫描常见的LAN地址,结果如下图所示。
本机通过netdiscover -i eth1 -f命令,快速扫描常用局域网地址,且只搜索和自己主机在同一局域网的网关,结果如下图所示。
可以发现,192.168.0.254是外网网卡的网关。
内容3:nmap三种连接
【1】全连接:nmap -sT [ip]
全连接需要完成三次握手,并且要求调用系统的connect()。
1:端口开启时,连接建立
Ip为10.205.5.22的主机通过全连接方式,扫描ip为10.205.5.33的主机,结果如下图所示。可以发现扫描到22端口的状态为open。
Wireshark的抓包结果,如下图所示。
筛选tcp.port == 22后,可以发现一共有4条抓包记录。
第一条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送SYN包。表示客户端试图建立与服务器的连接。
第二条为Ip为10.205.5.33的主机向Ip为10.205.5.22的主机,发送SYN的ACK包。表示服务器接受了客户端的连接请求,并等待客户端的确认。
第三条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送ACK包。表示客户端发送确认包,完成TCP三次握手。
第四条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送RST包。表示客户端在三次握手完成后主动发送了重置包来终止连接。
2:端口关闭时,连接建立(开启防火墙模式)
Ip为10.205.5.22的主机通过全连接方式,扫描ip为10.205.5.33的主机,结果如下图所示。可以发现扫描到22端口的状态为closed。
Wireshark的抓包结果,如下图所示。
筛选tcp.port == 22后,可以发现一共有6条抓包记录。
第一条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送SYN包。表示客户端试图建立与服务器的连接。
第二条为Ip为10.205.5.33的主机向Ip为10.205.5.22的主机,发送RST包。表示目标端口处于关闭状态,服务器通过发送重置包来终止连接。
第三条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,再次发送SYN包。此后的过程是Ip为10.205.5.22的主机不断尝试连接端口22,Ip为10.205.5.33的主机不断终止连接。
【2】半连接:nmap -sS [ip]
半连接不需要通过完整的握手。
1:端口开启时,连接建立
Ip为10.205.5.22的主机通过全连接方式,扫描ip为10.205.5.33的主机,结果如下图所示。可以发现扫描到22端口的状态为open。
Wireshark的抓包结果,如下图所示。
筛选tcp.port == 22后,可以发现一共有3条抓包记录。
第一条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送SYN包。表示客户端试图建立与服务器的连接。
第二条为Ip为10.205.5.33的主机向Ip为10.205.5.22的主机,发送SYN的ACK包。表示服务器接受了客户端的连接请求,并等待客户端的确认。
第三条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送RST包。表示客户端主动发送了重置包来终止连接。
2:端口关闭时,连接建立(开启防火墙模式)
Ip为10.205.5.22的主机通过全连接方式,扫描ip为10.205.5.33的主机,结果如下图所示。可以发现扫描到22端口的状态为closed。
Wireshark的抓包结果,如下图所示。
筛选tcp.port == 22后,可以发现一共有6条抓包记录。
第一条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送SYN包。表示客户端试图建立与服务器的连接。
第二条为Ip为10.205.5.33的主机向Ip为10.205.5.22的主机,发送RST包。表示目标端口处于关闭状态,服务器通过发送重置包来终止连接。
第三条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,再次发送SYN包。此后的过程是Ip为10.205.5.22的主机不断尝试连接端口22,Ip为10.205.5.33的主机不断终止连接。
【3】FIN连接:nmap -sF [ip]
1:端口开启时,连接建立
Ip为10.205.5.22的主机通过全连接方式,扫描ip为10.205.5.33的主机,结果如下图所示。可以发现扫描到22端口的状态为open。
Wireshark的抓包结果,如下图所示。
筛选tcp.port == 22后,可以发现一共有2条抓包记录。
第一条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送FIN包。表示客户端发送探测包到目标端口。
第二条和第一条的原理相同。
综上,如果目标端口是开放的,则不会返回任何响应。
2:端口关闭时,连接建立(开启防火墙模式)
Ip为10.205.5.22的主机通过全连接方式,扫描ip为10.205.5.33的主机,结果如下图所示。可以发现扫描到22端口的状态为closed。
Wireshark的抓包结果,如下图所示。
筛选tcp.port == 22后,可以发现一共有6条抓包记录。
第一条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,发送FIN包。表示客户端发送探测包到目标端口。
第二条为Ip为10.205.5.33的主机向Ip为10.205.5.22的主机,发送RST包。表示目标端口处于关闭状态,服务器通过发送重置包来终止连接。
第三条为Ip为10.205.5.22的主机向Ip为10.205.5.33的主机,再次发送FIN包。此后的过程是Ip为10.205.5.22的主机不断尝试连接端口22,Ip为10.205.5.33的主机不断终止连接。
综上,如果目标端口是关闭的,目标会返回一个RST包,表示连接被重置。
【4】扫描目标主机操作系统类型
1:尝试识别远程操作系统,使用nmap -O [ip]命令
本机通过nmap命令,查看Ip为10.205.5.22的主机的操作系统。查看的结果如下图所示。
可以发现Ip为10.205.5.22的主机的操作系统是Linux。
此外,还可以查看开启的端口、MAC地址、网络距离等信息。
2:同时打开操作系统指纹和版本检测,使用nmap -A [ip]命令
可以发现Ip为10.205.5.22的主机的操作系统是Linux。
此外,还可以查看开启的端口(包括ssh-hostkey)、MAC地址、网络距离(包括traceroute)等信息。
四、思考(问题小结,包括未解决)
1:网线连接问题。本组设备的网口是1、3、5、7,而不是1、2、3、4。连接到同一个交换机上时,可使用同一颜色网线进行区分。
2:网卡问题。配置内网和外网时,应该提前通过ifconfig命令查看2个网卡的具体信息,区分eth0和eth1所对应的网络。
3:端口开启问题。一般情况下,本机的电脑端口基本
处于关闭状态。如果需要开启端口进行测试,可以选择利用ssh开启22端口。首先执行systemctl start ssh命令,启动ssh服务。然后执行systemctl status ssh命令,查看 SSH 服务当前运行状态。绿色 "active (running)",表示 SSH 服务正在正常运行。红色 "inactive (dead)" 或 "failed",表示服务未运行或启动失败。
4:避免被收集的措施。给相关的端口开启防火墙,可以避免本机的一些信息被收集。
5:防火墙的设置与关闭问题。可以通过iptables -F命令清除已经设置的防火墙。也可以通过iptables命令设置具体端口的防火墙,例如下图是设置22端口的防火墙的过程。