Day 21 Password Attacks - 密码攻击(hash-identifier, john)

前言

昨天我们用sqlmap突破了防守,取得了一些看起来像是帐号密码的东西

user_id user password
1 admin 5f4dcc3b5aa765d61d8327deb882cf99 (password)
2 gordonb e99a18c428cb38d5f260853678922e03 (abc123)

看到可能会让人很害怕,各种猜忌从心中冒出开始怀疑整个世界可能有的恶意

我的密码是明码储存?
这样网站管理者不就也能看到我的密码了吗?
完蛋了,我有其他网站也是一样的帐号密码该怎麽办?

先说结论,有些网站的确还存在着明码储存,像是有些网站提供了忘记密码的功能,点下去就能收到信并带有完整的明码密码。但通常密码是不会以明码形式储存在资料库里的,上面sqlmap之所以能够取得密码是因为虽然经过杂凑方法对密码整形成5f4dcc3b5aa765d61d8327deb882cf99这种形式,但是密码太简单,属於常见且极度危险的废物密码,有太多工具或是密码字典档能够将杂凑结果还原成原始密码,就跟明码一样在裸奔,所以sqlmap才能在找到资料同时,判断出他的杂凑形式并且破解。

这边推荐邦友的文章,非常详细的解释了密码与杂凑的关系
https://ithelp.ithome.com.tw/articles/10277332

工具介绍 (hash-identifier)

第一个介绍的工具是hash-identifier,他不是用来破解,而是用来判断使用的杂凑方式,不过因为是根据杂凑的特性去猜测,所以结果也不一定准确。

这边直接使用hash-identifier来对5f4dcc3b5aa765d61d8327deb882cf99进行猜测,这个字串是来自password的杂凑形式

hash-identifier  
   #########################################################################
   #     __  __                     __           ______    _____           #
   #    /\ \/\ \                   /\ \         /\__  _\  /\  _ `\         #
   #    \ \ \_\ \     __      ____ \ \ \___     \/_/\ \/  \ \ \/\ \        #
   #     \ \  _  \  /'__`\   / ,__\ \ \  _ `\      \ \ \   \ \ \ \ \       #
   #      \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \      \_\ \__ \ \ \_\ \      #
   #       \ \_\ \_\ \___ \_\/\____/  \ \_\ \_\     /\_____\ \ \____/      #
   #        \/_/\/_/\/__/\/_/\/___/    \/_/\/_/     \/_____/  \/___/  v1.2 #
   #                                                             By Zion3R #
   #                                                    www.Blackploit.com #
   #                                                   [email protected] #
   #########################################################################
--------------------------------------------------
 HASH: 5f4dcc3b5aa765d61d8327deb882cf99

Possible Hashs:
[+] MD5
[+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))

判断结果猜测是MD5,这边由於我们知道密码是password,所以可以透过另一个工具md5sum来反向测试一下,下面的-n是为了忽略echo预设有的换行,这样将password字串喂给md5sum来得到杂凑过的值

echo -n 'password' | md5sum

会得到结果,证明了hash-identifier的猜测结果是对的

5f4dcc3b5aa765d61d8327deb882cf99  -

工具介绍 (john)

接下来介绍一位好人john,他可以帮我们暴力破解弱密码,但首先我们需要准备需要破解的hash给他,所以我们先编辑一个档案/tmp/hash,档名可以随意,内容就填想要破解的hash,这边我们就拿上面出现过的两个

5f4dcc3b5aa765d61d8327deb882cf99
e99a18c428cb38d5f260853678922e03

接着呼叫帮手,--wordlist是指定字点档,这边使用内建的,当然也可以使用自己编辑过的,接着--format=raw-md5来缩小范围,最後放刚才编辑好的档案/tmp/hash,这样john就会根据字典档去暴力破解这两个hash了

john --wordlist=/usr/share/john/password.lst --format=raw-md5 /tmp/hash 

结果如下,john破解了两组

Using default input encoding: UTF-8
Loaded 2 password hashes with no different salts (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
abc123           (?)
password         (?)
2g 0:00:00:00 DONE (2021-10-06 08:19) 100.0g/s 19200p/s 19200c/s 38400C/s 123456..larry
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed

这边要注意一下,如果对同样的hash破解,可能就会出现以下内容

No password hashes left to crack (see FAQ)

这是因为破解过的内容都被记录在/home/kali/.john/john.pot,想重新破解,可以删除这个档案再执行一次,如果只是单纯想看破解过的内容,可以执行以下命令

john --show --format=raw-md5 /tmp/hash

就会显示破解过的内容

?:password
?:abc123

2 password hashes cracked, 0 left

结语

体验这两个工具的过程中,我们能了解到某些老杂凑法已经不再安全了,即使资料经过整形也不能保证不会被逆向解析,所以渐渐地也有些改良性的杂凑法出现,但同样地,攻击者的工具与技术也是不断进步,孰胜孰负还未可知。


<<:  Day21 为什麽要研发AR-HUD,它和W-HUD不都是投影在挡风玻璃上吗?

>>:  Dungeon Mizarka 024

Day 03:不用三分钟,建立第一个 Angular 专案范本

接下来,我们就要来建立第一个专案范本。 首先,我们可以在桌面上先建一个资料夹,命名叫 Angular...

为了转生而点技能-JavaScript,day8(浅笔记-物件之浅层复制与深层复制

物件复制: 浅层复制(shallow copy):仅被复制的一方能保留第一层的物件之值,但是当复制方...

05 - Uptime - 掌握系统的生命徵象 (3/4) - 透过 Kibana 观看心电图及设定警报

Uptime - 掌握系统的生命徵象 系列文章 (1/4) - 我们要观测的生命徵象是什麽? (2/...

资安学习路上-渗透测试实务3

漏洞利用 利用侦测到的现有漏洞取得初始控制权 上图取自台科大资安社课教材 1. Exploit-db...

[ 卡卡 DAY 7 ] - React Native style 必懂之 Flexbox弹性盒子(下)

上篇大致上介绍了一下於 css vs React Native 的 flexbox 差异 这篇主要...