运营商渗透测试John the ripper
如果你的企业和组织中已经做好了安全加固,也采用了漏洞扫描工具时常检测,那为什么还需要进行渗透测试(penetration test)呢?东西是死的,人是活的,攻击者可不会傻到往墙上撞,他们总是在你意想不到的地方或形式进行入侵。知己知彼,渗透测试就是在业务环境中”知己”的一种办法。
作者:绿盟科技 张峰
导读
如果你的企业和组织中已经做好了安全加固,也采用了漏洞扫描工具时常检测,那为什么还需要进行渗透测试(penetration test)呢?东西是死的,人是活的,攻击者可不会傻到往墙上撞,他们总是在你意想不到的地方或形式进行入侵。知己知彼,渗透测试就是在业务环境中”知己”的一种办法。
但要找到合适的方法、合适的公司实施渗透测试并不容易,这毕竟是安全审查乃至安全服务中的一个部分,用户往往需要对自己的资产及风险有一个全面的了解和掌控,这不是用户自己或者某个人可以完成的。本文就呈现了渗透测试服务中一个细小的方面,通过使用John the ripper工具进行密码安全性测试的过程。
基本介绍
2.1 John the ripper介绍
John the ripper是一款基于字典的免费的密码破解工具。简单来说就是进行暴力密码破解,这种密码破解方式,耗费时间长、耗费处理器资源多。尝试的密码越多,所需的时间就越长。
起初,John the ripper是运行在Linux类平台上,现在可以运行在不同平台上。在安全服务项目中,主要采用了windows和linux下两个版本的工具。在进行实际测试中发现,windows下支持的密码HASH算法不是特别全面,后期采用Linux版本的John the ripper。
2.2密码文件介绍
John the ripper在安全服务项目中,主要用来测试Linux操作系统密码、AIX操作系统的密码。存放这个密码加密的文件分别是:/etc/shadow这个文件和/etc/security/passwd这个文件。
Linux系统的密码文件:
/etc/shadow文件
此处,不对密码文件的每个字段进行详细描述。
AIX系统的密码文件
/etc/security/passwd文件
此处,不对密码文件的每个字段进行详细描述。AIX系统的密码文件与Linux的密码文件格式不一致,在进行密码破解时,需要进行格式转换。
2.3 进行密码破解
在进行密码破解中,可以采用Windows的密码破解工具,也可以采用LINUX下的密码破解工具。Linux下的使用方法:
john –wordlist=passwd.dic shadow.txt
可以输入john查看详细使用参数。
Windows下的使用方法:
john.exe –wordlist=D:\john\dic\passwd.dic D:\john\shadow\shadow.txt
可以输入john查看详细使用参数。在实际安全服务过程中,服务团队采用了Kali下面自带的John工具进行密码破解。
创新使用
3.1 John the ripper使用的缺点
John the ripper在密码破解方面功能确实很强大,且密码破解效果比较好。但是在密码破解中存在一些问题。
- John the ripper一次性只能破解一个shadow。
- John the ripper破解时间长。
- Windows下John the ripper可破解的加密算法种类有限。
- 破解过程中,需要人工参与,需要随时查看破解进度。
- 需要收集一个针对特定行业的密码字典。
3.2 自动化进行shadow破解
针对John the ripper存在的问题,绿盟科技安全服务团队采用php,编写了一个简单脚本,进行shadow破解,减少破解过程中的人工参与。功能包括:
- 逐个进行shadow文件密码破解。
- 将AIX的密码HASH文件进行转化为可破解的格式。
- 格式化输出破解出的口令。
3.3 收集常用密码字典
在密码破解过程中,很重要的一个方面,在于进行密码的收集。密码字典的数量一定程度上决定了,是否可以正确的破解出密码口令。在安全服务过程中,主要将如下密码进行了收集:
- 扫描器自带的默认密码。
- 客户提供的带有部分行业特征的用户密码。
- 前期主管机构检查时发现的密码。
- 安全服务过程中,渗透测试发现的Web帐号的密码。
- 根据客户需求,定制了部分密码字典。
3.4 定制行业密码字典
根据客户的需求,在密码字典方面,与客户商量,根据客户现网主机的用户名生成一份密码字典。根据一定规则生成一份密码字典。后续可以根据部分需求,增加密码规则来完善密码字典,主要规则包括添加123、1234、abc、abcd等等。
3. 5 强大的客户支撑
在这个阶段,貌似万事已经具备了。执行命令之后,待到第二天进行结果查看,进行汇总即可。但是,John the ripper在进行口令破解时,耗费时间长、对PC或服务器的性能要求很高。个人办公电脑基本无法满足长时间的密码破解需求。
在安全服务过程中,客户提供了强大的技术支撑。与客户协商,在高性能主机上创建了虚拟机,安装kali系统。将进行密码破解的环境移植到客户的机器上。最终服务团队得到了一个18个核的虚拟机,配置了8个G内存。
3.6 遇到的问题
非标准化shadow文件格式
服务团队在工作中采用了一个步骤,统一将客户提供的非标准化格式命名的文件,进行统一更改文件名。更改文件扩展名代码脚本如下:
<?php function foreachDir($dirname) { if(!is_dir($dirname)) { echo "{$dirname} not effective dir"; exit(); } $handle=opendir($dirname); //打开目录 //opendir() 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用 //若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。 while (($file = readdir($handle))!==false) //读取目录, readdir() 函数返回由 opendir() 打开的目录句柄中的条目。 若成功,则该函数返回一个文件名,否则返回 false。 { if($file!="." && $file!='..') { if(is_dir($dirname.$file)) //is_dir() 函数检查指定的文件是否是目录 { echo $dirname.$file."
"; //foreachDir($dirname.$file); //如果注释号去掉,将会递归修改文件夹内的文件夹文件 } else { echo "--".$dirname."/".$file."\r\n"; rename($dirname.'/'.$file,$dirname.'/'.$file.'.txt'); //替换为txt后缀格式 } } } } foreachDir('../traverseMendFilename'); ?>
长时间进行破解,脚本命令自动停止
在进行shadow破解时,假若破解的shadow文件数量多、破解需要的时间长。当使用SecureCrt连接kali断开后,破解进行会自己停止。
这这种情况下,需要提前运行screen命令,然后执行php john.php。让脚本后台运行。这种方式,破解脚本会把所有shadow文件破解完毕后,再停止。
结束语
本文在传统的使用扫描器在进行密码猜测的基础上,创新性的使用John the ripper进行密码破解测试。弱口令专项整治是主管机构及用户在实际生产环境中提出的实际需求,虽然只是渗透测试中的一个极小的方面,但可以看到整个过程需要专业团队与客户的密切协作,包括了人员、技术、工具、业务流程等多方面的考虑,需要实施团队对用户业务环境进行深入理解和评估。