Wireshark网络分析与安全实战 第 6 篇:网络安全威胁检测

摘要

本文将带你深入了解如何使用Wireshark检测和分析各种网络安全威胁,帮助你建立网络安全的洞察力。你将学习识别网络扫描、端口扫描、中间人攻击、DNS攻击、DDoS攻击等威胁的技巧,掌握网络取证和安全事件响应的方法。通过真实案例分析,你将能够主动发现网络中的安全异常,及时响应安全事件。

学习目标

阅读完本文后,你将能够:

  • 能力1:识别网络扫描和端口扫描行为,分析攻击者的侦察活动
  • 能力2:检测中间人攻击,包括ARP欺骗、SSL劫持等攻击手法
  • 能力3:分析DNS安全威胁,包括DNS投毒、DNS隧道、DNS放大攻击
  • 能力4:识别DDoS攻击模式,分析攻击流量特征,制定缓解策略

一、网络扫描检测

1.1 扫描类型与特征

网络扫描是攻击者侦察目标网络的第一步,了解目标的网络结构、开放端口、运行服务等。

扫描类型对比

flowchart TB
    Scan[网络扫描类型] --> HostScan[主机发现<br>确定哪些IP在线]
    Scan --> PortScan[端口扫描<br>发现开放端口]
    Scan --> VulnScan[漏洞扫描<br>识别服务版本和漏洞]
    Scan --> OSScan[操作系统指纹<br>识别操作系统类型]

    HostScan --> ICMP[ICMP扫描<br>ping sweep]
    HostScan --> TCP[TCP扫描<br>ACK/SYN/FIN扫描]
    HostScan --> ARP[ARP扫描<br>ARP请求]

    PortScan --> TCP1[TCP Connect<br>完整连接]
    PortScan --> TCP2[TCP SYN<br>半开扫描]
    PortScan --> TCP3[TCP FIN/XMAS/NULL<br>隐蔽扫描]
    PortScan --> UDP[UDP扫描<br>发送UDP数据包]

    VulnScan --> Banner[抓取Banner<br>版本信息]
    VulnScan --> Response[分析响应<br>服务特征]

    OSScan --> TTL[TTL值分析]
    OSScan --> Window[窗口大小分析]
    OSScan --> Flag[标志位行为]

图表讲解

这个扫描类型图展示了攻击者使用的各种侦察技术。理解这些技术有助于在Wireshark中识别扫描活动。

主机发现扫描确定哪些IP地址在线。ICMP扫描(ping sweep)发送ICMP Echo Request,等待响应。在线主机会回复Echo Reply。攻击者可能发送ICMP到整个子网(如192.168.1.0/24),通过响应发现活跃主机。TCP扫描发送TCP包到特定端口(如80、443),根据响应判断主机是否在线。ARP扫描发送ARP请求,通过ARP响应发现局域网内的主机。

端口扫描发现主机上开放的服务端口。TCP Connect扫描完成完整的三次握手,连接成功表示端口开放。这是最可靠的扫描,但容易被检测(日志记录连接)。TCP SYN扫描(半开扫描)只发送SYN,收到SYN-ACK后发送RST(不完成连接),减少日志但可能被IDS检测。TCP FIN/XMAS/NULL扫描发送特殊的TCP包(FIN标志置位、所有标志置位、所有标志清零),绕过防火墙但不是所有系统都响应。UDP扫描发送UDP数据包到端口,无响应可能表示端口开放或丢包,有ICMP Port Unreachable表示端口关闭。

漏洞扫描识别服务版本和已知漏洞。抓取Banner是连接服务后读取欢迎消息或版本信息(如SSH、HTTP、FTP的Banner)。分析响应是发送特定的探针,分析服务的响应特征,识别版本和漏洞。

操作系统指纹通过分析TCP/IP实现细节识别操作系统。TTL值分析:不同操作系统使用不同的初始TTL(Windows 128、Linux 64、Cisco 255)。窗口大小分析:不同操作系统使用不同的初始窗口大小。标志位行为:不同操作系统对特殊标志(FIN、SYN组合)的响应不同。

在Wireshark中,可以通过过滤器识别扫描活动。主机发现:icmparp查看大量到不同IP的探测。端口扫描:tcp.flags.syn==1 and tcp.flags.ack==0查看大量SYN包。漏洞扫描:查看大量到不同端口的连接尝试。操作系统指纹:查看TTL、窗口大小的分布。

1.2 识别端口扫描

端口扫描特征

flowchart TD
    ScanDetect[检测端口扫描] --> Patterns[扫描模式识别]

    Patterns --> P1[单一源IP<br>多目的端口]
    Patterns --> P2[单一源IP<br>多目的IP]
    Patterns --> P3[多源IP<br>单一目的端口<br>反射攻击]

    P1 --> Type1{端口访问模式}
    P2 --> Type2{主机扫描模式}
    P3 --> Type3{DDoS模式}

    Type1 --> Sequential[顺序端口<br>1-1024]
    Type1 --> Common[常用端口<br>20/21/22/80/443]
    Type1 --> Random[随机端口<br>隐蔽扫描]

    Type2 --> Linear[线性扫描<br>整个子网]
    Type2 --> Random2[随机扫描<br>跳跃式]

    Sequential --> Identify[识别: 单一主机<br>扫描多个端口]
    Common --> Identify2[识别: 常规端口<br>服务扫描]
    Random --> Identify3[识别: 随机端口<br>隐蔽扫描]
    Linear --> Identify4[识别: 扫描整个<br>子网寻找主机]
    Random2 --> Identify5[识别: 随机主机<br>规避检测]

    Identify --> Analyze[分析扫描者]
    Identify2 --> Analyze
    Identify3 --> Analyze
    Identify4 --> Analyze
    Identify5 --> Analyze

    Analyze --> Stats[Statistics → Conversations<br>查看源/目的地址]
    Stats --> Graph[IO Graph<br>可视化扫描模式]

图表讲解

这个端口扫描检测图展示了识别扫描活动的模式分析方法。扫描活动有明显的特征模式,通过分析这些模式可以识别扫描。

单一源IP、多目的端口模式是最常见的端口扫描。攻击者从单个IP向目标主机的多个端口发送连接尝试。端口访问模式可能是顺序的(1、2、3…1024)、常用端口(20、21、22、80、443等知名服务)、或随机的(隐蔽扫描)。顺序端口扫描容易被检测,但快速。常用端口扫描针对常见服务,更高效。随机端口扫描更隐蔽,但覆盖端口慢。

单一源IP、多目的IP模式是主机发现扫描。攻击者从单个IP向多个目标IP的特定端口(如80、443)发送探测,确定哪些主机在线。扫描可能是线性的(整个子网192.168.1.0/24)或随机的(跳跃式,规避检测)。线性扫描快速但容易被IDS检测。随机扫描更隐蔽,但可能遗漏主机。

多源IP、单一目的端口模式可能是分布式扫描或反射攻击。多个源IP向单一目的端口发送流量,可能是分布式端口扫描(使用僵尸网络)或反射DDoS攻击(伪造源IP,攻击者放大流量)。区别在于:扫描通常只发送几个包,DDoS发送大量流量。

使用Wireshark的Statistics → Conversations可以查看源/目的地址的通信模式。如果某个源IP与大量目的端口通信,可能是端口扫描。如果某个源IP与大量目的IP通信,可能是主机扫描。查看Conversations的TCP标签,按数据包数量或字节数排序,扫描活动的特征是大量小会话(1-2个包)。

使用IO Graph可视化扫描模式。X轴是时间,Y轴是数据包/字节数。添加过滤器(如tcp.flags.syn==1)绘制SYN包随时间的变化。扫描活动显示为规律的、密集的SYN包,可能在短时间内发送大量SYN。正常流量通常更随机,有完整的连接建立和数据传输。

1.3 扫描检测过滤器

Wireshark扫描检测过滤器

# TCP SYN扫描(最常见)
tcp.flags.syn==1 and tcp.flags.ack==0

# 半开扫描(SYN包但没有对应SYN-ACK)
tcp.flags.syn==1 and tcp.flags.ack==0 and tcp.analysis.retransmission

# FIN扫描(隐蔽)
tcp.flags.fin==1 and tcp.flags.syn==0 and tcp.flags.ack==0

# XMAS扫描(所有标志置位)
tcp.flags.fin==1 and tcp.flags.syn==1 and tcp.flags.psh==1 and tcp.flags.urg==1

# NULL扫描(所有标志清零)
tcp.flags.fin==0 and tcp.flags.syn==0 and tcp.flags.psh==0 and tcp.flags.ack==0

# 端口扫描(单一源,多端口)
tcp.flags.syn==1 and tcp.flags.ack==0 ) # 统计源IP的SYN包数量
# 然后 Statistics → Conversations → TCP
# 查看源IP与多少不同目的端口通信

# 主机扫描(单一源,多目的IP)
tcp.flags.syn==1 and tcp.flags.ack==0 ) # 统计目的IP
# 查看 Conversations,源IP与多少目的IP通信

# ICMP扫描
icmp.type == 8  # Echo Request (ping)

# ARP扫描
arp.opcode == 1  # ARP请求

扫描检测实战

flowchart TD
    Start[发现可疑活动] --> Capture[捕获流量]

    Capture --> Filter[应用过滤器<br>tcp.flags.syn==1 and tcp.flags.ack==0]

    Filter --> Analyze[分析SYN包]

    Analyze --> Questions[回答问题]

    Questions --> Q1[有多少个<br>不同源IP?]
    Questions --> Q2[每个源IP发送<br>到多少目的端口?]
    Questions --> Q3[扫描速率<br>如何?]
    Questions --> Q4[有完整连接<br>建立吗?]

    Q1 --> A1[单一源IP:<br>定向扫描]
    Q1 --> A2[多个源IP:<br>分布式扫描或DDoS]

    Q2 --> B1[大量端口:<br>端口扫描]
    Q2 --> B2[少数端口:<br>主机发现或特定服务]

    Q3 --> C1[高速率:<br>自动化工具]
    Q3 --> C2[低速率:<br>隐蔽扫描或手动]

    Q4 --> D1[无完整连接:<br>SYN扫描]
    Q4 --> D2[有完整连接:<br>连接扫描或正常流量]

    A1 --> Report[报告扫描活动]
    A2 --> Report
    B1 --> Report
    B2 --> Report
    C1 --> Report
    C2 --> Report
    D1 --> Report
    D2 --> Report

    Report --> Action[响应措施:<br>封禁源IP、<br>配置防火墙、<br>通知管理员]

图表讲解

这个扫描检测流程图展示了使用Wireshark检测和分析扫描活动的系统方法。检测扫描活动需要应用过滤器、分析流量模式、回答关键问题。

首先捕获流量并应用过滤器tcp.flags.syn==1 and tcp.flags.ack==0,只显示TCP SYN包。这些是连接尝试(正常或扫描)。

分析SYN包的源IP数量。如果是单一源IP,可能是定向扫描。如果是多个源IP,可能是分布式扫描(使用僵尸网络)或反射DDoS攻击(伪造源IP)。

分析每个源IP发送到多少目的端口。使用Statistics → Conversations → TCP,按源IP排序,查看每个源IP与多少不同目的端口通信。如果是大量端口(如>100),肯定是端口扫描。如果是少数端口(如20、80、443),可能是主机发现或针对特定服务的扫描。

分析扫描速率。在IO Graph中查看SYN包随时间的变化。高速率(每秒数百个SYN)是自动化扫描工具。低速率(每秒几个SYN)可能是隐蔽扫描(避免触发IDS)或手动测试。

分析是否有完整连接建立。正常流量会看到完整的连接建立(SYN、SYN-ACK、ACK)和数据传输。扫描流量通常只看到SYN包,或SYN加RST(半开扫描)。如果有大量完整连接但立即关闭(SYN、SYN-ACK、ACK、FIN、ACK),可能是连接扫描而非正常使用。

报告扫描活动包括:记录源IP、目的IP/端口范围、扫描时间、扫描类型。响应措施包括:在防火墙封禁源IP、配置IDS规则检测类似扫描、通知网络管理员和安全管理员、检查目标主机是否被成功入侵。


二、中间人攻击检测

2.1 ARP欺骗攻击

ARP欺骗是局域网中最常见的中间人攻击技术,攻击者伪造ARP响应,重定向受害者流量。

ARP欺骗原理

flowchart TB
    subgraph Normal["正常ARP通信"]
        direction TB
        HostA[主机A<br>192.168.1.10<br>AA:AA:AA:AA:AA:AA]
        Gateway[网关<br>192.168.1.1<br>GG:GG:GG:GG:GG:GG]

        HostA -->|正常ARP<br>解析网关| Gateway
        Gateway -->|正常ARP<br>解析主机A| HostA
    end

    subgraph Attack["ARP欺骗攻击"]
        direction TB
        Attacker[攻击者<br>192.168.1.100<br>AT:AT:AT:AT:AT:AT]

        Attacker -->|伪造ARP响应<br>网关=AT:AT...| HostA
        Attacker -->|伪造ARP响应<br>主机A=AT:AT...| Gateway

        HostA -->|更新ARP缓存<br>网关=AT:AT| Poison1[中毒的缓存]
        Gateway -->|更新ARP缓存<br>主机A=AT:AT| Poison2[中毒的缓存]

        HostA -->|流量经过攻击者| Attacker
        Attacker -->|转发/监听/修改| Gateway

        Attacker --> MitM[中间人攻击<br>窃听、篡改、注入]
    end

    Normal --> Attack

图表讲解

这个ARP欺骗原理图展示了攻击者如何利用ARP协议的信任缺陷劫持流量。ARP协议没有认证机制,任何设备都可以响应ARP请求,甚至主动发送ARP响应(免费ARP)。

正常ARP通信中,主机A与网关通信时,使用真实的MAC地址。ARP缓存维护正确的IP-MAC映射。

攻击者发送伪造的ARP响应。给主机A发送响应,声称网关的MAC地址是攻击者的MAC地址(AT:AT…)。主机A收到后,更新ARP缓存,将网关的IP(192.168.1.1)映射到攻击者的MAC。同样,给网关发送响应,声称主机A的MAC地址是攻击者的MAC地址。网关也更新ARP缓存。

现在主机A和网关之间的所有流量都经过攻击者。攻击者可以被动监听所有流量(窃听敏感信息如密码、会话令牌)。可以修改流量(如注入恶意代码、重定向到钓鱼网站)。可以丢弃流量(拒绝服务)。可以分析流量(了解网络结构、应用行为)。

ARP欺骗的检测方法包括:

  1. 查看ARP缓存是否有重复的IP地址(arp -a命令)
  2. 在Wireshark中查看是否有重复地址检测(arp.duplicate-address-detected
  3. 查看是否有大量未请求的ARP响应(没有对应请求的响应)
  4. 查看 Gratuitous ARP 是否频繁(设备正常启动时发送,频繁发送可能异常)
  5. 使用Statistics → ARP查看ARP流量模式,是否有异常的ARP响应

在Wireshark中,使用过滤器arp.duplicate-address-detected查看重复地址检测。使用arp查看所有ARP流量,关注响应(arp.opcode == 2)。如果有大量ARP响应但没有对应的请求,可能是ARP欺骗。

2.2 SSL/TLS劫持

SSL/TLS劫持是更高级的中间人攻击,攻击者不仅劫持流量,还解密加密流量。

SSL劫持原理

flowchart TD
    subgraph Normal["正常SSL/TLS连接"]
        direction TB
        Client[客户端] -->|Client Hello| Server[真实服务器<br>example.com]
        Server -->|Server Hello<br>真实证书| Client
        Client -->|加密流量<br>使用真实公钥| Server
    end

    subgraph Attack["SSL/TLS劫持"]
        direction TB
        Attacker[攻击者<br>中间代理]

        Client -->|Client Hello| Attacker
        Attacker -->|转发Client Hello| Server
        Server -->|Server Hello<br>真实证书| Attacker
        Attacker -->|伪造证书<br>声称是example.com<br>签名为攻击者CA| Client

        Client -->|警告: 未知CA<br>用户可能忽略| Trust[信任攻击者证书<br>或浏览器警告]

        Trust --> Decrypt[攻击者解密<br>客户端流量]
        Decrypt --> Encrypt[加密并转发<br>给服务器]

        Attacker --> MitM[完全中间人<br>查看所有加密流量]
    end

    Normal --> Attack

图表讲解

这个SSL/TLS劫持图展示了攻击者如何解密加密流量。SSL/TLS设计用于防止中间人攻击,但攻击者可以使用各种技术绕过这种保护。

正常SSL/TLS连接中,客户端连接到真实服务器,服务器发送由可信CA签名的证书。客户端验证证书(有效期、签名、域名),如果验证通过,使用证书中的公钥加密数据。只有拥有对应私钥的服务器可以解密。

SSL劫持中,攻击者位于客户端和服务器之间。客户端连接到攻击者(以为连接到服务器),攻击者转发连接到真实服务器。服务器发送真实证书给攻击者,攻击者看到真实内容。攻击者生成伪造证书,声称是服务器(example.com),但由攻击者自己控制的CA签名。攻击者将伪造证书发送给客户端。

客户端收到伪造证书后,验证签名。如果攻击者的CA不被客户端信任,浏览器会显示警告(“此网站的安全证书不受信任”)。用户可能忽略警告继续,这就成功建立了SSL劫持。如果用户注意警告并拒绝连接,攻击失败。

攻击成功后,客户端使用攻击者的公钥加密数据发送给攻击者,攻击者解密(因为是攻击者生成的证书)。攻击者使用服务器的真实公钥加密数据发送给服务器,服务器解密。攻击者可以看到所有明文流量,包括敏感信息(密码、会话令牌、数据)。

检测SSL/TLS劫持的方法包括:

  1. 查看证书链:服务器证书应该由可信CA签名,中间人证书会显示奇怪的CA
  2. 查看TLS握手:如果TLS版本或密码套件异常,可能有中间人
  3. 查看服务器证书指示:如果证书的Subject CN与访问的域名不匹配,可疑
  4. 查看TLS密钥日志:如果设置了SSLKEYLOGFILE,检查是否有异常的会话密钥

在Wireshark中,使用过滤器ssltls查看TLS流量。查看TLS握手过程(Client Hello、Server Hello、Certificate、Server Key Exchange等)。查看Certificate消息,检查颁发者(Issuer)。如果颁发者不是知名CA(如DigiCert、Let’s Encrypt),可疑。查看Subject CN,是否与访问的域名匹配。

2.3 中间人攻击检测过滤器

MITM检测过滤器

# ARP欺骗检测
arp.duplicate-address-detected

# Gratuitous ARP(可能正常,频繁则可疑)
arp.opcode == 1 and arp.src.proto_ipv4 == arp.dst.proto_ipv4

# 未请求的ARP响应(有响应但之前没有请求)
arp.opcode == 2
# 需要手动检查是否有对应的请求

# SSL/TLS可疑证书
tls.handshake.type == 11  # Certificate消息
# 查看Issuer,如果不是知名CA,可疑

# TLS证书Subject CN不匹配
tls.handshake.extensions_server_name != x509sat.uSubject

# HTTP到HTTPS重定向异常
http.response.code == 301 and http.response.location starts with "http://"

# 同一TCP连接中的多个TLS握手(可能劫持重协商)
tls.handshake.type == 1

# TCP连接异常重置(可能IDS/MITM检测到攻击)
tcp.flags.reset == 1 and tcp.analysis.ack_rtt > 0

MITM分析流程

flowchart TD
    MITM[怀疑中间人攻击] --> Evidence[收集证据]

    Evidence --> E1[ARP层面<br>查看ARP表和流量]
    Evidence --> E2[SSL层面<br>查看证书和握手]
    Evidence --> E3[应用层面<br>查看HTTP内容和行为]

    E1 --> Check1[检查ARP缓存<br>重复IP?]
    Check1 --> Yes1[ARP欺骗确认]

    E2 --> Check2[检查服务器证书<br>颁发者可信?]
    Check2 --> Yes2[证书可疑<br>可能是SSL劫持]

    E3 --> Check3[检查HTTP内容<br>有异常注入?]
    Check3 --> Yes3[内容篡改<br>确认MITM]

    Yes1 --> Analyze[分析攻击者]
    Yes2 --> Analyze
    Yes3 --> Analyze

    Analyze --> Locate[定位攻击者<br>ARP表中的MAC地址<br>伪造证书的签名者]

    Locate --> Mitigate[缓解措施<br>静态ARP<br>检查CA信任<br>使用HSTS]

图表讲解

这个MITM分析流程图展示了多层检测中间人攻击的方法。MITM攻击可能在多个层面留下痕迹,需要综合分析。

ARP层面检查:查看ARP缓存是否有重复的IP地址。正常情况下,每个IP应该对应唯一的MAC地址。如果发现重复,可能是ARP欺骗。在Wireshark中,使用过滤器arp.duplicate-address-detected查看重复地址检测事件。查看ARP流量模式,是否有大量未请求的ARP响应。

SSL/TLS层面检查:查看TLS握手过程中的证书。正常情况下,服务器证书应该由知名CA(如DigiCert、Let’s Encrypt、GlobalSign)签名。如果颁发者是未知的或自签名的,可疑。查看证书的Subject CN,应该与访问的域名匹配。如果Subject CN是攻击者的域名或通用名称,可疑。查看TLS版本和密码套件,降级到不安全的版本(如SSL 3.0、TLS 1.0)可能表示攻击。

应用层面检查:查看HTTP内容是否有异常。如果HTTP内容被篡改(如注入恶意JavaScript、重定向到其他网站),可能是MITM攻击。查看HTTP响应头,是否有异常的头部(如额外Cookie、修改的Cache-Control)。查看HTML内容,是否有可疑的脚本或iframe。

定位攻击者:在ARP层面,攻击者的MAC地址出现在ARP缓存中(作为网关或受害者MAC)。在SSL层面,伪造证书的签名者(Issuer)指向攻击者的CA。在应用层面,注入内容的特征可以追踪攻击者。

缓解措施包括:配置静态ARP条目(手动配置IP-MAC映射,防止ARP欺骗),启用DAI(Dynamic ARP Inspection,交换机功能验证ARP包),检查CA信任(移除不必要的CA证书),使用HSTS(HTTP Strict Transport Security,强制使用HTTPS),使用证书锁定(Certificate Pinning,应用程序验证服务器证书指纹)。


三、DNS安全威胁

3.1 DNS投毒攻击

DNS投毒(DNS Cache Poisoning)是污染DNS解析器的缓存,将域名解析到错误的IP地址。

DNS投毒原理

sequenceDiagram
    autonumber
    participant Victim as 受害者
    participant Resolver as DNS解析器
    participant Attacker as 攻击者
    participant Auth as 权威服务器

    Note over Victim: 用户访问<br>www.example.com

    Victim->>Resolver: DNS查询<br>www.example.com?<br>ID=0x1234

    Resolver->>Auth: 转发查询<br>ID=0x1234

    Attacker->>Resolver: 伪造响应<br>ID=0x1234<br>Answer: 6.6.6.6<br>伪造的IP

    Note over Resolver: 检查Transaction ID<br>如果匹配,缓存毒化

    Auth-->>Resolver: 真实响应<br>ID=0x1234<br>Answer: 93.184.216.34<br>真实IP

    Note over Resolver: 真实响应晚到<br>但缓存已投毒

    Resolver-->>Victim: 响应<br>93.184.216.34<br>(如果真实先到)<br>或<br>6.6.6.6<br>(如果伪造先到)

    Note over Victim: 如果收到伪造IP<br>被重定向到<br>攻击者控制的服务器

图表讲解

这个DNS投毒时序图展示了攻击者如何污染DNS缓存。DNS投毒利用了DNS协议的信任缺陷:DNS响应只通过Transaction ID验证,没有其他认证。

受害者访问www.example.com时,向DNS解析器(通常是ISP的DNS或本地DNS服务器)发送DNS查询。查询包含Transaction ID(如0x1234),用于匹配查询和响应。

解析器转发查询到权威服务器。攻击者可以伪造DNS响应,声称来自权威服务器,包含恶意IP地址(如6.6.6.6,可能是钓鱼网站或恶意服务器)。伪造响应的关键是匹配Transaction ID。如果攻击者猜对了Transaction ID,解析器会接受伪造响应,将域名映射到恶意IP存入缓存。

真实响应来自权威服务器,包含正确的IP地址(93.184.216.34)。但真实响应可能比伪造响应晚到(因为攻击者可能更近、或网络延迟)。如果伪造响应先到,缓存被投毒,后续的查询(来自其他用户)会从缓存返回恶意IP,直到缓存过期。

DNS投毒的影响是持久性的。一旦缓存被投毒,所有查询该域名的用户(不仅是攻击目标)都会被重定向到恶意服务器,直到缓存条目过期(TTL过期)或被手动清除。这使DNS投毒比单纯的DNS欺骗更有危害。

检测DNS投毒的方法包括:

  1. 查看DNS响应的源IP,是否真的是权威服务器
  2. 查看DNS响应的TTL,是否异常(如设置很大值以延长投毒效果)
  3. 比较不同DNS服务器的响应,是否返回不同的IP
  4. 使用DNSSEC验证响应,如果签名验证失败,可能是投毒

在Wireshark中,使用过滤器dns查看DNS流量。查看DNS响应的源地址(ip.src),如果响应不是来自配置的DNS服务器或权威服务器,可疑。查看DNS响应的Answer部分,dns.qry.name是查询的域名,dns.a是返回的IP地址。查看响应的TTL(dns.resp.ttl),异常大的TTL可能是投毒者试图延长缓存时间。

3.2 DNS隧道检测

DNS隧道(DNS Tunneling)是通过DNS协议隐藏传输数据的技术,常用于数据外泄或C2通信。

DNS隧道原理

flowchart TD
    subgraph Normal["正常DNS查询"]
        direction TB
        Client[客户端] -->|查询<br>www.example.com| DNS[DNS服务器]
        DNS -->|响应<br>93.184.216.34| Client
    end

    subgraph Tunnel["DNS隧道"]
        direction TB
        Malware[恶意软件] -->|编码数据<br>在子域名中| DNS

        DNS -->|转发查询| Auth[攻击者控制的<br>权威DNS服务器]

        Auth -->|解码数据<br>接收指令| Tunnel[隧道通信]

        Tunnel -->|编码响应<br>在TXT记录中| DNS
        DNS -->|响应| Malware

        Tunnel --> C2[C2服务器<br>接收数据<br>发送指令]
    end

    Normal --> Tunnel

图表讲解

这个DNS隧道图展示了如何通过DNS协议隐藏传输数据。DNS隧道利用了DNS协议的”特权”——大多数网络允许DNS流量通过防火墙,攻击者可以滥用这种信任。

正常DNS查询中,客户端查询域名(如www.example.com),DNS服务器解析并返回IP地址。查询是简单的、合法的。

DNS隧道中,恶意软件在受害者主机上运行,将数据编码在DNS查询的子域名中。例如,encoded-data-in-subdomain.attacker-domain.com。子域名包含编码的敏感数据(如窃取的文件、键盘记录)。DNS解析器(可能是ISP的DNS或公共DNS)转发查询到攻击者控制的权威DNS服务器(attacker-domain.com的NS记录指向攻击者服务器)。

攻击者的DNS服务器接收查询,解码子域名中的数据,收集外泄信息。攻击者可以通过DNS响应(TXT记录)发送指令给恶意软件,建立双向通信通道。从外部看,这些通信看起来像正常的DNS查询,但数据量、频率、模式异常。

DNS隧道的特征包括:

  1. 大量DNS查询到单一域名(特别是奇怪的长域名)
  2. 子域名看起来随机或包含Base64编码
  3. DNS查询的频率异常高(如每秒多个查询)
  4. DNS响应包含大量数据(TXT记录很长)
  5. 查询的域名不存在(NXDOMAIN),但仍然持续查询

检测DNS隧道的方法:

  1. 使用过滤器dns.qry.name查看查询的域名模式
  2. 查看子域名长度,正常的域名通常<50字符,隧道可能>100字符
  3. 查看查询频率,同一客户端对同一域名的频繁查询
  4. 查看DNS响应类型,TXT记录的大量使用可疑
  5. 使用Statistics → Conversations → DNS,查看DNS会话的流量模式

在Wireshark中,使用过滤器dns.qry.name contains "attacker-domain.com"查看到特定域名的查询。使用dns.qry.name.length > 50查看长域名查询。使用dns.flags.rcode == 3查看NXDOMAIN响应,如果大量NXDOMAIN到同一域,可能是隧道。

3.3 DNS放大攻击

DNS放大攻击是DDoS攻击的一种,利用DNS协议的特性放大攻击流量。

DNS放大原理

flowchart TD
    subgraph Attack["DNS放大攻击"]
        direction TB
        Attacker[攻击者] -->|伪造DNS查询<br>源IP=受害者<br>查询: ANY record<br>小查询包] DNS[DNS服务器]

        DNS -->|大响应包<br>发送给受害者<br>源IP伪造为受害者] Victim[受害者]

        Amplification[放大效应]
        Amplification --> A1[查询包: ~60字节]
        Amplification --> A2[响应包: ~3000字节]
        Amplification --> A3[放大倍数: ~50x]

        DNS --> Resolvers[许多开放DNS<br>解析器]

        Resolvers --> Victim[大量放大流量<br>导致网络拥塞<br>或服务不可达]
    end

图表讲解

这个DNS放大攻击图展示了攻击者如何利用DNS协议放大攻击流量。DNS放大是反射型DDoS攻击的一种,攻击者不需要大量带宽就能产生巨大的攻击流量。

攻击者伪造DNS查询,源IP地址改为受害者的IP。查询使用ANY记录(请求所有记录),这会触发大的响应。查询包本身很小(约60字节),但响应包可能很大(3000字节或更多),产生约50倍的放大效应。

DNS服务器(通常是开放DNS解析器)收到查询后,处理查询并将响应发送给”源IP地址”。由于源IP被伪造为受害者,响应发送给受害者而非攻击者。攻击者可以使用许多DNS服务器(可能有数千个开放解析器),每个都产生放大的响应。

受害者收到大量DNS响应,网络带宽被耗尽,合法流量无法通过。攻击者的优势是:使用少量带宽(发送小查询)就能产生大量攻击流量(大响应),攻击流量来自多个源(DNS服务器),难以过滤,且攻击者隐藏自己的真实IP。

DNS放大攻击的特征包括:

  1. 大量DNS响应发送到单一目标(受害者)
  2. 响应的源IP是多个DNS服务器(开放解析器)
  3. 响应包的大小异常大(>1000字节)
  4. 查询类型是ANY或请求大量记录的类型
  5. 目标IP是随机伪造的,不是真实的查询发起者

检测DNS放大攻击的方法:

  1. 使用过滤器dns.flags.response == 1查看DNS响应
  2. 查看响应的目的地址,是否有大量响应发送到单一IP
  3. 查看响应的源地址,是否来自多个DNS服务器
  4. 查看响应的大小,dns.qry.name是查询的域名,响应大小
  5. 使用Statistics → Conversations → UDP,查看UDP会话的流量模式

在Wireshark中,使用过滤器dns and dns.flags.response == 1查看DNS响应。使用Statistics → Endpoints,按地址排序,查看是否有单一目的IP收到大量DNS响应。查看响应的长度(udp.lengthframe.len),大响应包(>1000字节)可能是放大攻击。查看响应的查询类型(dns.qry.type),如果是255(ANY)或请求大量记录的类型,可疑。


四、DDoS攻击检测

4.1 DDoS攻击类型

DDoS(分布式拒绝服务)攻击通过大量流量淹没目标,使服务不可用。

DDoS攻击分类

flowchart TD
    DDoS[DDoS攻击类型] --> Volume[容量耗尽攻击<br>Volume-based]
    DDoS --> Protocol[协议滥用攻击<br>Protocol-based]
    DDoS --> Application[应用层攻击<br>Application-layer]

    Volume --> V1[UDP Flood<br>大量UDP包]
    Volume --> V2[ICMP Flood<br>大量ping]
    Volume --> V3[放大攻击<br>DNS/NTP/SSDP]

    Protocol --> P1[SYN Flood<br>大量SYN包<br>耗尽连接表]
    Protocol --> P2[ACK Flood<br>大量ACK包]
    Protocol --> P3[碎片攻击<br>大量IP碎片]

    Application --> A1[HTTP Flood<br>大量HTTP请求]
    Application --> A2[Slowloris<br>慢速连接<br>耗尽连接池]
    Application --> A3[请求洪流<br>针对URL的攻击]

图表讲解

这个DDoS攻击分类图展示了不同层次的DDoS攻击。理解这些类型有助于识别和缓解DDoS攻击。

容量耗尽攻击的目标是耗尽网络带宽。UDP Flood发送大量UDP包到随机端口,目标尝试响应并耗尽资源。ICMP Flood(Ping Flood)发送大量ICMP Echo Request,目标处理Echo Reply并耗尽带宽。放大攻击(如DNS放大)利用反射和放大,用小查询触发大响应,用更少的带宽产生更大的攻击流量。

协议滥用攻击的目标是耗尽中间设备(防火墙、负载均衡器、服务器)的资源。SYN Flood发送大量TCP SYN包但不完成三次握手,目标分配资源(TCB)等待SYN-ACK,最终耗尽连接表。ACK Flood发送大量TCP ACK包,目标查找对应的连接并失败,消耗CPU资源。碎片攻击发送大量IP碎片,目标重组碎片并耗尽内存和CPU。

应用层攻击的目标是耗尽应用资源(Web服务器、数据库)。HTTP Flood发送大量HTTP请求,看起来像真实用户但请求耗资的URI(如数据库查询、大文件下载)。Slowloris建立TCP连接但非常慢地发送HTTP请求,保持连接打开,耗尽服务器的连接池(大多数服务器限制并发连接数)。请求洪流针对特定的URL或API,频繁请求导致服务器过载或数据库过载。

4.2 SYN Flood检测

SYN Flood攻击特征

flowchart TD
    SYN[SYN Flood攻击] --> Capture[捕获流量]

    Capture --> Filter[tcp.flags.syn==1 and tcp.flags.ack==0]

    Filter --> Analysis[分析SYN包]

    Analysis --> Characteristics[攻击特征]

    Characteristics --> C1[大量SYN包<br>来自多个源IP]
    Characteristics --> C2[很少SYN-ACK<br>响应]
    Characteristics --> C3[很少ACK<br>完成握手]
    Characteristics --> C4[随机源IP<br>可能是伪造的]

    C1 --> Rate[速率分析<br>每秒SYN数量]
    C2 --> Ratio[比例分析<br>SYN:SYN-ACK比例]
    C3 --> Timeout[超时分析<br>重传SYN]
    C4 --> Spoof[伪造检测<br>源IP路由不可达]

    Rate --> HighRate{速率<br>异常?}
    Ratio --> HighRatio{比例<br>异常?}
    Timeout --> ManyTimeout{超时<br>频繁?}
    Spoof --> ManySpoof{伪造<br>常见?}

    HighRate -->|是| Confirm[SYN Flood确认]
    HighRatio -->|是| Confirm
    ManyTimeout -->|是| Confirm
    ManySpoof -->|是| Confirm

    Confirm --> Mitigate[缓解措施:<br>SYN Cookie<br>连接限制<br>防火墙规则]

图表讲解

这个SYN Flood检测图展示了识别和分析SYN Flood攻击的方法。SYN Flood是最常见的协议层DDoS攻击,目标是耗尽服务器的TCP连接表。

SYN Flood攻击的特征包括:大量SYN包(tcp.flags.syn==1 and tcp.flags.ack==0),通常来自多个源IP(可能是僵尸网络)。很少看到对应的SYN-ACK(tcp.flags.syn==1 and tcp.flags.ack==1),因为目标服务器可能已经过载,或攻击者伪造源IP(无法发送SYN-ACK)。很少看到ACK(tcp.flags.ack==1 and tcp.flags.syn==0),因为攻击者不完成三次握手。源IP地址可能是随机的或伪造的,traceroute到这些IP可能不可达或路由到其他地方。

速率分析:在IO Graph中绘制SYN包随时间的变化,SYN Flood显示为SYN包的急剧增加(如每秒数千到数万个)。正常流量应该有更平缓的SYN速率,且与SYN-ACK和ACK成比例。

比例分析:统计SYN、SYN-ACK、ACK的数量。正常流量中,SYN:SYN-ACK:ACK的比例应该接近1:1:1(每个连接建立)。SYN Flood中,SYN数量远超SYN-ACK和ACK,如100:1:1或更高。

超时分析:查看TCP重传(tcp.analysis.retransmission)。SYN Flood中,目标服务器会重传SYN-ACK(因为未收到ACK),显示为[TCP Retransmission]。如果看到大量SYN-ACK重传,可能是SYN Flood。

伪造检测:检查源IP是否真实。尝试traceroute或ping源IP,如果无法到达或返回不同路径,可能是伪造的IP。查看路由器的接口统计,如果收到大量包但发送很少(因为没有到达伪造源),可能是SYN Flood。

缓解措施包括:启用SYN Cookie(服务器不分配完整资源,而是编码状态在初始序列号中),配置连接限制(限制每个源IP的连接速率、限制半开连接数量),使用防火墙/IDS规则检测和阻止SYN Flood,使用DDoS防护服务(如Cloudflare、Akamai)吸收和过滤攻击流量。

4.3 DDoS检测实战

DDoS检测流程

flowchart TD
    DDoS[怀疑DDoS攻击] --> Symptoms[攻击症状]

    Symptoms --> S1[服务不可达<br>或非常慢]
    Symptoms --> S2[大量流量<br>带宽耗尽]
    Symptoms --> S3[大量连接<br>资源耗尽]

    S1 --> Capture[开始捕获<br>确定捕获范围]
    S2 --> Capture
    S3 --> Capture

    Capture --> Analyze[分析流量]

    Analyze --> Volume[容量分析<br>总流量、速率]
    Analyze --> Protocol[协议分析<br>哪种协议为主]
    Analyze --> Source[源分析<br>攻击源数量]

    Volume --> V1{总流量<br>异常?}
    Protocol --> P1{哪种协议<br>最多?}
    Source --> Src1{源数量<br>多少?}

    V1 -->|是| Type1[容量型DDoS<br>UDP/ICMP Flood]
    V1 -->|否| Type2[协议型DDoS<br>SYN/ACK Flood]

    P1 --> UDP[UDP为主<br>UDP Flood]
    P1 --> ICMP[ICMP为主<br>Ping Flood]
    P1 --> SYN[SYN为主<br>SYN Flood]
    P1 --> HTTP[HTTP为主<br>HTTP Flood]

    Src1 --> Many[大量源IP<br>分布式DDoS]
    Src1 --> Few[单一源IP<br>放大攻击或单源]

    Type1 --> Identify[识别攻击类型]
    Type2 --> Identify
    UDP --> Identify
    ICMP --> Identify
    SYN --> Identify
    HTTP --> Identify
    Many --> Identify
    Few --> Identify

    Identify --> Mitigate[缓解措施<br>过滤攻击流量<br>限速/黑名单<br>DDoS防护服务]

    Mitigate --> Monitor[持续监控<br>调整策略<br>直到攻击结束]

图表讲解

这个DDoS检测流程图展示了从症状识别到缓解的完整过程。DDoS攻击的快速检测和响应至关重要,可以最小化影响。

首先识别攻击症状。服务不可达或非常慢:用户无法连接网站,或连接但超时。检查服务器状态(CPU、内存、连接数),如果资源耗尽,可能是DDoS。大量流量:网络带宽接近或达到上限(如1Gbps链路利用率100%)。检查接口统计(ifconfigshow interface),查看入站流量速率。大量连接:服务器有大量TCP连接(如netstat -an | grep ESTABLISHED | wc -l),或大量半开连接(SYN_RCVD状态)。

开始捕获流量,确定捕获范围。如果目标是整个网络,捕获主干接口。如果目标是特定服务器,捕获该服务器的流量。使用环形缓冲保存最近的数据,避免磁盘满。分析流量时,关注容量、协议、源地址。

容量分析:Statistics → Summary查看捕获的总数据量和速率。使用IO Graph可视化流量随时间的变化。DDoS攻击显示为流量的突然增加(可能从正常100Mbps跳到1Gbps+)。

协议分析:Statistics → Protocol Hierarchy查看协议分布。如果UDP占90%以上,可能是UDP Flood。如果ICMP占主导,可能是Ping Flood。如果TCP SYN包占主导,可能是SYN Flood。如果HTTP请求占主导,可能是HTTP Flood。

源地址分析:Statistics → Endpoints查看源IP地址。如果源IP数量很大(数千到数万),是分布式DDoS(僵尸网络)。如果源IP数量很少(单一或几个),可能是放大攻击或单源攻击(可能是误配置或攻击者单机)。

根据分析识别攻击类型:容量型(UDP/ICMP Flood)或协议型(SYN/ACK Flood)或应用层(HTTP Flood)。缓解措施取决于攻击类型:容量型需要 upstream ISP 过滤或DDoS防护服务吸收攻击流量。协议型可以使用防火墙规则、连接限制、SYN Cookie等。应用层可以使用WAF(Web应用防火墙)过滤恶意HTTP请求。


五、核心概念总结

威胁类型关键特征Wireshark过滤器/工具缓解措施
端口扫描单源多目的端口、大量SYNtcp.flags.syn==1IDS/IPS配置、防火墙规则
ARP欺骗重复IP、伪造ARP响应arp.duplicate-address-detected静态ARP、DAI
SSL劫持未知CA证书、异常握手tls.handshake.type == 11HSTS、证书锁定
DNS投毒响应来自异常源、异常TTLdns.flags.rcodeDNSSEC、DNS over TLS
DNS隧道长域名、高频查询dns.qry.name.length > 50DNS监控、隧道检测
SYN Flood大量SYN、很少完成tcp.flags.syn==1 and tcp.flags.ack==0SYN Cookie、连接限制
DDoS流量激增、资源耗尽Statistics → SummaryDDoS防护服务、流量过滤

常见问题解答

Q1:如何区分正常流量和攻击流量?

:区分正常流量和攻击流量是安全分析的核心技能,需要综合考虑多个因素:流量模式、协议行为、源/目的特征、时间模式等。

流量模式是最重要的区分因素。正常流量通常有规律性:工作时间高峰、晚上低谷,与用户活动相关。攻击流量通常异常:突然激增、持续高速、无昼夜差异。在IO Graph中可视化流量,正常流量应该相对平滑,攻击流量显示为尖峰或台阶式增长。

协议行为也很关键。正常HTTP流量包括完整的请求-响应(GET请求,200响应),有用户代理(浏览器标识),有各种资源类型(HTML、CSS、图片、脚本)。攻击HTTP流量可能包括单一URL的重复请求、奇怪的用户代理(或缺少)、请求耗资的资源(大文件、数据库查询)。正常DNS流量包括缓存命中(快速响应)和少量缓存未命中(到权威服务器)。攻击DNS流量可能包括大量查询到单一域名、长随机子域名、NXDOMAIN响应。

源/目的特征提供线索。正常流量的源IP应该是内部网络或真实用户,目的IP是提供服务的服务器。攻击流量的源IP可能是伪造的(随机IP、无法路由)、僵尸网络(大量不同IP但有相似行为)、或放大攻击(多个DNS服务器反射)。目的IP可能是单一目标(DDoS)或随机目标(扫描、蠕虫)。

时间模式帮助识别自动化行为。正常流量与工作时间相关,有休息期。攻击流量可能是持续的(24x7)、定时(每天特定时间)、或与触发事件相关(如新漏洞披露)。

使用Wireshark的统计工具:Statistics → Conversations查看会话,攻击流量通常有大量小会话(1-2个包)。Statistics → Endpoints查看端点,攻击流量可能有大量源IP或单一目的IP接收大量流量。Statistics → Protocol Hierarchy查看协议分布,攻击流量可能以单一协议为主(如UDP占90%)。

最后,结合外部信息:安全公告(新漏洞可能导致扫描/攻击)、威胁情报(已知攻击者的IP、域名)、业务知识(预期流量模式、正常用户行为)。综合这些信息,可以更准确地区分正常和攻击流量。

Q2:Wireshark可以检测所有网络攻击吗?

:Wireshark是强大的网络分析工具,但不能检测所有类型的网络攻击。Wireshark擅长分析网络层面的攻击(扫描、DDoS、中间人),但某些攻击在应用层或使用加密,Wireshark的检测能力有限。

Wireshark可以检测的攻击包括:网络扫描和侦察(端口扫描、主机发现、操作系统指纹),中间人攻击(ARP欺骗、SSL劫持、DNS投毒),拒绝服务攻击(SYN Flood、UDP Flood、DNS放大),协议滥用(异常标志组合、非法字段、违反协议规范),某些应用层攻击(HTTP注入、目录遍历、认证绕过),前提是流量未加密。

Wireshark难以检测的攻击包括:加密流量中的攻击(如果HTTPS/TLS流量已加密,Wireshark无法查看内容,除非有密钥或攻击者使用了弱加密),应用层逻辑漏洞(如权限绕过、业务逻辑错误,这些需要理解应用语义,不仅仅是协议),内部威胁(合法用户的恶意行为,流量看似正常),高级持续性威胁(APT)的某些阶段(如果攻击者使用隐蔽通道、加密、正常协议的混合流量),社会工程攻击(钓鱼邮件、电话欺诈,这些不产生网络流量或流量看似正常)。

检测这些攻击需要其他工具:SIEM(安全信息和事件管理)系统关联多个来源的日志,IDS/IPS(入侵检测/防御系统)使用签名和异常检测,WAF(Web应用防火墙)分析HTTP流量,EDR(端点检测和响应)监控主机行为,威胁情报平台提供已知的攻击指标(IoC),应用安全测试(AST)工具发现应用漏洞。

最佳实践是结合多种工具和技术。Wireshark用于深度网络分析,当其他工具检测到异常时,使用Wireshark调查细节。例如,IDS警报可能有误报,使用Wireshark捕获相关流量,确认是否是真实攻击。SIEM可能发现可疑的登录模式,使用Wireshark分析网络连接,查找数据外泄或C2通信。

总的来说,Wireshark是安全分析师工具箱中的重要工具,但不是万能的。理解它的能力和限制,结合其他安全工具,才能构建有效的安全检测和响应能力。

Q3:如何取证分析网络攻击?

:网络取证是调查和分析网络攻击证据的过程,需要系统的方法和严谨的流程。Wireshark是网络取证的重要工具,但取证还需要其他工具和程序。

网络取证的第一步是识别和保全证据。确定攻击发生的时间范围,从相关设备(服务器、防火墙、路由器)收集日志和捕获文件。确保证据的完整性:计算捕获文件的哈希值(SHA-256),使用只读模式访问,避免修改原始数据。记录所有操作(谁、何时、做什么),保持证据链。

第二步是时间线重建。使用Wireshark打开捕获文件,查看Statistics → Summary了解捕获时间范围。使用过滤器按时间过滤(frame.time >= "2024-01-15 10:00:00" and frame.time < "2024-01-15 11:00:00"),分析特定时段的流量。构建事件时间线:攻击者何时开始侦察?何时开始漏洞利用?何时建立后门?何时数据外泄?时间线有助于理解攻击者的步骤和策略。

第三步是攻击者行为分析。识别攻击者的工具和技术:端口扫描模式、漏洞利用特征、C2通信协议、数据外泄方法。查看攻击者使用的协议(HTTP、DNS、ICMP、自定义协议),分析加密或编码方式。查看攻击者的源IP(可能是跳板机、代理、或真实IP),尝试定位攻击者的地理位置(使用IP地理位置服务)。查看攻击者的目标(哪些系统被访问、哪些数据被窃取),理解攻击者的动机和目标。

第四步是影响评估。确定受损系统:哪些主机被入侵、哪些账户被滥用、哪些数据被访问或窃取。确定攻击者的权限:是否获得管理员权限、是否安装了后门、是否建立了持久访问。确定数据外泄范围:哪些敏感数据被窃取、多少数据被外泄、数据外泄到哪里。评估业务影响:服务中断时间、数据泄露风险、声誉损失、合规影响(如GDPR通知要求)。

第五步是证据提取和报告。提取关键证据:攻击者与目标的通信、攻击者使用的命令和脚本、数据外泄的具体内容。生成报告:执行摘要(管理层)、技术细节(技术人员)、附录(证据文件、日志、捕获)。报告应该清晰、客观、基于证据。

Wireshark在取证中的具体应用:

  • 使用”Export Objects”提取HTTP对象(文件、图片、脚本)
  • 使用”Follow TCP Stream”查看完整的会话
  • 使用”Export HTTP”导出HTTP请求和响应
  • 使用”Export PDUs”导出特定协议的数据单元
  • 使用注释和标记功能标记重要数据包

最后,考虑法律和合规要求。确保取证过程符合法律标准(如证据可采纳性)。如果是执法案件,可能需要司法鉴定级别的取证流程。如果是企业内部调查,遵循公司政策和行业标准。考虑通知相关方(监管机构、受影响用户、合作伙伴),按照法律要求(如GDPR的72小时通知)。

Q4:检测到网络攻击后应该如何响应?

:检测到网络攻击后的响应应该遵循结构化的事件响应流程,目标是遏制攻击、消除影响、恢复服务、防止再次发生。响应应该快速但有序,避免过度反应或破坏证据。

立即响应(遏制):首先隔离受影响系统,断开网络连接(拔网线或禁用接口),阻止攻击者的横向移动。但要注意,断网可能破坏证据(如内存中的恶意代码),需要先获取内存镜像。保留快照或捕获文件,用于后续分析。如果可能,重定向攻击流量到蜜罐(honeypot),观察攻击者行为而不影响生产系统。

调查(分析):分析捕获的流量,理解攻击类型、范围、影响。确定攻击入口(钓鱼邮件、漏洞利用、弱密码),攻击者使用的路径(哪些系统被访问、如何提升权限),攻击者的目标(数据窃取、服务中断、勒索)。检查其他系统是否有类似攻击的迹象,确定攻击范围。提取IOC(入侵指标),如攻击者IP、域名、哈希值、YARA规则,用于在其他系统中检测。

消除(清除):从受影响系统中删除恶意软件、后门、恶意账户。修复被篡改的文件、配置、数据。关闭被利用的漏洞(安装补丁、更改配置、加强认证)。重置所有被泄露的凭据(密码、API密钥、证书)。验证系统清洁,确保没有残留的恶意代码或后门。

恢复(恢复):从干净的备份恢复系统和数据,确保备份未被污染(检查备份日期、验证备份完整性)。恢复服务,从最小到逐渐增加(先核心服务、后辅助服务)。监控系统活动,确保没有异常。通知用户服务恢复,提供指导(如更改密码、检查活动)。

事后活动(学习):进行事件回顾(post-incident review),总结经验教训。更新安全策略和程序(如加强密码策略、启用MFA、配置防火墙规则)。培训员工(如钓鱼 awareness 培训、安全操作实践)。改进检测能力(如部署SIEM、配置IDS规则、增加监控)。更新事件响应计划(基于这次事件的经验)。

沟通和通知:内部沟通:向管理层、IT团队、安全团队报告事件状态和进展。外部沟通:如需要,通知监管机构(GDPR、行业法规)、受影响用户(数据泄露)、合作伙伴(如果可能影响他们)。媒体沟通:如有公开事件,准备声明,避免承认责任但显示透明度。

法律和执法:如适用,向执法机构报告事件(如网络犯罪、数据泄露)。与法律团队协作,了解法律义务和风险。考虑民事诉讼(如攻击者可识别)或保险索赔(如有网络安全保险)。

响应时要注意:速度和谨慎的平衡:快速遏制攻击但不要破坏证据。沟通的透明度:内部需要充分信息,外部沟通需要谨慎(避免法律风险)。记录一切:文档化所有行动、决策、理由,用于事后分析和法律辩护。压力管理:事件响应压力大,确保团队有支持和休息。

Q5:如何预防网络扫描和侦察?

:预防网络扫描和侦察是防御的第一道防线,减少攻击者获得的信息,降低成功攻击的可能性。虽然无法完全防止扫描(互联网是公开的),但可以检测扫描、隐藏信息、误导攻击者。

网络分段:将网络划分为多个VLAN或子网,限制不同网段之间的通信。敏感系统(如数据库、管理接口)应该放在隔离的网络,不直接暴露给互联网。使用防火墙规则严格控制跨网段访问,只允许必要的流量。这样即使攻击者扫描外网,也无法看到内部系统的完整结构。

防火墙和IDS/IPS:配置防火墙规则,阻止不必要的入站连接。只开放必要的端口(如Web服务的80/443),其他端口应该默认拒绝。使用IDS/IPS检测和阻止扫描活动。Nmap等扫描工具有特定的特征(如特定的TCP标志组合、扫描速率),IDS可以识别并阻止。配置速率限制(Rate Limiting),防止高速扫描(如每秒超过100个连接尝试)。

禁用不必要的响应:关闭ICMP响应(除了ping用于诊断),或者限制ICMP响应速率。攻击者使用ICMP(ping sweep)发现主机,关闭ICMP可以增加扫描难度。但要注意,这可能影响网络诊断(ping、traceroute)。关闭或限制路由器的ARP响应,或者使用私有VLAN(PVLAN)隔离主机之间的通信。对于内部系统,不响应外部扫描(NAT、防火墙阻止)。

欺骗和误导:部署蜜罐(honeypot),模拟脆弱的系统吸引攻击者。蜜罐可以检测扫描、延迟攻击者、收集攻击者信息。使用欺骗技术,如伪造的服务器响应、假的DNS记录、假的MAC地址。攻击者花费时间分析虚假信息,减少对真实系统的威胁。但要注意,欺骗技术可能复杂,需要维护。

监控和报警:配置SIEM或日志系统,监控可疑活动。大量来自单一源的连接尝试(可能是扫描)、大量失败登录(可能是暴力破解)、异常协议使用(如DNS隧道)都应该触发报警。定期审查安全日志,查看潜在的扫描活动。使用威胁情报平台,获取已知攻击者的IP、域名、工具特征,配置防火墙规则阻止这些来源。

加固系统:关闭不必要的服务和端口,减少攻击面。每个开放端口都是潜在的攻击入口。保持系统和软件更新,安装安全补丁。许多扫描是为了发现未打补丁的系统。使用强认证机制(MFA、证书、复杂密码),即使攻击者发现服务,也无法轻易访问。最小权限原则,用户和进程只有必要的权限,减少被入侵后的影响。

定期安全评估:使用授权的扫描工具(如Nessus、OpenVAS)定期扫描自己的网络,发现漏洞和配置问题。渗透测试模拟真实攻击,发现防御的弱点。安全审查代码和配置,减少漏洞。这些主动措施可以帮助在攻击者之前发现问题并修复。

预防是一个持续的过程,不是一次性的。攻击者在不断进化,防御也需要不断更新。定期审查和更新安全策略、监控新的威胁情报、培训员工安全意识,都是预防网络攻击的重要组成部分。


总结

本文深入介绍了使用Wireshark检测和分析各种网络安全威胁的方法,主要内容包括:

  1. 网络扫描检测:识别端口扫描、主机扫描、漏洞扫描
  2. 中间人攻击检测:ARP欺骗、SSL/TLS劫持
  3. DNS安全威胁:DNS投毒、DNS隧道、DNS放大攻击
  4. DDoS攻击检测:SYN Flood、HTTP Flood、放大攻击

通过学习这些内容,你能够主动发现网络中的安全异常,及时响应安全事件,保护网络和系统的安全。

下篇预告

本系列文章到此完结。掌握Wireshark网络分析与安全实战技能后,你可以继续深入学习:高级流量分析技术、加密流量分析、云环境网络分析、自动化网络分析等专题。建议在实际工作中不断实践,将理论知识转化为实战能力。