【土木人自学网安Day5】哈希密码简单介绍及哈希破解

 前言(每日一遍):

“初闻不明劝离意,回头已是提桶人”

 (本贴为自学记录贴) 

在食用前确保有以下基础(博主精选贴)

  • ssh登录方式介绍[重点私钥登录部分](点击食用

一、Hash(散列)介绍

(一)明确概念

在开始前我们需要明确以下几个概念

  • 明文:加密或散列之前的数据,通常是文本,但不总是因为它可能是照片或其他文件。
  • 编码:这不是一种加密形式,只是一种数据表示形式,如base64或十六进制。立即可逆。
  • 哈希:哈希是哈希函数的输出。散列也可以用作动词“to hash”,意思是产生一些数据的哈希值。
  • 暴力破解:通过尝试每个不同的密码或每个不同的密钥来攻击密码学。
  • 密码分析:通过发现底层数学中的弱点来攻击密码学。
  • 哈希函数:哈希函数是将不同的输入转化为同长度的输出的一种函数,类似将文章进行“摘要总结”,但是总结的内容长度是固定的。
  • 哈希冲撞:因为哈希函数输出的长度固定,也就也意味着有可能不同的输入会导致同一个输出,这也是著名的鸽子洞效应,当有7个鸽子而只有3个鸽子洞时,必然会出现一个洞存在2个及以上的鸽子。
  • 彩虹表:一种具有哈希和明文相对应的表格,通过hash值可以直接搜索出明文。
  • 加盐:由于数据库可能出现不同用户具有同一哈希值的情况,为防止数据泄露时导致同一密码可登录多个用户的情况,在密码的哈希值中添加随机生成的盐,使得每个哈希密码都与众不同,即使他们有相同的哈希值。

 (二)认识哈希

unix风格的哈希格式为$format$rounds$salt$hash

Linux,密码哈希存储在 /etc/shadow.此文件通常只能由root读取。它们过去存储在 /etc/passwd中,每个人都可以读取。

windows哈希密码使用的是NTLM,这是md4的一种变体,在Windows中,哈希密码存储在SAM中,而且那里的哈希又被分为NT哈希和LM哈希

下面是一些unix系统常见的哈希先序码

先序算法
$1$md5crypt
$2$, $2a$, $2b$, $2x$, $2y$Bcrypt
$6$sha512crypt

 更多的哈希格式可以看这里【指路】,在线识别哈希在这里【指路】,通过hash-identify识别可以通过这里下载【指路】,可以通过:

wget https://gitlab.com/kalilinux/packages/hash-identifier/-/raw/kali/master/hash-id.py

下载后,运行py程序执行识别哈希格式

(三)破解哈希

识别哈希后若想通过本地解码,可以下载John The Ripper解码基本哈希,执行命令如下

​​​​​​​john --format=[format] --wordlist=[path to wordlist] [path to file]

此外,john还可以解密linux系统中/etc/shadow的哈希加密,为了破解shadow文件必须要有/etc/passwd文件,结合这两个文件可以使用如下命令

unshadow [path to passwd] [path to shadow]
案例:unshadow local_passwd local_shadow > unshadowed.txt #输出为unshadowed.txt文件

然后再执行john程序对unshadowed.txt解密,命令如下

john --wordlist=/usr/share/wordlists/rockyou.txt --format=sha512crypt unshadowed.txt

此外,john工具还可以破解zip文件,具体命令如下

zip2john [options] [zip file] > [output file]
# example:zip2john zipfile.zip > zip_hash.txt

 在得到zip_hash后可以通过如下命令破解

john --wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt

同时john还能破解rar文件,命令和上面zip破解的相似,不过改为rar2john [rar file] > [output file]

john在ctf比赛中还有个常用方法,破解私钥的密码,虽然可以通过私钥无密码登录服务器,但是在ctf比赛中仍存在创建私钥时对私钥进行加密认证的行为,这时在使用私钥时需要密码才能登录服务器(可看文章开头精选贴),因此需要使用john解密私钥的认证密码。同样的,需要使用john其中的一个内置命令:ssh2john,具体命令如下

ssh2john [id_rsa private key file] > [output file]
#example:ssh2john id_rsa > id_rsa_hash.txt

得到输出文件后可以通过以下命令破解

john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash.txt

john能实现的解密不止如此,例如单一模式、自定义模式等,都能很好地帮助破解哈希密码,这里不深入讨论,有兴趣的可以自行深入学习。

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值