domingo, mayo 21, 2017

El curioso bug del Oblivion

Si, ya se que el excelente Oblivion de la saga Elder scrolls desarrollada por Bethesda va para unos diez años de su publicación. Lo compré hace unos años, y como juego de pascuas a ramos, tengo una partida empezada desde hace - literalmente - años. Estos últimos tiempos me he animado a retomarlo y me he encontrado un curioso bug en una de las misiones del juego cuando jugaba en una PS3.

Cuando la PS3 está en español, el juego también está en ese idioma y una de las misiones es El engaño de la sirena. Consiste en desenmascarar unas ladronas que seducen a hombres casados para robarles. Las pistas no llevarán a la granja de Gweden a las afueras de Anvil. Entraremos en la cabaña, hablaremos con una de las ladronas ... y no se podrá salir. El problema es que falta un diálogo en la versión en español del juego que no sale. Bien, la solución es relativamente fácil: poner la playstation en inglés para completar esa misión. La interfaz del juego cambia a inglés y podemos terminar la misión.

Tengo entendido, que al menos en la versión PC, existe un parche que corrige este bug. Lo que desconozco es si está disponible para otras plataformas.

sábado, mayo 13, 2017

Wanna Cry: Mis notas (Act)

Nota importante sobre Wanna cry

Este es un gusano que utiliza una vulnerabilidad conocida en el protocolo SMBv1 que implementa todos los sistemas Windows. Microsoft publicó hace dos meses el boletín de seguridad MS17-010 donde están todas las actualizaciones necesarias para los sistemas de Microsoft desde Vista en adelante. Hay que comprobar que está instalada en nuestros sistemas para cortar la propagación del gusano.

Aunque en principio, no se publicó parche para Windows XP y Windows 2003 - ambos fuera de soporte -, Microsoft acaba de publicar las actualizaciones para los mismos contra el Wanna Cry, dado los problemas que está causando.

Wanna Cry: Mis notas

Wanna Cry es un gusano informático: un programa capaz de replicarse a si mismo e ir infectando ordenadores sin necesidad de intervención de los usuarios. La particularidad es la carga de pago que lleva: una vez que ha conseguido infectar un ordenador, cifrará todos los archivos del mismo y exigirá un rescate de 300 dólares que debe de pagarse usando bitcoins. El usuario que haya sido infectado por este virus, no podrá acceder a sus archivos, a menos que pague el rescate y le den la clave que descifra los mismos, es decir entra en la categoría de ransomware. Además, intentará infectar a otros ordenadores usando las sesiones de escritorio que cada usuario tenga en la máquina Windows e infectar máquinas aleatorias en Internet.

Se propaga aprovechando una vulnerabilidad en un protocolo de Windows, SMBv1. Cualquier versión de Windows hasta la 10 es vulnerable y es necesario instalar el parche del boletín de segurida MS17-010 para cerrar el problema de seguridad. Puesto que utiliza SMBv1, las conexiones se realizarán al puerto 445, por lo cual, si por circunstancias no es posible aplicar el parche, hay que asegurar que las máquinas que no lo tienen están segmentadas en red de manera adecuada o que tiene un cortafuegos (firewall) que bloquea cualquier acceso a ese puerto.

Leyendo este análisis del virus hay que resaltar estos puntos:

  • Intenta analizar la red local para intentar conectarse a otras máquinas Windows a través del puerto 445 para explotarlas.
  • Intentará escanear máquinas en Internet, generando direcciones IP aleatorias. Un buen indicador que se está infectado es ver en los cortafuegos de perímetro conexiones a direcciones de Internet que usen como destino el puerto 445
  • El código que utiliza para explotar el problema de seguridad, descrito en el MS17-10, es ETERNAL BLUE, uno de los exploits publicados por Wikileaks del supuesto arsenal de la NSA
  • ETERNA BLUE no necesita autentificación para atacar a Windows 7 o Windows 2008. Basta con que tenga conectividad en la red.
  • Hay un dominio, www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com., que en caso de que el virus tenga acceso a él, no instalará nada. Ojo, esto sólo se ha probado con algunas versiones. Nada impide que aparezca una versión distinta donde ésto no sea así. También parece ser que si el Mutex de Windows, MsWinZonesCacheCounterMutexA, el gusano terminará. Con lo cual, también puede ser un indicador de infección.

Quizás lo más complicado sea limpiar el virus. A menos que se esté dispuesto a pagar el chantaje del ransomware, la información está cifrada con el algoritmo AES-128-CBC, con una clave generada de manera aleatoría y posteriormente cifrada. La única posibilidad para muchas personas puede que sea la reinstalación del equipo, cosa que debe hacerse desde un medio y una copia de seguridad que se esté seguro que no está infectada. Además, hay que actualizar Windows hasta esta estar seguro que se ha incluido los parches necesarios.

Indicadores de compromiso

Hay varios indicadores de compromiso que pueden dar pistas sobre el gusano. Por ejemplo, WannaCry Indicators, en Alienvault OTX se pueden ver listados dominios, sumas criptográficas de los binarios que infectan, los dominios de TOR que utiliza para contactar con el centro de control. Otra página web

Los afectados

El gran afectado en España ha sido Telefónica, que ha tenido que decir a sus empleados de la red interna que dejaran de usar los ordenadores. Además, se han visto afectadas varias empresas españolas y muchas de ellas, que por motivos de negocio, comparten conexiones con Telefónica, se han visto obligadas a cortar la conectividad con la operadora.

Pero quizás, el caso más grave de infección sea el que ha ocurrido en Reino Unido, donde varios hospitales y centros del servicio de salud (NHS) se han visto afectados, siendo necesario desviar pacientes hacia otros centros.

También han sido secuestrados varios ordenadores del Ministerio de Interior ruso, por otra parte, país donde más virulenta ha sido la infección.

Referencias

jueves, mayo 11, 2017

EEUU: Rumores de prohibición de portátiles en cabina en vuelos desde Europa

(vía Slashdot) Parece ser que el Department of Homeland Security de Estados Unidos se está planteando extender la prohibición existente de llevar aparatos eléctronicos de cierto tamaño en la cabina de los aviones a todos los vuelos con origen en suelo europeo. Al igual que ocurre actualmente con los vuelos de una serie de aerolíneas de Oriente Medio, sería necesario facturar estos equipos electrónicos como equipaje que viajaría en la bodega de carga. De nuevo, no se puede olvidar los problemas de las baterias de ión litio, al que sumar el cuidado con el que se trata el equipaje en la carga y descarga del avión o los inconvenientes que puede causar para personas que quieren trabajar durante el viaje. Eso sí, todo en nombre de la seguridad hasta que haya un incidente serio en vuelo por un portátil en la bodega de carga.

lunes, mayo 08, 2017

vim: Reformateando XML / JSON

Supongamos que tenemos JSON o un fichero XML que no esta bien formateado. Por ejemplo

<article>
<blog src="https://icewinddale.blogspot.com"></blog>
<author>Drizzt
    </author>
    </article>

vim permite pasar el texto del buffer actual a través de un filtro y substituir el contenido del buffer actual por la salida del filtro. Para el caso de XML se puede usar xmllint. La siguiente orden de vim pasará todo el contenido del buffer a la entrada estándar de xmllint que lo formateará y su salida substituirá el contenido del buffer.

%!xmllint --format -

Hay que tener en cuenta que en caso de error, el texto que tengamos en el buffer será el mensaje de error de la utilidad.

Esto mismo se puede hacer también con JSON si se usa la utilidad jq:

%!jq .

La orden que se está usando para ejecutar y filtrar los datos es más genérica. Especificamos un rango - donde % significa el fichero completo -, y la orden que se quiere ejecutar tras !. Esto da la flexibilidad necesaria, por ejemplo, para sólo formatear el json entre las líneas 3 y 4 de este texto:

Linea 1
Linea 2
{"key1": "value1", 
        "key2": "value"}
Linea 5 

Se usa la siguinte orden:

:3,4!jq .

El resultado de ejecutar dicha orden será:

Linea 1
Linea 2
{
  "key1": "value1",
  "key2": "value"
}
Linea 5