
Injiziert C#-EXE oder DLL-Assembly in jede CLR-Laufzeit und AppDomain eines anderen Prozesses.
Injiziert C# EXE- oder DLL-Assemblys in jede CLR-Laufzeitumgebung und AppDomain eines anderen Prozesses. Die injizierte Assembly kann dann auf statische Instanzen der Klassen des Zielprozesses zugreifen und dessen internen Zustand beeinflussen.
clrinject-cli.exe -p <ProzessId/ProzessName> -a <AssemblyDatei>
Öffnet einen Prozess mit der Id <ProzessId> oder dem Namen <ProzessName>, injiziert <AssemblyDatei> EXE und führt die Main-Methode aus.
-e Listet alle geladenen CLR-Laufzeitumgebungen und erstellten AppDomains auf.-d <#> Injiziert nur in die <#>-te AppDomain. Wenn keine Zahl oder Null angegeben wird, wird die Assembly in jede AppDomain injiziert.-i <Namespace>.<Klassenname> Erstellt eine Instanz der Klasse <Klassenname> aus dem Namespace <Namespace>.clrinject-cli.exe -p victim.exe -e (Liste Laufzeitumgebungen und AppDomains von victim.exe auf)clrinject-cli.exe -p 1234 -a "C:\Pfad\Zu\invader.exe" -d 2 (Injiziere invader.exe in die zweite AppDomain des Prozesses mit Id 1234)clrinject-cli.exe -p victim.exe -a "C:\Pfad\Zu\invader.dll" -i "Invader.Invader" (Erstelle Instanz von Invader in jeder AppDomain von victim.exe)clrinject-cli64.exe -p victim64.exe -a "C:\Pfad\Zu\invader64.exe" (Injiziere x64-Assembly in x64-Prozess)Der folgende Code kann als C#-ausführbare Datei kompiliert und dann in einen PowerShell-Prozess injiziert werden. Dieser Code greift auf statische Instanzen interner PowerShell-Klassen zu, um die Konsolen-Textfarbe auf Grün zu ändern.
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());
}
}
}
}
Injektionsbefehl:
clrinject-cli64.exe -p powershell.exe -a "C:\Pfad\Zu\invader64.exe"
Ergebnis:
