Ultima modifica da un moderatore:
Circa un anno fa, quando mi ero appena iscritto ad Inforge, uno dei primi thread che ho pubblicato riguardavano quest'argomento: in molti continuano a chiedersi, come diventare un hacker.
Se proprio volete saperlo, anche Maria Beatrice Alonzi si definisce un hacker, ma quando poi vai a vedere è tutt'altro che l'hacker che intendiamo noi. Questo termine è troppo generico, e io lo detesto. Nel corso della mia formazione autonoma, più ho studiato e più è aumentato il mio odio per questo termine.
In realtà molti quando dicono di voler diventare "hacker" si riferiscono volgarmente a operazioni di sicurezza offensiva, e non interessa altro. Partendo da quest'assunto, eccovi lo schema da seguire per condurre un'operazione di penetration testing:
A cosa vi servono tutte queste informazioni? Cosa volete fare?
Spesso, queste questioni sono portate sui forum da adolescenti che non sanno bene quello che fanno. Credono che compromettere gravemente un OS sia un gioco, quando non lo è assolutamente. Due mesi fa ho scoperto il controllore di una centrale elettrica vulnerabile a EternalBlue, questo è piuttosto grave. Lo sapete quello che poteva succedere in quella centrale, se io ero un pezzo di m***? Gli anni passano, ma questa vulnerabilità (su cui tutti urinano un po') continua a consentire ai malintenzionati di diffondersi come un tumore metastatico nelle infrastrutture informatiche. Avere un codice etico, e avere il coraggio di segnalare il rischio agli Amministratori, è ciò che rende diversa quest'attività da qualsiasi altra attività delinquenziale.
A differenza da quanto crediamo, anche avere un codice etico richiede skill. Dobbiamo infatti poter capire come bisogna muoversi nelle fasi di un attacco per non causare un crash di sistema, di un programma o altro, e quest'aspetto è molto importante. Il metodo migliore per evitare questi problemi è evitare di lanciare codice destinato a modificare il kernel di Windows, evitare di cercare i buffer overflow in applicazioni che consentono il corretto funzionamento di Windows, andando invece ad incentivare sempre metodi che sfruttano "ponti più sicuri". Ad esempio Eternalblue è un ponte di Genova, BlueKeep pure, SMBGhost non ne parliamo. SMBGhost è il ponticello con le assette di legno sospeso su una voragine di 700 metri. Se le vie più sicure non sono accessibili, consiglio di fermarsi a riflettere, perché non potrete sempre testare tutti i target che volete. Se il target non è vulnerabile, non dipende da voi, vuol dire che l'Amministratore è bravo e sa come mettere l'infrastruttura in sicurezza. Qualora non sia così bravo invece, credo sia piuttosto triste attaccarlo senza mutuo consenso per danneggiare la sua infrastruttura, molto triste. Nessuno vuole essere triste. Il metodo migliore per dimostrare agli Amministratori i reali rischi di un attacco informatico, è quello di sfruttare "malware headless", cioè delle utility che ricevono comandi da un attaccante, senza mai compiere operazioni automatiche/o compromettenti sul target. Uno di questi è Meterpreter, molto noto nella comunità di attaccanti etici: stabile, silenzioso e obbediente. Ma in realtà esistono molte altre alternative simili.
Se proprio volete saperlo, anche Maria Beatrice Alonzi si definisce un hacker, ma quando poi vai a vedere è tutt'altro che l'hacker che intendiamo noi. Questo termine è troppo generico, e io lo detesto. Nel corso della mia formazione autonoma, più ho studiato e più è aumentato il mio odio per questo termine.
In realtà molti quando dicono di voler diventare "hacker" si riferiscono volgarmente a operazioni di sicurezza offensiva, e non interessa altro. Partendo da quest'assunto, eccovi lo schema da seguire per condurre un'operazione di penetration testing:
- Stabilire un target da attaccare: questo target dev'essere un device di vostra proprietà, o comunque appartenente a qualcuno che vi ha garantito il consenso per attaccare;
- Recon (reconnaissance o information gathering): mappare le informazioni su questo target, una scansione preliminare può essere fatta con Nmap, un'utility che deve essere obbligatoriamente presente nell'arsenale, consente di reperire informazione critiche (tipo di OS e servizi in ascolto sulle porte disponibili ad esempio)
- Lateral movement: fase preliminare del post-exploitation, consiste nell'individuazione di una vulnerabilità che consente RCE (remote code execution). Questa fase può essere fatta attraverso delle assunzioni (ad esempio, se il nostro target è Windows 7 build 7601 x64 possiamo assumere che sia vulnerabile a BlueKeep se la porta 3389 è in ascolto). Un'altra vulnerabilità nota sono le credenziali d'accesso deboli: se la porta 445 (SMB) è in ascolto possiamo fare un bruteforce per ottenere username e password, con questi dati è possibile fare lateral movement con PSEXEC, facendo upload/exec di un payload in
C:/Windows/System32
. Quest'attacco ha un livello di severità gravissimo, perché gli impianti malware creati da PSEXEC hanno i privilegi dei servizi di sistema di Windows (NT/AUTHORITY), quindi è molto importante usare un username e una password forti per scongiurare la catastrofe. Non vi preoccupate perché nonostante ciò continuerete a trovare in eterno username Peter e password Griffin o 1234, perché le persone non riflettono e non imparano. Oggi va di moda non riflettere, anche con la laurea, ormai utile più per farsi i selfie con la corona d'alloro che per altro.
- Social engineering: quando non c'è una vulnerabilità nell'OS target, non è detto che sia invulnerabile anche chi ci sta dietro all'OS. Nelle operazioni di sicurezza offensiva legalmente autorizzate, si chiama il penetration testing a lanciare campagne di scam contro utenti veri e propri, ignari, che lavorano al computer. Questo viene fatto per verificare il loro grado d'accortezza rispetto a questa tecnica, che prevede l'uso della truffa per carpire dati sensibili (Kevin Mitnick, noto pentester, ci ha scritto un libro)
- Post-Exploitation: sei dentro. Tutte le fasi precedenti sono andate a buon fine. Cosa facciamo ora? Finalizziamo l'attacco. Cosa fa il payload che è in esecuzione nell'OS compromesso? E' un ransomware? Una backdoor? Un crypto-miner? Un OS-wiper? Un keylogger? O semplicemente uno stealer?
- Reverse engineering: in informatica questo termine sta ad indicare un processo di "ricostruzione" step-by-step delle operazioni effettuate dal malware. Non si tratta esattamente di esaminare il codice del malware, quanto piuttosto esaminare "come si è comportato" nell'attacco live. Esistono vari tool che permettono di monitorare in tempo reale le operazioni fatte da un app, come ad esempio Process Hacker, IDA, WinHex, API Monitor. Se il malware è una backdoor si può anche intuire dal fatto che spawna una nuova connessione ad indirizzo IP remoto insomma, le opzioni sono tante. Il reversing è un'operazione più utile ai difensori che agli attaccanti, ma la elenco lo stesso. Non serve attaccare se non sai anche come difendere.
A cosa vi servono tutte queste informazioni? Cosa volete fare?
Spesso, queste questioni sono portate sui forum da adolescenti che non sanno bene quello che fanno. Credono che compromettere gravemente un OS sia un gioco, quando non lo è assolutamente. Due mesi fa ho scoperto il controllore di una centrale elettrica vulnerabile a EternalBlue, questo è piuttosto grave. Lo sapete quello che poteva succedere in quella centrale, se io ero un pezzo di m***? Gli anni passano, ma questa vulnerabilità (su cui tutti urinano un po') continua a consentire ai malintenzionati di diffondersi come un tumore metastatico nelle infrastrutture informatiche. Avere un codice etico, e avere il coraggio di segnalare il rischio agli Amministratori, è ciò che rende diversa quest'attività da qualsiasi altra attività delinquenziale.
A differenza da quanto crediamo, anche avere un codice etico richiede skill. Dobbiamo infatti poter capire come bisogna muoversi nelle fasi di un attacco per non causare un crash di sistema, di un programma o altro, e quest'aspetto è molto importante. Il metodo migliore per evitare questi problemi è evitare di lanciare codice destinato a modificare il kernel di Windows, evitare di cercare i buffer overflow in applicazioni che consentono il corretto funzionamento di Windows, andando invece ad incentivare sempre metodi che sfruttano "ponti più sicuri". Ad esempio Eternalblue è un ponte di Genova, BlueKeep pure, SMBGhost non ne parliamo. SMBGhost è il ponticello con le assette di legno sospeso su una voragine di 700 metri. Se le vie più sicure non sono accessibili, consiglio di fermarsi a riflettere, perché non potrete sempre testare tutti i target che volete. Se il target non è vulnerabile, non dipende da voi, vuol dire che l'Amministratore è bravo e sa come mettere l'infrastruttura in sicurezza. Qualora non sia così bravo invece, credo sia piuttosto triste attaccarlo senza mutuo consenso per danneggiare la sua infrastruttura, molto triste. Nessuno vuole essere triste. Il metodo migliore per dimostrare agli Amministratori i reali rischi di un attacco informatico, è quello di sfruttare "malware headless", cioè delle utility che ricevono comandi da un attaccante, senza mai compiere operazioni automatiche/o compromettenti sul target. Uno di questi è Meterpreter, molto noto nella comunità di attaccanti etici: stabile, silenzioso e obbediente. Ma in realtà esistono molte altre alternative simili.