Skip to content

Instantly share code, notes, and snippets.

@johnfelipe
Created January 26, 2024 17:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnfelipe/11dbb432e1f53b937fae5dc2d0152642 to your computer and use it in GitHub Desktop.
Save johnfelipe/11dbb432e1f53b937fae5dc2d0152642 to your computer and use it in GitHub Desktop.
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