viernes, 28 de diciembre de 2018

Horno microondas de seguridad

Con esto de la domotica y de los electrodomésticos conectados he descubierto que si mi horno micro-ondas también es capaz de integrarse con mi sistema de seguridad. ¿Qué se puede conseguir? Para explicarlo tendría que contar qué tenía montado primero.

Entre otros elementos que tengo controlados con la domótica están las luces y la calefacción. Esto ayuda mucho a decidir que parezca que estoy en casa si me voy de viaje o poner la temperatura óptima cuando regrese. Recordemos que conseguir esa temperatura llevará su tiempo. Y ahí es donde quiero llegar. Temperaturas.

Si puedo controlar la temperatura de la vivienda,  tengo la alarma asociada a la domótica y además puedo asociar también el micro-ondas... Sí, así es: el que intente entrar en mi casa y no tenga tanto el PIN como el 2FA asociado teminará bien churruscaito.

Y, nos os voy a negar, ya ha sucedido una vez. Tenía una foto pero como ahora no la encuentro, os muestro un ejemplo de cómo quedó:

Intruso churrucado
Intruso churrucado

La foto original procede del blog Dulce Muffin: imagen.

Si queréis que cuente con más detalle cómo hice toda la integración, avisadme en estos comentarios. ¡Pero sólo hoy! ¿eh?

martes, 4 de diciembre de 2018

Tethering conectado sin Internet: me aparece el triangulo amarillo.

Hacía tiempo que me pasó pero justo ahora que había mucha necesidad no conseguía hacer funcionar el tethering del móvil Androd. No sé cómo, en poco tiempo, he conseguido poner las palabras clave en Google y en poco tiempo he encontrado una solución. El problema es que aunque había conexión hacia el móvil no salía hacia Internet mostrando el típico triángulo amarillo junto al símbolo de conexión.

Para poder solucionarlo hace falta tener las herramientas de Android instaladas: adb. En mi caso lo tengo en el path pero llegado el caso habría que estar en la misma carpeta donde las tengamos descargadas.

Una vez tengamos en teléfono conectado al ordenador y con el modo debug activado (como es mi caso) ejecutaremos:

adb shell

Así podremos acceder a la shell de nuestro móvil Una vez nos encontremos en la misma obtendremos los datos necesarios para solucionar el problema. Todo sea dicho: con el emulador de consola no funciona este procedimiento.

settings get global tether_dun_required

Que nos podrá devolver tres valores:

  • null: nunca ha sido configurado
  • 0: no avisar al proveedor que se está usando tethering.
  • 1: no lo encuentro. 
En mi caso me devolvía null.

Por lo que siguiendo las instrucciones que indicaban para cambiar el valor, le he puesto cero (0):

settings put global tether_dun_required 0

Ahora, y en mi caso sin necesidad de reiniciar (aunque en las instrucciones indican que se haga) he conseguido volver a usar la conexión del móvil desde el ordenador.

La fuente ha sido una respuesta de un foro del OnePlus.

martes, 30 de octubre de 2018

VMWare: Acceder al POST de la máquina virtual

Cuando estuve montando la máquina virtual que tantos problemas me dio también tuve la necesidad de accede al POST de la BIOS. El famoso Power On Self-Test. Y es una tarea que en unas cuantas ocasiones me ha hecho falta y no he sido capaz de realizar o me ha costado mucho encontrar cómo se hace. Así, me encontré con el enlace en el que explican cómo forzar que la pantalla del POST permanezca un tiempo determinado (y que te tiempo a pulsar la tecla adecuada si te hace falta) o que una única vez se acceda directamente a esta pantalla sin necesidad de pulsar dicha tecla (por ejemplo, DEL/SUPR).

Así, editando el fichero .vmx con la máquina virtual apagada y añadiendo alguna de las siguientes opciones podremos obtener nuestro objetivo:


  • bios.forceSetupOnce = "TRUE" : la siguiente vez que se encienda se accede directamente a la BIOS. Sólo lo hará una única vez. Para el resto de ocasiones, tocará volver a elegir entre algunos de estos procedimientos.
  • bios.bootDelay = "xxxx" : Donde el parámetro son los milisegundos que se mostrará el POST. El máximo tiempo permitido son 10 segundos (luego, 10.000 milisegundos, acordándose de no poner el separador de millar).

Espero que este proceso nos sea de ayuda en un futuro, sobretodo cuando no nos acordemos de cómo se hacían estas cosas.

[Update]

Actualizo con la aportación del compañero en la que SytAdm nos explica muchísimas más opciones para el acceso a la BIOS desde una máquina virtual. Muchas gracias!

domingo, 26 de agosto de 2018

Windows no puede finalizar la configuración del sistema

Tal y como comenté recientemente, instalé una máquina virtual con Windows 10 a la que le conseguí hacer un sysprep después de varios problemas al intentar lanzarlo. El caso es que ahora me he encontrado con otro problema. Al reiniciar la máquina para probar la instalación, a mitad de camino, me da otro error:

Windows no puede finalizar la configuración del sistema. Para intentar reanudarla, reinicie el equipo
Windows no puede finalizar la configuración del sistema. Para intentar reanudarla, reinicie el equipo
Aunque voy a enumerar las distintas opciones que he encontrado, ya hago un aviso a navegantes de que sólo he podido averiguar qué es lo que ha hecho que salga este error volviendo a instalar la máquina virtual.

Las posibles soluciones que he encontrado son:

  1. Modificar el registro: si bien en pei.com indican que se modifique la clave del registro setup en Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\ChildCompletion no me ha funcionado. Para poder abrir el regedit.exe se accede a una consola pulsando Shift+F10 (puede que toque hacer otras combinaciones).
  2. Con una consola, ejecutar tracerpt c:\Windows\Panther\setup.etl -o c:\carpetaAux\setupLogfile.csv -of CSV. Esto permitirá poder abrir el fichero de salida con el notepad (ejecutándolo también desde la consola). Si se le añade el parámetro -of csv nos lo convierte a este formato. Si tuviese algunas herramientas en la misma máquina podría tirar de ellas directamente (como csvviewer de Nirsoft)
tracerpt c:\Windows\Panther\setup.etl -o c:\carpetaAux\setupLogfile.csv
tracerpt c:\Windows\Panther\setup.etl -o c:\carpetaAux\setupLogfile.csv
Lo malo es que son tantos datos que puede ser muy difícil encontrar el problema. 
  1. En troubleshooter.xyz también hay unas cuantas acciones que se pueden hacer. 
  2. En HowISolve proponen abrir desde la ventana del mismo error una consola y, o bien desde c:\Windows\System32\oobe ejecutar msoobe.exe y crear un usuario o abrir una consola mmc y activar alguno de los administradores que se encuentran en el sistema. En mi caso, no he tenido éxito. Corrijo: mientras escribía estas líneas sin ver resultados se ha producido un cambio, posiblemente al ejecutar la primera opción (ya había tirado previamente a por la segunda). Sin embargo, después de muchas horas, no me ha funcionado.

Ninguna de estas opciones me ha funcionado. Por lo que he decidido seguir el consejo del último post de este enlace:

I create a [...] technician VM just before sysprepping [...], run Windows Update and update installed software like browsers and Office, then remove all installers and run Disk Clean-up to remove temp files, sysprep again [...] to replace my old one.

Although Windows Update works in Audit Mode, build and feature upgrades do not work. When I want to upgrade my image I sysprep it once with /generalize, /oobe and /reboot switches, create a dummy local admin account in OOBE, sign in to desktop to upgrade for instance with latest Insider build, when done run sysprep with /audit and /reboot switches to boot back to Audit Mode, remove the dummy user and its profile folder, remove all installers and run Disk Clean-up to remove temp files, sysprep again[...] to replace my old one.

Por lo tanto, ¿qué hice?:
  1. Hice una instalación nueva. 
  2. Actualización completa.
  3. Limpieza de Appx desde powershell
  4. Dism-Clean desde powershell: dism /online /Cleanup-Image /StartComponentCleanup /ResetBase
  5. Instalación de software: 
    1. Navegadores
    2. Notepad ampliado: El "plusplus", sublime... Uno de estos
  6. Un editor gráfico: photoshop, gimp...
  7. Compresor  / Desompresor: Zip, 7zip, Rar
Seguro que me dejo algún programa y algún paso intermedio, pero lo más importante de todo: por cada una de estas hice una copia de seguridad para después lanzar:

sysprep /audit /reboot

Al reiniciar, sólo tuve que eliminar el usuario de la instalación y su perfil tal y como recomendaban en el texto parafraseado. Una vez eliminados: 

sysprep /generalize /oobe /shutdown.

Lo más importante de todo: como se puede ver no he incluido el antivirus. Y es porque antes de instalarlo me hice una copia de seguridad. Si repetía este proceso con el antivirus me volvía a salir el error descrito arriba. Por lo tanto, y de momento, me tocará hacer la instalación de esta herramienta una vez instalada la imagen. El día entero de instalación de parches y pequeños programas me lo ahorro. 

Siento mucho no haber podido ayudar a arreglar el error directamente sin tener que reinstalar. 

domingo, 19 de agosto de 2018

Montar davfs con fstab

A ver si consigo escribir esta entrada en poco tiempo y que se entienda.

Hace tiempo que tenía configurado en una raspberry un Kodi con la distribución raspbian. Una de las configuraciones que tenía era que fstab se tenía que conectar contra un servidor ftp montando así la carpeta en local. Pero de repente, dejó de funcionar. Y así se quedó. Hoy, he conseguido recuperar el montaje, con la diferencia de que ahora se conectará por webdav. Y es la primera vez que lo he hecho. Espero no dejarme ningún dato imprescindible.

Lo primero, instalar davfs2:

# apt-get davfs2

A mi me ha preguntado si quería configurar el setuid para que todos los usuarios pudieran utilizar este tipo de sistema de ficheros (al fin y al cabo es como se comporta). Por mi parte lo he aceptado.

Después, hay que editar el fichero /etc/davfs2/secrets, indicando el punto de montaje, usuario y contraseña (por lo tanto, estarán en claro):

/mnt/puntoDeMontaje miUsuario elChorroConLaContraseña

¡Mucho ojo! Aquí me he vuelto loco porque en varios manuales me he encontrado con que indican

https://laUrlAlRecursoDeRed miUsuario elChorroConLaContraseña

Pero no me terminaba de funcionar. Si no es por SleeplessBeastIE no hubiera probado la primera opción que he indicado.

Ahora toca modificar fstab. Intentaré poner tal y como lo tengo, porque a decir la verdad, además de las diferencias con el tipo de sistema de ficheros, los parámetros básicos estándares que antes funcionaban ya no lo hacen:

https://laUrlAlRecursoDeRed /mnt/puntoDeMontaje davfs defaults,auto,ro,uid=1000,gid=1000,_netdev 0 0

Así, si estando como root ejecutamos:

mount -a

Al buscar datos en nuestro punto de montaje deberíamos de poder ver los datos esperados. Por mi parte, he probado reiniciando y en efecto, los recursos se han montado automáticamente.

Como de costumbre, habrá otras maneras de hacerlo pero en mi caso, y para mis necesidades, esto es suficiente.

domingo, 29 de julio de 2018

Sysprep no pudo validar la instalación de Windows

Estaba montando una instalación en una máquina virtual y la quería "generalizar" con la herramienta sysprep para poder hacer la típica una imagen que después permite adelantar trabajo a la hora de hacer futuras instalaciones. 

Al ejercutar dese una consola con permisos administrativos:

sysprep /oobe /generalize /shutdown /unattend:rutaUnattend.xml

me salio una ventana informativa (con la "i" azul) con el mismo mensaje del título de este post:

Sysprep no pudo validar la instalación de Windows

Me forzaba a buscar en la ruta %windir%\Panther\setupact.log, pero la verdad, un fichero de texto tan largo y con tanto contenido iba a ser imposible saber qué tenía que buscar. Por lo tanto, una búsqueda rápida en Google me llevó a un vídeo de pantallazos.es en el que explicaban qué hacer. A saber:

  1. Arrancar una consola de powershell con permisos administrativos.
  2. Importar módulo: Import-Module appx
  3. Importar otro módulo: Import-Module dism
  4. Desinstalar programas que vienen al instalar Windows: Get-AppxPackage | Remove-AppxPackage
A pesar de que saldrán errores con este último comando, al finalizar, ya podremos lanzar una vez más sysprep sin problemas. 

miércoles, 11 de julio de 2018

FreePBX y downgrade (accidental)

Llevaba mucho tiempo sin escribir y quiero aprovechar que hace unos días metí la gamba a la hora de gestionar los módulos del FreePBX que muchos ya sabéis tengo instalada, quería escribir cómo lo he arreglado para acordarme la siguiente vez que vuelva a tropezar sobre esa piedra.

Lo que hice fue lanzar un downgrade del FreePBX Framework de la versión 14 a la 13. El resumen es que me arrepentí cuando vi lo que había hecho y cuando lo paré, ya era demasiado tarde.

Modulo FreePBX Framework - Upgrade
Modulo FreePBX Framework - Upgrade

En el botón que me indica "upgrade" me ponía "downgrade". ¡Y lo seleccioné!

¿Cómo conseguí solucionarlo?

Buscando primero el módulo en la imagen .img o .iso desde donde se volcó el sistema que instalamos en la tarjeta SD de la raspberry.

FTK para extraer el módulo framework para FreePBX.
FTK para extraer el módulo framework para FreePBX.

Una vez extraído, lo vamos a subir por SFTP a nuestra carpeta /home del sistema que vamos a reparar. Recordemos dónde se guardan los módulos:

/var/www/html/admin/modules/framework/

Lo primero: crearemos una carpeta de seguridad para copiar los ficheros que se encuentran en la ruta del módulo:

mkdir localModuleFramework
cp -fR /var/www/html/admin/modules/framework/*.* ./

Habrá que elevar privilegios.  Y ahora toca machacar los datos de la carpeta (creo recordar que lo copie así, ojo, que podría dejarme algún parámetro):

cp -fR./carpetaConFramework/*.* /var/www/html/admin/modules/framework/


Y ahora hay que hacer la reinstalación. Como con el desaguisado que hemos montado no podremos usar la interfaz web tocará solucionarlo con la consola. Para ello usaremos la herramienta fwconsole.

fwconsole ma install framework

Una vez ha terminado de instalarlo, lo mejor será hacer el reload desde la misma consola:

fwconsole reload

Así es como he conseguido reinstalar el framework que, dicho sea de paso, no encontré otra forma de reinstalarlo.


sábado, 3 de marzo de 2018

Crónica RootedCon 2018: Día 3

Hoy hemos podido disfrutar de la tercera y última jornada de RootedCon 2018.

La primera charla la ha dado Jose Selvi (@JoseSelvi).

RootedCon 2018 - Jose Selvi - FIESTA: an HTTPS side-channel party
Jose Selvi - FIESTA: an HTTPS side-channel party
Nos ha hablado de cómo es posible averiguar algunos datos que se transmiten a través de HTTPS con una técnica que se llama side-channel. Esta técnica permite saber que algo ha sucedido a partir de un cambio determinado. Si se automatiza ese cambio, se pueden llegar a saber qué ha sido ese cambio. En este caso, a partir del tamaño de los paquetes, y comparando los resultados anteriores (momento T) con el actual (momento T+1), se consigue saber qué dato era. Todo esto utilizando un sniffer, estudiando las capas de red que están por debajo de TLS. Ha construido la herramienta FIESTA, con la que ha hecho una demo. Si bien da problemas con AJAX y HTTP/2. Se encontró con varios sitios famosos, los cuales han respondido de distinta forma.

La siguiente ponencia, breaking HSTS, la ha dado Sergio de los Santos (@ssantosv).

RootedCon 2018 - Sergio de los Santos - Breaking out HSTS on Firefox, IE/EDGE y Chrome
Sergio de los Santos - Breaking out HSTS on Firefox, IE/EDGE y Chrome
Ha explicado más o menos rápido el funcionamiento básico de HTTP(S) y TLS. Además, ha dicho qué es SSLStrip y los certificados falsos. Los dos mecanismos de seguridad, HSTS (sistema para recordar al navegador que tiene que comunicarse con este sitio por fuerza con TLS) y HPKP (certificate pinning, que recuerda el emisor). Ha explicado cada una de las técnicas que han intentado hacer contra cada uno de los navegadores para engañar estos sistemas de protección en cada uno de los navegadores importantes: Firefox, Chrome, Explorer/Edge e incluso con móviles. En algunos de estos intentos, llegaron a bloquear al navegador (Chrome). La manipulación, en términos generales, trata de entregar muchos sitios con HTTPS para conseguir que se llene las listas que usan estos navegadores para saber si hay que usar HTTPS o no. Cuando se llena, ya no avisan de que hay un Man In The Middle con un certificado falsificado.

Después, pudimos hacer una pequeña parada para descansar.

Después del descanso, Tamara Álvarez, en su charla ¿Se puede hackear un referendum constitucional?

RootedCon 2018 - Tamara Álvarez Robles - ¿Se puede hackear un referendum constitucional?
Tamara Álvarez Robles - ¿Se puede hackear un referendum constitucional?
En esta ponencia se ha hablado mucho de leyes y derecho constitucional. Se ha hablado de una crisis democrática, cuya solución podría ser la e-participación y el e-voting. También ha planteado razones por las que no se está usando, poniendo varios ejemplos. Incluso ha puesto ejemplos de países en los que se llegó a usar un sistema de este tipo y después un tribunal tumbó esa votación. O países que han experimentado y que han vuelto al sistema tradicional. Todo porque no termina de haber las garantías suficientes. Además de los problemas que se plantean por filtrado de datos, ataques de denegación de servicio, manipulación de los votos...

Al finalizar la charla de Tamara se ha subido al escenario Chema Alonso (@ChemaAlonso), que nos ha hablado de una investigación de años relacionada con wifis.

RootedCon 2018 - Chema Alonso - Wild, Wild, Wifi: Dancing with wolve
Chema Alonso - Wild, Wild, Wifi: Dancing with wolves
Aunque la captura es del final, en la investigación han participado más personas de las que Chema no se ha olvidado. Nos ha hablado de APs falsos, localización de móviles, etc. Ha nombrado varias herramientas que han desarrollado a lo largo de los años: MUMMY y PsicoWifi. Esta última es un cliente que se conecta a las wifis e intenta averiguar si la actual es la misma que la primera. Sirve tanto para plataformas móviles como para Windows. También ha nombrado el ataque KRACK. No me puedo olvidar del firmware que ha modificado que permite configurar que cada un tiempo determinado la clave de acceso a la red cambie (con el cliente adecuado en el terminal que se esté utilizando). Así, se dificulta sobremanera que el robo de las claves tenga sentido.

Después de que Chema terminase, la organización ha hecho varios sorteos planificados. ¡Enhorabuena a los ganadores!

Después del sorteo, hemos podido ir a comer.

Tras comer, Victor Manuel Mundilla y José Torres nos han hablado sobre aplicaciones móviles y sus vulnerabilidades. 

RootedCon 2018 - Victor Manuel Mundilla y José Torres - ¿Seguro que son seguras?
Victor Manuel Mundilla y José Torres - ¿Seguro que son seguras?
Nos han contado sus reflexiones tras analizar más de 10 millones de aplicaciones móviles, procedentes sobretodo de market oficial de Android. Sobretodo, de aquellas que el sistema automático no detecta que tenga vulnerabilidades o comportamientos maliciosos. Su investigación se basa en las distintas consultas que han hecho en la herramienta Tacyt de la que ya se ha hablado en diversas ocasiones. Algunos ejemplos: contraseñas y direcciones IP hardcodeadas, mezclar HTTP con HTTPS, ficheros de clave privada embebidos en la aplicación... O las librerias empleadas para las networks de anuncios que dependiendo de la red empleada obliga a poner unos permisos mínimos determinados y éstas también influyen en la seguridad de la aplicación.

Cuando terminarion, Román explicó quiénes iban a dar la charla sorpresa. Sus antiguos compañeros de PwC. Era sobre posicionamiento de terminales móviles a través de la MAC de la tarjeta inalámbrica. Juan Carlos Diaz y Jorge Rodríguez Villagrá han dado la charla. 

RootedCon 2018 - Juan Carlos Diaz y Jorge Rodríguez Villagrá - All your MACs belong to everyone
Juan Carlos Diaz y Jorge Rodríguez Villagrá - All your MACs belong to everyone
 Era un proyecto que Román les propuso hacer. Empezaron mostrando un vídeo espectacular. Buscaron hacer tracking de los móviles de las personas que estábamos allí. Empezaron montando unas raspberries pi para que guardase los beacons de los móviles que buscan sus wifis guardadas y las direcciones MAC de cada uno de los móviles. Contaron cómo construyeron esas balizas lectoras. Después explicaron los datos que recopilaron, qué les llamó la atención y alguna gracia como la identificación de la cola para las conchas Codan o la cerveza. 

RootedCon 2018 - Todo el equipo de PwC - All your MACs belong to everyone
Todo el equipo de PwC - All your MACs belong to everyone

Después de esta sorpresa, pudimos descansar un rato antes de la última charla. 

Cuando terminamos el descanso, volvimos a la carga con la última charla del año, de la mano de Raul Siles (@DinoSec), que nos ha hablado del "IoT: Internet of T...".

RootedCon 2018 - Raul Siles - IoT: Internet Of T...
Raul Siles - IoT: Internet Of T...
En su ponencia nos ha mostrado un vídeo relacionado con el internet de las cosas. Después nos ha explicado cómo destripó, tanto a nivel harware como software, un sistema de domótica conectado a internet. Un gestor central, los sensores, los controladores (un móvil, un servidor web, etc). Los distintos sistemas de interconexión: 433 MHz, 868MHz, ZWave, bluetooth, wifi... Después ha explicado las tripas de los chips que puede contener el sistema analizado específicamente. O el firmware, que después de analizarlo descubrió muchas vulnerabilidades, tanto en el propio contenido (con claves de hashes en MD5 truncadas, backups en texto claro, entre otras)... Incluso desde la nube que permite configurar un único gestor domótico, se puede llegar a acceder a todos los gestores que han vendido (y que están conectados a internet, claro). Después ha mostrado más demos en vídeo. Como apunte: no se ha publicado, todavía, el fabricante de este sistema. 

Y, así, un año más, hemos disfrutado de la Rooted. Ha sido un placer estar otro año más. Como digo todos los años, espero poder  veros el año que viene una vez más. ¡Hasta la próxima!

viernes, 2 de marzo de 2018

Crónica RootedCon 2018: Día 2

Hoy hemos podido disfrutar de la segunda jornada de la Rooted del presente año, 2018.

Al llegar, pude desayunar otra vez con Jaime y Longinos (@L0ngin0s)

Para mí ha habido una novedad: este año no he estado en una única sala.

Para la primera ponencia, que la ha presentado Alfonso Muñoz (@mindcrypt) y Jorge Cuadrado (@coke727), se llamaba "Phreaking is alive!!".

RootedCon 2018 - Alfonso Muñoz y Jorge Cuadrado - Phreaking is alive!!!
Alfonso Muñoz y Jorge Cuadrado - Phreaking is alive!!
Nos han explicado cómo crear canales encubiertos aprovechando unos comandos que tiene GSM que se llaman AT. Han contado un resumen de qué es el phreaking y el origen de su charla. Como por ejemplo, que los móviles tienen dos sistemas operativos: el que tenemos como front (Android) y el que se encarga de trabajar a nivel bajo para la comunicación con las antenas base. Así, han enseñado un móvil sencillo y fucional que han construido con arduino. Ese mismo terminal ha sido sorteado al finalizar la charla. Con el análisis que han estudiado, han conseguido montar un sistema privado e, incluso, con posibilidades de ser anónimo (utilizando, entre otras cosas, sitios que permiten spoofear tu teléfono para hacer llamadas perdidas).  Por supuesto, no han faltado demos.

La siguiente charla, sobre bashware, en inglés, la han dado Gal Elbaz y Eran Vaknin. 

RootedCon 2018 - Gal Elbaz y Eran Vaknin - Beware of the bashware
Gal Elbaz y Eran Vaknin - Beware of the bashware
En esta charla han empezado a explicar cómo se gestiona a bajo nivel funcionalidad que tiene Windows de poder ejecutar software y comandos de Linux. Es el Windows Subsystem Linux, WSL. También han explicado cómo hay que hacer como mínimo los siguientes pasos: activarla, ponerla en developer mode y.. Me dejé el último. Lo que han enseñado es que el malware que se lanza con WSL no es detectado por los antivirus (o herramientas similares) con todos los problemas que esto conlleva. Como los programas Windows se pueden convertir a ejecutables de Linux con software como WineHQ, el problema del malware estaría resuelto. Y si está activada esta característica, el malware se activaría. En esta ponencia no faltó su propia demo.

En este punto pudimos disfrutar de un descanso. 

En este punto, y hasta la hora de comer, que quedé en la sala 19, donde mi amigo y antiguo compañero Jesús Seijas dio su charla sobre cómo engañar a los sistemas de reconocimiento computacional.
RootedCon 2018 - Jesús Seijas - Fooling Computer Vision
Jesús Seijas - Fooling Computer Vision
Su charla ha tenido bastante de matemáticas y gradiantes, por lo que esa parte ha sido algo complicada de anotar. Lo que se buscaba era ver si se podía engañar a un sistema entrenado para reconocer objetos en fotos y conseguir que dijera que la foto objetivo era una cosa completamente distinta a pesar de que el ojo humano sigue viendo qué es realmente. Para poder manipularla se utilizan redes neuronales y matemáticas. Para ello, hay unos pasos intermedios entre los que se encuentran quedarse únicamente con la parte necesaria de la foto descartando el resto y comprimirla en una matriz. Ha nombrado los proyectos de Imagenet y Alexnet. Para finalizar, ha hecho una demo en la que se ha conseguido que el reconocedor re imágenes detecte un perrito caliente donde hay un fusil. 

La siguiente charla, en la misma sala, la ha presentado Eneko Astorkiza [update](@Enekoas)[/update]  (LinkedIn).

RootedCon 2018 - Eneko Astorquiza - Retos de seguridad en el sector de las apuestas deportivas online
Eneko Astorquiza - Retos de seguridad en apuestas online
Ha contado quiénes son, cómo aparecieron,  números internos, facturación, filosofía... Importante dato: el hecho de cumplir con los requisitos legales no significa que haya seguridad. Ha enumerado los distintos errores que se pueden cometer en sus sistemas: desarrollo de la página, terminales que instalan en locales o bares, Internet (DNSs, ataques DoS, DDoS...), etc. Hay muchos otros problemas con los que tienen que lidiar: si reciben ataques o amenazas solicitando rescates, manipulaciones de los usuarios (búsquedas de vulnerabilidades, bots, suplantación de identidad....). Y los ataques que sus proveedores reciben también lo tienen que tener en cuenta. 

Después de su charla, pudimos ir a comer. 

Después de la comida, volví a la sala general, la 25. Esta charla la dio Javier Rodriguez (noticia para mí: está de excedencia en el GDT) y David Sánchez. 

RootedCon 2018 - Javier Rodriguez y David Sánchez - ¿Otra vez tú, Tovariach?
Javier Rodriguez y David Sánchez - ¿Otra vez tú, Tovariach?

La charla ha tratado sobre la problemática que nos encontramos cuando los medios indican que un ataque siempre se atribuye a la procedencia rusa. Han analizado varios malwares: Wanacry, Petya/NotPetya, Duqu 2.0 y Babar. Para las atribuciones se suele mirar qué dicen las casas anti-malware y el lenguaje empleado internamente en el código (a veces hay comentarios de código que ayudan). Por eso se busca una comunidad de inteligencia, que se necesita para resolver problemas. A veces pueden aparecer ciertos problemas diplomáticos. Incluso se puede llegar a atribuir a un país por la procedencia del desarrollador pero éste no sabe ni siquiera para qué se va a usar el código (ahora que lo pienso: supongo que se lo podrá imaginar, ¿no?).

Después de esta charla hemos tenido el RootedPanel: ¿Hay realmente libertad de prensa?


Hemos tenidos unos contertulios con experiencia en periodimo:
  • Jorge SoyDelBierzo (@soydelbierzo), (butacas de la izquierda, a la izquierda)
  • Yolanda (junto a Jorge)
  • Monica
  • Luis (butacas de la derecha, a la derecha del todo)
  • Carlos Otto (@ottoreuss): pantalla grande 
  • Luis: se sentó donde marca la flecha azul.
Se ha discutido sobre la unión de la prensa con el mundo digital. Antes la prensa decidía qué era importante, ahora es el público. Incluso éste es el que termina convertido en periodistas. Se han mencionado los clickbaits, si bien alguno de ellos no estaba muy de acuerdo con que fuesen negativos. Porque parte del debate estaba en qué cosas podían contar o dejar de contar teniendo en cuenta que dependen de los ingresos por publicidad de las empresas. También se ha hablado de fuentes y de cómo contrastar lo que dicen. Incluyendo la confianza que dan las gubernamentales. Se han nombrado los casos de Wikileaks, los Papers (Panamá y Paradaise)... O la necesidad de tener expertos en la materia para lo que van a publicar y de tener que bajar el nivel del lenguaje para el público general (y como resultado siendo inexactos para los expertos en la materia).

Después de un descanso, el propio Carlos Otto (@ottoreuss) ha dado su charla: Periodistas y hackers, ¿podemos ser amigos?

RootedCon 2018 - Carlos Otto - Periodistas y hackers: ¿Podemos ser amigos?
Carlos Otto - Periodistas y hackers: ¿Podemos ser amigos?
La primera parte de la charla ha sido un pequeño guiño al estereotipo del hacker: capucha, máscara de Guy Fawkes , encorvado, con guantes... Algunos con una silla malísima, otros con un butacón comodísimo... Muchas pantallas... Después se ha puesto serio. Ha explicado problemas que ha tenido con start-ups y algunos casos mediáticos: Didac Sánchez, Roi (caso explicado también en Rooted 2017)... Casos en los que ha podido necesitar ayuda de hackers. Sobretodo ha recalcado que sí que es posible que haga falta colaboración, tanto para tener explicaciones técnicas que después contrastará con más personas y poder tener una idea que plasmar. Incluso, para buscar datos de casos que puedan requerir recuperar o buscar información. Eso sí, ha querido explicar que se libere la información sin peligros, porque a veces se han publicado datos protegidos de personas.

Así, hemos terminado la segunda jornada de este año.

jueves, 1 de marzo de 2018

Crónica RootedCon 2018: Día 1

Como los últimos... ¿6 años? He tenido la oportunidad de volver a RootedCon. Ha sido la novena edición y en esta ocasión he tenido la oportunidad de estar todo el día con un buen amigo y antiguo compañero de la empresa, Jesús. También he estado un buen rato con Longinos (@L0ngin0s) y Jaime. Además, también he podido compartir un buen rato con Pablo Yglesias (@PYDotCom). Todo esto no quita que no haya podido ver a Angelucho (@_Angelucho_), Javier Rodriguez (del GDT), Josep Albors (@josepalbors)... Seguro que me dejo a alguien.

Como siempre, se ha hecho la keynote por parte de Román (@patowc).

Román Ramirez y la keynote de RootedCon 2018
Debido al retraso debido a fallos técnicos, ha tenido que comentar todo muy rápido. Ha vuelto a insistir en que somos comunidad, ha dado las gracias a los patrocinadores (que ayudan a que las entradas no sean desorbitadas) y los números de la organización. También ha explicado de qué va el proyecto sobre análisis de propaganda (el enlace que cogí: propaganda.is no me funciona; ¿corrección?). Después les ha dado la voz al equipo de Follow The White Rabbit (@fwhibbit_blog) , que tienen sus propios tracks en el evento.

Una vez terminada la keynote Ilfak Guilfanov (@ilfak), autor del IDA-Pro y el decompilador Hex-Rays. 
Ilfak Guilfanov - Decompiler Internals. Microcode
Ilfak Guilfanov - Decompiler Internals. Microcode
Un tema que como ya sabréis, no estoy muy ducho. Lo que pude entender es que con su software se podía decompilar de un procesador determinado y conseguir un código independiente del procesador. Al obtener el código del binario hay que conseguir que sea simple y descartar cualquier cosa que no nos importe. Por lo tanto, se busca optimizar el código mostrado. Así, cualquier operación que termine dejando los resultados exactamente iguales se "elimina".

Cuando finalizó, Ángel Palomo Cisneros empezó su charla sobre cómo conseguir que un equipo acepte ataques Man In The Middle:
Ángel Palomo Cisneros - Programming and playing a MITM attack
Ángel Palomo Cisneros - Programming and playing a MITM attack
Ha hablado sobre cómo desarrollar una aplicación que permita que sin que un usuario (apenas) se dé cuenta, termine aceptando un certificado falso emitido por BurpProxy, ZAP, Fudder, etc... "Apenas" porque su prueba de concepto muestra durante apenas medio segundo un flash de las pantallas que normalmente se verían cuando realmente hay que aceptarlas conscientemente. Sin esos certificados, el navegador no permitiría hacer el ataque. Esta aceptación permite que ese certificado falso se guarde en el almacén de confianza del usuario. No se pudo conseguir saltar la elevación de privilegios para instalarlo para el almacén del PC. 

En este punto Jesús, Pablo y yo nos fuimos al descanso. 

Al finalizar el descanso, Dario Durando nos ha hablado sobre la aportación de la botnet Mirai a las nuevas botnets.
Dario Durando - IoT Battle of Bots
Así, ha explicado cómo funciona internamente, cómo se puede subir al dispositivo que se infecta y que estaba escrito en C. Además, nos ha explicado los distintos módulos de los que pueden llegar a constar: scanners IP, un proceso que mata otros procesos o servicios (FTP, telnet, http), ataques a otros dispositivos... Después nos mostró su proyecto, KAIB. Con este proyecto se pueden buscar variaciones del Mirai (que después nos mostraría una línea temporal donde se mostraban las que había encontrado), descargas de URLs, un honeypot, etc...

El siguiente panel fue una mesa redonda en la que diversas empresas dieron su visión sobre cómo se puede proteger los datos de las personas (o la problemática de que se haga un leakage de los mismos).
Deception y cómo proteger el dato mediante tecnologías Data Discovery
Deception y técninas de Data Discovery
En esta mesa redonda hemos tenido a seis ponentes
  • Jose Miguel Esparza (@EternalTodo): Buscan información y la normalizan. Analizan malware y buscan ataques.
  • Abey... (se me quedó en el tintero!): buscan conseguir que se envíen los ataques a un lugar donde se haga daño o dar información falsa al atacante (¿honeypot?).
  • Juan Julián Moreno - De Microfocus. Nos habló del descubrimiento y la gestión eficiente de datos. Nos puso 3 casos reales de descubrimiento de datos.
  • Raúl nos contó datos sobre el robo de datos y el coste que tiene. Muy importante el control, la monitorización y descubrimiento de la exfiltración de datos.
  • Desde Barracuda, Carameli nos habló sobre los ataques dirigidos, como por ejemplo, el spam o el phising. Los riesgos de engañar a las personas qué hace Barracuda para reducir estos riesgos.
  • Antonio Ramos (@antonio_ramosga) nos habló sobre Leet Security y la Agencia de Calificación de Seguridad. Al final, se evita que sólo haya un sello de certificación que no significa nada. Busca hacer una auditoria que hace casi 1300 preguntas que realmente permite averiguar si se cumplen las normas.

Después de esta mesa nos fuimos a comer.

Una vez hubimos comido, Daniel Uroz  y Ricardo J. Rodriguez nos hablaron sobre RoP y Turing.
Daniel Uroz  y Ricardo J. Rodriguez - RoP meets Turing
Daniel Uroz  y Ricardo J. Rodriguez - RoP meets Turing
Todo se puede hacer con una operación "mov". Cuanto más complejo es el software, se encuentran más vulnerabilidades. Nos hablaron de un sistema de protección que fuerza a que una página de memoria sólo pueda guardar un dato (o instrucción, luego: operación de escritura) o sólo pueda ejecutar (operación de ejecución). Es lo que han llamado Write-xor-Execute. Después de hablar de reversing, nos han explicado cómo buscaron la forma de encadenar ataques RoP para deshabilitar este sistema de Write-xor-Execute". Con la herramienta EasyROP se busca verificar si se puede deshabilitar este sistema. Han mostrado una DEMO con una vulnerabilidad.

Al finalizar su ponencia empezó la RootedPanel:
RootedPanel 01 de la RootedCon 2018: Ciberdefensa y ciber-reservistas
RootedPanel 01 de la RootedCon 2018: Ciberdefensa y ciber-reservistas
Participaban Adolfo Hernández (con el jersey rojo), el General Comandante Carlos Gómez Lopez de Medina (evidentemente: con el uniforme), Enrique Ávila (centro del sofá derecho ), Jorge Dávila (del sofá izquierdo, a la derecha), Javier Candau (a la derecha del todo) y Román (a la izquierda del todo). Se ha discutido si está bien planificado o no cómo se va a contratar al personar que estarán en la reserva y cómo se piensa recompensar o pagar a dichas personas y qué pasaría con las empresas para las que trabajan cada vez que tengan que actuar.

Al finalizar el RootedPanel se hizo un descanso para merendar. 

Después de la merienda, Gerardo García Peña (@1lio) empezó su ponencia, Crypto goofs.
Gerardo García Peña - Cryto Goofs
Esta es otra de las ponencias que me ha costado un poco seguir. Se ha hablado de cifrado, tanto parcial (parte de http y parte de https), como el total, pero con un cifrado incorrecto. También ha nombrado el robo de sesiones, SSLStripping. Ha comentado que en ocasiones se descifran los datos antes de tiempo pensando que a partir de ese punto no pasaría nada. Y que hay que evitar ser creativo a la hora de implantar un cifrado sin o se sabe cómo funciona. Incluso, por cada algoritmo utilizado, estudiar sus vulnerabilidades. No se ha olvidado de los números aleatorios o de los hashes y valores MAC (Message Authentication Code).

Al finalizar, la organización ha hecho un homenaje a Antonio Ropero, creando un premio en su nombre. La estatuilla, un pegaso, se la han entregado a Fermín J. Serna, que por videoconferencia ha asistido a dicha "entrega". 

Y así, ha finalizado para mí la jornada de hoy. Después había una barra libre de cerveza, pero yo he recogido.

domingo, 11 de febrero de 2018

Google API - Gmail

Hace mucho tiempo que hice esto y quería haber escrito un post al respecto, y ahora que he querido volver a lanzar el scritp del que voy a hablar, he tenido problemas. Por lo que voy a aprovechar para hablar sobre esto.

La historia era la siguiente: quería bajarme los e-mails de mi cuenta de gmail con un filtro determinado: bajarme los e-mails de la carpeta de spam para estudiar sus cabeceras y ver de dónde proceden y cómo reportarlo.

Lo primero que toca es decidir en qué lenguaje hacerlo. En mi caso, python.

Por lo tanto: instalar el api de Google con el comando pip:

pip install --upgrade google-api-python-client
pip install --upgrade google-api-python-client
Por lo tanto:

pip install --upgrade google-api-python-client

Después, me ha tocado volver a buscar qué hice, que fue mirar en el manual del API. Viéndolo, el segundo paso fue activarla. Para ello, hay que crear un proyecto:

Creando proyecto API Gmail
Creando proyecto API Gmail
Se puede crear de varias formas, por ejemplo, al hacer click sobre Crear proyecto hará falta volver a refrescar de alguna manera la pantalla para poder actualizar el combo. Una vez actualizado, veremos que se añadirá un nombre de aplicación más o menos aleatorio que podremos seleccionar. Una vez seleccionado, haremos click sobre el botón Continuar que no he incluido en el pantallazo. Después, nos pedirá ir crear o añadir las credenciales al proyecto. 

Ir a añadir credenciales al API de Gmail
Ir a añadir credenciales al API de Gmail
Pero al llegar al gestor de las credenciales tendremos que hacer click sobre el botón Cancelar:

Cancelar la operación de gestión de credenciales
Cancelar la operación de gestión de credenciales

Después nos llevará a otra sección donde seleccionaremos la pestaña relacionada con OAuth. Se rellena el e-mail con el que se gestionará y el nombre o descripción de la aplicación:

OAuth para el API de Gmail
OAuth para el API de Gmail
Y más abajo en la pantalla tenemos el botón Guardar al que haremos click sobre él. Después, nos llevará otra vez a la pestaña que nos indicará que creemos unas credenciales, para la que seleccionaremos que queremos que sea para OAuth:

Seleccionar creación de credenciales para OAuth
Seleccionar creación de credenciales para OAuth

Nos solicitará que indiquemos una descripción (aunque lo llaman ID) para la aplicación (lo llaman "cliente") y el tipo (nosotros marcaremos "otro):

Crear ID y tipo de aplicación para el API de Gmail
Crear ID y tipo de aplicación para el API de Gmail
Al crearlo, nos aparecerán los datos del cliente, que tendremos que aceptar:

ID y secreto del cliente OAuth para el API de Gmail
ID y secreto del cliente OAuth para el API de Gmail
Y nos descargaremos el fichero que contiene las credenciales con las que se conectará nuestro programa.

Descarga de credenciales del API de Gmail
Descarga de credenciales del API de Gmail

A partir de aquí me he puesto a mirar mi antiguo script, que ya llamaba al API original. Uno de los problemas que nos podemos encontrar es que tengamos dos instalaciones de python (¿sacrilegio?): versión 2.7 y 3.6. Hay que tenerlo en cuenta. Además, me he encontrado con que lo que antes me funcionaba, con la nueva instalación ya no tira bien. 

Por cierto: al lanzar el script me pide que me autentique para dar permiso a la aplicación a tirar de los datos necesarios.