Simple Function Redirection (attraverso la IAT)

aprile 19, 2010 at 5:46 pm (reversing) (, , , )

Prima di tutto, questo articolo non conterrà informazioni tecniche, o meglio, non conterrà spiegazioni dettagliate, dato che è possibile leggere documenti già esistenti molto esplicativi sul PE (anzi, è necessario).

Strumenti Necessari:
- Ollydbg
- Un semplice eseguibile

L’eseguibile non fa altro che stampare una stringa, e richiamare attraverso system “pause”. Ovvero, il corpo del programma è un semplice:

printf("Oh, hi\n");
system("PAUSE");
return 0;

Apriamo dunque l’exe con ollydbg. Possiamo subito notare come all’ indirizzo 0x00401290 inizi il vero e proprio codice.
Mettiamo dunque un BreakPoint a questo indirizzo, e runniamo l’applicazione fino a lì (F9).  Steppiamo dunque fino a 0x004012C1, che corrisponde alla chiamata a printf.

Steppando con F7 (Step Into) possiamo verificare il funzionamento della IAT. Ciò che ci si presenta a noi è:
00401820 $- FF25 FC504000 JMP DS:[<&msvcrt.printf>] ; msvcrt.printf
Ovvero, salta all’indirizzo puntato da  &msvcrt.printf o più nello specifico (come si può vedere con olly nello specchietto in basso) l’indirizzo puntato da 004050FC. Ma non notate niente guardando questa porzione di codice?

Sono presenti tutti i “jump relativi” corrispondenti alle API. Sempre dallo specchietto in basso di olly si può notare come l’indirizzo puntato da 004050FC sia 77C1186A. Ma per sicurezza, con il Dumper andiamo all’address 004050FC:

Si possono notare due cose. Prima di tutto la presenza del Little Endian, e secondo, che subito dopo la fine del nostro address ne è presente un altro molto simile. Dunque questa, è la famigerata IAT.  O meglio, sono gli address del FirstThunk (che contiene gli address corretti per le funzioni importate).

A grandi linee funziona così: la prima call chiama _sempre_ una posizione di codice fissa, che salterà all’indirizzo puntato nella IAT. Il quale, viene caricato (nei PE semplici, non packati e non abusati) ad ogni esecuzione.

Se infatti pensassimo di dumpare il codice breakkato in questo momento, tramite un PE viewer come CFF Explorer noteremmo nell’ImportDirectory tutti gli address del FirstThunk di ogni funzione caricata da ogni dll fixati con i corrispondeti address.

Dunque, per testare il redirect di una funzione, possiamo usare system come cavia, rendendolo una chiamata a printf.

Tutto ciò che dobbiamo fare è: individuare qual’è l’address sulla IAT corrispondente a system, e sostituirci quello di printf (77C1186A).

Runniamo il programma, mettiamo un breakpoint su 004012D2(Servirà dopo)  e sta volta breakkiamo alla funzione successiva, all’address: 004012CD. Steppiamo dentro la call (F7). Come si può notare, siamo ad un jump pressochè identico a quello visto prima, anche se cambia l’indirizzo che si punta (00405104).

Dunque a questo indirizzo è presente l’address di system. Cambiamolo con quello delle printf attraverso il dumper, e runniamo fino al breakpoint con F9.

Come si può notare dalla console, è stata stampata la stringa “PAUSE” ch’era l’argomento passato a system.

Enjoy.

Permalink 4 commenti

La poesia di pIGpEN

novembre 2, 2009 at 12:10 am (ezine, Hacking, Linux, Programmazione) (, , , , )

BFi 4 – intro.
Questa intro e’ stata scritta in un momento di febbre (sto floodando un
fazzoletto di moccolo), saluto Jack-A-Roe e Deep Elem Blues che tengono il mio
cervello con una funzione listen(), seguita da un’accept e mi forkano il
processo.
Questo non vuol dire che aspetto un bambino, ok ….. continuiamo questo
surfing di stronzate nei mari moccolosi di un fottuto raffreddore
pre-novembrino dove il sempre caro Axel Roses ci insegna a crepare attraverso
la sua November Rain, e’ il mese dei morti e un dead che si rispetti non puo’
non scrivere stronzate.
Pensate ai vostri amici, ai vostri nemici, ai vostri cani morti in questa
fottuta battaglia combattuta contro il fottuto clock umano convenzionalmente
adottato per mettere una data di nascita e una di morte in un pezzo di
cemento.
Pensate a tutti quelli come voi (forse un po’ peggio (dico forse)) che sono
morti davanti ad un monitor con qualke frattale a causa di psilocibina
estratta dai funghi al fine di sfrattare qualke fottuto puffo.
Pensate a tutti i pacchetti morti nella rete a causa di un time to live
scaduto….
Pensate ad un ICMP_ECHO che non ha mai visto tornare un ICMP_ECHO_REPLY….
Pensate ad un superblocco fottuto.
Pensate ad una 3com che non ha mai funzionato, ad un router spento da qualke
cattivo bambino, ad un provider mai aperto perche’ fallito dall’inizio,
pensate ad un codice sorgente mai finito, oppure finito ma mai compilato….
Pensate ad un fusibile che scoppia,
pregate per un account morto,
per un hd con bad blocks,
pregate per tutti i Bill Gates che avete ucciso con XBill,
pregate per tutti i floppy che avete attaccato al vostro zaino costringendoli
a stare sotto la pioggia, il sole, al buio della notte e forse anche a essere
smerdati da qualke piccione.
Pensate a tutti i microprocessori fottuti a causa di qualke processo che
metteva a dura prova l’efficienza della vostra fottuta ventolina del cazzo
sporka di polvere e marmellata e dio solo sa cosa ankora.
Pensate poi a tutti quei giudici in tutto il mondo che hanno passato notti
insonni per essersi accorti di aver ghigliottinato un povero hacker e dato 10
anni di carcere ad un assassino.
Possa Dio Bit dare loro qualke fottuto cluster in questo Sistema.

Amen

Padre pIG

Domandina finale:
Perche’ la Scottex non cambia il suo nome in Microsoft? E’ un nome perfetto sia
perche’ permetterebbe al cliente di capire che la sua cartaigienica e’ la piu’
soffice e delicata, sia perche’ smerderebbe il nome di chi va smerdato.

Parola di pIG
Coro: Rendiamo Grazie a pIG …

pIGpEN


Per me continua ad essere stupenda. Senza contare, uno spezzone di un altro articolo (bfin98) , imho attualissimo tutt’ora:

[..]
La verita’ e’ che siamo saturi di codice… ogni azione comporta un linguaggio
per metterla in azione… non dovete pensare per forza al mondo dove tutti voi
sguazzate, no, non parlo dell’informatica… parlo in generale del mondo
dell’informazione… questo albero con rami ovunque… pensate al ramo
pubblicitario, a quello scolastico, a quello televisivo….
Siamo bombardati di codice e spesso i nostri compilatori interni non capiscono
piu’ un cazzo… e’ come se noi fossimo un grosso compilatore che deve
tradurre tantissimi linguaggi… uno diverso dall’altro…
Non si puo’ dire di no, perche’ siamo bombardati comunque: esci di casa, ti
trovi una pubblicita’ X con una ragazza di bella presenza seminuda e ti
chiedi: “Cazzo, figa quella tipa… ma che cazzo ci fa in una pubblicita’ di
yogurt?”. A questo punto entra in funzione il Compilatore dentro di voi..
es.:
(NB:CC non e’ il compilatore e’ IL Compilatore)
(Compilatore Celebrale)
*.c —> non sta per “c” sta per “cervello”
CC yogurt.c ragazza_figa.c -o msg_x_te_fottuto_cervello
..A questa istruzione, che potete fare a meno di lanciare (tanto sta nel cron
della vostra calotta cranica e non avete accesso root per modificare la
tabella).. beh riprendendo il discorso, a questa istruzione il cervello non sa
bene che cazzo fare… alcuni rispondono in questo modo:
-alloca un puntatore mentale al “file degli yogurt”
-per mezzo di questo puntatore ficcaci di mezzo la ragazza figa
-chiudi il “file”
A questo punto ragazzi siete fottuti… ogni volta che penserete allo yogurt vi
verra’ in mente quella ragazza biondona della pubblicita’ X.
Ma la cosa si fa ancora piu’ triste quando il compilatore celebrale svolge
l’operazione opposta:
-alloca un puntatore mentale al “file delle ragazze fighe”
/* il puntatore punta in questo modo a quelle ragazze che avete visto su
playboy (io non guardo certe cose per evitare l’append su questo file)
tutte queste si accomunano ad un’unica e amara realta’ -> non le porterete
mai in camera vostra */
-per mezzo di questo puntatore ficcaci di mezzo lo yogurt
-chiudi “il file”
Beh ragazzi a questo punto siete fottuti!
Es.: state facendo “ginnastica” (ah si’ si chiama cosi’ adesso) con la vostra
ragazza e mentre il vostro piggy si da’ un gran da fare….
“Cara non ci riesco! Mi e’ venuta una voglia di non so che cosa….”
NO!! NON SARA’ QUEL FOTTUTO FERRERO ROCHER (anche se la dama che vedete
nella pubblicita’ e’ vittima della stessa malattia).

AVRETE FAME DI QUEL FOTTUTO YOGURT!!!!!!!!!!!!!!!!!!!

Ok vi ho fatto ridere, ma pensateci bene, ci sono troppi virus culturali che
infettano la societa’, ognuno con un suo linguaggio e ognuno che agisce in un
suo modo…
I periodi di contaminazione… sono soprattutto le feste…. basta mettervi
un bambino malato in Tv, un babbonatale che gli dona un fottuto panettone….
e il vostro “Compilatore celebrale” potrebbe non saper bene come mandare
questo msg nella vostra mente.
E per concludere questo discorso vi lascio con una frase detta dal mio prof
di matematica del biennio (quando ancora andavo a scuola)…
(situazione: il vicepreside stava facendo un quick sort in un armadio alla
ricerca di una relazione..)
prof di mate: “Non guardare con i tuoi occhi, guarda con quelli della mente !”
Potrebbe essere un modo per bypassare il compilatore celebrale?
Lascio a voi l’hacking del vostro cervello, ma state attenti… qualke buffer
overflow potrebbe portarvi danni celebrali permanenti!
Sperimentate sempre prima qualche attacco remoto su gente la cui versione del
cervello si avvicini alla vostra (gia’ vi vedo schierati con il netgatto
celebrale ahahah :) e porca puttana fondate una buona volta una specie di
“Celebral Emergency Response Team” con ospedali di handiccapati aventi
puntatori celebrali a cazzo…..
Fatelo presto!!! Perche’ io la gente non la capisco piu’….
SiAmO TuTTi MaTTi! …PoRkA pUtTANa…
MSG PUBBLICITARIO: “Uccidi il virus culturale che ti assorbe di piu’!”
…E se io avessi voluto attraverso questa pubblicita’ mandarvi un virus
culturale? (Alta scuola di hacking sociale ;) Oh diobit che casino….
vado a dormire che e’ tardi …. bau bau

pIGpEN

Non penso ci sia altro da aggiungere.

Permalink 1 commento

‘Ranzulla ed ‘buntu!

settembre 3, 2009 at 12:07 am (Linux, OT) (, , , , )

http://aranzulla.tecnologia.virgilio.it/installare-ubuntu-su-windows-6613.html

LOL

LOL

http://web.archive.org/web/20060527145938/http://www.salvatore-aranzulla.com/?p=500

Permalink 4 commenti

Piccolo appunto: Warning di start_session()

luglio 4, 2009 at 8:06 am (opensource, Programmazione) (, , , )

Se dopo l’aggiornamento di php5, riportate
session_start() [function.session-start]: Cannot send session cache limiter – headers already sent

Nelle vostre pagine che utilizzano le sessioni, il warning è semplicemente dovuto al fatto, che start_session() non è nella prima riga del file.

Permalink Lascia un commento

BackTrack 4 pre-final

giugno 23, 2009 at 2:06 pm (Hacking, Linux, opensource) (, , , , , , , , )

Arrivo questa volta con qualche ritardo (4 giorni), e mi scuso di questo.
Dal 19, è infatti disponibile al download l’ultima versione di bt4, la pre-final.

Penso non abbia bisogno di descrizioni, in quanto la distro più conosciuta per quanto riguarda il pentesting.

Si può notare dalla dimensione dell’iso, l’accorgimento all’aver superato la dimensione del CD (di qualche mega), perciò sfruttata, aggiungendo tool fino ad un 1gb e mezzo circa.

Questa volta le cose sono state fatte proprio bene, è comparso infatti un pdf “guida/tutorial” riguardo a backtrack:

http://www.offensive-security.com/backtrack4-guide-tutorial.pdf

Download iso:

http://www.remote-exploit.org/cgi-bin/fileget?version=bt4-prefinal-iso

Nome: bt4-pre-final.iso
Grandezza: 1393631232
MD5: b0485da6194d75b30cda282ceb629654

Appena ne avrò il tempo, vedrò di testarla e darne la mia opnione.

Arrivo questa volta con qualche ritardo (4 giorni), e mi scuso di questo.
Dal 19, è infatti disponibile al download l’ultima versione di bt4, la pre-final.

Si può notare dalla dimensione dell’iso, l’accorgimento all’aver superato la dimensione del CD (di qualche mega), perciò sfruttata, aggiungendo tool fino ad un 1gb e mezzo circa.

Questa volta le cose sono state fatte proprio bene, è comparso infatti un pdf “guida/tutorial” riguardo a backtrack:

http://www.offensive-security.com/backtrack4-guide-tutorial.pdf

Download iso:

http://www.remote-exploit.org/cgi-bin/fileget?version=bt4-prefinal-iso

Nome: bt4-pre-final.iso
Grandezza: 1393631232
MD5: b0485da6194d75b30cda282ceb629654

Permalink 2 commenti

Linux 2.6.30

giugno 11, 2009 at 11:42 am (Linux, opensource) (, , )

Neanche a farlo per scherzo, in corrispondenza all’uscita di phrack, anche il kernel 2.6.30 è disponibile nella versione stabile. Andate, ed aggiornate. ve lo ordino.
Scherzi a parte, avere il kernel sempre aggiornato vi può essere utile per evitare qualche inconveniente.. ovvio che può avere i suoi lati negativi.

Permalink 1 commento

Phrack 66 Finalmente uscito!!

giugno 11, 2009 at 11:37 am (ezine, Hacking) (, , , )

Alcuni pensavano non sarebbe mai accaduto, ma eccolo, che quando meno lo si aspetta, fa il suo ingresso trionfale!

La lista degli articoli:

0×01 Introduction                                                                      TCLH
0×02 Phrack Prophile on The PaX Team                           TCLH
0×03 Phrack World News                                                         TCLH
0×04 Abusing the Objective C runtime                              Nemo
0×05 Backdooring Juniper Firewalls                                   Graeme
0×06 Exploiting DLmalloc double frees in 2009            Huku
0×07 Persistent BIOS infection                                              .aLS & Alfredo
0×08 Exploiting UMA : FreeBSD kernel heap exploits  Argp & Karl
0×09 Exploiting TCP Persist Timer Infiniteness               Ithilgore
0x0A Malloc Des-Maleficarum                                                Blackngel
0x0B A Real SMM Rootkit                                                          Core collapse
0x0C Alphanumeric RISC ARM Shellcode                          Y.Younan & P.Philippaerts
0x0D Power cell buffer overflow                                             BSDaemon
0x0E Binary Mangling with Radare                                        Pancake
0x0F Linux Kernel Heap Tempering Detection                 Larry H.
0×10 Developing MacOSX Rootkits                                        Wowie & Ghalen
0×11 How close are they of hacking your brain ?               Dahut

Che dire, andate e godetevelo! :-)

Permalink 3 commenti

addio, navynos

giugno 10, 2009 at 12:30 am (fluxbox, Gentoo, Hacking, Linux) (, , , , , )

Lentamente,  gli anni passano, e come tutte le cose, anche i progetti/le distro, col tempo muoiono. Un R.I.P speciale per ciò che mi portò a linux, ed in particolare Gentoo.

Ehsì, quella sconosciuta distro, dedita alla sicurezza informatica mi attirò. Al tempo, non lo nego, ero un esaltato “minchia oh linux è per hacker.”. Ma ciò mi portò ad avere un minimo di dimestichezza col terminale, e con i primi inconvenienti.

Ricordo ancora le ore passate a provare configurare grub, quando semplicemente non avevo editato fstab :_). A chiedermi, cos’era quello stupendo windowManager pieno di trasparenze (fluxbox).

Tralasciando il target del sitoweb ufficiale, avevo già notato come sul forum, a distanza da 2 anni dal mio download dell’iso, avessero defacciato tutto, da diversi mesi.
Ma come ultimo colpo nella schiena, ora il dominio è scaduto, e non penso verrà mai rinnovato.

Addio cara navynOs.

P.S.: Arco temporale:  Download iso:  2005/2006, accorto del deface del forum: 2008.

Permalink Lascia un commento

neercs: un alternativa a screen

giugno 9, 2009 at 4:51 pm (alternative, Ascii, How-To, Linux, opensource, TerminalDipendente) (, , , , )

Capita, nella vita di un uomo, di trovarsi davanti a scelte. Nessuno però penserebbe mai di avere alternative a screen.
Ed ecco invece, che arriva neercs, sviluppata dai simpatici(?) francesi della libcaca.
A parte gli scherzi,  essendo che non è ancora completamente stabile, ho dovuto chiedere assitenza per un bug tramite il loro chan ufficiale (#libcaca@irc.freenode.net), e dopo meno di un ora avevano già patchato.

Vediamo meglio questo progetto:

  • Grabbing a process that you forgot to start inside neercs
  • Great screensaver
  • Real time thumbnails of your shells
  • Special effects when closing a window
  • Various window layouts..

Forse l’unica realmente degna di nota è la prima, e cioè la possibilità di “grabbare” processi non inizializzati con neercs.

Per provarlo è sufficiente avere l’ultima versione di libcaca (0.99_beta16), e dare:

$ svn co svn://svn.zoy.org/caca/neercs/trunk neercs
$ cd neercs
$ ./bootstrap
$ ./configure
$ make

Non ancora stabile, ma sicuramente merita un occhiata.
Nello screenshot si può vedere una normale sessione aperta (a destra) ed il screensaver (in basso a sinistra). rigorosamente in ascii :’D.

Enjoy.

Permalink 4 commenti

dvtm: window manager da framebuffer

giugno 9, 2009 at 11:44 am (Linux, opensource, TerminalDipendente) (, , , , , )

Se mai diventere dei Terminal-Dipendenti, avrete certamente la necessità di un window manager sotto tty.
Ovviamente per “window” si intendono semplici terminali :-). cosa vi aspettavate?

Un progetto interessante che un amico mi linkò, fu dvtm. Uno screen lo si può notare nel articolo precedente.

Ovviamente utilizza le ncurses ;-).

Che aspettate? rendete la vostra macchina più uber prO possibile!

Enjoy.

Permalink 2 commenti

Next page »

Follow

Get every new post delivered to your Inbox.