关于渗透测试密码破解的研究

2017-05-18 03:39严比卓
网络安全技术与应用 2017年5期
关键词:明文表单字典

◆严比卓 黄 佳

(长沙市中心医院 湖南 410000)

关于渗透测试密码破解的研究

◆严比卓 黄 佳

(长沙市中心医院 湖南 410000)

密码破解是进行渗透测试中发现信息系统漏洞的常用方法。本文分别从破解工具和破解方式两个方面,对暴力破解和散列还原的破解方式进行研究,并给出了预防这些攻击的应对方法。

渗透测试;系统漏洞;密码破解

1 概述

渗透测试是通过模拟恶意黑客的攻击手法,来对目标网络系统的安全进行评估的一种方式[1]。在渗透测试的过程中,任何仅通过密码进行身份鉴别而没有采用双因素认证的应用或系统,对其密码的暴力破解总是可实现的。下面对在渗透测试中进行密码破解的经验以及所使用的工具和方法进行研究。

2 破解工具

常用密码破解工具:

(1) Burp Suite(https://portswigger.net/burp/): 在线Web 登录表单破解;

(2) Hydra (https://www.thc.org/thc-hydra/): 在线服务破解;

(3) Hashcat (http://hashcat.net/hashcat/): 离线Hash破解;

(4)Mimikatz (https://github.com/gentilkiwi/mimikatz): Windows密码还原。

当然,一份优秀的字典也是必不可少的,好的字典在密码猜解过程中往往可以找到系统的突破口,有效提升渗透测试的成功率。

3 破解方式

3.1 暴力破解

3.1.1 Web 表单破解

以单一密码作为身份认证的 Web 登录表单,一直是渗透测试中寻求突破的入口,尤其是针对网站管理后台的暴力猜解。通常网站会采用验证码来防止工具的暴力猜解。当一个 Web登录表单满足以下条件之一时,即可进行暴力破解:

(1)没有验证码机制;

(2)服务端没有及时销毁用户会话中的验证码导致验证码复用;

(3)所用验证码图形较为简单,可被工具轻易识别。

工具Burp Suite 的Intruder 模块是一个针对Web应用的自动化攻击工具,其主要应用场景即针对Web登录表单的暴力猜解,尤其是Burp 1.7版本最高支持999线程,大大提高了暴力破解的速度。通常根据响应包的长度,HTTP 状态码或响应包中的关键字来判断是否登录成功。

3.1.2 常用服务爆破

服务爆破工具有 Medusa 和 hydra等,均支持 ftp、 ssh、telnet、pop3、smtp、mysql、mssql、rdp等常用服务。对于仅仅内网才能访问的服务,运维人员的安全意识不足,通常存在各种弱口令以及相同服务使用相同口令的情形。

对服务的爆破适用于内网渗透,此时测试人员已经拥有一台内网服务器权限或者其上的 Webshell,可以以此服务器或Webshell 作为代理,突破边界防火墙,对内网其他服务进行爆破,一般能够发现多个弱口令。

3.2 散列还原

在渗透测试过程中,除了密码从无到有的过程,还有大量已知密码Hash需要恢复出明文密码的情形。这些密码 Hash一般通过SQL注入,直接访问数据库,嗅探等方式获得。

(1)爆破还原

很多网站使用MD5, SHA1等Hash函数来加密用户口令,MySQL数据库也使用自定义名为MySQL323或MySQL5的算法加密数据库口令,这些Hash函数(算法)都是不可逆的。因此,要想从密码Hash直接恢复出明文密码是不可能的。但是通常情形下,Hash值是唯一的,从而黑客可以收集大量常用明文密码,计算出其Hash值,并与已有Hash值进行比对,Hash值匹配相等则视为明文密码相同。

字典爆破是还原Hash值最合适的方法。该方法通过收集各大网站泄漏的数据库中的明文密码生成字典,破解一般用户的密码成功率很高。Hashcat支持多种已知加密算法,且能够跨平台运行,是字典爆破的理想工具。

Hashcat使用方法为:

hashcat.exe m 〈hash类型〉 -a 〈破解方式〉〈hash文件〉〈字典/掩码〉

掩码攻击是另一种暴力破解Hash的方式。通过分析国人使用密码的习惯,中国人习惯用姓名首字母缩写加上6位或8位生日、QQ号、手机号等数字作为密码,这样的密码对使用者来说记忆方便,但是对于攻击者来说,暴力猜解密码并不需要遍历所有可能的明文空间。如果以?l代表一位小写字母,?d代表一位数字,如前所述的密码组成可能是这样的,第 1-3 位(或第 1-2位)是?l,然后接着6位?d或8~9位?d或11位?d。如此一来,黑客需要穷举的明文密码所有值的数量将大大减少,破解成功率也大大提升。图1所示是Hash Manager通过掩码攻击破解某密码。

图1 Hash Manager 攻击破解

无论是字典爆破还是掩码攻击,运算速度都是至关重要的因素。多核服务器的运算速度通常远超个人 PC。但是如果PC带有独立显卡,Hashcat的GPU版本cudaHashcat/oclhashcat使用显卡进行运算,效率大大超过CPU版本,甚至可能反超多核服务器。

(2)解密还原

在一些应用场景中,数据库密码、连接字符串或者通过公开的自定义算法加密,如Weblogic,或者使用DES, AES等对称加密算法,但是密钥硬编码在应用源码中。当测试人员通过源码获知算法与密钥后,即可将密文恢复为明文密码。

.NET开发的应用,密钥和加密算法可能编译为*.dll存在于网站根路径的bin目录中;Java开发的应用,密钥和加密算法多编译成*.jar或*.class文件存在于网站根路径的 WEB-INF/lib或WEB-INF/classes目录中。

在某服务器的MSSQL数据库中发现如图2所示的管理员用户及密码Hash。

图2 管理员用户和密码Hash

UserPwd疑似MD5 hash, 但无法解开。分析应用源码得知其采用的是自定义算法,在网站根路径的 bin目录下发现文件BBDCL.dll, 逆向该文件得知应用采用 DES算法,密钥是"jgheobinhainnnglggzcianjingn", 如图3所示:

图3 逆向计算

本地运行 Visual Studio新建.NET项目,导入BBDCL.dll,调用dll中的Decrypt方法,成功解密管理员Hash, 如图4所示。

图4 解密管理员Hash

(3)内存还原

用户登录Windows操作系统时,明文密码经过可逆算法加密后存放在Windows认证(lsass.exe)的进程内存中。Mimikatz是一款能够从lsass.exe进程中获取内存,并且获取明文密码和NTLM哈希值的工具。运行 Mimikatz需要操作系统管理员或 NT AUTHORITYSYSTEM权限,通常使用DEBUG权限执行相关操作,与lsass.exe进程进行交互。其使用过程简单,将Mimikatz上传到服务端,运行以下两条命令,如图5示。

提升权限:privilege::debug

获取密码:sekurlsa::logonpasswords

图5 获取密码

具备强大功能的Mimikatz是杀毒软件的必杀。除了自行编译Mimikatz源码外,还可使用下面两种手段绕过杀毒软件的查杀。

(1)直接在内存中调用Mimikatz,避免上传文件到服务器。

通过Invoke-Mimikatz这个PowerShell脚本,利用mimikatz2.0和Invoke- ReflectivePEInjection将Mimikatz源程序完全加载到系统内存中运行,这将使得转储凭证时无需将 Mimikatz 的二进制文件写到磁盘中。

通过命令行或PowerShell运行下面的代码:

PowerShell "IEX (New-Object Net.WebClient).Download String('https://raw.githubusercontent.com/mattifestati-on/Pow-erSploit /master/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz DumpCreds"

(2)利用微软官方工具procdump获取进程lsass.exe的内存转储文件

procdump作为一款内存dump工具,带有微软公司官方数字证书签名,可绕过杀毒软件的查杀。上传procdump.exe到目标系统,运行procdump -accepteula -ma lsass.exe lsass.dmp得到内存转储文件lsass.dmp, 下载lsass.dmp到本地,运行下面的命令获取明文密码。

sekurlsa::minidumplsass.dmp

sekurlsa::logonpasswords

从 Windows 8.1 和 Windows Server 2012 R2 开始,LM 哈希和“纯文本”密码将不在内存中生成。此功能也被“移植”到了较早版本的 Windows 中,Windows 7/8/2008 R2/2012 需要打KB2871997 补丁。为了防止在 lsass.exe 进程中显示“明文”密码,下面的注册表键需要被设置为“0”:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecu rityProvidersWDigest “UseLogonCredential”(DWORD)

遇到此种情形时,在命令行中将上述注册表的值修改为1,然后静候管理员重新登录系统即可,此时就可从lsass.exe进程中恢复出管理员密码。

4 应对方法

(1)及时更新操作系统补丁,安装部署防病毒,防恶意代码软件,WAF等,并对最新安全漏洞保持关注;

(2)操作系统、数据库、应用系统之间不要使用相同或相近易被猜测的密码;

(3)密码长度应设置到8位以上,包含大小写字母、数字、特殊符号至少各两个,尤其操作系统密码应设置到大于14位;

(4)Web中间件和数据库等服务等均不要以 NT AUTHORITYSYSTEM (Administrator)或者root权限运行;

(5)在Windows操作系统中,通常无须使用procdump工具,可将procdump.exe添加到杀毒软件黑名单,并使用组策略等方式监测注册表项HKEY_LOCAL_MACHINESYSTEM CurrentControl SetControlSecurityProvidersWDigest“Us eLogonCredential”的值,若值为1即可认为已经遭到了入侵,需要全面排查系统漏洞。

5 结束语

本文对渗透测试过程中的密码破解进行了一些研究,并给出应对办法。希望能为读者提高信息系统安全防范意识和水平带来帮助。

[1]夏龙,肖明明,马天远,王瑾.渗透测试技术在校园网中的应用研究.电脑知识与技术,2016.

[2]段钢.加密与解密(第三版)[M].电子工业出版社,2008.

猜你喜欢
明文表单字典
电子表单系统应用分析
字典的由来
基于图表示和匹配的表单定位与提取
浅谈网页制作中表单的教学
奇怪的处罚
大头熊的字典
正版字典
奇怪的处罚
四部委明文反对垃圾焚烧低价竞争
动态表单技术在教学管理中的应用*