¿Cómo funcionan los permisos en Linux?

Como vimos en el artículo anterior, unos permisos mal configurados pueden hacer que un atacante que haya conseguido acceso a un sistema Linux, sin apenas privilegios, pueda explotarlos para convertirse en root.

Vídeo de la entrada

En esta entrada veremos exactamente cómo funcionan los permisos en linux. Pero antes veamos cómo podemos listar un directorio para ver los permisos que tienen sus elementos. Por cierto, directorio y carpeta es lo mismo, por si te generaba alguna duda.

Como os decía, listaremos los elementos con el comando ls y los argumentos -la. Realmente para ver los permisos es suficiente con poner -l pero a mi me gusta usar la otra opción ya que así, además de mostrar ficheros y carpetas que empiezan por un punto (elementos ocultos), se muestra los permisos del directorio actual y del directorio que engloba actual.

Comparación del output según el argumento del comando ls

Una vez hayamos lanzado el comando veremos bastante contenido así que vamos a desglosarlo de derecha a izquierda:

Partes del resultado del comando ls
  1. Esta parte es la más común. Muestra el contenido de la propia carpeta como sus ficheros y sus directorios.
  2. Aquí se indica cuándo fue modificado cada elemento por última vez.
  3. Tamaño en bytes de cada elemento. Hay una opción para mostrarlo de forma más entendible.
  4. En este apartado vemos que hay 2 columnas con un nombre cada una. La de la izquierda indica el usuario propietario del elemento y la de la derecha el grupo. Por si no lo sabes, los grupos pueden englobar varios usuarios y se usan para organizar y restringir el acceso a diferentes recursos de uno forma más sencilla. Luego veremos cómo.
  5. Al lado de estas 2 columnas vemos un número que indica la cantidad de referencias hacia ese enlace que existen. Si sentís curiosidad sobre a qué se refiere con “enlaces” os dejo este link. Aunque no es relevante para lo que estamos haciendo.
  6. Finalmente, la última parte, los permisos. Por ejemplo:

-rwxrw-r–

Existen 10 posiciones en los permisos de Linux. La primera parte, empezando por la izquierda, nos indica el tipo de fichero. El más común es el guión, que indica que es fichero corriente. Aunque existen otros, como la d que especifica un directorio. Hay más pero no tienen mucha importancia para lo que nos interesa.

Las otras nueve posiciones se dividen en 3 packs de 3 permisos. En todas siguen el siguiente orden: rwx. ¿Y que quieren decir? Como ya te debes haber imaginado: r de lectura, w de escritura y x de ejecución.

Funcionamiento permisos linux
Funcionamiento permisos

Por lo tanto, en cada uno de estos packs se definirán unos permisos. El primer pack de 3 (rojo), definirá los permisos para el propietario. El segundo (verde), los permisos para los usuarios que pertenezcan al grupo establecido y el tercero (morado), los permisos para el resto de usuarios del sistema.

Veamos un ejemplo a ver si queda más claro. En este caso, el usuario kali es el propietario del fichero user_creds y básicamente podrá hacer lo que quiera ya que tiene los 3 permisos configurados. Además, cualquier usuario que esté en el grupo “devs” podrá leer su contenido. Ahora bien, estos no podrán ni escribirlo ni ejecutarlo. Todos los usuarios restantes del sistema no podrán ni leer, ni escribir, ni ejecutar.

Ejemplo permisos

Por cierto, cabe destacar que los propios directorios tienen permisos, cómo habéis podido comprobar ( . y .., en la foto), y funcionan igual.

Para resumir: existen 3 partes donde en cada una se definen 3 permisos y que la primera parte define los permisos del propietario, la segunda los del grupo y la tercera al resto de usuarios. ¿Sí?

En la próxima entrada veremos otro ejemplo de mala configuración en los permisos de un sistema Linux para escalar privilegios y llegar a ejecutar comandos como root.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Escalar privilegios con CRON

Una vez hemos conseguido acceso a la máquina de nuestro objetivo tendremos que identificar qué privilegios tenemos sobre el entorno. Si no somos administrador, necesitaremos encontrar un fallo de configuración del sistema, una contraseña anotada en un fichero de texto o ingeniárnoslas de una forma más creativa para ejecutar comandos como root. En este vídeo hablaremos sobre una de estas formas creativas. Escalar privilegios con el servicio CRON.

Si quieres, puedes ver el vídeo explicativo de este post:

Bien, la definición de CRON sacada de Wikipedia es la siguiente:

En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora a la que deben hacerlo se especifican en el archivo crontab. El nombre cron proviene del griego chronos (χρόνος) que significa «tiempo».

cron (Unix) – Wikipedia

En resumen, CRON es un servicio que nos ayuda a programar la ejecución de tareas. Por ejemplo, realizar copias de seguridad, borrado de ficheros temporales, limpieza de una base de datos o ejecución de scripts. El fichero crontab lo podemos encontrar en el directorio /etc y en él es dónde se configurarán las tareas.

servicio CRON

Como podéis ver hay 7 columnas: minuto, hora, día, mes, día de la semana, nombre de usuario y comando a ejecutar. Veamos un ejemplo para que resulte más fácil de entender todo esto. Si quisiéramos ejecutar el comando nmap para monitorizar los puertos abiertos que tiene un ordenador el día 5 de cada mes, a la 1 de la madrugada, lo especificaríamos de esta forma:

qué es CRON
Tarea con nmap para realizar escaneo automático

Ahora bien, seguro que, en más de una ocasión, querremos ejecutar más de 1 vez al mes una tarea. Incluso múltiples veces en un mismo día. Así que, vayamos por partes.

Como veis he usado el asterisco en las columnas del mes y día de la semana. Esto me permite especificar que la tarea se ejecute en cada ocurrencia. Por ejemplo: en el caso del día de la semana, se ejecutará cada día. En el ejemplo anterior, será el día 5 de cada mes ya sea lunes, martes, miércoles… Por otro lado, si quisiera que se ejecutara cada minuto, no podría poner un 1 directamente en la columna de minutos ya que, entonces, se ejecutaría en el minuto 1 de cada hora y, por lo tanto, solo 1 vez. Lo que debería hacer, es especificarlo con */1 o, en el caso que quisiera cada 5 días, poner */5 en la columna del día del mes.

La parte del comando, es simplemente especificar el comando a ejecutar.

¿Se entiende? Si tienes dudas, pon un comentario 🙂

Perfecto, ahora que sabemos cómo funciona CRON, pasemos a ver cómo podemos usarlo a nuestro favor para escalar privilegios y llegar a ejecutar comandos cómo administrador.

Si quieres preparar el escenario que comentaré a continuación puedes ver cómo hacerlo en el vídeo que hay al inicio de este post.

Imaginemos que hemos conseguido acceso a un sistema con el usuario www. Lo primero que haremos es ver qué tiene en su directorio. Al no tener nada interesante, pasaremos a un directorio más atrás que nos llevará a /home. Ahí volvemos a lanzar el comando ls y observamos un script en bash. Con los argumentos -la podemos ver los privilegios de la carpeta y vemos que el script pertenece al usuario root, que tiene control absoluto sobre el fichero, pero también nos damos cuenta que cualquier usuario puede leerlo y modificarlo. ¿Interesante verdad?

script con todos los permisos
Script encontrado

Si quieres saber cómo funcionan los permisos te recomiendo que veas este vídeo (enlace).

Lo siguiente es ver el contenido del script. Parece que guarda la palabra “running” en un fichero temporal llamado message.txt.

contenido del script
Contenido del script

Como no tiene mucho más misterio, seguimos con nuestra enumeración en el sistema a ver si encontramos algo que nos permita ser root. Así que nos disponemos a ver el contenido de crontab para ver si sacamos algo de información.

escalando privilegios con CRON
Contenido de crontab

!Bingo! Parece que hay programada una tarea que se ejecuta cada minuto por el usuario root y es la ejecución del script que hemos encontrado. Ahora se nos debería encender una lucecita en la cabeza al recordar que este script lo puede modificar cualquiera. Así que vamos a crear una un shell que se ejecutará en una ip y en un puerto concreto. A esto se le llama shell inversa.

shell inversa para escalar privilegios con CRON
Modificación del script para ejecutar una shell inversa

La clave de esto es que, el que ejecutará el script es el usuario root y por lo tanto la shell que se creará tendrá los mismos permisos. Por esta razón vamos a poner a la escucha netcat en el puerto especificado anteriormente y, si todo va bien, recibiremos la shell cuando se ejecute la tarea.

netcat recibe la shell inversa logrando escalar privilegios con CRON
Ejecución de netcat para recibir la shell inversa del usuario root

Ahí la tenemos, ¡ya somos root! Hemos logrado escalar privilegios con el servicio CRON.

Como veis, puede ser fácil que nos encontremos con un escenario parecido en una auditoría real. Por eso, al programar tareas con CRON, deberemos asegurarnos que estos no puedan ser accesible ni modificables por ningún usuario. Otra opción es no ejecutar scripts como root y crear usuarios concretos, con privilegios limitados, para realizar esas tareas.

¡Espero que te haya resultado interesante!
Otros artículos que te pueden interesar, aquí.

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Análisis y vulnerabilidades – WordPress (III)

wordpress wpscan

En la entrada anterior vimos, de forma práctica, distintas vulnerabilidades que podemos encontrar en uno de los CMS más usados. En esta ocasión hablaremos de la herramienta por excelencia para realizar escaneos a WordPress, WPScan.

WPScan – información general

Esta herramienta es de las más utilizada para analizar sitios montados con WordPress. Contiene un listado de configuraciones deficientes y todas las vulnerabilidades conocidas, juntamente con las de los temas, plugins y del propio Wordpres suman más de 21.000. Por lo tanto, es capaz de realizar un escaneo al sitio web de forma detallada. Además, permite la enumeración de plugins, temas e incluso usuarios.

La herramienta puede lanzarse de distintos modos con el fin de generar el menor ruido en el servidor y evitar ser detectado. Estos modos son usados para indicar la forma de detección de la versión de WordPress y en la enumeración tanto de plugins como de temas instalados:

  • pasivo
  • agresivo
  • mixto

Ejemplos de información extraída

Para los siguientes ejemplos se ha realizado un escaneo a un WordPress vulnerable por defecto (podrás encontrar el enlace en las referencias del final).

Escaneo básico

wpscan --url URL

Este comando hará un análisis al sitio web en busca de la versión, los temas, plugins e intentará detectar ficheros de backup. En el caso de tener una clave de la API de WPVulnDB también nos mostrará un listado de vulnerabilidades detectadas.

wpscan análisis básico
Información detectada correspondiente a la configuración del sitio WordPress.

Enumeración de usuarios

wpscan --url URL --enumerate u

En la siguiente imagen podréis ver el resultado de este comando dónde se han detectado 2 usuarios: editor y admin. Esta detección es posible debido a que WordPress permite filtrar entradas y posts según su autor.

wpscan enumeración usuarios
Usuarios detectados por WPScan.

Ataque de fuerza bruta

wpscan --url URL --enumerate u --paswords wordlist.txt

La primera parte de este comando realiza lo mismo que en el apartado anterior, enumera los usuarios. Seguidamente, con los que haya detectado, realizará un ataque de fuerza bruta a través del servicio xmlrpc.php usando la lista de contraseñas que especifiquemos.

wpscan fuerza bruta
Realización de ataque de fuerza bruta a usuarios detectados.

Como puedes ver en la imagen, se ha encontrado la contraseña del usuario admin.


En esta última entrada de esta serie de WordPress hemos visto la herramienta más usada para el análisis de sitios con este CMS, WPScan. Además de realizar pequeños escaneos de configuraciones es capaz de enumerar incluso usuarios que pueden ser usados para realizar ataques de fuerza bruta.

¡Espero que te haya resultado interesante!

Saludos.

Referencias:

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Análisis y vulnerabilidades – WordPress (II)

análisis vulnerabilidades wordpress

En la entrada anterior vimos los principales puntos a tener en cuenta durante una revisión de un sitio web que usa WordPress. En esta ocasión realizaremos veremos con un poco más de detalle las vulnerabilidades que puede introducir el servicio xmlrpc.php de WordPress.

Aquí te dejo un vídeo sobre la entrada de hoy:

Atacando xmlrpc

Anteriormente vimos que el servicio «xmlrpc.php» es una API de WordPress que permite realizar acciones en tu blog de forma remota. A continuación, veremos dos de los principales ataques: fuerza bruta y Cross-Site Port Attack.

Fuerza bruta

En 2015 surgió una vulnerabilidad en WordPress relacionada con este tipo de ataque y el servicio xmlrpc que afecta a las versiones anteriores a la 4.4. Aunque está solucionada es importante tenerla en cuenta por si nos encontráramos con algún wordpress de estas versiones.

En un ataque por fuerza bruta tradicional cada intento del conjunto usuario/contraseña se traduce en una petición HTTP. En este caso era posible realizar miles de intentos en una misma petición permitiendo a un atacante probar decenas de miles de combinaciones en unas pocas. Esto se le llama ataque de fuerza bruta amplificado.

En el siguiente ejemplo podéis ver que se hace una petición al método multicall de xmlrpc el cual permite procesar distintas acciones en una misma petición. En nuestro caso todas las acciones son las mismas, getUsersblogs. A la derecha veis la petición dónde se especifica 4 conjuntos de usuario/contraseña y a la izquierda podéis observar la respuesta que, de los 4, uno ha detectado que es correcto.

fuerza bruta amplificada
Ejemplo de vulnerabilidad de fuerza bruta amplificada en WordPress

Cómo he dicho, en la actualidad esta vulnerabilidad está solucionada, aunque esto no quiere decir que no sea posible realizar la fuerza bruta sobre los usuarios. Ahora bien, está deberá ser la «típica» que podamos encontrar en cualquier formulario.

Petición para realizar ataque de fuerza bruta común con Burp Suite

Cross-Site Port Attack

Los ataques XSPA (Cross-Site Port Attack) se basan en la explotación SSRF (Server-Side Request Forgery) y hacen que un servidor realice una conexión a un servicio que esté corriendo en un puerto de otro servidor, esté en la misma red o no. De esta forma el atacante puede realizar un escaneo de puertos sin tener contacto directo con el objetivo principal.

Este ataque se realiza usando el método pingback.ping de xmlrpc.php y, aunque he intentado las mil y unas para poder poner una foto con la prueba de concepto, no me ha funcionado. Si queréis saber más, al final de artículo hay unos enlaces que lo explican. Si en un futuro encuentro el motivo, actualizaré la entrada. Por el momento, aquí os dejo una foto de cómo debería ser la petición:

Petición para realizar un ataque XSPA a través de pingback

DDOS

Al igual que el anterior ataque, este también se realiza con el método pingback.ping y por tanto, parte del mismo esquema. En este escenario lo que se busca no es enumerar puertos sino dejar otra web sin servicio a través del consumo de sus recursos dónde está alojada.

Esto se puede llevar a cabo realizando, de nuevo, un ataque de amplificación. Aquí el flujo de los acontecimientos:

  1. El atacante (A) realiza una petición al servicio de pingback.ping del sitio Wordpres (W) especificando otra página web (B)
  2. W procesará la petición de A y realizará otra hacia B
  3. B verá que le están haciendo un pingback y le dirá a W dónde está la web que ha pedido
  4. W realizará una última petición para descargar el contenido y verificar así que realmente existe

De esta forma si un atacante realiza un ataque distribuído donde todos sus activos realizan una petición a una ruta de la web B, al descargar el contenido (que el atacante se asegurará que sea grande), la dejará inaccesible para otros usuarios por falta de recursos.


Como conclusión de esta entrada comentar que la recomendación evidente para evitar este tipo de ataques es deshabilitar el servicio xmlrpc.php además de tener WordPress actualizado. En el caso que este servicio fuera necesario, existen plugins que ayudan a detectar este tipo de ataques e incluso directamente los filtran.

¡Espero que te haya resultado interesante!

Saludos.

Referencias:

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Análisis y vulnerabilidades – WordPress (I)

análisis wordpress

En esta entrada veremos las vulenrabilidades típicas que podemos encontrar durante un análisis en un entorno WordPress. Aunque ya existe una gran cantidad de artículos sobre este tema, siempre va bien refrescar un poco la memoria.

Aquí te dejo un vídeo sobre la entrada de hoy:

¿Qué es WordPress?

WordPress es un sistema de gestión de contenido, en inglés Content Management System (CMS), que permite crear una web para la creación y administración de contenido como blogs, tiendas online, portales web… Con la ayuda de los «temas», para el diseño de la web, y los «plugins», pequeñas funcionalidades extras, hace que sea muy fácil y rápido crear una web para alguien que no tiene conocimientos de programación o simplemente que quiera ahorrarse tiempo.

Si quieres saber un poco más sobre WordPress puedes encontrar más información en su web.

Diferencias entre analizar una web normal y otra WordPress

Cuando tenemos que analizar una web que se ha hecho sin un CMS hay una serie de pruebas a realizar que dependerán del contenido de esta. Por ejemplo:

  • Inyecciones de código SQL (o parecido)
  • Deficiencias en la gestión de la autenticación
  • Información sensible expuesta
  • Entidades externas de XML
  • Configuraciones del entorno deficientes
  • Inyección de código JavaScript (XSS)
  • Componentes desactualizados

En el caso de un análisis de un entorno WordPress esto puede reducirse. Al ser un gestor muy usado también ha sido analizado profundamente y es por esto que muchas de las pruebas «típicas» podrían dejar de realizarse. ¿Siempre? No, lógicamente si se dispone del tiempo nunca va mal hacer alguna pequeña comprobación. Además, hay que tener en cuenta que los temas y los plugins pueden llegar a contener por sí solos alguna vulnerabilidad.

Deficiéncias de configuración

Ficheros innecesarios

Una vez hemos instalamos WordPress existen ficheros, usados para este proceso, que pueden ser eliminados. Estos pueden contener cierta información de configuración además exponer la versión de WordPress:

  • wp-config-sample.php (eliminar o renombrar por wp-config.php)
  • wp-admin/install.php
  • readme.html
readme-wp
Contenido del fichero readme.html

Servicios expuestos y panel login

WordPress tiene dos servicios que pueden ser especialmente peligrosos si no se conocen los riegos:

cron.php

Cron permite ejecutar tareas de forma periódica. Por ejemplo, el propio WordPress lo usa cuando se programa la publicación de una entrada o para verificar si existen actualizaciones. Los puglins también pueden añadir tareas a realizar. El problema ocurre cuando un usuario malicioso provoca la ejecución de estas tareas de forma muy seguida. Si la ejecución consume muchos recursos, puede llegar a denegar el acceso de otros usuarios a la web.

xmlrpc.php

Este servicio tiene múltiples funciones. Básicamente permite interactuar con un sitio WordPress remotamente, como una API. Entre las operaciones que ofrece podemos encontrar funciones para ver el listado de entradas de un blog, ver los usuarios o incluso subir ficheros.

Las vulnerabilidades que introduce este servicio son un ataque de fuerza bruta y un Cross-Site Port Attack, que nos permitiría averiguar qué puertos, de un servidor que hayamos especificado, están abiertos. Veremos un ejemplo de cada uno de estos en la próxima entrada.


Como apunte final, una de las recomendaciones típicas es hacer que wordpress no muestre en ningún sitio la versión que tiene. Aunque esto no supone un riesgo directo puede ayudar a obtener información sobre el sitio y, en el caso que hubiera vulnerabilidades para esa versión, un atacante las podría encontrar fácilmente. En la siguiente entrada veremos la herramienta WPScan, añadida en la lista de herramientas, además de algunos otros ejemplos prácticos.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Análisis de malware – Fases y ejemplos

análisis de malware

El análisis de malware es una tarea generalmente complicada y puede llegar a ser un gran quebradero de cabeza. Los creadores de estos pequeños softwares maliciosos intentan hacer las mil y una para que, incluso cuando se analicen, sean difíciles de saber qué hacen exactamente.

En esta entrada comentaremos la estructura que tiene un análisis de este tipo y veremos, a modo general, qué dificultades pueden implementar los creadores de malware para dificultar su inspección. Además, dejaré unos enlaces a diferentes análisis documentados sobre malware real.

Vídeo sobre este artículo

Estructura de un análisis

Por lo general hay 3 fases principales durante la inspección de un malware: el análisis estático, el dinámico y el informe. Al ser esta una entrada introductoria no veremos la parte técnica de cada una de ellas, pero sí veremos sus objetivos.

Análisis estático

Normalmente cuando un investigador recibe un binario para analizar no sabe si es peligroso o si su comportamiento es totalmente legítimo. El objetivo principal de esta primera parte es averiguar, sin ejecutar el malware, qué acciones y/o cambios puede llegar a realizar en el sistema además de rebuscar otras características que faciliten el trabajo en el análisis dinámico.

¿Cómo se puede extraer este tipo de información sin ejecutar nada? Por lo general se mira si está empaquetado (veremos más en la siguiente sección qué significa esto), si usa alguna función externa de otros programas, si por el contrario, es el mismo programa el que ofrece funciones a otros (por ejemplo un DLL), cuando se compiló o ver qué cadenas de caracteres tiene, ya que a veces se pueden encontrar URLs, claves de cifrado o incluso el nombre de las funciones de sistema que se usan.

Con toda esta información, el investigador puede hacerse una idea bastante general de lo que podría hacer el binario e incluso tener indicios de si efectivamente se trata de malware.

Análisis dinámico

En esta fase se trata de analizar el binario, ahora si, a través de su ejecución, normalmente, en un entorno controlado para prevenir su propagación.

Existen herramientas que monitorizan las acciones y cambios que se realizan en el sistema, como por ejemplo, si se ha creado/eliminado carpetas o registros. En el caso de Windows, por ejemplo, podemos encontrar, principalmente, el Process Monitor y el Process Explorer que se pueden descargar del Sysinternals Suite de Microsoft.

Luego existen las herramientas, como IDA y Radare2, que nos ayudaran a ver el lenguaje ensamblador del binario y establecer ‘breakpoints’ (puntos de parada) que pausaran su ejecución en ciertos puntos del código. De esta forma nos permitirá analizar instrucción por instrucción su funcionamiento.

El informe

Una vez se ha analizado en profundidad el comportamiento del binario, es hora de realizar un informe. Este debe listar todos los indicadores de compromiso, en inglés IOC (Indicator of Compromise). Esto es, básicamente, todo aquello que nos haga llegar a la conclusión de que se trata de malware. Además de este listado, se debe documentar paso a paso como encontrar estos indicadores. De esta forma cualquier persona puede analizar el binario y verificar los resultados. Finalmente, se especifica cómo detectarlo y como limpiar el sistema en caso de infección.

Dificultades durante el análisis

Existen varias técnicas para dificultar un análisis de malware:

  • Alteración de metadatos: como he comentado en el apartado anterior, en el análisis estático se puede extraer información como la fecha de compilación o creación del malware. Está información nos puede ayudar a determinar si, por ejemplo, se trata de una nueva versión de un malware en concreto. O incluso, saber desde cuando lleva rondando por internet. Estos datos son fácilmente modificables por lo que puede resultar difícil saber fechas exactas.
  • Técnicas antidebugging: los creadores de malware hacen uso de esta técnica para detectar si se está analizando el malware con alguna herramienta como IDA o Radare2 y, de esta forma, comportarse diferente. Por ejemplo, podría tener un comportamiento lícito y que el auditor creyera que no es malicioso.
  • Malware comprimido: esta es una de las técnicas más comunes en el desarrollo de malware. Básicamente consiste en comprimir todo el contenido del binario y al ser ejecutado descomprimirse en memoria. Esto hace que el análisis estático sea muy poco efectivo al no poderse extraer el nombre de las funciones y otros datos.
  • Creación de ruido/ofuscación: esta técnica se usa para meter operaciones o acciones que no hacen absolutamente nada. Algún ejemplo podría ser funciones que se llaman entre sí, bucles, sumas y restas sin ninguna finalidad, etc. Además, para dificultarlo todo un poco más, normalmente se oculta todo lo que son cadenas de caracteres como los nombres o URLs. El objetivo es hacer que el proceso de análisis sea más largo y dificultar la identificación de aquellas operaciones que sí están afectando al sistema.
malware comprimido
Ejemplo de malware comprimido/empaquetado.

Ejemplos de malware real

Como os he comentado antes, en el informe se documenta como encontrar los indicadores de compromiso. Por esta razón es fácil encontrar análisis de este tipo en internet. Aquí os dejo unos enlaces a diferentes análisis de malware:

Si indagáis un poco veréis que hay infinidad de informes que podéis consultar y de donde extraeréis mucho conocimiento.


Como apunte final, si te ha interesado este tema y quieres profundizar un poco, te recomiendo el libro «Practical Malware Analysis«. Es uno de los libros más completos que explica detalladamente el arte del análisis de malware. Además, dedica un capítulo entero al lenguaje ensamblador, a modo de curso exprés, por si no tienes ningún conocimiento.

Bonus: os dejo un último enlace a este registro de ataques dirigidos hecho por Kaspersky.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Recopilación de guías y manuales sobre Hacking Ético

guías y manuales hacking

Hasta ahora, en el canal de Telegram se han compartido 374 enlaces a distintos recursos sobre Hacking Ético. Noticias, eventos, recopilación de distintos manuales sobre algún tema en concreto, guías, etc. Todos estos enlaces los puedes consultar en la página principal del blog dónde, además, están clasificados para que sea más fácil encontrar lo que necesitas.

En esta entrada veremos algunos de estos enlaces a guías, manuales y mega recopilaciones de recursos de todo tipo que seguro te seran de gran utilidad, tengas ya conocimientos o justo estés empezando.

Lista de recursos

  • Guía Completa de Hacking: en este cheat sheet general de hacking podrás encontrar todo tipo de comandos relacionados con las distintas fases de una auditoría.
  • Pentest Book: este «libro» web tiene diferentes secciones, una para cada fase de un análisis. En cada sección podrás encontrar comandos y algunas pequeñas explicaciones muy útiles.
  • Awesome Security Hardening: repositorio donde encontrarás todo lo relacionado con el proceso de securizar sistemas: guías, buenas prácticas, libros, herramientas y muchos más recursos.
  • Reverse Engineering Resources-Beginners to intermediate: pequeña guía con muchísimos enlaces para aprender sobre el apasionante mundo de la ingeniería inversa.
  • HowToHunt: repositorio con información sobre distintos tipos de vulnerabilidades a probar durante las auditorías o programas de bug bounty.
  • Introducción al Password Cracking: introducción al estado actual del crackeo de contraseñas con varios ejemplos de uso con distintas herramientas.
  • Preparación para el OSCP: extenso manual dirigido para aquellos que se quieran sacar la certificación OSCP. Trata todos los temas a través de teoría y ejemplos.
  • PENTESTING BIBLE: como su nombre indica, es un repositorio que trata de ser la Biblia del pentesting. Contiene un listado extenso de artículos y muchos archivos PDF con explicaciones de todo tipo.
  • Cybersec Cheat Sheets in all Flavors!: recopilación de un usuario de Reddit con chuletas (cheat sheets) de diferentes ramas de la ciberseguridad.
  • Highway to Shell: entrada de un blog donde se explica el funcionamiento y los distintos tipos de shell.
  • Inyección SQL : Manual básico: aunque se trata de una entrada un poco menos técnica que las anteriores es bastante extensa y da una buena idea de en qué consiste este tipo de ataque.

Como puedes ver en cada uno de los puntos anteriores existen gran cantidad de explicaciones, enlaces a otros recursos e incluso ejemplos que te ayudaran en todo tipo de auditorías. En el caso que justo estés empezando en esto del Hacking Ético, te recomiendo que, como hay infinidad de recursos sobre distintas ramas de la ciberseguridad, te centres en la que más te guste. Puedes ver más información sobre los primeros pasos para introducirte en el mundo del hacking en esta entrada.

Por cierto, si sabes de enlaces a guías o manuales de hacking que puedan ayudar a alguien, no dudes en ponerla en los comentarios.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Conocimientos previos para aprender hacking

conocimientos previos

En la anterior entrada vimos como podíamos aprender de forma práctica a través de diferentes ejercicios. Lógicamente para poder hacer eso primero tenemos que tener claro conceptos básicos que nos permitan introducirnos en el mundo del hacking. En esta entrada veremos qué conocimientos previos debemos tener claro antes de hacer cualquier ejercicio de hacking.

Comandos

Aunque en un principio pueda sonar algo complicado y tedioso de aprender, ¡no te preocupes! Es normal que te de esa sensación, pero te diré un secreto: no necesitas sabértelos de memoria. Lo único que debes saber es cómo se usan y qué puedes hacer con ellos. Los típicos los irás aprendiendo a medida que los vayas usando y para menos frecuentes, siempre podrás consultarlo por internet.

Pero, ¿por qué son importantes los comandos? Si bien es cierto que puedes realizar auditorías con aplicaciones que no requieran del uso de comandos, estos casos son escasos. En el día a día usarás comandos para cualquier cosa por sencillez y rapidez. Además, muchas de las herramientas enfocadas al ámbito del hacking ético solo se pueden ejecutar por comandos.

Programación

La programación es importante por dos motivos. Primero, para poder hacerte algún pequeño programa, script o herramienta que te ayude a automatizar algún proceso. Y segundo, lo más importante, por que en la mayoría de auditorías de hacking ético tendrás que analizar una aplicación, o similar, que alguien habrá programado y, por lo tanto, necesitarás saber por dónde puede flaquear en términos de seguridad.

Entonces, ¿qué lenguaje de programación debes saber? Realmente no hay un lenguaje específico para hacking y todo dependerá de lo que quieras hacer. Como todo, hay unos más complicados de aprender desde cero que otros. Por ejemplo, Python es muy simple e ideal para aprender conceptos básicos. Además, permite la creación de programas potentes de forma rápida. En cambio, C++ o Java, por lo general, cuestan un poco más de aprender (sobretodo al principio), pero, si los dominas, puedes adaptarte a cualquier lenguaje.

Sistemas operativos

Este es el punto más importante pues al final el objetivo principal de un posible atacante es tener acceso al sistema. Conocer como funciona un sistema operativo en todos los niveles te permitirá detectar sus posibles debilidades, tanto de configuración como de implementación, por ejemplo, en el funcionamiento de una aplicación instalada en un ordenador.

¿Con «saber de sistemas operativos» me refiero a saber manejarlos? No. Bueno sí pero no. Me explico. Lógicamente es importante saber cómo funcionan, sobretodo si no has utilizado nunca alguna distribución de Linux. Pero en este caso me refería más al funcionamiento interno de propio sistema. Por ejemplo, saber qué son los registros de Windows y cómo el malware puede modificarlos para obtener persistencia, como funcionan los permisos de un sistema de ficheros, qué son los servicios, como funciona el escalado de privilegios, etc.


Como ves hay mucho por hacer, pero ¡no te desanimes! Y, aunque pueda parecer mucho y tengas ganas de empezar directamente con el hacking, tienes que entender que multiplicar sin saber sumar es más complicado. De todas formas, esto no quiere decir que necesites ser el mejor en los temas anteriores para empezar a aprender sobre hacking. De hecho, te recomiendo que vayas combinando ambos conocimientos ya que son complementarios. Si quieres ver un plan de estudio como referencia te recomiendo este artículo de THW.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Poner en practica lo aprendido – Ejercicios de hacking

ejercicios de hacking

Uno de los puntos más importantes a la hora de aprender es poder aplicar el nuevo conocimiento a través de ejercicios. Igual que en las matemáticas o en física, en la seguridad informática también existen ciertos problemas o escenarios que se nos pueden plantear para resolverlos de forma práctica y aprender. Existen infinidad de ejercicios de hacking con este propósito y en esta entrada veremos algunos de los más populares.

Aplicaciones vulnerables

Este tipo de ejercicios de hacking consiste en analizar una aplicación móvil o web con ciertas vulnerabilidades. Normalmente tienen muchas y muy variadas para facilitar el aprendizaje progresivo.

Las aplicaciones vulnerables más comunes son:

Damn Vulnerable Web App (DVWA)Aplicación web implementada en PHP y MySQL
WebGoatAplicación web mantenida por OWASP
Damn Vulnerable iOS App (DVIA)Aplicación de iOS compatible con iOS 11
Buggy Web Application (bWAPP)Aplicación web con más de 100 vulnerabilidades
Damn insecure and vulnerable AppAplicación de Android
Lista de aplicaciones vulnerables para practicar.

Con estos ejercicios serás capaz de entender e identificar aquellas vulnerabilidades más comunes que pueden crearse en el desarrollo de una aplicación web o móvil. Además, si es la primera vez que haces uso de una terminal crearás una base que te servirá más adelante en otros tipos de ejercicios.

Máquinas vulnerables

Estos ejercicios requieren un poco de conocimiento previo, aunque, si has realizando los del apartado anterior, te será más fácil. Estos consisten en máquinas virtuales que están mal configuradas o tiene servicios (programas) vulnerables. Son una combinación de lo comentado anteriormente añadiendo el conocimiento sobre sistemas operativos. Dependiendo el tipo de máquina que estés auditando tendrás diferentes objetivos a cumplir. Por lo general, primero deberás conseguir las credenciales de un usuario para más tarde obtener las del administrador.

Existen máquinas virtuales que te puedes descargar directamente como Metasploitable, que te ayudaran a entender como funcionan estos tipos de ejercicios. Adicionalmente hay plataformas como VulnHub donde los usuarios añaden continuamente máquinas vulnerables con diferentes niveles de dificultad. En estos dos casos necesitarás descargarte la máquina virtual e instalarla en un programa de virtualización, como por ejemplo Virtual Box. Pero, si prefieres ahorrarte problemas de configuración o simplemente por sencillez, existen plataformas web con acceso a muchísimas máquinas simplemente conectándote a su VPN. Una de las más comunes es Hack The Box y, al igual que VulnHub, tiene máquinas de todo tipo de niveles con lo que te será fácil ir adquiriendo conocimiento de forma progresiva. Por cierto, para pode registrarte en HTB necesitarás pasar una pequeña prueba :).

Estas opciones que hemos comentado son gratuitas. Aunque, si bien es cierto que HTB tiene un plan de pago, con el gratuito tendrás más que suficiente para empezar y coger rodaje. De hecho, la diferencia principal es que cuando pasa un tiempo una máquina es retirada para añadir otra a la plataforma. Con el plan de pago podrás acceder a todas las máquinas retiradas además de otras ventajas. Pero como te comentaba no es para nada imprescindible para empezar a aprender.

Otros ejercicios

Aunque en las máquinas virtuales puedes encontrarte con todo tipo de retos existen ejercicios que tratan cualquier ámbito del hacking de forma más específica. Por ejemplo, sobre análisis de malware, cracking, análisis forense, hacking físico (hardware), etc.

HTB también tiene bastantes ejercicios de otros estilos, pero existen portales como Crackmes, específico para la ingeniería inversa. Si en cambio, lo que buscas es malware para analizar, este repositorio tiene tutoriales, herramientas y muestras para aprender. De todas formas, si estas empezando te recomiendo practicar con los programas o máquinas virtuales y eventualmente centrarte en aquellos aspectos que más te llamen la atención.


Lo importante, como en cualquier proceso de aprendizaje, es no frustrarse. Si no te salen las cosas, ya sea en el proceso de instalación o en la propia realización de alguno de estos ejercicios, investiga y tómatelo como una manera de aprender algo nuevo. Esto es importante porque ya veras que siempre acaban saliendo errores «inexplicables». Además, si te sintieras muy perdido, existen infinidad de foros y comunidades donde pueden ayudarte de alguna forma a solucionar cualquier duda que tengas.

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 0 comentarios

Lista de congresos sobre Seguridad Informática

congresos seguridad informática

Uno de los puntos importantes que comentamos en el artículo anterior era conocer los diferentes congresos y eventos relacionados con la seguridad informática.

En la siguiente tabla quedan recogidos todos aquellos eventos que se han impartido en los últimos años. Quizá hay algunos que actualmente estén inactivos, pero creo que es importante comentarlos por si alguien quiere buscar vídeos y charlas que puedan ser de interés. Como nota adicional, decir que las fechas son aproximadas ya que los eventos los van moviendo según vaya bien a nivel organizativo. De todas formas, pueden ayudar a tener una idea de cuando se realizan. El lugar también puede variar, sobretodo ahora que por temas de salud la gran mayoría se están realizando online.

Congreso Fecha Lugar
Sh3llcon Enero Santander
H-Con Enero Madrid
Ciberseg Enero Alcalá
ConcienciaCON Febrero Madrid
MundoHacker Febrero Madrid
OSINTCITY Febrero Sevilla
MorterueloCon Febrero Cuenca
HackOn Febrero Madrid
Hackr0n Febrero Santa Cruz de Tenerife
RootedCON Marzo Madrid
FluCON Marzo Online
ViCon Abril Vigo
JASYP Abril Granada
C0r0n4CON Abril Online
Overdrive CON Abril Girona
BufferHack Mayo Madrid
ISACA Roadshow Mayo Bilbao
X1RedMasSegura Mayo Madrid
CONPilar Mayo Zaragoza
Tapas&Hack Mayo Valladolid
uad360 Junio Málaga
C1b3rwall Junio ávila
EuskalHack Junio Donostia
8.8 Junio Online
Rioj@party Junio La Rioja
IntelCon Julio Online
DojoConf Panamá Julio Panamá
DurivaCON Julio México
TomatinaCON Agosto Buñol, Valencia
NotPinkCon Agosto Online
r2con Septiembre Barcelona
ISACA Roadshow Septiembre Galicia
DragonJAR Septiembre Manizales
Tech Party Septiembre Madrid
Ekoparty Septiembre Online
PaellaCON Septiembre Valencia
Navaja Negra Octubre Albacete
Bitup Octubre Alicante
World Party Octubre Madrid
Tizona Octubre Burgos
TotoConf Octubre Online
ENISE Octubre Online
HoneyCon Noviembre Guadalajara
No cON Name Noviembre Barcelona
SecAdmin Noviembre Sevilla
CyberCamp Noviembre Valencia
Qurtuba Noviembre Qurtuba
Bsides Chile Noviembre Chile

!Si crees que hay algún evento que falta en esta tabla déjalo como comentario y la actualizaré!

¡Espero que te haya resultado interesante!

Saludos.

Si te ha sido de ayuda, ¡comparte!
Publicado por Xavi, 2 comentarios