$^\xi xpec_tthe ^un \xi xpecte_d$
In dieser Beitragsreihe beschäftigen wir uns mit Shellcode, wie man diesen in Prozesse einschleust und einigen Techniken zur Verschleierung der Binärdateien. Im ersten Teil schauen wir uns an, wie man Shellcode aus einem lokalen Prozess heraus ausführt.1) Zusätzlich verschleiern wir das Programm so, dass der Defender es nicht mehr als Bedrohung erkennt.
Alle benötigten Dateien findet ihr im Repository
In Teil 2 haben wir den String /bin/zsh
an die Funktion System()
gesendet, um eine root Shell zu öffen. Hierzu mussten wir aber ASLR deaktivieren- ASLR verändert Funktionsadressen bei jedem Programmneustart. Superkojiman beschreibt in seinem Blog2) ausführlich, wie man diesen Schutz dennoch umgehen kann. Hierzu müssen wir uns aber erstmal ein paar Dinge veranschaulichen
In diesem Tutorial zeige ich euch, wie man sich Administrator-Rechte an Windows PCs mittels Live-Boot CD sichern kann. Wir werden zwei Szenarien simulieren:
Das Ganze bewerkstelligen wir, indem wir den SAM Security_Accounts_Manager mittels eines Live-Linux Systems manipulieren.
Im zweiten Teil aktivieren wir das NX-Bit, welches uns vor Buffer Overflows schützen soll. Damit es spaßig bleibt, hebeln wir diesen Schutz natürlich direkt aus. Dies erreichen wir, indem der auszuführende Befehl an die libc-Funktion system()
weitergeleitet wird. Grundlegend basiert dieses Tutorial auf der Arbeit von superkojiman 3)