发布时间:2023-07-24 12:30
- 明文存储:将用户密钥以普通文本的方式保存在数据库字段中,对用户来说很方便,但这种方法的安全性最低,因为所有的密钥保存为普通文本(明文),如果数据库受到黑客攻击(被\"脱库”),黑客将很容易获得用户的密钥。
- 加密存储: -般常用的是对称加密方法,该方法使用系统密钥对所有用户密钥进行加密。这种方法的关键在于系统密钥的安全性,如果系统密钥泄露,所有用户的密钥将变得不安全。
- Hash存储:利用单项散列(杂凑)函数对用户密钥进行运算得到Hash值(指纹)并存储在数据库中。与第二种方法相比,这种方法的好处是不需要存储和保护系统密钥,且攻击者无法通过Hash值逆向计算出用户密钥的明文。
因此,目前最常用的密码存储方法为Hash存储
- 固定长度的输出:函数H(x)的输入可以是任意长度,而输出是固定长度。
- 单向性:已知x,求h=H(x)较为容易;但若已知h,求使得H(x)= h的x在计算上是不可行的。
- 弱碰撞自由性:已知x,找出y (y≠x)使得H(y)= H(x)在计算上是不可行的。
- 强碰撞自由性:找出任意两个不同的输入x、y,使得H(y)= H(x)在计算.上是不可行的。
- MD5
- SHA系列(主要包括SHA-1、SHA-224、 SHA-256、 SHA-384和SHA-512)
在已经获取目标密钥Hash值或加密后的密文的情形下,利用某种方式还原出目标密钥的明文过程。
- 尝试对所有可能的密钥组合进行相同的Hash运算,并将计算结果与目标密钥的Hash值进行比对,比对结果一致则破解成功。
- 特点:时间成本高。
- 提前构建一一个“明文->密文”对应关系的一个大型数据库(字典),破解时通过密文直接反查明文。
- 特点:存储一个这样的数据库(字典),空间成本高。
- 特点:在字典法的基础上改进,以时间换空间。
- 常用的彩虹表: http://project-rainbowcrack.com/table.htm
- 字典和彩虹表的方式之所以有效,是因为每一个密钥的都是通过同样的方式来进行Hash运算的。如果两个用户使用同样的密钥,那么他们的密钥Hash值也一定相同。
- 哈希加盐法的思想是:每次给密钥加一个随机的前缀或后缀,然后再进行Hash运算。这个随机的后缀或者前缀称为“盐”(salt) 。通过加盐,相同的密钥每次Hash的结果都是完全不一样的字符串。
- Hashcat适用于Linux、OS X和Windows等操作系统,支持多种计算核心(包括CPU、GPU、APU、DSP、 FPGA等)。
- Hashcat支持的散列算法有Microsoft LM哈希、MD4、MD5、 SHA系列、Unix加密格式、MySQL和Cisco PIX等。
命令 | 功能 |
---|---|
-a | 指定破解模式 |
-m | 指定Hash类型(默认MD5) |
-0 | 将输出结果储存到指定的文件 |
--force | 忽略警告信息 |
--show | 仅显示已经破解的Hash及其对应的明文 |
--increment | 启用增量破解模式,可以利用此模式让Hashcat在指定的密 码长度范围内执行破解过程 |
--increment-min | 密码最小长度, 配合increment模式一起使用 |
--increment-max | 密码最大长度,同上 |
--outfile-format | 指定破解结果的输出格式id,默认是3 |
--username | 忽略hash文件中的指定的用户名, 在破解linux系统用户密码hash可能会用到 |
--remove | 删除已被破解成功的hash |
-r | 使用自定义破解规则 |
命令 | 功能 |
---|---|
-a 0 | Straight (字典破解) |
-a 1 | Combination (组合破解) |
-a 3 | Brute-force (掩码暴力破解) |
-a 6 | Hybrid Wordlist + Mask (字典 +掩码破解) |
-a 7 | Hybrid Mask + Wordlist (掩码+字典破解) |
命令 | 类型 |
---|---|
-m 900 | MD4 |
-m 0 | MD5 |
-m 100 | SHA1 |
-m 1300 | SHA2-224 |
-m 1400 | SHA2-256 |
-m 10800 | SHA2-384 |
-m 1700 | SHA2-512 |
-m 10 | MD5($ pass.$salt) |
-m 20 | MD5($salt.$pass) |
-m 3800 | MD5($salt.$pass. $salt) |
-m 3000 | LM |
-m 1000 | NTLM |
命令 | 功能 |
---|---|
?l | 小写字母(abcdefghijklmnopqrstuvwxyz) |
?u | 大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ) |
?d | 十进制数字(0123456789) |
?h | 十六进制数字,字母小写(0123456789abcdef) |
?H | 十六进制数字,字母大写(0123456789ABCDEF) |
?s | 特殊字符(!\" #$%& \'()*+.-./:;<=>?@[\\]^_’{|}~) |
?a | 相当于?I?u?d?s,即键盘上所有可见的字符 |
?b | 0x00 - 0xff |
八位数字密码 | ?d?d?d?d?d?d?d?d |
八位未知密码 | ?a?a?a?a?a?a?a?a |
前四位为大写字母,后四位为数字 | ?u?u?u?u?d?d?d?d |
前三个字符末知,中间为admin,后三位未知 | ?a?a?aadmin?a?a?a |
6- 8位数字密码 | --increment --increment-min 6 --increment- max 8 ?|?I?I?I?I?I?I?| |
6-8位数字+小写字母密码 | --increment --increment-min 6 --increment- max 8 ?h?h?h?h?h?h?h?h |
使用单个字典对一个经过MD5算法运算过后的Hash值进行破解:
hashcat -a0 -m 0 e10adc3949ba59abbe56e057f20f883e /usr/share/john/password.lst
详细教程在渗透测试工具——Metasploit_.SYS.的博客-CSDN博客
步骤2:在meterpreter提示符中输入以下命令获取系统账号密码的Hash值
hashdump
hashcat -a 3 -m 1000 75f1d23f3a2527c6bfaada3e93b32a8b ?d?d?d
其中,-m 1000表示Hash类型为NTLM,掩码?d?d?d表示破解的对象为3位十进制数字。
- 若对已经破解的密码进行再次破解,则会显示\"All hashes found inpotfile\",可直接在原命令末尾加上--show参数直接显示已破解的原文。
- hashcat.potfile文件中记录 了近期Hashcat破解的所有Hash值和密码明文的对应关系,其所在路径为~/.hashcat/hashcat.potfile。
- 选择或构造一本强大的字典
- 了解目标的Hash类型(算法)
- Hydra (九头蛇)是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解,如FTP、HTTP、HTTPS、 MySQL、 MS SQL、Oracle、Cisco、IMAP和VNC等。
- Hydra能够在Linux、Windows、 Cygwin、 Solaris11、 FreeBSD8.1. OpenBSD、OSX、QNX/Blackberry- 上测试和编译。
-h:显示帮助信息
选项 | 功能 |
---|---|
-I | 指定单个用户名,适合在知道用户名的情况下爆破密码时使用 |
-L | 指定多个用户名,参数值为存储用户名的文件(字典)的路径(建议为绝对路径) |
-p | 指定单个密码,适合在知道密码的情况下爆破用户名时使用 |
-P | 指定多个密码,参数值为存储密码的文件(字典)的路径(建议为绝对路径) |
-C | 当用户名和密码存储到一一个文件时使用此参数。注意:文件(字典)存储的格式必须为\"用户名:密码”的格式 |
-M | 指定多个攻击目标,此参数为存储攻击目标的文件路径(建议为绝对路径)。注意:列表文件存储格式必须为\" 地址:端口” |
-S | 指定端口,适用于攻击目标端口非默认的情况,例如http服务使用非80端口 |
-t | 指定爆破时的任务数量(可以理解为线程数),默认为16 |
v/-V | 显示爆破的详细信息 |
-o | 将破解成功的结果输出到文件中 |
- POP3
- SMB
- RDP
- SSH
- FTP
- Telnet
- MYSQL
- 选择目标:输入目标地址,可选:单独IP、CIDR、 文档中的列表
- 选择协议:输入需要爆破的协议,如ftp://等,需要开始之前探测服务
- 检查参数:假如爆破需要加入额外的参数则添加即可
hydra -l admin -P /usr/share/john/password.lst ftp://192.168.147.132
hydra -L /usr/share/wordlists/rockyou.txt.gz -P /usr/share/john/password.lst ftp://192.168.147.132
hydra -L /root/password.txt -P /root/password.txt rdp://192.168.147.132
- Crunch是-种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。
- 使用Crunch工具生成的密码可以输出到屏幕,保存到文件或另一个程序。
- Kali中自带crunch工具,可直接在Kali中使用。
crunch < max-len> [] [options]
参数 | 功能 |
---|---|
min-len (必选) | 字符串的最小长度 |
max-len (必选) | 字符串的最大长度 |
charset string (可选) | 字符集设置,默认是小写字符集 |
options (可选) | 选项参数 |
选项 | 功能 |
---|---|
-b | 指定文件输出的大小,避免字典文件过大 |
-C | 指定文件输出的行数,即包含密码的个数 |
-d | 限制相同元素出现的次数 |
-e | 定义停止字符,即到该字符串就停止生成 |
-i | 改变输出格式,即aaa,aab -> aaa,baa |
-o | 将密码保存到指定文件 |
-p | 指定元素以组合的方式进行 |
-q | 读取密码文件,即读取pass.txt |
-s | 指定起始字符串 |
-t | 指定密码输出的格式 %代表数字 |
-f | 调用库文件 /usr/share/crunch/charset.Ist |
crunch 6 6 123 -o /root/number.txt
crunch 4 4 -t %^@, -o /root/pass.txt
crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric -o /root/w.txt -s 3a2b
论文笔记——Client Selection for Federated Learning with Heterogeneous Resources in Mobile Edge
github代码分析——PSO粒子群优化算法代码(python)
windows7 + Qt(MSVC2017) + VS2019安装配置
python使用pymysql操作MySQL错误代码1054和1064处理方式
【规划】Box2d::HasOverlap() 碰撞检测接口详解
Qt+CUDA+TensorRT:基于Qt+CUDA+TRT+WIN10的图像分类
微信小程序:王者改名微信小程序源码下载另一版本支持流量主收益
Python OpenCV Hough直线检测算法的原理实现
Simple-SR:Best-Buddy GANs for Highly Detailed Image Super-Resolution论文浅析