密码存储的基本方法

  1. 明文存储:将用户密钥以普通文本的方式保存在数据库字段中,对用户来说很方便,但这种方法的安全性最低,因为所有的密钥保存为普通文本(明文),如果数据库受到黑客攻击(被"脱库”),黑客将很容易获得用户的密钥。
  2. 加密存储: -般常用的是对称加密方法,该方法使用系统密钥对所有用户密钥进行加密。这种方法的关键在于系统密钥的安全性,如果系统密钥泄露,所有用户的密钥将变得不安全。
  3. Hash存储:利用单项散列(杂凑)函数对用户密钥进行运算得到Hash值(指纹)并存储在数据库中。与第二种方法相比,这种方法的好处是不需要存储和保护系统密钥,且攻击者无法通过Hash值逆向计算出用户密钥的明文。

因此,目前最常用的密码存储方法为Hash存储

Hash函数H(x)的特性

  • 固定长度的输出:函数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)在计算.上是不可行的。

常用的Hash函数(算法)

  • MD5
  • SHA系列(主要包括SHA-1、SHA-224、 SHA-256、 SHA-384和SHA-512)

密码攻击的概念

在已经获取目标密钥Hash值或加密后的密文的情形下,利用某种方式还原出目标密钥的明文过程。

密码攻击的一般方法

1、暴力攻击(Brute Force Attack)

  • 尝试对所有可能的密钥组合进行相同的Hash运算,并将计算结果与目标密钥的Hash值进行比对,比对结果一致则破解成功。
  • 特点:时间成本高。

2、字典攻击(Dictionary Attack)

  • 提前构建一一个“明文->密文”对应关系的一个大型数据库(字典),破解时通过密文直接反查明文。
  • 特点:存储一个这样的数据库(字典),空间成本高。

3、彩虹表攻击(Rainbow Table Attack)

  • 特点:在字典法的基础上改进,以时间换空间。
  • 常用的彩虹表: http://project-rainbowcrack.com/table.htm

用于抵抗字典及彩虹表攻击的方法一一哈希加盐法 (HASH+SALT)

  • 字典和彩虹表的方式之所以有效,是因为每一个密钥的都是通过同样的方式来进行Hash运算的。如果两个用户使用同样的密钥,那么他们的密钥Hash值也一定相同。
  • 哈希加盐法的思想是:每次给密钥加一个随机的前缀或后缀,然后再进行Hash运算。这个随机的后缀或者前缀称为“盐”(salt) 。通过加盐,相同的密钥每次Hash的结果都是完全不一样的字符串。

Hashcat简介

  • Hashcat适用于Linux、OS X和Windows等操作系统,支持多种计算核心(包括CPU、GPU、APU、DSP、 FPGA等)。
  • Hashcat支持的散列算法有Microsoft LM哈希、MD4、MD5、 SHA系列、Unix加密格式、MySQL和Cisco PIX等。

在Kali中启动Hashcat

Hashcat常用参数

命令 功能
-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 使用自定义破解规则

Hashcat的破解模式(用-a参数指定)

命令 功能
-a 0 Straight (字典破解)
-a 1 Combination (组合破解)
-a 3 Brute-force (掩码暴力破解)
-a 6 Hybrid Wordlist + Mask (字典 +掩码破解)
-a 7 Hybrid Mask + Wordlist (掩码+字典破解)

Hashcat的Hash类型(用-m参数指定)

命令 类型
-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

Hashcat的掩码字符集

命令 功能
?l 小写字母(abcdefghijklmnopqrstuvwxyz)
?u 大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)
?d 十进制数字(0123456789)
?h 十六进制数字,字母小写(0123456789abcdef)
?H 十六进制数字,字母大写(0123456789ABCDEF)
?s 特殊字符(!" #$%& '()*+.-./:;<=>?@[\]^_’{|}~)
?a 相当于?I?u?d?s,即键盘上所有可见的字符
?b 0x00 - 0xff

Hashcat掩码运用实例

八位数字密码 ?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

Hashcat使用实例——字典破解(-a 0)

使用单个字典对一个经过MD5算法运算过后的Hash值进行破解:

hashcat -a0 -m 0 e10adc3949ba59abbe56e057f20f883e /usr/share/john/password.lst 

  Hashcat使用实例掩码暴力破解(-a 3)

步骤1:利用漏洞ms17 010攻击靶机并进入meterpreter模块

详细教程在渗透测试工具——Metasploit_.SYS.的博客-CSDN博客

步骤2:在meterpreter提示符中输入以下命令获取系统账号密码的Hash值

hashdump

 步骤7:连续输入两次exit退出meterpreter和msf, 在终端下输入以下命令,利用Hashcat对获取的Hash值进行暴力破解:

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。

使用Hashcat进行密码攻击的关键

  • 选择或构造一本强大的字典
  • 了解目标的Hash类型(算法)

Hydra的使用

  • Hydra (九头蛇)是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解,如FTP、HTTP、HTTPS、 MySQL、 MS SQL、Oracle、Cisco、IMAP和VNC等。
  • Hydra能够在Linux、Windows、 Cygwin、 Solaris11、 FreeBSD8.1. OpenBSD、OSX、QNX/Blackberry- 上测试和编译。

Kali中的Hydra

Hydra常用功能选项(参数)说明

-h:显示帮助信息

选项 功能
-I 指定单个用户名,适合在知道用户名的情况下爆破密码时使用
-L 指定多个用户名,参数值为存储用户名的文件(字典)的路径(建议为绝对路径)
-p 指定单个密码,适合在知道密码的情况下爆破用户名时使用
-P 指定多个密码,参数值为存储密码的文件(字典)的路径(建议为绝对路径)
-C 当用户名和密码存储到一一个文件时使用此参数。注意:文件(字典)存储的格式必须为"用户名:密码”的格式
-M 指定多个攻击目标,此参数为存储攻击目标的文件路径(建议为绝对路径)。注意:列表文件存储格式必须为" 地址:端口”
-S 指定端口,适用于攻击目标端口非默认的情况,例如http服务使用非80端口
-t 指定爆破时的任务数量(可以理解为线程数),默认为16
v/-V 显示爆破的详细信息
-o 将破解成功的结果输出到文件中

Hydra支持破解的协议类型

  • POP3
  • SMB
  • RDP
  • SSH
  • FTP
  • Telnet
  • MYSQL

利用Hydra进行密码攻击的一般步骤

  1. 选择目标:输入目标地址,可选:单独IP、CIDR、 文档中的列表
  2. 选择协议:输入需要爆破的协议,如ftp://等,需要开始之前探测服务
  3. 检查参数:假如爆破需要加入额外的参数则添加即可

Hydra使用实例——爆破FTP服务器登录密码 (已知用户名)

hydra -l admin -P /usr/share/john/password.lst  ftp://192.168.147.132

Hydra使用实例——爆破FTP服务器的用户名和密码

hydra -L /usr/share/wordlists/rockyou.txt.gz  -P /usr/share/john/password.lst  ftp://192.168.147.132

Hydra使用实例——爆破远程桌面服务的用户名和密码

hydra -L /root/password.txt -P /root/password.txt rdp://192.168.147.132 

图形化的Hydra——Hydra-gtk

Crunch的使用

  • Crunch是-种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。
  • 使用Crunch工具生成的密码可以输出到屏幕,保存到文件或另一个程序。
  • Kali中自带crunch工具,可直接在Kali中使用。

Kali中的Crunch

Crunch命令格式

crunch <min-len> < max-len> [<charset string>] [options]

命令参数说明

参数 功能
min-len (必选) 字符串的最小长度
max-len (必选) 字符串的最大长度
charset string (可选) 字符集设置,默认是小写字符集
options (可选) 选项参数

Crunch常用选项参数

选项 功能
-b 指定文件输出的大小,避免字典文件过大
-C 指定文件输出的行数,即包含密码的个数
-d 限制相同元素出现的次数
-e 定义停止字符,即到该字符串就停止生成
-i 改变输出格式,即aaa,aab -> aaa,baa
-o 将密码保存到指定文件
-p 指定元素以组合的方式进行
-q 读取密码文件,即读取pass.txt
-s 指定起始字符串
-t

指定密码输出的格式

%代表数字
^代表特殊符号.
@代表小写字符
,代表大写字符

-f 调用库文件 /usr/share/crunch/charset.Ist

Crunch使用实例

生成长度为6、以123元素为组合的字典集,并输出到/root/number.txt

crunch 6 6 123 -o /root/number.txt

生成长度为4的字典集,第一位为数字,第二位为特殊字符,第三位是小写字符第四位是大写字符,并输出到/root/pass. txt

crunch 4 4 -t %^@, -o /root/pass.txt

以charset.Ist密码库的mixalpha-numeric模块为字符集,以3a2b为开始字符,生成长度为4的字典集,输出到/root/w.txt

crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric -o /root/w.txt -s 3a2b

渗透测试工具——密码攻击工具相关推荐

  1. 【渗透测试】密码爆破工具——九头蛇(hydra)使用详解及实战

    九头蛇hydra 记得美国队长中的大反派hydra(九头蛇)组织吗? 今天介绍的这款渗透测试工具,也叫这个名字.​ hydra是著名组织thc的一款开源的暴力破解密码工具,功能非常强大 kali下是默 ...

  2. 渗透测试培训必会工具xray扫描器反连平台的使用(三)

    渗透测试培训必会工具xray扫描器的使用(一) 渗透测试培训必会工具xray扫描器被动扫描的使用(二) xray反连平台常用于解决没有回显的漏洞探测的情况,最常见的应该属于 ssrf 和 存储型xss ...

  3. 渗透测试培训必会工具xray扫描器被动扫描的使用(二)

    渗透测试培训必会工具xray扫描器的使用(一) 承接上篇,这次我们讲解被动扫描. 本例我们使用kalilinux,以及kali下的burpsuite结合来使用. 首先执行命令: ./xray_linu ...

  4. Kali渗透测试:拒绝服务攻击

    Kali渗透测试:拒绝服务攻击 故意占用某一系统对外服务的有限资源,从而导致其无法正常工作的行为就是拒绝服务攻击.拒绝服务攻击是指攻击者想办法让目标停止提供服务,是黑客常用的攻击手段之一.其实对网络带 ...

  5. 【渗透测试】密码暴力破解工具——九头蛇(hydra)使用详解及实战

    目录 九头蛇hydra 使用方法 案例分析 暴破ssh登录密码 环境介绍 开始爆破 破解成功 测试登录 各种协议破解汇总 FTP协议破解 http协议破解 https协议破解 路由器破解 http-p ...

  6. 适用于渗透测试不同阶段的工具收集整理

    Red Teaming / Adversary Simulation Toolkit 内容 侦察 武器化 交货 命令与控制 横向运动 建立立足点 升级特权 数据泄露 杂项 参考 侦察 主动情报收集 E ...

  7. 适用于渗透测试不同阶段的工具收集整理(转载)

    Red Teaming / Adversary Simulation Toolkit 该资源清单列表涵盖了一系列,适用于渗透测试不同阶段的开源/商业工具.如果你想为此列表添加贡献,欢迎你向我发送pul ...

  8. 雪峰磁针石博客]渗透测试简介2入侵工具

    本书目录 入侵工具 黑客工具是计算机程序和脚本,可帮助您查找和利用计算机系统,Web应用程序,服务器和网络中的弱点. 在此列表中,我们重点介绍了Web应用程序,服务器和网络的道德黑客攻击的前20个工具 ...

  9. 渗透测试ctf软件黑客工具(第一)

    名 称        版             描     述                      主  页 0trace        1.5        跳跃枚举工具        ht ...

  10. 渗透测试kali Linux常用工具

    kali Linux工具帮你评估 Web 服务器的安全性,并帮助你执行黑客渗透测试. 注意:这里不是所提及的所有工具都是开源的. Nmap 1621507756_60a63eac521c0abeb99 ...

最新文章

  1. Python数据挖掘:数据转换-数据规范化
  2. # POJ-1979(BFS)
  3. 与金山云的樊博士聊了聊AV1算法优化以及如何提升沉浸式视频的沉浸感
  4. 全国计算机等级考试题库二级C操作题100套(第28套)
  5. python编写自定义函数判断n1-n2范围内的素数_【每日道代码题001】- PYTHON基础复习...
  6. C语言开定时器做呼吸灯程序,单片机制作呼吸灯的C语言程序怎么样编写
  7. Spring Boot内嵌Tomcat原理
  8. matlab 矩阵规定化,Matlab实现直方图规定化
  9. 中国第一程序员求伯君,WPS之父,雷军也佩服的人
  10. 【绝对原创】EFS加密文件真的可以解密!各位不要放弃哈~
  11. 如何才能成为一名优秀的设计师?
  12. Tensorflow2.0 实现 YOLOv3(二):网络结构(common.py + backbone.py)
  13. Windows让Tomcat以Apr的方式运行
  14. 如何重新设置苹果id密码_ios游戏apple账号分享韩国苹果id密码大全
  15. springBoot使用redis获取自增序号
  16. 近级压降和电弧产生原因
  17. windows ,linux 漏洞集
  18. 弘辽科技:新手卖家如何制作高点击率主图
  19. 第四章 舞会上的国王
  20. 智能物联网有哪些应用场景?_串口WiFi模块,蓝牙模块,WiFi+蓝牙组合模块

热门文章

  1. 计算机留言板毕业论文摘要,留言板系统设计(毕业论文)
  2. TensorRT 进阶用法
  3. XP系统装python
  4. android poi导出excel,解决java poi导出excel2003不能超过65536行的问题
  5. TensorFlow开发者证书 中文手册
  6. 如何安装uclient_UClient软件下载-UClient客户端下载 v2.0.0.1580官方版--pc6下载站
  7. ARM 与 STM32 的关系
  8. java开发按键精灵_一个使用JAVA编写的类似按键精灵的程序
  9. 入门必学 | R语言常见的报错指南
  10. tp5 mysql 使用ignore_tp5数据库配置操作