10: Evadere IDS, Firewall e Honeypot
Concetti generali
Un IDS (Intrusion Detection System) è un software (o hardware) di sicurezza che ispeziona tutto il traffico in ingresso e in uscita dalla rete, alla ricerca di pattern sospetti.
Tipologie di IDS
NIDS:
Network based IDS, consiste in una macchina posta nella rete in modalità promiscua, in ascolto sul traffico, in grado di generare alert in caso di pattern malevoli.
HIDS:
Host based IDS, sono in genere applicativi (agent) installati in host specifici, in grado di fare auditing sugli eventi dell’host in analisi.
Firewall
Sono dispositivi hardware (o software) che prevengono gli accesso non autorizzati da e verso le reti private; sono in genere posizionati tra la rete pubblica e quella privata. Il firewall analizza tutti i pacchetti che entrano o lasciano la rete e blocca quelli che non rispettano i criteri di sicurezza impostati.
Architettura firewall
BASTION HOST: È un sistema configurato per proteggere le risorse dagli attacchi, ha due interfacce, una per la rete privata e una per internet.
SCREENED SUBNET: È più comune chiamarla DMZ (DeMilitarized Zone) e contiene host che offrono servizi che devono essere disponibili all’esterno (ad es. webserver), la zona privata non può essere raggiunta dagli utenti internet.
MULTI-HOMED FIREWALL: Sono firewall con due o più interfacce che permettono un’ulteriore suddivisione della rete in base a specifiche di security dettate dall’azienda.
DMZ – DeMilitarized Zone
La DMZ è una rete che si utilizza come buffer tra la rete interna (sicura) e internet (insicuro). Viene creata con un firewall con tre o più interfacce di rete.
Tecniche di IDS evasion
Si riduce tutto a far vedere all’IDS pacchetti che in realtà sono altro.
Insertion Attack
È una tipologia di attacco che confonde l’IDS facendogli leggere pacchetti non validi, l’IDS accetterà i pacchetti che saranno rifiutati dagli end system coinvolti, ciò comporterà l’inserimento di dati nell’IDS.
Obfuscation
È una tecnica di evasione IDS, consiste nell’encoding del pacchetto (contenente un payload) in maniera tale che sia decifrabile solo dall’host target e non dall’IDS, in genere viene utilizzata la crittografia o l’encoding Unicode.
Tecniche di firewall evasion
L’identificazione dei firewall può avvenire tramite port scanning e discovery dei servizi running, firewalking che consiste nell’utilizzo del TTL per determinare le ACL e mappare la rete, e banner grabbing per il footprinting.
IP Address Spoofing
L’attaccante maschera il proprio indirizzo IP come se fosse un host fidato, questo avviene modificando l’header dei pacchetti IP in modo da riuscire a bypassare il firewall.
Bypass di siti web bloccati
Alcuni siti web permettono di navigare su altri siti web attraverso di essi, evitando così le regole IP-based del firewall.
Firewall bypass tramite ICMP Tunneling
Questa tecnica permette, ad esempio, di incapsulare una backdoor nella porzione di dati dei pacchetti ICMP, la parte del payload è arbitraria e non è esaminata da molti firewall pertanto è possibile incapsulare qualsiasi tipo di dato.
11: Hacking Web Application
Minacce alle Web Application
OWASP Top 10 Application Security Risks (2017)
- Injection
- Broken Authentication
- Sensitive Data Exposure
- XML External Entity
- Broken Access Control
- Security Misconfiguration
- Cross-Site Scripting (XSS)
- Insecure Deserialization
- Componenti con vulnerabilità note
- Logging e monitoraggio insufficiente
Injection
È una vulnerabilità che permette a dati non validati di essere interpretati ed eseguiti dal server, si suddividono in: SQL Injection, Command Injection, LDAP Injection.
Broken Authentication
Un attaccante può sfruttare le vulnerabilità presenti nel meccanismo di autenticazione o nelle funzioni che gestiscono le sessioni come: account esposti, session ID, logout, password management, timeouts, domande di sicurezza e altro per impersonificare un utente.
Sensitive Data Exposure
Molte applicazioni web non proteggono le informazioni sensibili da accessi non autorizzati, questo si può verificare se vi sono falle come una scorretta gestione della cifratura o leak di informazioni (ad es. accessi).
XXE – XML External Entity
È un attacco server-side, nello specifico un SSRF (Server-Side Request Forgery), dove l’applicazione effettua il parsing di un file XML da una sorgente non riconosciuta. Sfrutta gli errori del parser XML.
Broken Access Control
L’Access Control si riferisce a come una web application permette l’accesso ai propri contenuti e funzioni, questo metodo bypassa l’autenticazione.
Security Misconfiguration
Un attaccante che utilizza una vulnerabilità dovuta a misconfiguration (come utilizzare gli account di default o gestire file non protetti) potrà avere accesso non autorizzato al sistema. In genere viene sfruttato utilizzando input non validati, form tampering, scorretta gestione degli errori e delle eccezioni o misure di sicurezza insufficiente a livello di trasporto.
XSS – Cross-Site Scripting
L’attacco XSS sfrutta le vulnerabilità di pagine dimatiche, esso permette all’attaccante di iniettare codice all’interno delle pagine web e farlo eseguire/visualizzare ad altri utenti.
Insecure Deserialization
La Data Serialization/Deserialization è un processo che permette la linearizzazione di oggetti di dati in modo da poterli trasportare verso altri sistemi o altre reti, l’attaccante inietta codice malevolo e lo inoltra alla vittima.
Utilizzo di componenti con vulnerabilità note
Le componenti esterne, come librerie e framework, che vengono spesso utilizzate nelle webapp che vengono eseguite con determinati privilegi, una falla in un qualsiasi componente esterno può compromettere l’intera applicazione e avere un impatto molto serio. Un attaccante riesce ad identificare i componenti e le dipendenze deboli tramite scanning o analisi manuale.
Logging e monitoraggio insufficiente
Questo scenario si verifica quando l’applicazione non effettua un logging completo ed esaustivo o i sistemi di detection non rilevano nessuna attività malevola (o la ignorano completamente).
CSRF – Cross-Site Request Forgery
Un attacco CSRF sfrutta le vulnerabilità di una pagina web e permette all’attaccante di forzare il browser di un utente ad inviare richieste malevole. La vittima ha una sessione attiva con un sito web fidato e contemporaneamente visita un sito web fraudolento che inietta una richiesta HTTP verso il sito fidato, compromettendone l’integrità.
Metodologia di Web Application Hacking
Footprinting dell’infrastruttura Web
Il footprinting è il primo step per l’hacking di webapp e consiste nell’identificazione di applicazioni vulnerabili e nella selezione delle vittime.
SERVER DISCOVERY: Catalogazione di informazioni sulla location dei server e sul loro stato. Informazioni su indirizzi IP, nomi DNS e port scanning permettono di svolgere la fase di service discovery in maniera più agile.
SERVICE DISCOVERY: Analizzare il target per identificare le porte in utilizzo. Alcuni tool per effettuare questo tipo di analisi: nmap, netscan tools pro, sandcat.
SERVER IDENTIFICATION: Analizzare l’header delle risposte del server per identificare modello e versione del software web server, in sostanza si tratta di banner grabbing.
HIDDEN CONTENT DISCOVERY: Scoprire contenuti e funzionalità nascoste che non sono raggiungibili direttamente, in modo da poterle sfruttare. (Web dir brute forcing, web spidering)
Detection di WAF e Proxy
PROXY: Permette di scoprire se il target sta redirezionando le richieste attraverso un proxy server, in genere questi server aggiungono alcuni campi nell’header di risposta. È possibile utilizzare il metodo TRACE (HTTP 1.1) per idetificare dei cambiamenti.
WAF: Verificare se la web application in analisi è protetta da un WAF (Web Application Firewall) tramite i cookie nelle risposte (spesso i WAF aggiungono cookie propri alla richiesta di risposta). Utilizzare wafw00f per scoprire che tipologia di WAF è presente.
12: SQL Injection
La SQL Injection è una tecnica usata per sfruttare le vulnerabilità in input non sanitizzati per passare comandi SQL attraverso un’applicazione web per l’esecuzione da un database backend. Un attaccante può ottenere un accesso non autorizzato o recuperare informazioni.
SQL Injection Methodology
Estrarre Informazioni tramite Messaggi d’Errore
I messaggi d’errore sono essenziali per estrarre informazioni dai database: sistema operativo in uso, tipologia di database.
In base al tipo di errore trovato è possibile variare le tecniche d’attacco.
Un attaccante può manipolare i parametri GET e POST delle richieste per generare errori.
SQL Injection Black Box PenTesting
- Inviare apici singoli/doppi come input per verificare se lo stesso viene sanitizzato o meno
- Utilizzare la parentesi quadra di chiusura “]” per verificare se l’input fa parte di una variabile SQL non sanitizzata
- Inviare lunghe stringhe di dati spazzatura per trovare eventuali superamenti del buffer
Error Based SQL Injection
- Errori di sintassi nel convertire il valore di nVARCHAR db_name in una colonna di tipo int
- Quando si utilizza SQL dinamico all’interno di una stored procedure, l’applicazione dovrebbe sanitizzare in maniera corretta gli input dell’utente per eliminare il rischio di code injection, altrimenti si rischia di far eseguire codice SQL malevolo all’interno della stored procedure
Bypass Website Logins con SQL Injection
È possibile effettuare la UNION dei risultati con una password conosciuta e il suo hash MD5, la web application verificherà la password inserita e l’hash MD5 fornito e non quello presente nel database.
Alcuni esempi di SQL Injection:
admin' --
admin' #
admin'/*
' OR 1=1--
Interagire con il Sistema Operativo
Ci sono due modalità per poter interagire direttamente con il Sistema Operativo: leggere/scrivere file di sistema dal disco o eseguire direttamente i comandi tramite una shell remota.
NULL UNION ALL SELECT LOAD_FILE('/etc/passwd')/*
Se il comando viene eseguito mostrerà il file passwd.
Network Reconnaissance con SQL Injection
- È possibile eseguire i comandi di seguito utilizzando XP_CMDSHELL: ipconfig /all, tracert MYIP, arp -a, netstat -ano
- Recuperare informazioni sull’indirizzo IP attraverso reverse lookup
Trovare e Bypassare un pannello Admin di un sito web
Gli attaccanti possono provare a trovare il pannello admin di un sito web utilizzando semplici Google Dork e bypassare l’autenticazione utilizzando un attacco SQL Injection