
Внедряет сборку C# EXE или DLL в каждую среду выполнения CLR и AppDomain другого процесса.
Внедряет сборку C# EXE или DLL в любую среду выполнения CLR и домен приложения другого процесса. Внедренная сборка затем может получить доступ к статическим экземплярам классов процесса-жертвы и, таким образом, влиять на его внутреннее состояние.
clrinject-cli.exe -p <processId/processName> -a <assemblyFile>
Открывает процесс с идентификатором <processId> или именем <processName>, внедряет <assemblyFile> EXE и выполняет метод Main.
-e Перечисляет все загруженные среды выполнения CLR и созданные домены приложений.-d <#> Внедрить только в <#>-й домен приложения. Если номер не указан или равен нулю, сборка внедряется в каждый домен приложения.-i <namespace>.<className> Создает экземпляр класса <className> из пространства имен <namespace>.clrinject-cli.exe -p victim.exe -e (Перечислить среды выполнения и домены приложений из victim.exe)clrinject-cli.exe -p 1234 -a "C:\Path\To\invader.exe" -d 2 (Внедрить invader.exe во второй домен приложения процесса с id 1234)clrinject-cli.exe -p victim.exe -a "C:\Path\To\invader.dll" -i "Invader.Invader" (Создать экземпляр Invader внутри каждого домена приложения в victim.exe)clrinject-cli64.exe -p victim64.exe -a "C:\Path\To\invader64.exe" (Внедрить x64 сборку в x64 процесс)Следующий код может быть скомпилирован как исполняемый файл C#, а затем внедрен в процесс PowerShell. Этот код обращается к статическим экземплярам внутренних классов PowerShell, чтобы изменить цвет текста консоли на зеленый.
using System;
using System.Reflection;
using Microsoft.PowerShell;
using System.Management.Automation.Host;
namespace Invader
{
class Invader
{
static void Main(string[] args)
{
try
{
var powerShellAssembly = typeof(ConsoleShell).Assembly;
var consoleHostType = powerShellAssembly.GetType("Microsoft.PowerShell.ConsoleHost");
var consoleHost = consoleHostType.GetProperty("SingletonInstance", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
var ui = (PSHostUserInterface)consoleHostType.GetProperty("UI").GetValue(consoleHost);
ui.RawUI.ForegroundColor = ConsoleColor.Green;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
Команда внедрения:
clrinject-cli64.exe -p powershell.exe -a "C:\Path\To\invader64.exe"
Результат:
