文章是博主上实验课做的实验和心得体会,有些高深的地方我可能也比较一知半解,欢迎来交流。全文参考课程所习得,纯粹梳理知识点和分享,如有不妥请联系修改。
文章侧重实验部分,也会讲述实验相关的理论知识。理论后期如果有需要(我要着手复习梳理再整理)
端口扫描
1概述
1.1端口扫描的原理
网络中,一个服务的建立过程是:一个主机向一个远端服务器的某个端口提出建立连接的请求,如果对方提供此服务,就会应答该请求;如果对方没有此项服务,即使向对方发出请求,对方也无应答。
我们要干的就是对一个或者一个范围内的端口建立请求,记录应答情况,从而获取相关服务。
1.2分类
开放扫描 | 可靠性高,但是审计数据多易被发现。例TCP connect扫描(建立完整的TCP连接,服务器会记录这些数据) |
半开扫描 | 可靠性和隐秘性在上下两者之间。例TCP SYN扫描 |
秘密扫描 | 绕开目标主机防火墙或入侵检测系统、包过滤器等防御策略,进行端口扫描。例TCP NULL扫描、TCP FIN扫描、TCP XMAS扫描 |
其他扫描 | 非TCP 端口扫描。例UDP扫描 |
2具体扫描
2.1 ICMP扫描
- ICMP Echo扫描:非常常见的一种扫描方式,向主机发送ICMP Echo Request数据包,等待回复的ICMP Echo Reply包,判断一个在网络的主机是否开机,如ping命令。局限性很高,大部分服务器不响应。
- ICMP Sweep扫描:并发性扫描,使用ICMP Echo Request一次探测多个目标主机。探测效率高,适用于大范围评估。(比如ping子网里所有主机,看哪个主机应答)
- Broadcast ICMP扫描:设置ICMP请求包的目标地址为广播地址或者网络地址,可以探测广播域或整个网络范围内的主机,子网内所有存活主机都会给予回应。只适用于Unix/Linux系统。
- Non-Echo IMCP扫描:利用其他服务类型,不仅能探测主机,还能探测路由器等网络设备。
2.2 TCP扫描
-
TCP connect扫描:调用connect函数,连接到目标计算机。完成一个完整的“三次握手”,建立一个完整的TCP流程。当端口处于侦听状态时,connect函数被成功返回,否则该端口不可用(无法提供服务)。方法稳定可靠,易被发现(完整连接会被服务器记录)。
server端响应,提供服务 server端不提供服务(端口关闭),rst可断开连接 -
TCP SYN扫描:向目标主机端口发送SYN数据包,若应答返回RST数据包,说明端口是关闭的;若应答返回SYN数据包或ACK数据包,则端口处于侦听状态,再发送一个RST数据包断开连接(只需要探测不用传输,探测到就断开)。该方法为“半连接扫描”,由于不是建立一个完整的TCP连接,一般系统很少记录这种半扫描技术。它有较好的隐蔽性,但是需要授权才能构造SYN数据包(需要管理员权限)。
-
TCP FIN扫描:向目标主机端口发送一个FIN数据包,若端口处于侦听状态,则不会回复FIN数据包;否则,当端口处于关闭状态时,主机会返回RST数据包。该扫描不涉及TCP连接的“三次握手”协议内容,因而不会被目标主机记录,扫描更加隐蔽,但若存在一些系统,它们无论端口状态,对所有FIN数据包回复RST,则无法使用。(图中左边端口开放右边关闭)
-
TCP NULL扫描:向目标主机端口发送控制位均为0的数据包。若端口开放,则无返回值,否则目标主机将返回RST信息。
-
TCP XMAS扫描(又称圣诞树扫描):其原理与NULL扫描类似,只是向目标主机端口发送数据包的控制位全为1。若端口开放,则无返回值,否则目标主机将返回RST信息。
2.3 UDP 扫描
UDP对于报文的处理较为简单,当一个打开的UDP端口接收到一个请求报文时,将不发送任何响应报文;而当一个关闭的UDP端口接收到一个请求报文时,它将会发送一个端口不可达的ICMP响应报文。
该扫描需要系统管理员的权限,同时可靠性较低,当收不到目标主机端口的不可达报文时,也可能是因为报文传输丢失。同时因为RFC对ICMP错误消息的产生速率做了规定,所以扫描的速度较慢。(秘密扫描也会有这种担心-是否有丢失所要得到的报文)
3 创建kali和XP虚拟机实验
1、下载虚拟机软件
下载并安装VMware Workstation Pro 17,(只是实验的统一建议要求,其他的版本应该也可以用,我就是之前装的老版本)(去官网搜一搜或者相关的资料包应该都是有的)
这个软件与Windows 11 的兼容性不是很好,安装好之后,检查一下右键属性-兼容性之中:勾选“以管理员身份运行此程序”,否则可能会运行很慢。
2、安装kali linux
这里给出下载链接kali虚拟机下载(下载VMware版本的)
下载完将文件解压缩之后,打开刚刚下的VMware,点击“打开虚拟机”按钮,打开刚才解压的文件夹里的.vmx文件,即可创建Kali虚拟机。
点击“编辑虚拟机设置”打开Kali虚拟机的设置页面, 将“此虚拟机的内存”至少设置到4096MB以上并保存。(默认2G,防止不够用)(我设的4096后续是有一点卡的)
开启虚拟机,用户名和密码都是kali。
将虚拟机显示内容改为中文。打开终端,输入sudo dpkg-reconfigure locales并按Enter键,按上下键选中zh_CN.UTF-8 UTF-8,按空格键选中,再按Enter键。然后按上下键选中zh_CN.UTF-8,按空格键选中,再按Enter键。重新启动Kali Linux,即可显示中文。
如果提示是否“将标准文件夹更新到当前语言”,点击“不要再次询问我”,再点击“保留旧的名称”。这是一个建议,主要是改了可能会妨碍后续的操作。
3、安装Windows XP
下载两个镜像文件(光盘映像文件)
下载“zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso”这个镜像文件和“VMware-tools-windows-10.0.12-4448496.iso”这个镜像文件。搜索名称网上可以搜到相关下载路径,这里给出后者的下载地址。
VMware-tools镜像文件下载地址
新建虚拟机,一路保持默认值即可,注意在“安装程序光盘镜像文件”选择“zhhans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso”。VMware Workstation会识别到Windows XP。
在最后一步,点击“完成”按钮前,点击“自定义硬件”按钮,点击“显示”,取消“加速3D图形”前的对号,点击“关闭”按钮,再点击“完成”按钮。(可以减少一些本次实验并不需要的内存空间)
新建完之后开启虚拟机,这里给出镜像文件所对应的产品密钥,即可成功打开。
4、安装VMware-tools镜像文件
进入到XP的桌面之后,按照以下路径,点击浏览按钮,找到并选中我们刚刚下载的VMware-tools镜像文件-确定,系统会自动启动XP的安装。保持默认一直下一步即可,直至安装后重启。

安装成功。
5、一些配置
安装完成之后,在菜单中的“控制面板”,点击“切换到经典视图”。打开“Windows防火墙”,关闭防火墙。

打开控制面板,打开“用户账户”,点击当前登录的账户,更改密码(曾经设置过)/创建新的密码,输入密码。
4 nmap扫描实验
Nmap(Network Mapper)是一个开源免费的网络扫描软件,是一款用于网络发现和安全审计的工具。它常被用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
-sT/-sS/-sF/-sN/-sX: TCP connect/SYN/FIN/NULL/XMAS 扫描
-sU: UDP 扫描
-O:操作系统探测
-A: 操作系统探测,版本探测,脚本扫描和traceroute
eg. sudo namp -sS 10.0.0.129
1、查看XP虚拟机的IP地址
查看IP地址有两种方式。
1、window+R打开运行,输入cmd打开命令提示符。输入ipconfig,查看IP地址。
2、或者在控制面板中找到网络,找到IP地址。
2、nmap扫描
在kali虚拟机中打开终端,利用nmap扫描Windows XP虚拟机,得到开启的端口和操作系统版本信息。
这里要探测的IP地址是你上方所得到的IP地址,三个打开的端口-135/139/445都是一些典型的危险端口,mac地址前六位判断网卡产商-VMware。
这里探测的结果和上面一样,只是-sA还包括版本扫描、traceroute等,这里只截取部分探测结果。
到目标主机只有一跳,中间没有别的路由器。这种情况我们默认都在同一路由器(同一子网)下,此路由器由VMware创建。