0%

THM学习日寄16-password attack

  • 简介

    看看远处的常用100密码吧

    注意破解 Cracking 和猜解 guessing 的区别,前者是破解加密的密码,后者则是暴力枚举登录

  • 1-默认密码、弱密码、已泄露密码、组合单词列表和用户名单词列表

  • 2- crunch 生成密码本与 CUPP 通用用户密码分析器

    • crunch

      已经在 kali 自带了,格式为:

      1
      crunch [min] [max] [可出现的字符] -o [输出的文件名]

      更加进阶一点的使用:

      -t :指定字符集以组合得到密码本,其关键词如下:

      @ 表示小写字母,, 表示大写字母,% 表示数字,^ 表示包括空格在内的特殊字符

      比如知道密码的一部分和剩下一部分的规则时:

      1
      crunch 8 8 -t "pass@@%%"

      表示以 pass 为开头,后跟两个小写字母,再跟两个数字的全部密码

    • CUPP

      可以利用已知目标的详细信息来生成密码本

      这个其实没什么好说的,市面上能找到的挺多的,比如这个

      本地有个打不开了啊嗯

  • 离线密码攻击1-字典攻击和暴力破解

    对于拿到的 hash 值,可以通过 hashid 来判断其使用的加密算法

    随后用 hashcat 来爆破:

    1
    hashcat -a 0 -m 0 f806fc5a2a0d5ba2471600758452799c /usr/share/wordlists/rockyou.txt --show

    -a 0 指定攻击方式为字典攻击

    -m 0 指定 hash 的类型编号,$0$ 则为 md5 的编号

    当然也可以用 hashcat 生成密码本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    user@machine$ hashcat --help
    ? | Charset
    ===+=========
    l | abcdefghijklmnopqrstuvwxyz
    u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
    d | 0123456789
    h | 0123456789abcdef
    H | 0123456789ABCDEF
    s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    a | ?l?u?d?s
    b | 0x00 - 0xff
    1
    hashcat -a 3 ?d?d?d?d --stdout | > passwords.txt

    -a 3 指定攻击方式为暴力破解

    ?d 表示该位为数字

    假如爆破 pin 码,即四位数字,可以使用:

    1
    hashcat -a 3 -m 0 05A5CF06982BA7892ED2A6D38FE832D6 ?d?d?d?d
  • 离线密码攻击2-基于密码规则

    简单来说是生成符合某些策略的密码,比如基于 password 生成 p@ssword ,pa$$word

    这里使用 john the ripper 来扩展单词列表。通常使用里面的 best64 规则或者 koreLogic 来扩展

    1
    john --wordlist=/tmp/single-password-list.txt --rules=best64 --stdout | wc -l

    当然也可以自定义规则:比如想在每个密码开头加上特殊字符,并在末尾加上任意一位数字:

    1
    2
    3
    #密码规则的所在的行数是696行~ 1240行。
    [List.Rules:自定义的规则名]
    Az"[0-9]" ^[!@#$]
    • Az 获取每个原始密码
    • [0-9] 在末尾添加一个数字,如果添加两个就是 [0-9][0-9]
    • ^[!@#$] 在开头添加一个特殊字符,括号里是范围, ^ 表示单词开头, $ 表示结尾
  • 在线密码攻击-hydra

    • FTP

      1
      hydra -l ftp -P passlist.txt ftp://10.10.x.x
      • -l 用于指定用户名,而 -L 可以指定用户名列表
      • -P 指定密码本文件路径,-p 指定单个密码
    • SMTP

      1
      hydra -l email@company.xyz -P /path/to/wordlist.txt smtp://10.10.x.x -v
    • ssh

      1
      hydra -L users.lst -P /path/to/wordlist.txt ssh://10.10.x.x -v
    • HTTP 登录界面

      1
      hydra -l admin -P 500-worst-passwords.txt 10.10.x.x http-get-form "/login-get/index.php:username=^USER^&password=^PASS^:S=logout.php" -f
      • http-get-form / http-post-form
      • 随后是指定登陆页面路径,用 ^USER^ 匹配用户名,^PASS^ 指定密码本
      • S= 指定登陆成功条件, F= 指定登陆失败条件,比如失败后返回了 invalid password ,就可以使 F=invalid password
      • -f 找到合法用户名和密码后停止攻击
  • 密码喷洒

    即对于一个常见弱密码爆破用户名,以避免账户多次输入错误密码被锁定

    • ssh

      1
      hydra -L usernames-list.txt -p Spring2021 ssh://10.10.x.x
      • -L 即指定用户名列表,-p 指定单个密码