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ú

Temas - Mavis

#1
Playc0de: A Powerful and Flexible Test Automation Framework


[Introducción]

Playc0de es un marco de automatización de pruebas, de código abierto, construido sobre el corazón de Playwright. Proporciona una solución fácil de usar, de mantener y de integrar; siendo además personalizable y robusta para la automatización de pruebas Web, de APIs o incluso de Performance.

Entre las principales características de Playc0de, puedo destacar:

- Implementación: Es fácil de implementar y de usar. Requiere conocimientos básicos de programación.
- Grabador: Permite en segundos grabar tus casos de prueba desde el navegador y convertirlas directamente a código (Javascript o TypeScript).
- Multiplataforma: Podes ejecutar tus pruebas en Desktop (Chromium, Chrome, Mozilla Firefox, Edge y Webkit) o Mobile (Chrome y Safari).
- Estructura: Construido de forma estructurada siguiendo patrones de diseño modernos y prácticos, garantizando robustez y mantenibilidad.
- Comparaciones visuales: Detecta errores de UI fácilmente gracias a las comparaciones visuales entre capturas de pantalla
- Reportería: Genera reportes visuales y atractivos con Allure Reports o integra fácilmente tu reportería personalizada favorita.
- Entornos: Gestiona sin esfuerzo diferentes datos de pruebas y configuraciones específicas para cada ambiente.
- Respaldo: Cada vez son más las empresas que utilizan Playc0de o marcos derivados de Playwright.
- Actualizaciones: mientras Playc0de recibe constantemente actualizaciones por parte de su creador No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, el núcleo de Playwright está constantemente en desarrollo por parte de Microsoft.
- CI/CD: Integra fácilmente tu código con GitHub Actions, GitLab CI, Jenkins, Azure, Docker, CircleCI y otros más.

CitarTe invitamos a unirte a la comunidad de QA/Devs utilizando Playc0de y continuar haciendo crecer este proyecto. Damos la bienvenida a comentarios, informes de errores, bugs, solicitudes de características, asesoramiento, etc. Entre todos, podemos construir herramientas de automatización de pruebas que sean robustas, eficientes y que se adecúen a las necesidades de cada proyecto.


[Primeros pasos]

Antes de empezar, es importante mencionar que también vas a poder seguir la guía de "Primeros Pasos" ubicada en el archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta del repositorio oficial: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Requerimientos:


Extensiones adicionales:

  • GitHub Copilot o BlackBox
  • Error Lens

Si bien las recomendaciones no son obligatorias, están diseñadas para mejorar en gran medida tu experiencia automatizando.


[Puesta en marcha]

Los pasos para instalar las aplicaciones requeridas que mencioné anteriormente son los básicos y a menos que lo desees no será necesario cambiar ni realizar ningún ajuste adicional durante la instalación de cada uno de ellos.  Solo recuerda reiniciar tu dispositivo para que los cambios en tu entorno de trabajo surtan efecto. A diferencia de otros Frameworks, no será necesario que edites las variables de entorno manualmente ni realizar ninguna otra configuración adicional.


1. Clonar el repositorio

Vamos a comenzar clonando el repositorio oficial desde GitHub. Para esto, abrimos la URL del Repositorio, seleccionamos el botón de código y presionamos en "Copy"



Luego, recomiendo crear una carpeta llamada playc0de en nuestro disco local o ubicación de preferencia donde solemos almacenar los proyectos:




Ahora podemos abrir Visual Studio Code, seleccionar la opción "Clone Git Repository":




Pegamos la URL que copiamos anteriormente y seleccionamos la opción "Clone from URL":




Listo! Ahora debemos instalar todos los paquetes y dependencias que tiene el Framework. Dado que los mismos vienen listados en el archivo package.json, simplemente deberemos abrir una terminal en Visual Studio Code (Control + J si usas Windows), escribir comando "npm i" y presionar enter:



Si es la primera vez que utilizas Playc0de en tu dispositivo, Playwright Core nos permite instalar los navegadores requeridos con el comando "npx playwright install":



Ahora procedemos a verificar que la instalación se realizó correctamente. Para eso, ejecutaremos en una terminal de tipo "Git Bash" el comando "env=qa npm run test" para poner a correr todos los casos de demostración que tiene el proyecto. Ten en cuenta que según la terminal que estés usando, los comandos pueden variar (env=qa | ENV=qa | $ENV=qa | etc). Yo recomiendo desplegar la lista de terminales de Visual Studio Code y elegir "Git Bash":



Entre estos casos podremos encontrar algunos de API, Desktop Web y otros de Mobile Web:



Una vez finalizada la ejecución, para poder revisar el reporte debemos ejecutar el comando "npm run report":



El reporte de Allure debería verse similar a lo que encontrarás en las siguientes imágenes. Allure es una reportería muy completa que además permite personalizar el contenido de los reportes y sus respectivos campos para lograr los reportes personalizados que necesitamos según el proyecto:






Otros comandos

Podrás encontrar comandos adicionales en el repositorio oficial o en el archivo package.json del proyecto. A continuación mencionaré algunos de los más usados:


Para revisar o hacer debug de los test paso a paso:



Para ejecutar test con un @tag específico:



Para ejecutar los casos en un único navegador (Chrome por default, lo puedes editar en el package.json):



Para comenzar la grabación de un caso:



Ya que mencioné la grabación, les explicaré como funciona grabar su primer test automatizado. Luego de ejecutar el comando, se abrirá el navegador web y el inspector:



Todo lo que hagamos en el navegador que se abrió, desde los clicks hasta las acciones con el teclado, se irán grabando paso a paso en el inspector para poder utilizarlas luego. Antes de comenzar a grabar, te recomiendo pensar:

  • ¿Qué caso de prueba vas a automatizar?
  • ¿Conozco todos los pasos necesarios para reproducir el caso?

De esta manera, facilitaremos obtener una grabación limpia sin pasos erróneos que nos molestarán y deberemos remover manualmente después. Una vez decidido, ¡Manos a la obra! Para este ejemplo, navegaremos al foro de underc0de, visitaremos la sección de "Talleres de Underc0de" y verificaremos que el post con los talleres esté visible en la primer página.


1. Navegamos a la URL y buscamos la sección de talleres:



2. Luego de entrar a la sección buscamos el post correspondiente. En este caso, podemos ver que es de tipo "Link" y que contiene el texto "Listado de talleres - UNDERC0DE". Le haremos click para capturar el objeto y podremos ver en el Inspector ya tenemos nuestro test con 3 simples pasos.



3. Si bien tenemos los pasos de nuestro caso, bastante simple, no estamos validando absolutamente nada, solo estamos haciendo clicks:



Para agregar validaciones a nuestro caso, necesitamos agregar una aserción. Para este ejemplo utilizaremos el objeto Link, ya que en un principio acordamos validar que estuviera visible en la web. Dicho esto, es hora de copiar nuestro caso grabado, dirigirnos a la carpeta ./test/, crear un archivo llamado "foro.test.ts" y pegaremos el contenido de nuestro caso grabado dentro.



Editamos el código agregando la aserción que necesitamos:



Como se puede apreciar en la imagen de arriba, el tercer "await page()" pasó a convertirse en un "await expect(page())" que contiene el objeto y reemplazamos el  "click()" por un "toBeVisible()". Pero, ¿Qué significa todo esto? Vamos por partes:

  • ¿Qué es un await? Sin entrar en complicaciones, los await son indicadores de que estamos esperando que se cumpla una promesa. Permite que la ejecución de un script se pause hasta que la promesa sea resuelta (o en su defecto, rechazada). En este ejemplo, cada await indica que estamos esperando que cada uno de los pasos del caso se cumpla (o falle).
  • Expect(): Los expect son usados normalmente en Frameworks de Automatización para definir aserciones (también conocidas como expectations) en el comportamiento de nuestro caso. Estos nos permiten realizar diferentes tipos de validaciones (que esté visible o no, que contenga algo o no, que suceda un evento en particular, etc).
  • getByRole(): Los getBy* son diferentes APIs de Playwright que consumimos para capturar elementos del sitio web. Puede ser getByRole, getByLabel, getByText, getByTestId y muchos otros más. Estos getBy* incluyen auto-esperas, scrolls automáticos y otras mejoras mas que nos ahorran tiempo y líneas de código. Sin ir más lejos, es una de las grandes razones por las cuáles el Playwright Core está siendo elegido en muchos proyectos.
  • toBeVisible(): Esto no es más que un tipo de aserción, de los muchos que hay, que nos permitirá saber si el elemento que indicamos dentro del expect() se encuentra visible o no. También se asegurará de que el elemento no esté oculto, oscurecido, tapado por otro objeto y que puede ser visible para el usuario.


Hay muchos más detalles que podemos revisar y conversar sobre cómo capturar elementos y las aserciones, pero eso es una charla que dejaremos para el curso de Playc0de que estaré dictando próximamente de forma gratuita en la Fundación Underc0de.

Siguiendo con nuestro caso de prueba, ¡Llegó la hora de ejecutar nuestra pequeña creación! Para eso, debemos enviar el comando "npm run test foro" por la terminal. Esta adición "foro" al final le indicará que solo queremos correr los casos del archivo que creamos previamente, de lo contrario ejecutará todos los casos que estén en el proyecto:



Finalmente la terminal nos mostrará la ejecución de nuestros casos y sus resultados:



[Arquitectura]

Vamos a aprovechar este post para dar una introducción a la arquitectura que maneja Playc0de. A continuación, pueden observar cómo está compuesta la estructura del proyecto:



Dentro de esta estructura, podemos identificar seis capas:

  • Test Layer: contiene los pasos de los casos, los escenarios de prueba y las aserciones. Esta capa interactúa con otras capas constantemente.
  • Page Object Layer: contiene todos los objetos de la página. Es donde encapsulan las funcionalidades y elementos específicos de cada página o componente.
  • Core Layer: Esta capa contiene el núcleo del Framework. Se encarga de extender las acciones comunes a Playwright hacia funcionalidades o utilidades más complejas o proveer asistencia para manejar la ejecución de casos.
  • Data Handler Layer: Se encarga de gestionar toda la data de prueba y la configuración de los diferentes ambientes para que sea accesible desde otras capas, que luego puede ser utilizada en objetos de la página o en el contenido de casos de prueba.
  • HTTP Layer: Incluye todo lo relacionado a los HTTP request que luego nos permitirán interactuar con las APIs
  • API Layer: esta capa final nos provee de las abstracciones o utilidades necesarias para trabajar con APIs o servicios Backend

Separar capas en nuestro Framework de Automatización nos provee de un montón de ventajas y en la mayoría de los casos se considera una buena práctica. Son muchas las razones que puedo mencionar, pero trataré de hablar de las principales:

- Modularidad: separar capas nos provee de un diseño modular, cada capa tiene una responsabilidad específica. Cada capa nos otorga independencia y la posibilidad de desarrollar, testear o mantener de forma independiente. No solo ayuda a organizar el código, sino que lo hace reutilizable.

- Separar responsabilidades: cada capa es responsable de un aspecto específico del proceso de automatización. Por ejemplo, la Test Layer se enfoca en definir los casos y escenarios de prueba mientras que el Page Object Layer se encarga de gestionar las interacciones del usuario con el sitio web. Esto nos permitirá, por ejemplo, hacer mantenimiento de los objetos sin alterar los pasos de las pruebas.

- Reusabilidad: al dividir podemos enfocarnos en diseñar componentes que sean reutilizables. El Page Object Layer nos permite encapsular interacciones en la interfaz de usuario, que luego utilizaremos en la Test Layer. Así mismo, el Core Layer provee funciones reutilizables por el Page Object Layer a través de los Common Actions. Esta reutilización reduce la duplicación de código, mejora el mantenimiento y sobretodo nos permite realizar mejoras o modificaciones sin afectar el resto de nuestro código.

- Manejo de Test Data: crear un componente de Data Handler nos garantiza un gestor individual de toda la test data y la configuración de los ambientes. Esta capa nos provee de mecanismos para obtener y manejar información de diversas maneras, como archivos de configuración o bases de datos.

- Mantenimiento: como dijimos previamente, al tener diferentes capas, el código se vuelve mas fácil de mantener. Cada capa con responsabilidades bien definidas nos permitirá actualizarlas o modificarlas de forma independiente sin afectar otras capas. Este diseño modular también se lo conoce como "Aislamiento" y reduce el riesgo de que nuevos cambios o funcionalidades afecten nuestro Framework.

- Fácil de leer, fácil de entender: que cada capa tenga una responsabilidad específica hace que nuestro código sea mucho más fácil de leer y de entender. Tener una definición tan clara de responsabilidades nos permite modificar o ajustar el Framework fácilmente de acuerdo a las necesidades del equipo o del proyecto. Además, hace que Automatizar sea aún más fácil para principiantes o nuevos miembros del equipo.

A continuación revisaremos ejemplos de las primeras dos capas de Playc0de:

[Test Layer]



• Test Definition

El archivo "Profile.test.ts" contiene, como dice su nombre, casos relacionados al perfil del usuario del sitio web. Todos los casos que se ejecuten en este mismo contexto deberían ir incluidos en este archivo.


• Setup y Teardown

El archivo contiene una función beforeEach() y una función afterEach(). Estos bloques de código definen configuraciones o pasos previos (backgrounds) necesarios para poder ejecutar los casos del Perfil.

En estos casos de demostración que contiene Playc0de, el bloque BeforeEach() se encarga de

  • Navegar a la URL del foro e iniciar sesión
  • Desplegar el menú del usuario
  • Acceder al perfil del usuario

Por qué? Simplemente porque todos los casos del perfil de usuario requieren que el usuario esté logeado en la plataforma y que esté posicionado en su perfil. Si miramos los nombres de los casos de prueba, encontraremos "Cambiar fecha de nacimiento", "Cambiar el texto personal", "Cambiar la firma" y "Cambiar la ubicación". Esto tiene mucho más sentido ahora.

Por otro lado, el bloque afterEach() ejecutará algunos pasos posteriores a cada uno de los casos de prueba. Si revisamos el contenido de este bloque, notaremos que hace lo siguiente:

  • Guarda los cambios hechos en el perfil
  • Verifica en el perfil del usuario que los cambios se hicieron correctamente
  • Borra todas las modificaciones para que el usuario esté limpio para la siguiente prueba
  • Cierra el navegador

Si conectamos esta información, y por poner un ejemplo más claro, podemos concluir que ejecutar el archivo de Profile.test.ts hará lo siguiente:

Caso N° 1:
  • Navegar a la URL del foro e iniciar sesión
  • Desplegar el menú del usuario
  • Acceder al perfil del usuario
  • Ejecutar el caso 1 (Cambiar fecha de nacimiento)
  • Guardar los cambios
  • Verificar que los cambios se hicieron correctamente
  • Limpiar los cambios del perfil
  • Cerrar el navegador

Caso N° 2:
  • Navegar a la URL del foro e iniciar sesión
  • Desplegar el menú del usuario
  • Acceder al perfil del usuario
  • Ejecutar el caso 2 (Cambiar el texto personal)
  • Guardar los cambios
  • Verificar que los cambios se hicieron correctamente
  • Limpiar los cambios del perfil
  • Cerrar el navegador

En resumen, lo que está arriba de la ejecución del caso es el beforeEach() y lo que está debajo de la ejecución es el afterEach(). De esta manera podemos reutilizar nuestro código para generar backgrounds o configuraciones post-ejecución sin tener que estar repitiendo líneas.

Hablemos un poco de los pasos que contiene el caso de prueba. Para este ejemplo, tomaremos el caso que está desplegado en la imagen: '@Regression Change birthdate'


El caso contiene un solo step o paso, en este ejemplo sería "Fill the user birthdate" que se encarga de completar la fecha de nacimiento del usuario en la web. Como se puede apreciar, no interactuamos con ningún objeto o elemento de la página, simplemente enviamos 3 argumentos (año, mes, día) a la función fillBirthdate() que se encuentra dentro del Page Object Layer (ProfilePage.ts)



[Page Object Layer]


El Page Object Layer es responsable de encapsular las interacciones con el sitio web (o los elementos del sitio web) en componentes reutilizables. Esto nos facilita la abstracción que separa los casos de prueba de los detalles de implementación relacionados al sitio web. En este ejemplo podemos encontrar:


• Page Object Definition

En el archivo "ProfilePage.ts" podemos notar varias cosas. Para empezar, ProfilePage representa una página, módulo o componente específico de nuestra web. Se encarga de extender la clase BasePage, la cual contiene los Common Actions y otras funciones que se reutilizan en diversas páginas.


• Locators Definition

Dentro de la clase "ProfilePage" are multiples propiedades u objetos que representan elementos del sitio web. Estas propiedades se definen utilizando getBy* APIs o locators clásicos (xpath, css, class, ID, etc). Los locators se encargan de identificar los elementos en el sitio web.


• Initialization

La clase constructor "ProfilePage" recibe los objetos "page" y "context" del Playwright Core. Estos objetos nos permiten interactúan con el sitio web a través del navegador. El constructor tambien inicializa los locators y les asigna un identificador que podremos utilizar luego.


• Page Actions

La clase "ProfilePage" contiene métodos que representan acciones o interacciones con el sitio web. Estos métodos encapsulan los pasos requeridos para realizar acciones específicas como hacer un click, completar un formulario o verificar el estado de algún elemento.

En la siguiente imagen, podemos ver un getByRole definido para el link que nos redirige a los detalles del perfil del usuario junto a los tres locators asociados a la fecha de nacimiento del usuario.



Y acá podemos ver como realizamos un click al link que nos lleva al perfil del usuario, o rellenamos tres campos con la fecha de nacimiento del usuario. Si te estás preguntando dónde está definido la fecha de nacimiento, recuerda que la misma está definida en la capa de los Test. Esto nos permitirá cambiar los valores directamente desde los casos de prueba, o desde la capa de Data Handler que es la encargada de gestionar toda la Test Data.



[Conclusiones]

Playwright es una librería de Automatización. Playc0de busca exprimir todo el potencial de la librería de Playwright a través de componentes diseñados en una estructura sólida, adaptable, fácil de usar y de mantener, capaz de acomodarse a cualquier tipo de proyecto con diferentes necesidades y/o requerimientos. Si aún no estás utilizando Playc0de, te recomiendo que lo pruebes y le des una oportunidad en algún proyecto que tengas disponible. Es un viaje de ida.

Vamos a repasar un poco todo lo que aprendimos hasta ahora:

  • Qué es Playc0de y sus ventajas
  • Cómo ponerlo en marcha
  • Cómo grabar y ejecutar nuestro primer caso
  • Arquitectura de Playc0de y sus ventajas
  • Test Layer y Page Object Layer

Tenemos mucho más contenido para ver. Algunos de los temas interesantes que se me ocurren son:

  • Convirtiendo los casos grabados en clases (Page Object Model)
  • Pruebas de accessibilidad
  • Pruebas de performance
  • Testing de APIs
  • Modificando el Playwright Core
  • Integración continua y ejecuciones en paralelo

¡Deja en los comentarios qué más te gustaría saber sobre Playc0de!


Para finalizar, un último anuncio. Próximamente estaremos compartiendo el sitio web oficial de Playc0de donde se está escribiendo detalladamente toda la documentación para cada una de sus funciones e integraciones. Adicionalmente, estén atentos a un próximo curso virtual a través de Meet donde estaremos viendo Playc0de en mayor profundidad.

Los invito a utilizar esta nueva sección del foro llamada "Playc0de" para leer, aprender y preguntar más sobre Playc0de o Playwright en general. Espero que les sirva!

Luca Ahumada (Mavis)
#2
El Fundador del movimiento de Software Libre va a dar una conferencia gratuita en Mendoza (Argentina), donde se hablaran temas como la ética del movimiento, prácticas, Facebook y la inseguridad que sufre nuestra información en la actualidad.

La entrada al evento es gratuita y será en el Auditorio Ángel Bustelo

Pueden inscribirse desde el siguiente enlace: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Dejo la nota que escribió Diario El Sol para los inquietos No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.



Saludos.
#3
Hola comunidad, llevaba años sin postear nada o charlar con ustedes. Esto me trae muchos recuerdos. Y para empezar, vengo a pedirles ayuda.

Tengo casi 200 computadoras y tengo que instalar Windows 7 o Windows 10 en todas ellas. Todas comparten las mismas especificaciones técnicas y tienen SSD (disco sólido). Lo mejor que se me ocurrió fue instalar SO, actualizar, instalar programas, utilidades y despues pasar a realizar la clonación del SSD. Lo he probado con 4 y no he tenido ningún inconveniente.

Para agilizar el asunto de la instalación, tenía pensado incluir Docking Disk (Carry Disk) de manera que pueda realizar múltiples clonaciones a la vez. Mis dudas vendrían a ser las siguientes: es realmente viable clonar a través de este método? Vale la pena realmente la inversión y la compra de tres unidades de clonado? Sería esta la manera definitva o creen/conocen de alguna manera mas rápida de poder realizarlo? El principal objetivo del proyecto se basa en la instalación de mayor cantidad de sistemas operativos completos en el menor tiempo posible, ya que luego deben realizarse y respetar procedimientos de red, dominio, entre otros.

Estaré atento a sus ideas y recomendaciones.

Gracias desde ya.

Luca
#4
Buenas! Hace años que no pregunto algo en el foro, no es lo mio... Pero ya no encuentro solución y quiero dejar de perder tiempo.

Tengo el celular que dice el título, un Samsung Galaxy Trend Lite S7390L y se me está haciendo imposible rootearlo. He probado con Lamda, Frameroot, Exploits, Impactor, un Software con una extraña interfaz china el cual sé que funciona en otros celulares, pero no en esta versión.

Todavia me queda una teoría mas, tengo la última versión del firmware para este modelo. Así mismo, la estoy descargando, pienso volver a instalarla y luego probar de nuevo con Impactor.

Creen que funcionará? Alguna sugerencia? Qué otra cosa podría hacer?
Disculpen las molestias.

Saludos!
#5

Esta semana se dio a conocer la existencia de una vulnerabilidad de 5 años de antigüedad que afecta a la mayoría de las distribuciones del sistema operativo Linux. La misma radica en el kernel del sistema operativo y permite, entre otras cosas, la ejecución de código arbitrario y la elevación de privilegios. Fue introducida al popular sistema operativo de código abierto en el año 2009 con la versión No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y afecta a todas las versiones liberadas desde entonces hasta la 3.14.3 inclusive.

La vulnerabilidad se genera gracias a una corrupción de memoria en el kernel, más específicamente en la función n_tty_write que controla el pseudo dispositivo tty (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) de Linux.

Afortunadamente, la falla fue descubierta por los desarrolladores del kernel de Linux, por lo que pudieron tomar acciones rápidamente publicando un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en la rama de desarrollo del proyecto y luego avisando a las respectivas distribuciones para que se liberaran las correspondientes actualizaciones.

La empresa Red Hat afirma que su versión Red Hat Enterprise Linux 5 no es vulnerable, pero actualizaciones para Red Hat Enterprise Linux 6 y Red Hat Enterprise MRG 2 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

En el caso de Ubuntu, una No tienes permitido ver los links. Registrarse o Entrar a mi cuentaya fue liberada para sus distintas distribuciones por medio del gestor de actualizaciones, por lo que es altamente recomendable que los usuarios de la misma apliquen dichas actualizaciones.

Debian, por su parte, ya ha liberado una aNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta, pero esta es sólo para sus versiones estables.

De las otras populares distribuciones de Linux aún no se dispone de un comunicado oficial o de un plan de acción en caso de existir uno.

¿Qué impacto tiene esta vulnerabilidad?

Poder determinar el alcance o impacto de esta vulnerabilidad es muy difícil, ya que se encuentra vigente desde hace mucho tiempo y son muchas las versiones del kernel afectadas. No obstante, es importante tener en cuenta que en el caso de los servidores web utilizados por los proveedores de servicios de hosting, los cuales usualmente son compartidos entre clientes, existe un peligro muy importante ya que un cliente normal podría otorgarse privilegios y así lograr el control completo del servidor.

Otro peligro no menor son los dispositivos que utilizan el sistema operativo Android, el cual también sería vulnerable a este ataque, inclusive en la última versión del mismo, la 4.4. En esta caso sería mas dificil poder solucionar el problema ya que no sólo se depende de la liberación de una versión corregida del sistema operativo sino también que se deberá esperar hasta que los proveedores de telefonía celular liberen dicha versión a sus respectivos clientes.

Es por esto que se recomienda a los usuarios de dichos dispositivos móviles evitar instalar una aplicación cuya procedencia o funcionamiento sean dudosos.

Para los usuarios de escritorio, o que administran servidores con versiones de Linux que podrían ser vulnerables les recomendamos actualizar de inmediato, y si no están seguros de que sus equipos sean vulnerables o no, les recomendamos la utilización de esta No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que lo comprueba elevando los privilegios de un usuario restringido dentro del equipo.

Agradecimientos: Joaquín Rodríguez Varela, Laboratorios ESET
#6

Tal vez escucharon nombrar a los metadatos; estos son información adicional sobre los datos. Por ejemplo, en una foto, nos permitirían saber el tipo de extensión del archivo, el tamaño y la fecha de creación, entre otros.

Sucede que frecuentemente son utilizados por los ciberdelincuentes para obtener información acerca de una víctima. Para poder entender un poco mejor qué son exactamente los No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y cómo podrían ocasionar la fuga de información, los vamos a ilustrar con imágenes.

La siguiente parece una simple y ordinaria foto, ¿verdad?:


Se puede ver a un simpático patito, posando para nuestra prueba de concepto en las oficinas de ESET Latinoamérica. Pero lleva consigo mucha información que a simple vista no advertimos.

¿Una foto habla más de la cuenta?

Si no se toman los recaudos necesarios, sí: esta simple foto podría entregar información muy sensible a un atacante.

A continuación veremos qué información trae escondida nuestro "amiguito" amarillo:


Entre muchos otros datos se puede advertir, en primer lugar, la marca y el modelo del dispositivo con el que fue tomada la fotografía, y en segundo lugar, la fecha y hora exactas. La siguiente captura lo muestra en detalle:


Este tipo de información podría parecer simple y poco sensible, pero podría simplificarle las cosas a un atacante, ya que al saber el tipo de dispositivo que usa su posible víctima, podrá buscar los exploits adecuados, por ejemplo. En la captura anterior también puede observarse la versión de sistema operativo, lo cual lo conducirá a saber qué vulnerabilidades podrían afectar al equipo.

Sin embargo, la información más sensible en este caso es la ubicación geográfica, que revela la ubicación exacta del usuario:


Teniendo en cuenta la amplia conectividad móvil disponible hoy en día, es frecuente que las personas se saquen fotos estando de vacaciones y las suban a las redes sociales. Con esta información de GPS, un cibercriminal podría saber que quien tomó la foto está fuera de su casa.

Aprovechando los servicios gratuitos disponibles en Internet, como por ejemplo Google Maps, se pueden colocar las coordenadas para encontrar la ubicación en un mapa, como se muestra a continuación:


No des tanta información

Podemos concluir entonces que los archivos subidos a la nube pueden decir más de lo que se ve a simple vista. Este tipo de fuga de información puede evitarse, sólo hay que tomarse unos pocos minutos para realizar las configuraciones correspondientes.

Recomiendo:


  • Si te vas de vacaciones y sacas fotos, relájate y disfrútalas. Las puedes subir a las redes sociales cuando vuelvas a tu casa.
  • Si las quieres compartir para que tus amigos las vean, antes de tomar fotografías deshabilita los permisos de ubicación para la cámara.

En Android: desde las opciones dentro de la cámara, como se ve debajo:


En iOS: desde Ajustes, Privacidad, Localización:


Y por supuesto, recuerda no aceptar gente que no conozcas en las redes sociales. Nunca sabemos quién puede estar del otro lado.

¿Cómo borro los metadatos en los archivos desde la PC?

En Windows puede borrarse esta información sin necesidad de aplicaciones de terceros, accediendo a las propiedades del archivo (con el botón derecho):


De esta forma podemos seleccionar qué información eliminar y cuál dejar asociada a la imagen, como se ve a continuación:


También existen herramientas gratuitas que se encargan de limpiar este tipo de información de los archivos; una de ellas es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Sólo hay que ejecutarla desde una consola en Windows (Inicio > escribir "cmd", y presionar Enter). El comando a ejecutar es el siguiente:

Código: dos
exiftool.exe –all= "aquí el archivo o directorio cuyos metadatos queremos limpiar"


Veámoslo en la siguiente captura, donde ingresamos la ubicación de nuestro archivo PatitoCuak.JPG:


Podemos ejecutar el siguiente comando para ver si realmente se realizó la limpieza:

Código: dos
exiftool.exe "archivo o archivos procesados anteriormente para su limpieza"


Como puede observarse en la siguiente captura, la operación tuvo éxito:


Recuerda: cada vez que subas un archivo a la nube, tómate unos momentos y fíjate qué información envías junto con él.

Agradecimientos: Ignacio Perez, Laboratorios ESET

Saludos!
#7

El protocolo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ha sido comprometido por un grupo de estudiantes del Technion de Israel. La falla que han podido encontrar permitiría a un atacante redirigir las peticiones a un sitio web falso, mientras que la víctima intenta visitar una web legítima.

Esto sería posible forzando a los servidores DNS a conectar con un servidor específico controlado por el ciberdelincuente, respondiendo con direcciones IP falsas y permitiendo redirigir las consultas a donde quiera.

La finalidad de un ataque de este tipo podría ser redirigir solicitudes de páginas web a un sitio de phishing, para posteriormente robar credenciales de la víctima. O incluso a sitios con malware alojado, para infectarla.

El descubrimiento fue resultado de una No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Según han podido observar, hasta ahora no ha habido ataques que exploten esta vulnerabilidad.

¿Qué es exactamente el protocolo DNS?

Podríamos decir que es quien se encarga de convertir las direcciones web (por ejemplo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), en direcciones de IP (por ejemplo, una red hogareña sería 192.168.0.115). Cuando se accede a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, en realidad estamos accediendo al equipo con dirección IP 192.168.0.115; el DNS se encargará de resolver esta petición.

Los sitios web públicos poseen una dirección IP pública estática o privada, ya que si fuera dinámica, cambiaría constantemente; si ese fuera el caso, los servidores DNS no podrían encontrar la dirección IP del sitio web solicitado, no se actualizarían y no se podría ingresar al sitio requerido.

Como el protocolo DNS es responsable de dirigir a los usuarios al sitio que desean visitar, el impacto que tiene esta falla es severo. Es por eso que estiman que en las próximas No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Este tipo de ataque, en el que se busca engañar al servidor DNS, se ha podido observar anteriormente en redes No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), con técnicas como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, en combinación con ARPspoof. Pero esta falla es llevada fuera de la red local, hacia la red No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Después del famoso caso de Heartbleed y las vulnerabilidades No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, este caso podría representar una seria amenaza a los usuarios de Internet.

Agradecientos: Ignacio Perez, Laboratorios ESET

Saludos!
#8

Si bien estos no son tan comunes, tienen ciertas particularidades que vale la pena destacar.

En general, este tipo de estructura condicional elige uno de varios caminos alternativos de ejecución en un programa, en base a una comparación contra el valor de una variable o expresión. Esto otorga cierta claridad al programador, ya que, cuando el código a ejecutar puede tomar muchos caminos, la utilización de condicionales simples anidados puede volverse tediosa.

En la siguiente imagen se muestra un sencillo programa en C con una estructura condicional múltiple:


Se observa que si la variable i toma el valor 1, se mostrará "i = 2" por pantalla; si el valor es 2, se mostrará "i = 4", y así podría seguir sucesivamente si hubiese más opciones. En el caso de que no se cumpla ninguna de las condiciones, podrían ejecutarse otras acciones. Asimismo, el código mostrado produce el siguiente resultado en ensamblador:


Podemos ver que estas estructuras condicionales no son muy difíciles de identificar en el código. Se observa una serie de comparaciones y saltos condicionales (marcados con color rojo), y luego un salto incondicional (a la sección default, en caso de que fallen todas las condiciones). Es decir que tenemos primero las comparaciones y saltos, y luego las secciones de código correspondientes a cada condición.

Sin embargo, cuando la cantidad de comparaciones a realizar es elevada, el compilador optimiza el código mediante la utilización de jump tables. En estos casos, el código generado no es tan directo, según se observa en la siguiente imagen:


En la esquina superior izquierda hemos resaltado la parte del código en que se verifica si la variable a comparar posee un valor mayor a la cantidad de opciones con que se cuenta. En ese caso, y para evitar realizar todas esas comparaciones innecesariamente, se va directamente al caso default, como se ve en la esquina superior derecha de la imagen.

Sin embargo, si el valor de la variable se encuentra dentro de nuestras opciones, la dirección de salto se construye a partir de una dirección base, sumada a un desplazamiento basado en el número de opción. En este sentido, y para este caso en particular, en la dirección de memoria 0×401088 se encuentra la dirección base. Allí se encuentra un arreglo de direcciones de 4 bytes, donde cada una de ellas apunta a la porción de código de su respectiva alternativa.

Vemos que el uso de jump tables permite que se haga siempre una sola comparación, pero puede ser un poco más difícil de entender al realizar reversing.

Agradecimientos: Matías Porolli, Laboratorios ESET

Saludos a todos!
#9
Python / [Código] Ecuaciones de 2º grado
Mayo 04, 2014, 12:45:37 AM
Código: python
#!/usr/bin/env python
from math import sqrt

def Calculo(X,Y,Z):

    try:
        N1 = (-Y + ((sqrt((Y*Y) - (4*X*Z)))/(2*X)))
        N2 = (-Y - ((sqrt((Y*Y) - (4*X*Z)))/(2*X)))

return "(+) = " + str(N1) + "(-) = " + str(N2)

    except:
        return 'Sin solucion, intenta nuevamente'         

while True:
print "Ecuacion:"
X = input(' X = ')
Y = input(' Y = ')
Z = input(' Z = ')
print Calculo(X,Y,Z)


Luego de años sin practicar, no viene mal retomar las mañas...

Saludos!
#10
Seguridad / [TOP] Glosario de Seguridad
Mayo 03, 2014, 05:05:35 PM
A



Adware

Acrónimo de las palabras advertisement (del inglés, "anuncio") y software. Programa malicioso que se instala en el sistema usualmente sin conocimiento del usuario cuyo fin es la descarga y/o visualización de publicidades no solicitadas, desplegadas por lo general a través de pantallas emergentes.

Antispam

Herramienta que identifica y filtra correo no deseado con el objetivo de evitar que llegue al usuario. De esta forma, se evita la pérdida de productividad que estos correos producen y se minimizan los riesgos en cuanto a las amenazas que por estos circulan (como malware o phishing).

Las técnicas de filtrado van desde detección de palabras comunes del spam hasta listas de correo basura definidas por el usuario o listas mayores ubicadas en servidores remotos.


B



Backdoor

Tipo de troyano que permite el acceso al sistema infectado y su control remoto. El atacante puede entonces eliminar o modificar archivos, ejecutar programas, enviar correos masivamente o instalar herramientas maliciosas.

Banker

Conocido también como troyano bancario, tipo de troyano que tiene como objetivo robar datos privados de las cuentas bancarias de los usuarios. Permite recolectar información confidencial del usuario a través diversos métodos (capturas de pantalla, video o teclas; o redireccionamiento de tráfico web, entre otros) para luego enviarla al atacante por correo electrónico o alojarla en un servidor.

BlackHat SEO

Conocido también como envenenamiento de los motores de búsqueda (SEO Poisoning), se trata de un conjunto de técnicas utilizadas para posicionar intencionalmente a un sitio web malicioso entre los principales resultados arrojados por un buscador, con el objetivo de enlazar al usuario a contenido dañino. La ocurrencia de sucesos de alto interés público, tales como catástrofes naturales o eventos deportivos, suele generar una rápida contaminación en los resultados de las búsquedas.

Bot

Programa informático cuya función es realizar tareas automatizadas a través de Internet. Se trata, por lo general, de funciones simples que requieren de cierta repetición. Los cibercriminales emplean este tipo de software para llevar a cabo acciones maliciosas a través de redes botnet como la distribución de correo basura (spam), descarga de malware u otros ataques desde las computadoras zombis.

Botmaster

Persona que administra una botnet siendo responsable de mantener los equipos zombis online, enviar órdenes y corregir posibles errores.

Botnets

Red de equipos infectados por códigos maliciosos que son controlados por un atacante de modo transparente al usuario, disponiendo de sus recursos para que trabajen de forma conjunta y distribuida. Cada sistema infectado, al que suele llamarse zombi, interpreta y ejecuta las órdenes emitidas. Ofrece a los delincuentes una fuente importante de recursos que pueden trabajar de manera conjunta y distribuida. Mayormente se utilizan para el envío de spam, el alojamiento de material ilegal o la realización ataques de denegación de servicio distribuido.

Bootkit

Tipo de malware que se clasifica dentro de los rootkit. Se aloja en el inicio original del sistema operativo con el fin de obtener acceso total a las funciones de la computadora antes que finalice la carga del mismo. Un ejemplo de esta clase de malware es Stoned, el primer Bootkit capaz de afectar a la versión preliminar de Windows 8.


C



Captcha

Del inglés, acrónimo de "Completely Automated Public Turing test to tell Computers and Humans Apart". Prueba que consiste en un desafío en donde se debe responder a cierta pregunta o realizar una acción con el fin de determinar si el usuario es una máquina o un ser humano.

El más frecuente es una imagen distorsionada en donde la persona debe escribir los caracteres que visualiza correctamente, de modo que, en la teoría, sólo un humano podría hacerlo. Algunos captcha han sido vulnerados demostrando la factibilidad de ser descifrados por una computadora o sistema informático.

Centro de Comando & Control (C&C)

Servidor administrado por un botmaster que permite controlar y administrar los equipos zombis infectados que integran la red botnet. Posibilita el envío remoto de órdenes en forma de comandos a los mismos, ya sea para la descarga de código malicioso, la ejecución de determinados procesos o cualquier otra instrucción.

Certificado digital

Archivo con carácter de documento emitido por una autoridad de certificación que asocia una entidad con una clave pública. Garantiza la confidencialidad de la comunicación llevada a cabo entre la misma y los usuarios. Es utilizado, entre otras cosas, en los sitios web que utilizan el protocolo https.

Ciberacoso / Ciberbullying

Utilización de medios de comunicación informáticos como correo electrónico, sitios web, redes sociales y foros, entre otros, con el fin de acosar y hostigar de forma premeditada a una persona o grupo. Se ha vuelto muy frecuente entre menores que lo utilizan para molestar a sus compañeros de clases.

Cibercrimen

Actividad delictiva organizada que implica el uso de herramientas informáticas y se basa en Internet para su ejecución. El objetivo es obtener beneficios, por lo general financieros.

Delitos tales como el phishing, scam o robo de identidad son considerados cibercrimen, como así también todos los recursos y actores que forman parte de su circuito criminal.

Ciberdelincuente

Persona que comete cibercrimen. Para más información, ver cibercrimen.

Código malicioso

También conocido como malware, es un programa o aplicación diseñada con algún fin dañino. Se consideran malware a distintos tipos de amenazas, cada una con características particulares (troyano, gusano, virus, entre otros).

Comercio electrónico

Conocido también como e-commerce, conjunto de transacciones comerciales efectuadas por medios electrónicos para la compra o venta de productos y/o servicios.

Contraseña

Conjunto de caracteres utilizado para validar la identidad de un usuario en un sistema. Se supone que es conocida únicamente por el usuario al que pertenece.

Cookie

Archivo que se guarda en el disco duro de una computadora al navegar en un sitio web. Almacena información tal como nombre de usuario, contraseña o preferencias del usuario, de modo que los datos no deban ser introducidos cada vez que se cambia de página. Si son obtenidas por un atacante pueden ser utilizadas para ingresar a la sesión del usuario en un sitio web.

Crack

Parche que modifica una aplicación para activar su licenciamiento de manera gratuita y eliminar las restricciones de su uso, no respetando lo indicado en su licencia de uso.

Crimepack

Kit de infección y ataque perteneciente a la categoría de crimeware, malware que tiene como objetivo perpetrar robos financieros o económicos. Los ciberdelincuentes crean y venden este tipo de kits a otras personas, quienes instalan estas herramientas en un servidor web y de esta forma pueden realizar delitos informáticos de forma sencilla.

Crimeware

Malware diseñado y desarrollado para perpetrar un delito del tipo económico o financiero. El término fue acuñado por el Secretario General del Anti-Phishing Working Group, Peter Cassidy, para diferenciar este tipo de amenaza de otras clases de software malicioso.

Criptografía

Campo de estudio que, aplicado a la informática, provee técnicas para la protección de los datos de forma tal de evitar que estos sean legibles en caso de ser interceptados, resguardando su confidencialidad.

Cross-Site scripting (XSS)

Vulnerabilidad que permite el ingreso de código html en formularios web, alterando su apariencia original. También es posible el ingreso de scripts en campos que serán grabados en la base de datos y, posteriormente, ejecutados en el navegador al visitar el sitio web vulnerado.


D



DDoS

Ataque distribuido de denegación de servicio, por sus siglas en inglés "Distributed Denial of Service". Ampliación del ataque DoS que se lleva a cabo generando un gran flujo de información desde varios puntos de conexión, por lo general a través de una botnet. El ataque se realiza a través del envío de determinados paquetes de datos al servidor, de forma tal de saturar su capacidad de trabajo y forzar que el servicio deje de funcionar.

Delito informático

Crimen que utiliza medios electrónicos o comunicaciones basadas en Internet u otras tecnologías para llevarse a cabo. Los delitos informáticos son uno de los componentes que conforman el cibercrimen.

Downloader

Troyano cuya función es la descarga e instalación de archivos dañinos o más variantes de malware en el sistema infectado de la víctima.

Drive-by-download

Técnica de infección que añade scripts dañinos al código original de un sitio web. Los scripts se ejecutan luego que el usuario visita una página comprometida y ejecuta exploits en el equipo víctima para instalar códigos maliciosos. De esta forma, se infecta al usuario mientras navega por un sitio web.


F



Firewall (cortafuegos)

Dispositivo de hardware, software o ambos diseñado para controlar el tráfico de una red en base a políticas predefinidas.


G



Greyware

Aplicación potencialmente no deseada o PUA, por sus siglas en inglés de "Potentially Unwanted Program o Potentially Unsafe Application". A pesar de no ser consideradas maliciosas, son aplicaciones que pueden afectar sistemas, redes y la confidencialidad de la información. No es necesariamente dañino pero se caracteriza por realizar acciones indeseables o peligrosas.

Grooming

Se trata de la persuasión de un adulto hacia un niño con la finalidad de obtener una conexión emocional y generar un ambiente de confianza para conseguir satisfacción sexual a través de imágenes eróticas o pornográficas del menor. Muchas veces los adultos se hacen pasar por niños de su edad e intentan entablar una relación para, luego, buscar realizar encuentros personales -en algunos casos- con fines sexuales.

Gusanos

Programa malicioso que cuenta con la capacidad de auto-reproducción, al igual que los virus, pero con la diferencia que no necesita de un archivo anfitrión -archivo que aloja una porción de código malicioso- para la infección. Generalmente modifica el registro del sistema para ser cargado cada vez que el mismo es iniciado. Suelen propagarse a través de dispositivos USB o vulnerabilidades en los sistemas. El surgimiento de este tipo de amenaza puede ubicarse a finales de los años '80, más precisamente en el año 1988, cuando apareció el gusano Morris, considerado el primero de su especie.


H



Hacker

Persona que disfruta de un conocimiento profundo del funcionamiento interno de un sistema. No posee intenciones maliciosas. Sus acciones están guiadas por la voluntad de aprendizaje y experimentación.

Hacking

Actividad que involucra el estudio de la seguridad y las vulnerabilidades de los sistemas informáticos. El hacking puede tener como objetivo fortalecer técnicas de seguridad, corregir agujeros informáticos o aprovechar las fallas de los sistemas para introducirse de manera no legítima.

Hacking ético

Actividad que consiste en poner a prueba la seguridad de los sistemas de los clientes que solicitan el servicio. La intromisión a los equipos se realiza tal como lo harían atacantes pero sin ánimos maliciosos sobre el sistema víctima. Por lo general, al finalizar el proceso se hace entrega de un informe sobre las vulnerabilidades encontradas y los datos confidenciales que han podido ser capturados.

Hacktivismo

Acrónimo de "hacker" y "activismo". Es la utilización de técnicas de ataques informáticos por parte de personas o grupos con intenciones ideológicas. Por ejemplo, suelen realizarse modificaciones paródicas de contenido web o ataques de denegación de servicio (DoS) con el fin de realizar protestas en referencia a temas sensibles como la política, los derechos humanos o la libertad de expresión, entre otros.

Heurística

Conjunto de metodologías o técnicas utilizadas por los productos antivirus para el análisis proactivo de amenazas informáticas. La importancia de la heurística radica en el hecho de ser la única defensa automática posible frente a la aparición de nuevos códigos maliciosos de los que no se posea firmas. 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.

Hoax

En español, "bulo". Correo electrónico o mensaje en redes sociales con contenido falso o engañoso que se distribuye en cadena debido a su temática impactante que parece provenir de una fuente fiable o porque el mismo mensaje pide ser reenviado.

Es muy común que se anuncien potentes amenazas informáticas, la noticia del cierre de algún servicio web o se solicite ayuda para personas enfermas. El objetivo de este tipo de engaños suele ser recolectar direcciones para el envío de spam, generar incertidumbre entre los receptores o simplemente diversión.


I



IDS

Del inglés, "Intrusion Detection System" o "Sistema de Detección de Intrusos". Aplicación que analiza el contenido,  comportamiento y tipo de tráfico de una red. Su objetivo es detectar e informar sobre accesos no autorizados y actividades como el escaneo de puertos.

Iframe

Elemento html que puede ser utilizado en el código de un sitio web para mostrar el contenido de otro. Es implementado por los atacantes para propagar malware por medio de la inserción en una web de un Iframe de un sitio, que se mostrará muy pequeño para no despertar sospecha y desde el cual se desencadena la descarga de software malicioso.

Ingeniería Social

Conjunto de técnicas utilizadas para engañar a un usuario a través de una acción o conducta social. Consiste en la manipulación psicológica y persuasión para que voluntariamente la víctima brinde información o realice algún acto que ponga a su propio sistema en riesgo. Suele utilizarse este método para obtener contraseñas, números de tarjetas de crédito o pin, entre otros.

IPS

Del inglés, "Intrusion Prevention System" o "Sistema de Prevención de Intrusos". Dispositivo que ejerce el control de acceso en una red informática para proteger a los sistemas computacionales de ataques y abusos. Si bien es similar al IDS (del inglés, "Intrusion Detection System" o "Sistema de Detección de Intrusos"), la diferencia radica en que el IPS no sólo informa sobre la detección de una intrusión sino que además establece políticas de prevención y protección que son ejecutadas inmediatamente luego de dicha detección.


K



Keylogger

En español, "registrador de teclas". Tipo de software que registra las teclas pulsadas en un sistema para almacenarlas en un archivo o enviarlas a través de Internet. Suele guardar contraseñas, números de tarjeta de crédito u otros datos sensibles. En la actualidad se pueden encontrar versiones más nuevas de esta herramienta fraudulenta capaces de realizar capturas de pantalla cuando se registra un clic, haciendo que estrategias de seguridad como el uso del teclado virtual sean obsoletas.


M



Malware

Acrónimo de las palabras "malicious" (del inglés, "malicioso") y "software". Para más información, ver código malicioso.


P



Parche de seguridad

Actualización que se aplica a un software para resolver vulnerabilidades. Por lo general, no modifica la funcionalidad sino que corrige problemas de seguridad.

Payload

Efectos secundarios que pueden poseer ciertas amenazas o códigos maliciosos. Por ejemplo, cambios en la configuración del sistema, eliminación de archivos y sobre-escritura del disco, entre otros.

Peer to peer (P2P)

Conocida también como P2P, por sus siglas en inglés. Traducido al español, "red de pares" o "red entre pares". Es una red descentralizada en la que cada nodo (equipo) funciona como cliente y servidor simultáneamente, conectándose de manera directa unos con otros. Este tipo de redes son utilizadas para el intercambio de información y archivos entre los equipos interconectados. Algunas aplicaciones P2P populares son Ares, eMule y Kazaa.

Pharming

Tipo de ataque que permite redireccionar un nombre de dominio a una dirección IP distinta de la original. El objetivo de este ataque consiste en dirigir al usuario a una página web falsa a pesar de que éste ingrese la dirección url correcta. El ataque suele realizarse sobre servidores DNS (en inglés, "Domain Name System") globales o en un archivo ubicado en el equipo víctima (pharming local).

Phishing

Ataque que se comete mediante el uso de Ingeniería Social con el objetivo de adquirir fraudulentamente información personal y/o confidencial de la víctima, como contraseñas y/o detalles de la tarjeta de crédito. Para efectuar el engaño el estafador, Conocido como phisher, se hace pasar por una persona o empresa de confianza utilizando una aparente comunicación oficial electrónica como correos electrónicos, sistemas de mensajería instantánea o incluso llamadas telefónicas.

Los casos de phishing más comunes toman como objetivo de ataque a clientes de grandes entidades financieras y suelen contener algún tipo de amenaza de interrupción del servicio u otras consecuencias indeseables, si las instrucciones que indican no se realizan.

Proxy

Servicio de una red que permite configurar otro servicio a través de una puerta de enlace remota, siendo el representante de las comunicaciones de toda la red con el exterior. Es frecuentemente utilizado para el control de la navegación web, siendo un único equipo en la red quién hace las peticiones a Internet y las distribuye entre las computadoras que hayan solicitado el servicio. Permite mayor rendimiento en la red al centralizar las comunicaciones externas desde un único sistema.


R



Ransomware

Código malicioso que cifra la información del equipo infectado y solicita dinero para devolver al usuario el poder sobre los mismos. La contraseña para el descifrado es entregada luego de realizado el pago, según las instrucciones dadas por atacante.

En la mayoría de los casos, el ataque afecta sólo a ciertos archivos, siendo los más comúnmente perjudicados los de ofimática como procesadores de texto, hojas de cálculo o diapositivas, las imágenes y los correos electrónicos.

El nacimiento del ransomware data del año 1989, cuando vía correo postal fueron distribuidos a empresas farmacéuticas diskettes que supuestamente contenían información respecto al HIV. Al ejecutar los archivos que contenían, la información del ordenador era cifrada y se solicitaba la entrega de dinero al atacante para recuperarla.

Rogue

Programa que simula ser una solución antivirus o de seguridad, generalmente gratuita, pero que en realidad es un programa dañino. Este tipo de ataque comienza con la muestra de ventanas de advertencia, llamativas y exageradas, acerca de la existencia de software malicioso en el sistema. De esta manera se instiga al usuario a la descarga de una falsa aplicación de seguridad (con la finalidad de instalar malware en la computadora) o a su compra (obteniendo el correspondiente rédito económico).

Rootkit

Herramienta diseñada para ocultar el acceso y control de un atacante a un sistema informático. Encubre archivos, procesos y puertos abiertos que habilitan el uso arbitrario del equipo, vulnerando de manera directa las funciones del sistema operativo. Está programada para intentar evadir cualquier aplicación de seguridad, haciéndose imperceptible al analizar los procesos en ejecución.

Inicialmente los rootkit aparecieron en el sistema operativo Unix y eran una colección de una o más herramientas que le permitían al atacante conseguir y mantener el acceso al usuario del equipo con más privilegios de administración (en los sistemas Unix, este usuario se llama *root* y de ahí su nombre). En los sistemas basados en Windows, los rootkits se han asociado en general con herramientas usadas para ocultar programas o procesos al usuario. Una vez que se instala, el rootkit utiliza funciones del sistema operativo para ocultarse, de manera tal de no ser detectado y es usado en general para ocultar otros programas dañinos.


S



Scam

Estafa realizada a través de medios tecnológicos como el correo electrónico o sitios web falsos. Se trata de un delito que consistente en provocar un perjuicio patrimonial a alguien mediante el engaño y con ánimo de lucro, utilizando para ello la tecnología. Las técnicas utilizadas principalmente para engañar al usuario son el anuncio de una ganancia extraordinaria o las peticiones de ayuda caritativa. En el primer caso aparecen, por ejemplo, los anuncios de empleo con rentabilidades inesperadas o el premio de una lotería o juegos de azar por el cual se le solicita al usuario que haga una entrega de una pequeña suma de dinero para verificar datos o cubrir los costos de envío y administración del dinero obtenido. El segundo caso, y el más común, consiste en la solicitud de una donación al usuario para una obra caritativa. Los contenidos más generales hacen referencia a países de extrema pobreza (generalmente de África), a personas enfermas o a catástrofes internacionales. El correo invita a la víctima a hacer un depósito o envío de dinero a fin de colaborar.

Script

Porción de código que se inserta en un sitio web para ejecutar instrucciones ante la ocurrencia de un evento, como hacer clic en un botón o durante la carga de la página web. Se dice también de un archivo formado por un conjunto de instrucciones que son ejecutadas línea por línea.

Smishing

Acrónimo en inglés de las palabras "SMS" ("Short Message Service") y "Phishing". Variante de este último en la cual se contacta a la víctima a través de falsos mensajes de texto de un ente de confianza. Se informa acerca de una supuesta suscripción no gratuita que es posible cancelar ingresando a una dirección web que finalmente conducirá a la descarga de código malicioso.

Spam

Correo no deseado o correo basura enviado de forma masiva por un remitente desconocido, ya sea en formato de texto o con contenido HTML. Es utilizado, por lo general, para envío de publicidad, aunque también se lo emplea para la propagación de códigos maliciosos. Sirve también como puerta para cometer scam o phishing. Representa un riesgo para la seguridad y tiene efectos secundarios, como el impacto negativo en la productividad del personal por la lectura de los mismos y el aumento del consumo de recursos (ancho de banda, procesamiento, etc.). A su vez, puede manifestarse en comentarios de foros, blogs o en mensajes de texto. Inicialmente, el spam fue utilizado para enviar mensajes en formato de texto. Sin embargo, con la creación de filtros antispam se comenzaron a identificar este tipo de mensajes, y posteriormente, el spam evolucionó a correos con imágenes o contenido HTML.

Spyware

Aplicación espía que recopila información sobre los hábitos de navegación, comportamiento en la web u otras cuestiones personales de utilización del sistema del usuario sin su consentimiento. Posteriormente, los datos son enviados al atacante.

No se trata de un código malicioso que dañe al ordenador, sino que afecta el rendimiento de del equipo y la privacidad de los usuarios. Sin embargo, en algunos casos se producen pequeñas alteraciones en la configuración del sistema, especialmente en las configuraciones de Internet o en la página de inicio.

SQL Injection

Técnica de inyección de código SQL malicioso. Aprovecha vulnerabilidades en la validación de las entradas de datos, con el fin de realizar consultas o modificaciones arbitrarias a una base de datos.


T



Troyanos

Programa malicioso que simula ser una aplicación indefensa. Se instala y ejecuta como un software legítimo pero realiza tareas maliciosas sin conocimiento del usuario. A diferencia de los gusanos y virus, no tiene capacidad de replicarse a sí mismo.

Los troyanos pueden ser utilizados para muchos propósitos, entre los que se encuentran el acceso remoto al equipo que permite que el atacante pueda conectarse remotamente al mismo, el registro de todo lo escrito y el robo de contraseñas e información del sistema. El nombre de esta amenaza proviene de la leyenda del caballo de Troya.


V



Virus

Programa malicioso creado para producir algún daño en el ordenador, desde mensajes molestos en pantalla y la modificación o eliminación de archivos hasta la denegación completa de acceso al sistema. Tiene dos características particulares: pretende actuar de forma transparente al usuario y tiene la capacidad de reproducirse a sí mismo.

Requiere de un anfitrión -archivo que aloja una porción de código malicioso- para alojarse, tal como un archivo ejecutable, el sector de arranque o la memoria de la computadora. Al ser ejecutado, se produce el daño para el que fue concebido y luego se propaga para continuar la infección de otros archivos.

Vishing

Acrónimo de las palabras "VOIP" ("Voz Sobre IP") y "phishing". Variante de este último en la cual se contacta a la víctima mediante comunicaciones VOIP. Las llamadas se realizan a través del marcado automático y aleatorio de números telefónicos hasta localizar un módem activo (war dialing). En general, se falsifica un mensaje de una empresa reconocida y se solicita el ingreso de información confidencial por medio del teléfono.

Vulnerabilidades

Falla en el desarrollo de una aplicación que permite la realización de alguna acción indeseada o incorrecta. Es una característica de un sistema susceptible o expuesto a un ataque. Pone en riesgo la información de los usuarios.


Z



Zombi

Computadora infectada y controlada de manera remota por un atacante. Una red formada por zombis se conoce como botnet
#11

Gigantes como IBM, Intel, Microsoft, Facebook y Google se han comprometido a invertir millones en mejoras para open source. El proyecto denominado Core Infrastructure Initiative estará adminsitrado por Linux Foundation y buscará financiar proyectos de código abierto para ayudar a mejorar sus niveles de seguridad.

El software de código abierto u open source es utilizado por cientos de miles de servidores y productos para asegurar (a través del cifrado) las comunicaciones. Pero Heartbleed expuso una problemática: el primordial rol de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en la seguridad de Internet no es proporcional a los recursos financieros destinados a mantenerlo.

El presidente de la compañía, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en el que afirma que OpenSSL Software Foundation recibe normalmente alrededor de 2 mil dólares por año en donaciones. Dicho monto no sería suficiente para mantener los niveles de complejidad del servicio.

Tomando esto en consideración, queda abierta posibilidad de que ocurran incidentes como Heartbleed, la falla de seguridad que expuso credenciales y claves de cifrado de millones de sitios en todo el mundo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, la organización dedicada a fomentar el crecimiento de Linux, anunció que, en los próximos tres años, se aportarán al menos 3.9 millones de dólares a diversos proyectos de open source insuficientemente financiados, con OpenSSL a la cabeza. Esto será posible ya que Amazon Web Services, Cisco, Dell, Facebook, Fujitsu, Google, IBM, Intel, Microsoft, NetApp, Qualcomm, Rackspace y VMware se han comprometido a donar al menos cien mil dólares por año por al menos tres años a la Core Infrastructure Initiative. Así lo indicó No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Como Heartbleed inspiró la campaña, OpenSSL será "el primer proyecto que se tomará en consideración para destinar los fondos", anunció la organización.

Las donaciones al proyecto están abiertas para cualquiera que desee No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Fuente: Laboratorios ESET
#12
Seguridad / Burlando la autenticación en Telegram
Mayo 01, 2014, 07:52:30 PM

En agosto de 2013 fue lanzado Telegram como alternativa segura para WhatsApp. Las novedades que traía incluían su sencillez y su alto nivel de seguridad en comparación con sus competidores, pero tal vez la más llamativa era la posibilidad de autodestruir mensajes.

Por otra parte, los protocolos de comunicación creados por sus desarrolladores son gratuitos, y la aplicación que interactúa con sus servidores está abierta, al igual que el código del cliente oficial.

El Instituto Nacional de Tecnología de la Comunicación (INTECO) de España, ha realizado una No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que encontró fallas en su autenticación.

¿Cómo funciona el protocolo para su posterior explotación?

La autorización y autenticación de Telegram se compone de 3 intercambios de mensajes, por medio de los cuales una clave compartida se negocia usando el protocolo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Generalmente, el primer centro de datos, con el que el cliente establece contacto, indica las direcciones IP y el número de puerto de otros centros de datos. El proceso se repite con los nuevos centros de datos, estableciendo una clave compartida diferente con cada uno de ellos.

Para completar el circuito, uno de los centros de datos pide el número de teléfono al cliente para que la clave esté asociada. El cliente lo introduce, y Telegram le envía un código a través de SMS. El cliente entonces tiene que enviar nuevamente el código con la finalidad de completar la activación del servicio en el dispositivo.

Este proceso se muestra a continuación de manera ilustrativa:


Con este protocolo se autentica el cliente; el servidor lo hace mediante la inclusión de fingerprint (una huella particular implementada) en su clave pública.

Los puntos principales del proceso son:


  • El cliente comprueba si el fingerprint coincide con una de las claves preinstaladas por defecto en el software
  • En caso de ser afirmativo, usará su clave pública asociada para cifrar el segundo mensaje (req_DH_params)
  • Este mensaje cifrado tiene un número aleatorio que usa para derivar una clave temporal AES (algoritmo de cifrado), la cual cifra los mensajes restantes del protocolo
  • Teniendo en cuenta que este número aleatorio se cifra con la clave pública de Telegram, sólo la aplicación será capaz de descifrarlo, actuando así como un servidor de autenticación implícita

Evadiendo la autenticación

Para pasar por alto una autenticación de este tipo, teniendo en cuenta que utiliza métodos de intercambio de claves seguros como Diffie-Hellman, los investigadores de INTECO remarcan que Telegram promueve el desarrollo de clientes de terceros, lo cual cambia el escenario.

Su API es pública, permitiendo el acceso a sus servidores a cualquier persona que desarrolle uno siguiendo correctamente sus protocolos (que también son públicos). Si un atacante desarrolla alguno y obtiene una víctima para instalarlo, usando algunas modificaciones mínimas, podría eludir la autenticación previa.

Todo se basa en la modificación de la clave pública preinstalada en la aplicación de la víctima, junto con la dirección IP del primer centro de datos, para conectar con la aplicación de mensajería (es posible realizar ataques con efectos similares en un cliente sin modificar). Al establecer una clave pública y una dirección IP controlada por un atacante, se hace posible un ataque No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Esto implica también que el fingerprint enviado por el servidor al cliente debe ser modificado.

En la siguiente imagen se muestra cómo el valor es fijado por el atacante:


Posible impacto

Una explotación exitosa del ataque le daría control total al atacante de la cuenta de Telegram de la víctima.

Más precisamente, permitiría:


  • Acceso transparente a toda la información intercambiada, excepto a chats secretos que no han sido interceptados (esto incluye el historial de mensajes y los que no han sido eliminados)
  • Hacerse pasar por la víctima, mediante la modificación de los mensajes recibidos y enviados en tiempo real
  • Enviar mensajes sin el conocimiento de la víctima, a excepción de los chats secretos
  • Bloquear mensajes
  • Abrir nuevos chats
  • Aceptar y abrir nuevas conversaciones secretas
  • Obtener la lista de contactos de Telegram de la víctima, junto con sus números de teléfono
  • Bloquear temporalmente el acceso desde otros dispositivos en los que la víctima ha instalado Telegram, al ejecutar la opción "Cerrar todas las demás sesiones"

En muchos casos, las acciones realizadas por el atacante pasan totalmente inadvertidas por la víctima ya que el comportamiento de la aplicación es exactamente el mismo que el de una legítima. Este no sería el caso si el atacante abre o cierra nuevos chats, ya que dicho comportamiento aumentaría sospechas.

Adicionalmente, las claves de autorización tienen una vida útil larga (a menos que el usuario las revoque), por lo que la persistencia de este ataque podría ser alta.

A continuación se muestra una captura de pantalla de cómo se ve una lista de contactos secuestrada:


Debemos destacar que la prueba de concepto fue realizada en un ambiente controlado por los investigadores, basándose en una aplicación Telegram para Linux. Está compuesto por el mensajero con su clave pública y dirección IP de servidor modificado; además, un ataque MITM actúa como servidor para los ojos de la víctima y como cliente para Telegram.

En esta prueba se llevó a cabo la autenticación completa, que permite a la víctima recibir el SMS y devuelve el código de activación. Por último, el servidor informa la autenticación exitosa.

Con el fin de evitar el uso malicioso de esta aplicación para pruebas de concepto, el programa se detiene al momento en que fue realizada la autenticación exitosa. El PoC (Proof of Concept, o prueba de concepto) se encuentra disponible en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, mientras que el análisis completo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Saludos a todos!

Agradecimientos: Ignacio Pérez, Laboratorios ESET
#13

Según programadores del Hackyard Security Group, el popular servicio de mensajería y videollamadas Skype guarda información de las cuentas de los usuarios en el disco duro sin cifrar.

Nombre completo, fecha de nacimiento, números de teléfono, país, ciudad e incluso conversaciones por chat se almacenan en diversas tablas en texto plano en el disco duro del sistema, dentro de una ubicación conocida y sin contraseña de acceso, según explicó No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Citar"Hace unos días, estaba trabajando en la laptop de DrOptix y chateando en Skype. Era una conversación casual con algunos amigos, pero lo que pasó después me sorprendió. Después de que me fui, él pensó que seguramente me había olvidado de borrar algo, así que ejecutó el comando find and grep. El resultado fue interesante: encontró la carpeta que Skype había creado para mi cuenta en su directorio local, e investigando un poco más, encontró una base de datos. Navegándola, vio lo que yo había hablado con mis amigos en texto plano. Al día siguiente me lo dijo e hicimos una evaluación".

Es importante remarcar que todas las llamadas, mensajes instantáneos y trasferencias de archivos y videos entre usuarios de Skype sí están cifradas, pero este no es el caso con la base de datos local de la plataforma, que se crea en el sistema luego de cada inicio de sesión.

Según la publicación, el directorio está ubicado en ~/.Skype y contiene distintas carpetas, algunas nombradas según la cuenta que hizo log in en la aplicación. Entre los archivos disponibles, uno denominado main.db muestra muchos datos personales del dueño de la cuenta, como contactos, mensajes, usuarios a los que llamó y chats.

Por ejemplo, la tabla denominada CallMembers muestra información en texto plano acerca de las llamadas realizadas.

Citar"Podemos ver que hablé con Robert el lunes 10 de febrero a las 09:17:35 GMT. También podemos ver una tabla llamada Contacts que almacena la lista de contactos de la cuenta. Junto con el nombre completo y el nombre de usuario de Skype, tenemos otras columnas interesantes, como fecha de cumpleaños, país, ciudad y número de celular"
- Detalló Gaftoneanu.

De igual forma, la tabla Messages contiene cada mensaje que el usuario envía y recibe. La base de datos también contiene tablas sobre videollamadas.

Solución temporaria

Como Skype crea las mismas carpetas en cada login, se debería borrar el contenido de main.db cada vez que se cierra sesión, según recomendó el programador.

Citar"Además, es una buena idea tener el hardware encriptado, ya que la base de datos puede ser sustraída de la computadora usando un LiveCD"
- Conluyó

Saludos!

Fuente: Laboratorios ESET
#14

Usualmente, los atacantes buscan sitios vulnerables para alojar sitios de phishing y robar información de usuarios descuidados. Esta tendencia podría verse facilitada por el uso de servicios de alojamiento con períodos gratuitos de prueba de empresas reconocidas, y esto fue lo que ocurrió con Microsoft Azure.

Entre los sitios afectados por estas campañas se encuentran Apple, PayPal, American Express y Visa, lo cual nos da una idea de la amplitud de víctimas potenciales que podrían verse afectadas por este tipo de campañas.

De acuerdo a un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, una empresa con base en Inglaterra y dedicada a proveer servicios de Internet, se han detectado casos donde los atacantes aprovechan el período de prueba por 30 días del servicio No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para alojar sitios de phishing y robar información sensible. Azure es la plataforma de almacenamiento en la nube de Microsoft.

Sabemos que las campañas de phishing se suelen enfocar en afectar servicios populares o aprovechar eventos masivos, como el Mundial de Brasil 2014 para robar principalmente datos bancarios. La gran mayoría de estos sitios falsos se alojan en servidores con bajas medidas de seguridad y por lo tanto los atacantes pueden ingresar y subir cualquier tipo de información.

Como en cualquier caso de phishing, la estética del sitio falso es idéntica a la del sitio original y además la dirección del sitio web está relacionada con el servicio afectado. Pero en este caso, al final de la dirección están las cadenas de caracteres No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, asociadas con el servicio de Microsoft.

A continuación compartimos una captura tomada del informe publicado por Netcraft:


Una de las características que aprovechan los atacantes de este servicio, es el hecho de que los sitios cuentan con un certificado SSL. Por lo tanto, si quienes ingresan no verifican en qué consiste, se pueden quedar con la falsa sensación de que el sitio está realmente protegido y se trata de algo real, spolo porque cuenta con un certificado.

De acuerdo al informe, además de utilizar los servicios de alojamiento de páginas web para tener publicado el sitio, los atacantes también utilizan otros recursos asociados a esta nube, como el correo electrónico, para completar el robo de información.

Conocer el funcionamiento de estas campañas de phishing nos demuestra que los atacantes están en la búsqueda constante de nuevas alternativas para robar información valiosa y obtener rédito económico.

Saludos!

Agradecimientos: Camilo Gutiérrez Amaya, Laboratorios ESET
#15

Al igual que el phishing, el vishing tiene como objetivo el robo de información sensible. A diferencia del primero, utiliza la metodología VoIP (voz sobre IP) para llevar a cabo su tarea. En este caso, se ha descubierto una campaña que afectaba a entidades bancarias de Estados Unidos, robando una gran cantidad de credenciales bancarias por día.

Investigadores de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta han detectado una campaña de vishing que afectaba usuarios de una entidad financiera de Estados Unidos. Se estima que los cibercriminales robaban información de alrededor de 250 tarjetas bancarias por día. Un análisis más riguroso comprobó que uno de los teléfonos involucrados estaba vinculado con casos de vishing desde Octubre de 2013.

El vishing consiste en el robo de credenciales bancarias utilizando VoIP. En un caso típico, un cibercriminal utilizará llamadas telefónicas o mensajes SMS para hacerse pasar por una entidad bancaria u otra institución importante y llevar a cabo ingeniería social para obtener la información sensible. Luego, esa información podrá ser vendida o utilizada para llevar a cabo acciones fraudulentas.

En este caso puntual, la operación se llevaba a cabo gracias a gateways SMS, encargados de enviar SMS a las víctimas. El mensaje supuestamente los alertaba de la necesidad de reactivación de su tarjeta de crédito, acción que debía llevarse a cabo llamando a un número telefónico. Al efectuar la llamada, los usuarios bancarios ingresarán los datos en un IVR (sistema de respuesta de voz interactiva). Así, los cibercriminales detrás de la campaña tenían en su poder la información robada para hacer con ella lo que desearan.

Para llevar a cabo este tipo de ataques, el atacante debe contar con algún mecanismo para enviar spam, y dirigirlo hacia el Gateway SMS para que lo envíe a los teléfonos de las víctimas. Por otro lado, la víctima que caiga en la trampa llamará hacia un servidor VoIP, que a su vez interactuará con un servidor con software IVR.

Los casos de vishing son costosos para las entidades bancarias por muchos aspectos. Mientras que pueden desembocar en pérdidas monetarias considerables también presentan otras consecuencias no tan tangibles, como afectar el renombre de la entidad financiera o colapsar los servicios de atención al cliente. Por otro lado, las medidas de protección se deben implementar mayoritariamente en las prestadoras de telefonía. De todos modos, el usuario se encuentra provisto de unas de las herramientas más importantes para estar protegido: su criterio. Si la propuesta parece dudosa, es necesario manejarse con cuidado y en todo caso contactarse directamente con el número de atención telefónica oficial de cada entidad.

Saludos!

Fuente: Laboratorios ESET
#16

Al hablar de Tails (siglas de The Amnestic Incognito Live System) resuenan dos palabras: amnesia e incógnito. Basado en Debian, este sistema operativo se encuentra preparado para proveer al usuario una experiencia anónima, que prácticamente no dejará rastros visibles. De acuerdo a Wired, tanto Edward Snowden como Glenn Greenwald lo utilizaron para llevar a cabo sus tan conocidos intercambios de información acerca de la NSA.

Radiografía de Tails

Su funcionamiento es simple: mediante un Live CD o un dispositivo USB puede ejecutarse en cualquier computadora y utilizarse como cualquier otro sistema operativo, sin llevar a cabo una instalación. Al reiniciar el equipo, todo volverá a la normalidad.

A continuación, enumeramos algunas de sus características principales:


  • Todas las conexiones a internet están configuradas para llevarse a cabo utilizando Tor (un servicio que permite conectarse a Internet de forma prácticamente anónima). Diseñado en principio por el U.S. Naval Research Laboratory, este proyecto ha tomado bastante repercusión en la actualidad. De aquí viene la palabra incógnito presente en Tails.
  • Bloqueo de conexiones automáticas por aplicaciones. Si una aplicación intenta conectarse de forma automática, esa conexión será bloqueada por seguridad.
  • Utiliza únicamente la memoria RAM de la computadora anfitriona. De esta forma, hace imposible que mediante un análisis forense del disco rígido de la computadora se pueda llegar a los datos manipulados. De aquí la palabra amnesia.
  • Permite eliminar archivos de forma segura. Utilizando Nautilus Wipe, verifica que los datos eliminados sean quitados de memoria.
  • Las conversaciones de mensajería instantánea se llevan a cabo de forma cifrada. Para lograr esto, se utiliza OTR, un protocolo que lo hace posible.
  • Prioriza la comunicación HTTPS. Para lograrlo utiliza HTTPS Everywhere, un plugin para el navegador Firefox.
  • Demás herramientas criptográficas, como por ejemplo cifrado de dispositivos USB con LUKS (el estándar de Linux para llevar a cabo dicha tarea) o de correos y documentos utiliando OpenPGP.

Actualmente Tails se encuentra en la versión 0.23 de forma estable, pero la 1.0 ya se encuentra en estado de release candidate y está en etapa de pruebas.

Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos!
#17


Adobe lanzó ayer un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para Adobe Flash, que imposibilita la ejecución del zero-day en Internet Explorer. Fue publicado pocas horas después de que el gobierno de Estados Unidos recomendara a los usuarios de Internet Explorer que cambiaran de navegador, según el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta del United States Computer Emergency Readiness Team (US CERT).

La actualización está disponible para Adobe Flash Player 13.0.0.182 y versiones previas de Windows; Flash Player 13.0.0.201 y versiones previas para Macintosh; y Adobe Flash Player 11.2.202.350 y versiones anteriores para Linux.

Desde el pasado sábado 26 de abril, cuando Microsoft confirmó la existencia de la vulnerabilidad No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en Internet Explorer (Versiones 6 a 11), de seguro estuvo en la mente de varios usuarios una pregunta: ¿recibirán ayuda de Microsoft aquellos que aun utilizan Windows XP?

La respuesta es parcialmente negativa: tras el cierre del soporte técnico para este sitema operativo, quedó claro que no recibirá actualizaciones de seguridad. Sin embargo, sus usuarios pueden mitigar esta vulnerabilidad simplemente utilizando cualquier navegador que no sea Internet Explorerpor ejemplo, Mozilla Firefox o Google Chrome).

La falla básicamente dependía de tres factores:

1) La víctima tenía que estar utilizando Internet Explorer (la mayoría de las campañas activas hasta ayer estaban dirigidas a las versiones más recientes, 10 y 11)

2) Tener el plugin de Adobe Flash

3) El factor humano, ya que el atacante necesitaría hacer uso de Ingeniería Social.

Un atacante podría desencadenar la explotación del ataque a través de una página web maliciosa, a la que la víctima debe acceder con una de las versiones del navegador afectadas. La explotación exitosa de esta vulnerabilidad permitía al atacante ejecutar código arbitrario de forma remota en el navegador, con el fin de obtener los mismos permisos de usuario que la víctima.

Fuente: Laboratorios ESET
#18
Seguridad / Cómo visualizar los datos de sdhash
Abril 02, 2014, 09:39:33 PM

Hacer un análisis de fuzzy hashing para encontrar similitudes entre muestras de códigos maliciosos puede arrojar una gran cantidad de números que evidencian las relaciones entre los archivos. Una forma de visualizar estos datos para obtener información valiosa es a través del uso de grafos.

Vamos a detallar un poco en este post en qué consiste el análisis de grafos, a presentar Gephi una interesante herramienta para este tipo de análisis y el tipo de resultados que podríamos obtener.

La técnica

Los grafos son estructuras que constan de nodos y aristas que los unen. Con esta forma de representar los datos se pueden modelar sistemas relacionados entre si. Dependiendo de las características de las aristas los grafos pueden ser orientados, es decir que las relaciones entre un par de nodos es única.

A partir de un grafo se puede determinar las similitudes que hay entre grupos de nodos, analizando los valores de adyacencias para encontrar posibles agrupamientos. Este tipo de análisis es el que utilizaremos para el caso de encontrar semejanzas entre muestras de códigos maliciosos.

A diferencia de ssdeep,  resulta dar resultados mucho mejores al momento de comparar muestras de malware, al no hacer un análisis secuencial del  código sino un análisis estadístico de mismo.

La herramienta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es una herramienta libre, que permite generar y analizar el comportamiento de grafos, además de otros análisis de redes y sistemas complejos.

Para generar un nuevo grafo, simplemente debemos identificar los nodos que lo componen y luego las diferentes relaciones entre los mismos.


Una vez se tienen cargados todos los datos, tenemos todo listo para que se genere nuestro grafo, y poder empezar a realizar el análisis.


El primer resultado que obtenemos es bastante confuso. Por lo que debemos empezar a jugar con las opciones de distribución y las herramientas de clustering para encontrar las relaciones que nos puedan ser útiles en el análisis.

Los resultados

Los archivos analizados corresponden a un total de 120 archivos diferentes, pero todos relacionados con la misma muestra, una variante de Win32/LockScreen que fue propagada utilizando un falso video en formato avi.

Si elegimos sdhash para comparar muestras de malware, obtendremos un listado de números con los porcentajes de similitud entre archivos. Cada archivo será un nodo en el grafo y el porcentaje de similitud la arista. De esta forma podemos obtener un grafo como el siguiente:


En este caso resulta interesante, ver como en nuestro grafo se generaron relaciones y similitudes entre algunos grupos de archivos, mientras otros quedaron por fuera de cualquier relación.

Además de los resultados visuales, con Gephi podemos obtener una serie de medidas para evaluar el tipo de gráfico obtenido, como son la densidad del gráfico, la similitud entre los nodos que hacen parte de un mismo cluster y el grado de diferencia con nodos de otros cluster.

Este tipo de análisis permite hacerse con una idea de como deberíamos encarar el análisis de un grupo de muestras. Si bien no nos arrojan información sobre lo que hace cada muestra, como es su comparmiento de red u otra información intrínseca de la muestra, si nos permitirá generalizar esta información para determinar patrones de comportamiento.

Saludos!

Agradecimientos: Camilo Gutiérrez Amaya, Laboratorios ESET
#19

Luego de haber estado reconociendo estructuras comunes en ingeniería reversa (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) hace algunas semanas, continuaremos con la útil tarea de vislumbrar patrones entre las diversas líneas de código. Hoy es el turno de los bucles, esas estructuras que permiten la ejecución repetida de las instrucciones.

Dado que, al realizar reversing, la cantidad de instrucciones de un programa puede ascender a los cientos de miles, resulta muy poco práctico realizar un análisis instrucción por instrucción. Por eso, se hace necesario lograr cierto nivel de abstracción en el proceso; con un poco de práctica podemos acostumbrarnos a ver un amplio panorama de lo que hace el código, mediante el análisis de grupos de instrucciones en lugar de instrucciones individuales. Asimismo, si pensamos en lenguajes de alto nivel, nos daremos cuenta de que existen estructuras o construcciones que, al ser combinadas, le dan funcionalidad a un programa. Entre esas construcciones encontramos aquellas que rigen el flujo de ejecución, como los condicionales, bucles y demás. Si reconocemos estas estructuras entre el código en ensamblador, estaremos más cerca del lenguaje de alto nivel, con todas las ventajas que esto ofrece.

Para poder reconocer bucles entre las líneas de código en lenguaje ensamblador, primero debemos entender la estructura de un bucle en un lenguaje de alto nivel. Por ello, en la siguiente imagen observamos un programa sencillo con un bucle en C:


El código mostrado imprime por pantalla 9 líneas, desde "Contando 1" hasta "Contando 9". Ahora bien, si nos centramos en el funcionamiento del bucle, podemos bosquejar el siguiente pseudocódigo:


  • Asignar a la variable i el valor 1
  • Si el valor de i es mayor o igual a 10, ir al paso 6. Si es menor que 10, continuar con el paso 3
  • Imprimir por pantalla "Contando i", con el valor actual de i
  • Sumar 1 a la variable i
  • Ir al paso 2
  • Salir del bucle

Los pasos mostrados se marcan con números en la siguiente imagen. Debemos notar que los números utilizados se corresponden con el pseudocódigo presentado arriba.


Si ahora trasladamos este ejemplo particular al caso general, notaremos que los bucles contarán con las siguientes secciones:


  • La encargada de inicializar las variables
  • La que realiza una comparación, en la cual se basa la repetición
  • La que contiene el código a ejecutar repetidamente
  • Aquella que incrementa la variable de comparación

Por lo tanto, cuando estemos realizando reversing sobre un ejecutable, debemos observar aquellos grupos de instrucciones que se correspondan con estas secciones, prestando especial atención a las instrucciones de salto, el pegamento que une las secciones. Teniendo esto en cuenta, a continuación se muestra el código correspondiente al programa desensamblado:


Vemos las cuatro secciones marcadas con distintos colores. En rojo se encuentra la sección de inicialización, que consiste en una sola instrucción mov que asigna el valor 1 a la variable local i que se encuentra en el stack de main. Luego vemos un salto a la sección de comparación, en verde, que comprueba si el valor de i es mayor o igual a 10. De ser así, deja de ejecutar el bucle; caso contrario (si se cumple la condición de iteración, i < 10) continúa con la ejecución. A continuación se pasa a la sección de ejecución, en naranja, que inserta el valor de i junto con la cadena de formato (ubicada en la dirección de memoria 0×403000 en este caso) al stack, para invocar a printf (instrucción call). Por último, se realiza un salto a la sección de incremento, violeta, donde se suma 1 al valor de i.

Ya hemos mencionado las bondades de algunas herramientas como IDA, que nos permiten ver el flujo de ejecución en forma gráfica:


Puede que antes de leer este post dicha estructura gráfica no nos llamara la atención, pero ahora vemos claramente la presencia de las 4 secciones y de la flecha ascendente (del bloque 4 al 2) que nos indica la presencia de un bucle.

Esto es todo por hoy, pero en futuros posts continuaremos analizando otras estructuras de control y de datos.

Saludos!

Agradecimientos: Matías Porolli, Laboratorios ESET
#20
Off Topic / [Mendocinos] Leer este POST!
Abril 01, 2014, 12:46:02 AM
Hola compañeros. Cuanta gente de la provincia de Mendoza tenemos aquí? O que estén paseando por estos lugares..

Se esta organizando un evento para fin de mes. Si están interesados, me dejan un MP con sus datos.

Saludos a todos.
#21

Con el paso del tiempo, nuestra sociedad moderna es cada vez más dependiente de Internet con el uso diario de teléfonos celulares, documentos en línea, lectura de diarios digitales, homebanking entre otros. En este sentido, a veces necesitamos usar la red y nuestra única opción, de estar en la vía pública por ejemplo, es un café o bar con Wi-Fi gratis. Sin embargo, cuando hacemos esto, ¿somos realmente conscientes de los peligros a los que nos exponemos?

Uno de los mayores riesgos es que un ciberatacante aproveche una conexión Wi-Fi sin contraseña y la clone, supongamos que vamos a un café y decidimos conectarnos a "WifiGratis", la red del lugar que no está protegida por contraseña. Por otro lado, un atacante está a la espera, con su antena preparada, a que alguien se conecte a esta red, pero ya cuenta con una ventaja: previamente montó su red con el mismo nombre.

Este escenario es donde reside el riesgo, ya que sin saberlo nuestro dispositivo puede enlazarse a la antena del atacante y no a la Wi-Fi del lugar. De esta manera, todos los paquetes de conexión que entren y salgan pasarán por el equipo atacante, quien podrá ver y modificar todo a voluntad.

A continuación, vamos a ver cómo funciona Fruity Wifi, una herramienta usada para estas prácticas. Destacamos, como siempre, que estas pruebas se realizaron dentro de nuestro de laboratorio, bajo condiciones y parámetros controlados, sin perjudicar a nadie y cuyo único objetivo es poder demostrar que estas acciones son reales para que todos tomemos conciencia y podamos protegernos mejor, especialmente cuando nos enfrentemos a estas situaciones.


En la imagen anterior, se puede apreciar el panel de estado de la herramienta, que específicamente muestra los módulos que posee, las configuraciones de sus placas de red, etc. Por otro lado, una vez que hay una víctima, se podrá ver en el panel inferior denominado DHCP.

Una vez montada la falsa red Wi-Fi ("WifiGratis"), la aplicación le entregará una dirección IP a cada dispositivo que se conecte, redirigiendo el tráfico y haciendo que la conexión sea transparente para la víctima, es decir que a pesar de no estar conectado a la antena original, igualmente pueda navegar.

En este sentido, en la siguiente imagen puede observarse cómo el atacante podría ver, por ejemplo, las consultas DNS:


Asimismo, desde aquí podrían modificarse las consultas, es decir hacer un DNSspoof, permitiendo cambiar el destino al solicitar un sitio. Otra de las características tiene que ver con la popular aplicación de mensajería instantánea para móviles, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, cada móvil que se conecte a la red falsa creada por el atacante, con solo abrir la aplicación de mensajería instantanea, automáticamente el número telefónico se mostrara en el módulo que posee la suit.


Por cuestiones de seguridad obviamente se ofuscaron los últimos dígitos, pero efectivamente es el número completo junto con el sistema operativo del equipo. Además de estos datos, el atacante también podría ver las páginas web accedidas por la víctima.


Compartimos esta investigación y sus pruebas a fin de generar conciencia sobre los peligros y puedan estar al tanto de todos los riesgos que hay en Internet, para que puedan disfrutarla de forma mucho más segura.

En esta ocasión se hizo una prueba de concepto muy básica para poder mostrar el alcance un ataque de este tipo, no obstante, un ciberdelincuente podría diseñar el ataque para hacerlo más avanzado, por ejemplo que al conectarse a la red, automáticamente solicite descargar e instalar una aplicación que termina infectando el dispositivo, o tan simple como el que robe credenciales de cuentas de correo o inclusive cuentas bancarias.

Por último, les compartimos algunas buenas prácticas para evitar ser víctima de estos ataques:


  • En primer lugar, es vital contar con una solución antivirus actualizada, ya que previene las infecciones por parte del atacante e inclusive alertará sobre el envenenamiento ARP y DNS, evitando ser redirigidos a una página no deseada que contenga código malicioso.
  • Configurar nuestros dispositivos para que cada vez que quiera conectarse a una red Wi-Fi, siempre nos pregunte si queremos hacerlo y no lo haga automáticamente.
  • Si estamos en un lugar con conexión pública Wi-Fi y nuestro equipo cuenta con conectividad 3G o LTE, es más seguro usar la red móvil.
  • Configurar el equipo para que no almacene las conexiones a redes Wi-Fi.
  • Evitar las redes Wi-Fi sin contraseña.
  • Cuando la única opción son redes Wi-Fi desprotegida, deshabilitar todos los servicios de homebanking, cuentas de correo electrónico, redes sociales y demás aplicaciones que requieran usuario y contraseña para conexión. En este caso es aconsejable usar Internet solo para servicios como leer portales o diarios, o cualquier tipo de página que no requiera credenciales ni información personal.
  • Usar siempre conexiones de confianza protegidas y cuya contraseña conozcamos y estemos seguro de que es segura y fuerte.

Agradecimientos: Ignacio Pérez, Laboratorios ESET
#22
Seguridad / Una amenaza con forma de fax
Marzo 31, 2014, 09:07:59 PM

Estos días ha circulado un correo con un adjunto que aparenta ser un fax. Sin presentar más detalles que la "cantidad de hojas del fax", el adjunto es en realidad una amenaza compleja que viene acompañada de otras con la intención de robar información personal. Desde el Laboratorio de Investigación de ESET Latinoamérica les presentamos el análisis de este código malicioso.

Recientemente hemos analizado una muestra que se presenta como un adjunto de correo, simulando ser un fax. Sin embargo, detrás de esta artimaña, se esconde una amenaza que ha presentado un interesante análisis. Primero es necesario descomprimir el adjunto, que aunque tiene icono de archivo PDF en realidad es un ejecutable:



El siguiente listado muestra todos los archivos involucrados en la ejecución del malware, 4 de ellos son maliciosos. Veamos de forma detallada cómo es el funcionamiento del malware, centrándonos en los archivos indicados en la imagen:


Al ser ejecutado, el malware depositará otro código malicioso en el sistema llamado mazon.exe, detectado por nuestras soluciones antivirus como Win32/TrojanDownloader.Waski.A. Si se lleva a cabo análisis de tráfico de red se puede evidenciar que el malware descargará un archivo de extensión QTA, que en realidad es un ejecutable. Se puede observar en la imagen siguiente:


En la parte superior de la imagen podemos ver que el siguiente código malicioso será descargado de la sección de imágenes de un sitio real (ver imagen a continuación). Dicho sitio se encuentra vulnerado:


Al ver el directorio donde la muestra accedió veremos las imágenes del sitio y también el malware descargado:


Este formato bastante inusual probablemente no llamará la atención a primera vista. Sin embargo, esconde un comportamiento malicioso: es un ejecutable detectado por las soluciones ESET como una variante de Win32/Kriptik.BXTO (llamado asmlo.exe en la segunda captura). Será el encargado de manipular las DLL que habíamos visto en la segunda captura, detectadas como variantes de Win64/Spy.Tuscas.A y Win32/Spy.Tuscas.A. Este no es un aspecto menor, porque podemos ver que la muestra se encuentra preparada para llevar a cabo su comportamiento malicioso tanto en arquitecturas de 32 bits como en las de 64 bits, y utilizará una de las dos DLL de acuerdo a la arquitectura de la víctima. Una vez terminado el proceso, el malware se valdrá del archivo CMD que puede verse en la segunda imagen para "limpiar" la escena:


Si utilizamos alguna herramienta como ESET SysInspector para comparar un reporte antes de la ejecución de la muestra con uno reciente, veremos que el malware ha creado un hook de la DLL al proceso explorer.exe.

Los países latinoamericanos más afectados por la familia de amenazas (las DLL) son Argentina, Perú y México, quienes en conjunto presentan el 10% del total de detecciones.

Finalizado el análisis, podemos ver que la muestra en cuestión se encuentra preparada para funcionar tanto en entornos de 32 bits como en los de 64 bits, ya que utilizará una DLL según la arquitectura de la víctima.

Saludos a todos!

Agradecimientos: Gastón Charkiewicz, Laboratorios ESET
#23

Una vulnerabilidad de WinRAR (el popular software de compresión de archivos ZIP) fue descubierta por el investigador israelí Danor Cohen. La misma está siendo explotada en una campaña de malware dirigida a gobiernos, organizaciones internacionales y grandes empresas.

Esta vulnerabilidad permite que los atacantes creen un archivo ZIP que aparenta contener un archivo tal como una foto, pero que en realidad puede llegar a ser un archivo ejecutable que desencadena una infección del sistema. De esta forma, el ciberatacante fácilmente comprimir cualquier tipo de malware con WinRAR y luego hacer pasar ese archivo como un archivo ZIP de un archivo beningno.

La vulnerabilidad fue bautizada por Cohen como "spoofing de extensión de archivo de WinRAR", y según los investigadores de IntelCrawler, la misma está presente en todas las versiones de este popular software, inclusive en la 5.1. La explotación de esta vulnerabilidad se da cuando WinRAR comprime un archivo y crea nuevas propiedades, incluyendo la función de "cambiar el nombre del archivo". Al alterar esta información, el ZIP dirá que contiene algo diferente a lo que realmente aloja.

De acuerdo a IntelCrawler, los atacantes están explotando esta vulnerabilidad desde el 24 de marzo para realizar una campaña de ciberespionaje dirigida a corporaciones aeroespaciales, empresas militares subcontratadas, embajadas y grandes empresas. Una de las muestras era un e-mail de spam que decía provenir del Consejo Europeo de Asuntos Legales, y en el que se adjuntaba un archivo ZIP malicioso y protegido con contraseña, la cual era incluida en el cuerpo del mail.

Fuente: Corporación ESET
#24

La evolución de las amenazas informáticas se enfoca cada vez más en métodos poco convencionales y afectar nuevos dispositivos. Si hasta hace apenas un par de años hablábamos de amenazas complejas como Stuxnet o Duqu, ahora empezamos a escuchar de amenazas como los Troyanos de Hardware.

Tradicionalmente conocemos los códigos maliciosos del tipo troyano, cómo aquellos programas maliciosos que simulan ser una aplicación indefensa, incluso se instalan y ejecutan como un software legítimo pero realiza tareas maliciosas sin conocimiento del usuario.

Los troyanos de hardware son un tema que si bien no es nuevo, ha tomado una especial relevancia en los últimos años cuando empezamos a ser testigos de casos y amenazas de ciberguerra.

¿En qué consisten estas amenazas?

Los troyanos de hardware, van directamente a modificar el comportamiento del circuito integrado, para esto se modifica el proceso de construcción de la placa de tal forma que se agregan componentes para luego controlar o alterar el funcionamiento de los transistores.

Una de las formas que más se suele utilizar para hacer estas modificaciones es agregar componentes adicionales en la elaboración de los circutios integrados. Lo importante es que se han desarrollado técnicas de verificación óptica que las detectan fácilmente.

Otro tipo de técnica asociada a los troyanos de hardware presentada en 2010, consiste en modificar la concentración del dopante utilizada en los transistores para limitar la vida útil del circuito integrado. De esta forma se podría esperar que los dispositivos tuvieran algún tipo de falla y aprovecharla para hacer algún tipo de ataque.

Cómo suele ocurrir con el avance de la tecnología, se han puesto en evidencia técnicas de inyectar este tipo de troyanos de hardware, pero de tal forma que no sean fácilmente detectables. Un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta demuestra que existe la posibilidad de generar este tipo de comportamientos maliciosos en circuitos integrados, solamente alterando la juntura de unos cuantos transistores del chip para cambiar su polaridad.

Casos donde se han utilizado troyanos de hardware

En el año 2005 un informe del Defense Science Board del departamento de defensa de los Estados Unidos, redactó un informe en el cual mencionaba que se habían detectado este tipo de modificaciones maliciosas en componentes utilizados en infraestructura militar y civil.

Más recientemente en 2010, fue descubierto que la empresa No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y que eran utilizados en mecanimos de defensa. El problema con este tipo de dispositivos es que como intervienen tantos fabricantes a escala global dado la especificidad de cada uno de sus componentes, las probabilidades de que en algún punto exista una modificación se incrementan.

Entonces, ¿cómo detectar estas amenazas?

En vista de que estas amenazas son cada vez más patentes, las empresas han desarrollado pruebas que se aplican antes y después del proceso de fabricación. Las pruebas que más se suelen utilizar son las del análisis de imágenes tomadas con microscopios electrónicos (SEM) para detectar que no existan capas agregadas de otros materiales que puedan modificar el comportamiento del circuito integrado.

Pero además, se han desarrollado otro tipo de pruebas debido a que las nuevas técnicas para inyectar estos troyanos de hardware ha evolucionado. Esta pruebas por lo general consisten en pruebas de funcionalidad en los cuales se analiza el comportamiento esperado de cada circuito antes diferentes situaciones.

Todas estas situaciones plantean un panorama donde deben involucrarse los grandes fabricantes de tecnología, pues estos temas son bastantes sensibles pues generalmente este tipo de amenazas están enfocadas en afectar infraestructuras críticas, más allá del hecho que sean amenazas que puedan dañar una computadora como se ha vendido la idea en muchos casos.

Agradecimientos: Camilo Gutiérrez Amaya, Laboratorios ESET
#25

l escalar privilegios suele estar entre los objetos principales de los atacantes, porque de lograrlo podrán hacer lo que deseen con el sistema vulnerado. En este contexto se hace presente el sandboxing, una técnica que permite aislar una ejecución para que los recursos generales del sistema no se vean comprometidos.

Uno de los placeres más grandes de un padre con un hijo pequeño es ver como este se divierte. Sin embargo, para que eso suceda primero debe lograr algo primordial: encontrar un lugar donde pueda jugar sin problemas. Un arenero sería lo ideal: el niño estaría en un ambiente controlado, que el padre supervisaría. Adentro tendría solo sus juguetes, así que podría jugar sin problemas, y además el hecho de que no haya otra cosa sería un alivio porque evitaría riesgos.

La idea detrás del arenero es altamente aplicable a la seguridad informática, y de hecho se encuentra presente hace ya un largo tiempo bajo el nombre de sandboxing. Funciona de la siguiente forma: se le asigna un espacio virtual a un proceso,  un espacio controlado que se puede supervisar. El proceso tiene los recursos necesarios, así que puede ejecutarse sin problemas, y además el hecho de que no tenga acceso a otros es un alivio porque evitará riesgos. Si tuviera fines maliciosos no podría acceder a los recursos del sistema, ya que se encuentra aislado.

El sandboxing se utiliza de formas diversas. Adobe Reader lo utiliza para abrir documentos PDF debido a la posibilidad de ejecutar código malicioso a través de ellos, y navegadores como Google Chrome o Internet Explorer también adoptan esta modalidad. También se encuentra presente en Adobe Flash.

No es un mecanismo infalible

La adopción de este mecanismo disminuye los riesgos ante una ejecución con fines maliciosos, pero no los erradica por completo. Han ocurrido casos específicos donde se ha logrado evadirlo mediante exploits, consiguiendo el acceso a recursos del sistema. Por ejemplo, en la reciente Pwn2Own 2014 (un evento donde se premia a los investigadores en seguridad que encuentren vulnerabilidades a aplicaciones reconocidas) No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No debemos ver el sandboxing como un mecanismo infalible de protección ante potenciales amenazas. Sin embargo, disminuye considerablemente los riesgos a los cuales nuestro sistema se verá expuesto.

Agradecimientos: Gastón Charkiewicz, Laboratorios ESET.
#26
En términos de  seguridad informática, Backtrack ha sido una de las distribuciones de Linux que más se han utilizado para realizar tareas de pentesting y auditorías de seguridad. Offensive Security, quién también desarrolló Backtrack Linux, lanzó una nueva distribución llamada No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que promete ser la más "avanzada, robusta y estable" distribución de seguridad basada en  Debian GNU/Linux.


Durante los últimos años Backtrack Linux ha sabido ganarse el lugar como una de las mejores distribuciones para profesionales de la seguridad informática, pero con cada nueva versión este se volvía mas lento, pesado e incluía cosas que realmente muy pocas personas usaban, esto dio pié a que distribuciones como Bugtraq crecieran en popularidad y tomaran fuerza.

Offensive Security estaba consciente de esta realidad y hace un tiempo anunció que la versión 5 R3 seria la ultima versión de Backtrack como tal, la que seria la versión 6 de Backtrack pasaría a llamarse Kali.

Un aspecto en el que se diferencia de Backtrack es que Kali Linux inicia en modo gráfico directamente, distinto de Backtrack donde había que iniciarla mediante el comando startx. Además Kali posee un gestor de paquetes gráfico llamado gpk-application que permite la instalación de paquetes de forma sencilla, donde por ejemplo es posible instalar LibreOffice para utilizarlo.



  • Más de 300 herramientas de pruebas de penetración: Después de revisar todas las herramientas que se incluyen en BackTrack, hemos eliminado una gran cantidad de herramientas que, o bien no funcionaban o tenían otras herramientas disponibles que proporcionan una funcionalidad similar.
  • Gratis y siempre lo será: Kali Linux, al igual que su predecesor, es completamente gratis y siempre lo será. Nunca, jamás, tendrás que pagar por Kali Linux.
  • Git – árbol de código abierto: Somos partidarios enormes de software de código abierto y nuestro árbol de desarrollo está disponible para todos y todas las fuentes están disponibles para aquellos que desean modificar y reconstruir paquetes.
  • Obediente a FHS: Kali ha sido desarrollado para cumplir con el Estándar de jerarquía del sistema de ficheros, permitiendo que todos los usuarios de Linux puedan localizar fácilmente archivos binarios, archivos de soporte, bibliotecas, etc.
  • Amplio apoyo a dispositivos inalámbricos: Hemos construido Kali Linux para que soporte tantos dispositivos inalámbricos como sea posible, permitiendo que funcione correctamente en una amplia variedad de hardware y hacerlo compatible con varios USB y otros dispositivos inalámbricos.
  • Kernel personalizado con parches de inyección: Como probadores de penetración, el equipo de desarrollo a menudo tiene que hacer evaluaciones inalámbricas para que nuestro kernel tenga los últimos parches de inyección incluidos.
  • Entorno de desarrollo seguro: El equipo de Kali Linux está compuesto por un pequeño grupo de personas de confianza que sólo puede comprometer e interactuar con los paquetes de los repositorios, haciendo uso de múltiples protocolos seguros.
  • Paquetes firmado con PGP y repos: Todos los paquetes de Kali son firmados por cada desarrollador individualmente cuando se construyen y son comprometidos. Los repositorios posteriormente firman los paquetes también.
  • Multi-lenguaje: Aunque las herramientas de penetración tienden a ser escritas en Inglés, nos hemos asegurado de que Kali tenga soporte multilingüe, lo que permite a más usuarios poder operar en su idioma nativo y encontrar las herramientas necesarias para el trabajo.
  • Totalmente personalizable: Estamos completamente consiente de que no todo el mundo estará de acuerdo con nuestras decisiones de diseño por lo que hemos hecho lo más fácil posible para nuestros usuarios más aventureros puedan personalizar Kali Linux a su gusto, todo el camino hasta el núcleo.
  • Soporte ARMEL y ARMHF: Dado a que los sistemas basados en ARM son cada vez más frecuentes y de bajo costo, sabíamos que el soporte de ARM de Kali tendrían que ser tan robusta como podríamos administrar, resultando en instalaciones que trabajan en sistemas de ARMEL y ARMHF. Kali Linux tiene repositorios ARM integrado con la línea principal de distribución de modo que las herramientas para ARM serán actualizada en relación con el resto de la distribución. Kali está disponible para los dispositivos ARM siguientes:
  • rk3306 mk/ss808
  • Raspberry Pi
  • ODROID U2/X2
  • MK802/MK802 II
  • Samsung Chromebook

Listado completo de Herramientas



  • Tcpflow (monitorizar tráfico red)
  • Intrace
  • Zenmap (Escáner de puertos)
  • Sqlninja (SQL Server)
  • Acccheck (SMB Samba)
  • Forensics mode
  • Offline password cracking como John the Ripper
  • Guymager (creación imágenes)
  • Chkrootkit (anti rootkit)
  • Metasploit
  • Armitage
  • p0f
  • DDMS
  • apktool

Herramientas DNS
Análisis DNS


  • dnsdict6
  • dnsenum
  • dnsmap
  • dnsrecon
  • dnsrevenum6
  • dnstracer
  • dnswalk
  • fierce
  • maltego
  • nmap
  • urlcrazy

Identificación Host


  • fragroute
  • fragrouter
  • wafw00f
  • alive6
  • arping
  • cdpsnarf
  • detect-new-ip-6
  • detect-sniffer6
  • dmitry
  • dnmap-client
  • dnmap-server
  • fping
  • hping3
  • inverse_lookup6
  • miranda
  • ncat
  • netdiscover
  • nmap
  • passive_discovery6
  • thcping6
  • wol-e
  • xprobe2

Scáners de Red


  • dmitry
  • dnmap-client
  • dnmap-server
  • netdiscover
  • nmap

Detección Sistema Operativo (OS Fingerprinting)


  • dnmap-client
  • dnmap-server
  • miranda
  • nmap

Herramientas OSINT ( Essential OSINT Tools for Social Engineering)


  • casefile
  • creepy
  • dmitry
  • jigsaw
  • maltego
  • metagoofil
  • theharvester
  • twofi
  • urlcrazy

Análisis Samba


  • accheck
  • nbtscan
  • nmap

Análisis SNMP


  • braa
  • cisco-auditing-tool
  • cisco-torch
  • copy-router-config
  • merge-router-config
  • nmap
  • onesixtyone

Análisis SSL


  • sslcaudit
  • ssldump
  • sslh
  • sslscan
  • sslsniff
  • sslstrip
  • sslyze
  • stunnel4
  • tlssled

Análisis de Tráfico


  • cdpsnarf
  • intrace
  • irpas-ass
  • irpass-cdp
  • p0f
  • tcpflow
  • wireshark

Análisis de VOIP


  • ace
  • enumiax

Análisis VPN


  • ike-scan

Análisis Vulnerabilidades


  • cisco-auditing-tool
  • cisco-global-exploiter
  • cisco-ocs
  • cisco-torch
  • yersinia

Análisis Base de Datos (SQL)


  • bbqsql
  • dbpwaudit
  • hexorbase
  • mdb-export
  • mdb-parsecsv
  • mdb-sql
  • mdb-tables
  • oscanner
  • sidguesser
  • sqldict
  • sqlmap
  • sqlninja
  • sqlsus
  • tnscmd10g

Herramientas Fuzzing (Fuerza Bruta)


  • bed
  • fuzz_ip6
  • ohrwurm
  • powerfuzzer
  • sfuzz
  • siparmyknife
  • spike-generic_chunked
  • spike-generic_listen_tcp
  • spike-generic_send_tcp
  • spike-generic_listen_upd
  • burpsuite
  • powerfuzzer
  • webscarab
  • webslayer
  • websploit
  • wfuzz
  • xsser
  • zaproxy

Identificación de CMS


  • blindelephant
  • plecost
  • wpscan

Proxys


  • burpsuite
  • paros
  • proxystrike
  • vega
  • webscarab
  • zaproxy

Herramientas Web


  • apache-users
  • burpsuite
  • cutycapt
  • cutycapt
  • dirbuster
  • vega
  • webscarab
  • webslayer
  • zaproxy

Herramientas GPU


  • oclhashcat-lite
  • oclhashcat-plus
  • pyrit

Herramientas Off-line


  • cachedump
  • chntpw
  • cmospwd
  • crunch
  • dictstat
  • hashcat
  • hash-identifier
  • john the ripper
  • johnny
  • lsadump
  • maskgen
  • oclhashcat-lite
  • oclhashcat-plus
  • ophcrack
  • ophcrack-cli
  • policygen
  • pwdump
  • pyrit
  • rainbowcrack
  • rcracki_mt
  • rsmangler
  • samdump2
  • sipcrack
  • sucrack
  • truecrack

Herramientas Online


  • accheck
  • burpsuite
  • cewl
  • cisco-auditing-tool
  • dbpwaudit
  • findmyhash
  • hydra
  • hydra-gtk
  • medusa
  • ncrack
  • onesixtyone
  • patator
  • phrasendrescher
  • thc-pptp-bruter
  • webscarab
  • zaproxy

Ataques Bluetooth


  • bluelog
  • bluemaho
  • blueranger
  • btscanner
  • fang
  • spooftooph

Herramientas Wireless - Wifi


  • aircrack-ng
  • aireplay-ng
  • airmon-ng
  • airodump-ng
  • asleap
  • cowpatty
  • eapmd5pass
  • fern-wifi-cracker
  • genkeys
  • genpmk
  • giskismet
  • kismet
  • mdk3
  • wifiarp
  • wifidns
  • wifi-honey
  • wifiping
  • wifitap
  • wifite
  • zbassocflood
  • zbconvert
  • zbdsniff
  • zbdump
  • zbfind
  • zbgoodfind
  • zbid
  • zbreplay
  • zbstumbler

Sniffers de Red


  • darkstat
  • dnschef
  • dnsspoof
  • dsniff
  • ettercap-graphical
  • hexinject
  • mailsnarf
  • netsniff-ng
  • passive_discovery6
  • sslsniff
  • tcpflow
  • urlsnarf
  • webmitm
  • webspy
  • wireshark
  • ettercap-graphical
  • evilgrade
  • fake_advertise6
  • fake_dns6d
  • fake_dnsupdate6
  • fake_mipv6
  • fake_mld26
  • fake_mld6
  • fake_mldrouter6
  • fake_router6
  • fake_solicitate6
  • fiked
  • macchanger
  • parasite6
  • randicmp6
  • rebind
  • redir6
  • sniffjoke
  • sslstrip
  • tcpreplay
  • wifi-honey
  • yersinia

Herramientas VoIP


  • iaxflood
  • inviteflood
  • ohrwurm
  • protos-sip
  • rtpbreak
  • rtpflood
  • rtpinsertsound
  • rtpmixsound
  • sctpscan
  • siparmyknife
  • sipp
  • sipsak
  • svcrack
  • svcrash
  • svmap
  • svreport
  • svwar
  • voiphopper

Sniffers Web


  • burpsuite
  • dnsspoof
  • driftnet
  • ferret
  • mitmproxy
  • urlsnarf
  • webmitm
  • webscarab
  • webspy
  • zaproxy

Backdoors


  • cymothoa
  • dbd
  • intersect
  • powersploit
  • sbd
  • u3-pwn

Herramientas de Tunneling


  • cryptcat
  • dbd
  • dns2tcpc
  • dns2tcpd
  • iodine
  • miredo
  • ncat
  • proxychains
  • proxytunnel
  • ptunnel
  • pwnat
  • sbd socat
  • sslh
  • stunnel4
  • updtunnel

Debuggers (Decompiladores) y Reversing


  • edb-debugger
  • ollydbg
  • jad
  • rabin2
  • radiff2
  • rasm2
  • recstudio
  • recstudio-cli
  • apktool
  • clang
  • clang++
  • dex2jar
  • flasm
  • javasnoop
  • radare2
  • rafind2
  • ragg2
  • ragg2-cc
  • rahash2
  • rarun2
  • rax2

Herramientas Stress de Red (Web, Wlan)


  • denial6
  • dhcpig
  • dos-new-ip6
  • flodd_advertise6
  • flood_dhcpc6
  • flood_mld26
  • flood_mld6
  • flood_mldrouter26
  • flood_router6
  • flood_solicitate6
  • fragmentation6
  • inundator
  • kill_router6
  • macof
  • rsmurf6
  • siege
  • smurf6
  • iaxflood
  • invite flood
  • thc-ssl-dos
  • mdk3
  • reaver

Herramientas Android


  • android-sdk
  • apktool
  • baksmali
  • dex2jar
  • smali

Herramientas Análisis Forense (Creación imágenes, Suites, RAM, PDF)


  • autopsy
  • binwalk
  • bulk_extractor
  • chrootkit
  • dc3dd
  • dcfldd
  • extundelete
  • foremost
  • fsstat
  • galleta
  • tsk_comparedir
  • tsk_loaddb
  • affcompare
  • affcopy
  • affcrypto
  • affdiskprint
  • affinfo
  • affsignaffstats
  • affuse
  • affverify
  • affxml
  • blkcalc
  • blkcat
  • blkstat
  • bulk_extractor
  • ffind
  • fls
  • foremost
  • galleta
  • hfind
  • icat-sleuthkit
  • ifind
  • ils-sleuthkit
  • istat
  • jcat
  • mactime-sleuthkit
  • missidentify
  • mmcat
  • pdgmail
  • readpst
  • reglookup
  • sorter
  • srch-strings
  • tsk_recover
  • vinetto
  • binwalk
  • bulk_extractor
  • foremost
  • jls
  • pasco
  • pev
  • magicrescue
  • recoverjpeg
  • fifiuti
  • rifiuti2
  • safecopy
  • scalpel
  • scrounge-ntfs
  • affcat
  • affconvert
  • blkls
  • dc3dd
  • dcfldd
  • ddrescue
  • ewfacquire
  • ewfacquirestream
  • ewfexport
  • ewfinfo
  • ewfverify
  • fsstat
  • guymager
  • img_cat
  • img_stat
  • mmls
  • mmstat
  • tsk_gettimes
  • autopsy
  • dff
  • pdf-parser
  • peepdf
  • volafox
  • volatility

Descargar Kali Linux


Kali también está disponible como una máquina pre-hecha virtual de VMware con VMware Tools instalado. Las imágenes de VMware están disponibles en formatos de 32-bit y 64-bit.

Instalación de Kali Linux desde una memoria USB


Verificar que la USB haya sido reconocida por el equipo, muy común en equipos virtualizados.
Usar dmesg para verificar la etiqueta del disco, o usar gparted o alguna otra herramienta para admnistrar discos
Opcional (?): Usar gparted o algún otra herramienta para remover cualquier partición existente en la USB. En mi caso esto fue esencial, pues sin esto la memoria no era reconocida como un dispositivo de arranque.
Copiar kali.iso a la USB. Aquí entra el comando que se menciona en la documentación oficial. sudo dd if=~/carpeta_personal/kali-linux-1.0.5-amd64/kali-linux-1.0.5-amd64.iso of=/dev/sdb1
De preferencia usar sudo o el comando en su distribución para escalar los privilegios como root.

Instalar Kali Linux en una memoria USB desde Windows: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Contraseña establecida para root

Durante la instalación, Kali Linux permite configurar una contraseña para el usuario root. Sin embargo, si decides iniciar con la imagen live en vez de las imagenes, i386, amd64, VMWare o ARM, estas iran configuradas con el password predeterminado para root, que es – "toor", sin comillas.
Nueva Funcionalidad de autrodestrucción en Kali Linux v1.0.6


Nuevo parche llamado No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en cryptsetup (es la herramienta que maneja el cifrado de disco en kali), que destruye todo los datos cifrados en nuestro disco de forma permanente.

Existe la posibilidad de poder eliminar el acceso a una partición cifrada simplemente ingresando una contraseña específica al momento de iniciar el sistema.

Esta nueva funcionalidad aplica a aquellos usuarios que encriptaron, o deseen cifrar, alguna de sus particiones dentro de Kali Linux. Si bien la posibilidad de poder cifrar particiones por medio de la combinación de LUKS (Linux Unified Key Setup) y LVM (Logical Volume Management) no es una novedad, si lo es la capacidad de poder eliminar las llaves de acceso a las mismas con una simple contraseña. Para poder explicar mejor esto, es necesario antes aclarar en qué consiste el cifrado de las particiones.

¿Cómo se protege una partición cifrada en Kali Linux?

Este proceso se realiza desde el instalador de la distribución, y puede aplicarse sobre un disco duro o incluso sobre un dispositivo USB. Al seleccionar la opción de proteger la partición completa con un LVM encriptado se le solicitará al usuario que ingrese una frase secreta que utilizará como contraseña. Dicha frase le será solicitada al usuario al momento de iniciar (bootear) el sistema de manera de poder descifrar el disco para su uso.

Si bien el único dato que el usuario conoce para descifrar el disco es la frase que él mismo eligió, no es ese valor el que se utilizó para cifrar el disco. El disco, al momento de ser encriptado, utiliza una llave (key) generada aleatoriamente por el sistema para protegerlo. La frase del usuario solo le permite al sistema acceder a dicha llave (key) para que esta, posteriormente, descifre el contenido en cuestión.

Es decir que si se cifraran dos particiones idénticas con la misma contraseña las llaves maestras no podrían ser intercambiadas ya que permanecen únicas para cada instancia. Además, indistintamente de cuál es la contraseña utilizada, si la llave maestra se pierde, recuperar la información sería imposible.

¿Cómo funciona la "Nuke Password"?

Este nueva característica consiste en la creación de una frase de seguridad (contraseña) secundaria la cual, al ser ingresada borra de forma segura todas las llaves maestras, dejando inaccesible la información encriptada.


¿Por qué esta funcionalidad es considerada polémica?

Algunos especialistas del ambiente cuestionaron esta funcionalidad ya que consideran que podría ser ampliamente utilizada por usuarios maliciosos para evitar dejar pruebas en sus equipos en caso de enfrentar un arresto inminente o controles de seguridad en aeropuertos o fronteras, facilitando la eliminación casi de inmediato de material ilícito.

No obstante, los desarrolladores de la ampliamente difundida plataforma de seguridad, Offensive Security, realizaron previo al lanzamiento de la versión 1.0.6, una encuesta para conocer la preferencia o rechazo de sus usuarios ante esta nueva funcionalidad, obteniendo un 95% de respuesta afirmativa.

Posteriormente lanzaron un No tienes permitido ver los links. Registrarse o Entrar a mi cuenta de dicha funcionalidad para la manipulación de información privada que implican el backup cifrado de la llave, el resguardo de la misma y su posterior eliminación (Nuke) de la máquina para así poder evitar accesos no autorizados en caso de perdida del equipo. Una vez se haya llegado a un destino seguro, se podrá recuperar el acceso a la información por medio de la restauración de la llave.




Espero que le den su adecuado uso.

Saludos!
#27

Hay amenazas que requieren de la interacción del usuario para llevar a cabo su cometido malicioso, y a veces incluso el resultado se evidencia a simple vista. Sin embargo, hay mecanismos de infección que son imperceptibles para el usuario, y ocurren sin darle indicios de lo sucedido. En esta ocasión, queremos presentarles un método clásico: ejecutar código PHP en un HTML.

Si hablamos de lenguajes como HTML y PHP, veremos que son de los más utilizados al desarrollar aplicaciones web. Su masividad es evidente y todos los servidores web habituales los soportan, cosa que no sucede con lenguajes menos convencionales como Ruby o Django, el framework web de Python.

HTML se asocia habitualmente con sitios web estáticos, a saber, sitios que "presentan" la información y no están diseñados para interacciones con el usuario, simplemente dirigirse de una página hacia otra. Al acceder a una página en HTML podemos inspeccionar el código fuente sin llevar a cabo acciones complejas (todos los navegadores proveen una opción de "Ver el código fuente" de la página, normalmente haciendo clic derecho sobre la misma).

Por otro lado, PHP está asociado a sitios dinámicos, en los cuales el usuario interactúa de forma más compleja, como por ejemplo con un calendario. A su vez presenta más funcionalidades, como poder interactuar con una base de datos. El código no es accesible para el cliente como sucede con HTML, por lo que la ejecución del script (que se ejecuta en el servidor donde se encuentra alojada la aplicación) es transparente al usuario.

Ahora, ¿cómo se relaciona todo esto? Gracias a una particularidad importante: se puede lograr que un servidor web reconozca documentos HTML como PHP. Por ejemplo, si dispongo de un servidor Apache, puedo agregar un archivo .htaccess con el siguiente contenido:´



Esto hará que el servidor reconozca los documentos con extensión HTM y HTML como scripts PHP válidos para su ejecución. Por eso, si yo agrego código PHP en un archivo HTML (ver siguiente imagen), podré ejecutarlo de forma invisible para el usuario, incluso agregando un script con comportamiento malicioso:


En dicho script se podría por ejemplo verificar la versión de Java disponible en el navegador, de forma que si es una versión desactualizada se la podrá aprovechar con las vulnerabilidades que la misma presenta. Si vemos el código HTML de la página, observaremos que no hay rastros del script:


Este mecanismo es utilizado por exploits para aprovechar vulnerabilidades presentes en el cliente. Por eso, recomiendo contar con una solución completa de seguridad para evitar amenazas. En las próximas entradas les mostraré otros mecanismos de infección habituales en amenazas y que llevan a cabo su cometido de forma imperceptible.

Agradecimientos: Gastón Charkiewicz, Laboratorios ESET
#28
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es un aplicación de Android que reúne distintas herramientas para el análisis y pentesting de redes en una sola suite unificada. Permite realizar pruebas de seguridad de la red en la que se encuentra conectada el dispositivo móvil, lo que puede ayudar a hacer tests de seguridad en clientes que haya que auditar ad-hoc.

Según la web de los creadores de la herramienta, esta aplicación ofrece el kit de herramientas más completo y avanzado para llevar a cabo este tipo de tareas, apoyándose en las características siguientes.


En la imagen anterior, además de mostrar las características que ofrece la herramienta, hace una comparativa con algunas de las aplicaciones para Android más conocidas que realizan tareas similares, intentando recalcar su superioridad y complejidad. Por supuesto, no tiene porque ser la mejor, pero nos ha parecido más que interesante probarla y hablaros sobre ella.

Para poder instalar esta aplicación es necesario tener rooteado el sistema Android del terminal movil donde se vaya a instalar. Es posible que una vez terminado el proceso de instalación, la aplicación solicite la que se descargue también BusyBox. Por lo general, las distintas herramientas que se utilizan para rootear el movil o la ROM personalizadas ya incluyen BusyBox, sin embargo, podría darse el caso de que no esté instalada o que esta sea antigua.

Cuando a aplicación esté en el sistema opeartivo Android y se le haya dado permisos de superusuario, la pantalla principal que ofrece es una visualización con el mapeo de la red a la que estemos conectados, donde se listaran todos los dispositivos que hayan sido localizados. En esta pantalla se pueden realizar el listado de acciones que tiene que ver con el escaneo de redes WiFi y el cracking de claves conocidas de determinados tipos de puntos de acceso o routers.


También se puede observar en la parte superior derecha de esta pantalla el menú de botones que ofrece las opciones de lo que se puede hacer con la red:


  • Especificar objetivos: La primera de estas opciones, representada con un signo '+', permite especificar un objetivo concreto de forma manual a través de una dirección URL, introduciendo el nombre del host o la dirección IP que tenga configurada el equipo.
  • Nuevo escaneo de red: La segunda de ellas, representada con un par de flechas circulares, permite refrescar la lista de los equipos de la red, haciendo que se vuelva a realizar un mapeo completo de la red en busca de nuevos equipos conectados.
  • Cambio de red WiFi y cracking: La tercera, que está representada con el símbolo de WiFi que utiliza comúnmente Android, permite cambiar de redes directamente desde la aplicación y, si fuera posible - en el caso de que uno de los routers fuera del tipo de los que la aplicación conoce el algoritmo de generación de claves por defecto que estos implementan -, el cracking de la clave de conexión. Esta acción solo tendrá un resultado positivo siempre y cuando la red WiFi conserve la contraseña por defecto.
  • Menú de opciones: La cuarta y última de ellas, representada por tres cuadrados alineados verticalmente, en las que se puede encontrar las distintas opciones que ofrece la aplicación.

En cuanto se haya realizado el mapeo de la red y se encuentren los diversos dispositivos, presionando sobre ellos se pueden observar las distintas acciones que se pueden realizar para cada uno de ellos.


En la imagen anterior se pueden observar todas las acciones que pueden realizarse, sin embargo, estas variaran dependiendo del tipo de dispositivo. Por ejemplo, en el caso de la primera acción de la lista (Router PWN), solo se puede realizar sobre AP al que se está conectado. Con esta opción es posible tomar el control del router utilizan el servicio que ofrece No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Al igual que hay acciones que se pueden realizar para un solo tipo de dispositivos, también hay elementos identificados en el mapeo que solo se pueden llevar un conjunto limitado de acciones, como es el caso del primero de ellos que se lista en el mapeo de la red. Este primer elemento representa a la totalidad de la red, el cual está representado por la NET_ID y la máscara de red, y solo permite llevar a cabo las acciones que se agrupan dentro de las herramientas de man in the middle. Estas acciones afectarán a todos los elementos detectados en el escaneo de la red.

El resto de los elementos que se encontraran en el mapeo son los distintos dispositivos que se encuentran conectados a la red, y se podrán llevar a cabo todas las acciones mostradas en la imagen, exceptuando la comentada anteriormente que solo aplica a los AP.


  • Trace: La primera de esas opciones se encarga de identificar todos los saltos que se realizan para llegar al objetivo que fue seleccionado usando el conocido comando de red Trace.
  • Escáner de puertos: Con el que se realiza un escaneo de tipo TCP SYN para obtener los puertos los puertos que el dispositivo tiene abierto.


  • Inspector: S encargara de hacer un fingerprinting al dispositivo en busca de su sistema operativo y los servicios que pueda identificar.


Para estos tres primeros casos, solo basta con seleccionar la acción, presionar el botón Start y esperar a que termine el proceso. Esto es así porque son funciones estancas que no necesitan mucho trabajo previo de campo para la configuración del entorno completo de pruebas.

  • Búsqueda de vulnerabilidades y exploits: Para poder hacer uso de estas opciones es necesario haber realizado las tareas de escaneo de puertos y fingerprinting previamente, ya que la herramienta se basa en los resultados obtenidos en esos procesos para realizar la búsqueda de vulnerabilidades y de exploits en el S.O. y en los servicios detectados.

Para poder realizar la búsqueda de exploits en concreto, primero debe realizarse la búsqueda de vulnerabilidades y haberse encontrado alguna. Después ya se buscaran exploits relacionados con todas esas vulnerabilidades encontradas.

  • Login Cracker: Se basa en los resultados obtenidos en el proceso de escaneo de puertos. Esta opción se encarga de intentar hacer un cracking del login de alguno de los servicios conocidos que se encuentran listados en la aplicación, especificando uno de los puertos de los que fueron encontrados, el juego de caracteres para la generación de contraseñas, el nombre de usuario de una lista que la aplicación ofrece, la longitud mínima y la longitud máxima de la contraseña a generarse.


De los requisitos antes mencionados habría que destacar que la aplicación permite agregar algún otro nombre de usuario que el usuario considere, sin embargo, solo se puede seleccionar uno a la hora de iniciar la aplicación. También permite especificar un conjunto personalizado de caracteres en caso de que se desee incluir alguno para la generación de las contraseñas. En cuanto a los caracteres mínimos y máximos, solo ofrecen un rango entre 1 y 6 caracteres.

Agradecimientos: Umberto Francesco Schiavo, Eleven Paths

Espero que les sirva. Saludos!
#29
Seguridad / Terrier IR: análisis seguro de logs
Marzo 13, 2014, 10:09:26 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es una herramienta que puede correr tanto en Windows como Linux y que necesita tener instalado el JRE de Java. Es un sistema bastante robusto que permite indexar y recuperar la información de archivos con diferentes estructuras como CSV o XML e incluso puede indexar la información de archivos PDF o de texto plano.

La ventaja de este sistema con respecto a otros es la facilidad en su instalación y la versatilidad en el uso, pues todo se puede configurar en archivos de texto en los cuales se varían los parámetros y variables que caracterizan las acciones que se van a ejecutar.

Por ejemplo para indicar los archivos que se desean indexar, simplemente se busca el archivo collection.spec que se encuentra en la carpeta etc dentro de la carpeta de Terrier:


Antes de indexar el corpus es necesario conocer la estructura de los archivos de los logs para saber cuales tags se van a utilizar, de tal forma que se pueda configurar el módulo de indexación. Por ejemplo si la estructura de los logs contiene los tags username, port, from, comment, message, tty y source y se quiere indexar la información únicamente de los primeros cinco campos se debe editar en el archivo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta las opciones TrecDocTags.process y TrecDocTags.skip para indicar cuales son los campos utilizados y cuales deben omitirse.


Con esta configuración es suficiente para poner a correr el indexador.


Una vez construido el índice se puede proceder a recuperar la información basado en criterios de búsqueda definidos por el usuario. De forma similar a lo que se hizo para configurar el indexador del corpus de logs, se deben configurar los campos que componen las consultas que se van realizar. En este caso se cambian las variables TrecQueryTags. Por ejemplo en este caso se utiliza el tag NUM para identificar cada búsqueda, y en el tag DESC se almacena la búsqueda particular.


Una vez definida la estructura de las consultas, se procede a lanzar el comando para realizar las búsquedas indicadas sobre el conjunto de archivos indexados.


Con este comando se corren todas las consultas que estén indicadas en la ruta Dtrec.topics, y se obtiene un nuevo archivo con los registros recuperados y un puntaje asignado que indica su relevancia con respecto a la consulta indicada.


De esta forma se podría utilizar como parámetro de análisis aquellas entradas que tengan los valores más altos de puntaje para investigar si está ocurriendo algo extraño. O si por ejemplo hay muchos logs que coinciden con una búsqueda de algún error particular es porque puede estar relacionado con alguna falla particular.

La ventaja de esta herramienta sobre un análisis de una base de datos relacional, es la velocidad en la búsqueda ya que todos los registros están indexados. Además teniendo en cuenta que la estrucutura de los archivos que contienen los logs no tienen una estructura muy adecuada para ser procesada en bases de datos tipo SQL.

Si una empresa decide implementar esta herramienta o algún sistema similar para el análisis de los logs de sus sistemas lo que va a lograr es tener mayor capacidad de respuesta ante la ocurrencia de un incidente o para detectar fallas que puedan afectar la integridad de la información corporativa.

Agradecimientos: Camilo Gutierrez Amaya, Laboratorios ESET.

Saludos!
#30
Internet tiene una gran cantidad de información que de ser recuperada puede ser valiosa para la toma de decisiones. Una alternativa para lograrlo es el uso de herramientas libres como Python junto con técnicas como el Google Hacking. Implementar una herramienta que permita capturar información relevante puede ser tan sencillo como utilizar scripts en Python.

A continuación mencionamos algunos puntos que podrían tenerse en cuenta para implementar un sistema que permita recopilar  información pública para su posterior análisis. El proceso se puede dividir en tres sencillas etapas: la configuración de las APIs, la optimización de las búsquedas y el desarrollo del script.

Configurar APIs

Para lograr obtener una serie de búsquedas sin restricciones por parte de los servicios que se quieren consultar, es necesario utilizar las APIs. La mayoría de servicios web, incluyendo buscadores y redes sociales, cuentan con alguna API para permitir que los desarrolladores interactúen a través de sus aplicaciones con la información pública.

En el caso de Google, cuenta con el servicio OAuth 2.0 Client ID que a través de dos códigos de validación, permite que el usuario realice una serie limitada de consultas con el motor de búsqueda de Google, y esta información recuperarla para luego ser procesada.

Google Hacking

Lo valioso en este caso es que utilizando cierto tipo de sintaxis se pueden llegar a refinar las búsquedas de tal forma que se puede encontrar información bastante específica.

Etiquetas como intitle, inurl, site ayudan a especificar que la búsqueda se enfoque en lugares claves de las páginas de web. Otras etiquetas como filetype puede ayudar a identificar archivos específicos tales como fotografías, videos, audios o cualquier otro tipo de archivo que se desee recuperar.

Scripts en Python

Basándonos en una conferencia dictada por la gente de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, podemos construir scripts en Python que permiten recuperar información pública utilizando la API de Google. Para lograr esto se hace necesario el uso de algunas librerías específicas:


Estas librerías van a permitir manejar las páginas web y los parámetros de búsqueda. Además de permitir exportar los resultados de la búsqueda en un formato que pueda ser analizable posteriormente, en este caso JSON.

Luego se definen los parámetros de la búsqueda que se desee realizar. Es en este punto donde la sintaxis de Google Hacking puede resultar bastante útil.


Ya solamente resta organizar todos los parámetros siguiendo el formato que utiliza la API de Google para poder realizar la búsqueda. Además la información recuperada se puede organizar en una estructura JSON, la cual podría ser exportada a otra herramienta o utilizar otros paquetes de este mismo lenguaje para su análisis.


¿En qué aplicarlo en Seguridad Informática?

Si llevamos estas herramientas al campo de la seguridad informática, se puede empezar a pensar en varias posibilidades. Por ejemplo, para un profesional que esté interesado en encontrar información sobre vulnerabilidades en aplicaciones o dispositivos para realizar algún tipo de Penetration Test, puede acondicionar algún tipo de búsqueda que le permita reunir información de un mismo tema y tenerla disponible para su uso.

O por ejemplo para alguien que esté auditando la seguridad de una empresa, puede ser útil determinar cual es el nivel de exposición de la información de la empresa en Internet lo cual puede llegar a obtenerse fácilmente con este tipo de scripts.

Como se puede apreciar las oportunidades de aplicación son bastantes amplias, y no se limitan solamente al campo de la seguridad informática. También se pueden extender este tipo de herramientas al análisis de información como parte estratégica del negocio o para conocer el mercado de un producto. Por el potencial de uso, ya han empezado a aparecer herramientas que automatizan y potencian estos procesos con herramientas de visualización por ejemplo. Tal es el caso de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Agradecimientos: Camilo Gutierrez Amaya, Laboratorios ESET.

Espero que sea la base de buenas ideas. Saludos!
#31
Hacking / Aprendiendo a escanear puertos UDP
Marzo 13, 2014, 09:48:52 PM
Durante las auditorías de seguridad, se suelen realizar escaneos sobre los puertos TCP en búsqueda de aquellos que están abiertos para explotar algún tipo de vulnerabilidad. Sin embargo, es una mala práctica común dejar fuera de consideración del análisis los puertos UDP durante los penetration test, siendo que en muchos casos los mismos aportan información relevante e incluso pueden explotarse en ciertas situaciones.

¿Qué es un puerto UDP?

User Datagram Protocol o UDP se basa en el intercambio de datagramas. A diferencia de los paquetes TCP no posee confirmación de recepción o de entrega.

Algunos de los protocolos más conocidos que utilizan paquetes UDP son DNS, DHCP, entre otras alternativas.

Consideraciones de puertos UDP sobre un Penetration Test

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta posee la capacidad de analizar puertos UDP de forma remota. Para llevar a cabo esta tarea, se debe especificar el parámetro –sU. Es importante aclarar de qué forma trabaja Nmap con respecto a este tipo de puertos.

Los estados posibles que Nmap vincula a los puertos UDP son:


  • open: Nmap indica este estado cuando existe una respuesta desde el sistema objetivo. No es una situación usual, ya que por lo general el target no responde.
  • open/filtered: Esta ambigüedad se debe a que en ciertos casos no es posible validar el estado del puerto. Tal como se indicó anteriormente, debido a que este protocolo no posee alerta de recepción o envío, puede darse el caso en que un puerto se encuentre abierto pero no responda a una determinada cadena de entrada. Nmap envía el paquete en blanco, y en ciertos casos, el servicio detrás del puerto UDP de interés puede tomar los datos de entrada como inválidos y no responder. En el caso de que el puerto se encuentre filtrado por un firewall o un IDS/IPS, el comportamiento puede ser similar. De esta forma, Nmap responde con este tipo de respuesta que puede resultar ambigua.
  • closed: Nmap indica este estado cuando existe un error del tipo "ICMP port unreachable error". Esto es un error de tipo 3. En este caso es posible afirmar que el puerto se encuentra cerrado.
  • filtered: Este estado corresponde a algún tipo de error diferente al anterior.

Es importante comprender la diferencia existente entre cada uno de ellos. Quizá el estado que requiere mayor atención es open/filtered. Tal como se explicó anteriormente, esto se debe a que Nmap no es capaz de determinar si el puerto se encuentra abierto o filtrado debido a la ausencia de respuesta.

Definiendo un puerto UDP open/filtered

En caso de querer obtener más información sobre un puerto que ha sido catalogado como open/filtered, existe una alternativa. Debido a que por defecto Nmap envía los paquetes UDP en blanco para determinar si el puerto se encuentra abierto, es posible obtener, en algunos casos, más información forzando la búsqueda de la versión del servicio.

En la siguiente imagen puede observarse la respuesta de Nmap a partir de los 1000 puertos más comunes (parámetro –top-ports).


Se realizó nuevamente el escaneo, pero esta vez especificando el parámetro –sUV para buscar la versión del servicio a la escucha del puerto específico. De esta manera, Nmap realiza pruebas específicas sobre aquellos puertos que fueron identificados como "open/filtered" u "open".


Esta técnica no siempre es determinante pero puede ayudar a obtener mejores resultados. Sin embargo, en este caso, vemos como a partir de la del parámetro -sUV pudo determinar que 944 puertos estaban cerrados contra 991 solo con el parámetro -sU. Esto mismo podría haber ocurrido con un puerto open/filtered donde, luego del análisis más profundo se pueda determinar que en realidad estaba abierto. De todas formas, es importante resaltar que la penalidad de este tipo de análisis se deriva en el tiempo, donde el segundo ejemplo demoró casi el doble del tiempo con respecto al primero.

Saludos!
#32

Existen diversas situaciones en las que se hace necesario anonimizar la navegación. En muchos casos, cuando se está llevando a cabo una investigación es deseable no conectarse a determinados servidores exponiendo la verdadera dirección IP. Una alternativa muy útil para el análisis de malware en estas situaciones es la utilización de JanusVM, una herramienta que trataremos en este post.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es una máquina virtual que corre Linux e incorpora una serie de herramientas como openVPN, Squid, Privoxy y Tor. Luego, mediante la conexión por VPN a esta máquina virtual, se garantiza la privacidad para todas las aplicaciones basadas en TCP. Así, las solicitudes http o https son filtradas por Squid y Privoxy, eliminando contenidos indeseados como publicidad o pop-ups, y removiendo datos que delaten la identidad del usuario. Además, todo el tráfico es redirigido a través de la red de Tor, incluyendo las solicitudes de resolución de nombres de dominio o DNS, con lo cual se garantiza un alto nivel de anonimidad. Sin embargo, no hay que perder de vista que las comunicaciones que utilizan otros protocolos como UDP o ICMP no serán filtradas y podrán exponer la identidad del usuario.

Para comenzar a utilizar JanusVM se debe descargar la máquina virtual, junto con todos sus archivos de configuración, desde el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. La descarga consiste en un archivo comprimido y pesa solamente 21 MB. También es necesario contar con alguna aplicación que permita gestionar y utilizar máquinas virtuales; en este post se ha utilizado un producto de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con tales fines. Luego de haber descomprimido los archivos y ejecutado la máquina virtual, se verá un menú como el de la siguiente imagen:


A continuación deberá configurarse una cuenta para la conexión a la VPN, mediante la opción "VPN User Management". En este caso, se ha creado un usuario llamado mister, como se observa en la imagen:


No es necesario configurar nada más en la máquina virtual de JanusVM. Pero sí debe configurarse la computadora que se conectará a la VPN. Dado que en la mayoría de los casos cuando se quiere realizar análisis de malware e investigaciones de dominios maliciosos se utilizan máquinas virtuales a los efectos de mantener las pruebas en un entorno controlado, eso se hará en esta oportunidad. Por lo tanto, la primera tarea a realizar consiste en cambiar la configuración del dispositivo virtual de red, de tal modo de utilizar NAT, o traducción de dirección de red. De esta forma, la máquina virtual tendrá su propia dirección dentro de una red privada junto con la máquina host. Así, las peticiones serán enviadas al host, quien traducirá estas direcciones a su propia dirección del adaptador físico de red.


Por último, es necesario correr en la máquina virtual el archivo de comandos que se resaltó en la primera imagen de este post, que realizará la configuración de la VPN con la máquina virtual de JanusVM. Esto se observa en la siguiente imagen:


Este proceso crea automáticamente un ícono en el escritorio, mediante el cual puede conectarse a la VPN, ingresando los datos de usuario y contraseña definidos previamente:


A partir de este momento, la máquina virtual de análisis está conectada a la VPN de JanusVM, y todas las solicitudes TCP pasarán por allí y serán filtradas. Esto puede comprobarse consultando la dirección IP en el navegador. Se observará que cada cierto tiempo la dirección cambia a diversos países:


De este modo, todas las comunicaciones TCP que partan de la máquina virtual de análisis contendrán un alto grado de anonimidad. La configuración es sencilla y las ventajas de su utilización numerosas, aunque debe tenerse en cuenta que la máquina virtual de JanusVM debe estar corriendo en todo momento.

Saludos
#33

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta es una herramienta que puede ayudar a los especialistas de seguridad a probar que tan predecibles son realmente las contraseñas utilizadas en las empresas, ya que la forma en que construimos nuestras contraseñas, suele ser un punto débil si no se tienen los cuidados necesarios. Si bien el tamaño de la contraseña es importante, no utilizar combinaciones sencillas también lo es.

Cuando se realiza un Penetration Test una de las primeras fases es el reconocimiento, donde se recopila toda aquella información de la empresa que se encuentre pública: nombres de usuario, direcciones de correo, direcciones IP entre otros datos que puedan dar pistas sobre las configuraciones internas de la organización.

En fases posteriores del PenTest se puede probar, entre otras cosas, lo robusto de las contraseñas utilizadas en los diferentes perfiles de la empresa. Si bien existen diccionarios de palabras que pueden ayudar con la tarea, resultaría interesante construir nuestro propio diccionario basado en la información recopilada y es en este punto donde Mutator Tool puede resultar útil.

¿Qué permite hacer la herramienta?

Mutator Tool, es una herramienta que basada en una palabra puede generar una serie de combinaciones alternando minúsculas y mayúsculas, mezclando números, caracteres especiales y otras cadenas definidas previamente.

Una vez se obtiene el diccionario de palabras puede hacerse una revisión exhaustiva que permita establecer si hay alguna coincidencia entre este listado y alguna de las contraseñas utilizadas en los sistemas de la empresa.

Configuración y ejecución de Mutator Tool

Esta herramienta tiene un módulo llamado mutator.c que contiene una sección en la que se pueden definir los caracteres especiales que se van a utilizar, además de aquellos caracteres que se van a reemplazar y las cadenas adicionales que se van a mezclar con las palabras que hayamos definido.


Una vez configuradas las opciones de mutación, se ejecuta la herramienta para que esta realice los cambios sobre la lista de palabras definida.


En este caso, de una lista de cinco palabras hemos obtenido un diccionario de más de 10000 combinaciones diferentes.


Como se puede ver en la captura anterior, Mutator Tool toma las palabras y les va a haciendo modificaciones de acuerdo a las características que hayan sido definidas.

Alternativas de protección

Como ya mencionamos, esta herramienta puede utilizarse para determinar que tan predecibles pueden ser las contraseñas. Pero está el otro lado de la historia, ¿qué pasa si algún atacante utiliza esta herramienta para tratar de acceder a los servicios de la organización?.

Si bien el objetivo de estas herramientas es ayudar a fortalecer la seguridad de la información, pueden existir personas que las utilicen para tratar de vulnerarla. Y es precisamente esta cuestión lo que plantea la importancia de contar con un segundo factor de autenticación.

Además de tener configurado un Firewall que evite conexiones sospechosas, es importante que los especialistas de seguridad de las empresas hagan una revisión periódica de los logs de seguridad para detectar si hay intentos de conexión que puedan considerarse como peligrosos.

Agradecimientos: Camilo Gutierrez Amaya, Laboratorios ESET.

Saludos a todos!
#34

La seguridad en servidores y plataformas web es un aspecto muy importante, pero que no todos los administradores tienen en cuenta, o incluso no se toman el tiempo suficiente para configurar. Manteniendo nuestro servidor actualizado y realizando las configuraciones correspondientes de seguridad podremos proteger la privacidad, integridad y disponibilidad de los recursos que están bajo el control del administrador del servidor.

Algunas características a tener en cuenta a la hora de contratar un hosting son:


  • Proveedor que se preocupe por la seguridad en sus procesos y productos
  • Que proporcione las últimas versiones más estables de todo el software del servidor.
  • Métodos confiables de copias de seguridad y restauración de las mismas.

Entre las preguntas frecuentes que surgen a la hora de asegurar nuestra información podemos destacar dos: qué datos hace falta que asegure y a través de qué metodologías. Uno de los aspectos fundamentales son las vulnerabilidades, por lo que, en primer lugar, debemos asegurarnos de que el sistema operativo que brindará el servicio esté libre de malware, ya que una infección podría comprometer el rendimiento y el servicio. Este punto se encadena con la disponibilidad de una solución antivirus actualizado. Y por último, es necesario contar con todas las actualizaciones del sistema operativo, ya que un sistema desactualizado puede exponer fallas o agujeros de seguridad que se convierten en posibles vías de explotación para un atacante. Algunas buenas prácticas a la hora de configurar WordPress son:


  • Mover el directorio wp-content: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ayuda a proteger al sitio contra ataques automatizados Zero Day.
  • Cambiar el nombre de usuario admin: este usuario es el que viene por defecto, por lo que es uno de los primeros objetivos de un cibercriminal a la hora de realizar un ataque de fuerza bruta. En las versiones más recientes de WordPress, es posible seleccionar el nombre de usuario durante la instalación.
  • Mínima instalación de plugins: muchos de éstos son susceptibles a Cross-Site Scripting (XSS) e inyección de SQL; si se instalan pocos plugins se reducirán vectores de ataques.
  • Mover wp-config.php fuera del directorio raíz web: si movemos este archivo una carpeta más arriba del directorio web raíz, lograremos que no se vea la configuración de nuestro WordPress.
  • Quitar el listado de directorios en el servidor: WordPress sufre No tienes permitido ver los links. Registrarse o Entrar a mi cuenta lo que ayuda a realizar ataques como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
  • Administración a través de SSL: a veces, el panel de administración se usa por protocolo sin cifrar HTTP, pero si No tienes permitido ver los links. Registrarse o Entrar a mi cuenta estamos enviando los datos encriptados, lo que dificulta la intercepción de información y evita ataques de tipo MITM.
  • Usar la base de datos sin privilegios de administrador cuando no se requiere: por defecto WordPress solo usa una base de datos de usuarios para todos ellos. Pero con algunos ajustes de código se puede usar un usuario de una base con menos privilegios para usuarios anónimos, lo que reduce considerablemente los riesgos.
  • Mantener usuarios con privilegios mínimos: existe la posibilidad de que un usuario con privilegios de administrador tenga una contraseña débil. Concediendo a los usuarios los privilegios indispensables se reducen las posibilidades de que se vean comprometidas sus cuentas.
  • Sacar el "Powered by WordPress" del pie de página: los ciberdelincuentes usan este pie de página en buscadores para encontrar potenciales víctimas vulnerables.
  • Lista blanca de IP para acceder al wp-login.php: generalmente los administradores acceden a su blog desde la misma dirección IP, por lo que se configuran estas direcciones como "de confianza" para poder acceder.

Una última consideración sería contar con un sistema de detección de intrusos, lo que nos va a permitir reaccionar mucho más rápido ante un incidente y por supuesto no almacenar las copias de seguridad en directorios públicos, para evitar que los atacantes descarguen esta información,   pudiendo así aplicar informática forense para obtener información sensible.

Agradecimientos: Ignacio Perez, Laboratorios ESET.

Saludos colegas.
#35

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!
#36

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!
#37

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!
#38
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
#39
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
#40
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