Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Entradas populares

PostHeaderIcon Términos, conceptos, vocabulario utilizados en noticias de seguridad informática




Vocabulario básico para empezar a entender y comprender mejor las noticias de seguridad informática. Un repaso a un pequeño glosario de términos habituales en el mundillo.




Ransomware - Secuestro ficheros - datos

El ransomware es un tipo de malware que emplea cifrado asimétrico para secuestrar la información de la víctima y solicitar un rescate.

 El cifrado asimétrico (clave pública) es una técnica criptográfica en la que se utilizan un par de claves para cifrar y descifrar un archivo. El delincuente genera de manera exclusiva el par de claves pública-privada para la víctima y almacena la clave privada para descifrar los archivos en su servidor. La víctima solamente podrá acceder a la clave privada tras el pago de un rescate al agresor, aunque tal y como se ha podido comprobar en campañas recientes de ransomware, esto no siempre sucede así. Sin acceso a la clave privada, resulta prácticamente imposible descifrar los archivos por los que se exige un rescate.

El ransomware es el tipo de malware más peligro de los últimos años. Cuando un usuario se infecta por él, todos sus archivos personales se cifran con un algoritmo prácticamente imposible de romper y, posteriormente, se le pide el pago de un “rescate” para poder recuperar los archivos o, de lo contrario, estos se perderán para siempre. Está enfocado a usuarios domésticos.

El segundo tipo de ransomware  más peligroso (el más actual y utilizado), enfocado a grandes empresas, no sólo cifra ficheros de los servidores y ordenadores de los empleados, sino que además amenaza con filtrar los datos robados en un portal público (darkweb .onion, accesible con Tor)  y exponerlos en internet. Además los rescates que suelen pedir son millonarios. Es lógico, una gran empresa tiene información confidencial mucho más importante y valiosa que la que un usuario pueda tener en su casa.

Botnet

Una botnet es un conjunto de ordenadores (red de ordenadores) (sean servidores o ordenadores personales)  que de alguna manera son utilizados para realizar ataques de forma coordinada. Los ataques pueden ser ataques DDoS, enviar spam, ataques fuerza bruta, etc.

CVE (Common Vulnerabilities and Exposures)

Es el "número" o identificador que se le asigna a una vulnerabilidad.

CVE® internacional poner a su alcance y libre de uso público, CVE es un diccionario de vulnerabilidades y exposiciones de seguridad de información de conocimiento público. Identificadores comunes de CVE permiten el intercambio de datos entre los productos de seguridad y proporcionan un punto de índice de referencia para la evaluación de la cobertura de las herramientas y servicios.

Formato:

  •  formato para las entradas CVE es: CVE-YYYY-NNNN (YYYY indica el año y NNNN el número de vulnerabilidad)

CVE-2015-ID

Es decir, Common Vulnerabilities and Exposures, siglas CVE, es una lista de información registrada sobre conocidas vulnerabilidades de seguridad, donde cada referencia tiene un número de identificación único.

 De esta forma provee una nomenclatura común para el conocimiento público de este tipo de problemas y así facilitar la compartición de datos sobre dichas vulnerabilidades.


CVSS -  Common Vulnerability Scoring System 

El CVSS (Common Vulnerability Score System) es un sistema métrico de puntuación (score) con el que poder medir el impacto que una vulnerabilidad puede tener si es explotada. Se trata de un sistema de puntaje diseñado para proveer un método abierto y estándar que permite estimar el impacto derivado de vulnerabilidades.

Se trata de un sistema de puntaje diseñado para proveer un método abierto y estándar que permite estimar el impacto derivado de vulnerabilidades identificadas


Serviría para ver la gravedad de una vulnerabilidad y hacernos una idea de su posible impacto teniendo en cuenta diversos factores

Al entender qué es CVSS, para determinar el impacto que representa una vulnerabilidad se utiliza una escala que va del 0 al 10.

El CVSS clasificará la vulnerabilidad en función de si ésta afecta a la disponibilidad, la confidencialidad, la privacidad, etc. Aunque también se tiene en cuenta el vector de acceso, la complejidad para llevar a cabo la explotación, si se requiere autenticación, etc.

 En primer lugar vamos a hablar de la métrica base compuesta por distintos elementos. El vector de acceso proporciona información sobre la ubicación del atacante en el instante de llevar a cabo la explotación:
  • Local. Misma máquina.
  • LAN. Vulnerabilidad explotable en la misma red.
  • Remoto. Desde Internet.
Otro elemento que se tiene en cuenta para llevar a cabo el score es la complejidad de acceso:

  • Alta. Circunstancias muy especiales deben darse para llevar a cabo la explotación.
  • Media. Complejidad media.
  • Baja. Configuración por defecto. Es realmente sencillo que se pueda explotar.
El elemento de la autenticación indica lo siguiente:
  • Ninguna. No se requiere autenticación para explotar vulnerabilidad.
  • Simple. Se requiere autenticación para explotar.
  • Múltiple. Se requieren varias autenticaciones.
Los últimos elementos son el impacto que la vulnerabilidad tiene sobre la confidencialidad en el sistema, el impacto sobre la disponibilidad del servicio y el impacto en la integridad de los datos del sistema. Éstos últimos en algunos casos no se aplican a la métrica, ya que la vulnerabilidad puede no tener impacto sobre ellos.Una métrica opcional del CVSS es la de entorno que se puede definir como se expone a continuación:




Phishing

  • ¿Qué es el Phishing?

Phishing es el delito de engañar a las personas para que compartan información confidencial como contraseñas y números de tarjetas de crédito. Como ocurre en la pesca, existe más de una forma de atrapar a una víctima, pero hay una táctica de phishing que es la más común. Las víctimas reciben un mensaje de correo electrónico o un mensaje de texto que imita (o “suplanta su identidad”) a una persona u organización de confianza, como un compañero de trabajo, un banco o una oficina gubernamental. Cuando la víctima abre el correo electrónico o el mensaje de texto, encuentra un mensaje pensado para asustarle, con la intención de debilitar su buen juicio al infundirle miedo. El mensaje exige que la víctima vaya a un sitio web y actúe de inmediato o tendrá que afrontar alguna consecuencia.  

Si un usuario pica el anzuelo y hace clic en el enlace, se le envía a un sitio web que es una imitación del legítimo. A partir de aquí, se le pide que se registre con sus credenciales de nombre de usuario y contraseña. Si es lo suficientemente ingenuo y lo hace, la información de inicio de sesión llega al atacante, que la utiliza para robar identidades, saquear cuentas bancarias, y vender información personal en el mercado negro.  

Spear Phishing

El spear phishing es una estafa de correo electrónico o comunicaciones dirigida a personas, organizaciones o empresas específicas. Aunque su objetivo a menudo es robar datos para fines maliciosos, los cibercriminales también pueden tratar de instalar malware en la computadora de la víctima.

Skimimng - Skimmer - Fraude

Fraude conocido como skimmer o tarjeta skimmer, el cual básicamente se trata de un pequeño dispositivo que se mantiene oculto en el cajero automático, y cuyo fin es recoger información de las tarjetas que son ingresadas a dicho cajero.

Los delincuentes suelen instalar esta especie de tarjeta llamada skimmer en los dispositivos en los cuales solemos pasar nuestra tarjeta, es decir cajeros automáticos, como así también en postnet de comercios, y debido a que se trata de una pequeña pieza de plástico que se coloca en la ranura para las tarjetas, son muy difíciles de ser vistas por los usuarios.

Las plataformas de ecommerce suelen ser un blanco elegido por los cibercriminales para realizar principalmente ataques de web skimming —también conocidos como Magecart— a tiendas online. 

Víctimas de una campaña de web skimming cuando intentan añadir scripts maliciosos para robar los datos de las tarjetas de los usuarios una vez que realizaban una compra en la tienda.

CTF (Capture The Flag)

"Capture the Flag" (Captura la bandera) o CTF, donde lo que se captura son ordenadores y servicios, o bien pruebas, según la modalidad a que se juegue: en los CTF de "Ataque y defensa", cada equipo tiene un servidor que debe defender, mientras conquista los del resto. Los CTF tipo 'Jeopardy', en cambio, consisten en un panel de pruebas relacionadas con el hacking.

Consiste en un montón de retos/pruebas/desafíos informáticos que hay que superar en equipo

En seguridad informática, el Capture the flag (CTF) es un concurso o reto (wargame) en el que los participantes luchan por obtener la máxima puntuación superando una serie de pruebas técnicas relacionadas con diferentes disciplinas dentro de la seguridad, como por ejemplo, ingeniería inversa, análisis de red y protocolos, criptoanálisis, seguridad web, etc.

En su versión original (celebrada en el congreso de seguridad Def Con) se juega por equipos. A cada uno de ellos se le asigna una máquina, o incluso una pequeña red, dentro de una red aislada donde se llevará a cabo el juego . La máquina suele ser una imagen vmware que corre un sistema operativo común, con una serie de servicios abiertos, normalmente creados para el evento, y en los que se han incluido (y escondido) diversas vulnerabilidades.

Cada equipo tiene una doble misión: por un lado atacar al resto de máquinas explotando las vulnerabilidades en los servicios y redes de sus contrincantes (robando una “bandera” de la máquina atacada o bien situando la suya propia en el servidor comprometido, como prueba del éxito obtenido) y por otro, defenderse del resto de participantes, que tratarán de hacer lo propio. A medida que avanza el juego el panel de puntuaciones (score-server) se va actualizando, en función del éxito parcial obtenido por cada equipo.

Otra modalidad que está muy extendida (se utiliza por ejemplo en las “quals” de Def Con) consiste simplemente en un panel repleto de pruebas de diferente dificultad (y que puntúan proporcionalmente a la misma) y que suelen estar ordenados según la temática. Las pruebas inicialmente se encuentran bloqueadas, sin poder acceder a estas, pero se van desbloqueando progresivamente conforme se va desarrollando el juego, normalmente a criterio del organizador, que tratará de animar lo más posible el evento, dar pistas para que los concursantes no se queden atascados, etc.

Ambas modalidades son muy divertidas y sobre todo, didácticas. Es la forma perfecta de demostrar tus habilidades y “aprender jugando”. 

Ingeniería Inversa

La ingeniería inversa sirve para obtener información de un producto, cómo ha sido construido o cómo funciona por dentro.

El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado. Hoy en día los productos más comúnmente sometidos a ingeniería inversa son los programas. 

Hook

Técnicamente, una función de “Hook” es una función que puede ser insertada en el sistema de mensajes de aplicaciones de Windows de tal modo que a través de la misma poder procesar la información antes de ser procesada por otra aplicación.

Fuzzear (Fuzzing)

Script o programa que va probando (pruebas) combinaciones para conseguir que un programa falle (explotar vulnerabilidades) y obtener así posibles vectores de ataque.

Es una de las técnicas más utilizadas para la búsqueda de vulnerabilidades es el fuzzing. Consiste en probar, de forma más o menos inteligente, el comportamiento de una aplicación frente a unos datos generados específicamente para hacer que un programa falle, ya sea generando datos en una codificación diferente, enviando cadenas largas o probando a desbordar valores numéricos.

Una de las partes más importantes del fuzzing es la automatización y la instrumentalización. El analista busca generar una batería de pruebas que pueden tardar horas o días en realizarse, por lo que las aplicaciones o frameworks destinados a este tipo de trabajos, suelen incorporar monitores para detectar la caída de la aplicación que se esté probando. Además, permiten grabar la sesión y datos relativos a la caída, como volcado de memoria, captura de red o desensamblado de la función afectada.

Hash

Una función criptográfica hash- usualmente conocida como “hash”- es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud.



Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una entrada (ya sea un texto, una contraseña o un archivo, por ejemplo) una salida alfanumérica de longitud normalmente fija que representa un resumen de toda la información que se le ha dado (es decir, a partir de los datos de la entrada crea una cadena que solo puede volverse a crear con esos mismos datos).

Estas funciones no tienen el mismo propósito que la criptografía simétrica y asimétrica, tiene varios cometidos, entre ellos está asegurar que no se ha modificado un archivo en una transmisión, hacer ilegible una contraseña o firmar digitalmente un documento.

Este sistema de criptografía usa algoritmos que aseguran que con la respuesta (o hash) nunca se podrá saber cuales han sido los datos insertados, lo que indica que es una función unidireccional. Sabiendo que se puede generar cualquier resumen a partir de cualquier dato nos podemos preguntar si se podrían repetir estos resúmenes (hash) y la respuesta es que teóricamente si, podría haber colisiones, ya que no es fácil tener una función hash perfecta (que consiga que no se repita la respuesta), pero esto no supone un problema, ya que si se consiguieran (con un buen algoritmo) dos hash iguales los contenidos serían totalmente distintos.

Formas de uso:


  • Asegurar la integridad de la información
  • Firma digital

Strings (cadena de texto)

Cadena / Cadena de caracteres: Es una consecución de caracteres de texto, dígitos numéricos, signos de puntuación, caracteres especiales o espacios en blanco consecutivos.

File Carving

El File Carving es el proceso de extracción de una serie de datos que se encuentran dentro de otro conjunto mayor de datos. Las técnicas de Data Carving son usadas frecuentemente en Análisis Forense cuando nos encontramos con porciones de datos pertenecientes al Sistema de Archivos que a primera vista no están usados pero que pueden tener sorpresas.

Existen varias técnicas dentro del File Carving, pero lo que debe de quedar claro es que NO se usan las estructuras/metadatos del Sistema de Archivos para recuperar datos. Esto es fundamental, ya que las técnicas "clásicas" de recuperación de ficheros usaban precisamente estos mecanismos que proveen los Sistemas de Archivos, por ejemplo las tablas de ficheros. Esto es así porque la mayoría de los Sistemas de Ficheros no tocan la localización física de los ficheros durante el borrado, sino que se limitan a marcarla como vacía para que se pueda grabar en esa posición. Después del borrado, la entrada en la tabla seguirá estando presente y seguramente el puntero a la dirección de memoria donde se encuentra también, de forma que el fichero podrá ser recuperado.

Así mismo, existen multitud de herramientas tanto software libre como software privativo que permiten realizar el proceso de «file carving» con mayor o menor efectividad y utilidad. A continuación, se describen algunas de ellas:


  • Foremost - http://foremost.sourceforge.net (se abre en nueva ventana) es una herramienta de código abierto desarrollada por la Oficina de Investigaciones Especiales de las Fuerzas Aéreas estadounidenses. Permite trabajar tanto con imágenes de dispositivos (dd, encase, etc.) como directamente sobre el dispositivo. Está orientada a la recuperación de información en entornos Linux. Presenta la limitación de que únicamente es capaz de procesar ficheros de hasta 2 GB.
  • Scalpel - https://github.com/sleuthkit/scalpel (se abre en nueva ventana) es una herramienta de código abierto, basada en Foremost, aunque mucho más eficiente, incluida en The Sleuth Kit. Está orientada a la recuperación de información tanto en entornos tanto Linux, OSX incluido, como Windows.
  • Forensic Toolkit (FTK) AccessData - http://accessdata.com/solutions/digital-forensics/forensic-toolkit-ftk?/solutions/digital-forensics/ftk (se abre en nueva ventana) es una suite muy completa para realizar análisis forenses. Una de las muchas funcionalidades que incorpora es la de «carving» avanzado que le permite especificar criterios de búsqueda como tamaño de archivo, tipo de datos y tamaño de pixel, para reducir la cantidad de datos irrelevantes extraídos.
  • X-Way Forensics (WinHex) - http://www.x-ways.net/forensics/ (se abre en nueva ventana) al igual que FTK es una suite completa para realizar análisis forenses. Su prestaciones de «carving» no son demasiado configurables, si bien si potentes.

Esteganografía

Según la Wikipedia: La esteganografía (del griego στεγανος (steganos):cubierto u oculto, y γραφος (graphos): escritura), trata el estudio y aplicación de técnicas que permiten ocultar mensajes u objetos dentro de otros.

Por otro lado, el estegoanalisis es el estudio de la detección de mensajes ocultos usando esteganografía.

Por ejemplo el estudio de metadatos con herramientas como efixtool

OSINT

La información es poder. Inteligencia de fuentes abiertas u «Open Source Intelligence» (OSINT) hace referencia al conocimiento recopilado a partir de fuentes de acceso público. El proceso incluye la búsqueda, selección y adquisición de la información, así como un posterior procesado y análisis de la misma con el fin de obtener conocimiento útil y aplicable en distintos ámbitos. En español Inteligencia de Fuentes Abiertas. Se trata de un conjunto de técnicas y herramientas para recopilar información pública, correlacionar los datos y procesarlos

Existen multitud de fuentes abiertas a partir de las cuales se puede obtener información relevante, entre las que destacan:

  • Medios de comunicación: revistas, periódicos, radio, etc.
  • Información pública de fuentes gubernamentales.
  • Foros, redes sociales, blogs, wikis, etc.
  • Conferencias, simposios, «papers», bibliotecas online, etc.

Herramientas de OSINT para mejorar tus investigaciones 

  • Búsquedas por ubicación: Muchos de los posteos o comentarios que se suben a Internet quedan georeferenciados, por lo que herramientas como Geo Twitter, u otras del proyecto Geo Social Footprint, pueden ser utilizadas para realizar búsquedas de noticias o posteos en una determinada ubicación.
  • Palabras claves: A la hora de definir palabras claves es necesario conocer el idioma y lunfardo, ya que muchas palabras cambian según la región. En este sentido, las noticias en diarios locales pueden ser muy útiles para definir palabras claves. En el sitio Newspaper Map encontraremos los diarios locales de diferentes ciudades y regiones de todo el mundo.
  • Datos Laborales, documentos de identidad, etc: Muchas personas no tienen redes sociales, cuentas bancarias o tarjetas de crédito, sin embargo, pueden ser encontrados a través de páginas gubernamentales a través de su documento de identidad, seguro social, inscripción tributaria, servicios públicos o incluso infracciones de tránsito.
  • Generación de identidades para la investigación: Tal como explicamos en el artículo sobre aspectos legales a tener en cuenta a la hora de realizar pruebas de seguridad, es recomendable realizar todas las investigaciones desde una identidad falsa, pero esta identidad no puede ser creada con datos reales de otra persona. En este sentido, existen aplicaciones como Fake Name Generator para crear los datos de un individuo y This person does not exist para crear fotos falsas a partir de inteligencia artificial. Además, la idea es que estos perfiles tengan actividad y parezcan reales, para lo que se pueden utilizar aplicaciones como PostCron para configurar posteos automatizados.
  • Buscadores: Google, Bing o Yahoo no son los únicos buscadores en Internet. Por ejemplo, puedes utilizar Shodan para buscar puertos o servicios publicados a Internet, incluso geolocalizados.
  • Máquinas virtuales con herramientas de OSINT: Además del ya conocido Kali, también existe Intel Techniques, un Linux virtualizado y preconfigurado con más de 25 herramientas para hacer investigaciones, búsquedas e inteligencia en fuentes abiertas.

Remote code execution (RCE)

El principal impacto que puede generar esta vulnerabilidad es la ejecución remota de código (RCE -Remote Code Execution-).

Una vulnerabilidad que nos deja ejecutar comandos de manera remota.  Es una de las vulnerabilidades más graves. Se considera crítica.

Payload

¿Carga útil?

Por ejemplo en un virus informático, el payload es la carga dañina de un virus, es decir, lo que estos son capaces de hacer al activarse.

Este término se refiere a los efectos destructivos, nocivos o molestos que cualquier virus puede producir cuando ya ha tenido lugar su infección, además de los efectos secundarios de dicha infección (cambios en la configuración del sistema, reenvío de e-mail, ejecución del virus en el arranque del sistema o de Windows, etc).

Un Payload, es un programa que acompaña a un exploit para realizar funciones especificas una vez el sistema objetivo es comprometido, la elección de un buen payload es una decisión muy importante a la hora de aprovechar y mantener el nivel de acceso obtenido en un sistema. En muchos sistemas existen firewalls, Antivirus y sistemas de detección de intrusos que pueden dificultar la actividad de algunos payloads, por este motivo se suelen utilizar encoders para intentar evadir cualquier AV o Firewall.


Malware o APT

Malware: Cualquier programa, documento o mensaje, susceptible de causar perjuicios a los usuarios de sistemas informáticos. MALicious softWARE.

Se habla mucho de los Advanced Persistent Threat (APT) en referencia a individuos o grupos con la capacidad, persistencia y efectividad para comprometer la seguridad de los sistemas informáticos de cualquier organización que se propongan.

Adware: Son aquellos programas que muestran publicidad utilizando cualquier tipo de medio, por ejemplo: ventanas emergentes, banners, cambios en la página de inicio o de búsqueda del navegador, etc. Puede instalarse con el consentimiento del usuario y su plena conciencia, pero en ocasiones no es así. Lo mismo ocurre con el conocimiento o falta del mismo acerca de sus funciones. 

Dropper


Es un fichero ejecutable que contiene varios tipos de virus en su interior.

¿Qué es un dropper? Distribuir malware

Un dropper es un tipo de malware que se caracteriza por contener un archivo ejecutable, como puede ser un .exe, .msi, .docm, etc. En ocasiones, únicamente está compuesto por un código inofensivo a simple vista que se activará cuando reciba la orden para descargar el malware que se encargará de infectar la máquina.

El principal propósito de los droppers es instalar otro malware en el equipo aprovechándose de las vulnerabilidades que pueda tener ese equipo, como por ejemplo, que se encuentre desactualizado o que use software que no ha sido parcheado. Los dropper también pueden llegar a realizar modificaciones en la configuración del equipo necesarias para instalar el malware que pasan desapercibidas para el software de protección.

Un dropper pueden ocultarse bajo un archivo comprimido aparentando ser un archivo inofensivo, como una imagen o un documento pdf. También puede suceder que se descargue en la máquina al visitar una página web infectada previamente, inyectando código malicioso.

Una vez se ejecuta el dropper en el equipo de la víctima, este se realizará en segundo plano y sin que el usuario se dé cuenta de todas las acciones maliciosas para las que esté diseñado. Una vez ha finalizado, se desinstala automáticamente eliminando cualquier rastro que haya podido dejar durante su ejecución en el equipo infectado.


ELF -ficheros- (Executable and Linking Format): Ficheros ejecutables (programas), propios del sistema operativo Unix/Linux.

Polimórfico / Polimorfismo: Es la técnica que utilizan algunos virus para cifrar (codificar) su firma de forma diferente en cada ocasión y además las instrucciones para realizar dicho cifrado.

Rootkit: Programa diseñado para ocultar objetos como procesos, archivos o entradas del Registro de Windows (incluyendo los propios normalmente). Este tipo de software no es malicioso en sí mismo, pero es utilizado por los piratas informáticos para esconder evidencias y utilidades en los sistemas previamente comprometidos. Existen ejemplares de malware que emplean rootkits con la finalidad de ocultar su presencia en el sistema en el que se instalan.

Vulnerabilidad

Según la RAE, la palabra vulnerable significa “que puede ser herido o recibir lesión, física o moralmente”. Cuando hablamos de personas vulnerables nos referimos a aquellas que son más frágiles y se las puede herir física o moralmente por tener condiciones sociales, culturales, políticas, etc. diferente de otras personas. También puede ser vulnerable por circunstancias de la vida –fallecimiento de un familiar, pérdida de trabajo…- que le hace estar más débil y finalmente por ser más frágiles que otros colectivos, como es el caso de los niños y ancianos. Resumiendo, es como si una persona tuviese un agujerito en su cuerpo a través del cual se le puede hacer daño con diferentes cosas.
Pues bien, cuando se dice que un sistema es vulnerable o un programa tiene una vulnerabilidad, significa que tienen un agujero que puede ser utilizado para colarse dentro de ellos. Éstos, generalmente están provocados por errores de programación y/o diseño, que permiten que un tercero meta por ellos programas que puedan realizar acciones maliciosas como infectar dispositivos, robar información privada, controlar dispositivos de forma remota, etc.

Exploit

Es una técnica o un programa que aprovecha un fallo o hueco de seguridad -una vunerabilidad- existente en un determinado protocolo de comunicaciones, sistema operativo, o herramienta informática.

Bug: Este término se emplea para indicar un fallo o error en un programa informático. Cuando uno de ellos tiene errores, se dice que tiene bugs.

Cómo ya sabéis que es una vulnerabilidad, ahora entenderéis lo que es un exploit: es un programa creado específicamente para aprovechar una vulnerabilidad del sistema o programa.
¿Te imaginas que pasaría si alguien descubre un fallo de diseño en la cerradura de la puerta de un modelo de coche, de tal forma que se pudiese abrir fácilmente sin la llave específica? Está claro, si no se soluciona el problema rápidamente y, además, no se ponen medidas de protección alternativas, estamos expuestos a que cualquiera pueda abrir nuestro coche con una llave diseñada específicamente para explotar ese fallo.

Un exploit es un programa que explota una o varias vulnerabilidades en un software determinado, frecuentemente es utilizado para ganar acceso a un sistema y tener un nivel de control sobre él.

Backdoor / Puerta trasera: Se trata de un programa que se introduce en el ordenador y establece una puerta trasera a través de la cual es posible controlar el sistema afectado, sin conocimiento por parte del usuario.

PoC (Proof of Concept) - Prueba de Concepto 


Una prueba de concepto o PoC (por sus siglas en inglés) es una implementación, a menudo resumida o incompleta, de un método o de una idea, realizada con el propósito de verificar que el concepto o teoría en cuestión es susceptible de ser explotada de una manera útil.

La PoC se considera habitualmente un paso importante en el proceso de crear un prototipo realmente operativo.

0-day - Ataque día cero

Esta es una vulnerabilidad que, por ser muy reciente, no aprovecha en su totalidad todas las ventajas que podría proporcionar. En este ámbito, la prueba de concepto se utiliza como demostración de que una aplicación o servicio puede ser vulnerable.

Puede parecernos poco problemático el hecho de que se conozca una vulnerabilidad, porque lo normal, es que el fabricante desarrolle una solución lo antes posible para evitar males mayores.
Sin embargo, ¿qué pasa si alguien encuentra una vulnerabilidad en un programa o sistema y no se lo cuenta a nadie? Se puede dar el caso, de hecho es bastante común, que ni el fabricante ni los usuarios sean conocedores del problema... Estaríamos ante un fallo muy grave ya que un atacante podría explotar dicha vulnerabilidad sin que el usuario fuese consciente de que es vulnerable. A esta situación es a lo que se conoce como un 0-day (sólo “una persona” (o muy pocas) sabe que la cerradura tiene ese problema).

Vector de ataque

Ya sabemos que es posible aprovecharse de fallos de seguridad detectados en sistemas y aplicaciones para intentar “colarse” dentro de ellos, pero ¿cómo lo hacen? Pues obviamente utilizando algún método/mecanismo/vía que te permita hacerlo. Sería el mecanismo o punto de entrada del ataque.

Dependiendo de qué tipo sea la vulnerabilidad detectada, los ciberdelincuentes utilizarán un método u otro: enviando correos con un adjunto que al ejecutarlo podría descargar un virus en el ordenador, con un enlace que al hacer clic en él redirige al usuario a un sitio malicioso que descarga aplicaciones maliciosas en el dispositivo, descargando ciertos plugin, códec u otras herramientas creyendo que realizan unas funciones cuando en realidad hacen otras, etc.


 Direcciones (offset) y punteros (pointer)

En informática, un offset dentro de un array u otra estructura de datos es un entero que indica la distancia (desplazamiento) desde el inicio del objeto hasta un punto o elemento dado, presumiblemente dentro del mismo objeto. El concepto de distancia es solamente válido si todos los elementos del objeto son del mismo tamaño (típicamente dados en bytes o palabras).


  • Hexadecimal (hex): Es un sistema de numeración de base 16 que usa la rom, se escribe con números y las letras de la a a la efe. Para identificarlo se escribe "0x(número)" aunque en AM se escribe "$(número)". Fíjate bien que cantidades están en decimal y cuales en hexadecimal. Scripted al compilar convierte automaticamente las cifras decimales que escribas a hex.
  • Byte: Un byte son dos cifras hexadecimales, en la rom la información se escribe en bytes. Por ejemplo esto "0F 00 19 D1 16 08 09 04" es una serie de 8 byes y así se escribiría un messagebox en la rom.
  • Dirección: Para localizar donde se guardan los datos de la rom, todos sus bytes están numerados desde el 0x000000 hasta el 0xFFFFFF (en decimal 0-16777215). Por ejemplo si la serie anterior la compilamos en la dirección 0x123456 significa que el primer byte (0F) está ahí, el 2º (00) en 0x123457, el 3º (19) 0x123458 y así sucesivamente. Obviamente si compilas algo en una dirección ya ocupada sobreescribirás lo que ya hubiese.
  • Puntero: Los punteros son como la rom encuentra la información. Aunque para los humanos la serie anterior está en 0x123456 para la rom esto se escribe así: 56341208. ¿Porqué? Pues por una parte la rom permuta los bytes y además añade un prefijo.
  • Permutar: Cuano decimos permutar nos referimos concretamente a escribir una serie de bytes al revés y por parejas. Como ejemplo: 00 11 AB 23 > 23 AB 11 00. En la rom todas las referencias a otros datos se escriben así, por ejemplo las flags, las direcciones, los índices... todo.
  • Prefijo de un puntero : Para referirse a los datos de la rom se prefija 08 a las direcciones. Eso es porque cuando el juego se ejecuta, hay datos que no están escritos en la rom como tus medallas, tu nombre tu equipo... todos esos datos se guardan en la partida guardada y también se necesitan cargarse con punteros. 

 Overflow

 SEH overflow (también es un stack based overflow)

Shellcode

Encodear, opcodes, 


Primero necesitamos saber el significado etimológico de shellcode.

Shell es como se le dice en ingles (ahora universal) a una terminal. Por lo tanto shellcode significa que es un código que nos crea una terminal para que la usemos.

Actualmente el termino shellcode no solo se refiere al código que nos permite crear una shell, sino que se extiende a códigos con mas funciones como pueden ser crear usuarios, matar/crear un determinado proceso, dar permisos a una carpeta, etc. Y tecnicamente... una shellcode es una porcion de codigo compilada para un determinado procesador que se ejecuta dentro de otro proceso previamente preparado para que la ejecute (ej: stack overflow).

Cuando se produce un overflow en un programa, podemos sobreescribir EIP “Instruction Pointer” (entre otras cosas). Si sobreescribimos este registro con una dirección que contiene código propio, se ejecutará. Esto es, podemos ejecutar código con los permisos que tiene el programa ejecutado. ¿Qué pasa si el programa tiene el bit de suid activado? Lo dejo a vuestra imaginación. Encontrar este tipo de xploits es muy difícil hoy en dia, puesto que hay muchas herramientas de análisis de código que evitan que se produzcan tremendos errores de seguridad. Aun así, podemos encontrar o programar algo a medida simplemente para aumentar conocimientos, que es en lo que consiste la curiosidad (lo otro se llama ‘prensa rosa’).

¿Qué es una Shellcode?


Una shellcode no es mas que el conjunto de opcodes (instrucciones en hexadecimal) que ejecutará el procesador para realizar un acción en concreto, las shellcodes suelen estar escritas en ensamblador ya que nos permite un control total sobre el proceso de ejecución además de un tamaño inferior de la shellcode.

Stack Buffer Overflow


In software, a stack buffer overflow occurs when a program writes to a memory address on the program's call stack outside of the intended data structure; usually a fixed length buffer.

Es decir, la vulnerabilidad Stack Buffer Overflow ocurre cuando una aplicación no controla correctamente el número de bytes que son almacenados en una dirección de memoria previamente reservada, de forma que la cantidad de bytes que se van a almacenar son superiores a los reservados.

Nuestro principal objetivo es llegar a sobrescribir la dirección de retorno (almacenada en la PILA) con un valor que apunte a nuestra shellcode. 

  • Registro EIP (Extended Instruction Pointer): Este registro apunta a la siguiente dirección de memoria que el procesador va a ejecutar.
  • Instrucción RETN: Es la instrucción encargada de recoger el valor de ESP y almacenarlo en el registro EIP, de este modo el valor de ESP será la próxima dirección de memoria que el
    procesador va a ejecutar.
  • Dirección de retorno: Es el valor exacto que nos indica la dirección de memoria donde habíamos dejado la aplicación ante de entrar en una subfunción, para así cuando esta termine volver a la posición exacta donde nos quedamos. Este valor se encontrará almacenado en la siguiente dirección de memoria del EBP de la subfunción

Debuggers - Dissamblers - Depurador

Del Código Máquina al Lenguaje Ensamblador


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.

  • Data: La sección de datos de un programa hace referencia a una región específica de memoria. Contiene lo que se conoce como las variables estáticas que no cambian con la ejecución del programa. También en esta sección se encuentran las variables globales, que están disponibles desde cualquier parte del programa.
  • Code: En esta región de memoria se almacena el código que se ejecuta del programa donde se alojan todas las instrucciones que se van a ejecutar.
  • Heap: El heap es una región de memoria que se utiliza para alocar nuevos valores durante la ejecución del programa como así también para eliminarlos una vez que se dejaron de utilizar. El heap es una memoría dinámica y su contenido varía a medida que se ejecuta el programa
  • Stack (Pila): La pila se utiliza para alojar las variables locales, parámetros y valores de retorno de una función como así también contiene las direcciones de retorno entre una llamada a una función y otra, siendo muy útil para controlar el flujo de ejecución del programa.


Cualquier software se ejecuta de forma secuencial, es decir una instrucción detrás de otra, la siguiente instrucción a ejecutar se almacena en un registro llamado IP, mediante programación se puede desviar esa ejecución hacia funciones que realicen tareas concretas, el programa en un principio ejecutará el flujo normal hasta que llega a una llamada a una función, en ese momento guarda en RAM el registro IP, ejecuta la función y retorna al flujo principal del programa porque fué capaz de leer el valor almacenado en RAM del registro IP.

Parche o actualización de seguridad

Después de todos los elementos mencionados anteriormente, tenemos lo que se conoce como parches de seguridad, que son básicamente actualizaciones, que entre otros problemas corrigen los fallos de seguridad detectados y que impiden que se sigan explotando las vulnerabilidades. Digamos que después de la tormenta llega la calma, una vez que se haya publicado un parche de seguridad y el usuario haya actualizado sus programas y aplicaciones, los problemas desaparecen… hasta que se haga público una nueva vulnerabilidad. Ya os iréis dando cuenta, ¡los “malos” nunca descansan!
Si has terminado de leer este artículo, ya no te sonará a chino estos conceptos cuando los encontréis escritos en algún artículo o escuchéis a alguien utilizarlos en alguna conversación, y además, habréis dado un paso más para ampliar vuestra cultura de la ciberseguridad. ¡Enhorabuena!






Fuentes:
https://www.osi.es/es/actualidad/blog/2015/07/31/los-5-conceptos-de-seguridad-que-debes-conocer-si-o-si
http://www.pandasecurity.com/spain/homeusers/security-info/glossary/

1 comentarios :

Jhon Córdoba dijo...

Genial, excelente contenido .Muchas gracias. :)

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.