Lenguajes JVM

Estándar

Cuándo apareció Java hace ya 22 años, también apareció el JVM (Java Virtual Machine), la máquina virtual capaz de correr en cualquier sistema operativo y que le otorga a Java su capacidad de ser escrito sólo una vez y poder ejecutar el bytecode en casi cualquier sistema operativo moderno. Pero Java no es el único lenguaje de programación que puede generar bytecodes para el JVM, es más hay todo un gran número de lenguajes de programación que permiten hacer exactamente lo mismo, dentro de ellos el actualmente muy popular Kotlin. Este post es sobre estos lenguajes de programación que generan bytecodes para JVM.

Scala, es un lenguaje de programación de uso general que proporciona soporte para la programación funcional y fue uno de los primeros lenguajes JVM y su objetivo fue resolver muchas de las críticas de Java.

El código fuente de Scala está destinado a ser compilado al bytecode de Java, de modo que el código ejecutable resultante se ejecute en una máquina virtual Java. Scala proporciona interoperabilidad del lenguaje con Java, de modo que las bibliotecas escritas en ambos idiomas pueden ser referenciadas directamente en código Scala o Java. Al igual que Java, Scala es orientada a objetos, y utiliza una sintaxis que usa llaves que recuerda mucho al lenguaje de programación C. A diferencia de Java, Scala tiene muchas características de lenguajes de programación funcionales como Scheme, Standard ML y Haskell, incluyendo currying, inferencia de tipos, inmutabilidad y concordancia de patrones. También tiene un sistema de tipo avanzado que soporta tipos de datos algebraicos, covarianza y contravariancia, tipos de orden superior (pero no tipos de rango superior) y tipos anónimos. Otras características de Scala no presentes en Java incluyen la sobrecarga del operador, los parámetros opcionales, los parámetros con nombre, las cadenas sin formato y las excepciones no verificadas.

El nombre Scala es una mezcla de las palabras escalabilidad (scale) y lenguaje (language) en inglés. Lo que significa que está diseñado para crecer con las exigencias de sus usuarios.

Groovy, es otro lenguaje JVM y está creado en base al paradigma de la programación orientado a objetos para la plataforma Java. Es un lenguaje dinámico con características similares a las de Python, Ruby, Perl y Smalltalk. Se puede utilizar como lenguaje de scripting para la plataforma Java, se compila dinámicamente al bytecode de la máquina virtual Java (JVM) y se interopera con otras bibliotecas y código Java. Groovy utiliza una sintaxis similar a Java. La mayoría del código Java también es válido sintácticamente en Groovy, aunque la semántica puede ser diferente.

Groovy 1.0 fue lanzado el 2 de enero de 2007 y Groovy 2.0 en julio de 2012. Desde la versión 2, Groovy también se puede compilar de forma estática, ofreciendo inferencia de tipo y mejoras de rendimiento con respecto de Java.

Fantom, es un lenguaje de programación orientado a objetos de uso general creado por Brian y Andy Frank que se ejecuta en una JVM, pero también en JavaScript y .NET Common Language Runtime, sin embargo el soporte de .NET se considera estatus de “prototipo”. Su principal objetivo de diseño es proporcionar una API de biblioteca estándar que abstrae la cuestión de si el código se ejecutará en última instancia en el JRE o CLR. Al igual que C # y Java, Fantom utiliza una sintaxis de llaves. El lenguaje apoya la programación funcional a través de cierres y concurrencia a través del modelo actor.

Fantom está a la mitad de camino entre un lenguaje dinámicamente tipado y estáticamente tipado. El sistema de tipos de Fantom es simple por diseño. Todas las variables se escriben estáticamente, ya que están en C # y Java. Fantom rechaza los tipos genéricos debido a su complejidad, pero tiene un conjunto de tipos genéricos integrados: Listas, Mapas y Func. Fantom también puede tener la sensación de un lenguaje de tipo dinámico a través de llamadas dinámicas y downcasting automático. Fantom tiene un API fácil de usar que permite reflexión y capacidades de metaprogramación.

Clojure, es otro JVM creado por Rich Hickey e inspirado en el paradigma de la programación funcional. Antes de crear Clojure, Hickey había desarrollado un proyecto llamado dotLisp, un similar a Clojure, pero basado en el Framework .NET, además de tres otros intentos anteriores de proporcionar interoperabilidad entre Lisp y Java: una interfaz Java de lenguaje extranjero para Common Lisp (jfli), una interfaz de objetos extraños para Lisp (FOIL)  y una interfaz amigable con Lisp para Java Servlets (Lisplets).

Hickey pasó cerca de 2 años y medio trabajando en Clojure antes de publicarlo públicamente, gran parte de ese tiempo trabajando exclusivamente en Clojure sin financiamiento externo. Al final de este tiempo, Hickey envió un correo electrónico anunciando el idioma a algunos amigos de la comunidad Common Lisp.

El proceso de desarrollo es impulsado por la comunidad y es administrado en el sitio web de Clojure Community. El sitio web contiene documentos de planificación y un seguimiento de problemas donde se pueden presentar errores. La discusión de desarrollo general ocurre en el Clojure Dev Google Group. Mientras que cualquiera puede enviar reportes de bugs e ideas, para contribuir con parches uno debe firmar el acuerdo de Clojure Contributor.

Los desarrolladores Clojure están dentro de los mejor pagados del mercado con sueldos en los seis dígitos.

Ceylon, es otro de los lenguajes JVM que siguen el paradigma de la programación orientada a objetos, fuerte y estáticamente tipado, con énfasis en la inmutabilidad, creado por Red Hat. Los programas de Ceylon se ejecutan en la máquina virtual Java (JVM) y se pueden compilar a JavaScript también. El diseño del lenguaje se centra en la legibilidad del código fuente, previsibilidad, facilidad de uso, modularidad y metaprogramación.

Las características importantes de Ceylon incluyen:

Un sistema de tipo que impone seguridad nula y existencia de elementos de lista en tiempo de compilación
Sintaxis regular y semántica, evitando casos especiales y construcciones primitivamente definidas a favor del azúcar sintáctico
Apoyo a la programación genérica y metaprogramación, con genéricos reificados
Modularidad incorporada al lenguaje, basada en módulos JBoss, interoperable con OSGi y Maven
Herramientas potentes, incluyendo un IDE basado en Eclipse

El nombre “Ceylon” (Ceilán en español), es una referencia oblicua a Java, ya que Java y Sri Lanka, antes eran conocidos como Ceylon (Ceilán), que son islas conocidas por el cultivo y la exportación de café y té.

Kotlin, el recientmente popular lenguaje de programación, también forma parte de la familia de lenguajes JVM. Kotlin es un lenguaje de programación estáticamente tipado que funciona en una máquina virtual de Java y que también puede ser compilado a Javascript o utilizar la infraestructura del compilador de LLVM. Su desarrollo principal esta a cargo de un equipo de programadores de JetBrains con sede en San Petersburgo, Rusia. Aunque la sintaxis no es compatible con Java, Kotlin está diseñado para interactuar con el código Java y depende del código Java de la Java Class Library. Es por eso que fue elegido por Google como uno de los lenguajes para el desarrollo de aplicaciones Android.

El nombre viene de la isla de Kotlin, cerca de San Petersburgo. Andrey Breslav mencionó que el equipo decidió nombrarlo igual que isla ya que el nombre Java, también hace referencia a una isla.

Y finalmente, para no hacer esta lista infinita, tenemos a:

Xtend, que es un lenguaje de programación de alto nivel de uso general para la máquina virtual Java, como todos los listados aquí. Sintácticamente y semánticamente Xtend tiene sus raíces en el lenguaje de programación Java, pero se centra en una sintaxis más concisa y agrega algunas funcionalidades adicionales tales como inferencia de tipos, métodos de extensión y sobrecarga de operadores. Al ser principalmente un lenguaje orientado a objetos, también integra características conocidas de la programación funcional. Xtend se escribe de forma estática y utiliza el sistema de tipos de Java sin modificaciones. Se compila a código Java y por lo tanto se integra perfectamente con todas las bibliotecas Java existentes.

El lenguaje Xtend y su IDE se desarrolla como un proyecto en Eclipse.org y participa en el tren de lanzamiento anual de Eclipse. Es un proyecto de código abierto bajo la licencia pública Eclipse. Sin embargo, el lenguaje puede ser compilado y ejecutado independientemente de la plataforma Eclipse.

Xtend se originó de Xtext, que es la tecnología utilizada para definir el lenguaje y el editor. Xtend fue lanzado por primera vez como parte de Xtext en el lanzamiento de Eclipse Indigo en junio de 2011. Desde el lanzamiento de Eclipse Juno (junio 2012, Xtend versión 2.3) Xtend se ha convertido en un proyecto independiente.

Finalmente aquí les dejo una infografía con la cronología de estos lenguajes (funte):

Espero que esta información les haya sido de utilidad a todos Uds.

Un nuevo bug descubierto en Windows 7 puede colgar a tu computadora si visitas una página web

Estándar

El día de ayer apareción en ArsTechnica un artículo en el que descibian la mecánica de funcionamiento de un nuevo bug descubierto en Windows 7 y Windows 8.1, que cuelga a una computadora que corre dicho sistema operativo y produce una BSOD (Blue Screen Of Death).

La fuente citada por ArsTechnia es un portal de temas informáticos rusos que refiere a una firma de productos de seguridad rusa llamada Aladdin R.D. como la que descubrió el error.

Este nuevo error, que afortunadamente no parece afectar a Windows 10, utiliza un nombre de archivo especial del sistema operativo $MFT. El $MFT es el nombre dado a uno de los archivos de metadatos que son utilizados por el sistema de archivos NTFS de Windows. El archivo existe en el directorio raíz de cada volumen NTFS, pero el controlador NTFS lo maneja de manera especial y está oculto de la vista e inaccesible para la mayoría de los programas. Los intentos de abrir dicho archivo normalmente están bloqueados, pero si el nombre de archivo se usa como si fuera un nombre de directorio, por ejemplo c:\$MFT\123 entonces el controlador NTFS impone un bloqueo al archivo y nunca lo libera. Cada operación subsecuente que intente usar el archivo $MFT tendrá que esperar a que el bloqueo se libere, pero esto nunca ocurre. Esto bloquea a todos y cada uno de los demás intentos de acceso al sistema de archivos, por lo que cada programa que necesite acceso a disco comenzará a colgarse, haciendo que la máquina sea inutilizable hasta que se reinicie.

Este tipo de ataque puede ser explotado remotamente si una página web usa el nombre de archivo incorrecto en, por ejemplo, la ruta para acceder a una imagen, lo cual provocará el error y hara que la máquina deje de responder. Dependiendo de lo que la máquina está haciendo simultáneamente, a veces puede producir una BSOD inmediatamente. De cualquier manera, necesitará reiniciar la computadora para poder continuar usandola. Algunos navegadores bloquearán los intentos de acceso a estos recursos locales, pero lamentablemente Internet Explorer no lo hace e intenta acceder al archivo con nombre no válido.

Se sabe que el error no ocurre de forma remota (por ejemplo, enviando a IIS una solicitud de un nombre de archivo incorrecto), pero no nos sorprendería si en ciertas configuraciones o con una estratégia más sofisticada este problema pudiera ocurrir en servidores también.

Microsoft ha sido informado del problem, pero hasta el momento de la publicación no ha publicado ningún parche para este bug.

22 años de Java

Estándar

Es difícil de creer que Java fue lanzado públicamente por primera vez hace 22 años, para ser exactos el 23 de Mayo de 1995. Pocos podrían haber predicho que el lenguaje sería una tecnología fundamental e influyente de las Ciencias de la Computación y al parecer seguirá siendo relevante durante las décadas por venir.

Cuenta la historia que en 1990, los empleados de Sun Microsystems estaban cansados ​​de C y C++. El ingeniero Patrick Naughton estaba frustrado con los API de Sun y se le dio la oportunidad de hacer algo al respecto. Él crearía un lenguaje de programación alternativo como parte del Stealth Project (Proyecto Furtivo).

Había cinco requisitos para este experimento. El nuevo lenguaje tenía que:

  • Ser “simple, orientado a objetos y familiar”
  • Ser “robusto y seguro”
  • Ser “arquitecturalmente neutro y portátil”
  • Ejecutar con “alto rendimiento”
  • Ser “interpretado, orientado a hijos de ejecución y dinámico”

El Stealth Project fue renombrado a Proyecto Verde y  se unieron al equipo de Naughton, Mike Sheridan y James Gosling. Con el equipo formado, comenzaron a trabajar en el desarrollo de nuevas tecnologías que serían adecuadas para la próxima generación de dispositivos inteligentes.

Los primeros intentos buscaron combinar C y Mesa (entorno gráfico), produciendo un entorno orientado a objetos en C++ y Gosling incluso intentó crear una nueva forma de C++ que llamó C++ ++ –.

C++ sería descartado ya que requería demasiada memoria y tenía una tendencia a conducir a errores de desarrollado gracias a su complejidad debido en gran parte a que los desarrolladores debian de manejar manualmente la memoria del sistema.

El nuevo lenguaje de programación fue llamado Oak debido a un roble (oak) que había fuera de la oficina de Gosling. El proyecto se completó luego de 18 meses y en el otoño de 1992 el equipo estaba listo para mostrar su trabajo en una demostración privada. El equipo había creado un asistente digital personal llamado Star 7.

Al comentar sobre el lanzamiento, Naughton dijo:

“En 18 meses, hicimos el equivalente a lo que las organizaciones de 75 personas de Sun tardaron tres años en hacer: un sistema operativo, un lenguaje de programación, un kit de herramientas de desarrollo, una interfaz, una nueva plataforma de hardware, tres chips personalizados … usando nuevas y arriesgadas tecnología en cada oportunidad, nos sacamos todos los dientes y nos los pusimos en la boca de cada uno”.

Sun Microsystems decidió dividir The Green Project en una subsidiaria y la rebautizó como FirstPerson, encargando al grupo que se concentrara en el mercado de la televisión. Time Warner contrató a FirstPerson para crear una serie de set-top boxes interactivos. El lanzamiento implicó la creación de una plataforma de set-top boxes que los jefes de la compañía de cable pensaron pondría demasiado poder en las manos de los espectadores, así que la idea fue desechada y FirstPerson perdió su oferta contra SGI. Incapaz de asegurar otro acuerdo (un acuerdo con The 3DO Company también falló), FirstPerson finalmente volvió a Sun.

En junio de 1994, después de varios días de lluvia de ideas y reuniones, el equipo decidió apuntar la emergente plataforma al World Wide Web. En él, vieron todas las cualidades de los medios interactivos que los inspiraron a trabajar con set-top boxes y pensaron que con los navegadores web gráficos como Mosaic podrían continuar con el proyecto.

Los problemas vendrían después de una demanda legal de Oak Technology, que resultó en la necesidad de un cambiar el nombre de la marca para el lenguaje Oak. James Gosling describió este proceso como “locura salvaje” durante el cual “la mayoría de las palabras en el diccionario fueron gritadas”. Los contendientes cercanos incluyeron sugerencias como Silk and DNA, pero finalmente el equipo se decidió por Java.

Hay desacuerdos en cuanto a quién propuso el nombre de Java. Algunos dicen que el grupo llegó con 10 nombres sugeridos y escogió a Java como el mejor del grupo una vez que fueron aprobados por el departamento legal. Otros, como Kim Polese, entonces jefe de productos de Oak, afirma haber sugerido deliberadamente el nombre porque reflejaba la esencia de la tecnología, ya que era “animada, dinámica y divertida”.

Con su nuevo nombre, Java 1.0a2 fue liberado públicamente en la Conferencia SunWorld en San Francisco el 23 de mayo de 1995. Al mismo tiempo, Netscape también anunció que licenciaría Java para su nuevo navegador. John Gage, Director de Ciencia de Sun Microsystem, también anunciaría el lanzamiento del navegador HotJava.

Desde 1995, Java se ha infiltrado en todas las formas de nuestras interacciones cotidianas. Los bancos usan a menudo Java en dispositivos de puntos de venta, enviando datos de clientes desde y hacia los lugares necesarios para realizar los pagos. Los teléfonos móviles utilizan Java para aplicaciones de Android y el sistema operativo Android también se basa en Java. Los videojuegos también hacen uso de este lenguaje de programación, como por ejemplo el popular Minecraft masivamente exitoso y construido por la empresa sueca Mojang.

En pocas palabras, el mundo sería un lugar muy diferente sin Java y por eso es que decidí escribit este post para un lenguaje de programación que ha sido tan revolucionario. Feliz cumpleaños, Java.

Protegiendo tu servidor Apache

Estándar

El servidor web Apache es uno de los más usados en Internet en nuestros días y también uno de los proyectos Open Source más antiguos, creado en 1995. Actualmente es el responsable por servir el 46.28% de los sitios web activos según netcraft:

Developer March 2017 Percent April 2017 Percent Change
Apache 79,942,445 45.82% 78,489,472 46.28% 0.46
nginx 34,317,972 19.67% 33,176,490 19.56% -0.11
Microsoft 15,611,256 8.95% 14,033,779 8.28% -0.67
Google 11,684,677 6.70% 12,048,089 7.10% 0.41

Es por ello que es contínuo blanco de ataques, algunos son del tipo fuerza bruta como los DDoS, otros más elegantes como slowloris apelan a una vulnerabilidad del protocolo HTTP para crear una denegación de servicio agotando los recursos del servidor. En este pequeño post/tutorial voy a explicarles como instalar tres simples módulos de Apache para protegernos contra este tipo de amenzas.

Protección contra DDoS (Distributed Denial of Service):

Los ataques DDoS generalmente son llevados a cabo por una botnet (conjunto de computadoras infectadas y que son controladas por un cibercriminal) que intenta basado en el gran número de computadoras envueltas en este tipo ataque acabar con los recursos de tu servidor, para que este deje de operar normalmente. Esto muchas veces además de representar una pérdida de servicio y un eventual lucro sesante, dependiendo de que tan vital es tu servidor web para el normal desenvolvimiento de tu empresa, puede además crearte grandes facturas con tu proveedor de hosting si es que éste te factura en base al tráfico, por ejemplo este es el caso de AWS (Amazon Web Services).

Para mitigar este problema existe un módulo de Apache llamado Evasive, para instalarlo asumiendo que uses Debian o Ubuntu, los pasos serían los siguientes (asumiendo que ya estas logueado como usuario root):

# apt-get -y install libapache2-mod-evasive
# mkdir -p /var/log/apache2/evasive
# chown -R www-data:root /var/log/apache2/evasive

Luego de haber instalado Evasive, debemos de configurarlo. Para ello debemos editar el archivo “/etc/apache2/mods-available/mod-evasive.load” con cualquier editor de texto plano (pico, nano, vi, vim, emacs, etc.) y pegar estas líneas en el archivo:


DOSHashTableSize 2048
DOSPageCount 20 # Maximo numero de solicitudes de la misma página.
DOSSiteCount 30 # Número total de solicitudes para cualquier objeto por la misma IP de un cliente.
DOSPageInterval 1.0 # Intervalo para resetear el número de solicitudes de una misma página.
DOSSiteInterval 1.0 # Intervalo para el contador del sitio web.
DOSBlockingPeriod 10.0 # Timpo que el IP del cliente permanecerá bloqueado.
DOSLogDir “/var/log/apache2/evasive/evasive.log”

Si están interesados en saber la unidad de tiempo de los intervalos, son minutos.

Luego de los pasos anteriores debemos reiniciar Apache para que los cambios tengan efecto:

# service apache2 restart

Protección contra Slowloris:

Slowloris es un tipo de ataque de denegación de servicio creado por Robert “RSnake” Hansen que permite a una sóla computadora con un ancho de banda limitado derribar a un servidor web, sin que exista alto tráfico hacia el servidor u otros servicios en el mismo servidor se vean afectados.

La mecánica de Slowloris es la siguiente: mantener abiertas la mayor cantidad de conexiones posibles al servidor web de destino, durante el mayor tiempo posible. La idea es agotar todos los puertos libres que tiene el servidor para responder solicitudes HTTP. Para conseguir el objetivo anterior periódicamente, enviará encabezados HTTP, añadiendo-pero nunca completando-la solicitud, es decir crea muchas conexiones que simulan un intento de conexión desde una red muy lenta. Los servidores atacados intentarán mantener estas conexiones abiertas, llenando su máximo grupo de conexiones simultáneas y finalmente negarán los intentos de conexión adicionales de los clientes reales que desean acceder al website.

Existe una prueba de concepto de Slowloris en Github, no recomiendo que dicha herramienta sea usada contra websites reales ya que finalmente puedes ser identificado y acusado formalmente de un crímen. Estoy indicando dónde está el script de prueba de concepto para que puedas probar si tu website es vulnerable o no.

El módulo Apache que nos permite protegernos contra Slowloris se llama QoS (mod_qos) para ser exactos. Y lo instalamos de la siguiente manera:

# apt-get -y install libapache2-mod-qos

Luego debemos editar el archivo de configuración del mismo “/etc/apache2/mods-available/qos.conf “. El cambio debe ser reemplazar la última línea de dicho archivo de esto:

#QS_SrvMaxConnPerIP                                 50

a esto:

QS_SrvMaxConnPerIP                                 30

Es decir debemos descomentar la última línea y reemplazar 50 con 30.

Luego de eso reiniciamos nuestro servidor Apache y podremos chequear que ahora estamos protegidos contra Slowloris. Un detalle importante es que debemos verficar el acceso a nuestro web desde una IP diferente a la usada para atacar con Slowloris, ya que el módulo QoS impone un máximo de 30 conexiones por IP, con lo que el IP del PC que se está usando para atacar se bloquea a si mismo.

Espero que esta información les haya sido de utilidad, espero sus comentarios.

Es Patreon una alternativa para los creadores de contenidos en español

Estándar

Patreon es una plataforma/servicio web que permite a los creadores de contenido, en principio de cualquier idioma, crear su propio servicio de contenido por suscripción. Patreon fue fundada en Mayo del 2013 por el artista Jack Conte, como una forma para monetizar sus contenidos que eran distribuidos por YouTube. Para constuir la plataforma se asoció con el desarrollador Sam Yam y crearon una plataforma digital que permitía a los artistas y creadores de contenido solicitar ayuda para continuar con su labor a mecenas en cualquier parte del mundo.

Según un reciente post en TechCrunch, dicha plataforma ha doblado en un año el número de mecenas a un millón y ya son más de 50,000 los creadores de contenido que monetizan su contenido de esta manera, con la reciente caída de los ingresos de los youtubers esta parece ser una interesante alternativa.

Pero, es viable esta solución en un mercado como el de habla hispana que posee una muy pequeña capacidad de gasto discrecional. Puede que sea difícil pero no imposible, por ejemplo el YouTuber mexicano Juan Villalvazo, ha conseguido que su audiencia lo apoye a través de Patreon con $53 al mes. Puede no parecer mucho, pero definitivamente es un ingreso muy superior al que obtendría si tratara de monetizar sus videos con publicidad y además es regular, algo que no podemos decir de la publicidad.

Sin embargo, no es el único los podcasters Fernando Franco y Diego Graglia, con su Podcast “El Valle de los Tercos“, recorren el Silicon Valley entrevistando en español a emprendedores e inversionistas. Tratando de monetizar a través de Patreon, pero con apenas 8 mecenas apenas superan los $100 al mes.

Si hacemes una búsqueda en la plaforma, nos encontraremos que hay muchos productores de contenido en español que andan en busqueda de mecenas. Pero la gran mayoría no consiguen ni el primero. Esto me lleva a pensar que producir contenido de calidad en español es más una cuestion de vocación, como dice el podcaster español @converso73: “en el podcaster en español no hay dinero” y me atrevería a decir que casi en ninguna forma de producción de contenido en español.Ya que a pesar de que está proyectado que Patreon recaudará este año U.S.$150 millones, una porción insignificate de ese monto será para productores de contenido en español.

Esto explica por qué estamos en el circulo vicioso del contenido basura en español, para conseguir ingresos importantes en publicidad, se debe de conseguir muy grander audiencias y la única forma de hacerlo es produciendo para el mínimo común denominador intelectual, lo cuál explica como el contenido basura ha migrado de la televisión a YouTube.

Los hackers destras de WannaCry están en modo contraataque

Estándar

Según la popular revista Wired, los hackers detrás del ransomware WannaCry están tratando de reanimar el virus en su estado actual de latencia a través de un ataque al dominio que impide su propagación, para ello están usando la gran botnet llamada Mirai, para ello han creado su propia versión de Mirai y están atacando dispositivos vulnerables y usandolos en un ataque de denegación de servicio al servicio que hostea el nombre de dominio que detiene la propagación de WannaCry.

En caso de que este ataque de denegación de servicio tenega éxito, en las próximas 24 horas la propagación de WannaCry se reiniciará. Dado que además según The Verge, el 98% de las máquinas infectadas con WannaCry es Windows 7 (version 64 bits), la razón de esto no es que Windows 7 sea particularmente vulnerable, sino que por el contrario es aún la más popular versión de Windows, con una ventaja de 4 a 1 con respecto a Windows 10.

Si Ud. tiene una computadora con Windows 7, actualize su PC inmediatamente con los últimos parches de seguridad antes de que los hackers puedan reiniciar la propagación del gusano WannaCry, además sería importante que haga una copia de seguridad de sus datos.

 

La herramienta wanakiwi permite desencriptar archivos en Windows XP, 7 y 2003

Estándar

Una nueva esperanza parece iluminar a los usuarios que vieron encriptados sus archivos como resultado de la demoledora acción del ransomware WannaCry, el dia de hoy apareció publicado en GitHub una herramienta llamada Wanakiwi que promete resolver el problema creado por dicho malware.

Ayer habíamos comentado que se había hecho público una herramienta llamada Wannakey que aprovechando una falla del API de encriptación de Windows XP podía si la computadora no había sido reiniciada encontrar la clave buscando en la memoria RAM de la computadora infectada. Pero hoy, usando esa misma estrategia un grupo de investigadores pudieron exitosamente desencriptar archivos en los sistemas operativos Windows XP, Windows 7 y Windows 2003. Aunque no está confirmado uno de los autores de esta herramienta afirma que puede ser útil también para Windows Vista, Server 2008, and 2008 R2.

El investigador en segruidad europeo, Matt Suiche, cofundador de la consultora de seguridad Comae Technologies, ayudó a desarrollar y probar wanakiwi y confirmar que la herramienta funciona. Europol, la agencia policial de la Unión Europea, también ha validado dicha herramienta. Suiche ha publicado detalles técnicos aquí.

Los usuarios que tengas computadoras con WannaCrypt sólo deben descarg la herramienta Wanakiwi y si dicha herramienta puede encontrar los valores usados para generar la clave en la memoria del PC, entonces en base a las piezas de información encontrada, producirá una clave de desencriptación y con ella iniciará el proceso de desencriptar los archivos del disco duro.

Ya que este ransomware ha generado tanto ruido en los medios, muchas empresas de seguridad ahora andan buscando antídotos contra los efectos del mismo, esto como una forma de aumentar su visibilidad en un competido mercado como es el de la seguridad. Con suficiente tiempo es posible que una herramienta que permita recuperar los archivos de todas las plataformas infectadas esté disponible.

El IA First reemplaza al Mobile First

Estándar

Hasta no hace mucho tiempo atras todas las grandes compañías de Internet como Google, Microsoft, Amazon o Facebook basaban sus estrategías de crecimiento en el famoso Mobile First, que es la estrategia que propone enfocar los nuevos desarrollos primero en plataformas móviles y luego extenderlos a otras como la web. Sin embargo el actual CEO de Google, el indio Sundar Pichai abrio el Keynote del Google I/O 2017 diciendonos que ahora la nueva estrategia de Google es AI First, o lo que es lo mismo Inteligencia Artificial Primero.

Para ello describió una serie de impresionantes iniciativas, dentro de las cuales destaca Google Assistant SDK, que como su nombre lo indica es un conjunto de librerias que permiten explotar las capacidades de la impresionante maquinaria de deep learning desarrollada por Google y aplicarla a productos tan cotidianos como un microondas o un refrigerador.

Google Assistant SDK, esta disponible de forma gratuita para cualquiera que quiera desarrollar prototipos de futuros productos, por el momento la plataforma hardware soportada es Raspberry Pi 3 y el lenguaje de programación Python. Qué nos ofrece Google en esta versión del SDK:

  • Activación de manos libres.
  • Captura y reproducción de audio.
  • Gestion del estado de las conversaciones.
  • Gestion de timers y alarmas.

Aunque es poco por el momento, pronto se iran agregando más funciones. Pero Google no el único gigante que va en post de este mercado. En un post anterior les había comentado la disponibilidad de Lex, el asistente de Amazon y también debemos mencionar que Microsoft en la reciente conferencia de desarrolladores Build 2017 presentó Cortana Skills Kit, un SDK (kit de desarrollo) que permite crear aplicaciones de asistentes de voz usando la tecnología que hay detras de Cortana.

Este mercado está llenandose rápidamente de grandes jugadores que han comprendido el valor estratégico de dominar el mercado de los asistentes de voz, ya que es muy posible que esta sea la forma principal de interacción hombre/máquina para los dispositivos del IoT (Internet de las cosas).

Lo que me sorprende es la ausencia de Facebook en este mercado y lo aletargado que aparenta Apple con su asistente Siri. Ambas compañías parecen más enfocadas en querer competir en el mercado de la realidad virtual y realidad aumentada, más que en el segmento de los asistentes personales comandados por voz.

Si alguien quisiera saber que caso de uso tendría esta tecnología, permitanme presentarles aquí el ejemplo que nos da Google, un cantinero digital. Es decir un aparato que entiende nuestras ordenes y puede prepararnos el trago que deseemos, e incluso hasta puede contarnos un chiste luego de que ha preparado nuestro trago:

 

Pero hay infinidad de proyectos que pueden mejorar sus capacidades integrandose con los servicios de Google a través del Assistant SDK. Por ejemplo uno que se me ocurre es modificar un microondas para no tener que entrar el tiempo de cocción por un teclado sino hablar directamente con el aparato y decirle por ejemplo que caliente una tasa de agua por 2 minutos o pedirle consejo como por ejemplo consultarle cuánto tiempo debería de calentarse medio kilo de carne para descongelarla y este aplicaría ese timer de manera automática. Incluso podría resolver ese problema que tenemos cuándo nos mezclan unidades en una receta como 2 tazas, 100 mililitros, 3 onzas y 4 cucharitas en una receta, simplemente le dictamos la receta al microondas inteligente en la forma que la tenemos y el aistente integrado se encargará de hacer las conversiones del caso.

Como veras las posibilidades son infinitas, por favor deja en los comentarios que opinas de estas tecnologías y cómo ves a estas tecnología afectando nuestras vidas en los años por venir.

 

Las computadoras con WindowsXP infectadas por WannaCry pueden ser desencriptadas sin pago.

Estándar

El día de hoy apareción un interesante post en el blog tecnológico ArsTechnica, en dónde reportan que las computadoras que usan el sistema operativo Windows XP y que hayan sido infectadas por WannaCry, pueden ser desencriptadas sin necesidad de pagar el rescate exigido por los hackers.

Adrien Guinet, un investigador  en seguridad informatíca de la empresa Quarkslab con sede en Francia, ha publicado un software que elega le permitió recuperar la clave secreta de descifrado necesario para restaurar una computadora que usa el sistema operativo Windows XP y que había sido infectada por WannaCry en su laboratorio. El software aún no ha sido probado para ver si funciona de forma fiable en una gran variedad de equipos XP, incluso en caso de que funcionara correctamente, existen varias limitaciones para su uso. La técnica de recuperación encontrada por el investigador frances, también tiene un valor limitado ya que los equipos con Windows XP no se vieron afectados por el brote principal de WCry durante la semana pasada. Aunque se sabe que el ransomware WannaCry puede infectar equipos con Windows XP, se sabe que el brote original no atacaba computadoras con XP.

Guinet ha declarado: “Este software sólo ha sido probado y confirmado que funciona bajo el sistema operativo Windows XP“, escribió en una nota que acompaña a su aplicación, que él llama Wannakey y que está disponible en GitHub. “Para que funcione, su computadora no debe haber sido reiniciada después de haber sido infectada. Por favor, tenga en cuenta que necesita algo de suerte para que esto funcione (ver más abajo), y por lo tanto, podría no funcionar en todos los casos!

Matt Suiche, investigador y fundador de Comae Technologies, informó que no pudo hacer que la herramienta de descifrado de Guinet funcione.

El ransomware WannaCry, cifra secretamente los archivos de la computadora que infecta para luego exigir que los propietarios de la misma paguen un rescate de $ 300 a $ 600 para obtener la clave de descifrado necesaria para restaurar una computadora a condiciones de trabajo normales, aunque de las personas que han pagado ninguna ha reportado haber recibido la clave de descifrado. El ransomware utiliza el API de Cryptografía de Microsoft incluido con Windows para manejar muchas de las funciones, incluida la generación de la clave para cifrar y descifrar los archivos. Después de crear y asegurar la clave, la interfaz borra la clave en la mayoría de las versiones de Windows.

Sin embargo, un bug previamente pasada por alto en Windows XP, puede evitar que se produzca el borrado en esa versión de Windows. Como resultado, los números primos utilizados para generar una clave secreta de WannaCry pueden permanecer intactos en la memoria del ordenador hasta que se apague el mismo. Wannakey fue capaz de examinar con éxito la memoria de una máquina XP infectada y extraer las variables p y q en las que se basaba la clave secreta.

“Si tienes suerte (es decir, la memoria en dónde están almacendas las claves no han sido reasignadas y borradas), estos números primos todavía podrían estar en la memoria”, escribió Guinet.

El investigador también escribió en su cuenta de Twitter @adriengnt ‏: “He terminado el proceso completo de descifrado, pero confirmo que, en este caso, la clave privada puede ser recuperada en un sistema XP #wannacry !!”. Y en ese mensaje de Twitter compartió esta captura de pantalla:

No hay evidencias que el método utilizado por Guinet pueda ser aprovechado en otras versiones de Windows, así que la gran mayoría de las 200,000 computadoras infectadas aún tienen sus datos cifrados a la espera de alguna solución.

 

 

 

Una nueva amenaza

Estándar

El viernes pasado, el ransomware llamado WannaCry usó herramientas de hackeo  robadas de la NSA (National Security Agency) para atacar a más de 200.000 computadoras en 150 países. El lunes, los investigadores dijeron que el mismo kit de ataque de grado militar fue utilizado en un hackeo mucho más antigo y posiblemente a mayor escala que hizo que las computadoras infectadas formaran parte de una botnet que minaba la criptomonedas.

Al igual que con WannaCry, este ataque usó una vulnerabilidad denominada EternalBlue y una puerta trasera llamada DoublePulsar, ambas herramientas de hacking desarrolladas por la NSA que se filtraron a mediados de abril por un grupo que se llamaba Shadow Brokers, en abril pasado. Pero en lugar de instalar ransomware, el objetivo de este trojano fue la minería de criptomonedas, este nuevo virus es conocido como Adylkuzz.

Los síntomas de este trojano incluyen la pérdida de acceso a los recursos compartidos de la red y la degradación del rendimiento del PC y del servidor. Varias grandes organizaciones han reportado este tipo de problemas de red, que originalmente fueron atribuidos a la campaña de WannaCry. Sin embargo, debido a la falta de avisos del rescate que caracterizan al ransomware, ahora se sabe que estos problemas podrían estar asociados con la actividad de Adylkuzz.

Cabe señalar que la propagación de Adylkuzz es anterior al ataque de WannaCry, comenzando por lo menos el 2 de mayo o incluso tan tempano como el 24 de abril. Este ataque es continuo y, aunque es menos llamativo que WannaCry, es potencialmente disruptivo.

El trojano actúa de la siguiente manera: existen varios servidores privados virtuales que exploran masivamente Internet en el puerto TCP 445 en busca de posibles objetivos.

Tras una explotación exitosa a través de EternalBlue, las máquinas quedan infectadas con DoublePulsar. La puerta trasera DoublePulsar luego descarga y ejecuta Adylkuzz desde otro servidor en Internet. Una vez que se está ejecutando, Adylkuzz primero detendrá cualquier posible instancia de sí mismo que ya este siendo ejecutando (es decir trata de matar posibles trojanos que compitan con él) y bloquea la comunicación SMB para evitar otras posibles infecciones a través de la misma vulnerabilidad. A continuación, determina la dirección IP pública de la víctima y descarga las herramientas necesarias para hacer la minería de la criptomoneda y además herramientas de limpieza, para borrar su reastro.

La criptomoneda que está minando Adylkuzz es el Monero, que es similar al bitcoin pero con mejoradas capacidades de anonimidad. Y de acuerdo a los investigadores que han hecho público esta nueva amenaza ya lleva recaudado más de $43,000.

En cuánto tenga más información sobre esta nueva amenaza actualizaré este post.