本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的《Kali Linux 渗透测试》课程

Kali Linux渗透测试(苑房弘)博客记录

1. 密码破解简介


1. 思路

  1. 目标系统实施了强安全措施

    • 安装了所有补丁
    • 无任何已知漏洞
    • 无应用层漏洞
    • 攻击面最小化
  2. 社会工程学

  3. 获取目标系统用户身份

    • 非授权用户不受信,认证用户可以访问守信资源
    • 已知用户账号权限首先,需要提权
    • 不会触发系统报警

2. 身份认证方法

  1. 证明你是你声称你是的那个人

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

3. 密码破解方法

  1. 人工猜解

    • 垃圾桶工具
    • 被动信息收集
  2. 基于字典暴力破解(主流)

  3. 键盘空间字符爆破
  4. 字典

    • 保存有用户名和密码的文本文件
    • /usr/share/wordlist
    • /usr/share/wfuzz/wordlist
    • /usr/share/seclists

4. 字典

1. 简介

  1. 键盘空间字符爆破

    • 全键盘空间字符
    • 部分键盘空间字符(基于规则)
    • 数字、小写字母、大写字符、符号、空格、瑞典字符、高位 ASCII 码

2. crunch 创建密码字典

  1. crunch [] [options]

    • -b 按大小分割文件(kb/kib、mb/mib、gb/gib)
    • -c 每个字典的行数
    • 以上两个参数必须与 -o START 结合使用
    • -d 同一字符连贯出现数量(11/aaa)

      root@kali:~# crunch 6 6 0123456789 -o START -d 2 -b 100mb
      root@kali:~# crunch 6 6 0123456789 -o START -d 2 -c 100
      
  2. 字符集

    • crunch 4 4 -f /usr/share/crunch/charset.lst lalpha-sv -o 1.txt

      root@kali:~# file /usr/share/crunch/charset.lst
      root@kali:/usr/share/crunch# crunch 4 4 -f /usr/share/crunch/charset.lst lalpha-sv -o 1.txt
      root@kali:/usr/share/crunch# ll -h 1.txt
      -rw-r--r-- 1 root root 3.7M 4月   4 06:52 1.txt
      
  3. 无重复字符

    crunch 1 1 -p 1234567890 | more
    
    • 必须是最后一个参数
    • 最大、最小字符长度失效,但必须存在
    • 与 -s 参数不兼容(-s 指定起始字符串)
    • crunch 4 4 0123456789 -s 9990
  4. 读取文件中每行内容作为基本字符生成字典

    crunch 1 1 -q read.txt
    

  5. 字典组成规则

    • crunch 6 6 -t @,%%^^ | more
    • -t:按位进行生成密码字典
    • @:小写字母 lalpha
    • ,:大写字母 ualpha
    • %:数字 numeric
    • ^:符号 symbols
  6. 输出文件压缩

    root@kali:~# crunch 4 5 -p dog cat bird
    

    • -z:指定压缩格式
    • 其他压缩格式:gzip、bzip2、lzma
    • 7z压缩比率最大
  7. 指定字符集

    root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab
    
  8. 随机组合

    root@kali:~# crunch 4 5 -p dog cat bird
    

  9. crunch 5 5 abc DEF + !@# -t ,@^%,

    • 在小写字符中使用abc范围,大写字符使用 DEF 范围,数字使用占位符,符号使用!@#
      • 占位符
    • \ 转义符(空格、符号)
  10. 占位符

    root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird
    
    • 任何不同于 -p 参数指定的值都是占位符
  11. 指定特例

    root@kali:~# crunch 5 5 -d 2@ -t @@@%%
    
    • 2@:不超过两个连续相同字符
  12. 组合应用

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

3. CUPP 按个人信息生成其专属的密码字典

  1. CUPP:Common User Password Profiler

    • git clone https://github.com/Mebus/cupp.git
    • python cupp.py -i

4. cewl 通过收集网站信息生成字典

  1. cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt

    • -m:最小单词长度
    • -d:爬网深度
    • -e:收集包含email地址信息
    • -c:每个单词出现次数
    • 支持基本、摘要 身份认证
    • 支持代理

5. 用户密码变型

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

6. 使用 John the Ripper 配置文件实现密码动态变型

  1. /etc/john/john.conf

    • [List.Rules:Wordlist]

      • [0−9][0-9][0-9]$[0-9]

        john --wordlist=cewl.txt --rules --stdout > m.txt
        
    • [List.Rules:test]

      • [0−9][0-9][0-9][0−9][0-9][a-zA-Z]
      • [0−9][0-9][0-9][0−9][0-9][a-zA-Z][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
        

2. 在线密码破解


1. hydra

  1. 简介

    root@kali:~# hydra -hh
    Options:-R        restore a previous aborted/crashed session-I        ignore an existing restore file (don't wait 10 seconds)-S        perform an SSL connect-s PORT   if the service is on a different default port, define it here-l LOGIN or -L FILE  login with LOGIN name, or load several logins from FILE-p PASS  or -P FILE  try password PASS, or load several passwords from FILE-x MIN:MAX:CHARSET  password bruteforce generation, type "-x -h" to get help-y        disable use of symbols in bruteforce, see above-e nsr    try "n" null password, "s" login as pass and/or "r" reversed login-u        loop around users, not passwords (effective! implied with -x)-C FILE   colon separated "login:pass" format, instead of -L/-P options-M FILE   list of servers to attack, one entry per line, ':' to specify port-o FILE   write found login/password pairs to FILE instead of stdout-b FORMAT specify the format for the -o FILE: text(default), json, jsonv1-f / -F   exit when a login/pass pair is found (-M: -f per host, -F global)-t TASKS  run TASKS number of connects in parallel per target (default: 16)-T TASKS  run TASKS connects in parallel overall (for -M, default: 64)-w / -W TIME  wait time for a response (32) / between connects per thread (0)-c TIME   wait time per login attempt over all threads (enforces -t 1)-4 / -6   use IPv4 (default) / IPv6 addresses (put always in [] also in -M)-v / -V / -d  verbose mode / show login+pass for each attempt / debug mode -O        use old SSL v2 and v3-q        do not print messages about connection errors-U        service module usage details-h        more command line options (COMPLETE HELP)server    the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)service   the service to crack (see below for supported protocols)OPT       some service modules support additional input (-U for module help)
    Use HYDRA_PROXY_HTTP or HYDRA_PROXY environment variables for a proxy setup.
    E.g. % export HYDRA_PROXY=socks5://l:p@127.0.0.1:9150 (or: socks4:// connect://)% export HYDRA_PROXY=connect_and_socks_proxylist.txt  (up to 64 entries)% export HYDRA_PROXY_HTTP=http://login:pass@proxy:8080% export HYDRA_PROXY_HTTP=proxylist.txt  (up to 64 entries)Examples:hydra -l user -P passlist.txt ftp://192.168.0.1hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAINhydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5hydra -l admin -p password ftp://[192.168.0.0/24]/hydra -L logins.txt -P pws.txt -M targets.txt ssh
    
  2. 密码破解

    • Windows 密码破解

      hydra -l administrator -P pass.lst smb://1.1.1.1/admin$ -vVd
      

      # rdp 协议不稳定,容易漏判
      hydra -l administrator -P pass.lst rdp://1.1.1.1 -t 1 -vV
      
    • Linux 密码破解

      hydra -l root -P pass.txt ssh://10.10.10.132 -vV
      

    • 其他服务密码破解

      • hydra -L user.lst -P pass.lst ftp://1.1.1.1 -s 2121 -e nsr -o p.txt -t 64 -vV
    • 图形化界面

      • xhydra
  3. HTTP表单身份认证

    hydra -l admin -P pass.lst 1.1.1.1 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=L in: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=L in: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连接
  4. 密码破解效率

    • 密码复杂度(字典命中率)
    • 带宽、协议、服务器性能、客户端性能
    • 锁定阈值
    • 单位时间最大登陆请求次数
  5. Hydra 的缺点

    • 稳定性差,程序时常崩溃
    • 速度控制不好,容易触发服务屏蔽或锁死机制
    • 每主机新建进程,每服务新建实例
    • 大量目标破解时性能差

2. pw-inspector

  1. Hydra 小工具 pw-inspector

    • 按长度和字符集筛选字典
    • pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l
    • pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u
    • pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5

3. medusa

  1. Medusa 的特点

    • 稳定性好
    • 速度控制得当
    • 基于线程
    • 支持模块少于hydra(不支持RDP)
    • WEB-Form 支持存在缺陷
  2. 查看支持的模块

    root@kali:~# medusa -d
    

  3. 破解windows密码

    # -M 指定模块名,使用 -d 可以查询
    root@kali:~# medusa -M smbnt -h 10.10.10.137 -u kevin -P pass.txt -e ns -F
    

  4. 破解Linux SSH密码

    # 使用 ssh 模块
    root@kali:~# medusa -M ssh -h 10.10.10.132 -u root -P pass.txt -e ns –F
    

  5. 其他服务密码破解

    root@kali:~# medusa -M mysql -h 10.10.10.132 -u root -P pass.txt -e ns -F
    

    # 查看模块用法
    root@kali:~# medusa -M web-form -q
    

    # 表单身份认证
    root@kali:~# 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"
    
  6. 参数

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

3. 离线密码破解


1. 简介

  1. 身份认证

    • 禁止明文传输密码
    • 每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
    • 服务器端用户数据库应加盐加密保存
  2. 破解思路

    • 嗅探获取密码HASH
    • 利用漏洞登陆服务器并从用户数据库获取密码HASH
    • 识别HASH类型
  3. 长度、字符集

    • 利用离线破解工具碰撞密码HASH
  4. 优势

    • 离线不会触发密码锁定机制
    • 不会产生大量登陆失败日志引起管理员注意

2. HASH 识别工具

1. hash-identifier

  1. 进行 hash 计算

    结果:5f4dcc3b5aa765d61d8327deb882cf99

  2. 进行 hash 识别

2. hashid

  1. 可能识别错误或无法识别

3. HASH 密码获取

1. samdump2

  1. Windows HASH 获取工具

    • 利用漏洞:Pwdump、fgdump、 mimikatz、wce
    • 物理接触:samdump2

      • 将待攻击主机关机
      • 使用 Kali ISO 在线启动此主机
      • 发现此 windows 机器安装有两块硬盘
    • mount /dev/sda1 /mnt

      • 将硬盘挂载
    • cd /mnt/Windows/System32/config

      • 切换目录
    • samdump2 SYSTEM SAM -o sam.hash

      • 导出密码
    • 利用 nc 传输 HASH

      HASH 值:31d6cfe0d16ae931b73c59d7e0c089c0

2. syskey 工具进行密码加密

  1. 使用 syskey 进行加密(会对 SAM 数据库进行加密)

  2. 重启需要输入密码才能进一步登录

  3. 使用 kali iso live

    • 获取到 hash 值
    • hashcat 很难破解
  4. 使用 bkhive 破解

    • 使用 Bootkey 利用RC4算法加密 SAM 数据库
    • Bootkey 保存于 SYSTEM 文件中
    • bkhive

      • 从 SYSTEM 文件中提取 bootkey
      • Kali 2.0 抛弃了 bkhive
      • 编译安装 :http://http.us.debian.org/debian/pool/main/b/bkhive/
      • 在windows的 kali live 模式下,运行

        root@kali:/mnt/Windows/System32/config# bkhive SYSTEM key.txt
        root@kali:/mnt/Windows/System32/config# cat key.txt
        
      • samdump2 SAM key (版本已更新,不再支持此功能)

    • 建议使用 Kali 1.x

1. Hashcat

  1. 简介

    • 开源多线程密码破解工具
    • 支持80多种加密算法破解
    • 基于CPU的计算能力破解
    • 六种模式 (-a 0)

      • 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.txt 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
  2. 使用

    1. 生成文件

      root@kali:~# echo 31d6cfe0d16ae931b73c59d7e0c089c0 > hash.txt
      
    2. 计算 hash 类型

      root@kali:~# hash-identifier
      

      结果 MD5

    3. 查看 MD5 代表的值

    4. 进行破解

      root@kali:~# hashcat -m 0 hash.txt pass.txt
      

2. oclhashcat

  1. 简介

    • 号称世界上最快、唯一的基于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

3. RainbowCrack

  1. 简介

    • 基于时间记忆权衡技术生成彩虹表
    • 提前计算密码的HASH值,通过比对HASH值破解密码
    • 计算HASH的速度很慢,修改版支持CUDA GPU
      • https://www.freerainbowtables.com/en/download/
    • 彩虹表
      • 密码明文、HASH值、HASH算法、字符集、明文长度范围
  2. KALI 中包含的 RainbowCrack 工具

    • rtgen:预计算,生成彩虹表,时的阶段
    • rtsort:对 rtgen 生成的彩虹表行排序
    • rcrack:查找彩虹表破解密码
    • 以上命令必须顺序使用

    • rtgen

      • LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、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

4. John

  1. 简介

    • 基于 CPU
    • 支持众多服务应用的加密破解

      root@kali:~# john --list=formats
      
    • 支持某些对称加密算法破解

    • 模式

      • Wordlist:基于规则的字典破解
      • Single crack:默认被首先执行,使用Login/GECOS信息尝试破解
      • Incremental:所有或指定字符集的暴力破解
      • External:需要在主配配文件中用C语言子集编程
    • 默认破解模式

      • Single、wordlist、incremental
      • 主配置文件中指定默认wordlist
  2. 破解Linux系统账号密码

    root@kali:~# unshadow /etc/passwd /etc/shadow > pass.txt
    root@kali:~# john pass.txt
    root@kali:~# john --show pass
    
  3. 破解windows密码

    root@kali:~# john hash.txt --wordlist=/usr/share/john/password.lst --format=nt
    root@kali:~# john sam.dump --format=nt --show
    
  4. Johnny 图形化界面的john

5. ophcrack

  1. 简介

    • 基于彩虹表的LM、NTLM密码破解软件
    • 彩虹表:http://ophcrack.sourceforge.net/tables.php

Kali Linux渗透测试 106 离线密码破解相关推荐

  1. Kali Linux 渗透测试 博客记录

    本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的<Kali Linux 渗透测试>课程 文章为长时间连载,内容具有连续性,禁止转载! --- ...

  2. Kali Linux渗透测试——密码破解

    笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程 当目标系统无任何已知漏洞时,可以考虑社会工程学或者获取目标系统的用户身份,通过合法账户登录绕过系统的安全防线.账户登录身份认证包括账 ...

  3. 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试

    Kali Linux渗透测试全程课与脚本语言编程系列课程 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥899.00 立即订 ...

  4. KALI LINUX渗透测试学习笔记

    KALI LINUX渗透测试学习笔记 (苑房弘主讲) 第1章 课程介绍 任务1:Kali Linux渗透测试介绍.exe 安全问题的根源: 分层思想 只求功能实现 最大的威胁是人 渗透测试: 尝试挫败 ...

  5. Kali Linux渗透测试 093 自动注入-Sqlmap

    本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的<Kali Linux 渗透测试>课程 Kali Linux渗透测试(苑房弘)博客记录 1. ...

  6. 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试

    Kali Linux渗透测试基础入门到进阶实战全程课 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥499.00 立即订阅 ...

  7. 【Kali Linux 渗透测试】学习笔记

    Kali Linux 渗透测试 文章目录 Kali Linux 渗透测试 介绍 一. 渗透测试标准 二. 安装 三. 定制 网络配置 更新升级 安裝软件包 并发线程限制 电源优化 快捷键 四. 试验环 ...

  8. Kali Linux渗透测试——无线渗透

    笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程,以及文章: https://blog.csdn.net/qq_38265137/article/details/80370554 h ...

  9. Kali Linux渗透测试——WEB渗透(一)

    笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程 文章目录 扫描工具 1.HTTrack 2.Nikto 3.Vega 4.OWASP ZAP 5.Burp Suite 6.AWVS ...

最新文章

  1. spring-ioc-xml
  2. reactivecocoa button的几种点击方式
  3. Xap packaging failed , Object reference not set to an instance of an object.
  4. node 实现Token状态登录 及数据库增删改查
  5. Ubuntu 20.04 搜索引擎环境搭建 (PostgreSQL 12.3, Redis 6, ELK[Elasticsearch 7.8, Logstash 7.8, Kibana 7.8])
  6. 编辑距离—leetcode72
  7. mongodb java driver 聚合框架
  8. Java网络编程从入门到精通(21):HTTP消息的格式
  9. mysql初始化错误【一】Can't find error-message file '/usr/local/mysql/errmsg.sys'
  10. PageHelper分页插件源码及原理剖析
  11. oracle查询注意点,oracle查询相关注意点
  12. EL表达式和JSTL介绍
  13. java webservice 实例_Java WebService 简单实例(附实例代码)
  14. w10需要计算机管理员才能删除,如何解决删除文件需要管理员权限win10_win10你需要提供管理员权限才能删除的解决方法...
  15. 在 Java 应用程序中访问USB设备
  16. Latex系列[2]--公式中的字体
  17. 二叉树层次遍历(自下而上)
  18. 技术解析 | 云游戏在未来如何实现?
  19. apache ii评分怎么评_APACHEII评分说明
  20. 【报错】zipimport.ZipImportError: can‘t decompress data; zlib not available

热门文章

  1. 视频文件损坏如何修复
  2. 信息学院计算机相关专业本科生简历写作技巧
  3. 对广域网和局域网区别的了解与认识报告
  4. 多级放大电路具体学习
  5. 童诗白模电--多级放大电路
  6. 易康ecognition中如何导出分好类的TIF 文件
  7. 如何从下载 UCSC 的 blat 等工具
  8. 操作Python日期的常见用法
  9. 电子证件照怎么换背景?怎样修改证件照底色?
  10. php rce,批量thinkphp5的RCE漏洞利用