DEBIAN PRO

DEBIAN PRO
DEBIAN

lunes, 22 de mayo de 2017

WannaCry Ransomware Telefonica ataque.


Datos generales.

Intentaré explicar de una manera simple lo que pasó ( y volverá a pasar ) con WannaCry/Ransomware/incidentes de las últimas semanas.


Mapa del Ataque de WannaCry.




Todo equipo electrónico (teléfonos, tables, portatiles, PCs, Cámaras web) tienen un "Programa" dentro que controla los componentes físicos.
El teĺéfono es un aparato electrónico físico pero al arrancarlo inicia un "Sistema Operativo" / "Firmware" que es el que nos permite interactuar con él, interpretando los toques en la pantalla, botones y realizando acciones.


Los que usan Windows, Windows es "el sistema operativo", los que usan productos Apple (OSX) es el sistema operativo, los que usan teléfonos con Android "Android" es el sistema operativo (Linux) y los que usan Linux igual.

Todo equipo físico requiere de una parte "programa"/"programable"/"cambiante" para manejarlo que pueda ser actualizable para poder mejorar sus funciones o arreglar fallos. Si esto no existiera la vida útil de un equipo se reduciría y ante un problema detectado, deberíamos cambiar el equipo físico por uno nuevo.

Como ejemplo, cuando alguien dice se me actualizó su teléfono, quiere decir que, el fabricante el teléfono envió otro S.Operativo para que pise/reemplace el que teníamos.

Además del S.Operativo, hay "programas" que corren sobre el S.O., por ejemplo el programa para leer correos, navegador en internet, facebook, whatsapp, google maps, etc.

Las empresas que desarrollan los programas también los actualizan y nos mandan nuevas versiones a nuestros equipos.



Dicho esto, ahora llegamos a una parte oscura y fea pero que es importante entender.

Todos los sistemas operativos y todos los programas fueron hechos por hombres que tuvieron descuidos o no contemplaron ciertas situaciones de uso, todos hemos vivido el que un programa se cierre solo, de un error o directamente se cuelga y tenemos que reiniciarlo. A veces solo un programa a veces el sistema operativo. Los que tengan Windows hace años, recordarán la frase de "reinicia el Windows cada dos o tres dias".

Nada es perfecto, y así como explotaban ciertas baterías por defectos de construcción, también ocurre que ciertos programas fallan si ocurre algo en particular (ciertas condiciones o combinaciones de acciones).

Esto no es nuevo y desde hace muchos años, las empresas tienen sitios donde se pueden reportar esos errores para que ellos los arreglen. Y en algunos casos hasta pagan a los informantes de esos errores.

En el caso de las empresas propietarias, Microsoft, Apple y otras tantas, suelen intentar tapar los errores porque cobraron por un producto que tiene fallos, cada uno representa un error/problema para su marca, un aumento de costo de reparación, una caída de su imágen... etc... Como esas empresas ganan dinero vendiendo sus productos, es "mejor" para ellos que no parezca tener tantos problemas. Y hay un costo asociado al arreglar esos problemas que reducen sus ganancias (millonarias), ademas de que venden el derecho de uso de un programa pero ellos siguen siendo los propietarios.

En el mundo GPL/Abierto de Linux, los errores/bugs son bien recibidos porque ayudan a mejorar el producto que todos estamos usando, de cierta manera es "mejor recibido" porque se busca tener productos de mejor calidad. No hay costo de uso, ni de licencia por lo que cada error es arreglado porque sirve para mantener la calidad de cada programa.



Ahora llegamos a una parte aún mas oscura.

Tal como han reportado Edward Snowden, Chelsea Manning, Richard Stallman, julian assange, Wikileaks, Anonymous y otros tantos profesionales/sitios de la tecnología, el Gobierno de Estados Unidos (seguramente otros también) ha comprado y desarrollado internamente programas para "explotar"/"Usar" los errores de otros programas, en lugar de reportarlo a Microsoft, Apple y otras empresas, se guardan el conocimiento de "si hago esto y esto, puedo entrar a un equipo con Windows remoto". Se lo denomina "explotar la vulnerabilidad" de un componente.

Hay un mercado de "programas que se aprovechan de errores de otros programas" con grandes empresas que facturan millones para encontrar esos fallos, también grupos de hackers oscuros en el mundo y hasta los propios gobiernos metidos, la inseguridad es un gran negocio porque permite tener el control de equipos de otros SIN SU PERMISO, colgarlos o destruirlos.

Hay pruebas de que la NSA y otras oficinas gubernamentales en el mundo han comprado ese tipo de programas a consultoras legalmente, amparados en sus leyes o no. Han logrado construir el denominado "armamento cibernético".

Ejemplo, supongamos que en un pais del medio oriente que usa Windows en sus equipos y quiere fabricar Uranio enriquecido.
A Estados Unidos (USA) no le gusta y les envía un virus/troyano/programa_malo para que infecte sus PCs y que esos equipos con Windows se reseteen cada hora, o la fecha/hora cambie permanentemente o aparezcan las pantallas azules de "colgado". Eso ha ocurrido y se llama "ataque cibernético" o "ciberataque". Ver Stuxnet.

Al mismo tiempo, puede haber grupos de hackers pagados por China, Rusia, Alemania, UK o "autónomos" que pueden hacer algo similar, desarrollan un programa e "infectan" determinados equipos (o todos los que puedan) para intentar ganar algo, sea molestar a otros, ganar dinero, bajar las acciones de la Bolsa... El daño es para unos y el beneficio para otros.

Creo que hay tres motivaciones para este tipo de acciones, motivaciones políticas/gobierno, motivaciones económicas personales/grupo o simplemente buscar "fama"/reconocimiento durante un tiempo.
Para las motivaciones económicas a veces el mal paga mas y mas rápido que el bien, no hay datos de lo recaudado por los cyberdelincuentes de WannaCry, pero seguramente es muchisimo mas de lo que hubieran ganado enviando los errores a Microsoft para su arreglo.

Si esto lo hacen grupos "muy malos" sin estar soportados por gobiernos se lo suele llamar "cyber terrorismo", es como poner una bomba en un centro comercial y generar "miedo".
Si lo hacen los gobiernos y aunque la acción sea la misma, se lo denomina "Seguridad Nacional"...

Las creencias nacionalistas, religiosas, morales hacen que todos estos grupos puedan ser vistos como "buenos o malos", no voy a emitir opinión.



Orígen del incidente del 12 Mayo.

Hace unos cuantos meses, un grupo de hackers pudo obtener una copia de todos los virus/troyanos/programas_malos de la NSA (su cyberarmamento), el paralelo sería entrar en un complejo de investigación de enfermedades contagiosas y robar las muestras de todos los virus que mantenían guardados (en muchos casos sin vacuna). Quien tenían esos virus los guardaba para enviarlos a un pais lejano y hacer ataques bacteriológicos a otros.

Ese grupo hizo público todos los virus que encontraron y pidió un rescate para vender/entregarlos en internet, cobrando Bitcoins a cambio. Comenzó a liberar de a partes lo que habían encontrado.
Y en un punto del tiempo hicieron público la información de todos los virus que le habían robado a la NSA.

Quizas ellos mismos o otros grupos hackers, obtuvieron esos virus, los mezclaron, les agregaron otras enfermedades y los enviaron a muchos emails en el mundo, generalmente como "Adjuntos en Email", o "Links de fotos/pdfs" o Webs infectados. Parece que lograron llegar a Telefónica, Sistemas de salud Ingleses, empresas de todo tipo y como los virus biológicos, estos virus informáticos infectaron cientos de miles de PCs en el mundo, en pequeñas empresas, grandes, equipos de Universidades, etc. El número total de infectados jamas se sabrá porque es casi imposible estimarlo. Muchas gente reinstaló Windows y no hay donde informar de eso.

En este caso le agregaron un componente para pedir dinero a los infectados, el virus infectó un equipo con Windows, encriptó determinados ficheros y pide dinero a su dueño para des-encriptarlo, esto se llama RansomWare (exactamente esto mismo apareció en una serie llamada MrRobot), una profesía autocumplida o un riezgo que todos veíamos y no se puedo parar.



El ataque.
Por determinadas condiciones todos los equipos infectados (quizas hace meses) se "activaron" y comenzaron a infectar a sus vecinos, y se disparó la epidemia, en varias empresas mandaron a sus empleados a la calle "SIN EQUIPOS" para evitar que contagie a otros equipos (en sus casas).

Esto pasó en equipos con Windows como sistema operativo, pero puede pasar con productos Apple, con Linux y lo peor de todo es que "puede volver a pasar nuevamente".

El programa ademas de encriptar los ficheros presenta una pantalla para pedir un "rescate" de unos 300 U$S, y por conocidos que han aceptado y enviado el dinero, les han enviado la clave para des-encriptar todos sus ficheros.

Gracias a empresas de seguridad que entendieron que estaba pasando, probaron soluciones y además informaron a Microsoft, se pudieron fabricar las vacunas para "ESE VIRUS".
El término es "patchear" Windows, colocarle unos parches/arreglos en sus programas para evitar que vuelvan a vulnerar esos mismos puntos.

Investigadores y consultoras de seguridad mundiales han verificado que en este caso, varios componentes del virus estaban en el armamento robado a la NSA, con una mezcla de otros programas y preparado para encriptar archivos y solicitar dinero.





¿ Responsables ?
Aqui nuevamente por razones "políticas, religiosas, humanas o sociales" se puede acusar a la NSA de construir, pagar y almacenar un muestrario de virus para sus propios fines, SIN avisar a Microsoft (en este caso) de lo que encontraron, buscando su propio beneficio en ataques a otros.
Podemos apuntar a Microsoft por sus políticas propietarias y oscurantismo en la manera de gestionar su seguridad, sus productos propietarios y por "permitir" que existan errores SIN arreglarse en sus productos. O que no hayan sido arreglados rápidamente.

Podemos acusar a un grupo de hackers malos que robaron el armamento bacteriológico/informático de la NSA, sería un robo en instalaciones de un ente de gobierno que se dedica a "Seguridad"...

Las personas y empresas que usan Windows y que confían en su seguridad y sistema de parches, también tienen un 2% de culpa, seguramente escucharon cientos de veces los problemas de un Sistema Operativo pero confiaron que no les pasaría nada, no hacían copias de seguridad, no tenían antivirus (algo que no les hubiera servido en este caso), no mantienen sus productos actualizados, etc.etc.... Es algo mínimo pero son responsables también.



¿ Esto puede volver a pasar ?
SI, SIN DUDA. la pregunta es ¿Cuándo?, porque puede volver a pasar hoy mismo.
¿ Puede ocurrir usando productos Apple ? SI, perfectamente.
¿ Y usando Linux ? Si, quizas en menor grado, pero SI, podría pasar.

Las estadísticas dicen que el 70% de los equipos tiene Windows, un 25% Apple y un 5% Linux. Para mi, eso esos números representan los porcentajes de que vuelva a ocurrir.

Grupos que busquen un beneficio económico o gobiernos que busquen un beneficio estratégico/económico pueden volver a provocar algo similar.



¿ Es este el fin de la tecnología tal como la conocemos ?
¿ Hará falta que la humanidad intente ser mas cooperativa, que mucha gente salga de productos propietarios y se pase a soluciones GPL ?
¿ Hace falta que los directivos de Seguridad en el mundo entiendan los problemas y vean como solucionarlos eficientemente en lugar de patear las pelotas fuera de la cancha ?
¿ Un mundo mas justo ?
Total, que no sea por no pedir.



jueves, 4 de mayo de 2017

VoltDB


En estos dias estoy probando VOLTDB, un nuevo producto para gestión de datos.
Requiere Java.... ya empezamos mal... hay que instalar unos cuantos componentes y ademas solo dice que está soportado para Ubuntu 16.04 (y no en nuevas versiones).

En fin, seguiré probando.


Todo esto sumado a que no compila....
buildinfo:
[exec] This is not a git working tree
[exec]
[exec] This not an svn working copy
[exec] Version: 7.2.1 This is not from a known repository

ee_buildmakefile:
[exec] Traceback (most recent call last):
[exec] File "build.py", line 52, in
[exec] if CTX.compilerName() == 'gcc':
[exec] File "/home/dac/voltdb-voltdb-7.2.1/buildtools.py", line 74, in compilerName
[exec] self.getCompilerVersion()
[exec] File "/home/dac/voltdb-voltdb-7.2.1/buildtools.py", line 92, in getCompilerVersion
[exec] vinfo = output = Popen([self.CXX, "-v"], stderr=PIPE).communicate()[1]
[exec] File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
[exec] errread, errwrite)
[exec] File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
[exec] raise child_exception
[exec] OSError: [Errno 2] No such file or directory

BUILD FAILED
/home/dac/voltdb-voltdb-7.2.1/build.xml:1556: exec returned: 1

Total time: 2 minutes 23 seconds



Un buen rato después, varios paquetes instalados, sistema actualizado nuevamente..... otro error.

[exec] make[1]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d'
[exec] making all in crypto...
[exec] make[2]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto'
[exec] making all in crypto/objects...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/objects'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/objects'
[exec] making all in crypto/bn...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bn'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bn'
[exec] making all in crypto/buffer...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/buffer'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/buffer'
[exec] making all in crypto/bio...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bio'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bio'
[exec] making all in crypto/stack...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/stack'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/stack'
[exec] making all in crypto/lhash...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/lhash'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/lhash'
[exec] making all in crypto/rand...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/rand'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/rand'
[exec] making all in crypto/err...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/err'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/err'
[exec] making all in crypto/asn1...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/asn1'
[exec] make[3]: Nothing to be done for 'all'.
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/asn1'
[exec] if [ -n "" ]; then \
[exec] (cd ..; make libcrypto); \
[exec] fi
[exec] make[2]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/bin'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/engines'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/include'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/include/openssl'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/misc'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/certs'
[exec] created directory `/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/private'
[exec] making install in crypto...
[exec] make[2]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto'
[exec] making install in crypto/objects...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/objects'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/objects'
[exec] making install in crypto/bn...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bn'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bn'
[exec] making install in crypto/buffer...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/buffer'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/buffer'
[exec] making install in crypto/bio...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bio'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/bio'
[exec] making install in crypto/stack...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/stack'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/stack'
[exec] making install in crypto/lhash...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/lhash'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/lhash'
[exec] making install in crypto/rand...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/rand'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/rand'
[exec] making install in crypto/err...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/err'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/err'
[exec] making install in crypto/asn1...
[exec] make[3]: Entering directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/asn1'
[exec] make[3]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto/asn1'
[exec] make[2]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d/crypto'
[exec] installing libcrypto.a
[exec] cp libcrypto.pc /home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig
[exec] chmod 644 /home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig/libcrypto.pc
[exec] cp libssl.pc /home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig
[exec] /bin/sh: 5: cmake: not found
[exec] make: *** [configure-s2-geometry] Error 127
[exec] chmod 644 /home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig/libssl.pc
[exec] cp openssl.pc /home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig
[exec] chmod 644 /home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install/lib/pkgconfig/openssl.pc
[exec] make[1]: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/openssl/openssl-1.0.2d'
[exec] Configuring The S2 Library for building.
[exec] if [ ! -f google-s2-geometry/Makefile ] ; then \
[exec] rm -rf google-s2-geometry; \
[exec] mkdir google-s2-geometry; \
[exec] cd google-s2-geometry; \
[exec] cmake -DCXX_VERSION_FLAG="-std=c++11" -DVOLTDB_THIRD_PARTY_CPP_DIR="/home/dac/voltdb-voltdb-7.2.1/third_party/cpp" -DCMAKE_INSTALL_PREFIX="/home/dac/voltdb-voltdb-7.2.1/obj/release/3pty-install" -DCMAKE_BUILD_TYPE="Release" "/home/dac/voltdb-voltdb-7.2.1/third_party/cpp/google-s2-geometry"; \
[exec] fi
[exec] makefile:382: recipe for target 'configure-s2-geometry' failed
[exec] make: Leaving directory '/home/dac/voltdb-voltdb-7.2.1/obj/release'
[exec] Building with c++11
[exec] Compiler: gcc 5.4.0
[exec] OpenSSL: version 1.0.2d, config linux-x86_64:gcc -fpic
[exec]
[exec] Making in directory "obj/release/" with 1 threads

BUILD FAILED
/home/dac/voltdb-voltdb-7.2.1/build.xml:1546: exec returned: 255

Total time: 1 minute 2 seconds