秒解混淆脚本!反混淆神器CyberChef使用指南

本文介绍了CyberChef这款强大的编码转换器,如何通过正则表达式、Base64解密、Raw Inflate等功能,快速解密 PowerShell、Char型和Webshell脚本的混淆过程。它不仅是解密工具,还能解析网络数据和更多黑科技应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CyberChef是一款强大的编码转换器,集成了多种编码转换的功能,能辅助大家方便快捷地解密出恶意脚本。

概述

CyberChef是一款强大的编码转换器,地址在:https://gchq.github.io/CyberChef/

它简单易懂易上手,集成了多种编码转换的功能,如:base64加解密、hex转换、char转换、正则表达式等,能辅助大家方便快捷地解密出恶意脚本。

其界面如下图,最左边的Operations是转换工具集,把挑选好的工具经过DIY组合及排序拖拽到Recipe中,就可以对Input中的字符串进行相应地解密操作了,工具很多,可以在Search框中搜索,输出结果会打印在Output窗口中。

实战演练

多说无益,下面就来进行实战演示吧!

powershell脚本反混淆

首先来尝试使用CyberChef解密一个经过混淆的powershell脚本。把样本下载下来,发现样本经过了高强度的混淆,无法直接分析其做了什么操作。

样本地址:

https://www.hybrid-analysis.com/sample/cc9c6c38840af8573b8175f34e5c54078c1f3fb7c686a6dc49264a0812d56b54?environmentId=120

接下来将样本内容复制到Input窗口中,第一步,是要将其中的base64数据筛选出来。怎么筛选呢?当然是用正则表达式。好,那就把Regular expression拖进来,然后在Regex框中编写规则。将红框中的Output format改为高亮,就可以清晰地看到规则匹配到哪些字符串了。

通过上述的方式,成功写出了匹配base64的正则表达式:[0-9a-zA-Z/+=]{30,},筛选长度在30以上的可视字符串,将Output format改为List matches模式,就能截取这段base64了。

然后把From base64拖进来,成功解密出字符串。

不对啊,怎么解密完还是一堆乱码?别急,注意看Input框中的脚本,在base加密前还有个DelfateStream加密操作呢,那就把Raw Inflate拖进来,轻松解密,Output中已经显现出可以进行分析的恶意代码了。

这还不够,CyberChef还有Generic Code Beautify工具对代码进行美颜,能优化代码格式,看起来更友好,至此,解密工作就完成了,很简单吧!

解密后的powershell脚本大致看下是个下载木马的dropper,本文主要介绍工具的解密用法,就不对该样本进行深入分析。

发现没有,上面的解密方法(正则->base64->inflate)其实可以通用到大部分ps脚本解密步骤中,可以点击save recipe按钮将它保存起来,命名为powershell-deflate-base64,后面遇到相似的混淆脚本就能使用该规则进行解密。

char型恶意脚本反混淆

仅次于base64,char字符的混淆方式也被常见于恶意脚本中,下面就来看看CyberChef 如何轻松解密char型字符串。

样本地址:

https://gist.github.com/jonmarkgo/3431818

首先使用正则表达式([0-9]{2,3}(,s|))+筛选脚本中的char型字符串。

然后使用From Charcode对上述char型字符串进行转换,在转换前需要将间隔符Delimiter选为Comma(逗号),Base选为10进制,就可以解密出恶意代码了,恶意代码是一段JS代码,其中还隐藏有一段char型字符串。

再次重复上述操作,就可以解密出加载的核心恶意脚本的地址为:

https://examhome.net/stat.js?v=1.0.1xamhome

webshell反混淆

webshell跟powershell恶意脚本的混淆方式也大致相同,也常使用base64进行混淆,不过下面的这个webshell有点特别,它循环使用base64加密了二十多次(这种加密方式在某些APT攻击样本中也出现过),也就是说得对它进行二十多次的解密......

样本地址:

https://github.com/LordWolfer/webshells/blob/b7eefaff64049e3ff61e90c850686135c0ba74c4/from_the_wild1.php

使用之前的powershell-deflate-base64规则进行解密,发现它解密出来还是一段base64加密脚本,那该怎么办呢,总不能重复手动操作吧,会累死的!

CyberChef 提供了一种循环的方法,可以省去手工操作的工作。首先在powershell-deflate-base64的开头加个Label,自定义命名为start,意思指循环的开始。

然后在powershell-deflate-base64的末尾拖入Jump,Jump的地址为start,Maximum jumps填入要循环的次数。

通过试验,发现循环解密21次后就能得到混淆前的恶意脚本了,这是一个PHP的文件上传webshell。

总结

CyberChef 可以简单理解成一个脚本解密工具的集合,除此之外,它其实还有很多黑科技,比如解析网络数据包里的数据、解析图片的地理位置及时间信息等等,工具之多,可能会看的眼花缭乱,挑选的时候也要找很久,所以你应当将常用的工具加入到Favourites栏中,方便使用。

项目地址:https://github.com/mattnotmax/cyber-chef-recipes

<think>好的,我现在需要帮助用户找到在CyberChef中使用左移三位操作的指南。首先,我得回忆一下CyberChef的基本操作流程,然后结合位运算的相关知识来答这个问题。 首先,用户提到的是“左移三位”,根据引用[1]和[2],左移操作在编程中通常用于乘以2的幂次。例如,左移三位相当于乘以8。这可能帮助用户理为什么需要进行这个操作。 接下来,我需要确认CyberChef中是否有相关的位操作组件。CyberChef是一个强大的在线工具,支持多种数据操作,包括加密、编码和位运算。根据引用[4]中的例子,左移三位可以通过Python中的<<运算符实现,但在CyberChef中可能需要找到对应的模块。 步骤方面,用户可能不知道如何开始。首先,访问CyberChef的官方网站是第一步。然后,在界面中找到位操作的组件。根据经验,位操作可能位于“位操作”或“数据操作”类别下。例如,“Bit shift”组件可能用于位移操作。 然后,需要配置左移的参数。左移三位意味着设置移位数为3,方向为左。同时,需要注意是否填充零,确保高位补零而不是其他值。引用[3]提到右移时符号位的处理,但左移通常不考虑符号,所以填充零是正确的选择。 可能还需要考虑输入的数据格式。用户可能需要输入的是十六进制、二进制还是十进制数?例如,输入数字5(二进制101),左移三位得到101000,即40。用户需要确认输入格式是否正确,并在输出中查看结果是否符合预期。 此外,用户可能还需要其他位操作,比如按位与、或等,如引用[1]和[2]中提到的,但当前问题只关注左移三位。不过,在教程中可以简要提及这些相关操作,帮助用户全面了位运算选项。 最后,应该建议用户测试示例,例如输入一个数并验证结果是否正确,这有助于确认操作是否正确应用。同时,提醒用户注意位数限制,比如在32位或64位系统中,左移可能导致溢出,但在CyberChef中可能自动处理为更大的数值。 总结步骤:打开CyberChef,添加输入数据,找到Bit shift组件,设置左移3位,执行并查看结果。同时,提供示例和注意事项,确保用户能够正确应用该操作。</think>### CyberChef左移三位操作指南 在CyberChef中实现左移三位操作需要以下步骤: #### 一、基础操作流程 1. **打开CyberChef** 访问官网 [https://gchq.github.io/CyberChef](https://gchq.github.io/CyberChef)。 2. **输入待处理数据** 在左侧输入框输入需要位移的数值(支持十进制、十六进制或二进制格式),例如输入十进制数`5`或二进制`101`。 3. **添加位操作组件** 在左侧操作列表搜索栏输入`Bit shift`,双击选择该组件。 4. **配置位移参数** - `Shift amount`(位移量)设置为`3` - `Shift direction`(方向)选择`Left`(左移) - 勾选`Fill with zeros`(高位补零)[^1] 5. **执行操作** 点击右下角`BAKE`按钮,右侧输出框显示结果。例如输入`5`(二进制`101`)左移三位后得到`40`(二进制`101000`)。 --- #### 二、示例演示 **输入数据**:十进制数`5` **操作流程**: ``` 输入 → Bit shift(左移3位) → 输出 ``` **结果验证**: $$5 \times 2^3 = 40$$ 二进制验证: $$101_{(2)} \ll 3 = 101000_{(2)} = 40_{(10)}$$[^2] --- #### 三、关键注意事项 1. **数据类型匹配** - 若输入为十六进制(如`0xA`),输出会保持相同进制。 - 二进制输入需前缀`0b`(如`0b101`)。 2. **溢出处理** - 左移可能导致数值超出当前位宽(如32位系统),CyberChef默认支持大整数运算[^3]。 3. **复合操作** 可结合其他位运算(如`按位与(&)`、`按位或(|)`)实现复杂逻辑[^1]。 --- #### 四、相关位运算扩展 | 操作名称 | CyberChef组件 | 示例(输入`5`) | 结果 | |----------------|---------------------|---------------|-------| | 左移三位 | `Bit shift` | `5 << 3` | `40` | | 按位与(&) | `Bitwise AND` | `5 & 3` | `1` | | 按位或(|) | `Bitwise OR` | `5 | 3` | `7` | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值