简单介绍 Mimikatz 攻击

Mimikatz 在内网渗透测试中发挥着至关重要的作用,主要是因为它能够以明文形式从内存中提取明文密码。众所周知,攻击者在他们的渗透中大量使用 Mimikatz,尽管微软推出了安全补丁,但是在较旧的操作系统(如 Windows 2008 Server)中 Mimikatz 仍然有效,所以在很多情况下它可能导致横向移动和域权限提升。值得注意的是,如果 Mimikatz 是从本地管理员等权限执行的,则它只能导出用户凭据和密码哈希值。

下面通过几种方法来防御 Mimikatz 攻击:

Debug 权限设置

根据 Microsoft 的调试权限确定哪些用户可以将调试器附加到任何进程或内核。默认情况下,此权限授予本地管理员。然而,除非他是系统进程,否则本地管理员极不可能需要此权限。

本地管理员-调试权限

在默认安装的 Windows Server 2016 系统中,未定义调试权限的组策略,这意味着只有本地管理员具有此权限。

调试权限 – 组策略

从攻击者的角度来看,可以通过使用 Mimikatz 以下命令执行此检查:

privilege::debug

检查调试权限

Mimikatz 需要此权限,因为它要与 LSASS 进程交互。因此,将此权限仅设置为需要这权限的特定用户或组,并将其从本地管理员中删除是非常重要。可以通过将策略定义为不包含任何用户或组来禁用 SeDebugPrivilege。

Group Policy Management Editor -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment -> Debug programs -> Define these policy settings:

禁用 SeDebugPrivilege

Mimikatz-禁用调试权限

WDigest

WDigest 协议是在 WindowsXP 中被引入的,旨在与 HTTP 协议一起用于身份认证。默认情况下,Microsoft 在多个版本的 Windows(Windows XP-Windows 8.0 和 Windows Server 2003-Windows Server 2012)中启用了此协议,这意味着纯文本密码存储在 LSASS(本地安全授权子系统服务)进程中。Mimikatz 可以与 LSASS 交互,允许攻击者通过以下命令检索这些凭据:

sekurlsa::wdigest

Mimikatz — WDigest

Microsoft 在 Windows8.1,Windows 10,Windows Server 2012 R2 和 Windows Server 2016 系统中默认禁用此协议。但是,如果您的组织使用较旧的操作系统(如 Windows 7 和 Windows Server 2008 等),Microsoft 已发布了一个补丁(KB2871997),允许管理员启用或禁用 WDigest 协议。打完补丁后,建议验证是否已经从注册表中禁用 WDigest。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest

WDigest-禁用

Negotiate 和 UseLogonCredential 注册表项值应设置为 0 可以完全禁用此协议。应该注意的是,在较新的操作系统(Windows Server 2016,Windows 10 等)中,UseLogonCredential 注册表项不存在。当然,具有本地管理员权限的攻击者可以修改注册表以启用 WDigest 并获取凭据,因为 Dave Kennedy 在他的博客中对此进行了大量解释。因此,如果在禁用此协议后将这些值设置为 1,则表明存在攻击。应该不断监视注册表修改,以便在早期阶段获得警报并捕获威胁。

如果我们禁用此协议,攻击者尝试从 WDigest 检索纯文本凭据将失败:

Mimikatz-WDigest 已禁用

LSA 保护

本地安全权限服务(LSASS)验证用户是否进行本地和远程登录,并实施本地安全策略。Windows 8.1 及更高版本的系统中,Microsoft 为 LSA 提供了额外的保护,以防止不受信任的进程读取内存或代码注入。Windows 8.1 之前的系统,攻击者可以执行 Mimikatz 命令来与 LSA 交互并检索存储在 LSA 内存中的明文密码。

sekurlsa::logonPasswords

Mimikatz-与 LSA 交互

建议 Windows Server 2012R2 和 Windows 8.1 之前的系统应启用 LSA 保护,以防止 Mimikatz 访问 LSASS 进程的特定内存位置获取明文密码。可以通过创建注册表项 RunAsPPL 并设置其值为 1 来启用此保护。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA

LSA 保护已启用

在启用了 LSA 保护的系统中,攻击者将收到以下错误:

Mimikatz-LSA 保护

受限制的管理模式

Microsoft 在 WindowsServer 2012 R2 中引入了一项额外的安全功能,可以有效的防止本地管理员的纯文本凭据在 RDP 会话期间存储在 LSASS 中。即使 LSA 保护可以阻止 Mimikatz 检索凭证,但建议在攻击者禁用 LSA 保护的情况下使用此安全功能作为额外的安全保护。

应在以下位置创建「DisableRestrictedAdmin」注册表项并且设置为 0,这样可以通过网络 RDP 会话请求管理员登陆系统。此外,创建「DisableRestrictedAdminOutboundCreds」注册表项值为 1,可以禁止管理员执行 RDP 的系统内部的网络身份验证。缺少此注册表项,管理员可以导出凭据。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa

需要在域中强制执行「对远程服务器的凭据限制委派」策略,以确保所有出站 RDP 会话都使用「RestrictedAdmin」模式,因此才不会泄露凭据。

组策略限制凭证授权

需要使用「Require Restricted Admin」设置启用该策略。

启用受限制的管理员-限制凭证授权

强制执行此策略后,管理员可以远程 RDP 到所需注册表权限的工作站和服务器,以便控制 Windows 运行一些程序。

运行-受限制的管理模式切换

或者直接从命令提示符执行它。

命令提示符-受限制的管理模式切换

对于 Windows 2012 R2 和 Windows 8.1 之前的旧操作系统,此选项是 Microsoft 补丁的一部分 KB2871997。

凭证缓存

如果域控制器不可用,Windows 将检查已缓存的最后一个密码哈希值,以便使用系统对用户进行身份验证。这些密码哈希值缓存在以下注册表设置中:

HKEY_LOCAL_MACHINE\SECURITY\Cache

如果执行 Mimikatz 以下命令,可以检索这些哈希值:

lsadump::cache

默认情况下,Windows 会缓存最后 10 个密码哈希值。建议通过将以下安全设置来防止密码的本地缓存,将其值设置为 0。

Computer Configuration -> Windows Settings -> Local Policy -> Security Options -> Interactive Logon: Number of previous logons to cache -> 0

交互式登录-不缓存登录

攻击者尝试使用 Mimikatz 检索这些密码哈希将失败:

Credential Caching 禁用后 Mimikatz 出错

受保护的用户组

WindowsServer 2012 及更高版本中的 Microsoft 引入了一个名为「Protected Users」的新安全组。此组使域管理员能够保护本地管理员等有权限的用户,因为属于该组的任何帐户只能通过 Kerberos 对域进行身份验证。这将有助于防止 NTLS 密码哈希值或 LSAS 中的纯文本凭据泄露给敏感帐户,这些帐户通常是攻击者的目标。

可以在「Active Directory 用户和计算机」中找到「Protected Users」安全组。

ActiveDirectory-受保护的用户安全组

成为此安全组一部分的帐户将在身份验证方面自动归入 Kerberos 策略,默认情况下配置如下:

Kerberos 默认策略

或者,可以通过执行以下 PowerShell 命令将帐户添加到「受保护的用户」组中:

Add-ADGroupMember –Identity 'Protected Users' –Members Jane

通过 PowerShell 添加受保护的用户组帐户

通过安装 Microsoft 的补丁 KB2871997,WindowsServer 2008 等较旧的操作系统可以拥有此安全组。

结论

通过使用有效的端点解决方案与 AppLocker 等应用程序白名单相结合来防止恶意的可执行文件,执行一些 PowerShell 命令和 cmd 命令,还可以加固安全性。即使网络攻击者已经实现绕过这些控制,执行注册表修改,以便充分利用 Mimikatz 进行凭证获取,在此过程中将会生成许多事件,管理员应该监视某些注册表项,这有助于检测攻击行为。

责任编辑:韩希宇

W ndows用户权限设置,防御Mimikatz攻击的方法介绍相关推荐

  1. 计算机设置用户权限的风险,电脑的用户权限设置在哪里

    电脑对用户设置权限就能限制用户的使用权利.下面由学习啦小编为你整理了电脑的用户权限设置在哪里的相关办法,希望对你有帮助! 电脑用户权限设置方法如下 第一步,新建标准一个标准用户. win7对账户控制这 ...

  2. linux sftp没有读写权限,Linux下SFTP用户权限设置条件及实现命令

    Linux下SFTP用户权限设置条件及实现命令 众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的op ...

  3. 华三交换机的用户权限设置

    华三交换机的用户权限设置 权限 说明 security-audit 安全日志管理员(系统中的最后一个安全日志管理员角色的本地用户不可被删除,重新创建一个登陆账号解决问题) network-admin ...

  4. linux arp攻击教程,Linux下防御arp攻击的方法

    Linux下防御arp攻击的方法 发布时间:2008-09-08 17:09:19   作者:佚名   我要评论 1.获取同一网段下所有机器MAC地址的办法 机房有机器中毒,发arp包,通过arpsp ...

  5. 计算机管理策略设置,windows10系统管理员设置了系统策略解决方法介绍

    有的用户在使用Windows10系统的进行安装软件时,系统会弹出[系统管理员设置了系统策略,禁止进行此安装]的窗口无法进行安装软件,那么该怎么办呢?下面就和小编一起看一下windows10系统中提示系 ...

  6. LoadRunner设置检查点的几种方法介绍

    LoadRunner设置检查点的几种方法介绍 发布时间: 2011-5-03 11:53    作者: 一米阳光做测试    来源: 51Testing软件测试网采编 字体:  小  中  大  | ...

  7. android修改密码功能,安卓手机设置开机密码几种方法介绍

    安卓系统的手机设置开机密码一般有2-3种,其中包括密码锁.图案锁.PIN密码锁等几项.这几项都能实现开机需要输入相应的密码才能使用手机的,所以也算是开机锁了.好了,下面小编就教大家怎么设置这几种锁. ...

  8. linux中用户的权限是什么,linux中用户权限设置与更改相关介绍(上)

    不管是在生活中还是在工作中,我们都会经常碰到关于电脑权限方面的一些问题.现在介绍一下在linux系统中关于如何设置和管理用户的权限问题,介绍基本但很重要的命令. 在Linux中,权限分为三大类:基本权 ...

  9. linux使用创建es用户,linux用户权限设置(安装elasticsearch7.x)

    前言 今天下载了elasticsearch的7.x版本,使用bin/elasticsearch -d 启动后,报出如下错误: java.lang.RuntimeException: can not r ...

最新文章

  1. centos7安装mysql缺失依赖_CentOS7安装mysql5.7不成功,解决依赖包之后还是无法安装成功...
  2. (GIT)代码分支管理策略
  3. 为什么能通过域成员主机拿下域控服务器的密码呢
  4. linux 搜索文件名中非,Linux服务器中非 root 用户安装(多版本) CUDA 和 cuDNN
  5. C++资源库不完全版本
  6. php 和jsp,jsp和php哪个好?jsp和php的简单比较
  7. java手动切换成独立显卡_JAVA设计模式之调停者模式
  8. 深度学习之卷积神经网络 LeNet
  9. mysql log 记录报错 sql语句_MySQL生产库中添加修改表字段引起主从崩溃的问题总结...
  10. NSRegularExpression iOS自带的正则表达式
  11. 34-指针与二维数组
  12. 如何巧用区块链密码学避免数据“裸奔”?
  13. Eclipse插件安装之,使用(已经下载的zip)安装包直接安装插件(例:glassfish 插件 plugin)
  14. 性能分析工具Linux perf使用经验
  15. css3中的zoom属性以及jquery中css()方法操作元素的属性
  16. 方舟php服务器控制,方舟基本管理命令代码
  17. netbean 快捷键
  18. Java实验-输出希腊字母表
  19. 微信人脸SDK集成踩坑
  20. Android studio下的DNK开发JNI详解流程

热门文章

  1. GAP: Generalizable Approximate Graph Partitioning Framework(广义近似图划分框架)
  2. V神已抵京, 倒计时4天! 6大理由告诉你为什么要参加2019以太坊技术及应用大会...
  3. 农产品追溯系统免费源代码分享及下载---第4篇(已开源)
  4. mysql font for linux_Navicat for MySQL与MySQL-Front比较 [图文]
  5. 视频加logo代码python opencv-日常工具
  6. ios 英文字体连体 five 的问题解决方案
  7. [1067]CDH6.3.2之Kerberos安全认证
  8. 钉钉审批回调 获取单个审批实例详情  遇见System.Collections.Generic.List`1[DRMS.DingTalk.FormRowValue+ExtendValue] 错误
  9. 线性代数系列(五)--线性相关性
  10. R语言倾向性评分:加权