本文将介绍一款强大的工具,囊括了网络世界范围内绝大数据的编解码技术,加解密技术,数格式转换技术,并提供了编码和解码,加解密以及数据转换的方法方法。对于程序员,这一一款不可多得的神器,在也不用为了搜索base64,URL编解码,各种加解密,时间转换的在线网站了发愁了。当然如果想要了解编解码原理的,可以移步我的专栏,《各种编码》中,介绍了base64编解码,URL编解码,ch和hex编解码,gzip压缩,UTF8编码,chunk传输编码等多种的网络编解码技术的原理,以及如何编写程序实现编码后数据的解码。
Cyberchef简介
Cyberchef是一款由gchq编写的开源网络数据处理工具,旨在为IT从业者尤其是安全专业人员提供直观且可定制的数据处理解决方案。其图形用户界面和模块化的设计使用户能够通过简单的拖放操作执行各种数据加密、解密、编码、解码、哈希等操作,而无需编写复杂的脚本。Cyberchef的主要功能如下:
- 编码和解码。提供广泛的编码和解码操作,包括Base64、URL编码、HTML实体编码等。
- 解密和加密: CyberChef可用于解密加密的文本或文件,也可以执行数据加密操作,支持多种加密算法。
- 文本和文件处理:执行文本和文件的搜索、替换、提取等操作,还可以进行数据格式转换。
- 哈希计算:支持多种哈希算法,用户可以计算文件或文本的哈希值,用于数据完整性验证。
- 网络流量分析:处理和分析网络流量,包括HTTP请求、响应等,用于网络流量分析。
图1
cyberchef的使用非常简单,operations部分是其提供的功能,可以看有非常多的分类,支持常见的编解码方法,多种加解密算法,支持网络领域常见的二进制,十六进制等多种格式,甚至还提供了很多小功能,IP以及日期的转换等。总之,凡是和网络数据处理相关的,第一时间都可以使用cyberchef进行尝试,源码这里。
Cyberchef使用举例
下面将对Cyberchef的主要功能通过具体的数据做一下介绍。
网络协议数据解析举例
IP地址有16个字节,里面蕴含信息比较多,不可能全部都记住,这个时候需要借助cyberchef来进行解析,如下:
图2
cyberchef支持的网络功能非常多,详见networking部分内容,图2可以看到一串16字节的IPV6地址经过解析之后是teredo tunneling的IPv6地址,包含了客户端和服务端的IPV4地址。
关于网络协议如果想要深入的了解,可以参考我的专栏《网络攻防协议实战分析》,这里。
编解码举例
图3
你一定在网络数据包或者其他的poweshell等脚本等遇到过这样的场景,看着很像base64的编码,但是实际上使用诸多的base64工具解码不成功,cyberchef给出了答案。base64编码的由于基础字符集等原因存在着多种的变化,例如base64 standard以及url safe基础字符集就存在着一定的差别。有了cyberchef就能编码之后的数据,通过尝试解码出原始字符,概率大大提升。如果不是cyberchef,相信绝大多数的同学还不知道base64有这么多种变化。当然除了base64,cyberchef还提供base32,base45,base58,base62,base64,base85等非常多的非主流编解码功能,各种数据格式,例如二进制,16进制之间的转换,URL,HTML编码等,这一点可以在 data format部分一点点探索。
网络流量中经常出现被base64等方式编码的数据,经过解码之后的网络数据,就能够明显看出对应的数据是否存在威胁,关于网络数据包的威胁分析,详见我的专栏《安全运营之网络攻击研判分析》,这里,相信有了该工具,网络威胁分析如虎添翼。
网络数据包解压缩举例
相信在使用wireshark分析数据的时候,一定会经常遇到数据看不同的情况,图2展示的是base64编码的情况,属于其中一种场景。同时网络数据包还可能使用gzip等压缩方式,进行传输,关于压缩这块的原理,参考网络传输中的那些编码之-gzip编码,见这里。网络数据包和复杂,有如下几种场景:
- wireshark经常出现解码出错的情况,
- wireshark目前只针对HTTP提供gzip 的解压缩能力
- 压缩方式也是多变,wireshark支持部分
面对这些,wireshark只能通过编写Lua插件进行解决,详见wireshark的专栏《Wireshark从入门到精通》,这里,但是cyberchef都做很好的应对,如下图:
图4
图4支持直接从wireshark中导出hexdump的数据,但是要在recipe中声明其数据格式为Hexdump,然后压缩算法可以选择zlib,gzip,gunzip,zip,unzip,bzip等多种方式。
时间转换举例
时间转换也是一个非常常见的场景,例如unix秒格式的时间戳转换成标准的日期格式,不同日期格式和时区之间的转换等,如下:
图5
图6
图5是批量将多个unix时间戳格式的时间转换成为可读的格式,可以看到使用了fork功能按照换行符进行切割,然后使用From Unix timestamp组件将其转换为windows文件的时间格式,连个功能组件搭配使用。
图6是将UTC的时间转换为澳大利亚的时间,这个功能也是非常的使用,对于跨时区工作的小伙伴比较友好。
数据加解密举例
很多的时候一串经过加密二进制数据,无论是存储在文件中还是通过网络传输,必须进行解密才能了解原本的内容,如下:
图7
图8
图7中输入的数据前32个字节是IV信息,因此使用register组件提取出前32个字节的内容,并赋值给变量R0。同时解密的输入需要去除前32个字节的内容,因此使用drop bytes组件。最后给AES组件输入HEX格式秘钥,设置好对应的配置,就可以完成解密。整体来说cyberchef的功能考虑的十分全面,还加入了变量,具备可编程的能力。
图8是类似的功能,只是图7的密码使用URL中的key参数进行传输,同样使用register组件提取秘钥,赋值给R0变量。然后提取出data的数据部分作为RC4组件的输入,配置RC4组件的秘钥为R0,即可完成机密工作。
汇编指令显示举例
cyberchef提供的功能非常强大,有很多意想不到的能力,如下:
图9
图9汇总讲一段16进制数据,该数据可能是文件中截取的数据,也可能是数据包中共截取的数据,然后通过RC4组件的解密后没,通过disassemble x86组件以x86架构的的指令集形式进行展示。该功能可以将网络传输和文件中的二进制片段解释称有意义的内容,非常强大。
总结
CyberChef作为一款功能强大的数据处理工具,为处理和分析网络数据提供了直观且高效的解决方案。无论是初学者还是专业研究人员,都可以通过CyberChef更轻松地执行各种网络数据操作,是一款程序员必备的工具。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。