隐私安全,黑客利用Mimikatz提取Windows用户凭证

2020-03-31| |来自: 互联网

一、前言一.mimikatz简介 是法国人Gentil Kiwi编写的一款windows平台下的神器,它具备很多功能,其中最亮的功能是直接从 lsass.exe 进程里获取windows处于active状态账号的明文密码。mimikatz的功能不仅如此,它还可以提升进程权限,注入进程,读取进程内存等等,mimikatz包含了很多本地模块,更像是一个轻量级的调试器。

二、Mimikatz提取用户凭证

Mimikatz提取用户凭证功能,其主要集中在sekurlsa模块,该模块又包含很多子模块,如msv,wdigest,kerberos等,使用这些子模块可以提取相应的用户凭证,如sekurlsa::wdigest提取用户密码明文,sekurlsa::kerberos提取域账户凭证,sekurlsa::msv提取ntlm hash凭证,在kuhl_m_c_sekurlsa这个数组里面有各个子模块功能的注释,如下:

Mimikatz使用了一个的框架,来处理对内存的操作。以wdigest子模块为例,如果在目标机器上运行mimikatz,会跨进程读取读取lsass.exe进程的wdigest.dll模块的数据,如果是用dump文件方式提取密码则是直接打开文件。

2.1获取用户凭证信息

通过遍历加载的DLL模块名称,来初始化Mimikatz关注的一些DLL的统计信息结构体。

重点是第二步和第三步。

第二步调用了kuhl_m_sekurlsa_utils_search继而调用kuhl_m_sekurlsa_utils_search_generic如下,

搜索的是LsaSrv.dll的特征码,结合偏移量找到所有的登录会话信息。

最后打印出来的会话信息

2.2获取加密用户密码的密钥

第三步调用了lsassLocalHelper->AcquireKeys(&cLsass, &lsassPackages[0]->Module.Informations);,实际对于NT6系统实际调用的是kuhl_m_sekurlsa_nt6_acquireKeys

用PTRN_WALL_LsaInitializeProtectedMemory_KEY作为特征码进行搜索

获取初始化向量和密钥本身

2.3解密账户密码

基于2.1得到的登录会话信息(包含加密后的用户密码)和2.2得到的加密密钥和初始化向量,mimikatz的wdigest子模块便可以提取用户密码明文。

kuhl_m_sekurlsa_genericCredsOutput实际调用kuhl_m_sekurlsa_nt6_LsaEncryptMemory进行密码的密文解密。

最后根据密文长度是否是8的倍数,来调用Aes解密和Des解密(BCryptDecrypt)。

三、总结

Mimikatz的提取密码流程主要分为三步1、获取登录会话的信息,包含了用户密码的加密后密文;2、提取用于加密的密钥值,3、调用Windows导出函数BCryptDecrypt进行解密。由于提取会话信息和密钥都用的是特征码,因此这些特征码作为杀毒软件和edr产品的特征值会非常合适,而攻击者也会采用动态加载的方式防止这种特征的静态扫描。由于水平有限,欢迎大家指出文中的错误和交流指教。


标签: 模块 sekurlsa mimikatz 密码 密钥 用户 凭证 进程 密文 加密
出处: https://www.toutiao.com/i6809879243816698381/

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护