martes, 16 de enero de 2018

¿Como siguen tus huellas?


Antes de que un ataque comience, el atacante debe tener información sobre el objetivo (target), esta fase de recogida de información se puede dividir en dos etapas: Footprinting y Fingerprinting


Footprinting

Footprinting o también conocida como OSINT (Open Source Intelligence) se encarga de la adquisición, tratamiento y posterior transformación en inteligencia de la información conseguida a partir de fuentes de carácter público como prensa, radio, televisión , internet, informes de diferentes sectores y en general cualquier recurso accesible públicamente.
Los buscadores Google (buscador genérico), Shodan (buscador de dispositivos conectados a Internet) y NameCHK (buscador de dominios y nombres de usuario en diferentes servicios) suelen ser utilizados en esta etapa ya que los "dorks"(combinación de operadores para buscar información) con los que cuentan estos buscadores ayudan mucho a obtener exactamente el tipo de información que están buscando.
Como ya se ha mencionado, también se puede obtener información que esta públicamente accesible, como la información acerca de un autor de un documento subido en la red o la información que se puede obtener de las redes sociales.

Un ejemplo de este es el vídeo de un falso "mentalista" que adivina información personal de personas al azar, usando las redes sociales.
"Tu vida entera esta en linea, y puede ser usada en tu contra" el vídeo lo puedes ver aqui, hagamos conciencia sobre lo que publicamos y donde publicamos cierta informacion

Esta etapa no implica actividades ilegales.

Fingerprinting

Se trata de una recogida de datos más específicos que permiten recopilar información sobre TCP/IP de una red o  sistema concreto. Como por ejemplo: topologías, direcciones y nombres  a diferentes niveles, estado de puertos, versiones y  estado de actualización de software y parches de SO, listados de vulnerabilidades, etc. 
La información no suele ser pública y se suele conseguir utilizando técnicas y herramientas más específicas: ingeniería social, phishing, sniffing y scanning.

Esta etapa implica actividades alegales o ilegales.




Fuentes de información:
Curso en linea de Ciberseguridad en Miriadax

miércoles, 10 de enero de 2018

Crawling y Fuzzing

Crawling

El “crawling” también conocido como “spidering” es una técnica que se utiliza en las fases de una auditoria web cuando se realiza el análisis de información, esta técnica puede construir un mapa del sitio web descargando información de forma masiva para posteriormente indexar el contenido de un conjunto de páginas web no estructuradas, se puede decir que se “araña” el sitio web objetivo.

A medida que el “crawler” visita URL, identifica todos los hipervínculos en la página y los agrega a la lista de URL para visitar. Cuando el “crawler” está archivando sitios web, copia y guarda la información a medida que avanza. El archivo se conoce como “repositorio” y está diseñado para almacenar y administrar la colección de páginas web. Un repositorio es similar a una base de datos.


Para la ejecución de esta técnica se mencionan algunas herramientas como:
Black widow
Website Ripper Copier
Burp Suite
DirBuster
WFuzz

Fuentes de información:

Imagenes:
123rf

Fuzzing

Son técnicas capaces de generar y enviar datos secuenciales o aleatorios a una o varias áreas o puntos de una aplicación con la que es posible evaluarlas en búsqueda de vulnerabilidades, como por ejemplo, aquellas que utilizan la red para conectarse con otros módulos y que pueden ser explotables de forma remota.
Estas técnicas proporcionan cobertura a fallos de datos y regiones de código no testados, gracias a la combinación del poder de la aleatoriedad y ataques heurísticos entre otros.

Las pruebas semiautomáticas o automáticas que utilizan estas técnicas se llaman fuzzers. En general, la mayoría de los fuzzers intentan encontrar vulnerabilidades del tipo buffer overflow, integer overflow, format string o condiciones de carrera, aunque también abarcan otros tipos de errores, como inyecciones sql.

El funcionamiento de los fuzzers suele realizarse en las siguientes etapas:
  • Obtención de datos: se obtendrán los datos a enviar de una lista estática almacenada en archivos o en el propio código fuente, o se generara en el mismo momento según las configuraciones efectuadas. Este proceso se puede realizar únicamente al inicio de la sesión o justo antes de cada envío.
  • Envío de datos: una vez se dispone de la información que se desea enviar a la aplicación objetivo, se realizará el proceso eligiendo los mecanismos de entradas que pueden ser a través de un archivo y, en otros casos, las entradas pueden ser a través de la interacción del usuario.
  • Análisis: después de realizado el envío, solo quedará esperar los resultados del fuzzing. Su función principal es la búsqueda de errores  y en el impacto que estos pueden tener sobre el propio sistema de prueba. A partir de los errores es posible determinar cuál de esos errores son críticos y pueden ser explotados.

Técnicas de Fuzzing

Mutación: consiste en partir de una entrada válida y realizar ciertas mutaciones de esos datos, con la intención de que sigan siendo válidas para la aplicación pero lo suficientemente inesperadas para lograr el objetivo


Generación: se deben crear los datos antes de enviarlos, pudiendo descubrir fallos que el otro método obviaba. Normalmente, los datos obtenidos también se sustituirán en una entrada válida del objetivo. Dependiendo de la forma de generar los datos se encuentran otros dos subgrupos:
  • Los recursivos, que se obtienen de la iteración sobre un alfabeto dado o de la repetición de un mismo carácter, como son:

    Permutación: teniendo en cuenta, por ejemplo, el alfabeto hexadecimal “0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F” y buscando datos de seis caracteres  para sustituir de la forma siguiente:
    Repetición: se usa generalmente para la búsqueda de fallos del tipo buffer overflow. Se suele usar un incremento en cada repetición para no alargar el proceso inútilmente

  • El otro subgrupo es el que hace uso de la sustitución, que se centrará en reemplazar cierta parte de una entrada válida por los elementos de un vector de fuzzing. Algunos casos son:

    Integer overflow: ocurre cuando un programa recibe en una entrada un número que está fuera del rango que es capaz de manejar: un cero, un número negativo, un número mayor o menor que el rango actual, o uno con diferente tipo numérico (decimal en vez de entero). Este agujero puede derivar en un ataque de buffer overflow

    Format string: este tipo de ataques se producen cuando se introducen ciertos elementos para proporcionar formato a las cadenas de texto y no existe un mínimo control de seguridad. De esta forma, se puede conseguir una denegación de servicio o incluso la ejecución de código arbitrario en el sistema.
Herramientas para la ejecución de fuzzing :
PowerFuzzer
JBroFuzz
WebScarabat
Wapiti
Socket Fuzzer


Fuentes de Información: