hacktricks/generic-methodologies-and-resources/pentesting-network/ids-evasion.md

42 lines
2.3 KiB
Markdown
Raw Normal View History

2023-06-05 18:55:20 +00:00
# Manipulación de TTL
Envía algunos paquetes con un TTL suficiente para llegar al IDS/IPS pero no suficiente para llegar al sistema final. Luego, envía otros paquetes con las mismas secuencias que los anteriores para que el IPS/IDS piense que son repeticiones y no los verifique, pero en realidad están llevando el contenido malicioso.
**Opción de Nmap:** `--ttlvalue <valor>`
# Evitando firmas
Simplemente agrega datos basura a los paquetes para evitar la firma del IPS/IDS.
**Opción de Nmap:** `--data-length 25`
# Paquetes fragmentados
Simplemente fragmenta los paquetes y envíalos. Si el IDS/IPS no tiene la capacidad de reensamblarlos, llegarán al host final.
**Opción de Nmap:** `-f`
# Checksum inválido
Los sensores generalmente no calculan el checksum por razones de rendimiento. Por lo tanto, un atacante puede enviar un paquete que será interpretado por el sensor pero rechazado por el host final. Ejemplo:
Envía un paquete con la bandera RST y un checksum inválido, para que el IPS/IDS piense que este paquete va a cerrar la conexión, pero el host final descartará el paquete ya que el checksum es inválido.
# Opciones IP y TCP no comunes
Es posible que un sensor ignore los paquetes con ciertas banderas y opciones establecidas dentro de las cabeceras IP y TCP, mientras que el host de destino acepta el paquete al recibirlo.
# Superposición
Es posible que cuando fragmentas un paquete, exista algún tipo de superposición entre los paquetes (tal vez los primeros 8 bytes del paquete 2 se superponen con los últimos 8 bytes del paquete 1, y los últimos 8 bytes del paquete 2 se superponen con los primeros 8 bytes del paquete 3). Entonces, si el IDS/IPS los reensambla de manera diferente al host final, se interpretará un paquete diferente.\
O tal vez, llegan 2 paquetes con el mismo desplazamiento y el host tiene que decidir cuál toma.
* **BSD**: Tiene preferencia por los paquetes con un _offset_ más pequeño. Para paquetes con el mismo desplazamiento, elegirá el primero.
* **Linux**: Al igual que BSD, pero prefiere el último paquete con el mismo desplazamiento.
* **Primero** (Windows): El primer valor que llega, es el valor que se queda.
* **Último** (cisco): El último valor que llega, es el valor que se queda.
# Herramientas
* [https://github.com/vecna/sniffjoke](https://github.com/vecna/sniffjoke)