Gestión de Incidentes Público

Base de conocimiento público que contiene guías, procedimientos y técnicas de respuesta a incidentes informáticos

Código malicioso

Capítulo destinado a acciones de respuesta ante incidentes de malware

Código malicioso

Wordpress comprometido

Revisión Online

Verificar que no tenga instalado malware:

Verificar con herramientas de google el grado de compromiso del sitio:

Es necesario acceder a la consola de búsqueda de google:

Para verificar enlaces comprometidos, obtener el contenido en línea, recuperar posible código malicioso.

Coordinación con el RSI

Revisión Offline

1. Comprobar la integridad de los archivos WordPress (Core y Plugins)

diff -r wordpress_Instalado wordpress_descargado
wp core verify-checksums --allow-root

2. Buscando patrones de cadena maliciosos:

2.1. Buscar webshells/backdoors en el sistema de archivos
2.1.1. Usando GREP

Guardar en el archivo pattern.txt

eval($_REQUEST
eval($_GET
eval($_POST
eval(
$GLOBALS[
$strrev('dedoce
base64_decode
str_replace
preg_replace
gzinflate
$f53[
hacked
FilesMan
\x73\x74\x72\x5f
str_rot13
Location:
google.com
bing.com

Ejecutar el comando:

fgrep -rf pattern.txt folderInstalacion | egrep -iv "\.js|\.css|\.po|\.html|Binary" > resultado.txt

Eliminar los falsos positivos.

Otros patrones sospechosos (ejecutar dentro del directorio principal):

grep -r '\\x' * | egrep -iv "\.gif|\.js|\.png|\#|entities" 
grep -r '\\057' * | egrep -iv "\.gif|\.js|\.png|\#|binary|Crypto|zip|case|elseif|ChaCha|\\x00|pie|escaper"
2.1.2. Usando la herramienta webshell-scanner-client

Descargar e instalar webshell-scanner-client

wget https://github.com/baidu-security/webshell-scanner-client/releases/download/v1.0/webdir-linux32.bin
sudo mv webdir-linux32.bin /usr/bin/webshell-scanner-client
sudo chmod a+x /usr/bin/webshell-scanner-client

Escanear un archivo

webshell-scanner-client.bin archivo.php- 
Solicitar al RSI que mueva los archivos de la instalacion wordpress a otra ruta que no sea accesible desde el servidor web.
Ej: /home/[USUARIO]
2.1.3. Usando la herramienta webshell-scan

Descargar e instalar webshell-scan:

git clone https://github.com/tstillz/webshell-scan
go build main.go
sudo mv main /usr/bin/webshell-scan

Escanear en busca de webshells con extensión en php:

webshell-scan -dir . -exts php
2.1.4. Usando findbot

Instalación:

wget https://raw.githubusercontent.com/wellr00t3d/findbot.pl/master/findbot.pl
chmod a+x findbot.pl
sudo mv findbot.pl /usr/bin

Buscar archivos maliciosos:

findbot.pl directorio

Verificando archivos de wordpress

find . -iname "functions.php"
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

Escanear el servidor en busca de códigos maliciosos en los archivos

Buscar código malicioso en archivos y carpetas de WordPress:

find wp-includes -iname "*.php"
find wp-content/uploads -name "*.php" -print

Escanear la base de datos en busca de códigos maliciosos

<script>
eval
base64_decode
gzinflate
preg_replace
str_rot13
fgrep -rf pattern.txt backup.sql > resultado.txt

Detección de cuentas de administrador falsas

Encuentre y elimine nuevos usuarios administradores o cuentas FTP que no ha creado.

Restauración del stitio:

Herramientas

https://malwaredecoder.com

Anexos

Instalar wp-cli y checksum:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp package install git@github.com:wp-cli/checksum-command.git --allow-root
Código malicioso

SEO Japonés

Código malicioso

Joomla comprometido

Revisiones Online

Verificar que no tenga instalado malware:

Coordinación con el RSI

Revisiones Offline

diff -r joomla-3.6.4 ./public_html

 Restauración del sitio

Modificar permisos:

Instalar las extensiones

Reemplazar el contenido del archivo .htaccess con:

Herramientas

https://malwaredecoder.com

Actualización del core de Joomla a la última versión

  1. Descargar el paquete de actualización https://downloadas.joomla.org/es/
  2. Sobre escribir los archivos en el servidor con los del paquete de actualización.
  3. Si sale el error "Fatal error: Call to undefined method JApplicationSite::set()"
    1. Reemplazar la carpeta libraries con las de la instalación completa.
  4. Si sale un error "Unknown column 'a.cliente_id' in 'where clause': Unknown column 'a.client_id' in 'where clause'" en el panel de administración.
    1. Ejecutar (Reemplazar XXXXX por el prefijo usado en la base de datos):
ALTER TABLE `XXXXXX_menu_types` ADD COLUMN `client_id` int(11) NOT NULL DEFAULT 0 AFTER `description`;

UPDATE `XXXXXX_menu` SET `published` = 1 WHERE `menutype` = 'main' OR `menutype` = 'menu';

Realizar correcciones en la base de datos. En el menú de administración:

Extensiones> Gestor de extensiones> Database> Corregir

Hardening de Joomla

Tipo de archivo

Permisos
Archivos PHP 644
Archivos de configuración 644
Otros folders 755

tudominio.com/administrador/index.php?option=com_config&view=component&component=com_users


Código malicioso

Ransomware

El ransomware es un tipo de software malicioso (malware) que se utiliza para bloquear el acceso a los archivos o sistemas de una víctima y exigir un rescate para restaurar el acceso. Los atacantes utilizan el ransomware para extorsionar a individuos y empresas mediante el cifrado de archivos o el bloqueo del acceso a sistemas críticos, lo que les impide acceder a sus datos y archivos importantes.

Una vez que el ransomware infecta un sistema, se suele mostrar una pantalla de advertencia que exige un pago en criptomonedas para obtener una clave de cifrado que permita desbloquear los archivos o sistemas afectados. En algunos casos, los atacantes también amenazan con publicar los datos de la víctima si no se paga el rescate.

El ransomware se propaga a menudo mediante técnicas de ingeniería social, como correos electrónicos de phishing, enlaces maliciosos o descargas de software ilegal. Además, algunos tipos de ransomware también pueden propagarse a través de vulnerabilidades en el software o sistemas no actualizados.

Es importante destacar que no se recomienda pagar el rescate exigido por los atacantes ya que no hay garantía de que los archivos o sistemas afectados sean restaurados, además de que esto puede animar a los ciberdelincuentes a continuar con sus actividades ilícitas. En lugar de pagar el rescate, es recomendable tomar medidas preventivas para evitar la infección por ransomware, como mantener el software actualizado, utilizar software de seguridad y educar a los empleados en técnicas de seguridad informática.

Intentar recuperar "shadow copy"

Listar si existen "shadow copies"

vssadmin list shadows

En caso que hubiera copias, usar ShadowExplorer.exe (portable) para recuperar archivos.

Determinar la forma de infección

systeminfo
ipconfig/all
arp -a

Nota: Transformar los archivos a UTF-8 con el comando dos2unix.

Análisis forense

dd if=/dev/sdc of=/media/parrot/disk600Gb/backup.img bs=64M conv=sync,noerror status=progress

Si fuera necesario convertir la imagen forense en disco virtual

qemu-img convert -O vmdk -o compat6 backup.img vmdkname.vmdk
qemu-img convert -f raw -O vmdk rawdisk200gb.img vdisk200gb.vmdk

Herramientas útiles

Identificar si el ransomware usa llave simetrica (AES) o asimetrica (RSA). Si el ransomware usa una llave simetrica buscar la llave de encriptación en la copia de la memoria RAM.

Buscar herramientas para desencirptar

Intentar recuperar archivos de la copia forense

Anexos

Código malicioso

Adware

Código malicioso

Backdoors/webshells

1. Usando GREP

eval($_REQUEST
eval($_GET
eval($_POST
eval(
$GLOBALS[
$strrev('dedoce
base64_decode
str_replace
preg_replace
gzinflate
$f53[
hacked
FilesMan
\x73\x74\x72\x5f
str_rot13
Location:
google.com
bing.com
fgrep -rf pattern.txt folderInstalacion | egrep -iv "\.js|\.css|\.po|\.html|Binary" > resultado.txt
grep -r '\\x' * | egrep -iv "\.gif|\.js|\.png|\#|entities" 
grep -r '\\057' * | egrep -iv "\.gif|\.js|\.png|\#|binary|Crypto|zip|case|elseif|ChaCha|\\x00|pie|escaper"

2. Usando la herramienta webshell-scanner-client

wget https://github.com/baidu-security/webshell-scanner-client/releases/download/v1.0/webdir-linux32.bin
sudo mv webdir-linux32.bin /usr/bin/webshell-scanner-client
sudo chmod a+x /usr/bin/webshell-scanner-client
webshell-scanner-client.bin archivo.php- Solicitar al RSI que mueva los archivos de la instalacion wordpress a otra ruta que no sea accesible desde el servidor web. Ej: /home/{usuario}

3. Usando la herramienta webshell-scan

git clone https://github.com/tstillz/webshell-scan
go build main.go
sudo mv main /usr/bin/webshell-scan
webshell-scan -dir . -exts php

4. Usando findbot

wget https://raw.githubusercontent.com/wellr00t3d/findbot.pl/master/findbot.pl
chmod a+x findbot.pl
sudo mv findbot.pl /usr/bin
findbot.pl directorio

 

Código malicioso

Herramientas sandbox

Una sandbox (en español, caja de arena) es un entorno aislado y seguro en el que se pueden ejecutar aplicaciones y procesos sin afectar al sistema principal. La idea detrás de una sandbox es crear un espacio limitado en el que los programas pueden ejecutarse sin afectar el resto del sistema, lo que permite a los usuarios probar o ejecutar aplicaciones sin preocuparse por los posibles efectos negativos.

Las sandboxes se utilizan a menudo para ejecutar software no confiable o potencialmente peligroso, como archivos de correo electrónico adjuntos, scripts descargados de Internet, software malicioso o programas que pueden dañar el sistema. Al ejecutar estos programas en una sandbox, el usuario puede analizarlos o probarlos sin exponer su sistema a posibles amenazas.

Además, las sandboxes también se utilizan para desarrollar y probar aplicaciones en un entorno seguro y aislado. Esto permite a los desarrolladores probar sus aplicaciones sin preocuparse por los posibles efectos negativos en el sistema principal.

Sandbox Online

Puede utilizar las siguientes sandbox:

 

Desfiguraciones

Capítulo destinado a acciones de respuesta ante incidentes de desfiguraciones (defacement).

Desfiguraciones

Defacement principal

Desfiguraciones

Defacement secundario

Phishing

Capítulo destinado a acciones de respuesta ante incidentes de phishing

Phishing

Denunciar sitios y correos

Para sitios web

1. Reportar a:

Si el sitio de phising esta en USA

Si el sitio de phising esta en hospedado en GoDaddy (Tarda 3 dias)

Si el sitio de phising esta en hospedado en Weebly (Tarda 2 horas)

Si el sitio de phising esta en hospedado en Wix (Tarda 3 dias laborales)

Si el sitio de phising esta en hospedado en Blogspot

2. Notificar a la entidad afectada para que saquen una comunicado oficial

3.  Reportar a las organizaciones de boliviaverifica (wa.me/59162535868) y chequeabolivia (whatsapp wa.me/59178370590)

4. De ser necesario notificar a la unidad de comunicación de la AGETIC para que publiquen sobre el sitio falso

Para correos electrónicos

1. Aparente compromiso de la cuenta origen comunicar al CERT/CSIRT nacional correspondiente.

2. Si se trata de campañas genéricas con origen gmail, hotmail reportar a:

 

Phishing

Analizar cabeceras y configuraciones de correo

Análsis de cabeceras

Validar DMARC

Visualizar reporte DMARC (xml)

Forense

Capítulo destinado a técnicas y herramientas de análisis forense en sistemas operativos y otros

Forense

Sistema operativo Linux

Captura de memoria RAM

Requisitos:

Herramientas:

Análisis forense al tráfico de red (Local)

Requisitos:

Herramientas:

Analisis forense al trafico de red (Remoto)

Requisitos:

Herramientas

Copia forense del disco de almacenamiento de datos ( Sin apagar el sistema)

Requisitos:

Posibles herramientas:

Copia forense del disco de almacenamiento de datos ( Servidor Apagado)

Requisitos

Posibles herramientas

Otras técnicas

Ver los puertos abiertos y proceso asociados
lsof -i -P
Ver los archivos abiertos por un proceso
lsof -p <pid>
Ver los últimos logeos
last
Quién está logeado actualmente
who
w
Ver el historial de comandos
more ~/.bash_history
Investigar proceso sospechoso
cd /proc/<pid>
strings ./exe

Fuentes:

Forense

Sistema operativo Windows

Análisis de conexiones

netstat -naob
netstat -f

Ver recursos compartidos

net view

Ver que equipos se estan comunicando con el sistema actual

net session

net use

Análisis de procesos

Ver servicios
tasklist /svc

Ver las DLLs asociadas a un proceso

tasklist /m /fi "pid eq <pid>"



Misceláneo

Capítulo destinado a diferentes acciones, técnicas, procedimientos en respuesta a casos de incidentes no categorizados e incluye incidentes por errores de configuración en software que tienen el objetivo de recuperar el servicio e información.

Misceláneo

Recrear datastore eliminado VMware vSphere

esxcli storage vmfs extent list

En este ejemplo el resultado del comando anterior es “mpx.vmhba0:C0:T0:L0” (Device Name) , reemplazar con el valor correspondiente a su instalación

offset="128 2048"; for dev in `esxcfg-scsidevs -l | grep "Console Device:" | \
awk {'print $3'}`; do disk=$dev; echo $disk; partedUtil getptbl $disk; \
{ for i in `echo $offset`; do echo "Checking offset found at $i:"; \
hexdump -n4 -s $((0x100000+(512*$i))) $disk; \
hexdump -n4 -s $((0x1300000+(512*$i))) $disk; \
hexdump -C -n 128 -s $((0x130001d + (512*$i))) $disk; done; } |  \
grep -B 1 -A 5 d00d; echo "———————"; done

En este ejemplo el inicio del bloque es 2048:

Checking offset found at 2048:

partedUtil getUsableSectors /vmfs/devices/disks/mpx.vmhba0:C0:T0:L0

En este ejemplo el valor de los sectores usables es 83886046

partedUtil mklabel /vmfs/devices/disks/mpx.vmhba0:C0:T0:L0 gpt

partedUtil setptbl "/vmfs/devices/disks/mpx.vmhba0:C0:T0:L0" gpt "1 2048 83886046 AA31E02A400F11DB9590000C2911D1B8 0"
Misceláneo

Exportar e importar posts de wordpress a una nueva instalación

Exportar los posts

wordpressexportacion1.png

Importar los posts

wordpressimportacion1.png

wordpressimportacion2.png

wordpressimportacion3.png

Misceláneo

Recuperar acceso root mediante cambio de contraseña

Reiniciando el sistema

Sin reiniciar el sistema

La unica opcion para este escenario es la ejecución romota de código (RCE) mediante la explotación de alguna vulnerabilidad para cambiar password del usuario root. Las vulnerabilidades identificadas para Debian 9 son:

Fuente: https://security-tracker.debian.org/tracker/CVE-2019-11815

 

 

Denegación de Servicio (DoS)

Capítulo destinado a acciones de respuesta ante ataques de denegación de servicio.

Denegación de Servicio (DoS)

Fail2ban para HTTP

Anti - DoS con fail2ban (WebSites [ports:80/443])

Implementacion de anti-DoS con fail2ban en Sistema Operativo Debian 9

Instalar los paquetes “fail2ban” y “iptables-persistent”

~$ sudo apt-get install iptables-persistent fail2ban

Modificar la configuracion por defecto de fail2ban y agregar las siguientes lineas al archivo mencionado

~$ vim /etc/fail2ban/jail.conf
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
# Cambiar a la ruta de los logs de Apache/Nginx/etc..
logpath = /var/log/*apache2*/*access.log
maxretry = 300
findtime = 300
#ban por 5 minutos
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Crear un archivo en la ruta correspondiente con el siguiente contenido

~$ vim /etc/fail2ban/filter.d/http-get-dos.conf
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Fail2Ban archivo de configuracion
[Definition]
# Opcion: failregex
# Se debe configurar el maxretry y findtime en jail.conf muy cuidadosamente para evitar los falsos positivos.
failregex = ^<HOST> -.*"(GET|POST).*
# Optcion: ignoreregex (El IP de este campo no sera bloqueado)
ignoreregex =
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Reiniciar el servicio de fail2ban

~$ sudo systemctl restart fail2ban.service

Para revisar las IP bloqueados

~$ sudo iptables -nvL

Remover IP “banneada”

//Desplegara las reglas que creamos en este caso seria http-get-dos
~$ sudo fail2ban-client status
//Elimina la IP "banneada"
~$ sudo fail2ban-client set http-get-dos unbanip <IP_ADDRESS>
Denegación de Servicio (DoS)

Análisis de registros posterior a un ataque DDoS

El sitio web contiene información sobre múltiples actores de amenaza. Es posible buscar información para recolectar datos sobre actores maliciosos.

Degradación de los servicios.

Verificar la página de Uptime Kuma para concluir, en base a los registros, el tiempo de respuesta de los sitios web afectados. En caso de caída del sitio, verificar el tiempo que se mantuvo fuera de línea.

Prevención interna.

  1. Configuración y mejora de los mecanismos de respuesta ante la detección de actividad de red inusual.
  2. Verificación de la configuración del firewall disponible ante la respuesta ante ataques de tipo SYN DDoS (ataque de denegación de servicio que explota el proceso de establecimiento de conexiones TCP).

Análisis con Goaccess.

Se ejecuta el comando "goaccess access.log" en la terminal para generar un informe con las solicitudes realizadas al servidor.

Con base a los resultados obtenidos con la herramienta

Obtención de las IPs en las horas de mayor tráfico

Análisis y posible uso de datos

Análisis con Wazuh Manager.

Realizar un laboratorio de prueba para simular la carga de registros en un servidor de prueba, descartando los registros de información y seleccionando alertas de nivel medio y alto.

nano simulador.sh
#!/bin/bash
#Archivo de entrada al script que contiene los registros del objetivo del ataque
input_file="access.log"
#Archivo de salida monitorizado por Wazuh para la generación de alertas
output_file="archivoaccess.log"
# Verifica si el archivo de salida existe y, si es así, lo elimina
# para evitar duplicar los registros o mezclarlos con anteriores
if [ -f "$output_file" ]; then
    rm "$output_file"
fi
# Lee el archivo línea por línea
while IFS= read -r line
do
    # Simula la recepción de logs añadiendo un retraso de 90 ms
    # para no sobrepasar el humbral de deteccion de eventos que tiene wazuh manager
    sleep 0.09
    # Escribe la línea en el archivo de salida
    echo "$line" >> "$output_file"
    echo "Log añadido: $line"
done < "$input_file"
# Registro de la cantidad de lineas copiadas mientras se ejecuta el script
echo "El archivo ha sido copiado línea por línea a $output_file"
sudo chmod +x simulador.sh
<ossec_config>
  <localfile>
    <log_format>syslog</log_format>
    <location>/home/wazuh/monitoreo/archivoaccess.log</location>
  </localfile>
</ossec_config>
sudo systemctl restart wazuh-manager
sudo systemctl restart wazuh-agent
./simulador.sh

Análisis de resultados con la plataforma MISP.

Con la lista de direcciones IP únicas, agruparlas de 1000 en 1000 para poder copiar la lista y observar qué direcciones IP tienen correlación con otro evento dentro de la región.

Distribución de la información.

Extraer de los archivos de registro las direcciones IP involucradas y crear un evento con nivel alto de peligrosidad dentro de la plataforma MISP, indicando todos los indicadores de compromiso para proporcionar la información a las instituciones.

Identificación de los países implicados.

Descargamos la base de datos de IP's y países disponible en github con el nombre de "GeoLite2-Country.mmdb"

Iniciamos y activamos el entorno virtual para iniciar el programa "geoip2" dentro del mismo directorio de la base de datos descargada.

python3 -m venv myenv
source myenv/bin/activate

Instalamos dentro del entorno virtual la herramienta.

pip install geoip2

Utilizamos un script en python para el uso de esta base de datos con un archivo de direcciones IP identificadas.

import csv
import geoip2.database
from collections import Counter

# Archivos de entrada y salida
archivo_entrada = "entrada.csv"
archivo_salida_temp = "salida.csv"
archivo_salida_final = "conteo_paises.csv"

# Cargar la base de datos GeoIP
ruta_db = "GeoLite2-Country.mmdb"
lector = geoip2.database.Reader(ruta_db)

def obtener_pais(ip):
    try:
        respuesta = lector.country(ip)
        return respuesta.country.name
    except geoip2.errors.AddressNotFoundError:
        return "IP no encontrada"
    except Exception as e:
        return f"Error: {e}"

# Leer IPs desde entrada.csv y procesarlas
resultados = []
conteo_paises = Counter()

total_ips = 0
with open(archivo_entrada, "r", encoding="utf-8") as archivo:
    lector_csv = csv.reader(archivo)
    next(lector_csv, None)  # Saltar la cabecera si existe

    for fila in lector_csv:
        if not fila:  # Evitar líneas vacías
            continue
        ip = fila[0]
        pais = obtener_pais(ip)
        resultados.append((ip, pais))
        conteo_paises[pais] += 1
        total_ips += 1

# Guardar resultados en salida.csv
with open(archivo_salida_temp, "w", newline="", encoding="utf-8") as archivo:
    escritor = csv.writer(archivo)
    escritor.writerow(["IP", "País"])
    escritor.writerows(resultados)

# Guardar conteo de países en conteo_paises.csv
with open(archivo_salida_final, "w", newline="", encoding="utf-8") as archivo:
    escritor = csv.writer(archivo)
    escritor.writerow(["IP", "País", "Conteo"])
    for ip, pais in resultados:
        escritor.writerow([ip, pais, conteo_paises[pais]])

# Cerrar la base de datos
lector.close()

print(f"Proceso completado. Se procesaron {total_ips} IPs.")
print("Revisa los archivos 'salida.csv' y 'conteo_paises.csv'.")

Ejecutamos el script con el archivo de entrada:

python geo.py

La salida del archivo "salida.csv" tiene las direcciones IP acompañadas del país de origen:

imagen.png

Mientras que la salida del archivo "conteo_paises.csv" tiene las direcciones IP, el país de origen y la cantidad de solicitudes que realizó cada país, se toman en cuenta solamente las direcciones IP las cuales realizaron más de 1000 solicitudes al servidor.

imagen.png

Con esta información se procede a comunicar a los países origen mediante una investigación en la plataforma RTIR.

Manejo de la plataforma MISP

Espacio en disco duro servidor MISP

Con la recepción contínua de eventos hacia la plataforma MISP y el almacenamiento ocupado en disco se requerirá periódicamente eliminar eventos antiguos que ya no representan información actualizada, para este propósito se ingresa a la base de datos de la plataforma desplegada.

Detener los servicios de Docker Compose
Una vez seguro de que la base de datos está en un estado consistente, se procede a detener los servicios de Docker Compose:

docker-compose down

Ingresamos a la consola del contenedor que almacena la base de datos

docker exec -it misp-docker-db-1 bash

Dentro de la instancia de base de datos se realizan los siguientes comandos:

USE misp;
DELETE FROM events WHERE date < '2020-01-01';
DELETE FROM attributes WHERE event_id NOT IN (SELECT id FROM events);
DELETE FROM objects WHERE event_id NOT IN (SELECT id FROM events);
DELETE FROM event_tags WHERE event_id NOT IN (SELECT id FROM events);

Reiniciar los servicios de Docker Compose

Antes de detener los servicios, verifica que la base de datos esté en un estado consistente. Puedes ejecutar consultas de verificación para asegurarte de que no queden referencias huérfanas:
SELECT * FROM attributes WHERE event_id NOT IN (SELECT id FROM events);
SELECT * FROM objects WHERE event_id NOT IN (SELECT id FROM events);
SELECT * FROM event_tags WHERE event_id NOT IN (SELECT id FROM events);
Se debe posicionar el terminal en el directorio que contiene el docker compose para poder reiniciarlo.
docker-compose up -d

 

Ransomware

Ransomware

Recursos en línea

Consultar ataques de Ransomware

https://www.ransomware.live/map/BO

https://ransomfeed.it/

https://www.ransomlook.io/

https://darkfeed.io/

Análisis de registros logs

Herramientas y técnicas para el análisis de logs de diferentes servicios, entre ellos apache2 y nginx

Análisis de registros logs

Análisis de archivos de logs con Wazuh

Mediante el uso de un script personalizado, Se realizará la copia línea por línea de los archivos recibidos hacia un archivo monitorizado por Wazuh, simulando así el comportamiento del agente que recibe los logs en tiempo real.

Siguiendo estos pasos se podrán gestionar y analizar los datos de manera más eficiente, por que se filtraran las alertas por nivel de criticidad en el dashboard y no tendremos que analizar los logs que tienen criticidad nula o no tienen que ver con la investigación, para lograrlo realizaremos los siguientes pasos:

Edición del archivo de configuración.

Abrimos el archivo de configuración del agente o manager de Wazuh ossec.conf  posteriormente agregamos la configuración para monitorear el archivo de logs.

nano /var/ossec/etc/ossec.conf

Configuración de ejemplo:

<localfile>
    <log_format>syslog</log_format>
    <location>/ruta/al/archivo/authlog.log</location>
</localfile>

Se debe verificar el formato del archivo de los registros para que sea decodificado de manera correcta y posteriormente analizado.

Una vez realizada la edición del archivo se debe reiniciar el agente o el manager donde se haya realizado la configuración.

systemctl restart wazuh-agent
systemctl restart wazuh-manager
Automatización.

Este script leerá el archivo de logs línea por línea y lo copiará a un archivo que será monitorizado por Wazuh.

#!/bin/bash
# Archivo de entrada (registros proporcionados)
input_file="authlog.log"
# Archivo de salida (Archivo monitorizado por wazuh)
output_file="archivoauthlog.log"
# Verifica si el archivo de salida existe y, si es así, lo elimina
if [ -f "$output_file" ]; then
    rm "$output_file"
fi
# Lee el archivo línea por línea
while IFS= read -r line
do
    # Simula la recepción de logs añadiendo un retraso de 200 ms
    sleep 0.2
    # Escribe la línea en el archivo de salida
    echo "$line" >> "$output_file"
    echo "Log añadido: $line"
done < "$input_file"
echo "El archivo ha sido copiado línea por línea a $output_file"
chmod +x /ruta/al/script.sh
Verificación la Configuración.

Acceder al panel de Wazuh Manager y verificar que los logs estén siendo recibidos y analizados correctamente.

image.png

Para comprobar que se trata del archivo analizado inspeccionamos el elemento deseado y verificamos que se trata del archivo de logs escogido.

image.png

Verificación de Incidentes

En caso de que exista un posible incidente de seguridad informática seguir estos pasos:

  1.  Verificar los subdominios del nombre de dominio

Se pueden utilizar diversas herramientas, como:

 

Eventos MISP

Manual de creación de eventos en la plataforma MISP

Eventos MISP

00- Doble factor de autenticación para cuenta MISP

Para fortalecer la seguridad de su cuenta en la plataforma, se debe habilitar la autenticación de dos factores debido a la información que se encuentra en la plataforma.

 A continuación, se detallan los pasos para activar esta función en su perfil de usuario:

Acceda a su perfil de usuario:

image.png

Habilite TOTP.

image.png

image.png
Configure la aplicación de autenticación:

Guarde sus códigos de recuperación (HOTP):

image.png

Eventos MISP

01- Distribución de phishing evento MISP

Introducción

MISP es una herramienta de código abierto diseñada para facilitar el intercambio de información sobre amenazas cibernéticas, permitiendo a los usuarios compartir indicadores de compromiso (IOC's), análisis de malware y otros datos relevantes de seguridad.

Esta guía te ayudará a utilizar la plataforma MISP (Malware Information Sharing Platform & Threat Sharing) para crear y distribuir eventos de manera eficiente y completa. Tenemos como finalidad proporcionar un paso a paso detallado para crear, configurar y publicar eventos en MISP, tomando distintos ejemplos. Su objetivo es estandarizar el proceso de documentación y compartir inteligencia sobre amenazas de manera eficiente, asegurando que los usuarios de la plataforma puedan aprovechar la información para fortalecer sus defensas y prevenir incidentes similares.

Contexto

El Centro de Gestión de Incidentes Informáticos ha identificado una campaña de phishing masiva que distribuye malware a través de adjuntos en correos electrónicos. 

Los pasos para publicar el evento en MISP pueden variar según la información disponible, pero en este ejemplo se detallarán los indicadores de compromiso (IOCs) más comunes asociados a correos de phishing. En casos específicos, es posible que no se encuentren todos los datos mencionados, por lo que solo se debe incluir información verificada.

CREACIÓN DEL EVENTO.

image.png

ASIGNACIÓN DE TAGS

El uso de tags nos ayuda en gran medida a contextualizar y enriquecer la información compartida. Estas etiquetas no solo facilitan la categorización y búsqueda eficiente de eventos también permiten establecer relaciones claras entre incidentes, amenazas y campañas maliciosas.

Al incorporar tags descriptivos, los usuarios de la plataforma pueden priorizar, filtrar y correlacionar datos con mayor precisión, mejorando así la respuesta ante ciberamenazas entre la comunidad de seguridad. 

image.png

image.png

Asignación de Atributos y Objetos

Los atributos se agruparán en objetos para este caso, esto nos sirve para organizar la información (cuerpo del correo, archivo adjunto, etc.).

OBJETOS.

Para crear los objetos nos dirigimos al menú lateral de la derecha y seleccionamos la opción Add Object.

image.png

Objeto 1. Correo electrónico. Extraemos los datos relevantes del correo malicioso.

image.png

image.png

image.png

Objeto 2. Archivo adjunto (malware).

Es posible analizar el archivo en herramientas como VirusTotal, Any.Run o Hybrid Analysis.

image.png

image.png

EVENT REPORT.

image.png

image.png

image.png

image.png

Publicación del evento.

Para modificar el estado inicial del evento y permitir que los demás usuarios de la plataforma accedan a él, según su nivel de distribución, observamos inicialmente que el evento aparece con el estado 'Published=No', como se muestra en la siguiente captura de pantalla

image.png

Con la opción 'Publish (No Email)', se realiza la publicación en la plataforma sin enviar un correo electrónico a los usuarios. Si se requiere el envío de correos, debe seleccionarse la opción 'Publish Event'. Después de elegir cualquiera de las dos opciones, el estado del evento cambia a 'Published=Yes'

image.png

Cuando el evento es publicado se asigna un ID al evento en este caso "3" y el primer valor del evento en la lista es un check que indica que los usuarios que están dentro del criterio de distribución pueden ver la información del evento como se muestra a continuación.

image.png

Eventos MISP

02- Direcciones IP con actividad de malware evento MISP

Introducción

MISP es una herramienta de código abierto diseñada para facilitar el intercambio de información sobre amenazas cibernéticas, permitiendo a los usuarios compartir indicadores de compromiso (IOC's), análisis de malware y otros datos relevantes de seguridad.

Esta guía te ayudará a utilizar la plataforma MISP (Malware Information Sharing Platform & Threat Sharing) para crear y distribuir eventos de manera eficiente y completa. Tenemos como finalidad proporcionar un paso a paso detallado para crear, configurar y publicar eventos en MISP, tomando distintos ejemplos. Su objetivo es estandarizar el proceso de documentación y compartir inteligencia sobre amenazas de manera eficiente, asegurando que los usuarios de la plataforma puedan aprovechar la información para fortalecer sus defensas y prevenir incidentes similares.

Contexto

El Centro de Gestión de Incidentes Informáticos recibió una alerta de seguridad que contiene información delicada (Lista de direcciones IP) de una red de distribución de malware activa dentro del país.

Los pasos para publicar el evento en MISP pueden variar según la información disponible, pero en este ejemplo se detallarán los indicadores de compromiso (IOCs) más comunes asociados a distribución de malware. En casos específicos, es posible que no se encuentren todos los datos mencionados, por lo que solo se debe incluir información verificada.

CREACIÓN DEL EVENTO.

image.png

ASIGNACIÓN DE TAGS

El uso de tags nos ayuda en gran medida a contextualizar y enriquecer la información compartida. Estas etiquetas no solo facilitan la categorización y búsqueda eficiente de eventos también permiten establecer relaciones claras entre incidentes, amenazas y campañas maliciosas.

Al incorporar tags descriptivos, los usuarios de la plataforma pueden priorizar, filtrar y correlacionar datos con mayor precisión, mejorando así la respuesta ante ciberamenazas entre la comunidad de seguridad. 

image.png

image.png

Asignación de Atributos

Los atributos para este caso son de actividad de red, esto nos sirve para organizar la información.

OBJETOS.

En este caso específico no se tienen objetos, como muestras de malware o distribución por phishing o spam debido a que el origen de la información nos detalla direcciones IP que distribuyen malware.

ATRIBUTOS.

Para agregar la lista de IP's procedemos a seleccionar el boton de "+" para añadir los atributos.

image.png

Estos  atributos se clasifican en la categoría de actividad de red e IP destino por que son las direcciones IP a las que se comunican los equipos infectados.

image.png

Una vez seleccionada la opción Submit podemos observar que los atributos han sido agregados correctamente observando si existe una correlación con otros eventos

CORRELACIÓN DE EVENTOS.

image.png

image.png

EVENT REPORT.

image.png

image.png

image.png

image.png

Publicación del evento.

Para modificar el estado inicial del evento y permitir que los demás usuarios de la plataforma accedan a él, según su nivel de distribución, observamos inicialmente que el evento aparece con el estado 'Published=No', como se muestra en la siguiente captura de pantalla

image.png

Con la opción 'Publish (No Email)', se realiza la publicación en la plataforma sin enviar un correo electrónico a los usuarios. Si se requiere el envío de correos, debe seleccionarse la opción 'Publish Event'. Después de elegir cualquiera de las dos opciones, el estado del evento cambia a 'Published=Yes'

image.png

image.png

Cuando el evento es publicado se asigna un ID al evento en este caso "36748" y el primer valor del evento en la lista es un check que indica que los usuarios que están dentro del criterio de distribución pueden ver la información del evento como se muestra a continuación.

image.png

Eventos MISP

03- Campaña DDoS evento MISP

Introducción

MISP es una herramienta de código abierto diseñada para facilitar el intercambio de información sobre amenazas cibernéticas, permitiendo a los usuarios compartir indicadores de compromiso (IOC's), análisis de malware y otros datos relevantes de seguridad.

Esta guía te ayudará a utilizar la plataforma MISP (Malware Information Sharing Platform & Threat Sharing) para crear y distribuir eventos de manera eficiente y completa. Tenemos como finalidad proporcionar un paso a paso detallado para crear, configurar y publicar eventos en MISP, tomando distintos ejemplos. Su objetivo es estandarizar el proceso de documentación y compartir inteligencia sobre amenazas de manera eficiente, asegurando que los usuarios de la plataforma puedan aprovechar la información para fortalecer sus defensas y prevenir incidentes similares.

Contexto

El Centro de Gestión de Incidentes Informáticos realiza la investigación de un intento de ataque de denegación de servicio (DDoS) hacia servidores gubernamentales en Bolivia, durante esta investigación se pudo recopilar una gran cantidad de direcciones IP que pertenecen a la botnet para realizar ataques, se utilizaron criterios de numero de solicitudes realizadas y tipo de solicitudes para identificar estas solicitudes.

Los pasos para publicar el evento pueden variar ligeramente según el contenido y la información proporcionada a la plataforma. En este ejemplo de creación de un evento en MISP, se detallan conjuntos de direcciones IP que luego fueron reportadas a los respectivos países para tomar acciones de mitigación desde sus jurisdicciones. En casos específicos de DDoS, los datos más importantes son las direcciones IP de origen, los rangos de IP y la geolocalización, ya que son atributos clave para correlacionar. Como contexto adicional, los tiempos entre solicitudes son muy útiles para identificar patrones en solicitudes automatizadas.

CREACIÓN DEL EVENTO.

image.png

ASIGNACIÓN DE TAGS

El uso de tags nos ayuda en gran medida a contextualizar y enriquecer la información compartida. Estas etiquetas no solo facilitan la categorización y búsqueda eficiente de eventos también permiten establecer relaciones claras entre incidentes, amenazas y campañas maliciosas.

Al incorporar tags descriptivos, los usuarios de la plataforma pueden priorizar, filtrar y correlacionar datos con mayor precisión, mejorando así la respuesta ante ciberamenazas entre la comunidad de seguridad. 

image.png

image.png

Asignación de información al evento.

Los atributos para este caso pertenecen a la categoría de actividad de red, esto nos sirve para organizar la información.

OBJETOS.

En este caso específico no se incluyen objetos, como muestras de malware o archivos maliciosos, ya que el origen de la información se limita a direcciones IP que forman parte de la botnet responsable del ataque DDoS. Por este motivo, no se añadirán objetos al análisis.

ATRIBUTOS.

Para agregar la lista de direcciones IP procedemos a seleccionar el botón "+" para añadir los atributos.

image.png

Estos  atributos se clasifican en la categoría de actividad de red e IP fuente por que son las direcciones IP desde las que se realizó el intento de denegación de servicio.

image.png

Una vez seleccionada la opción 'Submit', podemos verificar que los atributos se han agregado correctamente y comprobar si existe correlación con otros eventos. En este caso particular, dado el volumen elevado de direcciones IP, se recomienda revisar las correlaciones en la esquina superior derecha de la interfaz. En la columna adyacente pueden observarse los atributos que han sido añadidos al evento

image.png

CORRELACIÓN DE EVENTOS.

La forma recomendada para visualizar la correlación se encuentra en la esquina superior derecha donde podemos encontrar eventos que fueron relacionados con nuestro evento.

En la esquina superior derecha de la interfaz se visualizan los eventos relacionados con las direcciones IP identificadas como parte de la red involucrada en el ataque DDoS, extraídas durante la investigación. Este contexto nos permite establecer que:

image.png

EVENT REPORT.

image.png

image.png

image.png

image.png

Publicación del evento.

Para modificar el estado inicial del evento y permitir que los demás usuarios de la plataforma accedan a él, según su nivel de distribución, observamos inicialmente que el evento aparece con el estado 'Published=No', como se muestra en la siguiente captura de pantalla.

image.png

Con la opción 'Publish (No Email)', se realiza la publicación en la plataforma sin enviar un correo electrónico a los usuarios. Si se requiere el envío de correos, debe seleccionarse la opción 'Publish Event'. Después de elegir cualquiera de las dos opciones, el estado del evento cambia a 'Published=Yes'

image.png

Cuando el evento es publicado se asigna un ID al evento en este caso "53289" y el primer valor del evento en la lista es un check que indica que los usuarios que están dentro del criterio de distribución pueden ver la información del evento como se muestra a continuación.

image.png