这个房间介绍了 CyberChef,这是网络安全专业人士的瑞士军刀。
任务1:介绍
CyberChef 是一个简单、直观的基于 Web 的应用程序,旨在帮助您在 Web 浏览器中完成各种“网络”操作任务。将其视为一把用于数据的瑞士军刀 - 就像拥有一个由不同工具组成的工具箱,旨在完成特定任务。这些任务的范围从 XOR 或 Base64 等简单编码到 AES 加密或 RSA 解密等复杂操作。CyberChef 对配方进行操作,即按顺序执行的一系列操作。
学习目标
- 了解什么是 CyberChef
- 了解如何浏览界面
- 了解常见操作
- 了解如何创建配方和处理数据
会议室先决条件
建议熟悉以下房间,但在开始此房间之前不是强制性的。
任务2:访问工具
有多种方法可以访问和运行 Cyber Chef。让我们检查一下两种最方便的方法!
在线访问
您只需要一个 Web 浏览器和一个互联网连接。然后,您可以单击此 关联 直接在 Web 浏览器中打开 Cyber Chef。
脱机或本地复制
您可以通过从此链接下载最新版本文件,在计算机上离线或本地运行此程序。这将在 Windows 和 Linux 平台上运行。作为最佳实践,您应该下载最稳定的版本。
任务3:导航界面(其他一切之前)
CyberChef 由四个区域组成。每个组件都由不同的组件或功能组成。
这些是以下区域:
- 操作
- 食谱
- 输入
- 输出
让我们在下面讨论这些领域中的每一个。
操作区
这是一个实用且全面的存储库,其中包含 CyberChef 能够执行的所有不同操作。这些操作经过精心分类,为用户提供了对各种功能的便捷访问。用户可以利用搜索功能快速定位特定操作,从而提高他们的效率和生产力。
以下是您在整个网络安全旅程中可能会使用的一些操作。
操作 | 描述 | 例子 |
---|---|---|
从摩斯电码 | 将摩斯电码转换为(大写)字母数字字符。 | - .... .-. . .- - ... 与默认参数一起使用时变为THREATS |
URL 编码 | 将有问题的字符编码为百分比编码,这是 URI/URL 支持的格式。 | https://tryhackme.com/r/room/cyberchefbasics 与参数 “Encode all special chars” 一起使用时变为https%3A%2F%2Ftryhackme%2Ecom%2Fr%2Froom%2Fcyberchefbasics |
到 Base64 | 此操作将原始数据编码为 ASCII Base64 字符串。 | This is fun! 成为VGhpcyBpcyBmdW4h |
到 Hex | 将输入字符串转换为由指定分隔符分隔的十六进制字节。 | This Hex conversion is awesome! 成为54 68 69 73 20 48 65 78 20 63 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 61 77 65 73 6f 6d 65 21 |
到十进制 | 将输入数据转换为序数整数数组。 | This Decimal conversion is awesome! 成为84 104 105 115 32 68 101 99 105 109 97 108 32 99 111 110 118 101 114 115 105 111 110 32 105 115 32 97 119 101 115 111 109 101 33 |
旋转13 | 一个简单的 Caesar 替换密码,它将字母字符旋转指定的量(默认为 13)。 |
|
或者,您可以通过将鼠标悬停在特定操作上来直接检查操作的工作原理。这应该会给你一个样本或描述和一个维基百科的链接。
食谱区域
这被认为是该工具的核心。在此区域中,您可以无缝选择、安排和微调操作以满足您的需求。这是您进行控制的地方,精确而有目的地定义每个操作的参数和选项。配方区域是一个指定的空间,用于选择和安排特定操作,然后定义它们各自的参数和选项以进一步自定义它们的行为。在配方区域中,您可以拖动要使用的操作并指定参数和选项。
功能包括:
Save recipe
:此功能允许用户保存选定的操作。Load recipe
:允许用户加载以前保存的配方。Clear Recipe
:此功能将使用户能够在使用过程中清除所选配方。
这些图标可以在下面突出显示的图标中找到:
上图的底部是按钮。这将使用给定的配方处理数据。BAKE!
此外,您可以勾选复选框。此功能允许用户使用选定的食谱自动烹饪,而无需每次都手动单击。Auto Bake
BAKE!
输入区域
输入区域提供了一个用户友好的空间,您可以在其中通过粘贴、键入或拖动文本或文件来轻松输入文本或文件以执行操作。
此外,它还具有以下功能:
Add a new input tab
:这是为用户创建一个附加选项卡的位置,以便用户使用与上一个选项卡不同的值。
Open folder as input
:此功能允许用户上传整个文件夹作为输入值。
Open file as input
:此功能允许用户上传文件作为其输入值。
Clear input and output
:此功能允许用户清除插入的任何输入值和相应的输出值。Reset pane layout
:此功能将工具的界面设置为其默认窗口大小。
输出区域
输出区域是展示数据处理结果的视觉空间。它巧妙地展示了您对输入数据应用的任何操作或转换的结果,从而可以清晰直观地显示处理后的信息。
功能包括:
Save output to file
:此功能允许用户将结果保存到 .dat 文件中。Copy raw output to the clipboard
:此功能允许用户将原始输出直接复制到剪贴板,从而快速复制结果以供其他应用程序或文档使用。Replace input with output
:此功能允许用户根据操作结果快速覆盖输入数据。Maximise output pane
:此功能将工具的界面设置为其默认窗口大小。
任务4:Before Else
别急!
在开始实际操作之前,让我们快速了解一下使用 Cyber Chef 时的思考过程!此过程包括 4 个不同的步骤:
让我们进一步讨论每个步骤。
设定明确的目标是必不可少的。此步骤涉及定义具体且可实现的目标。它有助于回答“我想完成什么?目标对于为您的目标提供方向、目的和重点至关重要。一个例子是,“在安全调查期间,我发现了一个乱码字符串;我想知道它包含什么隐藏的信息,如果有的话。
接下来,将数据放入输入区域。在此步骤中,您将使用您的数据。这是您粘贴或上传找到的乱码字符串的位置。
第三步是选择要使用的 Operations。如果您还不熟悉自己正在处理的内容,这可能会很棘手。按照我们的示例,我们仍在确定使用什么来理解这个乱码字符串。在我们的研究过程中,我们发现相关信息表明这个乱码字符串可能使用了与加密相关的任何内容。因此,我们决定使用 Encryption/Encoding 类别下的任何操作,包括但不限于ROT13
、Base64
、Base85
或 ROT47
.请注意,我们可以在此类别下使用很多操作。
最后,检查输出以查看它是否是预期的结果。这就引出了一个问题,“我们实现了我们的目标吗?在我们的示例中,这意味着我们是否能够解码我们找到的乱码字符串?如果是,那就这么简单!如果没有,我们可能需要重复我们采取的步骤。
为了让我们的示例在视觉上更清晰,请参见下图:
任务5:练习,练习,再练习
我们希望您尽可能做好准备。因此,我们将探讨此任务中最常用的一些操作类别。识别使用哪个类别可以提高您更高效地使用该工具的能力。
提取器
下表中提到的特定操作属于 Extractors 类别。
特定 | 描述 |
---|---|
提取 IP 地址 | 提取所有 IPv4 和 IPv6 地址。 |
提取 URL | 从输入中提取统一资源定位符 (URL)。协议(HTTP、FTP 等)是必需的,否则会有太多的误报。 |
提取电子邮件地址 | 从输入中提取所有电子邮件地址。 |
将从任何给定的输入中提取任何有效的 IPv4/6 地址。我们建议您查看现有的会议室,快速回顾一下网络:网络概念Extract IP addresses
将提取此格式 anything@domain[.] 的任何字符串和字符com 的。域的示例包括 hotmail.com、google.com、tryhackme.com 和 yahoo.comExtract email addresses
Extract URLs
提取 Uniform Resource Locator,通常称为 URL。中,URL 是用于访问 Internet 上的资源的地址。如果您想更深入地研究 URL 和 Web 应用程序,可以查看 Web 应用程序基础知识 room。
日期及时间
下表中的具体操作属于 Date / Time 类别。
特定 | 描述 |
---|---|
从 UNIX 时间戳 | 将 UNIX 时间戳转换为日期时间字符串。 |
到 UNIX 时间戳 | 以 UTC 格式解析日期时间字符串并返回相应的 UNIX 时间戳。 |
UNIX 时间戳是一个 32 位值,表示自 1970 年 1 月 1 日 UTC(UNIX 纪元)以来的秒数。要将“Fri Sep 6 20:30:22 +04 2024”转换为 UNIX 时间戳,请使用操作,其中结果为 。如果您希望将其转换回更具可读性的格式,您可以使用 .To UNIX Timestamp
1725654622
From UNIX Timestamp
数据格式
下表中的具体操作属于 Data format 类别。
操作 | 描述 | 例子 |
---|---|---|
从 Base64 开始 | 此操作将数据从 ASCII Base64 字符串解码回其原始格式。 | V2VsY29tZSB0byB0cnloYWNrbWUh 成为Welcome to tryhackme! |
URL 解码 | 将 URI/URL 百分比编码的字符转换回其原始值。 | https%3A%2F%2Fgchq%2Egithub%2Eio%2FCyberChef%2F 成为https://gchq.github.io/CyberChef/ |
从 Base85 开始 | 用于编码任意字节数据的表示法。它通常比 Base64 更高效。此操作从 ASCII 字符串(使用您选择的字母表,包括预设)解码数据。 |
|
从 Base58 开始 | 是用于对任意字节数据进行编码的表示法。它与 Base64 的不同之处在于,它删除了有效误读的字符(即 l、I、0 和 O)以提高人类可读性。 |
|
到 Base62 | 是一种表示法,用于使用一组有限的符号对任意字节数据进行编码,人类可以方便地使用和处理计算机。较高的数字基数会导致字符串比十进制或十六进制系统短 |
|
诸如 base encoding 之类的操作。基本编码采用二进制数据(0 和 1 的字符串),并使用一组特定的 ASCII(美国信息交换标准代码)字符将其转换为基于文本的表示形式。Base(64, 85, 58, 62)
虽然我们有一个专门的 Hashing Basics 房间,但让我们快速概述一下并讨论最常用的操作 .Base64
我们的示例是对字母 “THM” 进行编码。我们这里有一个简短的 ASCII 表,我们可以用作参考。如果您想查看完整的 ASCII 表,请在此处参考此页面。
十进制 | 二元的 | 象征 | - | 十进制 | 二元的 | 象征 |
---|---|---|---|---|---|---|
65 | 01000001 | 一个 | 78 | 01001110 | N | |
66 | 01000010 | B | 79 | 01001111 | O | |
67 | 01000011 | C | 80 | 01010000 | P | |
68 | 01000100 | D | 81 | 01010001 | Q | |
69 | 01000101 | E | 82 | 01010010 | R | |
70 | 01000110 | F | 83 | 01010011 | S | |
71 | 01000111 | G | 84 | 01010100 | T | |
72 | 01001000 | H | 85 | 01010101 | U | |
73 | 01001001 | 我 | 86 | 01010110 | V | |
74 | 01001010 | J | 87 | 01010111 | W | |
75 | 01001011 | K | 88 | 01011000 | X | |
76 | 01001100 | L | 89 | 01011001 | Y | |
77 | 01001101 | M | 90 | 01011010 | Z |
第 1 步:转换为二进制并合并(手动)
根据我们上面的表格,T = 01010100,H=01001000,M = 01001101。接下来,连接这些二进制文件并确保它们有 24 个字符。您应该具有010101000100100001001101
第 2 步:除法并转换为十进制(手动)
每个字符分成 6 个字符。您应该有 .这些是 6 位字符;我们现在应该有四个实例。我们需要将每个实例转换为 Decimal。那么,让我们转换吧!010101000100100001001101
010101
000100
100001
001101
二元的 | 十进制 (Base10) |
---|---|
010101 | 21 |
000100 | 4 |
100001 | 33 |
001101 | 13 |
第 3 步:转换为 Base64(手动)
现在我们有了上一步中的 Numbers,即 、 、 和 ,让我们从下表中查找等效字符。此表表示 base64 索引表。21
4
33
13
指数 | 字符 | - | 指数 | 字符 | - | 指数 | 字符 |
---|---|---|---|---|---|---|---|
0 | 一个 | 26 | 一个 | 52 | 0 | ||
1 | B | 27 | b | 53 | 1 | ||
2 | C | 28 | c | 54 | 2 | ||
3 | D | 29 | d | 55 | 3 | ||
4 | E | 30 | e | 56 | 4 | ||
5 | F | 31 | f | 57 | 5 | ||
6 | G | 32 | g | 58 | 6 | ||
7 | H | 33 | h | 59 | 7 | ||
8 | 我 | 34 | 我 | 60 | 8 | ||
9 | J | 35 | j | 61 | 9 | ||
10 | K | 36 | k | 62 | + | ||
11 | L | 37 | l | 63 | / | ||
12 | M | 38 | m | ||||
13 | N | 39 | n | ||||
14 | O | 40 | o | ||||
15 | P | 41 | p | ||||
16 | Q | 42 | q | ||||
17 | R | 43 | r | ||||
18 | S | 44 | s | ||||
19 | T | 45 | t | ||||
20 | U | 46 | u | ||||
21 | V | 47 | v | ||||
22 | W | 48 | w | ||||
23 | X | 49 | x | ||||
24 | Y | 50 | y | ||||
25 | Z | 51 | z |
从表中检查后,我们现在应该已经找到了它对应的字符。
指数 | 字符 |
---|---|
21 | V |
4 | E |
33 | h |
13 | N |
将这些字符组合在一起,您应该拥有相当于 base64 格式的 “THM”。答案是 。VEhN
哇!那不是很神奇吗?您刚刚手动将一组字符转换为 base64。
现在,让我们讨论一下 .这是通过将百分比编码的字符转换回其原始值来实现的。有关这些值的参考,您可以在此处查看页面。请注意,HTML5 中的默认字符集是 UTF-8。查看下表,快速了解我们通常可以在 URL 中看到的内容。URL Decode
字符 | 从 UTF-8 开始 |
---|---|
: | %3A |
/ | %2F |
. | %2E |
= | %3D |
# | %23 |
实践练习
单击此任务顶部的 Download Task Files(下载任务文件)按钮,下载我们将用于回答以下问题的文件。
下载后,您可以打开文件,将内容复制并粘贴到输入字段中,或使用该功能上传文件。Open file as input
注意:对于前两个问题,请使用 Extractors (提取器) 类别下的特定操作。最好先尝试回答问题,而不使用提示。
https%3A%2F%2Ftryhackme%2Ecom%2Fr%2Fcareers
任务6:您的第一位正式厨师
这项任务允许我们应用从前面的任务中学到的知识。我们将利用 Cyber Chef 的区域及其功能来回答所提出的问题。
现在,这是你真正闪耀的时候!您将迎来您的第一次厨师!
这里不一样,你复制的是中文格式的。
任务7:结论
在这个房间里,我们讨论了 CyberChef 如何成为处理各种数据转换和解码任务的强大工具。无论您需要使用 Base64、二进制还是 URL,这个数字向导的厨房都提供了一个可视化界面,使数据操作变得直观和直接。借助多样化的配方库,您可以自信地处理从提取电子邮件地址、IP 地址和域等任务。我们能够浏览它的界面,并对不同的区域、功能和参数进行高层次的讨论。但是,请注意,对于特别大规模的处理,从其他工具的支持中受益至关重要。