题目
KnightCTF 2026
https://2026.knightctf.com/
第一题 Reconnaissance
Question: Our IDS flagged some suspicious scanning activity in the first capture.The attacker was probing our network to identify potential entry points. Analyze the traffic and determine how many ports were found to be open on the target system.
翻译:我们的IDS在首次捕获时标记出了一些可疑的扫描活动。攻击者正在探查我们的网络,以识别潜在的入口点。请分析这些流量,并确定在目标系统中发现了多少个处于开放状态的端口。
第二题 Gateway Identification
During the initial reconnaissance, the attacker gathered information about the network infrastructure. We need to identify the vendor of the network device acting as the default gateway in this capture. This information could help us understand if any vendor-specific vulnerabilities were exploited.
Flag Format KCTF{vendor_name}
Use pcap1.pcapng to solve this challenge
Author: TareqAhamed (0xt4req)
翻译:在初始侦察过程中,攻击者收集了有关网络基础设施的信息。我们需要识别在此捕获中充当默认网关的网络设备的供应商。这些信息可以帮助我们了解是否有任何特定于供应商的漏洞被利用。
解题
第一题
加载流量包
筛选开放的端口
TCP连接建立的三次握手过程:
- 第一次握手 :客户端向服务器发送SYN包( tcp.flags.syn == 1, tcp.flags.ack==0 ),表示请求建立连接
- 第二次握手 :如果服务器的对应端口是开放的,会返回SYN+ACK包( tcp.flags.syn == 1, tcp.flags.ack==1 ),表示接受连接请求
- 第三次握手 :客户端发送ACK包( tcp.flags.syn == 0, tcp.flags.ack==1 ),完成连接建立
因此,我们使用 tcp.flags.syn == 1 and tcp.flags.ack==1 搜索到的端口是开放的
第二次握手,如果不开放,则返回RST+ACK包,用tcp.flags.reset==1 and tcp.flags.ack ==1进行搜索
tcp.flags.syn==1andtcp.flags.ack==1"识别攻击者与目标系统IP
虽然识别出来了39个开放的端口,但题目问的目标系统有多少个开放的端口,所以我们要确定攻击者和目标系统的IP
tcp.flags.syn==1 and tcp.flags.ack ==0 过滤出的是 TCP连接请求的第一个包。正常网络通信中,设备通常只会向特定端口发送少量SYN包,用于建立必要的连接。而攻击者在进行端口扫描时,向同一目标IP的 大量不同端口 发送SYN包,且通常只发送SYN包,不完成完整的三次握手(即没有后续的ACK包)。
tcp.flags.syn==1andtcp.flags.ack==0由此确认攻击者IP为192.168.1.104,目标系统IP为192.168.1.102
筛选开放的端口时 加上攻击者和目标系统的IP
- 精确统计目标系统对攻击者的SYN+ACK响应
- 只关注目标系统(192.168.1.102)对攻击者(192.168.1.104)的响应
- SYN+ACK包的源端口就是目标系统上开放的端口
tcp.flags.syn==1andtcp.flags.ack==1andip.src==192.168.1.102 andip.dst==192.168.1.104发现开放端口为22(SSH)和80(HTTP)
答案
KCTF{2}
第二题
查看ARP数据包
题目要确定网关的设备型号,那我们需要确定网关的IP地址,默认网关会发送ARP查询包来维护网络设备的MAC地址表,ARP协议用于将IP地址映射到MAC地址,所以我们查看ARP数据包,了解网络设备的IP和MAC地址对应关系
arp但发现多个设备的IP和MAC地址对应关系,需要进一步筛选
查找DHCP信息
DHCP服务器在分配IP地址时,会发送会在响应中包含默认网关信息。
DHCP通信包含四个阶段,需要区分客户端请求和服务器响应:
| 阶段 | 数据包类型 | 发送方 | 接收方 | 主要作用 |
|---|---|---|---|---|
| 1. 发现 | DHCP Discover | 客户端 | 广播 | 寻找DHCP服务器 |
| 2. 提供 | DHCP Offer | 服务器 | 广播/单播 | 提供IP地址等配置 |
| 3. 请求 | DHCP Request | 客户端 | 广播 | 请求接受提供的配置 |
| 4. 确认 | DHCP ACK | 服务器 | 广播/单播 | 确认配置并提供网关等信息 |
dhcp只发现了DHCP Request数据包(第3阶段),关键特征:
- Message type: Boot Request (1) :明确是客户端请求
- Source Address: 0.0.0.0 :客户端还没有IP地址
- Destination Address: 255.255.255.255 :广播发送
- Requested IP Address (192.168.1.101) :客户端请求特定IP
并不是我们想要的DHCP Offer或者DHCP ACK
继续分析ARP请求模式
- arp.opcode==1 :表示这是ARP请求包(询问"谁拥有这个IP?请告诉我你的MAC地址")
- arp.opcode==2 :表示ARP响应包(回答"我拥有这个IP,我的MAC地址是…")
arp.opcode==1发现结果中,存在两种情况:
大量重复的 Who has 192.168.1.100? Tell 192.168.1.1。
解释: IP 地址为 192.168.1.1 的设备(很可能是这个局域网的默认网关或路由器),在持续、高频地询问 192.168.1.100 的 MAC 地址。LiteonTechno_7e:74:6b (9c:2f:9d:7e:74:6b)与之前的攻击IP:192.168.1.104的MAC地址相同,且操作很像典型的网络侦察行为,尝试扫描192.168.253.0/24和172.16.30/24等网段的活跃主机
所以192.168.1.1是网关设备
分析网关数据包
通过查看网关IP(192.168.1.1)对应的MAC地址,可以确定其供应商。
所有来自192.168.1.1的数据包都使用相同的MAC地址88:bd:09:38:d7:a0,供应商为NetisTechnol
答案
KCTF{Netis}
附录:ARP扫描原理
流量包里包含非常经典的ARP扫描(探测)行为,通常也被称为ARP Sweep或ARP Discovery。
1. 攻击者的真实IP(192.168.1.104)为什么没出现在数据包里?
流量显示,攻击者没有使用自己的真实IP。数据包中Tell 192.168.0.1是一个伪造的源IP地址(Sender Protocol Address)。
为什么这么做?
这是一种ARP欺骗扫描或隐蔽扫描的手法:
- 隐藏自身:攻击者(
192.168.1.104)不想暴露自己的真实IP,避免被日志记录或直接追踪。 - 伪装成网关:
192.168.0.1通常是这个/24子网的默认网关地址。伪装成网关,可能会让目标主机在回应时更“配合”,或者为后续的中间人攻击做准备。 - 试探网络结构:通过观察哪些IP地址有ARP回应,攻击者可以绘制出当前活跃主机的网络地图,而且自己还不暴露。
2. 为什么要发送这么多包(询问 192.168.0.2 到 192.168.0. …)?
这是主机发现阶段。攻击者想要知道:
- 在这个
192.168.0.0/24网段里,哪些IP地址是活跃的,即有哪些机器在线。 - 这些活跃IP地址对应的MAC地址是什么。
原理:ARP协议是局域网的“电话簿”。当一个设备想知道某个IP地址对应的MAC地址时,它会广播一个“Who has [IP]? Tell [Sender IP]”的请求。如果该IP地址的设备在线,它就会单播回复“Hey,[IP] is at [MAC]”。
所以,攻击者通过依次询问.2,.3,.4… 直到.254,来“敲门”。有回应的就是在线主机。
3. 告诉 192.168.0.1,攻击者能收到么?
答案是:能收到,但方式不是直接的。
- 数据包是广播的:注意看,目标MAC地址是
Broadcast(FF:FF:FF:FF:FF:FF)。这意味着这个ARP请求会被发送到整个局域网的所有设备。 - 所有设备都能“听到”:包括攻击者自己的网卡(
LiteonTechno_7e:74:6b),以及网段内所有其他主机。 - 但只有被问到的目标会回复:当攻击者发出
Who has 192.168.0.2? Tell 192.168.0.1时,IP地址为 192.168.0.2 的主机(如果在线)会认为192.168.0.1(伪造的网关)在找它。于是,.2主机会单播一个ARP回复给192.168.0.1。 - 攻击者如何截获回复?——这里就是关键!
- 因为
192.168.0.1这个IP是攻击者伪造的,实际拥有这个IP的网关(如果存在)可能会收到回复并感到困惑(因为MAC地址不匹配),或者直接忽略。 - 为了确保能收到回复,攻击者几乎必定同时开启了“混杂模式”和“ARP欺骗”。
- 混杂模式:让他的网卡接收所有流经网络的包,而不仅仅是发给自己的包。这样他就能“偷听”到那些回复给
192.168.0.1的单播包。 - ARP欺骗:他可能已经或即将向网络发送虚假的ARP通告,声称
192.168.0.1的MAC地址就是他自己的MAC(LiteonTechno_7e:74:6b)。这样一来,所有想发给网关192.168.0.1的流量(包括这些ARP回复)实际上都会发到他的机器上。
- 混杂模式:让他的网卡接收所有流经网络的包,而不仅仅是发给自己的包。这样他就能“偷听”到那些回复给
- 因为
总结:攻击者在做什么?
这是一个典型的、带有IP欺骗的主动ARP扫描。
- 目的:发现
192.168.0.0/24网段内所有在线的主机及其MAC地址。 - 手段:
- 伪造源IP (
192.168.0.1) 以隐藏自身 (192.168.1.104)。 - 发送大量ARP广播请求进行“地毯式轰炸”。
- 伪造源IP (
- 后续可能:
- 网络侦察:绘制目标网络拓扑。
- 为更高级的攻击做准备:如ARP欺骗(中间人攻击)、针对特定主机的漏洞利用等。