Skip to main content

端口探测和指纹扫描

背景#

端口扫描和指纹识别是渗透测试和网络安全领域中常用的基础技术之一,用于评估目标系统的安全性和发现可能存在的漏洞和攻击面。也是Yakit基础工具的模块之一,本文将对端口探测和指纹扫描模块进行简单介绍。

端口扫描是指通过扫描目标系统上的端口,确定哪些端口是开放的,并确定这些开放的端口上运行的服务类型和版本信息。

Yakit 使用的端口扫描的技术主要有以下几种:

  • TCP SYN扫描:该技术利用TCP协议的三次握手过程中的SYN和ACK标志来判断端口的开放情况。扫描模块发送一个SYN标志的数据包给目标主机,如果目标主机回应了一个SYN/ACK数据包,就表明该端口是开放的。扫描模块随即发送一个RST数据包,以关闭连接。如果目标主机回应了一个RST/ACK数据包,表明该端口是关闭的。如果没有任何响应,表明该端口可能被防火墙或者入侵检测系统屏蔽了。

  • TCP Connect扫描:该技术利用TCP协议的三次握手过程来判断端口的开放情况。扫描模块向目标主机发起一个TCP连接请求,如果目标主机回应一个SYN/ACK数据包,表明该端口是开放的,扫描模块会回应一个ACK数据包,以建立连接。如果目标主机回应一个RST数据包,表明该端口是关闭的。如果没有任何响应,表明该端口可能被防火墙或者入侵检测系统屏蔽了。

  • UDP扫描:UDP协议没有像TCP协议一样的连接状态,因此UDP扫描更加复杂。扫描模块向目标主机发送一个UDP数据包,如果目标主机回应了一个ICMP端口不可达数据包,表明该端口是关闭的。如果没有任何响应,表明该端口可能是开放的。需要注意的是,由于UDP协议没有连接状态,因此UDP扫描的准确性比TCP扫描要低。

指纹识别是通过对目标系统上的服务和应用程序进行识别,来确定目标系统上的操作系统、应用程序和服务信息。指纹识别技术主要通过解析网络数据包和应用程序响应消息来实现。

以下是常见的几种指纹识别技术及其原理:

  • 应用程序指纹识别:该技术通过解析应用程序的响应消息,来确定应用程序的类型和版本信息。例如,HTTP协议中的服务器响应头信息就包含了Web服务器的类型和版本信息。指纹识别器通过向目标系统发送HTTP请求,并解析响应消息中的服务器头信息,来确定Web服务器的类型和版本信息。

  • 协议指纹识别:该技术通过解析网络数据包,来确定目标系统所使用的协议类型和版本信息。例如,通过解析TCP数据包的TCP标志位、TCP选项和窗口大小等信息,可以确定目标系统上的TCP/IP协议的版本信息。

  • 操作系统指纹识别:该技术通过解析网络数据包中的特征信息,来确定目标系统所使用的操作系统类型和版本信息。例如,通过解析TCP数据包中的MSS、TTL、IP ID等信息,可以确定目标系统所使用的操作系统类型和版本信息。

使用方法#

如图,在扫描目标文本框中输入想要扫描的目标(域名/主机/IP/IP段均可,逗号分隔或按行分割),也可以点击在此上传按钮上传TXT、Excle文件进行批量目标的上传。

然后根据实际需求勾选需要的端口选项,也可以在扫描端口中直接自定义想要扫描的端口,按逗号进行分隔。在左侧扫描端口操作台处可以选择想要加载的插件进行勾选,

点击开始扫描即可进行开始进行端口的探测。

注:默认的扫描方式是SYN扫描,若想修改扫描方式,请在更多参数处进行选择。

如图,默认不会进行web指纹的扫描,需要在更多参数处进行选择。可以选择只扫描指纹或SYN+指纹扫描。

更多指纹扫描的高级选项,可以在参数设置处根据每个选项的注释按需进行调整。

另外,在扫描端口/指纹的过程中,在不停止扫描的情况下可选择插件进行同步加载进行扫描。

更多参数#

如需设置更多高级扫描选项,点击更多参数即可按照注释进行相应的设置

  • 扫描模式分类:

SYN扫描

具有权限要求,Linux下启动yakit需要以root权限启动,windows下需要管理员权限启动,如果不是以root或者管理员权限启动会报如下错误:

指纹扫描

无权限要求,可直接进行扫描,识别端口指纹

SYN+指纹扫描

具有权限要求,Linux下启动yakit需要以root权限启动,windows下需要管理员权限启动,如果不是以root或者管理员权限启动会报如下错误:

单次扫描结果可在页面下方进行展示,

历史结果可在端口资产管理,或者数据库-端口资产进行查看

端口及版本

Web指纹