欢迎投稿

今日深度:

Oracle最佳替代者PostgreSQL数据库的整体安全性(1)(4)

破解密码

实施一个强类型的密码是值得的,但是没有办法去判断它的强度,除非有人破解它。破解实用程序主要基于两种方法,如下所示。

蛮力攻击Brute force)
针对散列的系统化测试。它以一些字母为起点,随着攻击的继续不断增加字母的长度。这种方法被建议用于测试较短的密码。
字典攻击Dictionary attack)
使 用一种社会工程social-engineering)方法。破解程序使用一个单词字典作为起点。此后,不断组合这些单词并针对捕捉到的散列进行测试。 这种攻击利用了一种错误的观念,即由有助于记忆的字符串和字符组合组成的长字符串要比由随机字符组成的稍微短一些的字符串更加安全。
根据密码的强度以及使用的硬件,用于解密的时间可能从几秒到几个月不等。

DBA 对识别长度小于 6 个字符的密码比较感兴趣。

命令行实用工具 MDCrack 使用蛮力攻击法测试密码。这个 Windows 二进制工具在 Linux under Wine 上也可以很好地工作。

输入 wine MDCrack-sse.exe --help 将返回配置参数switch)。其中一些如下面所示:

Usage: MDCrack [options...] --test-hash|hash       MDCrack [options...] --bench[=PASS]       MDCrack [options...] --resume[=FILENAME]|--delete[=FILENAME]       MDCrack [options...] --help|--about            

最简单的命令行调用是 wine MDCrack-sse.exe --algorithm=MD5 --append=$USERNAME $MD5_HASH,其中 $USERNAME 为用户名,而 $MD5_HASH 是 pg_shadow 目录文件中的 MD5 散列。

如下所示,MDCrack 可以在会话模式下运行,因此您可以停止一个解密操作并在稍后继续执行。


清单 16. 在会话模式下运行的 MDCrack

# start sessionwine MDCrack-sse.exe --algorithm=MD5 --append=$USERNAME $MD5_HASH\ --session=mysessionfile.txt# resume using the last session modewine MDCrack-sse.exe --algorithm=MD5 --append=$USERNAME $MD5_HASH\ --resume=mysessionfile.txt            

默 认字符集为 abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ。如果要测试的密码包 含了不属于默认字符集的字符,那么您可以中止进程。您可以将其修改为由字母和数字字符组成的任意组合。例如,您可能希望包含控制字符和标点符号。

调整字符集是在命令行中完成的。变量 $CHARSET 表示将要使用的实际字符集:

wine MDCrack-sse.exe --algorithm=MD5 --append=$USERNAME $MD5_HASH --charset=$CHARSET            

下面的示例将修改 Postgres 密码 123。如果忽略前三个字符,那么将得到 MD5 散列值 md5173ca5050c91b538b6bf1f685b262b35。您可以通过以下调用确定密码提示:对字符串 Collision found 执行 grep 命令)。这次解密用了大约 0.32 秒:

wine MDCrack-sse.exe --algorithm=MD5 --append=user1 173ca5050c91b538b6bf1f685b262b35\| grep "Collision found"            

清单 17 演示了在系统目录 pg_shadow 中解密密码。


清单 17. 解密密码

wine MDCrack-sse.exe --algorithm=MD5 --append=user1 \`psql -t -c "select substring(passwd,4) from pg_shadow where usename='user1';"` \| grep "Collision found"            身份验证模型

您已经知道了哪些部分会出现问题,现在让我们看看采取哪些措施来纠正错误。身份验证是一个庞大的主题,因此这里只涉及一些基本的知识。

在 “身份验证” 这一庞大主题下,可以用许多种方法控制对 Postgres 集群的访问:

•UNIX 域套接字
•Ident 服务器身份验证
•LDAP 服务器身份验证
•PAM
•Kerberos
•SSL
UNIX 域套接字

一个 UNIX 域套接字就是一个双向通信管道,它在许多方面与文件相似。服务器创建域套接字,域套接字等待客户机通过文件系统打开文件。一个典型的 PostgreSQL 域套接字如下所示。


www.htsjk.Com true http://www.htsjk.com/shujukuaq/16816.html NewsArticle 破解密码 实施一个强类型的密码是值得的,但是没有办法去判断它的强度,除非有人破解它。破解实用程序主要基于两种方法,如下所示。 蛮力攻击Bru...
评论暂时关闭