79 - Pentesting Finger

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

बुनियादी जानकारी

The Finger program/service का उपयोग कंप्यूटर उपयोगकर्ताओं के बारे में विवरण प्राप्त करने के लिए किया जाता है। आमतौर पर प्रदान की जाने वाली जानकारी में उपयोगकर्ता का लॉगिन नाम, पूर्ण नाम, और कभी-कभी अतिरिक्त विवरण शामिल होते हैं। ये अतिरिक्त विवरण कार्यालय स्थान और फोन नंबर (यदि उपलब्ध हो), उपयोगकर्ता के लॉगिन का समय, निष्क्रियता की अवधि (idle time), उपयोगकर्ता द्वारा अंतिम बार मेल पढ़े जाने का समय, और उपयोगकर्ता की .plan और .project फाइलों की सामग्री शामिल हो सकते हैं।

Pentesting के दृष्टिकोण से, Finger अभी भी दिलचस्प है क्योंकि प्रोटोकॉल बेहद छोटा, मानव-पठनीय (human-readable) और अक्सर legacy parsing logic के साथ लागू किया जाता है। एक daemon निम्न प्रकट कर सकता है:

  • वर्तमान में लॉग-इन उपयोगकर्ता
  • पूर्ण नाम / GECOS डेटा
  • होम डायरेक्टरीज़, शेल्स, अंतिम लॉगिन समय, और TTYs
  • .plan / .project सामग्री
  • रिले व्यवहार जिससे पहले होस्ट के माध्यम से दूसरे होस्ट से प्रश्न किया जा सके

Default port: 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) अक्सर वर्तमान user list प्राप्त करने के लिए पर्याप्त होती है, जो Nmap’s default finger NSE script भी करता है।

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

वैकल्पिक रूप से आप pentestmonkey के finger-user-enum का उपयोग कर सकते हैं, कुछ उदाहरण:

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

The important nuance with Finger enumeration is that there is कोई सख्त प्रतिक्रिया प्रारूप नहीं across daemons. Tools such as finger-user-enum work well against Solaris-style services because valid and invalid users produce different text layouts, but you may need to manually compare सकारात्मक and नकारात्मक replies and adapt the regexes if the target daemon is unusual.

Useful probes when the daemon is not behaving like 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 default scripts का उपयोग करके script execute करना

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

Nmap का finger NSE script सुरक्षित है और केवल एक null query भेजकर वर्तमान उपयोगकर्ता सूची प्राप्त करता है। यदि आप permissive daemons के खिलाफ व्यापक उपयोगकर्ता नाम अनुमान लगाना चाहते हैं, तो इस तरीके को कस्टम wordlists के साथ बढ़ाने पर विचार करें या fat-finger.nse जैसे प्रोजेक्ट्स का उपयोग करें, जो एक अनुरोध में कई संभावित अकाउंट नाम भेजते हैं और username/GECOS मेल की तलाश करते हैं।

Metasploit Nmap से अधिक तरकीबें इस्तेमाल करता है

use auxiliary/scanner/finger/finger_users

Shodan

  • port:79 USER

Command execution

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

RFC 1288 स्पष्ट रूप से Finger query के जवाब में एक user-controlled program चलाने की अनुमति देता है, और यहीं से क्लासिक |/bin/... abuse आता है। यह आजकल दुर्लभ है, लेकिन अगर आप कोई custom या legacy daemon पाते हैं, तो सावधानी से निम्नलिखित चीज़ों की जांच करें:

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

Also remember the client-side abuse path on Windows: finger.exe is a signed LOLBIN that can retrieve arbitrary text from a remote Finger server on TCP/79, then pipe that output into another process. That technique is more relevant for post-exploitation than service enumeration, so see the Linux reverse-shell page for the shell transport idea and keep it in mind when emulating attacker tradecraft.

Finger Bounce

Use a system as a finger relay

finger user@host@victim
finger @internal@external

यह सिर्फ एक कार्यान्वयन की विचित्रता नहीं है: RFC 1288 recursive @hostname forwarding ({Q2} queries) को परिभाषित करता है। यदि daemon relaying का समर्थन करता है, तो मध्यवर्ती सर्वर आपके लिए दूसरी Finger कनेक्शन खोलता है और मूल सॉकेट पर प्रतिक्रिया वापस कर देता है। इसका मतलब है:

  • आपका होस्ट अंतिम लक्ष्य से सीधे नहीं जुड़ सकता है
  • relay का उपयोग एक exposed Finger service से enumerate internal users करने के लिए किया जा सकता है
  • finger-user-enum मूल रूप से इसे -r <relay> के साथ सपोर्ट करता है

Example:

# 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 के direct output से करें। अलग फ़ॉर्मैटिंग या फ़िल्टरिंग अक्सर यह उजागर कर देती है कि क्या relay path किसी अलग backend या wrapper द्वारा संभाला जा रहा है।

संदर्भ

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें