Acceso SSH a TP-LINK TL-ER5120

Queriendo acceder por telnet o ssh a mi TL-ER5120v4 observo que no responde ni al puerto ssh 22 ni al telnet 23. Pero buscando en el menú de administrador descubro que activando SYSTEM TOOLS -> DIAGNOSTICS -> REMOTE ASSISTANCE me habilita en red local el acceso ssh (si lo queremos desde fuera tendremos que permitirlo en Remote Management).

El caso es que una vez activo ya me responde al puerto ssh con putty o con el comando ssh de windows. Pero no me loguea vía ssh con ninguna clave conocida.

Veo por internet que las claves SSH de tp-link solo las sabe tp-link y las usa para dar soporte remoto pero que vienen en su firmware y se puede sacar fácilmente. Hay 2 opciones. La primera para los equipos más antiguos es sacarlo del fichero shadow. Tan sencillo como bajar el firm que tiene nuestro equipo, descomprimirlo con 7zip y navegar a etc/shadow donde veremos algo así:

root:$1$GTN.gpri$DlSyKvZKMR9A9Uj9e9wR3/:15502:0:99999:7:::

nuestro usuario es root y nuestra clave está encriptada en md5, pero como son claves conocidas admin 1234 etc… si ponemos esa cadena en Google seguro que encontramos la clave descodificada, por ejemplo si ponemos en google

$1$GTN.gpri$DlSyKvZKMR9A9Uj9e9wR3/

nos lleva a esta web https://blog.xynos.co.uk/2020/03/hashcat-fun.html donde vemos que la clave es sohoadmin

pues ya tenemos usuario y clave.

Pero en los equipos mas nuevos en el fichero shadow encontraremos algo asi:

root::16800:0:99999:7:::

donde solo podemos obtener el usuario “root”  pero la clave no viene definida, y esta se genera al vuelo al arrancar el equipo. La generación podemos verla en el firmware en la ruta etc/init.d/dropbear donde vemos el código que genera la clave ssh.

getNewPasswd()
{
	. /lib/functions.sh 
	local macAddr=""
	local username=""
	macAddr=$(uci_get tddp macaddr macaddr)
	username=$(uci_get "accountmgnt.@account[0].username")
	echo "macAddr is $macAddr" > /dev/console
	#echo "username = $username" > /dev/console

	local key=$(echo -n "$macAddr""$username" | md5sum)
	key=$(echo ${key:0:16})
	#echo "key is $key" > /dev/console

	echo ${key}
}

Se genera combinando el usuario de acceso web junto con la MAC de la LAN, creando su md5 y usando solo sus primeros 16 caracteres.

Desglóselo

macAddr hace referencia a la MAC de la LAN. Se encuentra aquí Red -> MAC

D8:47:32:12:34:56

¡OJO! La mac se separa con : no con – ya que en esa sección muchas veces la separan con –

username hace referencia al usuario que se creó durante el proceso de configuración

administrator

la clave local junta las dos piezas y las canaliza a md5

D8:47:32:12:34:56administrator

Podemos utilizar esta web: https://www.md5.cz/

d53ffaa1f8b8ce3b62f6b60673800d07

key=$(echo ${key:0:16} toma el hash, y sólo utiliza los 16 primeros caracteres de ese hash como contraseña.

d53ffaa1f8b8ce3b

Ahora tenemos la contraseña

Por cierto si queremos acceder desde putty no tendremos ningún problema pero si entramos con el comando de Windows puede que nos de un error al ejecutar

ssh [email protected]

el error es

Unable to negotiate with 172.16.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,[email protected]

Simplemente debemos llamarlo así

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 [email protected]

y ya nos dejará acceder

También he encontrado algún linux que hay que añadirle más parámetros para que conecte vía ssh:

ssh -o MACs=hmac-sha1 -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=ssh-dss,ssh-rsa [email protected]
Comparte esta web mediante:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook
X (Twitter)
YouTube
LinkedIn
Instagram