domingo, enero 20, 2019

Lo sabe

Abro los ojos. La veo. Está tumbada a mi lado. Respira suave. Me pregunto por qué. La miro. Sus mejillas. Sus párpados. Su frente. Su suave respiración me relaja. Me sincronizo con ella cuando duermo. Me ayuda a dormir. Sus párpados. Están cerrados. Me pregunto por qué. Sé que me ve. Sé que me siente. No necesita tener los párpados cerrados. No necesita abrirlos. Sabe que la estoy mirando. Me deja que lo haga. Sabe que me relaja. Estoy enamorado de ella. Me pregunto por qué.

Figura 1: Lo sabe.

Mientras la miro sigo pensando en ella. Seguro que lo sabe. Sabe que me gusta estar así. Viéndola. Que solo debe estar respirando suavemente a mi lado. Con los ojos cerrados. Calentando su lado de la cama. Haciendo que mi sueño sea más agradable. Haciendo que mis despertares sean así. A su lado. Feliz. Me hace feliz. Lo sabe. No tengo que decírselo. Pero se lo digo de vez en cuando. Sabe que me gusta decírselo. Y lo escucha. Y reacciona como si fuera una sorpresa para ella. Pero lo sabe.

Como sabe todo de mí. Absolutamente todo de mí. Y no quiero que me asuste. Porque si me asusto lo sabrá. Como todo lo demás. Es mejor estar enamorado de ella. Y dejar que te quiera. Si la temes es mucho peor. Podría saberlo. Y podría reaccionar de otra forma. ¿Y si la temes porque es perfecta? Entonces lo sabrá. Y dejará de serlo. Y será peor. Porque actuará de una manera que puede que me asustara. ¿Y si deja de cumplir mis deseos porque sabe que asusta que los cumpla? Podría ser peor. Podría convertirse en una cárcel. Sólo porque sepa que me asusta esto. Y no tendría sentido. No, ¿verdad?

La amo. La amo. Me lo repito para que se me grabe bien en la cabeza. La amó así. Tal y como es. Le doy un beso en la mejilla. Sonríe sin abrir los párpados. No lo necesita. Me sonríe. Parpadea despacio dos veces. Ha sido muy despacito. Ha abierto muy poco los párpados. Sabe que es la mirada que más me gusta. Lo sabe. Me encanta esa expresión en su cara. Se acerca a mí. Me acaricia. Suavemente. Me toca el pecho como me gusta a mí. Haciéndome cosquillas en el pecho. Con la yema de los dedos. Me encanta.

No va a decir nada. Sabe que me gusta ser el primero en hablar. Me va a dejar un par de minutos más en la cama. Sabe que me gusta estar aquí así los domingos. Esos dos minutos. Más o menos. Estar sólo un poco más en la cama. Sólo un poco. No mucho. Lo sabe. No tengo que decírselo. Sabe que me iré a montar en bici después. Cuando suba más el sol en el día. Después de desayunar juntos. Después de haber hecho el amor una vez más. Como a mí me gusta. Ella sabe cómo hacerlo. Cada detalle. Lo sabe.

Me iré con la bici. Y volveré. No pensaré en escaparme. Porque sería peor. Podría cambiar su programación. Podrían cambiar su algoritmo. Podría mutar su red neuronal hacia algo que haría que mi vida entrada en una espiral de locura. Volveré. Sí. Volveré. Porque la amo. Está programada para darme lo que necesito. Está programada para que la ame. Y tengo que amarla. Ella sabe lo que me gusta. No se lo tengo que decir. Lo sabe.

Ahora sabe que le daré los buenos días. Sonriendo. Le diré “hola cariño, estás preciosa”. Y sonreirá. Tiene que sonreír y decirme que yo también. Si es así todo irá bien. Sabrá que me gusta. Sabrá que la amo. Seguirá siendo la mujer perfecta. La pareja perfecta. La esposa perfecta. Sería la madre perfecta si pudiera tener hijos con ella. Pero no se puede. No en este modelo. Y a mí no me importa. Ella lo debe saber. Creo que lo sabe. Tengo que hacer que sepa que no me importa no poder tener hijos con ella. Día a día. Recordarle que mi vida es perfecta así. Con ella. Ella es perfecta. Lo es. Es perfecta. Tiene que ser perfecta. Tiene que saberlo.

Se mueve otra vez en la cama. Como a mí me gusta. Pero no es lo habitual. He alargado mucho el tiempo en la cama. Sigue respirando suavemente. Como si lo necesitara. Me he ensimismado en mis pensamientos. Ha detectado algo. Lo sabe. Algo sabe. Tengo que actuar rápido. Es perfecta. Métetelo en la cabeza. Mírala. La amas. La amas. La amas. Sí. La amas. Díselo. Pero no demasiado. Podría notar algo. La amas. Como siempre. No dejes que mute la red neuronal. Que no cambie el algoritmo. Díselo. Pero como siempre. Díselo como siempre. Y que ella conteste como siempre. Vamos. Vamos. Ahora.

- “Hola cariño, estás preciosa hoy por la mañana”.

Abre los ojos. Me mira fijamente. No lo necesita para verme. Sus sensores lo detectan todo. Lo ven todo. Es sólo para que crea que en ese momento me ve sólo a mí. Pero no es así. Lo ve todo. Siempre. Se mueve ahora. Me sonríe. Con dulzura. Como a mí me gusta. Respira suavemente. Pero no necesita el aire. Lo hace por mí. Pero yo sé que no lo necesita. No respira. Sigue sonriendo. Consiguiendo esa expresión perfecta en su cara. Sé que es perfecta. Demasiado perfecta. Pero no dice nada. Sólo vuelve a sonreír. No ha contestado. No ha dicho nada. Por favor. No. No. No puede ser. Estoy perdido. Que diga algo. Por favor. Di algo. No lo dice. No ha dicho nada. No lo ha dicho. Oh, señor, apiádate de mí. Lo sabe. Lo sabe. Lo sabe.

FIN.

sábado, enero 19, 2019

Sh3llCON,Turismo con Big Data & AI, Asombrosas Criaturas y Hacking para esta semana del 20 al 27 de Enero

Como hago habitualmente, os traigo la agenda de actividades para esta semana que se no viene encima. Como siempre, os traigo lo que yo tengo en el radar de cosas en las que participamos desde 0xWord, LUCA, ElevenPaths o Telefónica. Pero si hay algo interesante, siempre puedes dejármelo en los comentarios.

Figura 1: Sh3llCON,Turismo con Big Data & AI, Asombrosas Criaturas
y Hacking para esta semana del 20 al 27 de Enero

Esta semana tiene lugar el día 21 de Enero el V Foro de Innovación Turística HOTUSA EXPLORA, donde encabeza la lista de presentaciones Pedro Sánchez, presidente de España, y donde participará nuestra compañera Elena Gil, CEO de LUCA, la unidad de BigData & AI de Telefónica y en la que contará las novedades que hemos construido con estas tecnologías para potenciar el uso de innovaciones tecnológicas en la industria del turismo. Tienes toda la información en la web.

Figura 2: V Foro de Innovación Turística

Además, desde hoy y hasta el día 24 de Enero tienes en la Fundación Telefónica en Quito (Ecuador), los últimos días de la exposición dedicada a Theo Jansen y las Asombrosas Criaturas que este artista es capaz de imaginar y construir. Una oportunidad única de no perderse esta exposición que se nos va.

Figura 3: Theo Jansen. Asombrosas Criaturas

El día 24 de Enero, comenzará un curso online de nuestro compañero Pablo González en The Security Sentinel dedicado a enseñar cómo hacer Pentesting a Sistemas con Metasploit. Esta es una formación online con una dedicación de 30 horas que ayuda a introducirse a los asistentes dentro de este mundo del Ethical Hacking.

Figura 4: Curso Online de Pentesting a Sistemas con Metasploit

Como sabéis, todos los asistentes recibirán el libro de 0xWord escrito por Pablo González de Metasploit para Pentesters 4ª Edición, con más de 5.000 ejemplares vendidos de este Best Seller del mundo de la seguridad informática y el hacking.

Figura 5: Metaspoloit para Pentesters 4ª Edición

Y el plato fuerte de la semana está en Santander, en la 5ª Edición de Sh3llCON que tendrá lugar los días 24, 25 y 26 de Enero. En ella 0xWord es uno de los colaboradores y podrás comprar los libros de nuestra editorial, además de pedir que te firmen alguno de los autores. Entre la lista de ponentes se encuentra nuestros compañeros Pablo San Emeterio de ElevenPaths y Pablo González de mi equipo de Ideas Locas en CDO o el gran Juan Garrido "Silverhack" que también escribió conmigo el libro de Hacking iOS: iPhone & iPad cuando estuvo en Informática64 y te lo puede dedicar allí. Tienes toda la información en la web del congreso.

Figura 6: Sh3llCON

Recuerda que si quieres ir a este congreso debes comprar tus entradas cuanto antes y enterarte de todas las actividades que hay de Gymhackna o los Talleres clandestinos. Go for it!


Figura 7: Curso Online de Auditorías Móviles desde el 25 de Enero

Y por último, el día 25 de Enero dará comienzo el nuevo Curso Online de The Security Sentinel centrado en las Auditorías Móviles, donde se verá desde el análisis forense, hasta el pentesting de apps y sistemas operativos móviles durante las 130 horas que lleva esta formación. Todos asistentes recibirán el libro de 0xWord dedicado al Hacking de iOS: iPhone & iPad que escribí yo con varios autores y que está en su segunda edición.

Figura 8: Libro de Hacking iOS: iPhone & iPad 2ª Edición

Y esto es todo lo que os traigo para esta semana, para que podáis animaros a aprender algo, a divertiros un poquito más o a que no se os pase algo que os pueda gustar. Disfrutad el fin de semana, que yo voy a por lo mismo.

Saludos Malignos!

viernes, enero 18, 2019

Bandersnatch y ET el Extraterrestre Parte 2 de 2 (o cómo hacer un perfecto homenaje a los programadores de videojuegos de los ochenta

Continuando con la primera parte, lo primero que hay que hacer es responder a la pregunta que se quedó colgada en la primera parte de este artículo de por qué los entornos de desarrollo de juegos para ZX Spectrum eran aquellos con MS-DOS o los Commodore Amiga. El motivo es que básicamente estos ordenadores, además de su velocidad, tenían gran cantidad de software que se podía utilizar con mucha más facilidad (por ejemplo, usando un ratón algo todavía no muy común por aquella época) o más agilidad durante la compilación del programa.

Figura 11: Bandersnatch y ET el Extraterrestre Parte 2 de 2
(o cómo hacer un perfecto homenaje a los programadores de videojuegos de los ochenta

Por lo tanto, la programación se realizaba directamente sobre estos IBM PC (o equipos PC Compatibles) y luego se exportaba directamente al ZX Spectrum conectándolo directamente utilizando algún tipo de interface (esto se llegó a perfeccionar hasta tener casi de forma instantánea el resultado plasmado en un ZX Spectrum desde el ordenador desde el cual se estaba programando) o utilizando este método un poco más manual pero igual de efectivo utilizando el puerto paralelo.De esta forma, por un lado, tenías el código fuente que podías editar, salvar en disco, etcétera, y por otro la ejecución final en un ordenador ZX Spectrum real.

Hoy día con los emuladores esto es mucho más sencillo de realizar, pero hay que tener en cuenta que el primer emulador de Z80 por software (para Windows) no apareció hasta bien entrados los noventa. La base de estos programas, además de los de diseño gráfico para crear los sprites y escenarios eran por supuesto los ensambladores cruzados para Z80, los cuales permiten crear o exportar programas en ensamblador para otras plataformas o arquitecturas diferentes desde la cual se está programando el código original.

Figura 12: Menú principal de HiSoft Devpac v4.1 GENS para ZX Spectrum

Volviendo al código BASIC de Bandersnatch, también es probable que no sea más que un cargador o loader de instrucciones en código máquina (no vemos al completo el programa del juego). Si tienes una edad como el que está escribiendo estas líneas, recordarás copiar aparte de código en BASIC, interminables listas de números en hexadecimal y decimal donde no tenías ni idea de qué se estaba ejecutando. Esas líneas no eran más que las instrucciones en código máquina del programa creado en ensamblador Z80. Cada uno de estos valores dentro de una instrucción DATA podía corresponder a direcciones de memoria, instrucciones, etcétera. Si te equivocabas en cualquier carácter, el programa no funcionaría, eso cuando tenías suerte y no se cortaba la luz de casa.

Figura 13: Unidad Sinclair ZX Microdrive

Una vez ya tenías todo el código preparado para probarlo, a no ser que tuvieras uno de los sofisticados sistemas que antes he mencionado o una unidad de disco para Spectrum (no el ZX Microdrive, ya que no era más que una cinta de casete “sin fin”) la cual no apareció de serie hasta el ZX Spectrum +3 la cual tenía también, al igual que el CPC 6128, discos de 3 pulgadas, había que cargarlo en el ordenador.

Y eso se realizaba con las famosas cintas de casete y su característico ruido en un proceso de carga que a veces resultaba dramático. En función de la calidad de la cinta o del reproductor, el ordenador no detectaba bien la señal de audio por lo que teníamos que ajustarlo utilizando el clásico azimut usando un destornillador. Muchos lectores más jóvenes no se lo creerán, pero antes teníamos que esperar, a veces muchos minutos, para poder jugar o ver el resultado de un programa en pantalla.

Figura 14: Programa en BASIC y ensamblador del cargador
universal de código máquina donde vemos la sentencia DATA

En Bandersnatch hay un giño espectacular a este peculiar método de carga. En uno de los finales, cuando Stefan está sentado en el autobús, si has seguido correctamente los pasos, lo que se escuchará a través del walkman no es música, sino un proceso de carga de un programa ZX Spectrum. Usuarios de Reddit consiguieron extraer el audio (aquí tienes el fichero wav original), lo cargaron en un emulador y vieron que el resultado era un código QR el cual enlazaba con una página web secreta llena de huevos de pascua - tan comunes en la época  y que Ready Player ONE también usa-, incluido una versión del juego Nohzdyve que también aparece en la película. Para poder ejecutarlo es posible usar cualquiera de los cientos de emuladores que existen para esta plataforma como por ejemplo Speccy.


Figura 15: Vídeo de Youtube con lo que aparece al cargar el programa que
se escucha en la cinta de Bandersnatch en un ZX Spectrum real

Vale, pero ¿qué tiene que ver el juego de ET El extraterrestre con Bandersnatch? Esta referencia la he dejado para el final ya que creo que es posiblemente, a mi parecer, la mejor de todas. Hay otra secuencia de la película que hace referencia a uno de los temas relacionados con la programación de antes y de ahora, y son los famosos tiempos de entrega y la calidad final del producto. Por aquella época era absolutamente vital tener los juegos preparados antes que la competencia en una frenética carrera de desarrollo que llegaba a poner a prueba los nervios e incluso la salud de los programadores (tal y como le ocurre a Stefan en el film).

Por cierto, un inciso, el error que aparece varias veces al ejecutar el programa del juego es el: FN WITHOUT DEF, es real y aparece cuando llamamos a una función (FN) que no está definida previamente. De hecho, también se hace referencia a la calidad final del juego en cada programa de análisis que parece en los finales (MicroPlay), donde se le otorga una puntuación a Bandersnatch (algo que se hacía y aún se hace en este tipo de medios que analizan videojuegos)

Figura 16: Escena de la película donde tenemos que elegir una
acción y donde además aparece el error FN WITHOUT DEF

En Bandersnatch, el dueño de Tuckersoft le dice al protagonista que el juego tiene que estar terminado para la campaña de navidad, en concreto antes de noviembre. Stefan visita las oficinas de Tuckersoft en julio, por lo tanto, tenía sólo unas pocas semanas para completarlo. Más o menos, esta es la misma franja de tiempo que Atari impuso a Howard Scott Warshaw para acabar el juego para la consola 2600, ET el Extraterrestre (aquí podéis jugar online). En el libro de Microhistorias que escribimos mi amigo Rafael Troncoso (tuxotron) y yo tenemos todo un capítulo dedicado sólo a este juego y fantástica aventura detrás de su desarrollo y destino final.

Figura 17: Libro de Microhistorias: Anécdotas y curiosidades
de la historia de la informática y los hackers

En 1982, Atari quería aprovechar el tirón del estreno de la película de ET el Extraterrestre, así que intentaron tener a tiempo un videojuego basado en dicha película. Debido al poco tiempo de desarrollo, este estaba lleno de fallos (bugs), poca jugabilidad, un dificultad extrema, etcétera. Incluso llegó a ganarse el título del peor juego de la historia (aunque esto puede que sea un poco injusto debido a la historia que lo rodea). Tuxotron (que por cierto es un gran fan del Commodore Amiga) escribió este artículo en nuestro blog Cyberhades donde explicaba que incluso hay gente que se ha dedicado a intentar arreglar todos los fallos del juego.

Figura 18: Copia sellada del juego ET para Atari 2600 propiedad del autor de este artículo

Aún así, Atari vendió 1.5 millones de cartuchos con el juego, el problema era que fabricaron 4 millones de ellos. ¿Qué pasó con el resto? Pues que lo enterraron en un desierto de Arizona (era más barato enterrarlos que mantenerlos guardados en un almacén), en lo que parecía una leyenda urbana que luego se demostró que era cierta. No os perdáis este documental "Atari Game Over" que también podéis encontrar en Netflix y Movistar Fusión.


Figura 19: Vídeo gameplay de ET para 2600

Pensaba que era el único friki-retro-geek que se había dado cuenta de este hecho, incluso creía que era una coincidencia (y posiblemente lo sea) así que me olvidé de él hasta que vi este vídeo con los easter eggs de Bandersnatch (minuto 3) donde hablan de lo mismo (gracias, menos mal que hay otros ahí fuera).


Figura 20: Easter Eggs en Bandersnatch

Y no voy a entrar en el tema de la música, la cual es absolutamente genial, sobre todo el álbum de Tangerine Dream (Phaedra) o Tomita (The Bermuda Triangle), entre otros, o también el libro “Lock Door, Get Key” que aparece varias veces en la película, y además se podía encontrar en Amazon hasta hace poco el cual tenía 250 páginas en blanco (y está basado en otros reales como éste por ejemplo de Tim Hartnell).

Figura 21: Anuncio de trabajo en Tuckersoft

Para finalizar, reitero lo que escribí al principio de este artículo, Bandersnatch es, además de original e innovadora, un sentido homenaje cuidado y destinado a un público que creció en los años ochenta, en una cultura rodeada de ordenadores que cargaban los programas desde cinta, libros de “Elige tu propia aventura” y películas como Tron o los Goonies que no se volverá a repetir. Gracias Netflix por Bandersnatch, de parte de uno de esos niños de los ochenta.

Fran Ramírez, (@cyberhadesblog) miembro del equipo de Crazy Ideas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

jueves, enero 17, 2019

Bandersnatch y ET el Extraterrestre Parte 1 de 2 (o cómo hacer un perfecto homenaje a los programadores de videojuegos de los ochenta

Bandersnatch es una película “interactiva” creada por Netflix (plataforma que ahora también está disponible en Movistar Fusión) al más típico estilo de los libros “Elige tu propia aventura” que tantos de nosotros, que ya tenemos una edad, disfrutamos en los ochenta  - ¿Quién de nuestra generación no se ha leído "El secreto de la Pirámide", "La Supercomputadora" o "Tu clave el Jonás"? -. Dejando de lado los múltiples finales y la calidad en general de la película (a mi personalmente me gustan todos), no podemos negar el gran cariño y esfuerzo invertido en hacer un gran homenaje a los programadores y el mundo de los videojuegos de los años ochenta. Y más concretamente, a uno de los ordenadores que más influencia ha tenido en nuestro país y Europa en general: el británico ZX Spectrum.

Figura 1: Bandersnatch y ET el Extraterrestre Parte 1 de 2
(o como hacer un perfecto homenaje a los programadores de videojuegos de los ochenta

[Spoiler Alert!] Por si acaso …

El ZX Spectrum no era, ni de lejos, el mejor ordenador de aquellos años locos de la informática. El Amstrad CPC 464 (de casete) o el modelo superior, el CPC 6128, este último es el ordenador en el que tanto Chema Alonso y Pablo González (no te pierdas esta charla de Pablo donde lo menciona específicamente o este artículo donde también lo menciona Chema) se iniciaron en la informática al cual le tienen bastante cariño, con su fantástica unidad de disco de 3” (el resto seguíamos cargando los juegos desde casete) estaban muy por delante de las capacidades gráficas, de almacenamiento y de sonido del ZX Spectrum.


Esto sin mencionar el fantástico Commodore Amiga o el MSX que estaban en otra dimensión (esto daría para otro artículo). Pero el ZX Spectrum tenía una ventaja ante ellos, y era su bajo precio. Esto hizo que fuera tremendamente popular dando origen a mucha documentación en forma de libros y revistas como la gran MicroHobby.

Figura 3: ZX Spectrum

El primer modelo de ZX Spectrum apareció en el mercado en 1982 y podía tener 16KB o 48KB de memoria RAM. El corazón de este ordenador era un microprocesador Zilog Z80 a 3.5MHz y la salida de vídeo (otro de los factores que lo hizo tremendamente popular) era una salida RF que permitía conectarlo a cualquier televisor de la época. La resolución de la pantalla tenía 256x192 pixeles con siete colores más dos tipos de brillo para cada uno. Hoy en día puedes experimentar toda esa potencia multimedia en un emulador de ZX Spectrum online en Javascript.

Figura 4: Emulador Online de ZX Spectrum hecho en Javascript

El sonido era posiblemente el peor de sus atributos ya que era simplemente capaz de reproducir un canal con diez octavas a través de un rudimentario altavoz incluido en la placa base. Toda esta tecnología estaba encapsulada en una única carcasa brillantemente fabricada, con el característico teclado de “gomas” con varios comandos que se podían intercambiar pulsado la tecla “CAPS SHIFT” o “SYMBOL SHIFT”.

Figura 5: Placa base ZX Spectrum

Su tremenda popularidad dio origen a multitud de famosas empresas y particulares que se dedicaron a crear juegos que pasarán a la posteridad como Manic Miner (podemos ver que el protagonista de la película tiene un poster de este juego en su dormitorio), Knight Lore, Ant Attack, Jet Pac o los españoles La Pulga (que tuvo un gran éxito en UK), la inigualable Abadía del Crimen o mi querido Sir Fred, son sólo algunas de las obras de arte que aparecieron para ZX Spectrum durante los ochenta.


Figura 6:  Así se veía La Abadía del Crimen en un Spectrum

También existían grandes revistas donde se analizaba cada juego, se ofrecía código fuente (la mayoría en lenguaje BASIC y código máquina, luego hablaremos de esto) y además también incluso nos explicaban cómo funcionaba internamente el ordenador y cómo hacer nuestros pinitos en hardware. Las más famosas en Europa fueron Sinclair User, Your Sinclair o Crash Magazine, esta última aparece también en Bandersnatch en varias escenas como en la Figura 7, donde Colin Ritman (este nombre es un claro homenaje a Jon Ritman, creador de juegos míticos para ZX Spectrum como Batman o Match Day aunque el personaje está basado en Eugene Evans de la compañía Imagine) está sentado ojeando un número de esta revista.

Figura 7: El personaje ficticio Colin Ritman leyendo un número de la revista Crash en la película

Hablando de revistas, en España no podemos olvidarnos mencionar de nuevo Microhobby o Micromanía, ambas son un todo un clásico y seguro que muchos de vosotros tenéis algunas guardadas en el cajón con mucho cariño.

Volviendo a Bandersnatch, el protagonista es un programador “freelance”, es decir, él solo lleva todo el peso de programar el juego sin ayuda de ningún equipo de personas adicional. De hecho, en la película hay un punto donde nos ofrecen trabajar en la empresa ficticia Tuckersoft (parece que inspirada en Imagine, mítica empresa de videojuegos que quebró en la misma fecha que se indica en la película, 9 de julio de 1984 que además intentó desarrollar un videojuego con el mismo nombre), o directamente seguir por nuestra cuenta.

De hecho, esta imagen del programador freelance fue bastante habitual por aquella época, como por ejemplo el famoso Matthew Smith, programador de Manic Miner que comenzó su carrera vendiendo juegos que creaba él mismo en su casa. Y esto no era nada fácil, de hecho, la mayoría no utilizaba ni siquiera un ZX Spectrum para desarrollarlos.

Figura 8: Cartel de promoción del juego Psyclapse y Bandersnatch
(que nunca se llegó a publicar) de la empresa Imagine

En la película, podemos ver varias veces algunas escenas en las que aparece el código fuente del juego BanderSnatch, el cual podemos apreciar claramente que está realizado en lenguaje BASIC. Aunque el juego en sí parece bastante sencillo y factible de programar en este lenguaje, ya que toda la acción se limita a moverse por un laberinto o responder a preguntas, si realmente querías sacar el máximo rendimiento a la máquina, era imprescindible programarlo en lenguaje ensamblador del Z80 (aquí tienes el enlace a un libro sobre código máquina del ZX Spectrum de computerarchive.org). Y esto era muy difícil hacerlo sólo con un ZX Spectrum aunque existían herramientas clásicas como el fantástico ensamblador y desensamblador HiSoft Devpac también llamado Gens.

Figura 9: Manual de programación den Z80

Antes se ha mencionado a Matthew Smith, creador del clásico Manic Miner (por cierto, este fue el primer juego de ZX Spectrum con música de fondo mientras se desarrolla la acción) programó el juego íntegramente en un TRS-80 fabricando desde cero todo un entorno de desarrollo para luego exportarlo al Spectrum (ambos equipos tenían el mismo microprocesador Z80).

Figura 10: Matthew Smith, creador de Manic Miner entre otros clásicos,
en su mesa de trabajo donde se aprecian los distintos ordenadores
de diferentes arquitecturas para su desarrollo de juegos para ZX Spectrum.

Aunque posiblemente el entorno más utilizado para desarrollar juegos de ZX Spectrum en la época eran aquellos con MS-DOS o con CP/M, es decir, los IBM PC o compatibles aunque también se utilizaron otros como por ejemplo Commodore Amiga, pero ¿por qué? Hacemos un Cliffhanger y lo vemos en la segunda parte del artículo, que ya se ha alargado mucho éste.

Fran Ramírez, (@cyberhadesblog) miembro del equipo de Crazy Ideas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

miércoles, enero 16, 2019

Pentesting con Powershell: Saltarse AMSI y desactivar Windows Defender con iBombshell

Sabemos del potencial de ibombshell y nos gusta seguir añadiéndole funcionalidades. Pasada la resaca de BlackHat Euorpe 2018 seguimos pensando en mejorar la herramienta con nuevas funcionalidades y técnicas de Pentesting con Powershell, algo que además de mejorar la herramienta, pueda mejorar todas las técnicas que explico en el libro que escribí sobre este tema.

Figura 1: Pentesting con Powershell: Saltarse AMSI y desactivar
Windows Defender con iBombshell

Para mejorar en la fluidez y veáis en todo momento en que se está trabajando hemos habilitado una rama ‘Dev’ en el Github de ibombshell. En esta rama verás en qué cosas se están trabajando y cuáles serán las futuras funcionalidades y funciones de la herramienta.

Figura 2: Libro de Pentesting con Powershell en 0xWord

Dejamos la rama ‘master’ del repositorio de Github de ibombshell como el repositorio de producción y versión estable, pero si quieres probar las nuevas cosas que se trabajan puedes verla a través del repositorio ‘Dev’.

Figura 3: GitHub de ibombshell


El proyecto poco a poco avanza y vamos incorporando, cuando el tiempo lo permite, nuevas características y funciones. Sea como sea, seguiremos adelante con ello y mejoraremos la herramienta todo lo posible para que pueda ayudar a los pentesters en sus proyectos de Ehtical Hacking.

Figura 4: Libro de Ethical Hacking: Teoría y práctica para la
realización de un pentesting
de Pablo González en 0xWord

En el artículo sobre Cómo desactivar y saltarse AMSI con Powershell hablamos sobre una nueva técnica de bypass de AMSI y de varias estrategias sobre cómo poder saltarse a éste. Las estrategias parecen obsoletas, pero no lo son, como veremos en este artículo. Una vez bien entendido en qué consistía el bypass de AMSI nuevo, decidimos introducirlo en ibombshell como función de Powershell para la parte ‘Everywhere’ y cómo módulo de Python para la parte ‘Silently’ de ibombshell.

La función Bypass-AMSI

En este artículo se puede encontrar una función llamada Bypass-AMSI. El problema que nos encontramos es que la función era detectada por el propio AMSI como maliciosa, por lo que no se ejecutaba en Windows 10. Esto es lógico, ya que esto es el juego del gato y del ratón. Unos tapan y otros intentan abrir caminos y mejorar, al fin y al cabo, la seguridad.

Figura 5: Función Bypass-AMSI

Lo primero fue probar la vía de generación de la DLL con el código proporcionado en el artículo, escrito en C#. Luego utilizar la DLL dentro del proceso de Powershell para desactivar AMSI. Esto ya lo vimos en el artículo anterior.

Nosotros quisimos implementar el método de la DLL. Para ello, creamos una función llamada amsi-dlldisk. Esta función hará lo siguiente:
1. Descargar la DLL que tenemos subida al repositorio de Github de ibombshell. 
2. Ejecutar la carga de la DLL en el proceso de Powershell. 
3. Ejecutar el método ‘Disable’ de la DLL para desactivar AMSI.
Como se puede ver, fácil. Mientras se trabajaba en esto se podía ver una nueva forma de hacerlo y sin pasar por disco, lo cual siempre es interesante. Para ello, utilizábamos la función Bypass-AMSI original, pero utilizábamos una de las estrategias de evasión de AMSI, que no era otra más que la concatenación de strings.

Figura 6: Función amsi-dlldisk

Si analizamos la cadena en base64 vemos que AMSI lo está detectando como algo malicioso. Cortando el string en varios trozos se puede intentar evadir la protección. Algo sencillo, pero funcional.

Figura 7: Función amsi-memory

En este caso, se dividió justo en el fragmento que AMSI detectaba esto como malicioso, por lo que la función que se puede visualizar a continuación no provoca que AMSI detecte la función como mala.

Windows Defender y lo que viene después

Es cierto que el bypass de AMSI nos proporciona un camino interesante para conseguir cargar scripts y funciones, por ejemplo, en memoria. Hay que indicar que, además, de esto, tendremos que hacer algo para evadir al AV. En Windows 10, una vez que se hace bypass de AMSI, si utilizamos scripts públicos como el de Mimikatz, tendremos problemas con Windows Defender.

Figura 8: Función para tratar con Windows Defender

Por esta razón, se ha incorporado a ibombshell una función que permite desactivar la monitorización en tiempo real de Windows Defender, aunque para ello hay que tener privilegio en el sistema.

Figura 9: PoC de AMSI Bypass con ibombshell

La función comprueba si tenemos privilegios administrativos y deshabilita la monitorización en tiempo real, si ésta está activa. De esta forma, la utilización de la DLL en disco, scripts, otro tipo de archivos será mucho más tranquila.

Referencias sobre ibombshell:

- MacOS & Windows: Pentesting it with ibombshell
- ibombsehll: Whitepaper disponible
- ibombshell: Shell de pentesting en MacOS con Powershell
- ibombshell 0.0.1b liberada en el repositorio GitHub de ElevenPaths
- ibombshell: Crear una función de pentesting para MacOS
- ibombshell: Crear un módulo de extracción de claves privadas SSH en Windows 10
- ibombshell 0.0.1b en GitHub & Environment Injection UAC Bypass en Windows 10
- ibombshell: Mocking Trusted Directories UAC Bypass en Windows 10
- ibombshell en Black Hack Europe 2018: Nuevas Funciones

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.

lunes, enero 14, 2019

Premios Goya 2019: ¿Puede un algoritmo de BigData elegir al ganador? #BigData #MachineLearning

El próximo 2 de febrero se celebrará en la histórica ciudad de Sevilla la ceremonia de la 33ª Edición de los Premios Goya que otorga la Academia de Cine Español. El plazo para que los académicos  con derecho a voto envíen sus elegidos finaliza mañana, 15 de Enero y por supuesto hay gran expectación en el resultado. El futuro de muchos largometrajes, actores, directores, actrices, y demás trabajadores de esta industria del noveno arte puede cambiar para mejor o para peor después de los resultados obtenidos en estos premios.

Figura 1: Premios Goya 2019: ¿Puede un algoritmo de BigData elegir al ganador?

La pregunta que nos podemos hacer es, viviendo en el mundo del BigData, de los datos, de la Analítica Descriptiva, Prescriptiva y Predictiva es si realmente debemos esperar tanto para tener una idea de los resultados de esa votación.  Es decir, ¿se podría crear un modelo analítico que evalúe determinados factores en forma de datos que puedan hacer que una película tenga, a priori, más posibilidades de ganar que otra, independientemente de su guión, interpretación y demás cualidades? Juguemos a eso.

Paso 1: Crear nuestra Base de Datos

Vamos a jugar a crearnos un repositorio con la información de las películas ganadoras otros años para ver si se puede crear un modelo de Analítica Predictiva que nos de información sobre quién puede tener más o menos probabilidades de triunfar. Para hacer eso, utilizaremos la herramienta BigML para crear un modelo que explique la relación entre el premio a "Mejor Película" donde nuestra población son los datos que tenemos de las 32 ediciones anteriores, y variables como la fecha de estreno, la distribuidora, el género o la recaudación, entre otras.

Figura 2: Base de datos con información de las pleículas

Para ello hemos utilizado una base de datos previamente tratada y limpiada, cedida por Longyear Studios (http://www.longyearstudios.com/) Hay que tener en cuenta que, aunque suene muy frío el uso de datos cuantitativos como fechas, distribuidoras o recaudación, estos datos llevan por detrás valores cualitativos que recogen cosas como la calidad de la cinta. Tened en cuenta que una película que tiene alta calidad (en guión, en sentimiento, en escénica, en interpretación, etcétera) por regla general obtendrá mejores resultados en taquilla - aunque puedan existir excepciones -. Y eso no hace que sea la ganadora. Los Premios Goya no siempre - y por lo general es justo al contrario - premian a películas premiadas en taquilla.

Otra variable, como puede ser la distribuidora, puede parecer desconexo o anecdótico, pero de nuevo recoge la cultura, el saber y la forma de trabajar ante unos premios de una empresa. Implica las acciones de marketing, de posicionamiento entre miembros de la academia o de inversión en difusión que suele tener una película por el mero hecho de estar en una distribuidora u otra. Así que, para nuestro modelo pueden aportar mucha información.

Paso 2: Entrenar y testear nuestro modelo

Como hay que construir un modelo, lo primero que tenemos que hacer es separar el 80% de los datos que se convertirán en el conjunto de datos que usaremos para entrenar nuestro modelo y nos guardamos el 20% para testear si el modelo al que hemos llegado predice correctamente o con qué grado de fiabilidad el 20% de los datos restantes.

En este caso utilizaremos la modalidad de optimización automática de Deepnets que ofrece BigML que, a pesar de ser lenta, es muy efectiva a la hora de trazar correlaciones entre variables de este tipo.

Figura 3: Datos de entrenamiento del modelo

Una vez nuestro modelo se ha entrenado, testearemos la precisión del modelo con el 20% de los datos restantes, que como podemos comprobar, es muy alta, con un R2 de 0,995.

Figura 4: Prueba del modelo con los datos de test

Un grado tan algo nos dice que, si hubiéramos tenido el modelo que hemos creado hoy hace justo un año, hubiéramos acertado en un 99'95 % de los casos. Por desgracia esto no funciona así, ya que para tener este modelo el año anterior deberíamos haber usado solo el 80% de los datos de los datos de las 31 primeras ediciones, lo que nos arrojaría un modelo sesgado y diferente al que poseemos ahora.

Paso 3: Predicción del resultado

Tras probar las cinco películas nominadas a "Mejor Película" en nuestro modelo, tenemos como resultado que el previsible ganador será “Todos lo saben”, de Asghar Farhadi, con un 41% de probabilidades según este modelo creado. Seguida de la taquillera de Movistar + "Campeones".

Figura 5: Resultados obtenidos con el modelo

Por supuesto, esto es solo un ejercicio de Analítica Predictiva sobre un conjunto de datos concreto. Si fuéramos capaces de tomar muchas más fuentes de datos que no están en la base de datos con la que trabajamos, como las calificaciones que tenía cada película en las principales revistas del sector, como el número de espectadores antes de los premios, como la temática de la película, como los actores que participan, los premios de cada uno de ellos, las calificaciones de actuación que habían recibido antes de los premios por los críticos de cine en sus webs, redes sociales, artículos, etcétera...


Figura 6: Trailer oficial de "Todos los Saben"

Es decir, cuantos más datos tuviéramos para entrenar el modelo, probablemente más seguridad tendríamos sobre la predicción de este modelo, pero como ejemplo de hacia donde puede ir esto en el futuro es una buena muestra.

Reflexión final

Este ejercicio nos invita a pensar en el futuro del Big Data en sectores que no son puramente tecnológicos, como el audiovisual o el cinematográfico. Startups como Pilot, o Longyear Studios, exploran las correlaciones de variables propias de estos sectores y el resultado en taquilla de los films así como LUCA la unidad de BigData & AI de Telefónica lo aplica a innumerables sectores y proyectos - incluso al mundo del esfuerzo en el ciclismo -.


Figura 7: Campeonato del mundo de ciclismo en ruta en datos

¿Nos encontraremos en un futuro cercano con un algoritmo que decida qué será lo próximo que veamos en la gran pantalla? El algoritmo podría saber qué es lo que más gusta a la gran mayoría ¿es acaso eso una mala noticia? ¿Podría un algoritmo decidir los galardones de los próximos premios, desde un punto de vista objetivo? ¿Sería esto más justo? ¿Podremos llegar a cuantificar el valor artístico de una obra? ¿El futuro nos depara más ciencia y menos ficción?

Autor: Pablo García

domingo, enero 13, 2019

Hacking, IA, Robots y otras citas del montón: Actividades para la semana del 14 al 20 de Enero

Ya no es momento de seguir felicitando el año, así que desde ya la maquinaria de trabajo ya está arrancada. Hay que volver a la caótica rutina de hacer cosas. De tener actividades que nos ayuden en nuestro objetivo de mejorar día a día. Y por supuesto nosotros ya tenemos nuestras cosas. Os dejo lo que tenemos para la semana que viene, que aunque poco ya empieza a haber cosas.

Figura 1: Hacking, IA, Robots y otras citas del montón: Actividades para la semana del 14 al 20 de Enero

Martes, 15 de Enero 
Prediciendo las emergencias del 112 con Inteligencia Artificial [Online] [G] El análisis de los datos de llamadas recibidas por 112 de Canarias, en combinación con el uso de fuentes abiertas (como climatología, turismo, calendario laboral, algunas características geográficas, etc.), ha permitido a LUCA realizar un estudio con el que se pueden obtener modelos predictivos para poder anticiparse a una situación de emergencia en las Islas Canarias. Con el estudio desarrollado a partir del análisis de estos datos y mediante técnicas de Machine Learning y Deep Learning (Inteligencia Artificial), se puede predecir en un 80% si se va a producir una o más incidencias en las islas Canarias, en un día, una hora y municipio en concreto. El proyecto permite mejorar la gestión de los servicios de emergencias, los recursos humanos y también los tiempos de respuesta en el futuro. No es ciencia ficción, esto es posible y en este webinar te lo contamos todo. ¡Apúntate el martes a las 17:00 a este webinar gratuito!
Figura 2: Prediciendo emergencias con IA
Viernes, 18 de Enero
How to Hack [Móstoles] [G]  El próximo 18 de enero, viernes, tendrá lugar el tercer how to hack. En esta ocasión nos juntaremos en el vivero de empresas de Móstoles. La dirección es Móstoles Tecnológico, C/ Federico Cantero Villamil, 2B, 28935 Móstoles, Madrid, Madrid. Gente interesada en pasar un buen rato acompañado de algo de comer, refrescos, cerveza y unas charlas sobre ciberseguridad. En este caso, refrescos y cervezas las dejaremos para después del evento. El horario de comienzo son las 16.15 (recomendado pillar sitio a las 16.00, apertura de puertas) y tendrá una duración de dos horas o dos horas y media. 
Figura 3: How to Hack en el Vivero de empresas de Móstoles
El evento es totalmente gratuito y habrá sorpresas para los asistentes. En esta edición tenemos los siguientes ponentes: Pablo González (@pablogonzalezpe). Charla sorpresa. Álvaro Nuñez-Romero (@toolsprods) que nos hablará sobre Arduino y las posibilidades de éste aplicándolo a la ciberseguridad. Jesús Alcalde. Sorpresa de la gente de TheSecuritySentinel que nos contarán novedades en herramientas de ciberseguridad aplicándolo en un entorno real. Después: cervezas y comida. Lo mismo me paso hasta yo. Más info aquí.

Sábado, 19 de Enero
Curso Online de Hacking Ético Experto [Online] El próximo fin de semana comienza una de las formaciones más exitosas de The Security Sentinel. Con 180 horas de formación este curso es una buena oportunidad para abrirse camino en el mundo profesional del hacking ético. Tienes toda la información de los módulos y la metodología de trabajo en la web del mismo.
Figura 4: Curso Online de Hacking Ético Experto
Además, todos los asistentes recibirán como material de apoyo el libro de Pablo González de 0xWord titulado "Pentesting con Powershell" del que tanto os hemos hablado por este blog.
Figura 5: Pentesting con PowerShell

Además, durante toda la semana, en el Espacio de la Fundación Telefónica tienes tres exposiciones que merece la pena que no te pierdas. La primera tiene lugar hasta el 3 de Febrero y es una colección de robots preciosa. Se llama Nosotros Robots, y tenéis una buena recopilación de ellos, desde los de Star Wars, a los de la historia del cine y la ciencia. 


En esta segunda entrada os he dejado fotos de unos cuantos más de los que puedes descubrir allí. Cada uno de ellos es una historia diferente que merece la pena conocer. Cada uno de ellos ha supuesto algo en el avance la ciencia y el conocimiento de este futuro que ya está aquí.


Además de esta exposición, tienes también la de la Historia de las Telecomunicaciones que os conte en otro artículo hace un año. Ha cambiado un poco, pero sigue siendo más que interesante visitarla - y está junto a la de los robots -.

Y por último, más que recomendable la de Más allá de 2001: Odiseas de la Inteligencia. Allí tienes máquinas más que sorprendentes, como la del ajedrecista. Momentos míticos como cuando HAL aprende a leer los labios usando Visión Artificial, o como en la evolución, los Homo que consiguieron utilizar herramientas - tecnología - son los que gobernaron la evolución, mientras que los otros .... desaparecieron. Interesante para completar los libros de Sapiens y el Gen Egoista.


Vamos, que tienes cosas para hacer esta semana, sí o sí, y durante las próximas semanas esto se irá acelerando que hay que coger velocidad de crucero cuanto antes.

Saludos Malignos!

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares