渗透测试--密码破解

        在渗透过程中,我们大概率会碰到很多加密的内容,而破解这些密文则可以给我们提供很多额外信息。本篇文章主要讲述,我们可以如何破解这些加密内容。

总体思路

对称加密

对称加密算法,若我们能爆破出秘钥则可以破译。频率分析、填充Oracle攻击也可以完成。

AES破解

DES破解

3DES

Blowfish

非对称加密

非对称加密算法,破解起来则比较困难,通常需要获取其私钥证书

RSA

ECDSA

Diffie-Hellman

MD5

MD5算法只能通过彩虹表爆破完成解密,而MD5等hash算法是经常会和渗透打交道的加密手段,所以我们会使用hashcat等工具完成一系列的破译工作。

MD5破解方法

        当我们发现了一个MD5加密字符串后,我们要做到的就是破解他!

破解思路

1.通过hashid工具推断hash版本

2.将hash版本信息传递给hashcat等hash破解工具

是不是看起来很简单,但并非我们想的那么简单。我还会遇到以下情况。

情况解决方法
hashid版本无法确定hashcat案例功能
密码本跑完了还是破解不了hashcat 6种攻击方法
密码存在特定规则完成不了复杂任务hashcat 规则参数

hashid工具

为更加准确判断hashId,我们可以使用python的模块---hashid完成这个步骤

使用方法

hashid '$apr1$71850310$gh9m4xcAn3MGxogwX/ztb.'

Analyzing '$apr1$71850310$gh9m4xcAn3MGxogwX/ztb.'
[+] MD5(APR) 
[+] Apache MD5 

自动化hashid失败处理办法

        hashid工具并非那么的有效,它时长会出现无法识别的情况。在这种情况下我们可以通过 --example-hash 参数获取所有的例子,然后手动查找。手动查找过程中关注hashid位置的值。然后依据这个值来grep 和 less出我们想要知道的内容。

预判hashid可能性多的问题

        值得注意的是,hashid使用正则表达式尽力确定所提供的哈希类型。通常hashid会为给定的哈希提供许多可能性,我们仍然需要进行一定程度的猜测来识别给定的哈希。了解哈希的来源将极大地帮助我们缩小哈希类型的范围,从而Hashcat确定破解它所需的哈希模式。

        后面瘾小生呢,会为大家出一期专题《渗透测试--获取hash的途径》,告诉大家哪里能拿到hash值,因为hash是内网信息收集的重点,而且位置众多。现在现在下面提供一些简单来源。

数据库

数据库中的密码通常是通过以下算法加密的

MD5

SHA1

bcrypt

Linux /etc/shadow文件

Linux系统中的用户hash通常采用以下算法加密

SHA512crypt

Windows NTML

Windows从内存,中间人攻击,还是SAM数据库中的凭证通常采用以下算法加密

NTML

NTMLv1

NTMLv2

hashcat工具

选项

参数描述
--example-hasheshash示例展示
-b指定hash类型,执行性能测试
--show展示已经破译的密码

调整速度

参数描述
-O限定md5数字长度为32,当然这会让我们错失一些东西,所以建议优先运行-O,之后再重新运行其他部分
-w

系统占有情况,后面可跟3中模式:
1 后台运作,不影响正常操作

2 正常运作,可能对系统稍卡

3 高效运作,系统负担很大

事例

字典破解

攻击弱密码的hash他将变得非常有效

hashcat -a 0 -m <hash type> <hash file> <wordlist>

当出现cracked则表示成功破解,Exhausted表示使用了全部密码本没有找到正确的。

组合字典破解

将两个密码本组合

hashcat -a 1 -m 0 hash.txt ./wordlist1.txt ./wordlist2.txt
掩码破解

我们可以通过以下列表构建出我们希望爆破的字典

掩码列表:

参数描述
-1 01自定义占位符,表示该位置为0或1
-1 02自定义占位符,表示该位置为0或2
hashcat -a 3 -m 0 md5_mask_example_hash -1 01 'ILFREIGHT?l?l?l?l?l20?1?d'
 混合破解

原理上看是将字典模式和掩码模式混合一同使用

hashcat -a 6 -m 0 hybrid_hash /opt/useful/seclists/Passwords/Leaked-Databases/rockyou.txt '?d?s'
字典+规则混合破解

hashcat可以生成密码本,通过下面的方式在提供一个密码本的同时,再给出对应的rule规则文档,我们就可以做出更加有趣的密码组。

hashcat -a 0 -m 100 hash /opt/useful/seclists/Passwords/Leaked-Databases/rockyou.txt -r rule.txt
自定义rule

而rule文档的创建如下面的操作可见。具体的密码生成规则可查看该系列文章的渗透测试--密码本生成

echo 'c so0 si1 se3 ss5 sa@ $2 $0 $1 $9' > rule.txt
echo 'password_ilfreight' > test.txt
hashcat -r rule.txt test.txt --stdout

'''
P@55w0rd_1lfr31ght2019
'''

开源rule库

rule也不必要完全由我们自己生成,目前有很多大佬已经写好规则,我们自己使用即可。还有各种公开规则库,例如nsa-rulesHob0Rules《How to Hack Like a Legend》一书中介绍的corporate.rule

hashcatzidai

ls -l /usr/share/hashcat/rules/
 -g参数随机规则生成

如标题名字一样,-g参数可以自动生成1000条规则,然后作用于我们的字典。对于此种方法的成功率只能说!!感受命运的力量吧!!

hashcat -a 0 -m 100 -g 1000 hash /opt/useful/seclists/Passwords/Leaked-Databases/rockyou.txt

john的脚本工具list

        瘾小生平时比较喜欢使用hashcat来破解密码,john使用的不多,但john的hash转换脚本却非常有用,这对于我们而言是宝藏内容,所以下面仅仅介绍如何用john中的脚本获取hash值。

cmundy2@htb[/htb]$ locate *2john*

/usr/bin/bitlocker2john
/usr/bin/dmg2john
/usr/bin/gpg2john
/usr/bin/hccap2john
/usr/bin/keepass2john
/usr/bin/putty2john
/usr/bin/racf2john
/usr/bin/rar2john
/usr/bin/uaf2john
/usr/bin/vncpcap2john
/usr/bin/wlanhcx2john
/usr/bin/wpapcap2john
/usr/bin/zip2john
/usr/share/john/1password2john.py
/usr/share/john/7z2john.pl
/usr/share/john/DPAPImk2john.py
/usr/share/john/adxcsouf2john.py
/usr/share/john/aem2john.py
/usr/share/john/aix2john.pl
/usr/share/john/aix2john.py
/usr/share/john/andotp2john.py
/usr/share/john/androidbackup2john.py
...SNIP...

john脚本工具提取加密SSH私钥中的hash

ssh2john.py SSH.private > ssh.hash
cat ssh.hash 

ssh.private:$sshng$0$8$1C258238FD2D6EB0$2352$f7b...SNIP...

数据整理 

在我们获取到hash密码的时候有可能需要破解的值需要我们从文件中提取出来,比如ntds文件中的密码本等。所以下面我们介绍一下需要掌握的linux数据处理技巧

提取任意位置的值

awk -F: '{if (length($4) == 32) print $4}' ntds_hashes.txt > hashes.txt

awk -F【分隔符】 '{【代码】}' 【数据文件】 > 【输出文件】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值