Mimikatz 攻防杂谈
前几天看到了老外一篇讲 mimikatz 防御的文章,感觉行文思路还不错,但是内容稍有不足,国内也有一篇翻译,但是只是照着错误翻译的,所以就萌生了把那篇优秀文章,翻译复现,并加入其它一些内容,本文只是抛砖引玉,文中有错误的话,欢迎吐槽。
mimikatz 在内网渗透中是个很有用的工具。它可能让攻击者从内存中抓到明文密码。大家都知道这个工具很厉害,微软肯定也知道了,所以就搞了一些安全防护机制让 mimikatz 抓不到密码。但是在 win2008 之前的系统上还是能抓到密码的。一般情况下,只要有本地管理员权限就能从内存中抓出密码。通常抓到密码之后就可以进行横向移动和提权。
Debug Privilege
在 windows 里,调试权限可以用来调试进程,甚至是调试内核。对于 mimikatz 来说,通常套路来说,他想去读取内存就得获取调试权限,然后去打开进程。默认情况下,本地管理员组是由这个权限的。但是,除非管理员是个程序员,一般他应该用不到这种权限。
本地安全策略是默认给管理员组权限的。
然而,域的默认组策略在这一项是没有定义的。
按照 windows 策略的效力位阶,最终是管理员组拥有该权限。
补充下效力位阶:
默认情况下,多条策略不冲突的情况下,多条策略是合并的关系;如果冲突的话,优先级高的适用,优先级从低到高为local policy(本地)->site policy(站点)->domain policy(域)->ou policy(组织单元)
不同配置对 mimikatz 的影响
默认情况下,成功取得调试权限。
把拥有调试权限的组设置为空。注销再次登陆。
运行 mimikatz,获取调试权限失败。
WDigest
WDigest 协议早在 xp 时代就已经引入了。当时这个协议设计出来是把明文密码存在 lsass 里为了 http 认证的。默认在 win2008 之前是默认启用的。那么攻击者就能从中获取到明文。
但是在 win2008 之后的系统上,默认是关闭的。如果在 win2008 之前的系统上打了 KB2871997 补丁,那么就可以去启用或者禁用 WDigest,配置如下键值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
UseLogonCredential 值设置为 0, WDigest 不把凭证缓存在内存;UseLogonCredential 值设置为 1, WDigest 就把凭证缓存在内存。
不同配置对 mimikatz 的影响
启用缓存,直接抓明文,很舒服。
关了缓存之后,重启再抓,什么东西也没抓到。
Credential Caching
Domain Cached Credentials 简称 DDC,也叫 mscache。有两个版本,XP/2003 年代的叫第一代,Vasta/2008 之后的是第二代。
计算机在加入域之后就得通过 kerberos 进行认证,通过 kerberos 认证就得有域控的参与,但是如果域成员暂时无法访问到域控的话,岂不是无法认证了?域凭证缓存就是为了解决这个问题的。如果暂时访问不到域控,windows 就尝试使用本机缓存的凭证进行认证,默认缓存十条。
缓存位置(默认本地管理员也没有权限访问):
HKEY_LOCAL_MACHINE\SECURITY\Cache
修改组策略缓存条数为0,即为不缓存。
不同配置对 mimikatz 的影响
默认配置缓存 10 条。登陆本地管理员,提权到 system 权限,然后运行 mimikatz,成功抓到 mscachev2。
设置缓存数为 0,停掉域控,然后再登陆域账号。域成员发现无法登陆了。
登陆本地管理员账号,提取到 system,然后什么也没抓到。
Protected Users Group
受保护的用户组,可以用来让像本地管理员这样的高权限用户只能通过 kerberos 来认 证(真是六的一比)。这是在 win2012 之后引入的一个新的安全组(win2008 之前的系统打了 KB2871997 补丁也会增加这个安全组)。来防止明文存储在内存中和 ntlm hash 泄露(因为是通过 kerberos 认证所以也就不会泄露 net ntlm hash 了)。这个配置起来比较简单。把想要保护的用户加入这个组就行了(由于本机硬件限制,没法复现了,跑一个 win2016,再跑一个 win10 就已经卡的不行了)。
Restricted Admin Mode
受限管理员模式,反正就是一种安全措施,让你的账户不暴露在目标系统里。在 win8.1/win2012r2(切记是 R2)引入。win7/win2008 想用这个功能就得打 KB2871997、KB2973351。这项功能的使用需要客户端和服务端相互配合。在服务端开启的方法是在注册表添加如下键值。
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
右键->关于,查看下客户端的版本是不是 rdp8.1 版本。
潜在风险-RDP PTH
受限管理员模式可以直接用当前登录凭据进行登录,所以这“始终要求凭据”的勾肯定不能勾。
sekurlsa::pth /user:<username> /domain:<comptername or ip> /ntlm:<ntlm hash> "/run:mstsc.exe /restrictedadmin"
domain 位置用计算机名或者ip皆可。(需要管理员权限来获取 debug 权限)
一路确定下去就 OK 了。
成功把域控上的管理员顶了。
顺道抓包看一下貌似只有RDP的流量。
总结
1、禁止调试权限对获取 system 的攻击者来说没有任何作用。
2、WDigest 默认是禁用的,但是我们手动打开,挖个坑等人跳。
3、mscache 目前貌似只能用 hashcat 来破解,破出明文再利用。
4、Protected Users Group 需要再研究研究,等电脑配置好了再说 23333。
5、Restricted Admin Mode下pth 攻击只能适用于特定版本,限制还是比较多的,如果限制比较狠的内网(把135和445的流量都禁了),这个算是个突破手法吧。
参考资料
https://labs.portcullis.co.uk/tools/freerdp-pth/
https://blogs.technet.microsoft.com/kfalde/2013/08/14/restricted-admin-mode-for-rdp-in-windows-8-1-2012-r2/
http://wwwtt0401.blog.163.com/blog/static/361493062012010114020272/
https://medium.com/blue-team/preventing-mimikatz-attacks-ed283e7ebdd5
Mimikatz 攻防杂谈的更多相关文章
- 如何防御mimikatz致敬Mimikatz攻防杂谈学习笔记
零.绪论:mimikatz简介 mimikatz是一款出色的内网渗透工具,可以抓取windows主机的明文密码.NTLMhash值或者kerberos对应的缓存凭据.mimikatz的使用在获取权限后 ...
- caoz的梦呓:信息安全攻防杂谈
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/O0zLvuWPRPIeqnRooNEFYA 旧文我提过一句话,信息安全防御这事,在业内,三分靠技术,七分靠人脉. 在知识星 ...
- [转帖][思路/技术]Mimikatz的多种攻击方式以及防御方式
[思路/技术]Mimikatz的多种攻击方式以及防御方式 https://bbs.ichunqiu.com/thread-53954-1-1.html 之前学习过 抄密码 没想到还有这么多功能. ...
- JS挂马攻防
JS挂马攻防实录 攻现在最多见的JS挂马方法有两种,一种是直接将JavaScript脚本代码写在网页中,当访问者在浏览网页时,恶意的挂马脚本就会通过用户的浏览器悄悄地打开网马窗口,隐藏地运行(图1), ...
- SQL注入攻防入门详解
=============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...
- Mimikatz 使用Tips
1.记录 Mimikatz输出: C:\>mimikatz.exe ""privilege::debug"" ""log sekurl ...
- 【转】PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
原文地址: PHP 杂谈<重构-改善既有代码的设计>之一 重新组织你的函数 思维导图 点击下图,可以看大图. 介绍 我把我比较喜欢的和比较关注的地方写下来和大家分享.上次我写 ...
- SQL注入攻防入门详解(2)
SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...
- WAF攻防研究之四个层次Bypass WAF
从架构.资源.协议和规则4个层次研究绕过WAF的技术,助于全方位提升WAF防御能力. 绕过WAF的相关技术研究是WAF攻防研究非常重要的一部分,也是最有趣的部分,所以我在写WAF攻防时先写攻击部分.还 ...
随机推荐
- contenteditable兼容问题
正常情况下用contenteditable,IE下有兼容性问题需要将个别字母变成大写的contentEditable. 获取contenteditable的内容 对html进行处理 兼容 chrome ...
- 关于select的取值
这篇博客,主要是记录我我所犯的错误,或者自己的写法不规范导致了错误,大家可以引以引以为鉴. 我要获取select当前的值,在IE9上我可以直接写document.getElementById(&quo ...
- 10、LNMP架构
1LNMP架构概述 1.1.什么是LNMP LNMP 是一套技术的组合,L = Linux,N = Nginx,M~ = MySQL,P~ = PHP 1.2.LNMP架构是如何工作的 首先Ngin ...
- 08 自学Aruba之限制应用流量
点击返回:自学Aruba之路点击返回:自学Aruba集锦 08 自学Aruba之限制应用流量 限制带宽请查阅:点击 下文描述的步骤,主要是针对某一个SSID所用用户在使用某一个应用的时候设置共享带宽. ...
- insightface作者提供数据训练解读
1.下载源码: 开源代码地址:https://github.com/deepinsight/insightface 2.查看作者项目训练要求 (1)训练数据 训练数据使用作者提供并制作好的数据,如下图 ...
- libusb-test
/******************************************************************************** * * File Name : li ...
- JavaScript入门学习之一——初级语法
JavaScript是前端编辑的一种编程语言(不同于html,html是一种标记语言),所以和其他的编程语言一样,我们将会从下面几点学习 基础语法 数据类型 函数 面向对象 JavaScript的组成 ...
- Qt5多线程
方法一:重写run函数 一.线程执行过程: 1.在工程中自定义一个类mythread继承与QThread: 2.重写run函数: 3.创建线程对象: 4.写按钮槽函数: ui界面加入一个按钮 给按钮添 ...
- Python---函数2---王伟
#### 作用域 ```python#1.作用域:变量生效的区域#2.作用域的分类a.全局作用域(全局变量)- 全局作用域在程序执行时创建,在程序执行结束时销毁- 所有函数以外的区域都是全局作用域- ...
- 【转】深入理解Java多态性
http://developer.51cto.com/art/200906/130414.htm http://blog.csdn.net/cyzero/article/details/7266831 ...