Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Mavis

#81
Diseño UX/UI / Re:Pide tu firma Underc0de V2.
Marzo 13, 2014, 07:51:45 PM
Me encantaría tener una, y si me la pueden enviar por MP mejor.

Nombre: LucaSthefano

Saludos, y gracias desde ya.

PD: cuidado con las mayusculas
#82

Hace algunos días estuvimos analizando las estructuras comunes en ingeniería reversa, así como también los beneficios que podemos obtener de la utilización de herramientas adecuadas. En esta oportunidad, volvemos para completar este análisis con más patrones que serán de gran ayuda en la tarea de reversing.


Para esta segunda parte, continuaremos con el ejemplo planteado anteriormente. En la imagen de arriba observamos el programa escrito en C. Por su parte, en la imagen que sigue a continuación recordamos cómo luce ese programa una vez que ha sido desensamblado:


Ya analizamos el significado de las líneas resaltadas en rojo. Pero también hemos marcado unas líneas con color naranja: si prestamos atención, veremos que estas líneas se encuentran después de una llamada a subrutina call. Antes de seguir, debe mencionarse que existen diversas convenciones para la llamada a subrutinas. Es necesario que el código que llama y el que es llamado sepan dónde colocar y buscar los datos, respectivamente. En este sentido, podemos mencionar dos de las convenciones más importantes:


  • cdecl: esta es la forma más común de manejar el pasaje de parámetros a una subrutina. Se caracteriza por hacer el pasaje a través del stack, introduciendo los parámetros según aparecen en la llamada, de derecha a izquierda (en nuestro ejemplo, primero argv y luego argc). Además, el resultado devuelto por la subrutina es colocado en eax (o edx:eax, de ser necesario). Pero lo más importante a mencionar es que la rutina que llama (no la que es llamada) es la que debe encargarse de limpiar lo introducido en el stack una vez que se ha finalizado la llamada.
  • stdcall: esta convención se utiliza en menor medida; mayormente la vemos en funciones de la API Win32. Es exactamente igual a cdecl, excepto por la limpieza del stack: en este caso es la subrutina invocada quien debe llevar a cabo la tarea.

Entonces, ¿cómo se traduce esto en el código? Si se utiliza cdecl, inmediatamente después de la llamada a la subrutina se observan instrucciones para realizar la limpieza del stack. Esto es justamente lo que se marca con color naranja en nuestro ejemplo: luego de la llamada a atoi, se limpia el espacio que se reservó en el stack para pasar el parámetro (4 bytes); luego de la llamada a sub, se hace lo mismo, pero con los dos parámetros pasados (8 bytes). Si tenemos en cuenta que el registro esp apunta al tope del stack, y que éste crece de direcciones de memoria más grandes a direcciones más chicas, la suma de un valor positivo a esp hará que los valores de la cima queden fuera del stack, logrando el efecto de limpieza o borrado. Pero... ¿qué pasa si se utiliza stdcall?


Al forzar la convención stdcall para la llamada a sub, se observan dos cosas. En primer lugar, que en el cuerpo de main, y después de la llamada a sub, no hay operaciones para limpiar los parámetros introducidos en el stack; si comparamos este código con el anterior, vemos que la línea add esp,8 ya no está. En segundo lugar, al observar el código de sub vemos que la instrucción ret ha cambiado. Ahora es responsable sub de limpiar su propio stack frame, para lo cual ejecuta ret con la cantidad de bytes a limpiar, tomando 4 bytes por parámetro.

Para cerrar este análisis, haremos referencia a las operaciones realizadas sobre el registro ebp y la diferencia entre variables locales y argumentos de llamada a subrutina. En nuestra primer imagen del código desensamblado, hemos marcado en amarillo la operación push ecx. Sin embargo, podemos notar que ecx no está inicializado. Esto nos indica que el valor que está siendo introducido en el stack es indeterminado, lo que significa que se está guardando espacio en el stack. Si además observamos que esta línea no está presente en sub, entendemos que el espacio que se guarda es para variables locales (en el caso de main, una sola variable, a). Entonces, de manera general, podemos decir que si una rutina cuenta con variables locales, luego del código de inicialización encontraremos las líneas que guardan este espacio para las variables en el stack.

Si ahora nos detenemos en el resto de las operaciones realizadas que hacen referencia al registro ebp, notaremos que algunas le suman un valor, y otras se lo restan. En general, nos resultará muy útil en la práctica considerar lo siguiente: cuando a ebp le sumamos un valor para referenciar una posición dentro del stack, estaremos accediendo a uno de los argumentos del código que está siendo ejecutado. Por su parte, si le sustraemos un valor, estamos dentro del stack frame local, con lo cual se hace referencia a variables locales. En otras palabras, si vemos que a ebp se le suma algo, se está tratando de recuperar un parámetro; si se le resta algo, se quiere acceder a una variable local. Esto se observa en la otra parte del código que se ha marcado con color amarillo: se guarda en la pila el valor de la variable a, para la cual antes se había reservado espacio con push ecx.

Si aprendemos a reconocer estos patrones entre las líneas de código, nuestro análisis será mucho más rápido y efectivo.

Agradecimientos: Matias Porolli, Laboratorios ESET

Saludos!
#83
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Que buen aporte Sthefano! y que bueno verte otra vez en el foro!
Me dejas poner este post en el blog con tus creditos?

Saludos!
ANTRAX

Claro que si amigo, no hay ningún problema.
Aca voy a andar.. Compartiendo un par de cosas.
#84

Cuando hablamos sobre el análisis estático de códigos maliciosos hacemos referencia el estudio de una amenaza sin tener que ejecutarla. De esta manera, es como si estuviéramos que realizar una autopsia para conocer qué es lo que hace o cuáles son las consecuencias que generará si llegase a infectar un sistema. Un primer acercamiento nos va a permitir conocer si el malware está empaquetado, en qué lenguaje de alto nivel fue desarrollado y otras tantas características más; Por ejemplo, podríamos ver qué librerías (DLLs) importa, las funciones que va a utilizar, el tamaño de sus secciones y otros datos de color.

Si quisiéramos ver cómo es que realiza tales acciones tendremos que adentrarnos aún más en lo que conocemos como Ingeniería Inversa y para ello, debemos entender sobre assembler y su utilidad en el desensamblado de los códigos maliciosos. En otras palabras, tendremos que aprender a hacerle una autopsia a un malware:


Introducción al desensamblado

Como mencionamos anteriormente, las técnicas básicas de análisis estático nos permiten conocer desde afuera, información acerca de un código malicioso. Dicho conjunto de técnicas es muy útil para darnos una idea inicial sobre la amenaza,  pero para conocer todas sus funcionalidades debemos adentrarnos aún más. Listando las funciones que importa un malware, tomamos conocimiento de que la va a utilizar, pero no sabemos dónde ni cómo.

Por otro lado, al realizar un análisis dinámico de la amenaza, conocemos más información sobre su comportamiento, que información envía y recibe a través de la red, pero no como la utiliza internamente. Nuevamente, desensamblar la muestra nos permite conocer el detalle de dicha acción y responder a todas nuestras preguntas.

Aprender a desensamblar códigos maliciosos a través del uso de técnicas de Ingeniería Inversa es una habilidad que lleva tiempo desarrollar y puede resultar complicada. Sin embargo, no deja de ser una de las herramientas más útiles para combatir a los códigos y lograr proteger a los usuarios garantizando la seguridad y privacidad de su información.

Veamos los conceptos básicos para adentrarnos en el desensamblado y análisis de los códigos maliciosos.

Niveles de abstracción

Entender el funcionamiento de un sistema es un requerimiento necesario para saber cómo funcionan los códigos maliciosos. Además de ello también debemos darnos una idea de en qué nivel de abstracción o en qué capa vamos a estar trabajando.

A grandes rasgos existes tres niveles de abstracción en los cuáles nos vamos a manejar y son necesarios interpretar, según el caso que corresponda. El primero de ellos hace referencia al lenguaje de alto nivel que utilizó el creador de la amenaza al desarrollarla. El segundo involucra al código que se ejecuta directamente sobre el CPU de la máquina y que fue generado por el compilador y por último el lenguaje de bajo nivel con el cuál se trabaja durante el proceso de Ingeniería Inversa. En la siguiente imagen vemos la relación entre ellos:


Esta imagen nos da una idea simplificada de los diferentes niveles que existen dentro de todos los sistemas. Si arrancamos desde el hardware, microcódigo, código de máquina, los No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), los No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (C, C++, Delphi, etc) y los lenguajes interpretados (Java, Python, .NET, etc)

Según el caso en particular, las muestras de códigos maliciosos aparecen más frecuentemente en los últimos dos niveles, y partiendo desde esa base es el porqué de entender acerca de cómo desensamblar los códigos maliciosos para conocer sus actividades a través del uso de la Ingeniería Inversa.

Ingeniería Inversa

Cuando nos encontramos frente a una variante de algún código malicioso en un sistema y nos disponemos a analizarlo tenemos el archivo binario y debemos utilizar un desensamblador para generar el código en assembler con el objetivo de analizarlo.  Ensamblador (assembler) es en realidad una clase de lenguaje de programación. Cada variante de ensamblador corresponde a una familia particular de microprocesadores tales como x86, x64, SPARC, PowerPC, MIPS o ARM. Dentro de todas estas familias la más habitual dentro las arquitecturas de procesadores  es la x86, aunque con el pasar de los años vemos más y más procesadores x64.

Es a partir del desensamblado que debemos adentrarnos en el código de la amenaza para entender todas las acciones que realiza y cómo es que logra infectar un sistema para robar información, realizar ataques a otros sistemas o propagarse por la red. Para lograr una mejor comprensión de las acciones que queremos investigar debemos entender cómo se ejecuta la amenaza en el sistema, comprender qué son los registros del CPU, para qué se utilizan, cómo funciona la pila (stack), las instrucciones del CPU y muchas otras partes del sistema.

Agradecimientos: Pablo Ramos, Laboratorios ESET.

Saludos a todos!
#85

Cuando realizamos reversing sobre una posible amenaza tenemos que acostumbrarnos a la idea de que vamos a revisar cientos de líneas de código en un lenguaje de bajo nivel, tan solo para comprender una parte del funcionamiento. Esto puede sonar fatal y desanimar a aquellos que se están iniciando; después de todo, a mí me ocurrió cuando empecé a aprenderlo. Sin embargo, uno no tarda en darse cuenta que con un poco de práctica y las herramientas adecuadas, la ingeniería reversa no tiene por qué ser una experiencia desagradable. Por ello, en este post compartiremos una introducción a ciertos patrones que suelen verse al realizar reversing en arquitecturas x86, lo cual nos permitirá ubicarnos rápidamente y comprender mejor el código.

Sin embargo, imaginemos que ha llegado el momento de desensamblar un archivo ejecutable. ¿Ahora qué hacemos? Conocemos las instrucciones, pero... ¿empezamos a leer cada línea secuencialmente, interpretando lo que hace cada instrucción?


En la imagen anterior vemos cómo un desensamblador (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, en este caso) no solo nos muestra el código, sino que además nos estructura el flujo de ejecución de forma gráfica. De esta forma, resulta mucho más sencillo seguir los saltos condicionales y los posibles escenarios de ejecución dentro de una subrutina. Adicionalmente, puede accederse a un diagrama con la interconexión y jerarquía de las diversas funciones o subrutinas en el ejecutable. Esto se observa en la imagen a continuación:


Pero más allá de todas las facilidades que brindan las herramientas, hay ciertas situaciones que se repiten en la ingeniería reversa y que vale la pena destacar. Para comenzar, analizaremos el siguiente programa:


Puede observarse que es muy sencillo: el programa recibe un argumento que se almacena como número entero en una variable local y se llama a la subrutina sub con esa variable local y el conteo de argumentos en argc. Esta subrutina simplemente retorna la suma de esos dos valores. Al desensamblar el ejecutable producido por estas líneas de código, se obtiene lo siguiente:


En color rojo se marcan unas líneas que aparecen al inicio de cada rutina (main y sub) y que en general deberíamos encontrar al inicio de cualquier rutina, ya que realizan tareas de inicialización de la sección de la pila o stack correspondiente. Cuando main invoca a sub, sub debe realizar el cambio de la sección del stack de main a la sección propia de sub, guardando el valor base de main para poder restablecerlo luego; este hecho se traduce en push ebp. Luego, mov ebp, esp realiza el cambio a la sección del stack de sub. También con color rojo se marcan las líneas que invierten ese proceso una vez que la rutina ha terminado de ejecutarse: mov esp, ebp retrocede el stack pointer hasta la base, limpiando así las variables locales o cualquier otro dato innecesario que haya quedado en la pila; mientras que pop ebp restablece el puntero base a la rutina previa. Se observa que sub sólo incluye pop ebp dado que no cuenta con variables locales u otros datos que limpiar del stack. En definitiva, si vemos estas instrucciones ahora, podemos saber dónde empieza y termina una rutina, y nos resultará particularmente útil si en algún momento nos perdemos en el código.

Por último, cabe destacar que en la imagen se han resaltado distintos patrones con otros colores, que están relacionados con limpieza del stack, convenciones de llamadas a subrutinas, asignación de espacio para variables locales y manipulación de parámetros y variables. No obstante, cubriremos estas cuestiones, y otras, en la segunda parte.

Agradecimientos: Matias Porolli, Laboratorios ESET.

Saludos a todos!
#86
Off Topic / Re:Calcos Underc0de
Septiembre 30, 2013, 11:48:59 PM
Ya viene mi cumple, creo que me ganaré una remera o una linda calco ^^
#87
Seguridad / Latinoamérica y la vulnerabilidad 0-day
Septiembre 27, 2013, 12:17:36 AM
Hace una semana Microsoft anunciaba sobre una vulnerabilidad que afecta a todas las versiones de Internet Explorer. Si bien es un hecho que muchos usuarios en el mundo se pudieron ver afectados, la pregunta en nuestro caso es cómo ha sido esta propagación en Latinoamérica. A continuación contamos en qué consiste esta vulnerabilidad y cómo se han visto afectados los países de la región.

En el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta se informó sobre una vulnerabilidad 0-day (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) que afecta a los navegadores Internet Explorer 8 y 9 y además a todas las versiones compatibles. Esta vulnerabilidad permite la ejecución de código de forma remota en el caso que un usuario con este tipo de navegador ingrese a un sitio web que ha sido afectado y que pueda contener códigos maliciosos.

Una semana después de que esta vulnerabilidad fuera puesta en conocimiento, y que incluso se anunciara de un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que previene este problema mientras Microsoft trabaja en una actualización de seguridad, en Latinoamérica se ha analizado una muestra de sitios web vulnerados, para saber cuáles son los países que cuentan con una mayor cantidad de sitios afectados que aprovechan esta vulnerabilidad para inyectar código malicioso.

La muestra analizada habla de más de 9900 sitios web latinoamericanos infectados en la última semana pudimos determinar que cerca de 200 dominios diferentes estaban comprometidos y preparados para explotar la vulnerabilidad CVE-2013-3893. A partir de la información recolectada se encontró que Brasil era el país con mayor cantidad de sitios afectados, seguido de Colombia y Chile.



Es importante destacar que los sitios web que fueron analizados no son necesariamente sitios web maliciosos. Los dominios encontrados son muy diversos, y van desde foros y blogs sobre temáticas varias hasta sitios de entidades educativas y páginas de reconocidas marcas comerciales.



En alguna oportunidad habíamos escrito sobre lo que se cree al respecto que Internet Explorer es el navegador más vulnerable. Como quedó claro en ese post, este navegador no es el que cuenta con mayor cantidad de vulnerabilidades. Pero en este caso al tratarse de un vulnerdabilidad 0-day es claro como los atacantes buscan afectar usuarios que no actualicen sus aplicaiones o no tomen las medidas de protección necesarias.

De nuevo se pone en evdidencia que los ciberdelincuentes aprovechan cualquier vulnerabilidad para afectar a aquellos usuarios que no tomen las medidas de protección adecuadas. Por lo tanto la invitación es para que los administradores de red mantengan protegida su infraestructura para impedir que sea utilizada con fines maliciosos. Además para los usuarios no olvidar mantener sus aplicaciones actualizadas además de contar con una solución de seguridad que impida que se vean infectados cuando ingresen a un sitio que trate de descargar algún tipo de código malicioso.

Fuente: Laboratorios ESET
#88
Hace algunos días, Apple introdujo para algunos países, un nuevo sistema de seguridad basado en doble autenticación para proteger las cuentas de los usuarios. En este post analizaremos en qué consiste esta implementación y cómo activar la doble autenticación tanto en sus servicios como en Facebook.

Un ID de Apple es un nombre de usuario que se utiliza para realizar cualquier tipo de operación con respecto a los productos y servicios que dicha compañía ofrece. A través de una cuenta, el usuario puede comprar en iTunes, activar iCloud (servicio de almacenamiento en la nube) en sus dispositivos, hacer reservas en la Apple Store, entre otras acciones. Asimismo, varios de estos servicios permiten operaciones pagas, por lo tanto, el usuario puede asociar una tarjeta de crédito a su cuenta.

Considerando que un ID de Apple contiene información sensible, y que además permite realizar varias operaciones relacionadas con productos y servicios, la empresa comenzó a implementar progresivamente un sistema de doble autenticación. De acuerdo a la sección de preguntas y respuestas de Apple, este método de protección se encuentra disponible, por el momento, solo para usuarios de Estados Unidos, Reino Unido, Australia, Irlanda y Nueva Zelanda. Otros países irán siendo agregados con el paso del tiempo.

La opción para activar la doble autenticación en un ID de Apple aparecerá automáticamente a medida que el país del usuario sea incluido. Aunque desconocemos la fecha exacta sobre la disponibilidad de este sistema para América Latina, su activación podrá ser realizada de la siguiente forma:


  • Acceder al portal Mi ID de Apple.
  • Presionar el botón "Gestionar tu ID de Apple" que aparece en la parte izquierda del sitio.
  • Allí se deberá iniciar sesión utilizando las credenciales de acceso y presionando sobre el botón "Conectarse".
  • Una vez que el usuario se ha identificado en el sistema, se deberá hacer clic en "Contraseña y seguridad" tal como aparece en la siguiente imagen


Para utilizar la doble autenticación el usuario deberá registrar un dispositivo de confianza. Posteriormente recibirá un código de cuatro dígitos cada vez que intente iniciar sesión, o trate de adquirir productos y servicios de la compañía. Este código podrá ser recibido mediante mensajes de texto SMS o utilizando la función "Buscar mi iPhone".

Por otro lado, Facebook, también ofrece un sistema de doble autenticación similar. Para activarlo es necesario seguir estos pasos:


  • Hacer clic sobre el icono en forma de rueda dentada ubicado en la parte superior derecha del sitio. Posteriormente hacer clic en "Configuración de la cuenta".
  • Luego hacer clic sobre la opción "Seguridad" que aparece en el costado izquierdo de la página.
  • Allí se debe activar la opción "Solicitar un código de seguridad para acceder a mi cuenta desde navegadores desconocidos" tal como aparece en la siguiente captura


Es importante considerar que Facebook solicitará el segundo factor de autenticación solo en caso que el usuario acceda desde un navegador o dispositivo desconocido, es decir, a través de alguno que no haya utilizado anteriormente para ingresar a este servicio. Asimismo, dicho código puede ser recibido mediante un SMS o también puede ser generado manualmente utilizando la aplicación mobile de esta red social. Para más información sobre este sistema se puede consultar la publicación de Facebook:


Otros portales como Dropbox y las cuentas de Google y Gmail también implementan sistemas de doble autenticación que pueden ser activados por el usuario.

Fuente: Laboratorios ESET
#89
El port knocking (golpeo de puertos) es un mecanismo que permite abrir puertos a través de una serie predefinida de intentos de conexión a puertos que se encuentran cerrados. Veremos cómo definir y utilizar esta característica.

El protocolo SSH suele utilizarse principalmente por administradores para ejecutar comandos de forma remota. Sin embargo, siempre existe el riesgo de exponer un tipo de servicio de estas características ya que suelen ser blanco de ataques. De esta manera, existe el port knocking como mecanismo adicional para la protección de este servicio o incluso otros.

¿Qué herramientas existen para implementar port knocking?

Existen diversas herramientas para port knocking como por ejemplo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, que utiliza autorización de paquetes única (single packet authorization) y permite implementar esta metodología de forma segura. Sin embargo, indagaremos sobre knockd, la cual es sumamente liviana aunque un poco más primitiva.

Una vez instalado knockd es posible se deben configurar dos ficheros. El primero generalmente se encuentra en el directorio "/etc/default/knockd". A continuación se adjunta una captura del fichero:


En este caso se debe cambiar el "0″ por un "1″ para habilitar su funcionamiento y también se debe especificar la interfaz de red que se utilizará en el parámetro "i".

El siguiente fichero de configuración se encuentra en "/etc/knockd.conf" y contiene todas las opciones referidas al comportamiento del software. A continuación puede visualizarse una captura de este fichero:


Es importante aclarar que en este caso si se produce un intento de conexión en los puertos 40000, 50000 y 60000 en ese orden, se habilitará la regla en el firewall que permitirá las conexiones entrantes en el servicio SSH. Lo mismo ocurre si se realiza los intentos de conexión en orden inverso, cerrando en ese caso la posibilidad de conexión al servicio. Además, existe el comando knock que cumple la función de cliente y permite realizar los intentos de conexiones. Para ejecutarlo es suficiente con especificar "knock –i [interfaz] [puertos]". A continuación se puede observar una captura:


Si ahora se observa el log del demonio knockd se puede ver como a partir de la secuencia correcta de puertos es posible generar la regla en el firewall. Lo mismo ocurre con la secuencia inversa. En la siguiente imagen puede visualizarse este comportamiento:


Port knocking es muy útil a la hora de proteger servicios que necesariamente deben estar expuestos a Internet. Solo las personas que tengan autorización, sabrán sobre que secuencia de puertos se deben realizar intentos de conexión para finalmente habilitar el firewall. Asimismo, esta no es la única variante en cuanto al port knocking, sino que existen otras alternativas a la hora de programar el comportamiento de este software. Esta es una de las diversas variantes para evitar que el sistema sea comprometido.

Fuente: Laboratorios ESET
#90
Seguridad / Rápido crecimiento del troyano Zortob.B
Marzo 25, 2013, 07:04:02 PM
Se analizó un código malicioso que ha infectado 250.000 computadoras alcanzando 80 millones de mensajes por hora. Este código malicioso se detecta como Win32/TrojanDownloader.Zortob.B.

Zortob.B se propaga a través del envío de mensajes de spam y suplanta al IRS y a compañías como FedEx, USPS, entre otras. A continuación se adjunta una captura del falso correo:


Siguiendo las instrucciones del correo, el código malicioso procede a infectar la computadora de la víctima. Asimismo, el malware instala un módulo de spam en el sistema infectado para el envío de mensajes de campaña. En un principio, la propia amenaza se propagaba como un archivo adjunto del correo. Sin embargo, desde agosto la amenaza se propaga a través de sitios web comprometidos donde se aloja la propia muestra. Desde febrero, se ha observado que la mayoría de los sitios comprometidos están basados en WordPress.

Los ciberdelincuentes detrás de Zortob.B emplean diversos paneles de comando y control. Dichos paneles se conectaban a un dominio donde pudo observarse el tráfico generado. De esta manera, fue posible obtener información precisa sobre aquellas computadoras infectadas. Un dato particular es que el módulo de spamming envía diversos tipos de información, incluyendo el GUID que permite identificar de forma unívoca a los bots. A continuación se adjunta una captura que demuestra cómo se realiza la comunicación:


Analizando los datos en el servidor, se pudo determinar que hubo conexiones de 25.239 bots únicos entre el día 6 y 8 de Marzo. En comparación, se encontraron 32.105 direcciones IP lo que constituye un 30% más. Esto puede ilustrar lo que ocurre cuando se sobrestima el tamaño de una botnet solo basándose en direcciones IP. Además, cabe aclarar, que este código malicioso tiene diversos propósitos, y en algunos casos podría solo robar información y no realizar el envío de spam. Esto implica que la cantidad de infectados puede ser aún mayor a la observada en el servidor debido a lo explicado anteriormente.

Otro aspecto que debe considerarse es la posibilidad de que existan varias computadoras infectadas detrás de una misma dirección IP. Esto suele ocurrir en Asia debido al tamaño limitado del pool de direcciones IP disponibles. Se identificaron 746 GUID de Zortob.B donde se determinó que estaban bajo una misma IP, es decir, un 2% del total. Esas GUIDs se mapean con 493 direcciones IP donde existen hasta 9 GUIDs por IP. A continuación se adjunta un gráfico que ilustra la cantidad de computadoras únicas infectadas con Zortob.B:


Además, los bots reportan al panel de control la cantidad de mensajes de spam que han enviado. De esta manera fue posible estimar la cantidad de mensajes enviados. El siguiente gráfico demuestra la cantidad de mensajes enviados cada hora, que llega alrededor de 5 millones por hora:


El gráfico demuestra solo uno de los servidores que corresponden al panel de comando y control. Como existen 16 de ellos, es posible estimar que se pueden alcanzar 80 millones de mensajes por hora.
Asimismo, se analizó la distribución geográfica del código malicioso:


Con este análisis fue posible ver de forma clara que esta botnet está activa y posee un gran número de bots bajo su poder. Se continuará monitoreando esta amenaza y se publicará nueva información en caso de obtener nuevos hallazgos.

Traducido y adaptado.

Autor: Sébastien Duquette
Fuente: Laboratorios ESET
#91
1. HTML / ScrInject.B

Porcentaje total de detecciones: 3.93%

Detección genérica de las páginas web HTML que contiene script ofuscado o etiquetas Iframe que se redireccionan automáticamente a la descarga de malware.

2. INF/Autorun

Porcentaje total de detecciones: 3.77%

Es un archivo utilizado para ejecutar y proponer acciones automáticamente cuando un medio externo como un CD, DVD o  dispositivo USB es leído por el equipo informático.

3. HTML/IFrame.B

Porcentaje total de detecciones: 3.38%

Detección genérica para etiquetas maliciosas Iframe embebidas en páginas HTML, que redirecciona hacia una URL específica con contenido malicioso.


4. Win32/Conficker

Porcentaje total de detecciones: 1.93%

Es un gusano que se propaga utilizando Internet como plataforma de ataque, aprovechando diferentes vulnerabilidades en sistemas operativos Microsoft Windows que ya han sido corregidas, además de otras tecnologías como los dispositivos de almacenamiento removible y recursos compartidos en redes. De esta manera, un atacante puede controlar el sistema de forma remota y realizar acciones maliciosas sin necesidad de utilizar credenciales de usuario válidas.

5. HTML/Fraud.BG

Porcentaje total de detecciones: 1.64%

Troyano que roba información sensible simulando ser una encuesta. Luego intenta enviar la información recolectada, entre la que se encuentra teléfono y e-mail, a un equipo remoto.

6. JS/Kryptik

Porcentaje total de detecciones: 1.30%

Detección genérica de código malicioso JavaScript ofuscado embebido en páginas HTML. Usualmente redirecciona el navegador a sitios web maliciosos o implementa un exploit específico.

7. Win32/Dorkbot

Porcentaje total de detecciones: 1.18%

Gusano que se propaga a través de medios removibles y contiene un backdoor. Puede ser controlado remotamente. Recolecta usuarios y contraseñas cuando el usuario utiliza ciertos sitios web.

8. JS/TrojanDownloader.Iframe.NKE

Porcentaje total de detecciones: 1.07%

Es un troyano que redirecciona el navegador hacia una URL específica con código malicioso. Usualmente, se encuentra embebido en páginas HTML.

9. Win32/Sality

Porcentaje total de detecciones: 0.84%

Sality es un virus polimórfico. Cuando se ejecuta inicia un servicio y crea o elimina claves de registro relacionadas con las actividades de seguridad en el sistema. Modifica los archivos .exe y .scr y desactiva los servicios y procesos relacionados a las soluciones de seguridad.

10. Win32/Spy.Ursnif.A

Porcentaje total de detecciones: 0.66%

Win32/Spy.Ursnif refiere a una aplicación de tipo spyware que roba información del equipo infectado y la envía a una locación remota, creando una cuenta de usuario oculta para permitir la comunicación entre conexiones remotas.

Agradecimientos: Laboratorios ESET
#92
Seguridad / Tipos de Heurística antivirus
Marzo 24, 2013, 07:41:33 PM
Los algoritmos heurísticos son distintas metodologías de análisis proactivo de amenazas.

Existen tres variantes que son las más comunes en lo que respecta a métodos de análisis, y que son utilizadas en este tipo de detecciones heurísticas. Estas son:


  • Heurística genérica: se analiza cuán similar es un objeto a otro, que ya se conoce como malicioso. Si un archivo es lo suficientemente similar a un código malicioso previamente identificado, este será detectado como "una variante de...".
  • Heurística pasiva: se explora el archivo tratando de determinar qué es lo que el programa intentará hacer. Si se observan acciones sospechosas, éste se detecta como malicioso.
  • Heurística activa: se trata de crear un entorno seguro y ejecutar el código de forma tal que se pueda conocer cuál es el comportamiento del código. Otros nombres para la misma técnica son "sandbox", "virtualización" o "emulación".

Cabe destacar que estos son los métodos clásicos de detección, que no se relacionan con el tipo de heurística avanzada.


La heurística avanzada son aquellos algoritmos heurísticos que poseen funcionalidades más complejas de detección proactiva, y que por lo general son más específicos y consumen más recursos del sistema. Cabe destacar que, por tal motivo, por defecto la heurística avanzada viene deshabilitada en la configuración de la mayor parte de las soluciones antivirus.

Aquellos usuarios que posean equipos modernos, no se verán afectados por habilitar esta opción y es recomendable hacerlo, para así contar con una mejor protección en materia de códigos maliciosos.

Recuerden que para aprender más sobre heurística, pueden descargar el articulo "Heurística antivirus: detección proactiva de malware"

Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Fuente: Laboratorios ESET
#93
Para aquellos que desconocen qué es la heurística, se trata de una tecnología diseñada para detectar códigos maliciosos de forma proactiva, es decir, sin la necesidad de contar con una firma específica. En esta línea, la solución de seguridad analiza un archivo y compara su comportamiento con ciertos patrones que podrían indicar la presencia de una amenaza. A cada acción que realiza el fichero se le asigna un puntaje, por lo tanto, si ese número es superior a un determinado valor, se clasifica como probable nuevo malware. La importancia de este método de detección proactiva radica en la cantidad de códigos maliciosos que aparecen todos los días. Esto imposibilita emplear firmas como una solución única y efectiva para esta problemática. A continuación se expone un esquema que muestra las etapas necesarias para detectar una amenaza a partir de su creación. Se compara tanto la heurística como las firmas:


Tal como puede observarse en el esquema anterior, la detección mediante heurística protege al usuario antes de que la amenaza aparezca, por lo tanto, reduce el tiempo necesario para proteger a las potenciales víctimas a cero. Por otro lado, las firmas requieren de un lapso considerablemente mayor. Primero es necesario recibir la muestra, luego desarrollar una detección, subirla al servidor, y esperar hasta que la computadora del usuario se actualice con la nueva base de datos. Ese "período ventana" varía de acuerdo a factores como la complejidad del malware, el tiempo tardado en recibir la muestra, y el lapso transcurrido entre que se publica la actualización y es instalada en la computadora del usuario. Considerando los aspectos mencionados anteriormente se podría deducir (erróneamente) que la heurística es suficiente por sí sola, sin embargo, el uso de firmas también se hace necesario por algunos motivos:


  • Las firmas permiten detectar códigos maliciosos de modo mucho más específico, por esta razón, son más eficientes para remover amenazas complejas previamente conocidas.
  • Debido a numerosas técnicas empleadas por los cibercriminales para ofuscar malware y evadir métodos heurísticos, en algunos casos es necesario contar con firmas específicas.
  • Aunque una amenaza sea detectada por heurística, agregar una firma concreta permite ahorrar recursos del sistema al momento de analizar archivos.

Asimismo existen distintos tipos de heurística. Por ejemplo, las firmas genéricas están diseñadas para detectar modificaciones menores (variantes) de otros códigos maliciosos conocidos (familias). En este punto es importante destacar que se recomienda utilizar una solución antivirus que cuente con distintos tipos de detecciones ya sean a base de firmas y heurística. Para los interesados en profundizar sobre este tema los invitamos a descargar el documento actualizado "Heurística antivirus: detección proactiva de malware"

Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Fuente: Laboratorios ESET
#94
Esperamos que plantees tus dudas en su respectiva sección y con gusto estaremos impacientes de resolveras y colaborar en su aclaración.

Bienvenido.
#95
Win32/Theola es uno de los componentes de la familia de bootkits Win32/Menroot.FX que es conocida desde el año 2007. Esta familia abarca plugins maliciosos instalados sobre navegadores por el malware Mebroot para realizar operaciones bancarias fraudulentas.

Se ha realizado un seguimiento y se ha notado un incremento en las detecciones de este plugin desde fines de enero del 2013. Los países más afectados son Noruega, Italia, Dinamarca y República Checa. Sin embargo, también se ven diversos países de la región afectados, tales como Venezuela, Argentina, Chile, Perú, Ecuador y Colombia, entre otros. A continuación se adjunta una captura de Virus Radar que ilustra los países más afectados del globo:


Mebroot utiliza métodos típico de infección MBR con un handler int13 utilizado para acceder a los componentes del disco duro. Los componentes maliciosos son cargados en el siguiente orden:


Plugin de Chrome

Win32/Theola.F es un plugin de Chrome basado en la interfaz NPAPI (Netscape Plugin Application Programming Interface). Asimismo, posee un módulo nativo y se encuentra empaquetado en formato CRX (CRX package format). En la siguiente imagen puede observarse el archivo manifest con los permisos del contenedor CRX:


Tal como se observa en la imagen, el archivo describe la actividad permitida para el plugin. En otras palabras, el nivel de permisos es el suficiente para permitir operaciones fraudulentas y maliciosas. Además, el proceso de carga en Google Chrome es el siguiente:


Luego de desofuscar el primer método en JavaScript, se procede a la carga del módulo bajo el concepto de default-plugin para Google Chrome:


Asimismo, el módulo en JavaScript modifica el método POST para todos los formularios en la página web que ha sido accedida. A continuación, los campos de contraseñas se hacen visibles (en beneficio para el atacante) y se utiliza funcionalidades de grabación de video como la que se describen a continuación:


Continuando con el análisis se observa el plugin malicioso en el panel de extensiones:


La rutina NP_GetEntryPoints() llama al proceso que carga el plugin y obtiene los punteros a otras funciones necesarias para trabajar en conjunto con el navegador. A continuación puede observarse el código decompilado:


Theola posee una funcionalidad de grabación de vídeo basado en la librería de código abierto x264 para grabar en formato MPEG. La siguiente captura corresponde a la vtable (virtual table) de la función principal de Theola:


Una vez que el plugin malicioso ha iniciado, la función addListeners() carga el código en JavaScript para comenzar el tracking o seguimiento de la actividad web en el sistema infectado:


Además, el código JavaScript para la manipulación de URL es el siguiente:

[/img]

Considerando la función beforeNavigate() en el método nativo, el código es el siguiente:


En caso de que se detecte actividad sobre un sitio web de una entidad bancaria, el código malicioso envía información sensible como contraseñas, números de tarjeta de crédito, entre otras. El envío se realiza a través de una tubería (pipe) cuyo nombre es determinado por el siguiente algoritmo:


Todas las comunicaciones con el módulo que opera en modo Kernel y aquellos que operan en modo usuario están implementados mediante handlers con nombres especiales en el plugin. Cada uno de estos manejadores (handlers) son responsables por la ejecución de un tipo específico de eventos.

En casos similares al expuesto, los códigos maliciosos utilizan lo que se conoce como hooking a nivel de usuario para interceptar la actividad de red. Sin embargo, Theola utiliza métodos documentados y específicos que dificultan la detección de códigos de esta naturaleza

Traducido y adaptado.

Autor: Aleksandr Matrosov
Fuente: Laboratorios ESET
#96
La doble autenticación se trata de un sistema que además de requerir una autenticación simple, como por ejemplo, nombre de usuario y contraseña; solicita el ingreso de un segundo mecanismo, como un código de identificación. Generalmente, este código se envía a un dispositivo del usuario, como un teléfono celular, para que luego, pueda ingresarlo para poder validarse en el equipo. En este sentido, y considerando que la doble autenticación es significativamente más segura que la simple, ¿se tratará del fin de las contraseñas tal y como se conocen en la actualidad?


Las contraseñas son un recurso ampliamente utilizado por los usuarios. Prácticamente cualquier servicio en el cual se maneje información sensible (correo electrónico, redes sociales, portales bancarios, recursos corporativos, entre otros.), requiere del ingreso de credenciales de acceso como método de autenticación. El objetivo es similar al de una llave; proteger aquellos recursos importantes del acceso no autorizado de terceros, sin embargo, la efectividad de este método se ha visto amenazada tanto por factores técnicos como humanos.

En relación al aspecto técnico, ataques como el sufrido por Twitter en donde se comprometieron 250.000 usuarios, el restablecimiento de 28 millones de contraseñas por parte de Formspring, la fuga de información que afectó a LinkedIn, y la posible brecha de seguridad que involucró a Yahoo!, dejaron entrever que la autenticación simple no es una medida suficiente para proteger información sensible. Además de todo esto, el avance tecnológico ha permitido que un cluster de 25 GPU descifre contraseñas de 8 caracteres en 5.5 horas, por lo tanto, existen aún más herramientas para que los atacantes pongan en riesgo las credenciales del usuario.

Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Autor: André Goujon
Fuente: Laboratorios ESET
#97
El martes pasado Microsoft publicó siete actualizaciones de seguridad, donde cuatro de ellas fueron categorizadas cómo críticas. Aquella correspondiente a MS13-027 fue clasificada como importante debido a que requiere acceso físico al sistema de la víctima.



¿Qué alcance posee la vulnerabilidad?

La vulnerabilidad permite saltear cualquier tipo de control a través de la conexión de un dispositivo USB en un puerto de la computadora. Esta vulnerabilidad es explotable aún cuando la funcionalidad de autorun se encuentre deshabilitada o incluso si la pantalla se encuentra bloqueada.

Windows detecta la presencia de un nuevo dispositivo USB debido a las cambios que existen en el voltaje. De esta forma, un atacante podría explotar esta vulnerabilidad a través de un formateo especial sobre el dispositivo. Cuando el USB es conectado en la computadora, se carga el descriptor que fue especialmente modificado y de esa forma se podría ejecutar código arbitrario en el entorno del kernel.

En este caso, no se requiere interacción por parte del usuario debido a que la carga se produce de forma automática. Además, la vulnerabilidad también puede explotarse cuando la sesión está bloqueada, ya que la carga de este tipo de dispositivos ocurre de igual forma.

Cabe destacar que es necesario que el atacante tenga acceso físico al sistema para poder tomar ventaja de esta falla. Sin embargo, es posible que se combine este tipo de ataque con otros, que en un período posterior puedan llevarse a cabo de forma remota.

Es importante mantener el sistema actualizado, sobre todo considerando estos parches críticos que solucionan problemas de seguridad de alta criticidad. Remitiéndose a un ambiente corporativo, la gestión de actualizaciones forma un pilar fundamental en la seguridad, ya que siempre que se exista un eslabón o nodo débil dentro de la cadena de seguridad, posiblemente todo el escenario quede expuesto a riesgos mayores.

Fuente: Laboratorios ESET
Agradecimientos: Fernando Catoira
#98
Talleres Underc0de / Re:Taller de Python #1
Enero 24, 2013, 05:08:55 PM
Te felicito ANTRAX por tu gran trabajo! Como bien dijeron, se debería especificar en el titulo y portada del taller que es para python 2x y no 3x. Esto evitaría descargas y practicas que nos harían perder el tiempo debido a una confusión de versión.

Otra cosa que dejo a notar, es que en la imagen dice "INSTLACIóN". A menos que halla sido algo intencional.

Saludos y excelente taller!




En la parte de instalación de linux en el manual, encuentro otro error de tipeo.

Código: python
#! /usr/bin/pyhton27


Por

Código: python
#! /usr/bin/python27
#99
Seguridad / [Guia] Eliminando virus Sality de tu sistema
Diciembre 16, 2012, 01:53:27 AM
El virus Sality y sus variantes son troyanos-gusanos capaces de infectar archivos .exe y .dll con la función de tomar el control del sistema infectado, descargar malware de sitios malintencionados y eliminar cualquier tipo de barrera que se interponga en su camino, asi como restricciones o antivirus.

1. Ocupa los nombres de:

Código: text
Sality.exe
Sality.dll
oledsp32.dll
sysdll.dll
syslib32.dll
\oledsp32.dll
sysdll.dll
syslib32.dll


Sus archivos se pueden encontrar en la carpeta:

Código: text
%homedrive%\WINDOWS\system32\


Agrega los archivos anteriormente nombrados en:

Código: text
HKCU\Software\Microsoft\Windows\CurrentVersion\Run





Con estos datos, pueden pasar a su eliminación manual del sistema o de lo contrario, utilizar el siguiente código.

Código: dos
@echo off
TITLE TROYAN.WORM SALITY DELETE && color 0a
:delete
echo Initializing process... && ping -n 3 localhost >nul
for %%x IN (
"Sality.exe","Sality.dll","oledsp32.dll","sysdll.dll","syslib32.dll"
) DO (
del /S /Q /F "%windir%\system32\%%~x" && REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\%%~x" /F
)
:check
if not exist "%windir%\system32\%%~x" (echo complete deleted && pause >nul) else (goto:delete)


1. Tecla WIN + R
2. Escribimos el comando "notepad"
3. Pegamos el código
4. Guardamos con extensión "bat"
5. Ejecutamos

Screenshot:




Saludos!

PD: Luego paso al español, costumbre de escribir en ingles y el DOS que me responde en otro idioma.
#100


    Los Antivirus online permiten un analisis de nuestro sistema rápido y sencillo, ademas de que este es totalmente gratuito y la proxima vez que lo usemos será mucho mas rápido.

    Si tienes problemas en tu computadora y piensas que puede ser alguna especie de amenaza, virus o código malicioso, sugerimos que pruebes con alguno de estos enlaces.


    • Kaspersky Online Scanner
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    • ESET Online Scanner
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    • McAfee Security Scan Plus
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    • Trend Micro House Call
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    • Bit Defender Free QuickScan
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    • Panda ActiveScan 2.0
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    • Norton Security Check
    Página web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


    Si crees que tu sistema todavía esta infectado, no dudes en crear un tema nuevo y consultarnos.
    Saludos!