
Programa de segurança para recuperar senhas e testar servidores, roteadores e dispositivos IoT utilizando ataques de força bruta.
Programa de segurança para pentest em servidores, roteadores e dispositivos IoT
(a propósito, meu endereço bitcoin é 3A7yuqBcPAcVEM59bNAVQdTCmkxRb5JRgE )
(Aqui vai uma alternativa, também para BTC, já que recebi relatos de que algumas carteiras bitcoin não suportam certos endereços: 1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme )
Saudações, camaradas, e bem-vindos ao UBERSCAN 1.0
O UBERSCAN foi projetado para ajudar no pentest de servidores e redes, e como uma ferramenta para pessoas como eu que estão tentando entrar no ramo de hacking ético para ter uma noção de, por exemplo, quantos dispositivos estão vulneráveis ao vírus Mirai. Sim, é uma espécie de wardialler e sim, pode ser usado para quebrar senhas de servidores e dispositivos IoT, e não, não deve ser usado para fins sinistros ou nefastos (consulte AVISO LEGAL).
Exemplo de uso na linha de comando:
uberscan -user:admin -passblank -scantype:telnet -random_ip -forktimes:20
ou
uberscan -user:root -password:admin -scantype:ssh -random_ip -forktimes:20
ou talvez
uberscan -userfile:wordlist.txt -passfile:wordlist.txt -scantype:telnet -random_ip -forktimes:15
Tente combinar e ajustar essas várias opções até encontrar coisas divertidas para brincar! (SÓ DE BRINCADEIRA, NÃO QUERO IR PARA A CADEIA AAAAAAARRRGGGHHHHHH!)
Este programa (doravante referido como UBERSCAN ou uberscan) é distribuído sob a licença GPL 3. Todos os direitos relevantes reservados. UBERSCAN É DIREITO AUTORAL (c) Batch McNulty 2017. Você pode distribuir, modificar e/ou copiar UBERSCAN sem permissão, desde que cumpra os termos da licença GPL 3.
Esta utilidade foi projetada para USO LEGAL APENAS. Não serei responsabilizado por uso malicioso. Hackers maliciosos já terão suas próprias ferramentas; o UBERSCAN foi projetado para ajudar a proteger sistemas de computador, não para destruí-los. Se você encontrar servidores vulneráveis usando os scanners -random_ip e -random_ipblock, é encorajado a entrar em contato com os proprietários e informá-los sobre a falha de segurança.
Seja legal! É uma ordem!
Por favor, envie todas as ameaças de morte, mandados de extradição e ofertas de emprego suspeitas para [email protected]. Tentarei responder, mas não posso garantir nada...
Ele tem algumas dependências, então estou incluindo um arquivo de lote que deve instalá-las automaticamente. Basta abrir uma janela de terminal no diretório onde ele está e digitar
sudo bash INSTALL.bash
..espere (pode demorar um pouco), e você deve conseguir executar o UBERSCAN (tente perl uberscan.pl se ficar realmente emperrado)
Caso o programa de instalação não funcione, as bibliotecas necessárias são:
WWW::Curl::Easy HTTP::Request Net::SSH::Expect Net::Telnet Net::FTP Net::POP3 IO::Socket::INET Scalar::Util Fcntl utf8 Encode
Scalar::Util, Fcntl, utf8 e Encode devem estar incluídos na sua distribuição Perl, que vem com Linux. As outras provavelmente precisam ser instaladas separadamente... infelizmente, no caso do Curl::Easy, a própria dependência tem uma dependência, que pode ser difícil de encontrar. Se o arquivo INSTALL.bash não deixar seu computador executando o UBERSCAN, tente executar um ou todos estes comandos e execute o arquivo de instalação novamente:
sudo apt-get install libcurl4-doc
sudo apt-get install libcurl3-dbg
sudo apt-get install libgnutls-dev
sudo apt-get install libidn11-dev
sudo apt-get install libkrb5-dev
sudo apt-get install libldap2-dev
sudo apt-get install librtmp-dev
sudo apt-get install zlib1g-dev
Além disso, o arquivo INSTALL.bash requer cpan, que deve vir com Linux - se não vier, digite
sudo apt-get install cpan
no terminal antes de executá-lo.
Mais uma coisa muito importante:
O módulo Net::SSH::Expect exige que você faça algumas alterações em um dos arquivos do sistema. O arquivo é:
/etc/ssh/ssh_config
Você precisará de permissões de superusuário para ajustá-lo, então carregue-o em seu editor favorito e adicione as seguintes linhas a ele:
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
(A linha "Host *" pode já existir; se existir, não adicione uma nova)
Se você não puder fazer isso, o uberscan ainda funcionará - você simplesmente não conseguirá usar a opção -scantype:ssh.
2.1 Introdução
O UBERSCAN foi projetado em uma plataforma Ubuntu Linux, então não posso garantir que funcionará em qualquer outra, embora esteja bastante confiante de que ficará bem em qualquer PC Linux. Windows e Macs, nem tanto, mas fiquem à vontade para ajudar-se.
O UBERSCAN pode escanear uma rede TCP/IP em busca de dispositivos com senhas fracas (incluindo roteadores e caixas IoT) e servidores de e-mail SMTP vulneráveis a spammers. Sua função principal é realizar ataques de força bruta em servidores protegidos por senha (para fins éticos APENAS, é claro!)
Ele pode escanear os seguintes serviços/vulnerabilidades:
O UBERSCAN é programado com as portas padrão, mas você pode substituí-las com a opção -port:.
2.2 Nota sobre o modo wordlist:
O modo wordlist (-passlist:textfile.txt e -userlist:textfile:txt) percorre listas de palavras e tenta realizar força bruta nos IPs selecionados com elas.
O modo wordlist difere em varreduras diferentes. Quando você seleciona um bloco de IP, faixa de IP ou lista de IPs, o UBERSCAN percorre os alvos e tenta o mesmo nome de usuário/senha em cada IP, depois volta e tenta o próximo nome de usuário e/ou senha da lista até que a(s) lista(s) de palavras se esgote(m). Esta é uma tentativa bastante básica de superar a antiga segurança de senha de "três tentativas e você está fora" - se a lista for longa o suficiente, quando o mesmo IP voltar novamente, você terá uma nova "chance" nele.
A geração aleatória de IP (-random_ip) funciona de forma diferente. Como os IPs são escolhidos aleatoriamente e a busca pode continuar indefinidamente, não há lista de IPs para percorrer, então toda a lista de palavras precisa ser aplicada ao alvo de uma só vez.
2.3 O scanner SSH:
Programar o scanner SSH me deu muito trabalho. Eu o programei para procurar os prompts "~", ">" e "#", bem como uma mensagem "Welcome to", um grande número de saídas do tipo "bad password", e também criei uma terceira opção: se não encontrar nenhum, ele cria um arquivo "SSH-MAYBES.txt". Não deve criar falsos negativos ou falsos positivos, mas se criar, por favor, envie-me quaisquer arquivos que ele gerar (devidamente editados, é claro) para que eu possa corrigir o problema.
2.4 Ovos de páscoa:
Existem algumas referências culturais divertidas em uma ou duas das mensagens de status e erro do programa. Isso dá ao UBERSCAN um pouco de personalidade. Se isso criar confusão ou parecer um pouco bobo demais, estou sempre feliz em receber feedback.
2.5 Encerramento e pedido choramingado:
Admito que o UBERSCAN é um pouco rudimentar, mas não precisa continuar assim. Estou colocando um endereço bitcoin aqui, e se eu tiver uma resposta boa o suficiente, trabalharei no refinamento de sua crudeza e haverá UBERSCAN 1.1, 1.2, talvez até um UBERSCAN 2.0. Tudo depende de você! Envie seu dinheiro para o endereço bitcoin:
1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme
-Lembre-se, se você usar este programa como parte do seu trabalho, você realmente deveria pagar! (Como incentivo adicional - se eu conseguir dinheiro suficiente e as pessoas me pedirem, posso até tirar a tela de incômodo!)
Embora funcione sem elas, é fortemente recomendado que você conceda privilégios de superusuário ao UBERSCAN.
O UBERSCAN é um utilitário de linha de comando e, como tal, espera receber pelo menos uma opção.
Essas Opções Por Completo:
TIPOS DE VARREDURA:
-scantype:xxx Define o tipo de varredura. "xxx" pode ser SSH, FTP, POP3, SMTP, HTTP, Telnet ou Banner. Consulte -ftpanon e -smtpbug
-port:nn Define a porta para algo diferente do padrão para aquele serviço. ("-scantype:banner" pesquisa na porta 1433, a porta SQL).
-ftpanon Procura servidores ftp anônimos. Usado em vez de -scantype e -user -pass
-smtpbug Testa o bug smtp. Usado em vez das opções -scantype e -user -pass
-spamcheck Funciona apenas em varreduras "-scantype:smtp". Cada vez que um servidor é conectado, verifica se ele está vulnerável a abuso por spammers. Desligado por padrão.
-novrfy Ao fazer uma varredura SMTP, impede que o UBERSCAN emita comandos VRFY. Implica -spamcheck.
VARREDURA DE NOME DE USUÁRIO E SENHA:
-user:xxx -pass:xxx Define o nome de usuário / senha a serem testados. Se você estiver navegando pela internet em busca de servidores aleatórios com a opção -random_ip, esta e -userblank / -passblank são as únicas opções de nome de usuário / senha que o UBERSCAN aceitará. Normalmente você usará ambos, mas eles são intercambiáveis com as opções -userfile e -passfile (wordlist) onde são permitidas, bem como com as opções -userblank e -passblank. Observe que eles não fazem nada se -scantype estiver definido como SMTP ou se as opções -ftpanon ou -smtpbug estiverem definidas.
-userblank -passblank -userblank configura para tentar um nome de usuário em branco; -passblank define uma senha em branco. Isso pode ser útil para alguns desafios HTTP onde um ou ambos são deixados em branco por padrão.
-userfile:wordlist.txt -passfile:wordlist.txt Tenta cada nome e senha na lista de palavras especificada. Só posso garantir que funcionam com palavras separadas por espaço regular - o uso de listas contendo acentos, caracteres não latinos e símbolos é por sua conta e risco (embora o símbolo "@" deva funcionar bem).
REGISTRO, NOVAS TENTATIVAS, TIMEOUTS, VARREDURA DE PORTA e PAUSA:
-debug Registra tentativas de login malsucedidas, bem como todos os erros, exceto os mais comuns. Os erros registrados no modo debug são desconexões repentinas enquanto conectado a servidores; junto com as tentativas de login malsucedidas, isso também pode ser usado para diagnosticar respostas inesperadas. Também salva páginas da web coletadas no modo -scantype:html
-logall Como -debug, mas também registra erros muito comuns que, de outra forma, abafariam os mais interessantes (estes são marcados como "Erro banal"). Implica -debug (ou seja, você não precisa digitar a opção "-debug" se usar "-logall").
-csv TODOS os arquivos de saída, com exceção de páginas da web salvas no modo de varredura html, são salvos no formato CSV. Os dados salvos, na ordem em que são salvos, são: ID do processo, tipo de varredura, endereço IP, número da porta, nome de usuário, senha e "minutesup" - o número de minutos que o UBERSCAN está em execução.
-whois Executa uma consulta WHOIS no servidor quando uma senha é encontrada e registra o resultado em um arquivo de texto (whoisreport.txt). Desligado por padrão.
-max_retries:nn Isso é definido como 5 por padrão. Se você é um desses pobres coitados paranóicos trabalhando atrás de proxies e conexões wi-fi ruins, fique à vontade para aumentá-lo para 15 ou 20 - eu sei que fiz isso! Uma pessoa normal pode até querer ajustá-lo para baixo; por outro lado, se você realmente quiser garantir que tentará todas as senhas em cada IP, pode configurá-lo ridiculamente alto, como -max_retries:999 (embora eu não recomende isso!)
-timeout:nn onde nn é um número. Define a variável de timeout em segundos. O padrão é 60. Se você estiver atrás de um proxy, vai querer que seja bem alto, na casa das centenas (eu escrevi este programa atrás de um proxy). Se você estiver usando muito a varredura SSH, pode querer um valor mais baixo devido à forma como o SSH::Expect funciona - ele não retorna dados até que o período de timeout tenha passado. Se você estiver usando apenas em sua LAN e nunca se conectando à internet, talvez ainda mais baixo. Pessoalmente, eu não deixaria abaixo de 60 segundos.
-portscan_timeout: Novamente, é um número de segundos. Está definido como baixo, mas ocasionalmente, se você quiser ter certeza absoluta, pode querer aumentá-lo para 5 ou até 10. É sua escolha.
-noportscan Desliga a varredura de porta. Esse recurso é útil se você estiver atrás de proxychains ou de um programa de proxy semelhante, ou se tiver certeza de que tem um endereço IP / porta válidos para hackear e não quiser arriscar pular por engano. Especialmente quando você está atrás de uma conexão ruim.
-pause Pausa o UBERSCAN após processar as entradas para que você possa verificar se configurou tudo corretamente. Desligado por padrão.
MULTITAREFA:
-forktimes:nn Usa processamento paralelo para fazer várias conexões ao mesmo tempo - Observe que a opção -forktimes só funciona se a opção -random_ip ou -random_ipblock estiver definida. Eu pessoalmente escolho um valor entre 5 e 15, embora seu resultado possa variar dependendo da largura de banda disponível. Sabe-se que ele trava neste modo - então, como alternativa, você pode achar mais fácil simplesmente configurar um arquivo de lote com muitos comandos como este copiados e colados nele:
perl uberscan.pl -user:admin -pass:password -random_ip -scantype:telnet &
e depois executá-lo com bash.
OPÇÕES DE IP:
Por padrão, o UBERSCAN procura endereços IP em um arquivo chamado ipnumbers.txt. Se isso for inconveniente, há muitas opções de linha de comando que permitem selecionar IPs de seu próprio arquivo, selecioná-los aleatoriamente ou (de forma rudimentar) gerá-los a partir de faixas ou blocos de IP. Você pode até selecionar um endereço IP individual e escaneá-lo - muito bom para ataques de dicionário intensos!
-ipfile:filename.txt Obtém endereços IP do arquivo filename.txt. Pode ser qualquer arquivo. Ele procura no arquivo fornecido qualquer coisa que se encaixe em um endereço IP e o coloca em uma lista que ele então escaneia. Isso significa que ele deve ser capaz de analisar sua própria saída, então você pode executar uma varredura -random_ip com as opções -debug ou -logall ativadas, renomear o arquivo errors.txt que ele gera e alimentá-lo em uma nova varredura sem fazer toda aquela edição irritante.
-ipblock:nnn.nnn.0.0/16 -ipblock:nnn.nnn.nnn.0/24 -ipblock:192.168.0/16 - Pesquisa tudo de 192.168.0.0 a 192.168.255.255 -ipblock:192.168.1/24 - Pesquisa tudo de 192.168.1.0 a 192.168.1.255 Escaneia o bloco de IP selecionado (/16 ou /24) em vez de usar ipnumbers.txt. Não é muito inteligente - só conta a partir de zero, então se você inserir 192.168.1.0/16, ele ainda pesquisará de 192.168.0.0 a 192.168.255.255. Não se preocupe, sempre há -iprange!
-iprange:nnn.nnn.nnn.nnn - nnn.nnn.nnn.nnn -iprange:192.168.0.0 - 192.168.0.3 -iprange:192.168.5.0 - 192.168.7.2 Escaneia a faixa especificada de números IP. No entanto, só pode processar os dois últimos octetos.
-ipsingle:nnn.nnn.nnn.nnn -ipsingle:192.168.0.1 Escaneia um único IP - muito poderoso se usado em conjunto com as opções -userfile: e -passfile:!
-random_ip Percorre uma rotina que cria números IP aleatórios para que você possa navegar pela internet selvagem em busca de ação. NÃO USE ISSO PARA FINS NEFASTOS!
-random_ipblock:nnn -random_ipblock:nnn.nnn Como -random_ip, mas pesquisa apenas no bloco de IP especificado. Observe que zeros à direita e notação de barra NÃO SÃO USADOS NESTA OPÇÃO! (ao contrário da opção -ipblock) Exemplo:
perl uberscan.pl -scantype:banner -random_ipblock:192.168 perl uberscan.pl -scantype:banner -random_ipblock:192
JURIDIQUÊS / CLÁUSULAS PADRÃO:
O emocionante mundo das cláusulas padrão legais agora está disponível para você; basta invocar o UBERSCAN com a opção -gpl para ver a licença sob a qual ele é distribuído rolar pela sua tela. Sério, qualquer um que esteja pensando em editar e/ou redistribuir este programa deve lê-la - você pode fazê-lo, mas deve continuar exibindo meu nome e me creditar pela escrita do programa original.