Search Results for: IoT

Análisis de Linux.Sunless

Siguiendo con nuestra serie de artículos de seguimiento de botnets IoT, en el siguiente artículo vamos a analizar el malware Sunless, el cual fue detectado en nuestros honeypots entre el 18 y el 19 de diciembre.
Este malware se caracteriza por distanciarse en gran medida de variantes basadas en Mirai, incorporando mecanismos de eliminación de la “competencia” a través de técnicas rudimentarias, vistas anteriormente en mineros.

Infección

Tal y como podemos observar en la imagen inferior, Sunless recicla el método de infección característica del malware IoT, utilizando el famoso script bricker.sh, el cual podemos encontrar en numerosas fuentes abiertas.
[Read more…]

Data Loss Prevention. Fuga y pérdida de datos no son soluciones sino riesgos

Aquellos que llevamos muchos años protegiendo la información corporativa e investigando incidencias de fuga de información lo tenemos claro. No todo está detrás de un teclado en materia de secuestro de información, pérdida de datos y prevención de dichos eventos.  A pesar de ello, los esquemas de incidencia, los eventos no esperados, las acciones de las personas y el entorno no dejarán jamás de cambiar de forma sorprendente.

Básicamente hay que diferenciar tres elementos clave para determinar una incidencia de fuga de información:

Entorno: La evidencia de investigación no siempre está en un directorio, un equipo o un archivo. El entorno de fuga de información está compuesto por un conjunto de características de personas, la cultura empresarial, los medios y tiempo en que se desarrolla el proceso de fuga. En la evaluación del entorno podemos encontrar las relaciones de confianza, la segregación funcional, los sistemas de comunicación y un largo etcétera completado por las medidas de control puestas en marcha para la prevención de fuga de información.

Valor de la información:  No todas las fugas de información son importantes ni es posible prevenir el 100 % de los casos. No es lo mismo que se lleven unos resultados empresariales antes de cierre de ejercicio cuando la situación financiera es adecuada que cuando no lo es. De una manera sencilla, el valor de la información tiene una cotización dependiendo de la clasificación de la información que pudiéramos realizar más el impacto que significaría dicha fuga de información a nivel corporativo. Por lo tanto, la clasificación no es un elemento estático al que recurrir sino que proporciona el valor de impacto en caso de fuga dependiendo de un conjunto de criterios asociados al momento en que se produce, la estrategia empresarial y el valor en mercado negro (habitualmente a través de Dark Web). Existen más criterios para determinar el valor de información pero, desde luego, la categorización debe de adaptarse a la realidad del propietario de la información.

Motivación: La fuga de información corresponde a una motivación, racionalización y un esquema de vulneración. Uno de los problemas que suele aparecer en las investigaciones de fuga de información es que no se realiza dicho análisis desde una perspectiva plural y relacionada con la motivación y suele centrarse en la determinación del esquema en uno de los entornos. Es por ello que cuando hablamos de fuga de información basada en sistemas de información puede dejarse de lado el resto de elementos que constituyen la visión global del incidente. Si perdemos ésta perspectiva global, difícilmente podríamos adoptar medidas correctoras o preventivas que respondieran a una situación similar.
[Read more…]

Análisis de Linux.Haikai: dentro del código fuente

Hace unos días conseguimos el código fuente del malware Haikai, el cual corresponde a una más de la multitud de implementaciones llevadas a cabo por el continuo reciclaje de código fuente perteneciente a diferentes botnets IoT. A pesar de que no hemos identificado ninguna novedad respecto a versiones de malware IoT anteriores, nos ha permitido la obtención de mucha información sobre las técnicas, mejoras y autores.

Comentar también que, según diferentes registros obtenidos, esta botnet ha estado actuando durante gran parte del último mes de junio.

En las siguientes líneas se analizará el código, así como las posibles atribuciones y las implementaciones no referenciadas en el hilo de ejecución, las cuales nos permiten adivinar que el código va mutando en diferentes líneas en paralelo para una misma función.

Así pues vamos a comenzar analizando la estructura de los ficheros. [Read more…]

Análisis de Linux.Omni

Siguiendo nuestra clasificación y análisis de las amenazas Linux e IoT activas en la actualidad, en el presente artículo vamos a indagar en un malware detectado muy recientemente en nuestros honeypots, la botnet Linux.Omni. Dicha botnet nos ha llamado particularmente la atención debido a las numerosas vulnerabilidades incluídas en su repertorio de infección (11 diferentes en total), pudiendo determinar, finalmente, que se trata de una nueva versión de IoTReaper.

Análisis del binario

Lo primero que nos llama la atención es la etiqueta que se da el malware en el momento de la infección del dispositivo, es decir, OMNI, pues estas últimas semanas estábamos detectando OWARI, TOKYO, SORA, ECCHI… todas ellas versiones de Gafgyt o Mirai y, que poco innovan respecto a lo reportado en artículos anteriores.

Así pues, analizando el método de infección, encontramos las siguientes instrucciones:

Tal y como se puede observar, es un script bastante estándar y, por tanto, importado de otra botnet. Nada nuevo.

A pesar de que todo apuntaba a que la muestra se trataría de una variante estándar de Mirai o Gafgyt, llevamos a cabo la descarga de la muestra.
[Read more…]

CSIRT-CV publica un informe sobre Cryptomining Malware

Estoy seguro que muchos de vosotros habréis oído hablar de las criptomonedas, el bitcoin, la tecnología Blockchain basada en cadenas de bloques para registrar transacciones y muchos otros términos relacionados. Pues bien, vamos a centrarnos un poco en esa parte del registro de transacciones.

¿Qué es la minería de criptomonedas?

La cadena de bloques requiere de una minería constante con el fin de mantenerse consistente e íntegra de forma permanente para que las nuevas transacciones entrantes puedan ser recogidas de forma correcta. Dichas transacciones cuando son en grupo son conocidas como “bloques”.
[Read more…]

Las herramientas de los dioses

Hoy en SAW no vamos a hablar de seguridad sino de religión. De la religión verdadera, de la buena: de Unix. Y de sus dioses: Kernighan, Ritchie, Thompson… podríamos citar unos cuantos. Y de las herramientas que, en los años setenta, estos dioses nos enviaron a los pobres mortales, como el maná caído del cielo para el pueblo elegido. Y es que estos dioses crearon un sistema operativo de verdad, con unas herramientas técnicamente maravillosas y una filosofía muy sencilla: capacidades simples que combinadas hacen tareas complejas. La perfección. La vida es Unix ejecutando un script. Han pasado más de cuarenta años y nosotros, pobres mortales que éramos el pueblo elegido, ¿qué hemos hecho en este tiempo? Tratar de deshonrar ese legado divino con capas artificiales e inútiles (“de abstracción”, las llaman, para tratar de darles sentido) que introducen dos problemas innecesarios en cualquier entorno tecnológico “moderno”: complejidad, y por tanto probabilidad de error, y lentitud. Sirva de ejemplo el ejecutable “true”, al hilo de la historia que hace poco comentaba Rob Pike en Twitter:

$ >mytrue;chmod +x mytrue
$ ./mytrue
$ echo $?
0
$

Un programa cuya única finalidad es devolver siempre 0. Un ejecutable vacío. VACÍO. No puede haber algo más simple y que funcione, desde hace cuarenta años… pues bien, aquí entramos los mortales. Año 2018:

$ ls -l /usr/bin/true
-rwxr-xr-x 1 root wheel 17760 29 abr 2017 /usr/bin/true
$ file /usr/bin/true
/usr/bin/true: Mach-O 64-bit executable x86_64
$ otool -L /usr/bin/true
/usr/bin/true:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0)
$ /usr/bin/true
$ echo $?
0
$

Por supuesto, este es solo un ejemplo, y no de los graves, sobre cómo nos gusta complicarnos. Como dijo un profeta hace años, “Those who do not understand Unix are condemned to reinvent it, poorly.”. Me imagino el brainstorming inicial en un grupo que luego acaba sacando a la luz determinadas tecnologías:

– Tíos, vamos a hacer unas herramientas para manejar grandes conjuntos de datos que ahora están en ficheros planos.
– Pero, si ya tenemos awk, sed, grep…
– Funcionan demasiado bien y la gente no contrata mantenimiento. Escuchad, las llamaremos “bases de datos”.
– ¿Bases de datos? Irás de coña, ¿no?
– No, no, lo tengo todo atado: hacen que el fichero por debajo sólo se pueda procesar con nuestro programa metiendo varias capas de abstracción, pero realmente también están manejando archivos de texto, como hasta ahora…
– Jajajaja, ¡qué cabrón! ¡No hay huevos, Larry!
– Sujetadme la cerveza.

#define SELECT grep
#define ALTER sed
#define DELETE cut
#define DROP “>”
int make_program_look_bigger[1000000];

– Eres el puto amo, Larry. ¿Qué va a ser lo próximo, chicos? ¿Un lenguaje de programación que pueda convertir esta Sun 3500 en un 8086, con alguna excusa? ¿Qué se os ocurriría?
– Podemos meter un sleep en las líneas pares de nuestro código C y decimos que es independiente de plataforma.
– Jajajajajaja, no colará… Espera, ¿qué haces, James?
– Sujetadme la cerveza…

Evidentemente, situaciones como las anteriores se producen porque aunque sabemos que Unix es la religión verdadera, Kernighan, Ritchie y demás son sus dioses y algunos otros son sus profetas, aún así hay entre nosotros ateos (los llamaremos así para no ser crueles, aunque el nombre técnico es Human Malware), perfiles aparentemente técnicos que no han querido, sabido o podido ver la luz verdadera; los perfiles no técnicos están disculpados, porque Unix no ha iluminado sus vidas aún. Todos conocemos a algún ateo: son los que siempre buscan soluciones complejas a problemas triviales. Preguntadle a cualquier creyente cómo realizar una operación sobre, pongamos, un log, y con una línea de awk lo resolverá. Preguntadle a un ateo y definirá una estructura en base de datos, parseará el log con un programa en Java que tira de varias librerías bajadas de github para convertirlo en un XML, para luego insertarlo en la base de datos de antes, y montará un comité para determinar aspectos críticos, como elegir los tonos pastel para la interfaz gráfica o analizar la ubicación de los botones en una aplicación web que conecta vía API contra un servidor en cloud que a su vez aplica técnicas de machine learning sobre el puto log. ¿Y esto para qué? Para sacar las líneas que contienen la cadena “foo”. Ojo, en el tercer campo, ahí es nada.

Dentro de esa familia que estamos denominando amablemente “ateos” podemos diferenciar varios tipos característicos; son los siguientes:

Proceseitor. Lo arregla todo con comités, procesos, procedimientos, controles, controles de los controles, seguimientos periódicos y derivados. Realmente esta subespecie no es un ateo, sino que es peor: está intentando convertir gente a otra religión, ITIL, considerada como secta destructiva en muchos entornos. Debe considerarse a proceseitor como ALTAMENTE PELIGROSO y, en caso de encontrase con uno, se recomienda no acercarse a él y avisar inmediatamente a las autoridades; también podemos cambiarles alguna de sus obras de cabecera, como Coaching for IT Strategists: a fist fucking approach, por un ejemplar de The Magic Garden Explained o The Design of the Unix Operating System, lo que conseguirá una combustión espontánea en cuanto comiencen la lectura.

Visual developer. Programador que no sabe usar punteros y por tanto reniega de C; el scripting no es una alternativa porque “son ñapas”. Ante un problema (“especificación de requisitos” le llaman) analiza durante días la situación, hace comparativas entre varias tecnologías, monta unos entornos de desarrollo para realizar benchmarkings y, en seis meses, determina que va a desplegar diez capas de abstracción para empoderar al usuario en su relación con la tecnología y evitar así el tratamiento personalizado del dato. Ríete tú de ISO/OSI. Por supuesto el programa nunca funcionará, pero será por culpa de una especificación de requisitos incorrecta; en estos casos, invitar al ateo leer e interiorizar las Sagradas Escrituras, The C Programming Language y The Unix Programming Environment, puede ser útil, aunque no tanto como un disparo en la rodilla.

Segurata. Acaba de actualizar su LinkedIn para poner que es “Senior Security Architect, Red Team Leader and Chief Strategist Hacker” porque se ha leído un manual de metasploit mientras acaba el máster y ya va a tope, con su Kali Linux y sus menús; por supuesto, prefiere ese manual al Computer Networks o al Modern Operating Systems de Tanenbaum, porque Tanenbaum no es jaker y además usa troff, y eso no es cool… Al contrario que en el caso anterior, el disparo en la rodilla suele ser contraproducente, porque el ateo seguiría molestando y encima se pondría paranoico, activando en su vida el modo MOSSAD_CLAIMS_FOR_ME y siendo aún más pesado; es más efectivo modificar su /etc/hosts para apuntar www.sgae.es a www.fsb.ru, convencerlo para atacar a la SGAE por el tema del canon de los CD, que nunca pasa de moda, y dejar que la naturaleza siga su curso.

DevOps. Administra máquinas Ubuntu y se ha comprado una Raspberry, así que lo debemos considerar devops, porque cree que es un BOFH de verdad pero de vez en cuando se le escapan palabros como XML o agile. Acude regularmente a encuentros endogámicos donde algunos devops explican a otros devops cosas de devops, con dockers y tal, y cuenta la leyenda que una vez uno de ellos recompiló un núcleo Linux y no se lo contó a los demás. A Quarter Century of Unix History puede ser un buen detalle con estos ateos, para que sean conscientes de que muchas cosas no las han descubierto ellos, como también puede serlo un teclado sin intro, que nunca viene mal en estos casos. Y si además nos lo queremos pasar bien, tampoco está mal meterles el evil.sh en su .bash_profile.

El usuario. Aunque se considera a sí mismo un perfil técnico porque una vez consiguió salir de vi y se hizo youtuber e instagramer a la vez, realmente sus conocimientos no son muy amplios y debemos considerarlo un usuario. De vez en cuando dice frases como “Nosotros, los técnicos” o “Aquí todos venimos de la parte técnica”, que te suenan como cuando los gibraltareños dicen “Nozotro lo ingleze”. Ante este tipo particular de ateo no podemos recomendar ninguna lectura, sólo comprensión y paciencia, y también hablarles despacito para que no hagan swap; por otro lado, es fácil -y divertido, hay que decirlo- entretenerlos con algunos palabros sabiamente combinados para que no molesten, como “Es que en el red team estamos trabajando con una VPN a través de USB que envía paquetes TCP a dispositivos IoT”. Ale, a procesar, campeón.

¿Qué hacemos con esta gente? Guardad el AK-47, por favor, que os veo venir y no debemos legislar en caliente. La situación es compleja, principalmente porque los ateos no tienen depredadores naturales y, sobre todo en los últimos años, se han dedicado a reproducirse de manera exponencial; si os cruzáis con uno podéis regalarle condones para frenar su tendencia reproductiva, pero un consejo: jamás os hagáis los héroes, que esta gente ya no tiene nada que perder, como los administradores de Lotus Notes, y pueden incluso ponerse agresivos. Por ejemplo, a proceseitor le molestan especialmente cosas como que alguien se salte el paso 3, punto 3.8, apartado 3.8.A, párrafo 3.8.A.c, línea 3.8.A.c.XVI, del procedimiento “Gestión de recursos informáticos corporativos en plena sinergia con el negocio”, que dice que todo renice debe ser aprobado mediante un burofax con el sello oficial, firmado por el IT Manager y dirigido al Business Strategist de la organización. Se pone nervioso, le da vueltas la cabeza y empieza a hablar en ITIL.

En SAW no tenemos la solución mágica para hacer frente al colectivo de ateos que pululan en las organizaciones; algunos ingenuos piensan que se pueden recuperar con iniciativas sencillas, por ejemplo con campañas donde se use el hashtag #AdoptaUnAteo (#AdoptALuser) para enviarles indirectas simpáticas que traten de marcarles el buen camino, del tipo “biff también avisa de nuevos mensajes… desde hace 40 años y sin soniditos ridículos, imbécil #AdoptaUnAteo”, “Menos stackoverflow y más RTFM #AdoptaUnAteo” o “No abras ficheros CSV con Excel, hijo de puta! #AdoptaUnAteo”. Pero nosotros sabemos que esto no funcionará: ni devolverá al ateo al camino verdadero ni tampoco conseguiremos que convierta el agua en vino. Por eso miramos a la Historia: ¿qué se ha hecho de siempre con la gente que abandona la religión verdadera? Dos cosas: exorcismos y sacrificios humanos. Punto.

Si vamos a exorcizar ateos, por ejemplo poseídos por systemd, debemos ir con cuidado; desde SAW recomendamos que un exorcismo lo ejecuten sólo profesionales, porque si sale mal nos confiamos, creemos haberlo recuperado y un día nos encontramos al falso creyente diciendo en un foro que ifconfig está deprecated. Cuando se dé cuenta de que vamos a exorcizarlo, el ateo tratará de confundirnos para hacernos creer que ha visto la luz verdadera; puede decir cosas en idiomas desconocidos, fruto de la posesión, del tipo “Powered by Solaris…” o “alias nano=‘rm -f’”, pero no nos dejemos engañar: al acercarle el Essential System Administration, su solo contacto le producirá quemaduras, comenzará a girar la cabeza 180 grados, a escupir espuma por la boca y a soltar blasfemias como “Has visto lo que ha hecho la cerda de tu hija”, “Tómame, tómame” o “Yo soy el Maligno y capturo SIGKILL”. Cuidado. Aquí es cuando el exorcista, un profesional, arrojará varios SIGTERM contra el PID del ateo y pronunciará unas palabras sagradas para liberar su alma:

Te exorcizamos Espíritu Inmundo, quienquiera que seas, Java, XML o Word. En el nombre de Unix seas arrojado de las almas de la religión verdadera. No oses oscurecer a los elegidos a quienes pretendes hacerte semejante; te lo ordena Brian, te lo ordena Dennis, te lo ordena Rob, que se hicieron carne y habitaron entre nosotros. Que los descendientes de MULTICS se apiaden de ti, que la pureza de un buen script limpie tu alma, que uses goto cuando tengas que usarlo. Unix es la senda y yo soy su pastor, así está escrito en mi GECOS. Hosanna, K&R, limpiad esta alma.

En este momento el ateo debe mostrar signos de reconversión, por ejemplo desinstalando la máquina virtual de Java o recitando de memoria la página man de getpwent(3). Si no es así ya debemos rociarlo de SIGKILL o, directamente, ejecutar un shutdown, que es el último recurso del exorcista antes de pasar a mayores: si el exorcismo no funciona ya sólo nos queda el sacrificio humano. Por ejemplo, en SAW, desde el fallecimiento de Ritchie hace más de siete años, mensualmente sacrificamos en su honor a un ateo en la hoguera, a la antigua, con encanto; lo hemos puesto en el cron y así no falla, que si no luego se reencarnan en consultores ISO y la liamos. Pero no penséis que es un simple kill -9, no: antes de quemarlo lo abrimos en canal con un CD donde están las fuentes de System V, nos comemos sus vísceras, bebemos su sangre y rezamos dos scriptnuestros para que aquellos dioses que se hicieron carne en los 70 vuelvan a poner cordura en este mundo 4.0 que nos rodea. Todo esto en honor a los creadores de maravillas como Unix, C o awk y, por qué no, también porque nos gusta.

DISCLAIMER: Todo este post está basado en hechos ficticios y no refleja en ningún momento opiniones personales del autor, efectivamente y no. Cualquier parecido con la realidad es pura coincidencia.

Seguridad de contratos inteligentes basados en Blockchain II – Vulnerabilidades y riesgos

En la parte anterior de esta serie sobre la seguridad de blockchain vimos los riesgos asociados con la implementación autónoma y la ejecución de contratos inteligentes en un blockchain público. También presentamos algunos ejemplos de alto perfil de ataques a contratos inteligentes que han causado la pérdida de grandes sumas de dinero y han cambiado la forma en que vemos las interacciones comerciales en la cadena de bloques.

En este episodio, repasaremos algunos problemas conocidos y vulnerabilidades.

Fuga de clave privada

El uso de claves privadas no seguras es realmente un error del usuario, en lugar de una vulnerabilidad. Sin embargo, lo mencionamos, como sucede sorprendentemente a menudo, y ciertos actores se han especializado en robar fondos de direcciones inseguras.

Lo que generalmente ocurre es que las direcciones de desarrollo (como las utilizadas por las herramientas de prueba, como Ganache/TestPRC) se utilizan en producción. Estas son direcciones generadas a partir de claves privadas conocidas públicamente. Algunos usuarios incluso han importado estas claves sin saberlo en el software de cartera virtual, al usar las palabras de semilla originales usadas en la generación de la clave privada.

Los atacantes están monitorizando estas direcciones y cualquier cantidad transferida a dicha dirección en la red principal de Ethereum tiende a desaparecer inmediatamente (dentro de 2 bloques).
[Read more…]

Seguridad de contratos inteligentes basados en Blockchain I

Recientemente, la tecnología blockchain ha sido promovida como un elemento de cambio para muchas industrias. La tecnología de contabilidad distribuida que surgió de Bitcoin tiene aplicaciones prometedoras más allá de las monedas digitales.

Uno de los casos de uso más prometedores de la tecnología blockchain es la elaboración de contratos inteligentes.

Los contratos inteligentes son contratos autoejecutables, en los que los términos se especifican en el código. Básicamente, esto significa implementar contratos legales en código de ordenador, que los ejecuta automáticamente.

Si bien el concepto existe desde hace tiempo, al menos desde que Nick Szabo escribió el concepto en 1996, no fue hasta la llegada del blockchain de Ethereum con la capacitad de expresar cualquier computación (“Turing complete”), que el uso del contrato inteligente se hizo común.

Los contratos Ethereum existen en direcciones de contrato y pueden invocarse mediante llamadas de transacción.

Ejecutar contratos escritos en código y almacenados en un blockchain público inmutable crea ciertos riesgos y problemas, que discutiremos de forma general en esta publicación. En una próxima segunda parte, veremos ejemplos más específicos de vulnerabilidades de seguridad de contratos inteligentes. [Read more…]

Análisis de Linux.Okiru

Siguiendo con nuestra campaña de detección y documentación de botnets IoT, hace unos días encontramos otra amenaza no clasificada con anterioridad. Fue subida por primera vez a la plataforma VirusTotal el 3 de noviembre y solamente es detectada como maliciosa por 4 antivirus.

Durante el artículo se van a analizar dos variantes del malware, las cuales se diferencian fundamentalmente en su propagación. La primera de ellas fue detectada en nuestros sistemas honeypot (concretamente para la arquitectura SPARC). La segunda se trata de una variante de la primera, la cual fue encontrada bajo la arquitectura Intel x86_64, y de la cual el laboratorio de malware Netlab360 se hizo eco hace unos días.

Al no encontrar registros de su identificación, hemos decidido clasificarla como Linux.Okiru, debido al nombre de sus binarios.
[Read more…]

Botconf, dans la maison du botnet

El pasado 6, 7 y 8 de diciembre tuvo lugar en Montpellier la 5ª edición de la Botconf.

Durante los tres días, más de 300 personas asistieron a la conferencia de las botnets por excelencia. Las charlas fueron todas de un alto nivel y se abordaron temas que fueron desde el desarrollo de herramientas para la obtención o clasificación de malware hasta los problemas legales que pueden acarrear la publicación de ciertas evidencias en nuestros descubrimientos.

A continuación se resumen algunas de las más de veinticinco charlas expuestas:

How to Compute the Clusterization of a Very Large Dataset of Malware with Open Source Tools for Fun & Profit

La charla que dio comienzo a la conferencia expuso la necesaria automatización en la clasificación de familias de malware, dado el elevado número de muestras con las que en estos días suelen trabajar los analistas.

Así pues, se nos presentó la implementación de varios algoritmos de Deep Learning para la clusterización de datos a partir del parseo de los resultados de análisis estáticos previos, como también algunos de los problemas surgidos relacionados con la dificultad que todavía supone la gestión de la complejidad por el Big Data.
[Read more…]