Configurando o Suricata para Identificar Tráfego de Ataques HTTP

Editando o arquivo classification.config, adicione as seguintes categorisa para o protocolo HTTP e defina prioridades apropriadas:

        config classification: web-status-error, Erro de Status do Web Server, 4
        config classification: web-scan-attack, Ataque de Varredura em Páginas Web, 2
        config classification: web-sql-injection, Ataque de Injeção SQL, 1
        config classification: web-xss-attack, Ataque XSS Cross-Site, 2
        config classification: web-ssrf-attack, Ataque SSRF Cross-Site, 2
        config classification: web-shell-attack, Injeção de Malware em Sites, 1
        config classification: web-file-upload, Anomalia em Upload de Arquivos, 1

 </div></div><div>Detecção de Anomalias na Barra de Endereços (URL)
-------------------------------------------------

### 1. Códigos de Status Anômalos

<div> ```

            alert http any any -> $HOME_NET 8443 (msg:"Erro 404 detectado no servidor web."; 
                content:"404"; http_stat_code; 
                classtype:web-status-error; 
                sid:561001; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Erro 403 detectado no servidor web."; 
                content:"403"; http_stat_code; 
                classtype:web-status-error; 
                sid:561002; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Erro 500 detectado no servidor web."; 
                content:"500"; http_stat_code; 
                classtype:web-status-error; 
                sid:561003; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Varredura no servidor web detectada."; 
                content:"404"; http_stat_code; 
                threshold:type both, track by_src, count 5, seconds 20; 
                classtype:web-scan-attack; 
                sid:561004; rev:1;)
        
        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'union' detectado."; 
            content:"select"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562001; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'order by' detectado."; 
            content:"order by"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562002; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'database()' detectado."; 
            content:"database()"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562003; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'version()' detectado."; 
            content:"version()"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562004; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'user()' detectado."; 
            content:"user()"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562005; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'updatexml(' detectado."; 
            content:"updatexml("; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562006; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'extract(' detectado."; 
            content:"extract("; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562007; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'and' detectado."; 
            content:"|20|and|20|"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562008; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de 'or' detectado."; 
            content:"|20|or|20|"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562009; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de '|' detectado."; 
            content:"|7C 7C|"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562010; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de '&&' detectado."; 
            content:"&&"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562011; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de '#' detectado."; 
            content:"|23|"; http_uri; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562012; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de '--' detectado."; 
            content:"--"; http_uri; 
            pcre:"/\+*|\s*/i"; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562013; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL - Uso de '=' detectado."; 
            content:"=""; http_uri; 
            pcre:"/union|select|from|updatexml|extract|database\
            (|user\(|version\(|information_schema|where|columns|--\
            s+|--\++|\s+and\s+|\s+or\s+|\|\||&&/i"; 
            nocase; 
            classtype:web-sql-injection; 
            sid:562014; rev:1;)

 </div></div><div>### 3. Ataque XSS Cross-Site

<div> ```

            alert http any any -> $HOME_NET 8443 (msg:"Ataque XSS detectado - Uso de 'script'."; 
                content:"<script alert="" any="" classtype:web-xss-attack="" http="" http_uri="" nocase="" rev:1="" sid:563001=""> $HOME_NET 8443 (msg:"Ataque XSS detectado - Uso de '/script'."; 
                content:"/script"; http_uri; 
                nocase; 
                classtype:web-xss-attack; 
                sid:563002; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Ataque XSS detectado - Uso de 'javascript'."; 
                content:"javascript"; http_uri; 
                nocase; 
                classtype:web-xss-attack; 
                sid:563003; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Ataque XSS detectado - Uso de 'alert(' detectado."; 
                content:"alert(""; http_uri; 
                nocase; 
                classtype:web-xss-attack; 
                sid:563004; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Ataque XSS detectado - Uso de 'onload=' detectado."; 
                content:"onload=""; http_uri; 
                nocase; 
                classtype:web-xss-attack; 
                sid:563005; rev:1;)

            alert http any any -> $HOME_NET 8443 (msg:"Ataque XSS detectado - Uso de 'http|3A|' detectado."; 
                content:"http|3A|"; http_uri; 
                nocase; 
                classtype:web-xss-attack; 
                sid:563006; rev:1;)
        </script>
        alert http any any -> $HOME_NET 8443 (msg:"Ataque SSRF detectado - Uso de '=file|3A|'."; 
            content:"=file|3A|"; http_uri; 
            nocase; 
            classtype:web-ssrf-attack; 
            sid:564001; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Ataque SSRF detectado - Uso de 'http|3A|'."; 
            content:"http|3A|"; http_uri; 
            nocase; 
            classtype:web-ssrf-attack; 
            sid:564002; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Ataque SSRF detectado - Uso de 'https|3A|'."; 
            content:"https|3A|"; http_uri; 
            nocase; 
            classtype:web-ssrf-attack; 
            sid:564003; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Ataque SSRF detectado - Uso de 'dict|3A|'."; 
            content:"dict|3A|"; http_uri; 
            nocase; 
            classtype:web-ssrf-attack; 
            sid:564004; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Ataque SSRF detectado - Uso de 'gopher|3A|'."; 
            content:"gopher|3A|"; http_uri; 
            nocase; 
            classtype:web-ssrf-attack; 
            sid:564005; rev:1;)

        alert http any any -> $HOME_NET 8443 (msg:"Ataque SSRF detectado - Uso de 'phar|3A|'."; 
            content:"phar|3A|"; http_uri; 
            nocase; 
            classtype:web-ssrf-attack; 
            sid:564006; rev:1;)

 </div></div><div>### 5. Injeção de Malware em URLs

<div> ```

            alert http any any -> $HOME_NET 8443 (msg:"Injeção de URL Malware detectada."; 
                content:""; http_uri; 
                pcre:"/eval|assert|system\(|exec|$_POST|$_GET/i"; 
                content:"x-www-form-urlencoded"; 
                classtype:web-shell-attack; 
                sid:545005; rev:1;)
        

As regras para detecção em corpos de requisição POST e cabeçalhos HTTP são similares às regras para requisições GET, mas substituindo http_uri por http.request_body ou http_client_body.

        # POST Request
        alert http any any -> $HOME_NET 8443 (msg:"Anomalia em upload de arquivo detectada."; 
            content:"=""; http.request_body; 
            pcre:"/eval|assert|system\(|exec|$_POST|$_GET/i"; 
            content:"x-www-form-urlencoded"; 
            classtype:web-shell-attack; 
            sid:546001; rev:1;)

        # Cabeçalho HTTP
        alert http any any -> $HOME_NET 8443 (msg:"Injeção SQL detectada no cabeçalho HTTP."; 
            content:"=""; http.header; 
            pcre:"/union|select|from|updatexml|extract|database\
            (|user\(|version\(|information_schema|where|columns|--\
            s+|--\++|\s+and\s+|\s+or\s+|\|\||&&/i"; 
            nocase; 
            classtype:web-sql-injection; 
            sid:567015; rev:1;)

 </div></div>

Tags: Suricata HTTP sql-injection XSS SSRF

Publicado em 8-16 16:09