记录一次大规模linux系统root密码撞库的经历

原创 2016年08月31日 10:48:44

在某公司做了一个项目,查找公司几十万台主机的root密码是否是弱密码。

该过程涉及到任务下发,数据处理和上报等过程,这里不介绍其他模块,只介绍收集部分。


一、怎么判断linux主机密码是否是弱密码

首先linux下面的密码保存在passwd和shadow文件中,其中passwd文件保存账户名,shadow文件保存密码hash值,只有root权限才能看到shadow文件内容

然后linux下密码hash格式如下:

$6$wYvk1x5b$YmSYE85080W5okRftVVJgxcmT/qRaJK4e07UkxhnX4gtNy3/hwFPEbpJ9P1G4qqMnWk0eaxuMfoLtnFsfm5HX1

其中黄色部分代表加密方式:

(1)如果密码不是以$开头,则密码是以EDS加密,文本全部为密文(暂时没有见到)

(2)如果密码以$1开头,表示使用MD5加密,加密后是22个字符

(3)如果密码以$2a开头,表示使用Blowfish加密(暂时没有见到)

(4)如果密码以$5开头,表示使用SHA256加密,加密后是43个字符

(5)如果密码以$6开头,表示使用SHA512加密,加密后是86个字符

绿色部分为使用以$开头的加密方式加密时使用的salt

蓝色标记部分为密码加密后的密文

根据以上规则提取出使用的加密方式,将弱密码库中的密码使用对应的加密方式加密,然后对比看是否相同,若有相同则可判定该密码为弱密码。


二、怎么收集弱密码

提取主机的密码有如下两种方案:(1)将几十万台主机的密码hash值全部收集到server端,然后再进行撞库判断;(2)将弱密码库下发到主机端,在主机端进行撞库。

首先第一个方案的好处是,收集和计算很方便,坏处是,将大规模的密码收集到一个地方是非常危险的操作。

第二个方案的好处是,除去了弱密码聚集在一处的风险,坏处是将弱密码库下发在主机端进行计算不方便,而且下发数据量有点大。

我们最终选择第二个方案,因为我们认为主机密码的安全级别比较高,而弱密码库在公司内部不是很机密。虽然如此,我们在下发弱密码库的时候还是将弱密码库进行加密处理,在主机端再进行解密判断,这个过程中,弱密码库中的密码没有落地,在主机内存中完成判断后删除,在一定程度上保证了弱密码库的安全。


三、大规模主机的兼容性

一般数据处理采用python进行处理,但是基于几十万台主机的情况下,Python的版本很可能不一致,比如python的2.和3.版本就不兼容,所以在大规模主机上运行Python代码时需要先检查Python的版本,如果版本统一,则可以使用Python,如果版本不统一或者不兼容的情况下,则需要考虑其他兼容性好的语言,比如,我是用的是shell语言。


四、运行时出现的一个问题

在上线运行时,遇到一个问题,在线测试三台主机,另外两台主机正常产生数据,并上报。只有一个主机没有产生数据。

后来发现是使用nohup+&后台方式启动时,该主机的sudoer文件中规定不能运行sudo命令,导致运行失败。注意,在运行该脚本时,已经是在root权限下,所以没有必要再使用sudo。




一种简单的md5加盐加密的方法(防止彩虹表撞库)

md5加密(或者说摘要算法)大家都很熟悉了 就不解释了 现在很多数据库设计都喜欢用单向加密的方式保存密码,验证时对提交的密码再次加密之后做密文对比 黄色别墅http://www.326dy.c...
  • luyaoda1202
  • luyaoda1202
  • 2015年10月06日 10:38
  • 743

我就是要用MD5!不用不行!那么,怎么防止被拖库后泄露用户密码?

写在开头 最近(2015年10月20日前后)某邮箱系统被曝“泄露”了上亿用户数据,包括密码、密保问题等。无论是确有安全漏洞导致被“拖库”,还是有心人利用“撞库”的方法获得的用户数据,从留出的数据来看,...
  • accenturejack
  • accenturejack
  • 2015年10月22日 12:09
  • 1013

记录一次大规模linux系统root密码撞库的经历

在某公司做了一个项目,查找公司几十万台主机的root密码是否是弱密码。 该过程涉及到任务下发,数据处理和上报等过程,这里不介绍其他模块,只介绍收集部分。 一、怎么判断linux主机密码是否...
  • cyyhjh
  • cyyhjh
  • 2016年08月31日 10:48
  • 466

密码库

生成密码库可以查询密码使用最多的字符串: 思路:从文本文件中提取密码字符串,保存在链表中,链表有密码字段和密码出现次数的字段,当有新的密码出现就开辟一个新的空间,如果出现的密码在链表字段中,就把相应...
  • liuguangsh
  • liuguangsh
  • 2016年08月25日 15:10
  • 461

面试记录(三)

昨天收到了招行的电话面试记录一下 一.数据结构中的归并排序原理是什么,时间复杂度是多少 归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k...
  • w99shuzhi
  • w99shuzhi
  • 2016年09月24日 09:50
  • 113

验证码暴破、撞库

解决思路: 1、每次产生的验证码都做及时清除缓存 2、用户密码做MD5处理 3、用户登录次数限制@ResponseBody @RequestMapping(value = "/login...
  • wangdan199112
  • wangdan199112
  • 2016年10月24日 15:31
  • 763

密码社工库

撞库
  • xiaogazhang
  • xiaogazhang
  • 2015年07月06日 13:46
  • 2272

Python模块

模块的本质模块的本质就是一个.py 文件。 导入和调用模块:import module_name >>> module_name.method(args) python中有三种模块: 1. 内...
  • Ayhan_huang
  • Ayhan_huang
  • 2017年06月21日 14:38
  • 209

拖库与撞库

所谓“拖库”就是网站的用户数据被人用SQL注入或者其它手段盗取,得到了这个网站的用户名、密码信息。...
  • CHS007chs
  • CHS007chs
  • 2014年11月22日 20:12
  • 878

机器人的洪流:刷库、撞库那些事儿

面对社会上层出不穷的诈骗新闻,我们可以发现骗子们诈骗成功的一个关键是:骗子们知道你叫什么、住在哪里、买了什么东西、花了多少钱。这些信息骗子们是从哪里得来的呢?...
  • AliMobileSecurity
  • AliMobileSecurity
  • 2016年08月31日 16:38
  • 1745
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:记录一次大规模linux系统root密码撞库的经历
举报原因:
原因补充:

(最多只允许输入30个字)