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 Mastodon

Entradas populares

PostHeaderIcon Glosario de términos, conceptos, vocabulario utilizados en 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. También llamado malware criptográfico.

El Ransomware es un ataque informático que infecta un ordenador personal, smartphone (o cualquier dispositivo electrónico) con el objetivo de bloquear su funcionamiento y/o acceso a una parte o a todo el equipo. Su característica más distintiva es que se apodera de los archivos mediante un sistema de cifrado para impedir el acceso de su propietario. A partir de ahí, los ciberdelincuentes exigen al usuario una cantidad de dinero como “rescate” para liberarlos.

 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.

Por último, señalar un problema añadido para las empresas ante lo que se describe como ransomware como servicio (RaaS), donde los desarrolladores venden o alquilan malware a los usuarios en foros de la web oscura. Estos esquemas de afiliados brindan a los atacantes de bajo nivel la capacidad de distribuir y administrar campañas de ransomware, mientras que el desarrollador del código recibe una parte del pago de cada víctima de rescate por la clave de descifrado. Ello permite a los ciberdelincuentes iniciar campañas de extorsión aún sin contar con habilidades para desarrollar su propio malware.

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.

El código malicioso infecta una gran cantidad de hosts con el propósito de lanzar ataques a gran escala contra un objetivo específico.
  •  Un atacante puede estar ubicado en cualquier parte del mundo.
  •  Una gran colección de barcos controlados por el Botmaster.
  •  Botmaster: quién creó el programa de botnet para abrir rootkit u obtener acceso a la máquina remota que estaba infectada con malware.
  •   Controlar uno o más servidores de comando y control (C & C).
  •   Los servidores C&C pueden controlar miles de bots (Zombies) para ataques DDoS masivos. 

DDoS - DrDDoS - DoS


Un ataque DDoS tiene como objetivo inhabilitar un servidor, un servicio o una infraestructura. Existen diversas formas de ataque DDoS: por saturación del ancho de banda del servidor para dejarlo inaccesible, o por agotamiento de los recursos del sistema de la máquina, impidiendo así que esta responda al tráfico legítimo. Un ataque distribuido de denegación de servicio o DDoS (por sus siglas en inglés), es una ampliación de un ataque de denegación de servicio (DoS) que se lleva a cabo a partir de la generación de un gran flujo de información o peticiones desde diversas fuentes hacia un objetivo específico.


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:

Indicador de Compromiso (IoC)



Un Indicador de Compromiso (IoC, por sus siglas en inglés) es un dato que surge producto de cierta actividad en nuestro sistema y que nos aporta información sobre el comportamiento, característica o descripción de una amenaza. En este sentido, un IoC funciona como evidencia que nos permite confirmar que nuestro equipo fue comprometido con malware, pero también es información que puede ser utilizada para prevenir futuros ataques. Dicho esto, un indicador de compromiso puede venir dado bajo la forma de un nombre de archivo, el nombre de un proceso en el administrador de tareas, una URL o dirección IP, comportamiento anómalo en el tráfico web, intentos de inicio de sesión fallidos, entre otros tantos más.

Dado que el malware necesita realizar varias tareas en un sistema para poder llevar a cabo su objetivo, es raro que esto suceda sin dejar evidencia de su existencia ni indicios que nos ayuden a detectar que hubo o hay actividad sospechosa en el sistema, lo cual indicaría que hemos sido víctimas de una infección. Estos rastros o evidencia que deja una amenaza en el sistema son los indicadores de compromiso. Estos IoC son utilizados por las compañías de seguridad para desarrollar perfiles para que soluciones automatizadas, como puede ser un producto de antimalware, puedan detectar una infección en su etapa más temprana.

Estos hashes son un recurso extremadamente valioso para la comunidad y para toda la industria. Por eso es tan común ver que al final de cada artículo técnico aparecen.

Esto último forma parte de un proceso de análisis de información que se conoce como Inteligencia de amenazas, en inglés Threat Intelligence. Este cruce y análisis de información es importante para detectar, mitigar, y realizar informes estadísticos de una campaña maliciosa en proceso, lo cual ayuda a la comunidad a mantenerse al tanto de las actividades de un actor malicioso durante un período de tiempo.

Tácticas, técnicas y procedimientos (TTP)

Los TTP (Tácticas, Técnicas y Procedimientos) de un atacante son las acciones que realiza y métodos que utiliza a medida que avanza y desarrolla el ataque. Desarrollar un ataque, desde el reconocimiento hasta el logro del objetivo, proporciona información procesable en dos áreas.

El proyecto ATT&CK, presentado en 2013, pretendía ser un estándar para describir y categorizar comportamientos de los atacantes y clasificar los mismos en tácticas, técnicas y procedimientos. Actualmente, el proyecto cuenta con varias matrices para diferentes ámbitos, donde se recopilan diferentes tácticas y técnicas dependiendo del tema abordado. Las matrices se basan en tácticas, que son métodos utilizados para alcanzar un objetivo específico; y técnicas, que definen la forma de realizar acciones o estrategias concretas para alcanzar diferentes objetivos definidos dentro de cada táctica. Ambas poseen un identificador único asociado que permite hacer una referencia a ellas sin generar dudas.

  • Initial Access (Acceso Inicial) – El atacante intenta acceder al entorno industrial.
  • Execution (Ejecución) – El atacante intenta ejecutar código malicioso.
  • Persistence (Persistencia) – El atacante intenta mantener la comunicación con la red industrial a través de puertas traseras o comunicaciones ofuscadas.
  • Evasion (Evasión) – El atacante intenta no ser detectado cuando ejecuta acciones maliciosas.
  • Discovery – El atacante intenta detectar el mayor número de activos dentro de la red industrial para seleccionar su objetivo.
  • Lateral Movement (Movimiento lateral) – El atacante intenta comprometer otros activos presentes en la red industrial partiendo de un activo ya comprometido con el objetivo de acceder a otras redes, atacar sistemas de difícil acceso, etc.
  • Collection (Recoleción) – El atacante intenta obtener toda la información posible y que resulte de interés para la ejecución de sus acciones maliciosas en el entorno industrial.
  • Command and Control (Comando y Control) – El atacante intenta comunicarse a través de servidores que se encuentran en su poder con activos comprometidos dentro de la red industrial para enviar órdenes concretas y así ejecutar acciones maliciosas.
  • Inhibit Response Function – El atacante intenta evitar la activación de funciones de seguridad y protecciones físicas, la ejecución de acciones legítimas por parte de los operadores frente a problemas, fallos o estados de seguridad incorrectos.
  • Impair Process Control – El atacante intenta manipular, deshabilitar o dañar los procesos de control físicos existentes a nivel industrial dentro de la organización atacada.
  • Impact (Impacto) – El atacante intenta que el ataque ejecutado tenga cierta repercusión en el proceso industrial interrumpiendo el mismo, alterando los datos para que su funcionamiento no sea el correcto, destruyendo algunos activos de importancia, etc.

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. 


Existen diferentes métodos y maneras de detectar cuando una página web o correo es falso y se trata de un Phishing, es muy importante saber distinguir un correo falso o una página web falsa para no caer en la trampa.

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.

Typosquatting

El arte de confundir con direcciones parecidas

En realidad, el typosquatting, como tal, no es ninguna compleja tecnología que empleen los ciberdelincuentes para sus actividades. Sin embargo, sí que se aprovechan de ella, de esa «circunstancia», para perpetrar algunas de sus fechorías.

¿A que alguna vez te has confundido y has escrito, por ejemplo, «www.GOGLE.es» en lugar de «www.GOOGLE.es»?

El typosquatting es el «arte» de aprovecharse de que los usuarios, en muchas ocasiones y/o de forma habitual, escribimos incorrectamente las direcciones de determinadas páginas web y/o de que en muchas ocasiones no nos fijamos bien o no distinguimos bien lo que hay escrito en un enlace antes de pincharlo.  Esto, que en sí mismo no es un problema, puede convertirse en uno, e importante.

Password Spraying

¿Qué es un ataque de password spraying? pocas contraseñas para muchos usuarios

Password spraying es una técnica utilizada por un atacante para obtener credenciales de acceso válidas que consiste en probar una misma contraseña de uso común en varias cuentas de usuario, para luego probar con otra contraseña. 


Los ataques de fuerza bruta hacen referencia a una de las técnicas utilizadas por los atacantes para obtener credenciales de usuarios legítimos para realizar acciones fraudulentas. El típico ataque de fuerza bruta puede ir desde la prueba de muchas contraseñas sobre un nombre de usuario, hasta el uso de otras técnicas como “credential stuffing” o “password spraying”. En todos los casos el objetivo es el mismo: obtener credenciales de acceso válidas para servicios legítimos.




A diferencia del ataque típico en el que se prueba una gran cantidad de contraseñas para una misma cuenta de usuario, en un ataque de password spraying el atacante obtiene distintas cuentas de usuarios y va probando con una pequeña cantidad de contraseñas para intentar acceder a uno o varios servicios.


Ataques Diccionario

Usar un listado de palabras conocidas para intentar descubrir una contraseña
  •  Usar palabras en un diccionario de un conjunto predefinido de palabras posibles.
  •   Más rápido que la fuerza bruta en el sentido de que solo se utilizan palabras que probablemente tengan éxito.


Smishing



Es lo mismo que el phishing pero en formato SMS

¿Cómo funciona un Smishing?

Generalmente, su funcionamiento es idéntico al phishing, donde el atacante se hace pasar por otra persona o entidad para conseguir algo de este último. Veamos varios ejemplos:

En este ejemplo, los ciberdelincuentes han mandado un SMS a sus víctimas informándoles de una supuesta ayuda económica del Estado para hacer frente al COVID-19, la cual es mentira. Sin embargo, si nos lo creemos y accedemos al enlace, llegaremos a un sitio web malicioso que nos solicitará todo tipo de datos personales, como la tarjeta de crédito, nombre y apellidos, correo electrónico, DNI, etc., para usarlos de una manera fraudulenta.

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.

SIM Swapping (Intercambio - Duplicado SIM)

El SIM swapping es un tipo de fraude que permite a los criminales robar tu identidad mediante el secuestro del número del número de teléfono al obtener un duplicado de tu tarjeta SIM.



Es un timo, fraude que consiste en duplicar (clonar) la tarjeta SIM del teléfono móvil

El SIM swapping consiste en que alguien hace un duplicado de tu tarjeta SIM para poder recibir el SMS con el código de confirmación que los bancos envían al móvil de sus usuarios cuando estos realizan alguna operación (transferir dinero, solicitar un préstamo…) por Internet.    

Para llevar a cabo este timo, el ciberdelincuente se habrá hecho previamente con un duplicado de tu tarjeta SIM, algo que puede conseguir presencialmente o por teléfono según la operadora de telefonía móvil. Si bien nuestra compañía debería identificar de alguna manera al titular (preguntas personales, presentación del DNI…) y asegurarse que la persona que está tramitando el duplicado de la SIM es quien dice ser, esta medida de seguridad puede ser violada.  

Ataque Suministro de Cadena (Supply Chain Attacks)


Un ataque a la cadena de suministro se produce cuando el software es creado y publicado por proveedores de confianza. Estas aplicaciones y actualizaciones están firmadas, por lo que se presupone una legitimidad del ejecutable, y son instaladas automáticamente en todos los clientes que se requieran actualización.

Troyano - RAT


Programa informático que parece tener una función útil, pero también tiene una función oculta y potencialmente maliciosa que evade los mecanismos de seguridad. A veces, mediante la explotación de autorizaciones legítimas de una entidad del sistema que invoca el programa Caballo de Troya.

Ese software malicioso puede ser RAT (Herramienta de acceso remoto), RAT por sus siglas del inglés. (Remote Access Tool)

Gusano - Worm


Los gusanos son programas de autorreplicación que suelen ser autónomos y pueden ejecutarse y propagarse sin la interacción del usuario

Los gusanos tienen una lista de mecanismos de propagación y el más conocido es el de explotar la vulnerabilidad del objetivo. Los gusanos tienen métodos de propagación rápidos. El malware de propagación en ayunas se denomina CODIFICADO. Algunos programas maliciosos tienen una combinación de propiedades de virus y gusanos.
Dos tipos principales de gusanos

  • Gusanos de servicio de red :Aprovecha las vulnerabilidades de la red para propagar e infectar a otros.
  • Gusanos de correo masivo: Explotan los sistemas de correo electrónico para propagar e infectar a otros.

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.

LFI - RFI

 Local File Inclusion (LFI) o, en español, Inclusión local de archivos. Esta técnica consiste en incluir ficheros locales, es decir, archivos que se encuentran en el mismo servidor de la web con este tipo de fallo -a diferencia de Remote File Inclusión o inclusión de archivos remotos (RFI) que incluye archivos alojados en otros servidores. Esto se produce como consecuencia de un fallo en la programación de la página, filtrando inadecuadamente lo que se incluye al usar funciones en PHP para incluir archivos.
  • LFI -un atacante puede leer el archivo mencionado anteriormente en un sistema Linux, en el cual obtiene información sensible del servidor:
En PHP:
  • allow_url_fopen: Permite tratar las URLs como archivos. Si está habilitada tendremos una vulnerabilidad LFI.
  • allow_url_include: Permite hacer llamadas include/require a URLs como archivos. Si está habilitada junto con la anterior tendremos una vulnerabilidad LFI y RFI.

XSS

XSS (Cross Site Scripting) es una vulnerabilidad que permite a un atacante insertar scripts o secuencias de código malicioso en el navegador web de un usuario. El ataque se produce en el código del sitio web que se ejecuta en el navegador, y no en el servidor del sitio. 

Los ataques de tipo XSS pueden tener diversas consecuencias para los usuarios, entre ellas:

  • Recopilación de datos personales
  • Robo de credenciales (usuarios y contraseñas)
  • Robo de cookies
  • Redireccionamiento a sitios maliciosos
  • Acceso al control del equipo de la víctima
  • Cambio de la apariencia visual del sitio

SQLi


LPE

Local Privilege Escalation, elevación local de privilegios.

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. 

Potentially unwanted program (PUP)

Aplicaciones que normalmente se descargan como parte de otro programa (adware, spyware). 

Sandbox - Espacio o entorno asilado

Un sandbox es un mecanismo de seguridad para disponer de un entorno aislado del resto del sistema operativo. Nos podemos hacer la idea que su principal utilidad es ejecutar programas de forma segura y sin peligro de comprometer el resto del sistema operativo.

En informática  es un entorno de pruebas separado del entorno de producción.  Un sistema de aislamiento de procesos o entorno aislado, a menudo usado como medida de seguridad. Por extensión, una máquina virtual que emula el comportamiento de un ordenador completo. Sandboxie, una aplicación que implementa sandbox para Microsoft Windows.

El término Sandbox o Sandboxing, tal y como indica su nombre, se refiere a un “cajón de arena” o un entorno controlado. Todos conocemos esas cajones de arena donde los padres dejan que sus hijos jueguen con sus juguetes. Son lugares seguros donde la arena les protege de golpes y donde pueden divertirse aislados de los peligros del exterior.

Basándose en este concepto, los expertos en ciberseguridad pensaron que una buena forma de proteger las máquinas de los virus era aislarlos en una "caja de arena", es decir, aislar el programa infectado con un virus informático del resto del sistema para que el virus no se extienda. Esto es lo que se conoce como tecnología Sandbox.

Al programa informático que queremos analizar o proteger se le asigna un entorno controlado aislado del resto de la máquina y sistemas. Ahí solo tiene lo que necesita para ejecutarse con normalidad pero de una manera controlada y vigilada; si resulta que ese programa está infectado por un malware, la tecnología Sandbox no le permitirá que infecte al resto de la máquina.

Confianza - Estrategia de Seguridad Zero Trust

Aplicado al mundo de la Seguridad de Sistemas se refiere al hecho de desconfiar por defecto de cualquier conexión, dispositivo, dato o usuario independientemente de que éste se encuentre dentro o fuera de nuestra red corporativa.

Hasta ahora, el paradigma habitual era que el usuario de una red corporativa que se conectaba de forma interna en la red desde su puesto de trabajo o incluso en remoto mediante una VPN clásica lograba acceso a todos los recursos de dicha red por defecto. Para tratar de evitar este evidente problema de seguridad tradicionalmente se ha intentado micro segmentar o dividir la red corporativa en diferentes subredes haciendo más complicado el acceso de los elementos que están en una red hacia o desde los elementos de otra red. Todo ello es complejo de implementar, pero también de mantener pues da lugar a multitud de problemas de gestión y soporte en el entorno de red del cliente.

En un modelo de red Zero Trust este mismo usuario solo conseguiría acceso a aquellos recursos para los que contara con autorización y siempre después de haber sido correctamente identificado. La solución validaría la identidad del usuario, su contexto y sus permisos (entre otros, se valorarían parámetros como su ubicación, el nivel de seguridad del dispositivo o su estado…) de manera que se limitan considerablemente los daños derivados de un mal uso de los elementos de red y datos por parte del usuario.

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.

Código malicioso utilizado después de que el atacante ha entrado en un sistema informático y ha obtenido acceso a nivel de raíz. Rootkit permite a los atacantes obtener acceso continuo a los subsistemas del kernel de forma remota. Cuando el atacante rompió el sistema, instale los rootkits para obtener acceso continuo al kernel. Los rootkits son difíciles de detectar desde el sistema.

     Los rootkits son muy difíciles de eliminar
  • Se cargar antes del sistema operativo.
  • Pueden deshabilitar antivirus y anti Malware. 

Virus Macro -  Documento Malicioso - Mal Doc

¿Qué es una macro?

Una macro es un conjunto de comandos o instrucciones enviados al programa, que se ejecutan secuencialmente una tras otra. De hecho macro es la abreviatura de macroinstrucción. Se usan para agrupar acciones repetitivas y rutinarias. Sirven básicamente para automatizar las tareas realizadas con más frecuencia.

El propósito de las macros es automatizar ciertas tareas repetitivas por ejemplo, pero las pero macros también pueden acceder a la VBA shell de comandos para ejecutar comandos y programas arbitrarios.

  • Es un tipo de virus que usa código de macro o secuencias de comandos, generalmente incrustado en el documento, y se activa cuando el documento se ve o edita, para ejecutarse y replicarse en otros documentos similares.
  • Normalmente los virus se adjuntan a los archivos .exe y luego se pueden ejecutar con ese archivo. Pero este tipo de virus van adjuntos al documento.
  • Los desarrolladores maliciosos desarrollan un virus de macro que un virus normal que se adjunta a archivos .exe. Porque .exe está en la plataforma Windows. Pero cuando un virus se adjunta a un documento, puede propagarse a más plataformas fácilmente y puede hacer lo mismo.
  • Por eso casi todos los proveedores de correo electrónico no pueden enviar archivos .exe. Pero aceptaron estos documentos. Entonces, este tipo de virus se puede propagar fácilmente a través de correos electrónicos.
  • Cada vez que no tratamos con archivos .exe. Pero lo hacemos con documentos. Entonces, estos macrovirus pueden ser dañinos cuando vemos o editamos documentos adjuntos a virus. Y el documento tiene privilegios de lectura, escritura y ejecución. Puede ser una ventaja para este virus. 

Fileless Virus-Malware


¿Qué es y cómo funciona el malware que no utiliza archivos? Si bien los ataques y familias de malware actuales tienen algún tipo de archivo en una etapa de su operaciónel malware moderno que es capaz de evadir la detección incluye al menos algunas capacidades de fileless. Permiten llevar adelante su actividad maliciosa utilizando elementos preinstalados y sin droppear ejecutables adicionales en el sistema de la víctima. Dicho de otra forma, utilizan funcionalidades del sistema operativo en contra del propio usuario. Esto dificulta su detección, ya que el código malicioso se ejecuta a través de procesos legítimos.

El fileless malware, también llamado "malware sin archivos", se produce cuando el malware no entra en nuestro sistema a través de un documento o archivo específico, sino que en realidad se instala dentro de la memoria RAM del propio equipo y se desarrolla con distintos procesos. El malware sin archivos es un tipo de Amenaza Volátil Avanzada o AVT, un código malicioso diseñado para no escribirse en el disco duro y trabajar sólo desde la memoria RAM. Por ejemplo, el gusano CodeRed (y varios otros gusanos de principios de la década de 2000) fueron ejemplos típicos de malware sin archivos. Se propagaban como paquetes de red, residían solo en la memoria y se eliminaban al reiniciarse, aunque la máquina se volvía a infectar inmediatamente desde la red. No había archivos.

  • La idea principal detrás de un ataque sin archivos es que la ejecución del código ocurre en la memoria en lugar de generar un proceso que ejecuta código compilado desde un archivo fuente.
  1.  Documentos maliciosos
  2.  Scripts maliciosos
  3. Viviendo fuera de la tierra (Living off the Land Binaries - LoL) LOLBins
  4. Código malicioso en la memoria

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.

2FA - MFA - 2SV

2 factor Authentication (2FA)
Mulfifactor Authentication (MFA)

Verificación en dos pasos (Two-factor authentication o 2FA)


Durante los últimos dos años, muchos servicios online han comenzado a ofrecer un doble factor de autenticación. Se trata de una medida de seguridad extra que frecuentemente requiere de un código obtenido a partir de una aplicación, o un mensaje SMS, además de una contraseña para acceder al servicio.

Hay tres factores de autenticación:
  • Algo que el usuario sabe: password, pin, passphrase, etc.
  • Algo que el usuario tienellave USB, llave, tarjeta, generador de claves, etc.
  • Algo que el usuario es: huella dactilar, iris, secuencia ADN, firma, reconocimiento facial, reconocimiento de voz u otros identificadores biométricos, etc.
Multi-factor authentication (MFA) o 2FA. La doble autenticación se trata de un sistema que complementa la autenticación tradicional en los servicios. En otras palabras, además de requerir un nombre de usuario y contraseña, solicita el ingreso de un segundo factor de autenticación, como por ejemplo, un código de seguridad llamado popularmente Token. Generalmente, este código se genera en un dispositivo del usuario como un teléfono celular. Luego, la persona debe ingresarlo para poder validarse en el sistema. El siguiente esquema muestra el funcionamiento de la doble autenticación:

Exploit



Es una técnica o un programa que aprovecha un fallo o hueco de seguridad -una vulnerabilidad- 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

Una vulnerabilidad de día 0, Zero Day las llamamos, es una brecha que está siendo explotada y no se ha hecho pública.  Por tanto, el fabricante no la ha corregido porque no es conocida.

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).

0-clik o zero-click


Vulnerabilidad sin intervención directa del usuario, sin hacer clic.

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: Cuando 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.