4: Enumeration
Panoramica
Nella fase di enumeration l’attaccante crea delle connessioni con il sistema per eseguire query e recuperare informazioni direttamente da esso.
Le informazioni estraibili sono: risorse di rete, share, routing table, impostazioni dei servizi, dettagli su FQDN e SNMP, hostname, utenti, gruppi, applicazioni e banner.
Tecniche di Enumeration
- Estrarre username tramite indirizzi email
- Estrarre informazioni tramite password di default
- Estrarre username tramite SNMP
- Brute force verso Active Directory
- Estrarre i gruppi di utenti da Windows
- Estrarre informazioni tramite DNS
Servizi e porte
- TCP/UDP 53: DNS Zone Transfer
- TCP/UDP 135: Microsoft RPC Endpoint Mapper
- UDP 137: NetBIOS Name Service (NBNS)
- TCP 139: NetBIOS Session Service (SMB over NetBIOS)
- TCP/UDP 445: SMB over TCP (Direct Host)
- UDP 161: Simple Network Management Protocol (SNMP)
- TCP/UDP 389: Lightweight Directory Access Protocol (LDAP)
- TCP/UDP 3268: Global Catalog Service
- TCP 25: Simple Mail Transfer Protocol (SMTP)
- TCP/UDP 162: SNMP Trap
NetBIOS Enumeration
I nomi NetBIOS sono stringhe di 16 caratteri ASCII usati per identificare i device, i primi 15 caratteri sono usati per il nome del device, il 16esimo è riservato per il servizio o la tipologia di name record. NBTSTAT è un programma Windows che mostra le statistiche NetBIOS, le name table (locali e remote) e la cache dei nomi NetBIOS. La risoluzione dei nomi NetBIOS non è supportata su IPv6.
Comandi nbtstat
- Eseguire
nbtstat.exe -c
per ottenere il contenuto della cache dei nomi NetBIOS, la name table e gli indirizzi IP risolti. - Eseguire
nbtstat.exe -a <IP host remoto>
per ottenere la name table NetBIOS di un host remoto.
Tool
- SuperScan
- Hyena
- Winfingerprint
- NetBIOS Enumerator
- Nsauditor Network Security Auditor
- enum4linux
SNMP Enumeration
Il protocollo SNMP (Simple Network Management Protocol) è molto utilizzato per il monitoraggio (network), con questo protocollo si possono collezionare un notevole numero di informazioni sul target come utenti, servizi in esecuzione, device connessi, configurazioni e in alcuni casi è anche possibile gestirli direttamente tramite SNMP.
Tool
- SNMPScanner
- OpUtils 5
- SNScan
- Engineer’s Toolset (solarwind)
LDAP Enumeration
Il protocollo LDAP (Lightweight Directory Access Protocol) è un protocollo per l’interrogazione e la modifica dei servizi di directory, come Active Directory (AD), o più in generale qualsiasi raggruppamento di informazioni che può essere espresso come record di dati e organizzato in modo gerarchico. LDAP opera sulla porta TCP/389, per effettuare enumeration serve un accesso al sistema da interrogare. È possibile estrarre username, informazioni di dominio, indirizzi e la struttura organizzativa.
Tool
- Softerra
- JXplorer
- LDAP Admin Tool
NTP Enumeration
NTP (Network Time Protocol) è il protocollo responsabile della sincronizzazione dell’orario dei sistemi, utilizza la porta 123 UDP. Un attaccante può effettuare query al server NTP per conoscere quali sono gli host connessi ad esso, gli indirizzi IP di una rete, gli hostname e i sistemi operativi.
Comandi per NTP Enumeration
- ntptrace
- ntpdc
- ntpq
5: System Hacking
Panoramica
HACKING STAGE:
- Gaining Access
- Escalating Privileges
- Executing Applications
- Hiding Files
- Covering Tracks
Vulnerability Assessment
È il processo di discovery delle vulnerabilità e delle falle di progettazione, le vulnerabilità sono classificate per gravità e possibilità di exploit. È l’analisi delle abilità di un sistema o applicazione di resistere ad un attacco: riconosce, classifica e misura le vulnerabilità in un sistema, rete o canale di comunicazione. Un VA viene spesso effettuato con tool automatici che producono un report, successivamente rivisto e approfondito dall’analista.
Tipologie di VA
- ACTIVE ASSESSMENT — Si utilizza un network scanner per trovare host, servizi e vulnerabilità.
- PASSIVE ASSESSMENT — Una tecnica che tramite lo sniffing di rete riesce a trovare sistemi, servizi di rete, applicazioni e vulnerabilità.
- EXTERNAL ASSESSMENT — L’assessment viene effettuato dal punto di vista dell’attaccante (esternamente) per verificare quali vulnerabilità è possibile sfruttare.
- INTERNAL ASSESSMENT — Uno scan all’interno dell’infrastruttura per trovare vulnerabilità da sfruttare.
- HOST-BASED ASSESSMENT — Determina le vulnerabilità di uno specifico sistema (server, workstation), implica assessment alle configurazioni di sistema.
- NETWORK ASSESSMENT — Verifica che tipo di attacchi network sono possibili alla rete in analisi.
- APPLICATION ASSESSMENT — Testa l’infrastruttura web del target alla ricerca di misconfiguration o vulnerabilità note.
- WIRELESS NETWORK ASSESSMENT — Viene effettuato sulla rete wireless del target alla ricerca di vulnerabilità da sfruttare.
Tecniche di Password Cracking
- DICTIONARY ATTACK — Un file dizionario viene usato dall’applicazione di cracking per accedere all’account target.
- BRUTE FORCE ATTACK — Il programma di password cracking prova tutte le combinazioni di caratteri finché non riesce a trovare quella giusta per accedere all’account.
- RULE BASE ATTACK — Questa tipologia di attacco viene privilegiata quando si ha a disposizione qualche informazione aggiuntiva sulla password da crackare.
Molto spesso nei dispositivi rimangono le password di default lasciate dai produttori (perché l’utente non sempre le cambia) e ciò permette di indovinare la password molto più semplicemente. È possibile rubare le password anche tramite trojan o spyware installati nei dispositivi della vittima.
Hash Injection Attack
Questo tipo di attacco permette ad un attaccante di iniettare l’hash compromesso in una sessione e sfruttarlo per accedere alle risorse di rete come se fosse il legittimo proprietario.
Tecniche di Privilege Escalation
Un attaccante in genere accede ad un sistema tramite un account non amministrativo e di conseguenza diventa necessario tentare di arrivare ad un account admin. Gli attacchi privilege escalation sfruttano errori nel design delle applicazioni, errori di programmazione, bug e misconfiguration.
Privilege Escalation tramite DLL hijacking
La maggior parte delle applicazioni Windows non utilizza un path assoluto quando deve caricare una DLL esterna, questo permette ad un attaccante di scambiare la DLL originale con una DLL infetta, rendendo l’applicazione vulnerabile e sfruttabile per ulteriori attacchi.
Privilege Escalation tramite vulnerabilità
Quando si fa exploiting di una vulnerabilità, i comandi vengono spesso eseguiti con privilegi più alti, permettendo ad un attaccante di accedere ad un account admin tramite essi.
Altre tecniche di Privilege Escalation
- ACCESS TOKEN MANIPULATION
- APPLICATION SHIMMING
- DEBOLEZZE NEI PERMESSI DEL FILE SYSTEM
- PATH INTERCEPTION
- SCHEDULED TASK
Contromisure
- Restringere i privilegi per login interactive
- Utilizzare la crittografia
- Eseguire le applicazioni con i permessi minimi necessari al suo funzionamento (least privilege)
- Ridurre il codice che viene eseguito in un contesto privilegiato
- Implementare il multifactor
- Debugging
- Eseguire i servizi con account non privilegiati
- Testare gli errori di applicazioni e S.O.
- Utilizzare la separazione dei privilegi (separation of duties)
- Patchare e aggiornare il S.O.
Creare e mantenere l’accesso
Eseguire applicazioni malevoli nei sistemi ha molti obiettivi tra i quali: accesso non autorizzato, cracking di password, screenshot delle schermate, installazione di backdoor.
Spyware
Gli spyware sono programmi stealth che registrano le attività di un utente senza che questo se ne accorga, le informazioni raccolte vengono inviate all’attaccante. Gli spyware nascondono i propri processi e file per non consentirne la rilevazione e la rimozione.
Tecniche di offuscamento di programmi malevoli
Rootkit
I rootkit sono programmi che nascondono la propria presenza e le attività malevole dell’attaccante, rimpiazzano alcune system call e/o strumenti con la propria versione modificata. La struttura di un rootkit comprende backdoor, programmi per attacchi DDoS, packet sniffer, programmi per la rimozione di log, bot IRC.
Tipologie di Rootkit
- HYPERVISOR LEVEL ROOTKIT
- HARDWARE/FIRMWARE ROOTKIT
- KERNEL LEVEL ROOTKIT
- BOOT LOADER LEVEL ROOTKIT
- APPLICATION ROOTKIT
- LIBRARY LEVEL ROOTKIT
Come difendersi dai Rootkit
Reinstallare il S.O. o le applicazioni da una sorgente certificata dopo aver effettuato il backup dei dati critici. Effettuare un dump della memoria kernel per determinare la presenza di rootkit. Rinforzare le workstation/server contro gli attacchi. Installare network firewall e host-based firewall. Verificare l’integrità dei file di sistema regolarmente, utilizzando tecnologie crittograficamente resistenti.
NTFS Data Stream
Il NTFS Alternate Data Stream (ADS) è uno stream Windows nascosto che contiene metadati come attributi, conteggio parole, nome autore e accesso, data di modifica. L’ADS permette ad un attaccante di iniettare codice malevolo nei file.
Steganografia
La steganografia è una tecnica di offuscamento, permette di nascondere messaggi all’interno di altri messaggi (all’apparenza normali) o a tipi di file diversi come video, audio e immagini. Permette di mantenere la confidenzialità del dato. L’utilizzo più comune è tramite immagini nelle quali viene iniettato il messaggio segreto.
Tecniche di offuscamento delle evidenze di compromissione
Una volta che un attaccante è riuscito ad ottenere un accesso amministrativo al sistema, esso cercherà di nascondere le proprie tracce per evitare di essere scoperto:
- Disabilitare l’auditing
- Ripulire i log
- Manipolare i log
Coprire le tracce BASH
Bash memorizza la cronologia dei comandi eseguiti in un file chiamato .bash_history, un attaccante può eliminare o ripulire questo file con il comando history -c
oppure history -w
, per effettuare un’eliminazione più profonda si può ricorrere al comando shred $HOME/.bash_history
.
6: Malware
Concetti e tecniche di propagazione Malware
Un malware è un software malevolo in grado di creare danni ad un sistema, disabilitare funzionalità e fornire il controllo remoto (limitato o completo) ai creatori stessi, spesso per frodi o furto di dati.
Tipologie di malware:
- Trojan horse
- Backdoor
- Rootkit
- Ransomware
- Adware
- Virus
- Worm
- Spyware
- Botnet
- Crypter
Tecniche di distribuzione dei Malware sul web
BLACKHAT SEO: Permette ai siti contenenti malware di essere tra i primi risultati di ricerca di un motore di ricerca.
SOCIAL ENGINEERED CLICK-JACKING: Invogliare l’utente a cliccare la pagina di un malware.
SPEARPHISHING SITES: Vengono create copie identiche di siti ufficiali per rubare informazioni (documenti, credenziali, carte di credito).
DRIVE-BY DOWNLOADS: Si sfruttano le vulnerabilità dei browser per installare malware nei sistemi.
Componenti di un Malware
- CRYPTER — Protegge il malware dalla reverse engineering.
- DOWNLOADER — Trojan che scarica altri malware dalla rete.
- DROPPER — Trojan che installa altri malware.
- EXPLOIT — Codice malevolo che sfrutta una vulnerabilità per entrare nel sistema.
- INJECTOR — Programma che inietta codice all’interno di processi vulnerabili.
- OBFUSCATOR — Programma che permette l’offuscamento del codice e degli intenti di un malware, così da rendere difficili la rilevazione e la rimozione.
- PACKER — Programma che permette di “pacchettizzare” tutti i file necessari ad un malware in un singolo eseguibile, permette di passare i controlli di sicurezza.
- PAYLOAD — Parte di software che permette di ottenere il controllo di un sistema (dopo l’exploit).
- MALICIOUS CODE — Comandi che definiscono le funzionalità del malware, come furto di credenziali, creazione backdoor o altre attività malevole.
Panoramica sui Trojan
Trojan
Sono molti gli scopi per i quali installare un trojan in un sistema: installare backdoor nei sistemi, disabilitare firewall e antivirus, utilizzare il sistema in una botnet, eliminare o sostituire file critici del S.O.
Wrapper
Un wrapper (involucro) nasconde l’eseguibile trojan all’interno di un eseguibile che sembra genuino. All’avvio del wrapper viene, come prima cosa, installato il trojan contenuto al suo interno.
Crypter
È un software utilizzato per nascondere virus, keylogger e altri strumenti per renderli difficilmente individuabili dagli antivirus.
Tecniche di evasione antivirus
- Un Trojan può essere suddiviso in pezzi successivamente compressi insieme.
- Scrivere il proprio trojan autonomamente.
- Cambiare il contenuto del trojan con un hex editor, così da cambiare il checksum, cifrare il file. Queste operazioni rompono la firma del file rendendo difficile la detection.
Panoramica su Virus e Worm
I virus sono spesso trasmessi tramite file scaricati, chiavette usb o dischi infetti e allegati via email.
Indicatori di infezione
- I processi richiedono più tempo e risorse
- Beep del computer senza nessun video
- I drive cambiano etichetta
- Il S.O. viene caricato con errori o non viene caricato affatto
- Avvisi costanti dall’antivirus
- Il computer si blocca di frequente o restituisce errori come BSOD
- Mancano file e cartelle
- L’attività dell’harddisk è sospetta
- La finestra del browser si blocca
- Mancanza di spazio su disco
- Popup di pubblicità inattesi
System Virus e File Virus
System/Boot Sector Virus: Questa tipologia di virus sposta l’MBR in un’altra posizione del disco e si auto-copia nella posizione originale dell’MBR. All’avvio del sistema viene eseguito il codice del virus e poi il controllo viene passato all’MBR originale.
Multipartite Virus: È un virus che infetta sia il boot sector che normali file eseguibili.
Cluster Virus e Stealth Virus
Cluster Virus: Modifica i puntamenti delle cartelle per indirizzare l’utente o il sistema verso il codice malevolo.
Stealth/Tunneling Virus: Questa tipologia di virus evade gli antivirus intercettando le chiamate al S.O.
Worm
Sono programmi malevoli che si replicano e si eseguono in maniera autonoma attraverso la rete.
Concetti di Malware Analysis
SHEEP DIP COMPUTER: Questo termine si riferisce all’analisi di file sospetti o messaggi alla ricerca di malware. È un ambiente strettamente controllato.
Introduzione alla Malware Analysis
È il processo di reverse engineering di un malware al fine di individuare l’origine, le funzionalità e il potenziale impatto sui sistemi.
STATIC ANALYSIS: È solo code analysis, senza esecuzione. Serve a capire il funzionamento del malware.
DYNAMIC ANALYSIS: Nota anche come behavior analysis, esegue il codice malevolo per capire come interagisce e che tipo di impatti potrebbe avere.
Ambiente di test per Malware
- Preparare un sistema (fisico)
- Installare una VM
- Isolare la VM dalla rete (NIC in host only)
- Simulare internet con tool appositi come iNetSim
- Disabilitare le cartelle condivise
- Installare gli strumenti necessari per la Malware Analysis
- Generare hash per ogni S.O. e tool per analizzare eventuali modifiche
- Copiare il malware nel S.O. guest.
Metodi di detection
- SCANNING — Calcolata la signature viene ricercata in un database, in caso di corrispondenza viene lanciato un alert.
- INTEGRITY CHECKING — Legge l’intero disco e “registra” l’integrità dei dati (come le signature).
- INTERCEPTION — Monitora le richieste al S.O.
- CODE EMULATION — L’antivirus esegue il codice malevolo in una VM (sandbox).
- HEURISTIC ANALYSIS — Controlla potenziali funzionalità malevole, attività sospette o system call.