CreateRemoteThread unter Linux

8

Ich verwende CreateRemoteThread in Windows und möchte wissen, ob das Gleiche unter Linux möglich ist. Ist es möglich, dies in Linux zu tun?

    
CrazyC 10.05.2012, 13:17
quelle

2 Antworten

6

Die traditionelle Vorgehensweise unter Linux besteht darin, eine dynamische Bibliothek (.so) mit Ihrem Code zu erstellen und anschließend das Laden Ihrer Bibliothek in die laufende Anwendung zu erzwingen. Es gibt keinen One-Stop-Shop, wie es mit CreateRemoteThread unter Windows gibt.

Hier sind die grundlegenden Schritte:

  1. Erstellen Sie eine dylib / so, die den Code enthält, den Sie im Remote-Prozess ausführen möchten.
  2. Schreiben Sie einen sehr einfachen Code in die Assembly, der die angegebene so-Datei lädt (hauptsächlich kopieren und einfügen von Dieser Link , Teil 1).
  3. Betten Sie den Loader ASM als binäre Payload in einen Puffer in einer zweiten Codedatei / App ein. Hier verwenden Sie ptrace , um die in Schritt 2 geschriebene binäre Nutzlast auszuführen, die die Ziel-App auslöst Rufen Sie _dl_open() für die in Schritt 1 erstellte .so auf, die den tatsächlichen Code enthält, den Sie ausführen möchten. (Beispiel in demselben Link , Teil 2.)

Wenn Ihr Code in einem separaten Thread von der Hauptpumpe ausgeführt werden soll, sollten Sie pthread_create im Code in Schritt 1 verwenden.

Ich hoffe, das beantwortet Ihre Frage. Ja, es ist komplizierter als unter Windows. aber es sollte genauso gut funktionieren. Außerdem können Sie nahezu den gesamten Code aus den Schritten 2 und 3 für zukünftige Remote-Code-Injection-Projekte wiederverwenden.

    
Mahmoud Al-Qudsi 20.02.2013 17:36
quelle
-2

'# beinhalten pthread.h

int pthread_create (pthread_t * thread, const pthread_attr_t * attr,                           void * (* start_routine) (void *), void * arg); ' Kompiliere und verlinke mit -pthread.

siehe man pthread_create für Details

    
Andrey Dmitriev 20.02.2013 15:05
quelle

Tags und Links