SSH PREPROCESSOR
Se trata de un preprocessor que identifica una serie de exploits ejecutados contra un servidor SSH/OPENSSH, de esta forma se puede detectar cuando esta ocurriendo un ataque y las medidas que se deben tomar para afrontarlo. Este preproprocessor detecta algunos de los exploits mas críticos sobre protocolo SSH, tales como Challenge-Response Buffer Overflow, CRC 32, Secure CRT, y Protocol Mismatch exploit. , Para esto Snort cuenta el número de bytes transmitidos al servidor, de esta forma puede detectar un payload malicioso por su tamaño, ya que algunos de estos exploits basan su funcionamiento en exceder los limites de determinadas funciones del servidor SSH (antes y después del intercambio de clave), por otro lado algunos de estos afectan solamente a determinadas versiones de SSH como por ejemplo Challenge-Response Buffer Overflow solamente afecta a SSHv2 y CRC 32 a SSHv1. De este modo la cadena correspondiente a la versión de SSH es utilizada para distinguir los ataques.
CONFIGURACION de SSH PREPROCESSOR
Este preprocessor por defecto desactiva todas las alertas y chequea el trafico por el puerto 22 que es el trafico de SSH. A continuación se listan las opciones disponibles:
server_ports {<puerto> <puerto>} | Indica los puertos por los cuales se inspeccionara trafico SSH |
max_encrypted_packets <numero> | Número de paquetes cifrados que Snort inspeccionará antes de ignorar una sesión SSH determinada, si este número es superado en una sesión SSH, Snort ignorará la sesión con el fin de mejorar el rendimiento, el valor por defecto es 25, este valor puede ser establecido desde 0 hasta 65535 |
max_client_bytes <numero> | Número máximo de bytes sin respuesta asociada transferidos, cuando se supera este limite, Snort lanzará una alerta de Challenge-Response Overflow o CRC 32. El valor de este atributo debería ser menor al número de paquetes enviados definido en la propiedad max_encrypted_packets de otro modo Snort omitirá el trafico, por defecto es 19600, el rango de valores está entre 0 y 65535. |
max_server_version_len < numero > | Número máximo de bytes permitido en la cadena de versión del servidor SSH antes de alertar sobre Secure CRT Version String Overflow. El valor por defecto es 80, el rango de valores validos esta entre 0 y 255 |
autodetect | Detecta automáticamente la versión de SSH. |
enable_respoverflow | Activa chequeo de exploit de Challenge-Response Overflow |
enable_ssh1crc32 | Activa chequeo de exploit CRC 32 |
enable_srvoverflow | Activa chequeo de exploit Secure CRT |
enable_protomismatch | Activa chequeo de exploit Protocol Mismatch |
enable_badmsgdir | Activa alertas para el flujo de trafico erroneo, por ejemplo si un cliente genera trafico de servidor o si un supuesto servidor genera trafico de cliente. |
enable_paysize | Activa alertas para tamaños inválidos de payloads |
enable_recognition | Activa alertas para trafico que no es SSH sobre puertos SSH. |
Ejemplo de configuración de SSH Preprocessor
1. Define los puertos a inspeccionar (server_ports), define el número máximo de paquetes a inspeccionar (max_encrypted_packets), define el número máximo de bytes antes de generar alerta por exploit (max_client_bytes), define el limite máximo de la cadena de versión antes de generar alerta por exploit (max_server_version_len), Auto-detección de protocolo SSH, Activa el chequeo de Challenge-Response (enable_respoverflow), Activa el chequeo de CRC32 (enable_ssh1crc32), Activa el chequeo de Secure CRT (enable_srvoverflow), Activa el chequeo de Protocolo Mistmach (enable_protomismatch) Activa alertas para el flujo de paquetes en dirección equivocada (enable_badmsgdir), Activa alertas para tamaño invalido de payloads (enable_paysize), Activa alertas para trafico que no es SSH sobre puertos SSH.
preprocessor ssh: \ server_ports { 22 4321 } \ max_encrypted_packets 20 \ max_client_bytes 19600 \ max_server_version_len 60 \ autodetect \ enable_respoverflow \ enable_ssh1crc32 \ enable_srvoverflow \ enable_protomismatch \ enable_badmsgdir \ enable_paysize \ enable_recognition |
DNS PREPROCESSOR
Este preprocessor intenta detectar posibles ataques contra un servidor DNS, actualmente es capaz de detectar exploits tales como DNS Client RDATA Overflow, Obsolete Record Types y Experimental Record Types, Para conseguir esto, el preprocessor busca en el trafico de la respuesta DNS sobre TCP y UDP. Al igual que otros preprocessors, este depende de que este activo el preprocessor Stream5 para su correcto funcionamiento, en especial con lo relacionado a la decodificación de paquetes TCP.
Las opciones de configuración que soporta son las siguientes:
ports {<puerto> <puerto>} | Puertos a inspeccionar. |
enable_obsolete_types | Alerta sobre el uso de tipos tipos de registros DNS obsoletos. |
enable_experimental_types | Alerta sobre el uso de tipos tipos de registros DNS experimentales. |
enable_rdata_overflow | Chequea si se esta intentando ejecutar un exploit basado en DNS Client Rdata Overflow sobre tipos de registros TXT |
Como se puede apreciar son unas pocas opciones, así que el ejemplo de configuración resulta ser bastante sencillo
CONFIGURACION DNS PREPROCESSOR
1. Selecciona el puerto de los servidores DNS a inspeccionar(ports), activa el chequeo de Rdata Overflow (enable_rdata_overflow ), activa el chequeo del uso de Record Types obsoletos (enable_obsolete_types), activa el chequeo del uso de Record Types Experimentales (enable_experimental_types). preprocessor dns: \ ports { 53 } \ enable_rdata_overflow \ enable_obsolete_types \ enable_experimental_types |