Skipfish扩展开发:自定义签名与安全检查模块编写终极指南
Skipfish扩展开发自定义签名与安全检查模块编写终极指南【免费下载链接】skipfishWeb application security scanner created by lcamtuf for google - Unofficial Mirror项目地址: https://gitcode.com/gh_mirrors/sk/skipfishSkipfish是一款由Google开发的快速、全面的Web应用安全扫描器专为安全专业人员设计。作为一款主动的Web应用安全侦察工具Skipfish通过执行递归爬取和基于字典的探测来为目标站点准备交互式站点地图然后使用一系列主动安全检查对结果地图进行注释。本文将深入探讨如何扩展Skipfish的核心功能特别是自定义签名和安全检查模块的开发。 为什么需要自定义Skipfish签名Skipfish的签名系统是其最强大的功能之一采用类似Snort的语法来检测Web应用漏洞、信息泄露和识别特定的Web应用。默认情况下Skipfish已经包含了许多预定义的签名但现实世界的安全测试往往需要针对特定应用或技术的自定义检测规则。自定义签名的核心价值针对性检测- 针对特定的Web框架、CMS或自定义应用漏洞快速识别- 检测新发现的漏洞或特定攻击向量企业环境适配- 针对内部应用的特定错误消息或信息泄露技术栈监控- 识别特定的技术版本或配置问题️ Skipfish签名系统架构解析在开始编写自定义签名之前让我们先了解Skipfish的签名系统架构。签名文件位于signatures/目录下主要包括signatures.conf- 主配置文件包含所有签名文件的引用apps.sigs- 检测有趣的应用程序/页面context.sigs- 与注入测试相关的上下文签名files.sigs- 基于内容识别有趣文件messages.sigs- 检测有趣的服务器错误消息mime.sigs- 检测有趣的MIME类型签名数据结构查看src/signatures.h文件我们可以看到签名的核心数据结构struct signature { u32 id; /* 唯一ID */ u8* memo; /* 匹配时显示的消息 */ u8 severity; /* 严重性等级 */ u32 prob; /* 问题ID */ u8* mime; /* 匹配的MIME类型 */ u8* header; /* 匹配的HTTP头 */ u32 rcode; /* 匹配的HTTP响应代码 */ u32 content_cnt; /* 内容结构数量 */ u32 check; /* 检查ID */ u8 report; /* 报告频率 */ u8 proto; /* 协议类型 */ struct signature *depend; /* 依赖的签名 */ struct content_struct* content[MAX_CONTENT]; /* 内容匹配结构 */ }; 自定义签名编写实战基础签名语法Skipfish签名使用分号分隔的键值对格式。让我们看一个简单的例子# 检测phpinfo()页面 id:11001; sev:3; content:titlephpinfo()/titlemeta name; depth:2048; \ memo:phpinfo() page;签名关键字详解id- 签名的唯一标识符必需content- 要匹配的内容字符串支持正则表达式memo- 匹配时显示的消息必需sev- 严重性等级1高2中3低4信息depth- 搜索内容的深度限制offset- 搜索起始偏移量nocase- 不区分大小写匹配type- 匹配类型regex或staticmime- 匹配特定的MIME类型header- 在HTTP头中匹配depend- 依赖其他签名report- 报告频率once或always实战示例1检测特定Web框架假设我们要检测Django框架的特定版本可以创建如下签名# 检测Django框架 id:30001; sev:4; content:Django; depth:512; \ content:version; depth:100; \ memo:Django framework detected; # 检测特定版本的Django依赖第一个签名 id:30002; sev:2; depend:30001; \ content:Django 1.11; depth:512; \ memo:Outdated Django 1.11 detected - contains security vulnerabilities;实战示例2检测敏感信息泄露# 检测API密钥泄露 id:30003; sev:2; content:api_key; depth:1024; \ content:[A-Za-z0-9]{32,64}; depth:100; type:regex; \ memo:Potential API key exposure; # 检测数据库连接字符串 id:30004; sev:3; content:mysql://; depth:2048; \ content:; depth:100; \ memo:Database connection string exposed;实战示例3检测特定漏洞# 检测Spring Framework RCE漏洞 id:30005; sev:1; content:class.module.classLoader; depth:1024; \ content:Spring Framework; depth:512; \ memo:Potential Spring Framework RCE vulnerability (CVE-2022-22965); # 检测Log4j漏洞相关特征 id:30006; sev:1; content:${jndi:; depth:2048; nocase; \ memo:Potential Log4Shell vulnerability (CVE-2021-44228); 创建自定义签名文件步骤1创建新的签名文件在signatures/目录下创建新的签名文件例如custom.sigs# 自定义Web应用安全签名 # 作者你的名字 # 创建日期2024年 # 检测暴露的管理面板 id:40001; sev:3; content:titleAdmin Panel/title; depth:1024; \ memo:Administrative panel exposed; # 检测调试信息 id:40002; sev:2; content:DEBUG True; depth:512; \ memo:Debug mode enabled in production; # 检测硬编码凭证 id:40003; sev:1; content:password\s*\s*[\]; depth:2048; type:regex; \ content:[A-Za-z0-9#$%^]{8,}; depth:100; type:regex; \ memo:Hardcoded password detected;步骤2更新主配置文件编辑signatures/signatures.conf文件添加对新签名文件的引用# 主签名文件 # MIME签名检测有趣的MIME类型 include signatures/mime.sigs # 文件签名基于内容识别有趣文件 include signatures/files.sigs # 消息签名检测有趣的服务器错误消息 include signatures/messages.sigs # 应用签名检测有风险的页面和应用程序 include signatures/apps.sigs # 上下文签名与注入测试相关 include signatures/context.sigs # 自定义签名 - 添加这一行 include signatures/custom.sigs步骤3测试签名编译并运行Skipfish来测试你的自定义签名# 编译Skipfish make # 运行扫描测试自定义签名 ./skipfish -o output -S dictionaries/minimal.wl -W- http://test.example.com 高级签名技巧使用正则表达式Skipfish支持PCRE正则表达式可以创建更复杂的匹配模式# 使用正则表达式检测版本号 id:40004; sev:3; content:Version\s*:\s*; depth:512; \ content:\d\.\d(\.\d)*; depth:100; type:regex; \ memo:Version information exposed; # 检测邮箱地址泄露 id:40005; sev:4; content:[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}; \ depth:4096; type:regex; nocase; \ memo:Email address exposed;条件匹配与签名链使用depend关键字创建依赖关系实现条件匹配# 首先检测WordPress id:40006; sev:4; content:wp-content; depth:1024; \ memo:WordPress detected; # 然后检测过时的WordPress版本 id:40007; sev:2; depend:40006; \ content:WordPress 4.[0-7]; depth:512; type:regex; \ memo:Outdated WordPress version detected;性能优化技巧使用depth限制- 限制搜索深度提高性能顺序匹配- 将最可能匹配的内容放在前面避免过度匹配- 使用精确的字符串而非宽泛的正则分组相关签名- 将相关的签名放在一起便于管理 安全检查模块开发理解安全检查架构Skipfish的安全检查系统位于src/checks.c和src/checks.h中。每个安全检查都是一个独立的函数负责检测特定的安全漏洞。创建自定义安全检查要创建自定义安全检查需要定义检查ID- 在src/checks.h中添加新的检查ID实现检查函数- 在src/checks.c中实现检查逻辑注册检查- 将检查函数添加到检查列表中创建关联签名- 为检查创建上下文签名示例自定义SQL注入检查首先在src/checks.h中添加检查定义/* 自定义安全检查ID */ #define CHECK_CUSTOM_SQL_INJECTION 100然后在src/checks.c中实现检查函数/* 自定义SQL注入检查 */ static void check_custom_sql_injection(struct http_request *req, struct http_response *res) { // 检查逻辑实现 // 1. 构造测试payload // 2. 发送测试请求 // 3. 分析响应 // 4. 报告漏洞 }最后在检查初始化函数中注册/* 初始化安全检查 */ void init_checks(void) { // ... 现有代码 ... // 注册自定义检查 register_check(CHECK_CUSTOM_SQL_INJECTION, check_custom_sql_injection, Custom SQL injection check); } 最佳实践与调试技巧签名编写最佳实践明确目标- 每个签名应该有一个明确的检测目标避免误报- 使用多个content条件减少误报合理分级- 根据风险程度设置适当的严重性等级详细说明- 在memo中提供清晰的描述版本控制- 为签名添加版本和作者信息调试自定义签名启用调试模式- 使用make clean debug编译调试版本查看日志- 运行扫描时重定向stderr到日志文件测试单个签名- 创建最小测试环境验证签名性能监控- 监控扫描性能确保签名不影响速度性能优化建议限制搜索范围- 合理使用depth和offset避免复杂正则- 复杂的正则表达式会影响性能使用静态字符串- 静态字符串匹配比正则表达式快批量处理- 将相关的检查组合在一起 实际应用场景场景1企业内部应用安全扫描为特定的企业应用创建自定义签名# 检测内部API端点 id:50001; sev:3; content:/api/v1/internal/; depth:512; \ memo:Internal API endpoint exposed; # 检测开发环境配置 id:50002; sev:2; content:ENVIRONMENTdevelopment; depth:1024; \ memo:Development environment configuration detected in production;场景2合规性检查创建符合特定合规性要求的签名# PCI DSS合规性检查 id:50003; sev:1; content:PAN; depth:2048; \ content:\d{16}; depth:100; type:regex; \ memo:Potential PAN (Primary Account Number) exposure - PCI DSS violation; # GDPR合规性检查 id:50004; sev:2; content:date_of_birth; depth:1024; nocase; \ content:\d{4}-\d{2}-\d{2}; depth:100; type:regex; \ memo:Personal data (date of birth) exposure - GDPR concern;场景3技术栈监控监控特定技术的版本和配置# 检测过时的JavaScript库 id:50005; sev:2; content:jquery-1.; depth:512; \ memo:Outdated jQuery version detected; # 检测不安全的SSL/TLS配置 id:50006; sev:1; header:Server; \ content:Apache/2.2; depth:100; \ memo:Outdated Apache server version with known vulnerabilities; 签名管理与维护版本控制策略签名版本化- 为签名集添加版本号变更日志- 维护签名的变更历史向后兼容- 避免破坏性更改定期更新- 根据新的威胁情报更新签名质量保证测试套件- 创建测试用例验证签名误报分析- 定期分析误报并优化漏报分析- 检查已知漏洞是否被检测到性能基准- 监控签名对扫描性能的影响协作与共享文档化- 为每个签名提供详细的文档示例数据- 提供测试数据示例社区贡献- 考虑将有用的签名贡献给社区反馈机制- 建立签名效果的反馈循环 总结Skipfish的自定义签名和安全检查模块开发为安全专业人员提供了强大的扩展能力。通过掌握签名语法、理解系统架构并遵循最佳实践你可以创建针对性的安全检测规则显著提升Skipfish在特定环境中的检测效果。关键要点回顾签名语法简单- 类似Snort的语法易于学习和使用灵活的组合- 支持多个条件、依赖关系和正则表达式性能可控- 通过depth、offset等参数优化性能易于集成- 简单的文件包含机制扩展性强- 支持自定义安全检查模块开发下一步行动建议从简单开始- 先创建几个简单的签名熟悉流程测试验证- 在测试环境中充分验证签名效果逐步优化- 根据实际使用情况持续优化签名分享经验- 将成功的经验分享给安全社区通过自定义Skipfish签名你可以将这款强大的安全扫描工具转变为完全适应你特定需求的专属安全审计平台。无论是检测特定的企业应用漏洞还是监控合规性要求自定义签名都能帮助你实现更精准、更高效的安全检测。记住强大的工具需要智慧的运用。始终在授权范围内进行安全测试并确保你的自定义签名既有效又不会产生过多的误报。祝你在Skipfish扩展开发的道路上取得成功️【免费下载链接】skipfishWeb application security scanner created by lcamtuf for google - Unofficial Mirror项目地址: https://gitcode.com/gh_mirrors/sk/skipfish创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

IINA播放器性能监控终极指南:告别卡顿,实时掌握资源占用

IINA播放器性能监控终极指南:告别卡顿,实时掌握资源占用

IINA播放器性能监控终极指南:告别卡顿,实时掌握资源占用 【免费下载链接】iina The modern video player for macOS. 项目地址: https://gitcode.com/gh_mirrors/iin/iina IINA作为macOS上最受欢迎的现代视频播放器,不仅支持丰富的视频…

2026/7/13 19:35:56 阅读更多 →
3步搞定黑苹果配置:OpCore-Simplify开源工具的实用指南

3步搞定黑苹果配置:OpCore-Simplify开源工具的实用指南

3步搞定黑苹果配置:OpCore-Simplify开源工具的实用指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经对黑苹果配置感到头疼&a…

2026/7/13 19:35:56 阅读更多 →
如何在嵌入式设备上快速部署AI模型:RKNN-Toolkit2完整入门指南

如何在嵌入式设备上快速部署AI模型:RKNN-Toolkit2完整入门指南

如何在嵌入式设备上快速部署AI模型:RKNN-Toolkit2完整入门指南 【免费下载链接】rknn-toolkit2 项目地址: https://gitcode.com/gh_mirrors/rkn/rknn-toolkit2 想要将训练好的AI模型轻松部署到嵌入式设备上?RKNN-Toolkit2正是你需要的强大工具&a…

2026/7/13 19:33:55 阅读更多 →

最新新闻

NE555定时器芯片详细介绍

NE555定时器芯片详细介绍

本文章内容是依据b站洋桃电子老师的视频做的学习笔记,仅供交流和学习,如有侵权,请联系本人,会立即删除 视频指路:https://www.bilibili.com/video/BV1oT42167y3?spm_id_from333.788.videopod.sections&vd_source…

2026/7/13 22:12:42 阅读更多 →
如何选择最适合你的AI模型:Qwen2.5-7B-Instruct_rai_1.7.1_npu_4K与其他主流LLM模型全面对比指南

如何选择最适合你的AI模型:Qwen2.5-7B-Instruct_rai_1.7.1_npu_4K与其他主流LLM模型全面对比指南

如何选择最适合你的AI模型:Qwen2.5-7B-Instruct_rai_1.7.1_npu_4K与其他主流LLM模型全面对比指南 【免费下载链接】Qwen2.5-7B-Instruct_rai_1.7.1_npu_4K 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen2.5-7B-Instruct_rai_1.7.1_npu_4K 在当今快…

2026/7/13 22:10:41 阅读更多 →
Davinci Developer的Port Interfaces

Davinci Developer的Port Interfaces

分为Application Port Interfaces和Service Port Interfaces。Application Port Interfaces是应用层里面使用的,跟BSW无关。Service Port Interfaces是应用层跟BSW之间/BSW模块之间的链接 Application Port Interfaces New S/R Port Interface 这是最常用的,复选框不要勾选,…

2026/7/13 22:08:41 阅读更多 →
告别加班改PPT,ChatGPT自动排版+配色+演讲备注生成,职场人必备的5个隐藏指令,仅限本周内公开

告别加班改PPT,ChatGPT自动排版+配色+演讲备注生成,职场人必备的5个隐藏指令,仅限本周内公开

更多请点击: https://kaifayun.com 第一章:ChatGPT做PPT的底层逻辑与能力边界 ChatGPT本身并不具备直接生成PPT文件(.pptx)的能力,其核心输出仅为结构化文本。所谓“用ChatGPT做PPT”,本质是利用其语言理解…

2026/7/13 22:06:40 阅读更多 →
3小时重构你的提示词工作流:ChatGPT结构化提示词5阶迁移路径(含角色-任务-约束-格式-校验五段式SOP)

3小时重构你的提示词工作流:ChatGPT结构化提示词5阶迁移路径(含角色-任务-约束-格式-校验五段式SOP)

更多请点击: https://kaifayun.com 第一章:结构化提示词的底层逻辑与认知跃迁 结构化提示词并非简单的文本拼接,而是人类认知模式与大语言模型推理机制对齐的接口设计。其底层逻辑根植于三个核心要素:角色锚定、任务解耦与约束显…

2026/7/13 22:06:40 阅读更多 →
Codex 提示词最佳实践

Codex 提示词最佳实践

Codex 是面向软件开发的 AI 编程助手,可以帮助你理解项目、修改代码、修复 Bug、编写测试、生成文档和做代码审查。想让 Codex 更稳定地完成任务,关键不是写很长的提示词,而是把“目标、上下文、约束、输出和验证方式”说清楚。 提示词基本结…

2026/7/13 22:06:40 阅读更多 →

日新闻

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:01:19 阅读更多 →
浦东旧模块回收哪家强?专业评测带你一探究竟

浦东旧模块回收哪家强?专业评测带你一探究竟

于科技迅猛飞速迭代的当下此刻, 旧模块的回收处置, 不但关联着资源的再度利用, 而且更牵扯到数据安全以及环保合规事宜。你是不是也正为那堆积得如同山峦般的旧模块而发愁? 是不是不清楚该怎样安全且高效地去处理它们? 别忧心烦恼, 就在今日, 我会以具备权威影响力的自媒体博…

2026/7/13 0:01:19 阅读更多 →
卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

2026/7/13 0:05:20 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/13 4:38:36 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/13 4:38:38 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/13 4:38:40 阅读更多 →

月新闻