Created
January 26, 2024 17:49
-
-
Save johnfelipe/11dbb432e1f53b937fae5dc2d0152642 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 | |
00:00:00,660 --> 00:00:06,860 | |
qué está pasando chicos, bienvenidos de vuelta hoy estamos haciendo un desafío | |
con Splunk, así que el nombre de la sala es investigando con Splunk y se nos | |
presenta un escenario en el que debemos responder a las preguntas en un intento | |
de analizar qué sucedió y cuáles fueron las razones o los artefactos clave de la | |
violación de seguridad. Según la descripción, el analista SOC Johnny ha | |
observado algunos comportamientos anómalos en los registros de algunas máquinas | |
con Windows. Entonces ahí es donde ocurrió el incidente. En una estación de | |
trabajo con Windows. Parece que el adversario tiene acceso a algunas de estas | |
máquinas y ha creado con éxito una puerta trasera. Su supervisor le ha pedido | |
que extraiga esos registros de las máquinas sospechosas y los ingiera en Splunk | |
para una investigación rápida. Así que ahí lo tienes, una máquina con Windows o | |
algunas máquinas con Windows han sido comprometidas, los registros de eventos de | |
Windows se han extraído y se han subido a Splunk para una investigación rápida. | |
Se nos exige descubrir qué sucedió. Nuestra tarea como analistas SOC es examinar | |
los registros e identificar las anomalías. Bien, desplegando la máquina, aquí | |
tenemos Splunk y ahora los datos han sido cargados y están disponibles para | |
acceder a ellos, como mencionamos en el video anterior, cuando subes datos creas | |
un índice. El índice para los datos es index = main y al recuperar el índice | |
recuperaremos todos los eventos. Asegúrate de | |
2 | |
00:01:43,800 --> 00:01:48,760 | |
Haz clic en todo el tiempo y tenemos un total de 12 | |
3 | |
00:01:48,760 --> 00:01:53,600 | |
256 eventos, esa es la respuesta para la primera pregunta. | |
4 | |
00:01:53,600 --> 00:01:58,540 | |
Bien, en uno de los hosts infectados, lograste | |
5 | |
00:01:58,540 --> 00:02:07,140 | |
crear un usuario de puerta trasera. ¿Cuál es el nombre de usuario? Básicamente, | |
estamos buscando | |
6 | |
00:02:07,140 --> 00:02:12,790 | |
descubrir cómo se creó el nombre de usuario. Tenemos dos métodos, podemos | |
7 | |
00:02:12,790 --> 00:02:19,540 | |
buscar el comando o buscar el ID de evento. Aquí a la izquierda tenemos IDs de | |
eventos mayores a 55 y si observamos el comando, tenemos un filtro | |
8 | |
00:02:19,540 --> 00:02:27,210 | |
o campo para la línea de comando. Vamos a filtrar por ID de evento y | |
específicamente vamos a filtrar | |
9 | |
00:02:27,210 --> 00:02:37,070 | |
para el ID de evento que se refiere a la creación de un usuario, que resulta ser | |
4720, 4720 nos daría | |
10 | |
00:02:37,070 --> 00:02:51,230 | |
solo un evento que indica que se creó esa cuenta de usuario. Para encontrar el | |
11 | |
00:02:51,230 --> 00:02:58,940 | |
nombre de cuenta, bajamos y vemos que es uno berto, es alberto pero el uno o el | |
uh uno | |
12 | |
00:02:58,940 --> 00:03:09,180 | |
reemplaza a la l, ese es el nombre de cuenta o el nombre de usuario que se creó. | |
En el mismo | |
13 | |
00:03:09,180 --> 00:03:16,860 | |
host, también se actualizó una clave de registro relacionada con el nuevo | |
usuario de puerta trasera. ¿Cuál es la ruta completa de | |
14 | |
00:03:16,860 --> 00:03:25,440 | |
esa clave de registro? Estábamos buscando encontrar todos los eventos donde se | |
agregó, modificó o eliminó una clave de registro, así que si miramos a la | |
izquierda podemos ver la categoría y podemos ver la | |
15 | |
00:03:39,630 --> 00:03:47,710 | |
"top 10 values of the event of the event categories you can see this registry | |
object added or deleted" | |
16 | |
00:03:47,710 --> 00:03:55,460 | |
"los 10 mejores valores del evento de las categorías de eventos puedes ver este | |
objeto de registro agregado o eliminado" | |
17 | |
00:04:05,160 --> 00:04:10,610 | |
"exactly describes the question so a register key as deleted we click on that | |
and we have 1496 events all right" | |
18 | |
00:04:10,610 --> 00:04:19,560 | |
"describe exactamente la pregunta, así que una clave de registro fue eliminada, | |
hacemos clic en eso y tenemos 1496 eventos, está bien" | |
19 | |
00:04:24,210 --> 00:04:28,800 | |
"so to filter these down more we're looking to find out the these events that | |
are related to the new back-door user which happens to be A1Berto and now we | |
narrowed down the number to 2" | |
20 | |
00:04:28,800 --> 00:04:33,360 | |
"entonces, para filtrarlos más, estamos buscando averiguar los eventos que están | |
relacionados con el nuevo usuario de puerta trasera, que resulta ser A1Berto, y | |
ahora hemos reducido el número a 2" | |
21 | |
00:04:40,360 --> 00:04:47,160 | |
"so we have two events and from here we can find out the registry key that has | |
been deleted as you can see the late key" | |
22 | |
00:04:47,160 --> 00:04:56,160 | |
"así que tenemos dos eventos y desde aquí podemos averiguar la clave de registro | |
que se ha eliminado, como puedes ver, la clave tardía" | |
23 | |
00:05:02,850 --> 00:05:10,860 | |
"and this is the key how about the other event if we take a look down there you | |
see he create key but we're not looking to keys that were created we're looking | |
that support the key that were modified or update or deleted" | |
24 | |
00:05:10,860 --> 00:05:19,320 | |
"y esta es la clave, ¿qué pasa con el otro evento? si miras allí abajo, verás | |
que se crea una clave, pero no estamos buscando claves que se hayan creado, | |
estamos buscando que respalden la clave que se haya modificado, actualizado o | |
eliminado" | |
25 | |
00:05:26,990 --> 00:05:32,670 | |
vale, la versión falsa era a1berto y la versión real es alberto, ese es el | |
nombre de usuario que el atacante intentaba suplantar para pasar desapercibido | |
en el ataque. Hasta ahora, el atacante ha obtenido acceso y ha creado un usuario | |
llamado a1berto que se parece al nombre alberto. A continuación, ¿cuál es el | |
comando utilizado para agregar un usuario con puerta trasera desde una | |
computadora remota? Desde aquí estamos tratando de averiguar cómo se ha creado | |
el usuario a1berto. Debe haber un comando que se haya ejecutado desde una | |
computadora remota. ¿Por qué? Porque las máquinas Windows han sido | |
comprometidas, por supuesto, desde la computadora del atacante, que es una | |
computadora remota. El atacante ejecutó un comando en su máquina remota para | |
agregar el usuario con puerta trasera. Queremos descubrir qué comando es. Si | |
volvemos a la página principal e indexamos aquí, buscamos "net user", pero ese | |
es el único comando que se utiliza para agregar un usuario. Desplazándonos hacia | |
abajo y observando los campos aquí, tratamos de encontrar el comando exacto, | |
pero encontramos 6,000 eventos para usuarios. Si los filtramos para alberto, | |
tenemos tres en la línea de comandos, pero no son los comandos que estamos | |
buscando. Así que vamos a retroceder y ver aquí, el atacante ejecutó... | |
26 | |
00:07:24,680 --> 00:07:30,920 | |
el comando desde una computadora remota, por lo que no es exactamente el nombre | |
de usuario que estamos buscando aquí en el comando de net user tenemos 6000 | |
eventos que tenemos que reducir de alguna manera, si buscamos doble mic 89 coma | |
89 eventos todavía estamos lejos de la respuesta que buscamos aquí para | |
averiguar comando exacto, pero estamos obteniendo demasiados eventos para el | |
comando net user add, volviendo atrás, el atacante primero obtuvo acceso como | |
uno de estos usuarios, este usuario es el usuario original, ¿qué tal el comando | |
líneas de comando de James? ¿Por qué seleccioné a James aquí básicamente James | |
podría ser el nombre de usuario al que el atacante obtuvo acceso cuando primero | |
comprometieron la máquina, si observamos el campo de línea de comando veo cuatro | |
comandos interesantes y puedo ver este veo el sistema de Windows 32 de WMIC que | |
indica que el atacante obtuvo acceso a través de PowerShell específicamente evil | |
winrm y ejecutó este comando para agregar al usuario A1 Berto? A1 Berto es un | |
nombre de usuario de puerta trasera que ha sido creado con este comando a partir | |
del primer acceso o la primera cuenta de punto de apoyo que era James. Ese es el | |
comando. ¿Cuántas veces se observó el intento de inicio de sesión del usuario de | |
puerta trasera durante la investigación? ¿Cuántas veces se observó el intento de | |
inicio de sesión del usuario de puerta trasera? | |
27 | |
00:09:29,800 --> 00:09:34,680 | |
a través de la investigación cuántas veces iniciaron sesión con el nombre de | |
usuario "a1berto", queremos averiguar en esta categoría cuáles son los eventos | |
que estamos buscando para saber si hay un inicio de sesión. Si no hay un inicio | |
de sesión significa que no hay un inicio de sesión exitoso o fallido con este | |
nombre de usuario. Al observar los IDs de evento, tenemos ocho IDs de evento y | |
ninguno de ellos coincide con un intento de inicio de sesión exitoso o fallido, | |
lo que significa que nos quedamos con 0. | |
28 | |
00:09:34,680 --> 00:09:45,410 | |
¿Cuál es el nombre del host infectado en el que se ejecutaron comandos parciales | |
sospechosos? Aquí también estamos tratando de averiguar el nombre del host de la | |
máquina infectada. Ya descubrimos que el nombre de usuario era James, así que si | |
retrocedemos y escribimos "partial", como puedes ver aquí, te muestra todos los | |
comandos parciales que se han ejecutado y el host resulta ser James Brown. El | |
registro parcial está habilitado en este dispositivo. ¿Cuántos eventos se | |
registraron para la ejecución parcial maliciosa? El registro parcial es una | |
característica que te permite registrar todos los comandos parciales ejecutados | |
en un host específico. La trampa está en que una vez que habilitas el registro | |
parcial, se desencadena un ID de evento en Windows, el ID de evento es 4103. | |
Entonces, queremos averiguar cuántos eventos se generaron como resultado del | |
registro parcial. Tenemos que filtrar por este ID de evento, exactamente el | |
evento 4103. Tenemos 79 eventos y codificados. | |
29 | |
00:11:25,940 --> 00:11:33,010 | |
script parcial del host infectado inició una solicitud web ¿cuál es la URL | |
completa? ok, volviendo a powershell, queremos decodificar el comando que se ha | |
ejecutado, hay exactamente un único comando, que es este, así que estamos | |
buscando decodificar este comando, desplazándonos hacia abajo hasta el final, | |
vamos a copiar todo eso y vamos a ir a cyber chef desde la página 64, nuevamente | |
eliminemos todo eso y ahí abajo, tenemos decodificada la base 64, como puedes | |
ver, necesitamos algunos cambios en la codificación en la salida, así que vamos | |
a usar la decodificación decodificar texto para entender esta fórmula, así que | |
tf8 exactamente no es bueno, UTF-6716 suena bien, ahora, si nos desplazamos | |
hacia abajo, vemos aquí los agentes de usuario y dijimos agente de usuario, | |
vemos una cadena base64 justo después de la cadena, tenemos el directorio o la | |
ruta que indica que se ha accedido a una página llamada news.php o un archivo | |
llamado news, así que esa es la ruta de la URL, ¿y qué hay de la URL en sí? voy | |
a duplicar esto, copiar la página 64, probablemente esta página 64, si la | |
decodificamos, tendremos la URL completa, como puedes ver, es la dirección IP, | |
ahora, si tomamos esa barra nueva de esta manera php, tenemos la URL completa, | |
pero necesitamos escribir la URL completa en una fórmula específica. | |
30 | |
00:13:40,110 --> 00:13:56,620 | |
["como puedes ver defendamos la URL así que vamos a ver a quitar estos y esta es | |
la respuesta final", | |
31 | |
00:13:56,620 --> 00:14:06,260 | |
"ese fue un desafío intermedio con Splunk no involucraba tantos filtros, tantos | |
procesamientos", | |
32 | |
00:14:06,260 --> 00:14:14,260 | |
"consultas de búsqueda en Splunk era solo un análisis simple de un incidente nos | |
requería", | |
33 | |
00:14:14,260 --> 00:14:19,300 | |
"entender los ID de eventos y cómo saltar entre diferentes etapas durante un", | |
34 | |
00:14:19,300 --> 00:14:25,840 | |
"compromiso bien chicos espero que les haya gustado eso y definitivamente los | |
veré en", | |
35 | |
00:14:25,840 --> 00:14:28,640 | |
"el próximo video"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment