Se eu entrar no arquivo /etc/ssh/ssh_config
, posso ver "$ OpenBSD" no topo do arquivo. No entanto, se eu alterar a porta padrão para um valor diferente, parece que não funciona. Um colega me informou que isso ocorre porque o Dropbear é o servidor de software aqui, nãoOpenSSH.
Existe uma maneira de ter certeza?Não consigo encontrar uma resposta pesquisando isso no Google.
Responder1
Conecte-se à porta ssh (por exemplo, 22) e inspecione o banner.
$ nc 10.0.0.10 22
SSH-2.0-OpenSSH_8.6
Responder2
A maioria (se não todos?) dos servidores SSH envia algum tipo de string de versão imediatamente após a conexão. Em um pequeno projeto de pesquisa meu, tentei mapear a versão do servidor SSH em um grande espaço IPv4, e o que fiz foi basicamente nc address port
.
Eu coloquei-o em um script perl com um tempo limite para facilitar o processamento da minha parte, bem como um tempo limite opcional com um valor padrão:
#!/usr/bin/perl
use warnings;
use strict;
unless ($ARGV[0] && $ARGV[1]) { die "Usage: ./raw hostname port [timeout]\n" }
my $timeout = '10s';
if ($ARGV[2]) { $timeout = $ARGV[2] }
my $response = `timeout $timeout nc $ARGV[0] $ARGV[1]`;
print $response;
Testando-o em um servidor na minha rede:
./sshbanner.pl 172.16.16.11 22
SSH-2.0-OpenSSH_5.3
Responder3
Se você estiver no servidor, observe o processo anexado à porta de rede onde ssh
é esperado ( 22
ou outra coisa).
Você pode usar netstat
ou ss
para isso. Você poderá então encontrar a linha de comando completa do servidor em execução, o que pode ser suficiente para identificá-lo ou então você pode usar outras opções:
- executá
strings
-lo é realmente o último curso de ação, mas pode produzir resultados (você certamente encontrará de volta também a string relatada remotamente pelo servidor, como mostram outras respostas) - você pode encontrar os arquivos abertos que o processo possui (procure em
/proc/$PID/fd
), que podem gerar um link para um arquivo de configuração ou um arquivo de log e, idealmente, o arquivo de log forneceria informações suficientes para identificar qual processo é esse.
Ou dependendo do seu sistema e configuração, por exemplo, você pode usar systemctl list-units
para ver exatamente o que está sendo executado atualmente e qual é o ssh
servidor (então, inspecionando systemd
o arquivo da unidade, você verá qual linha de comando é e outras informações)
Se você for externo ao servidor, veja outras respostas, mas não há garantia de que o retorno do servidor remoto seja verdade, ele pode se exibir como quiser.
Outra opção remotamente seria fazer algumas "impressões digitais SSH". Não vi isso diretamente, mas tenho certeza de que existe. Basicamente, testando vários tipos de conexões, pode-se determinar algumas informações da parte remota, além do que ela afirma ser. Acho que vários scanners de vulnerabilidade têm coisas assim.
Responder4
Você pode usar ps
para obter a lista de processos e grep
a saída de sshd
.
Com isso, você obterá o caminho para o binário executável {{por exemplo, /usr/sbin/sshd
ou algo parecido }}.
Você pode então executar este binário para -?
obter informações de ajuda e uso. Esta saída conterá oNome Definitivo do Pacote{{por exemplo, OpenSSH ou Dropbear ou algo parecido }}.