# TCP FIN & PUSH Flood

## **📋 Índice**

1. [Introdução](#-introdução)
2. [TCP FIN Flood](#-tcp-fin-flood)
3. [TCP PUSH Flood](#-tcp-push-flood)
4. [TCP RST Flood](#-tcp-rst-flood)
5. [Técnicas de Exploração](#-técnicas-de-exploração)
6. [Mitigação e Prevenção](#-mitigação-e-prevenção)

***

## **🔍 Introdução**

Diferente do SYN Flood (que ataca a fase de estabelecimento), os ataques de **FIN**, **PUSH** e **RST Flood** utilizam pacotes que, em uma comunicação normal, servem para sinalizar o fim de uma transmissão, a urgência de processamento ou o erro de uma conexão. Ao inundar um servidor com esses pacotes inesperados, o atacante sobrecarrega a CPU e os firewalls de estado (Stateful Firewalls).

***

## **🛑 TCP FIN Flood**

O pacote **FIN (Finish)** sinaliza que o remetente deseja encerrar a conexão.

* **O Ataque:** O atacante envia milhares de pacotes FIN para portas abertas ou fechadas sem que haja uma conexão aberta anteriormente.
* **Impacto:** O servidor precisa verificar sua tabela de estados para cada pacote recebido para ver se ele pertence a uma conexão ativa. Se o firewall não for eficiente, ele gastará recursos examinando tráfego inválido.

***

## **⚡ TCP PUSH Flood**

O pacote **PSH (Push)** solicita que o receptor envie os dados do buffer diretamente para a aplicação, sem esperar que o buffer fique cheio.

* **O Ataque:** O atacante envia pacotes PSH massivos para uma porta de serviço (ex: porta 80).
* **Impacto:** Força o servidor a processar constantemente pequenas quantidades de dados e sobrecarregar a fila de entrega da aplicação, podendo levar à exaustão de CPU.

***

## **✂️ TCP RST Flood**

O pacote **RST (Reset)** informa que a conexão deve ser encerrada imediatamente devido a um erro.

* **O Ataque:** inundação massiva de pacotes RST para diversas portas.
* **Impacto:** Similar ao FIN Flood, serve para exaurir recursos de processamento de firewalls e sistemas de detecção de intrusão que tentam correlacionar os resets com sessões inexistentes.

***

## **🔧 Técnicas de Exploração**

### **Uso do Hping3 para Inundação**

* **FIN Flood:**

  ```bash
  sudo hping3 -F --flood --rand-source <target_ip> -p <target_port>
  ```
* **RST Flood:**

  ```bash
  sudo hping3 -R --flood --rand-source <target_ip> -p <target_port>
  ```
* **PUSH Flood:**

  ```bash
  sudo hping3 -P --flood --rand-source <target_ip> -p <target_port>
  ```

***

## **🛡️ Mitigação e Prevenção**

### **1. Filtro de Pacotes Órfãos (Stateful Inspection)**

Firewalls modernos ignoram automaticamente pacotes FIN/RST/PSH que não pertençam a uma conexão já marcada como `ESTABLISHED` na tabela de estados.

### **2. Rate Limiting por Tipo de Flag**

Configurar limites de pacotes por segundo para flags que não sejam SYN.

```bash
# Exemplo iptables para limitar RSTs
iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT
```

### **3. Uso de IDSs (Intrusion Detection Systems)**

Ferramentas como o Snort possuem regras para detectar anomalias de flags TCP (como pacotes com flags conflitantes como SYN+FIN).

***

> Esses ataques são frequentemente usados em conjunto para confundir sistemas de defesa e "camuflar" ataques mais sofisticados que ocorrem simultaneamente na camada de aplicação.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/tecnicas/rede-and-infraestrutura/tcp/tcp-fin-and-push-flood.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
