当前位置:首页 > 渗透测试 > 正文内容

Linux下使用tcpdump捕获攻击流量实战教程

admin4小时前渗透测试2

# Linux下使用tcpdump捕获攻击流量实战教程


## 概述


`tcpdump`是Linux环境下最经典的网络抓包工具,能够实时捕获网络接口上的数据包,并支持多种过滤表达式。本教程将带你从基础到进阶,掌握使用tcpdump捕获、分析攻击流量的技能,并附带防御建议。


## 1. 基础用法


### 1.1 安装tcpdump


大多数Linux发行版已预装tcpdump,若未安装:


# Debian/Ubuntu
sudo apt-get install tcpdump


# CentOS/RHEL
sudo yum install tcpdump


### 1.2 基本语法


sudo tcpdump [选项] [过滤表达式]


常用选项:
- `-i`:指定网络接口,如`-i eth0`
- `-n`:不解析主机名,提高速度
- `-nn`:不解析主机名和端口名
- `-X`:以十六进制和ASCII显示包内容
- `-w`:将捕获结果写入文件
- `-r`:从文件读取
- `-c`:指定捕获包数量


### 1.3 捕获所有流量


sudo tcpdump -i eth0 -nn


按下`Ctrl+C`停止捕获。


## 2. 捕获攻击流量实战


### 2.1 捕获SYN Flood攻击


SYN Flood利用TCP三次握手中的SYN包,发送大量伪造源IP的SYN请求,耗尽服务器资源。


**捕获命令:**


sudo tcpdump -i eth0 -nn 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0'


**解释:**
- `tcp[tcpflags] & (tcp-syn) != 0`:匹配SYN标志位为1的包
- `tcp[tcpflags] & (tcp-ack) == 0`:确保ACK标志位为0,即纯SYN包


**注意事项:** 正常连接也会产生SYN包,需结合统计判断。例如,捕获到大量来自不同源IP的SYN包,且目标端口相同,高度疑似攻击。


**防御建议:**
- 启用SYN Cookie:`sysctl -w net.ipv4.tcp_syncookies=1`
- 限制半连接队列大小:`sysctl -w net.ipv4.tcp_max_syn_backlog=1024`
- 使用防火墙限制单位时间连接数。


### 2.2 捕获DNS放大攻击


DNS放大攻击利用开放DNS服务器,向受害者发送大量响应包,源IP为伪造的受害者IP。


**捕获命令:**


sudo tcpdump -i eth0 -nn 'udp dst port 53 and udp[10] & 0x80 != 0'


**解释:**
- `udp dst port 53`:目标端口53(DNS查询)
- `udp[10] & 0x80 != 0`:检查DNS标志中的QR位(响应标志)为1,即响应包


**注意事项:** 正常DNS响应也会被捕获,需结合流量大小判断。若大量DNS响应包来自不同源IP但目标IP相同,且响应包大小异常大(>512字节),可能是放大攻击。


**防御建议:**
- 关闭递归查询:配置DNS服务器仅对授权域提供递归服务。
- 限制响应速率:使用防火墙或DNS速率限制功能。
- 部署反欺骗措施:如BCP38(源地址验证)。


### 2.3 捕获端口扫描(如Nmap SYN扫描)


攻击者使用SYN扫描探测开放端口,发送SYN包,根据是否收到SYN+ACK判断端口状态。


**捕获命令:**


sudo tcpdump -i eth0 -nn 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0 and dst port 80'


**解释:** 捕获针对80端口的SYN包。实际应捕获全部端口,但为演示指定目标端口。


**注意事项:** 正常访问也会产生SYN包,需观察模式:若短时间内从同一源IP向多个不同端口发送SYN包,则为扫描行为。


**防御建议:**
- 使用端口敲门或白名单机制。
- 部署IDS/IPS检测扫描行为。
- 限制单个IP的连接速率。


### 2.4 捕获HTTP暴力破解


攻击者尝试登录后台,发送大量POST请求。


**捕获命令:**


sudo tcpdump -i eth0 -nn 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'


**解释:**
- `tcp[12:1] & 0xf0) >> 2`:计算TCP数据偏移,得到数据起始位置
- `0x504f5354`:即"POST"的ASCII码


**注意事项:** 该命令仅匹配HTTP POST请求,不包含HTTPS。对于HTTPS,需先解密或使用其他方法。


**防御建议:**
- 实施登录失败锁定策略。
- 使用CAPTCHA验证。
- 限制单个IP的请求频率。


## 3. 保存与分析


### 3.1 保存捕获数据


sudo tcpdump -i eth0 -nn -w attack.pcap


### 3.2 读取并分析


sudo tcpdump -r attack.pcap -nn | less


### 3.3 统计包数


sudo tcpdump -r attack.pcap -nn | wc -l


### 3.4 提取特定协议


sudo tcpdump -r attack.pcap -nn 'tcp port 80' -w http.pcap


## 4. 常见错误及解决


### 错误1:权限不足


**错误信息:** `tcpdump: eth0: You don't have permission to capture on that device`


**解决:** 使用`sudo`或以root用户执行。


### 错误2:过滤表达式语法错误


**错误信息:** `tcpdump: syntax error`


**解决:** 检查括号、引号是否匹配。例如,`tcp[tcpflags] & (tcp-syn) != 0`中的括号是否成对。


### 错误3:找不到网络接口


**错误信息:** `tcpdump: eth0: No such device exists`


**解决:** 使用`ip link show`列出可用接口,替换为正确名称(如`ens33`)。


### 错误4:捕获大量数据导致磁盘满


**解决:** 使用`-c`限制包数,或设置抓包文件大小限制(如使用`-C`选项)。


## 5. 防御建议总结


- **及时更新系统**:修补已知漏洞。
- **最小化服务**:关闭不必要的端口和服务。
- **使用防火墙**:限制入站和出站流量。
- **监控与告警**:结合tcpdump和IDS/IPS实时分析。
- **日志审计**:定期检查网络日志。


## 6. 总结


通过tcpdump,我们可以有效捕获并分析多种攻击流量,包括SYN Flood、DNS放大、端口扫描和暴力破解。掌握过滤表达式和常见攻击特征,是网络安全工程师的必备技能。同时,务必结合防御建议加固系统,做到防患于未然。


相关文章

ELK(Elasticsearch + Logstash + Kibana)详细部署方法

ELK(Elasticsearch + Logstash + Kibana)详细部署方法

ELK(Elasticsearch + Logstash + Kibana)详细部署方法ELK是Elasticsearch、Logstash、Kibana三个开源工具的简称,是目前最流行的日志分析和可...

Nginx安全配置最佳实践(2026版)——抵御现代Web攻击的完整指南

Nginx安全配置最佳实践(2026版)——抵御现代Web攻击的完整指南

Nginx作为全球使用率最高的Web服务器之一,承载着大量关键业务。然而,默认配置下Nginx存在诸多安全隐患。本文从攻击者视角出发,提供一套可落地的Nginx安全加固方案。一、隐藏版本号与服务器信息...

Linux下使用tcpdump捕获攻击流量实战教程

Linux下使用tcpdump捕获攻击流量实战教程

# Linux下使用tcpdump捕获攻击流量实战教程 ## 简介 `tcpdump` 是 Linux 系统中最强大的命令行网络抓包工具之一。它能够实时捕获网络接口上的数据包,并支持灵活的过滤规则,非...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。