Si entro en el archivo /etc/ssh/ssh_config
, puedo ver "$OpenBSD" en la parte superior del archivo. Sin embargo, si cambio el puerto predeterminado a un valor diferente, no parece funcionar. Un colega me informó que eso se debe a que Dropbear es el servidor de software aquí, noAbiertoSSH.
¿Hay alguna manera de estar seguro?No puedo encontrar una respuesta buscando eso en Google.
Respuesta1
Conéctese al puerto ssh (por ejemplo, 22) e inspeccione el banner.
$ nc 10.0.0.10 22
SSH-2.0-OpenSSH_8.6
Respuesta2
La mayoría de los servidores SSH (¿si no todos?) envían algún tipo de cadena de versión inmediatamente después de conectarse. En un pequeño proyecto de investigación mío, intenté mapear la versión del servidor SSH en un gran espacio IPv4, y lo que hice fue básicamente nc address port
.
Lo incorporé a un script en Perl con un tiempo de espera para facilitar el procesamiento por mi parte, así como un tiempo de espera opcional con un valor predeterminado:
#!/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;
Probándolo contra un servidor en mi red:
./sshbanner.pl 172.16.16.11 22
SSH-2.0-OpenSSH_5.3
Respuesta3
Si está en el servidor, observe el proceso conectado al puerto de red donde ssh
se espera ( 22
o algo más).
Puedes usar netstat
o ss
para eso. Luego podrá encontrar la línea de comando completa del servidor en ejecución, lo que puede ser suficiente para identificarlo o puede utilizar otras opciones:
- ejecutarlo
strings
es realmente el último curso de acción, pero puede producir resultados (seguramente encontrará también la cadena que informa el servidor de forma remota, como muestran otras respuestas) - puede encontrar los archivos abiertos que tiene el proceso (ver en
/proc/$PID/fd
), que pueden generar un enlace a un archivo de configuración o un archivo de registro, e idealmente el archivo de registro brindaría suficiente información para identificar qué proceso es este.
O dependiendo de su sistema y configuración, por ejemplo, puede usar systemctl list-units
para ver exactamente qué se ejecuta actualmente y cuál es el ssh
servidor (luego, al inspeccionar systemd
el archivo de la unidad, verá qué línea de comando es y otra información)
Si es externo al servidor, consulte otras respuestas, pero no hay garantía de que lo devuelto desde el servidor remoto sea cierto, puede mostrarse como quiera.
Otra opción de forma remota sería realizar algunas "huellas digitales SSH". No lo he visto directamente, pero estoy seguro de que existe. Básicamente, al probar varios tipos de conexiones, se puede determinar cierta información de la parte remota, además de lo que dice ser. Supongo que varios escáneres de vulnerabilidades tienen cosas así.
Respuesta4
Puede utilizar ps
para obtener la lista de procesos y grep
el resultado de sshd
.
Con esto, obtendrás la ruta al binario ejecutable {{ eg /usr/sbin/sshd
o algo así }}.
Luego puede ejecutar este binario para -?
obtener ayuda e información de uso. Esta salida contendrá elNombre definitivo del paquete{{ por ejemplo, OpenSSH o Dropbear o algo así }}.