HASH解密工具 pwcrack 和 toppwdhash
2024-5-10 12:34:50 Author: mp.weixin.qq.com(查看原文) 阅读量:8 收藏

△△△点击上方“蓝字”关注我们了解更多精彩
0x00 前言
上次分享过一款Hash格式识别工具【haiti】,能够简单的识别hash串可能的hash类型。

在实战中,实际用处可能不大。一般都是通过查看长度猜测出常见的算法,然后在cmd5等hash解密网站进行解密。
cmd5确实好用,就是有点费钱。
1、类似cmd5的在线免费hash解密网站也有很多,每一个都去尝试就过于麻烦了,那有没有一个综合框架来聚合各hash解密网站来进行查询的呢?
哈希解密的原理,其实就是通过建立计算好的哈希值到可能明文的映射表,然后快速查找已知哈希值对应的可能明文。
这种方法依赖于存储大量预先计算的数据,对于密码破解很有效,尤其是当密码强度不高且未加盐时。
穷化一下思路,我们不需要像彩虹表一样制作所有字符串的可能加密。可以只制作常见口令的常见加密算法的对应字典,这样能够节省性能和存储需求。
常见的口令:弱口令Top100000字典常见的算法: md5,sha1,md5(pass),还有特定的CMS的加密方式等等
既然已经知道原理了,大家已经可以开始制作一个哈希解密工具了。
0x01 pwcrack-framework
pwcrack是目前仍在积极维护的一款聚合hash密码自动破解框架,使用Ruby编写,目前提供23个在线破解和40个离线破解接口,支持 63 种算法破解。
1、【重点】支持多个在线接口查询解密2、【重点】支持多种算法的解密3、【重点】支持生成常见hash的本地密码数据库
pwcrack功能强大,唯一不便的就是使用ruby编程,需要安装ruby环境才能运行(该问题在下文解决)。
项目地址:
L-codes/pwcrack-framework: https://github.com/L-codes/pwcrack-framework
简单上手:
pwcrack e10adc3949ba59abbe56e057f20f883epwcrack e10adc3949ba59abbe56e057f20f883e -s localdb
提示:localdb功能很有用,适合在批量解密大量hash数据时使用。懂得都懂,不懂的以后应该会懂。
0x02 pwcrack安装的rjb依赖库的问题
2024年5月份之前,由于rjb依赖库在windows上无法正常安装和运行的问题,导致pwcrack在windows上使用是不完美的(无法调用java插件,如finalshell解密和nc解密插件)。
因为类似的活跃项目基本没有,所以想着要让项目适用性更广,就在一直在尝试解决这个问题。
经过不断努力,最终选择了逃避。放弃解决windwos下rjb安装问题,将已有的测试记录摆烂提issue给rjb开发者,但是许久过去一直没有任何消息。
经过了长达几个月的等待,突然有天开发者回复我了,然后又失联了(心态炸了)。
又过了一段时间开发者终于是发布了测试分支,经过编译测试后成功在windows中运行。
截至目前发布的rjb1.7.2+本,已经能够完整的在windows环境中安装并运行
经过测试 pwcrack在windos环境可以运行于ruby27版本和ruby31版本,可以直接进行bundle install安装使用。
安装方式也很简单,安装好ruby以后直接在pwcrack源码目录下运行bundle install即可。
windows下ruby环境的安装很久以前在推荐whatweb指纹识别工具的时候有写过 Ruby and Whatweb Install on Windows
0x03 pwcrack.exe的打包问题
本来按照一般逻辑,此时我应该发挥自己的作用,提供一个打包好的独立exe分享给各位大佬使用。
但打包完成后,我发现rjb模块和msgpack模块在windows中是以so格式的依赖库的方式进行导入的。
身rubyc打包程序时是不支持将so,dll等依赖库打包进exe文件中,经过不断的失败和尝试,最终通过修改rubyc的源码实现了打包so文件进入exe。
当我觉得大功告成的时候,发现打包的pwcrack的独立exe程序,还是无法加载rjbcore.so文件,不管so文件在exe内部还是exe外部
这时候我大概理解了开发者为什么在打包时将依赖库文件排除,原来是无法加载,也没有找到任何的原因。
生成的pwcrack文件有些过于不完美,rjb模块影响的是java插件的调用,这个还是小事情。
更过分的是 msgpack.so 模块影响initdb和localdb打包好的pwcarck.exe不能使用本地库解密hash
那我要他有何用,遂删除打包好的pwcarck.exe程序。
最后,通过使用纯ruby实现的msgpack-pure库来补充了这个库程序,修复了PE文件下的localdb功能。
缺陷是原生ruby实现msgpack比c语言实现的msgpack速度更慢,导致initdb很慢
0x04 pwcrack.exe
对代码做了一些优化,让其更适合与于作为PE的运行,windows下不需要再安装ruby环境,可以直接运行。

使用时,需要将插件目录和data目录存放于程序的ROOT目录。
PE模式下ROOT目录其实就是:
环境变量PWCRACK_PE指定的值 或 当前工作目录.
PE_MODE = ENV['PWCRACK_PE'] || __dir__.include?("/__enclose_io_memfs__/")ROOT = ENV['PWCRACK_ROOT'] || PE_MODE ? Dir.pwd : __dir__puts "[*] Current Root Path: #{ROOT} <-> PE Mode: #{PE_MODE}"`

plugins目录rb插件功能测试正常


plugins目录localdb插件功能正常

目前和以后大致都存在的问题:

1、rjb等使用非原生ruby实现的插件,无法在PE模式加载。2、initdb localdb 功能使用时 会比原版本慢一些。
其他注意事项:
1、使用rb运行和pe运行时用的制作db库有可能有细微差距,更换工具最好重建db文件。
2、plugins插件目录在复杂中文路径可能会找不到,建议使用英文路路径。
0x05 toppwdhash

其实不用pwcrack的的本地hash解密库,也还有别的loacldb项目可以补充,比如 toppwdhash

toppwdhash 是常见密码哈希离线查询工具

包含算法类型如下:

'md5', 'md5x2', 'md5x3','sha1', 'ntlm', 'mysql', 'mysql5','md5_sha1', 'sha1_sha1', 'sha1_md5', 'md5_base64','md5_middle','base64_md5', 'md5_sha256', 'sha256','sm3'

toppwdhash是Python编写的,很容易编写出新的加密算法,很适合本地使用。

项目地址:

moyuwa/toppwdhash: https://github.com/moyuwa/toppwdhash

本次也提供了toppwdhash.exe 和原版文件命令可能有一些区别.

0x06 其他
pwcrack本身是不支持批量查询的,因为开发者觉得这样不太好,查询频率过高会导致hash解密网站压力过大,导致接口封禁,所以没有提供批量查询的功能。
但是如果结合localdb来进行批量查询还是很有意义的。
如果你能从pwcrack.exe中发现彩蛋的话,大概是能够用上这个批量查询功能的,但仅建议用于-s localdb使用。

依旧是公众号后台回复【共享】获取打包好的程序。

0x99 免责声明

在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。

1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。

2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。

3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。

4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。

5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。

如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。

END

如您有任何投稿、问题、需求、建议

NOVASEC公众号后台留言

或添加 NOVASEC 联系人

感谢您对我们的支持、点赞和关注

加入我们与萌新一起成长吧!

本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!


文章来源: https://mp.weixin.qq.com/s?__biz=MzUzODU3ODA0MA==&mid=2247489516&idx=1&sn=6f7ad8733733a4fe78b59d123e093f5c&chksm=fad4cafbcda343ed934229d4969928f919ad5749f7f7439b80cd517b8b4a8f85710b8688c665&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh