所谓安全分为红蓝两方,如果在蓝方,每天更多的工作就是分析告警,面对海量的告警信息,首要任务是借助通信双方数据包,快速定位问题、判断其威胁等级,继而降噪、整改等——依赖于请求与响应中的具体字段

其次,关键在于,要理解攻击者意图和用户正常活动——理解协议背后的“人”的行为。

网络层与传输层

网络层与传输层字段构成了网络通信的基础,它们定义了“谁”在和“谁”通信,“通过什么方式”通信。这些是任何分析开始时都需要关注的基础线索

源/目标 IP 地址 :

  • 我们需结合内部的资产信息表(比如:这个 IP 是哪个服务器?跑着什么服务?责任人是谁?)来快速识别通信的一方是否合法、是否重要。同时,对未知或异常 IP 需要保持高度警惕,特别是来自外部威胁情报库中的恶意 IP,或从未在内部网络出现的奇怪 IP。这些可能是攻击的发起点、C2(命令与控制)服务器,甚至是内部感染主机的异常外联。对扫描行为的识别,也始于对大量不同目标 IP 或源 IP 的观察。

源/目标端口 :

  • 重要性: 端口是主机上特定服务的“门牌号”,指示了通信所使用的具体应用程序。
  • 目标端口是识别服务探测或扫描(攻击者尝试连接一系列常用服务端口来寻找弱点,如扫描 22, 80, 443, 3389 等)和针对特定服务攻击的关键。尤其需要注意的是非标准端口上的通信(例如,在平时不跑 HTTP/S 的 8080 端口上看到大量非 Web 流量,或者在标准端口上看到非预期协议的流量),这可能是攻击者试图利用隧道或隐蔽信道进行通信的迹象。源端口在某些情况下(如客户端通常使用随机高位端口)也能提供上下文信息,偏离这种模式也可能值得关注。

协议类型 :

  • 重要性: 它指明了通信使用的是哪种传输层协议(如 TCP, UDP, ICMP 等),端口通常应该跑什么服务,用什么协议?是不是有服务在非标准端口上运行,或者有攻击者试图在特定端口上使用非预期的协议进行通信,这些是需要进行判断的。
  • 分析时要看协议类型是否与端口和服务匹配
  • Web 服务 (HTTP/S):通常运行在 TCP 的 80/443 端口上,使用 TCP 协议。
  • DNS 服务:通常运行在 UDP 的 53 端口上,使用 UDP 协议(但大于 512 字节的查询或区域传输可能使用 TCP)。
  • 远程桌面 (RDP):通常运行在 TCP 的 3389 端口上,使用 TCP 协议。
  • 测试网络连通性,当运行 Ping 命令时,就是在利用ICMP检查到目标主机的可达性(找活跃主机),使用ICMP协议(网络层)
  • 希望通信内容不被窃听或篡改,SSL/TLS的使用代表了**“希望通信过程是加密和可信的”**的行为。

数据包/流量长度 :

  • 重要性: 表示单个数据包或整个通信流的数据量大小。这不是一个孤立的指标,但结合其他字段能提供重要线索。
  • 在一个通常只有少量交互的服务(如 DNS 查询响应)上出现异常大的数据量,可能是数据窃取 (Data Exfiltration) 的迹象。相反,异常小且模式规律的数据包长度,则可能与隐蔽信道(攻击者利用数据包长度变化来编码传递信息)或某些特定攻击工具的通信方式相关。建立正常流量大小的基线对于发现这些异常至关重要。

应用层:

应用层字段的大量信息,是用户或应用程序实际交互的内容.

HTTP (Web 流量): Web 流量是互联网上最常见的应用层流量,也是攻击者频繁利用的载体。

  • 请求方法 (Method): GET, POST, PUT, DELETE 等,正常浏览网页通常只使用 GET 和 POST。
  • 请求 URI (URI): 客户端请求访问的具体路径和资源,如果存在异常的 URI,例如包含特殊字符、常见的SQL 注入或命令注入关键词、尝试访问敏感文件路径(如 /etc/passwd/../ 目录穿越),都是典型的 Web 攻击特征
  • Host 头部 (Host Header): 客户端希望访问的域名。主要用于虚拟主机识别。在攻击中可能被伪造,用于绕过一些基于 IP 的防御。
  • User-Agent 头部 (User-Agent Header): 客户端软件(浏览器、操作系统、应用程序等)信息。商业扫描器如 onlyscans,会有明显的标识的 User-Agent 字符串。
1
User-Agent: Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about);
  • 这为识别自动化攻击提供了重要线索。需要维护一个正常的 User-Agent 列表进行比对;同时,攻击者可以更改或伪造用户代理,伪装合法请求

1

维护的User-Agent 列表,例如:

User-Agent 字符串 所属类别 类别描述/功能简述 典型应用场景 分析判断结果 判断依据/备注 验证方法/手段 信息来源
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 浏览器/用户活动 Google Chrome 浏览器 用户在 Windows 电脑上正常浏览网页。 正常/批准 标准浏览器 UA,常见于用户终端。 检查源 IP 是否为用户工作站,目标 IP 是否为已知合法网站。 日常日志
python-requests/2.32.3 Development/Automation Python requests 库 开发者编写脚本访问 API 或执行自动化任务;自动化系统之间的通信。 正常/批准 (特定场景) / 关注/可疑 (非开发环境) 常用于编程自动化。在服务器或非开发人员终端出现可能可疑。 检查源 IP 是否属于开发人员或已知自动化系统;检查访问的目标、频率和模式。 日常日志
Microsoft-Delivery-Optimization/1
  • Referer 头部 (Referer Header): 指示请求来源的页面 URL。分析 Referer 有助于理解用户(或攻击者)是如何“跳转”到当前页面的,用于溯源。
  • Cookie 头部 (Cookie Header): 包含会话和用户信息的小型数据块。
  • X-Forwarded-For 头部 (X-Forwarded-For Header): 记录请求经过的代理服务器 IP 链。 在正常情况下用于获取客户端的真实 IP。然而,在攻击中极易被伪造! 分析时需谨慎,不能仅依赖此字段判断来源 IP,需要结合其他网络层和应用层信息进行综合判断。
  • HTTP 状态码 (Status Code): 服务器对请求的处理结果(如 200 OK, 404 Not Found, 500 Internal Server Error)。大量出现特定的异常状态码是重要的异常信号。例如,大量 404(未找到)可能指示攻击者正在进行目录或文件扫描;大量 500(内部服务器错误)可能触发了服务器端的应用程序错误

DNS (域名解析): DNS 是将人类可读的域名转换为机器可读的 IP 地址的服务。

  • 查询域名 (Query Name): 客户端请求解析的域名。 高度关注查询的域名是否在已知的恶意域名列表中、是否是通过 DGA (Domain Generation Algorithm) 生成的随机字符串域名、或者是否存在通过 DNS 进行数据外带 (DNS Tunneling) 时特有的超长、编码过的子域名
  • 响应 IP 地址 (Answer IP Address): DNS 服务器返回的解析结果 IP。 返回的 IP 是否是已知的恶意 IP?是否与正常的域名解析结果不符?或者,响应记录类型是否异常(如攻击者可能利用 TXT 记录进行数据传输)?
  • 响应状态码 (Reply Code): DNS 查询的结果状态。 大量出现 NXDomain(域名不存在)的响应可能指示攻击者正在进行域名扫描,或者DGA 算法生成的大多数域名都是无效的。

SSL/TLS (加密流量): 随着加密流量的普及,理解如何分析加密流量的元数据变得尤为重要。

  • 服务器名称指示 (Server Name Indication - SNI): 客户端在建立 TLS 连接时,明文指明的要访问的域名。 这是在不解密流量的情况下,我们了解用户正在尝试访问哪个网站最重要字段!通过分析 SNI,可以识别用户是否正在访问已知的恶意网站、钓鱼网站或 C2 服务器,即使整个通信过程是加密的。
  • 证书信息 (Certificate Information): 服务器在 TLS 握手过程中发送的数字证书详情,包含颁发者、有效期、主题(通常包含域名)等。 异常证书(如自签名证书、过期证书、证书主题与访问域名不符)可能指示存在中间人攻击 (MITM) 尝试,或者访问的服务本身就存在问题或非常规。

登录类协议 (SSH, FTP, SMB, RDP 等): 这些协议常用于远程管理和文件传输,是攻击者进行横向移动和权限维持的目标。

  • 用户名 (Username): 尝试登录使用的用户名。 监测是否存在针对常见用户名(如 administrator, root, test, guest 等)的暴力破解尝试。观察是否存在异常的、不属于内部用户的用户名列表。结合登录结果,可以清晰地看到攻击者尝试使用哪些身份进行渗透。
  • 认证结果 (Authentication Result): 登录尝试的成功或失败状态。 大量登录失败记录暴力破解或凭据填充攻击的明显迹象。需要关注这些失败尝试的源 IP、用户名和时间分布。而少量但来自异常 IP 或异常账户的登录成功记录,则可能指示凭据泄露或攻击者已成功绕过防御

邮件协议 (SMTP, POP3, IMAP): 邮件是传播恶意软件、进行钓鱼和社会工程攻击的常用媒介。

  • 发件人/收件人 (From/To/Cc): 邮件的发送和接收地址。 高度关注伪造的发件人地址(尤其是内部用户的地址),这是钓鱼邮件最常见的特征之一。与已知恶意地址列表进行比对,识别与恶意基础设施的通信。
  • 主题 (Subject) 和 附件信息 (Attachment Info): 邮件的标题附件的名称、类型、哈希值等。 钓鱼邮件常使用具有诱惑性或紧急感的主题。恶意附件(如可执行文件 .exe、脚本文件 .vbs、伪装成文档的可执行文件等)是传播恶意软件的主要途径。对附件哈希值进行威胁情报查询是快速识别已知恶意软件的有效方法。

数据库协议 (MySQL, SQL Server, Oracle 等): 数据库是存储敏感数据的地方,也是攻击者一旦进入内网后常常攻击的目标。

  • 数据库用户 (Database User) 和 数据库名 (Database Name): 连接数据库使用的用户身份和实例名称。 监测是否存在使用异常用户(非应用常用用户、默认用户)或尝试访问敏感或非业务数据库的尝试。这可能指示未授权访问尝试或攻击者在进行内部侦察
  • SQL 语句片段 (SQL Statement Snippets): 执行的 SQL 命令的部分内容注意: 出于性能和隐私考虑,通常只能记录 SQL 语句的片段,且可能包含敏感信息,分析时需谨慎。尽管如此,分析这些片段仍有助于发现SQL 注入攻击的成功执行(例如看到包含 UNION SELECTDROP TABLE 的语句)或内部人员的异常数据操作行为

总结:关联字段,还原真相

威胁分析并非仅仅孤立地查看某个字段,而是需要将这些来自不同层级、不同协议的字段关联起来,构建完整的通信场景。


© Rabbit 使用 Stellar 创建

✨ 营业:

共发表 56 篇Blog 🔸 总计 123.6k