快捷搜索:  1835  1927  创意文化园  2070  东航  tagid=20270  as  2380

用usdt充值(www.caibao.it):构建自定义的Mimikatz二进制文件

这篇文章将先容若何通过修改源代码来获得已往的AV/EDR软件,从而构建自定义的Mimikatz二进制文件。

先容

现在已经有许多关于若何混淆Mimikatz的文章,然则,它们大多数都集中在若何通过Invoke-Mimikatz的AMSI或在Powershell版本中使用混淆处置工具。但在几个月前Gist的一篇文章启发了我,让我知道若何构建未经杀毒软件符号的自定义版本:

, This script downloads and slightly "obfuscates" the mimikatz project.
, Most AV solutions block mimikatz based on certain keywords in the binary like "mimikatz", "gentilkiwi", "[email protected]" ..., , so removing them from the project before compiling gets us past most of the AV solutions.
, We can even go further and change some functionality keywords like "sekurlsa", "logonpasswords", "lsadump", "minidump", "pth" ....,, but this needs adapting to the doc, so it has not been done, try it if your victim's AV still detects mimikatz after this program.

git clone https://github.com/gentilkiwi/mimikatz.git windows
mv windows/mimikatz windows/windows
find windows/ -type f -print0 | xargs -0 sed -i 's/mimikatz/windows/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/MIMIKATZ/WINDOWS/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/Mimikatz/Windows/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/DELPY/James/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/Benjamin/Troy/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/[email protected]/[email protected]/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/creativecommons/python/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/gentilkiwi/MSOffice/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/KIWI/ONEDRIVE/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/Kiwi/Onedrive/g'
find windows/ -type f -print0 | xargs -0 sed -i 's/kiwi/onedrive/g'
find windows/ -type f -name '*mimikatz*' | while read FILE ; do
	newfile="$(echo ${FILE} |sed -e 's/mimikatz/windows/g')";
	mv "${FILE}" "${newfile}";
done
find windows/ -type f -name '*kiwi*' | while read FILE ; do
	newfile="$(echo ${FILE} |sed -e 's/kiwi/onedrive/g')";
	mv "${FILE}" "${newfile}";
done

启用了杀毒软件的Mimikatz版本

若是你曾实验下载启用了杀毒软件的Mimikatz版本,则会注重到这是不可能的,由于每个单独的版本都已符号。这是完全合理的,由于现在的攻击者在现实天下的事宜中使用Mimikatz和许多其他开源项目。我异常确定Mimikatz是从lsass历程或sam数据库中提取凭证、执行哈希攻击、解密DPAPI 数据加密珍爱等的最常用软件。你可以在ADSecurity.org或Mimikatz Wiki中找到有关函数的完整概述,但到现在为止还不够周全。DPAPI是Windows系统级对数据举行加解密的一种接口,无需自实现加解密代码,微软已经提供了经由验证的高质量加解密算法,提供了用户态的接口,对密钥的推导,存储,数据加解密实现透明,并提供较高的平安保证。

许多人显然不知道为什么这些开源项目以及若何符号这些开源项目:

然则,具有专有手艺的真实攻击者或渗透测试职员不会使用公布版本,而是构建自己的版本。通常,仅使用Mimikatz的部门源代码。在这种情况下,我们不会遗漏任何函数,而是修改源代码以评估检测率,在backyard有一个自定义二进制文件总是很好。

基本署名

我们已经从上面的要点先容了一些常见的Mimikatz署名。首先,必须替换以下字符串:

· mimikatz,MIMIKATZ和Mimikatz;

· DELPY, Benjamin, [email protected]

· 知识共享

· gentilkiwi

· KIWI, Kiwi和 kiwi

将自己置于杀毒软件供应商的位置,首先要符号的是二进制文件中包罗的显著字符串。若是打开Mimikatz菜单,则会看到以下内容:

菜单中包罗的所有字符串都是Mimikatz正在运行的指示符,因此我们将以下署名添加到剧本中以举行替换:

· “A La Vie, A L’Amour”

· http://blog.gentilkiwi.com/mimikatz

· Vincent LE TOUX

· [email protected]

· http://pingcastle.com

· http://mysmartlogon.com

我们也可以打开mimikatz.c 并将横幅替换为其他内容或将其删除。

如上所述,我们可以通过替换函数要害字来走得更远,撰写本文时,Mimikatz中的主要模块如下:

crypto, dpapi, kerberos, lsadump, ngc, sekurlsa

standard, privilege, process, service, ts, event

misc, token, vault, minesweeper, net, busylight

sysenv, sid, iis, rpc, sr98, rdm, acr

也许我需要一些Mimikatz基础教程,然则维基百科并未告诉你若何列出所有模块。你仍然可以通过输入无效的模块名称(如:: )来实现:

我们在这里有两个选择,要么只更改所有函数名称的大小写,要么完全更改名称。在第一个选择中,熟悉的下令保持稳定,在第二个选择中,我们必须记着新的函数名。现在,我们将继续使用熟悉的函数名称。我没有添加用于替换的短函数名,由于这些字符串也可能存在于代码中,这可能会损坏函数。为了为每个新版本构建自定义二进制文件,我们将与函数名称无关的字符串替换为随机名称。

另一个需要替换的主要器械是二进制文件的图标。因此,在修改后的gist中,我们将现有的图标替换为一些随机下载的图标。

主菜单中的每个函数都有子函数,例如,可能最着名的函数sekurlsa具有以下子函数:

msv, wdigest, kerberos, tspkg

livessp, cloudap, ssp, logonpasswords

process, minidump, bootkey, pth

krbtgt, dpapisystem, trust, backupkeys

tickets, ekeys, dpapi, credman

为确保最著名的Mimikatz指示符已更改,我们在替换剧本中包罗了大多数子函数名称,这将发生一些剧本。

通过执行bash剧本,编译代码并将其上传到VirusTotal,我们获得以下效果:

netapi32.dll

要查找更多署名,可以使用head -c byteLength mimikatz.exe > split.exe将文件拆分为多个部门。若是删除天生的文件,则存在署名。若是不是,则文件的这一部门是清洁的。你也可以使用Matt Hands DefenderCheck工具自动执行此义务。它就是这样做的,将文件分成多个部门,将它们复制到Ctemp,然后使用Windows Defender举行扫描,让我们检查一下天生的二进制文件:

Windows Defender符号了以下三个netapi32.dll库函数:

,

欧博allbet客户端

欢迎进入欧博allbet客户端(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

,

· I_NetServerAuthenticate2

· I_NetServerReqChallenge

· I_NetServerTrustPasswordsGet

通过搜索网络,我找到了以下文章,该文章注释了若何构建具有差别结构的新netapi32.min.lib。如本文所述,我们可以通过建立具有以下内容的.def文件来构建自定义netapi32.min.lib:

之后,我们通过发出以下下令在Visual Studio开发职员控制台中构建netapi32.min.lib文件:

我们将此新文件嵌入lib x64 目录中并重新编译,再次运行DefenderCheck,将导致更多效果:

这意味着我们绕过了Windows Defender的“实时珍爱”函数。然则,若是我们启用云珍爱并将文件复制到另一个位置,它将再次被杀死:

替换更多的字符串

另有更多需要替换的器械,首先,我们留在显著的字符串上。 Mimikatz菜单包罗每个函数的说明,例如,特权子函数具有以下形貌:

为了删除显著的字符串,我们将通过将它们添加为要替换的字符串作为bash剧原本删除险些所有形貌。一些函数和形貌不是要害义务,但仍然很酷,因此将他们原样保持:

answer - Answer to the Ultimate Question of Life, the Universe, and Everything

coffee - Please, make me a coffee!

许多AV供应商符号二进制文件中与函数相关的DLL文件已加载的部门。 Mimikatz从.DLL文件加载许多函数。要在Mimikatz源代码中找到所有相关的DLL文件,我们可以打开Visual Studio,按STRG SHIFT F。这将打开对整个项目的搜索。搜索.dll将为我们提供项目中使用的所有DLL文件名。我们还将在bash剧本中添加DLL名称,并使用差别的大写和小写字母举行替换。

带有子函数登录密码的sekurlsa是最常用的函数,它险些可以转储所有凭证。因此,此函数的某些部门最多被符号。因此,请看一下kuhl_m_sekurlsa.c,看看哪些kprintf()语句包罗可能被符号的单词。我们一直在寻找误报率较低的单词,由于杀毒软件供应商不想意外地符号其他二进制文件。我们最终获得的是以theese字符串末端:

切换到MINIDUMP,切换到PROCESS

UndefinedLogonType,NetworkCleartext,NewCredentials,RemoteInteractive,CachedInteractive,CachedRemoteInteractive,CachedUnlock

DPAPI_SYSTEM,替换会话中的NTLM/RC4密钥,令牌模拟,UsernameForPacked,LSA隔离数据

若是我们查看默认函数尺度kuhl_m_standard.c,我们可能还会符号其他字符串:

isBase64InterceptInput,isBase64InterceptOutput

Credential Guard可能正在运行,SecureKernel正在运行

该手艺也可以应用于所有其他源代码文件,我不会在这里先容所有内容,由于这个消耗太大了。然则,若是你替换字符串,检测率将下降。

文件夹和文件结构

我也查看了整个项目的结构,看看哪些部门一次又一次以同样的方式泛起,有一件事直接引起了我的注重。所有变量和函数名称都以kuhl_或KULL_开头的名称声明:

完全替换所有这些事宜异常容易,这也可能会大大改变天生文件的署名。因此,我们还将以下行添加到剧本中:

将以上提到的所有字符串添加到我们的bash剧本中,就可以了。

执行bash剧本,编译并上传到Virustotal:

看起来我们没有更多的隐形能力,然则在撰写本文时,此状态足以使启用了云珍爱的防御方案失效:

若是你仍然想进一步实验获得FUD,则可以做更多的事情。你可以替换函数名称,而不必使用大写和小写字母。你可以遍历所有其他C文件和库文件来搜索低误报Mimikatz指标并替换它们,或者只是删除不需要的函数。

至于错误新闻,它们也可以包罗Mimikatz指标。对错误举行故障诊断并不总是很有意义,或者没有足够的时间。因此,若是你不需要详细的错误新闻,则可以将其删除。使用键盘快捷键STRG SHIFT H,你可以搜索并替换整个项目中的字符串。搜索并替换以下内容以删除所有错误新闻:

AV/EDR供应商还可以使用API导入的检测方式,关于混淆C/C 源代码以隐藏Plowsec的API导入,有两篇异常好的文章。它们是Engineering antivirus evasion 和Engineering antivirus evasion (Part II) 。 Mimikatz利用了许多Windows API。例如,要隐藏LSAOpenSecret,可以在Mimikatz中使用以下代码:

通过隐藏SamEnumerateUserDomain,SamOpenUser,LsaSetSecret,I_NetServerTrustPasswordsGet等与以上手艺连系使用,应该可以对FUD举行源代码修改。

然则修改源代码只是到达目的的一种方式,通过有关Phzor的Phras文章引发你的灵感:设计和实现开源PE Packer PEzor 。具有Syscall内联函数的Shellcode注入,User-Land挂钩移除等。

总结

我们使用了字符串替换方式和其他手艺来构建自定义的Mimikatz二进制文件,研究发现,通过对最常用的字符串举行检测,将Mimikatz的检测率降低到了杀毒软件供应商的1/3左右,然则可以通过添加越来越多的字符串来进一步削减这种检测。 API导入隐藏之类的其他手艺会进一步降低检测率。

顺便说一下,本文的bash剧本不再提供针对Base64编码的Mimikatz二进制文件的AMSI触发器。因此,有可能将该二进制文件包罗在你选择的任何PE-Loader中,以在不接触磁盘的情况下加载它。

本文翻译自:https://s3cur3th1ssh1t.github.io/Building-a-custom-Mimikatz-binary/:
发表评论
sunbet声明:该文看法仅代表作者自己,与本平台无关。请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

您可能还会对下面的文章感兴趣: