0x00 前言

一次测试的过程总会涉及到"密码"与"加解密".在踩点的过程中,对弱口令的尝试是必不可少的过程,从xx抓鸡到内网哈希批量传递,从个人PC到网络设备/工控设施,只要依旧采用单因素模式的密码认证,密码扫描就不会被遗忘.以下笔者简单分享总结安全测试中密码扫描与破解的技巧,如有疏漏错误,还望不吝赐教.

0x01 整理一份优秀的字典

想破解密码,要求我们已经"拥有"别人的密码.字典在口令扫描尝试过程中的重要性不言而喻.要整理一份优秀的字典,不妨参考各大网站泄漏数据库,将密码(明文)字段收集后,依出现频率先后生成字典.

一个demo脚本:

#!/bin/bash/python
import sys
from collections import Counterfile = open(sys.argv[1], 'r')
readlist = []
count_times = []
for line in file.readlines():line = line.strip('\r\n ')readlist.append(line)
sortlist = Counter(readlist).most_common()
for line in sortlist:print line[0]

img01

0x02 一手称心如意的工具集

欲善其事,须利其器.在密码枚举工具中,笔者比较推荐的工具List如下:

  • Hydra :在线各种服务账户密码猜解
  • Medusa : 类似Hydra
  • Patator : Python多协议破解工具
  • John the ripper : 离线破解哈希
  • Hashcat : GPU离线哈希破解
  • Burp Suite : 在线密码枚举
  • Rcracki : 离线彩虹表哈希破解
  • Ophcrack : 离线LMHash/NTHash破解
  • Hashid/HashTag : 哈希算法分析
  • Fcrackzip/Truecrack等特定文件密码破解工具
  • Metasploit : 各种辅助测试脚本
  • Cupp.py : 社工字典生成
  • ...

当然,根据特定需要(如加入各种伪装绕过检测),可能也需要我们自行编写相应脚本实现枚举账户的过程.

0x03 绕过检测

Web层有WAF,Service有IDS/IPS,很容易打草惊蛇.在测试前,先通过扫描等方式判断是否有相应的防护,并采取相应手段.Web层可能有验证码,可能有每秒IP连接数限制,可能通过Cookie/Header等信息判断行为是Human or Robot.在通过一系列测试后,(如何测试还是要自己探索的),采用最合理的针对方式绕过或尽量避免被检测而导致的阻挡枚举账户密码的脚步.

0x04 Web账户枚举

Web账户枚举是平日遇到较多的情况

  • EXP无果,某处又没有做严谨的验证码等防护,为枚举账户密码制造了可能性.
  • 发现前人留下的backdoor,苦于没有密码.
  • 撞库扫号.

常见的绕过验证的可能:

  • 页面无需刷新验证码无限次使用
  • 密码输入错误数次弹出验证码,但更换账号不会出现验证码
  • 修改Cookie或UA伪装逃避验证码
  • 可批量轮询使用代理枚举绕过

在Web枚举中,使用BurpSuite基本可以解决所有常见问题.工具相关文档资料也比较丰富.

开启代理,打开Intercept,登陆网页,输入用户密码,数据包拦截下来,选择Send to Intruder,进入攻击模块.

img02

其中四种模式:

img03

  • Sniper:只有一个payload,会将payload分别放在每个Fuzz点测试,默认选项,这也是新手发现Payload只能选择1的原因.

  • Battering Ram:只有一个payload,会将payload同时放在多个Fuzz点测试.

  • Pitchfork:多个payload,会将多个payload同一行同时放到相应Fuzz点测试.(适用扫号)

  • Cluster Bomb:多个payload,payload在其Fuzz点循环测试,直到尝试所有可能.(适用多账户枚举密码)

参考链接:http://www.digininja.org/blog/burp_intruder_types.php

选择好相应模式后,设置payload为runtime file,挂载字典文件.取消Payload Encoding.

如果发现网页有将用户的本地将密码计算MD5后提交,则需要在Payload Processing中添加计算MD5的过程

img04

设置好后也可添加正则匹配结果等等.之后可以Start attack了.

这个过程中,如果担心IP地址暴露,可以选择写一个这样一个脚本:

脚本本地监听某端口,并为每次枚举随机抽取代理IP,Burp中设置Proxy为本地脚本所监听端口即可.

0x05 HTTP基础认证

家用路由/Jboss等往往采用HTTP基础认证,认证过程中,用户名密码加密.若无正确的用户名密码则会返回

HTTP/1.1 401 Authorization Required

抓包可以看到,以默认用户名admin,默认密码admin登陆路由,HTTP Header多的部分像是这样

Authorization: Basic YWRtaW46YWRtaW4=

img05

Base64解密即为admin:admin.针对基础认证密码破解,依旧可以使用,但需要对用户名密码先做处理,一个demo脚本如下:

#!/usr/bin/python
import os.path,sys,base64userfile = raw_input("input usr file:")
passfile = raw_input("input pwd file:")
outputfile = raw_input("input out file:")
outputfile = open(outputfile, "w")
userInfile = open(userfile)
passInfile = open(passfile)
userLines = userInfile.readlines()
passLines = passInfile.readlines()for userLine in userLines:for passLine in passLines:combinedLine = userLine.strip() + ':' + passLine.strip()print combinedLineoutputfile.write(base64.b64encode(combinedLine) + '\n')
userInfile.close()
passInfile.close()
outputfile.close()

生成字典后以Burp爆破即可

img06

当然,Hydra给了更简易的解决方式

hydra -L user.txt -P pass.txt -F http://demourl:2048/auth

img07

其中-L和-P大写均为挂载字典,-F表示全局一旦发现合法用户密码即停止破解,亦可加入-t参数指定线程数.

0x06 服务密码破解

密码枚举离不开服务,对常见服务如FTP/SSH/TELNET/POP3/1433等的破解枚举,资料已经很齐备,以下仅简要记录命令

FTP
hydra -L user.txt -P pass.txt -F ftp://127.0.0.1:21

img

SSH
hydra -L user.txt -P pass.txt -F ssh://127.0.0.1:22

img

patator ssh_login host=127.0.0.1 user=root password=FILE0 0=pass.txt -x ignore:mesg='Authentication failed.'

img

SMB
hydra -L user.txt -P pass.txt -F smb://127.0.0.1

img

MSSQL
hydra -L user.txt -P pass.txt -F mssql://127.0.0.1:1433

img

0x07 社工字典生成

密码碰撞出来的情况,大多为两种可能:以admin为代表的弱口令和以*19??0101为代表的社工密码.在弱口令尝试失败的情况下,如果对目标信息有较充分的掌握,则可尝试社工字典生成.以cupp.py工具为例,创建新字典使用:

python cupp.py -i

img

在填写相关信息后生成字典,然后使用上述工具继续枚举吧 ;-)

0x08 哈希破解

win环境下wce等工具直接抓取内存密码,抓取hash后离线破解往往也是难以避免的,尤其是在微软最近几个漏洞补丁之后:(普通哈希可以使用Ophcrack破解,官网给出了对应的彩虹表下载,当然,也可以直接查询.http://www.objectif-securite.ch/en/ophcrack.php

如情非得已,需要破解其他不常见密码哈希(借助已有web破解服务无法解决),暂时便只有三个相对高效的方法:

  • 分布式 (如今已经有越来越多的工具开始尝试分布式破解,也可说是,云计算?)
  • GPU (或DSP/FPGA搞的专业密码破解硬件)
  • 彩虹表 (没硬盘的就别想了)

而如果我们在密码的一定规则后,亦可按照规则破解密码.如创建一个密码为hahaharoot的账户,用John暴力模式密码,普通计算机一天时间是很难跑出来的,但假设发现管理员其他密码如web/sql等均为hahaha开头,则可考虑定义密码规则,如

hashcat -m1800 -a3 hashdumpedfile --pw-min=7 --pw-max=11  "hahaha?l?l?l?l"

几秒钟的时间,得到了密码明文

img

其中-m指定哈希算法,-a3指定暴力破解方式.亦可通过脚本生成指定前缀的密码字典使用工具挂载字典加以破解

john -w:gen_wordlist.txt hash

img

0x09 文件密码

最后补充一点对文件密码的破解,对于zip文件,由于加密方式没有rar强势,故被解密的可能性很大,一个kali下的破解工具命令如下:

fcrackzip -b -v -c a -l 1-4 -u 1.zip

其中,-b指定暴力破解,-v显示详细信息,-c a指定密码为纯字母,-l 1-4指定密码长度位1-4位,-u指使用可能的密码进行解压缩测试(加上,否则会出现很多干扰密码)

img

渗透测试:密码破解小结相关推荐

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

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

  2. 谷安kali密码破解小结(crunch字典生成)

    密码破解基本有三种方法:第一种是人工猜解(垃圾桶工程和被动信息收集): 第二种是基于字典暴力破解(主流) 在kali里,是默认自带了字典的,分别放在下面三个文件中:/usr/share/wordlis ...

  3. 渗透测试-暴力破解之验证码测试token防爆破绕过

    暴力破解之验证码测试token防爆破绕过 文章目录 暴力破解之验证码测试token防爆破绕过 前言 一.什么是token 二.验证码之token防爆破绕过 总结 前言 一.什么是token 客户端to ...

  4. web渗透--vnc密码破解

    vnc介绍 VNC(Virtual Network Console)是虚拟网络控制台的缩写.他是一款优秀的远程控制工具软件.可视化控制,类似于远程桌面. 默认vnc服务端运行在5900端口. 探测目标 ...

  5. 渗透测试-暴力破解之验证码客户端验证绕过

    暴力破解之验证码客户端验证绕过 文章目录 暴力破解之验证码客户端验证绕过 前言 一.什么是验证码客户端验证绕过 二.验证码客户端验证绕过 1.打开pikachu进行实验 2.用burp抓包进行客户端绕 ...

  6. 渗透测试-暴力破解之hydra

    暴力破解之hydra 文章目录 暴力破解之hydra 前言 一.什么是暴力破解 二.暴力破解枚举之hydra 1.hydra相关语法 2.利用hydra进行爆破获取用户信息 总结 前言 一.什么是暴力 ...

  7. 渗透测试实战-BurpSuite 使用入门

    前言 近期笔者在学习 web 渗透测试的相关内容,主要是为了公司之后的安全产品服务.渗透测试本身在学习过程中还是很有意思的,有一种学习到了之前想学但是没学的黑客技术的感觉,并且对笔者已掌握的许多知识做 ...

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

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

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

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

最新文章

  1. CoordinatorLayout、AppBarLayout、Toolbar使用详解
  2. 线性O(N)时间复杂度求素数 , 筛法
  3. 给jqGrid数据行添加修改和删除操作链接
  4. android dialog横屏,解决dialog在横竖屏切换时消失
  5. UML建模之活动图介绍
  6. 437. Path Sum III
  7. Qt Remote Object(QtRO)实现进程间通信
  8. Qt学习笔记之QByteArry
  9. js分页--存储数据并进行分页
  10. 前端_JavaScript
  11. McAfee安全管理器允许任何用户绕过管理器的安全机制
  12. 要开始Ubuntu之旅拉~
  13. Linux下如何实现对某个文件夹进行压缩
  14. [Luogu P4630] [BZOJ 5463] [APIO2018] Duathlon 铁人两项
  15. 考研常识:考研加分和照顾政策有哪些?
  16. 鼎捷E10视频教程合集19大模块
  17. ​携程网全国各城市酒店数据​评论数据
  18. GitHub爆款项目,去马赛克软件Depix使用
  19. 《左耳听风-高效学习篇》阅读笔记
  20. 【Basic Algebra】群论学习整理

热门文章

  1. springboot之微信支付与退款
  2. 第五章第六题(英里与千米之间的互换)(Conversion from mile to kilometer and kilometer to mile)
  3. ESP32编译运行ADF音频库
  4. 华为云服务器型号解析——通用计算型
  5. 【转载】KAB春纳 | 一同乘风破浪吧
  6. 游戏里的小哥哥小姐姐都是怎么来的?
  7. 特征锦囊:如何根据变量相关性画出热力图?
  8. 中国网络安全现状:“狼”已经来了
  9. 电脑UEFI启动是什么?
  10. 《整洁代码之道》学习书摘(二)第一章——整洁代码