Il reverse engineering premia

Tutti gli esperti di reverse engineering sono sfidati. Chiunque riuscirà a trovare il messaggio nascosto in un eseguibile vincerà un biglietto premio per T2’05, conferenza annuale di sicurezza e hacking che si terrà a Helsinki il 15 e 16 settembre 2005.


A lanciare il guanto di sfida agli aspiranti disassemblatori sono stati gli organizzatori della conferenza aiutati nella creazione dell’eseguibile da Gergo e Jarkko, componenti del viruslab di F-Secure.


Il regolamento e l’eseguibile da disassemblare chiamato challenge.exe sono disponibili all’indirizzo http://www.t2.fi/english/challenge-05.html.
Purtroppo il concorso è rivolto ai soli residenti in territorio finlandese ma nulla vieta a chiunque di cimentarsi nell’impresa.
Chi volesse avere un quadro riepilogativo dei principali disassembler freeware in circolazione potrà dare un’occhiata a Free Disassemblers, Hex Editors & Viewers.

Hackerare l’elezione del nuovo Papa

Bruce Schneier non ha bisogno di presentazioni.
Inventore dell’algoritmo di cifratura Blowfish, è uno dei massimi esperti di crittografia e sicurezza informatica.

Schneier ha una newsletter mensile molto apprezzata dai security manager di tutto il mondo: Crypto-Gam.
Nell’ ultimo numero pubblicato un titolo ha attirato la mia attenzione: Hacking the Papal Election (Hackerare l’elezione del Papa).
Schneier analizza il meccanismo che porta all’elezione di un nuovo Papa come si farebbe con una qualsiasi procedura, evidenziando punti deboli e e punti di forza.

Catturare file in streaming con UrlSnooper

Il segugio dei file audio e video trasmessi in streaming. Si potrebbe definire così UrlSnooper, utility freeware che si appoggia a WinpCap, libreria open source per la cattura dei pacchetti funzionante in ambiente Windows.

Per impedire lo scaricamento di filmati o musica trasmessa in streaming molti siti web mascherano la sorgente dei file audio e video trasmessi in streaming attraverso javascript o activex rendendo molto complessa la loro individuazione.
Con UrlSnooper invece si riesce in maniera completamente automatica (e veloce) a individuare la sorgente dello stream e utilizzando un download manager ad hoc la si può salvare in locale sul proprio hard disk.



Va detto infatti che molti file trasmessi in streaming utilizzano il formato Microsoft Media Server (o semplicemente mms), il protocollo proprietario della Microsoft per la trasmissione in streaming, e quindi sono difficilmente catturabili senza ricorrere a un buon download manager che “agganci” il file e lo scarichi.

Ci sono molti download manager che svolgono a dovere la funzione di cattura e scaricamento degli stream ma moltissimi sono prodotti a pagamento. Uno dei migliori shareware senza limitazioni di tempo è sicuramente NetTransport in grado di lavorare non solo con stream mms ma anche rtsp e naturalmente http mentre se si è alla ricerca di un software opensource che gesticsa il download di stream mms si potrà provare gmms. Un ottimo quadro riassuntivo dei download manager disponibili sul mercato è consultabile all’indirizzo: http://tinyurl.com/3bed7



La configurazione di UrlSnooper è semplice. Scaricato e decompresso il file .zip che contiene il programma basterà cliccare due volte su URLSnooper.exe per trovarsi difronte alla schermata principale. Basterà poi cliccare su Options, selezionare il browser utilizzato (se diverso da Internet Explorer che è predefinito) nella casella Non-default Browser, impostare il modello della propria scheda di rete nella casella Network Adapter e WinPcap come Sniffing Engine Driver. Impostata la propria configurazione potremo cliccare sulla scheda Search e sul bottone Sniff Network per avviare la ricerca di file in streaming all’interno delle pagine web visitate durante la nostra navigazione.


UrlSnooper

Lasco.A: intervista all’autore

MobileMonday ha pubblicato in lingua inglese una lunga intervista a Marcos Velasco, programmatore brasiliano di 32 anni autore del virus/worm Lasco.A, che si prennuncia come la vera bestia nera per i cellulari con sistema operativo Symbian.
Basato sui sorgenti di Cabir, Lasco.A è a sua volta un malicious code opensource in grado di coniugare le caratteristiche di un worm (si insinua in altri smartphone Symbian tramite bluetooth) a quelle di un virus (infetta i file di sistema con estensione .sis).


Marcos Velasco ha reso pubblico il codice sorgente del virus/worm per dimostrarne la sua paternità agli increduli ricercatori della Kasperky:
I wanted to demonstrate how the worm works. The reason I published the source code was that the anti-virus researchers at Kaspersky did not believe it was mine.”


Dura la risposta data da F-Secure attraverso il suo weblog alla notizia della pubblicazione del codice di Lasco.A:


Virus writing should be illegal. And it should be illegal globally. When it’s not, we get problems like this: Mr. Marcos Velasco from Brazil is completely openly writing viruses and making them available from his website to anyone, anywhere in the world. Apparently this is not illegal in Brazil. So any kid, any lunatic, any anarchist anywhere can download all his viruses complete with sourcecode and do whatever they want with them. And Mr. Velasco has no problem with this.

In fact, he has just given an interview about his activities to a Finnish magazine ITViikko. The interview has been published in English on mobilemonday.net.


Writing viruses is wrong. Distributing them is even worse. It should be illegal, too.



Al momento in cui scrivo, dal sito di Velasco è liberamente scaricabile sia il codice sorgente di Lasco.A (il cui vero nome secondo l’autore dovrebbe essere Virus.SymbOs.Velasco) scritto in C++ con Nokia SDK 1.2, sia un .exe funzionante in ambiente Windows che infetta i file .sis che si trovano nella stessa cartella.
L’eseguibile, con molta originalità, si chiama SISINFECT.EXE. Ovviamente mi sono guardato bene dall’eseguirlo…non si sa mai…

L’opensource e i virus

Il codice sorgente della prima versione di Cabir sembra stia circolando in queste ore su Internet, diffusa dalla famosa crew di virus writer 29A. A darne notizia è il weblog di F-secure sempre più una fonte affidabile in tema di sicurezza informatica.

Il modello opensource applicato ai programmi e ai sitemi operativi ha nella maggior parte dei casi dei vantaggi sia per i programmatori, sia per gli utenti. Per i programmatori è facile intervenire sul listato dei programmi e correggere dei difetti di programmazione o delle falle nella sicurezza dei software. Gl utenti traggono vantaggio dalla maggior sicurezza dei software e dalla tempestività con cui vengono realizzati dei miglioramenti. L’esempio più lampante di tutto questo discorso è il kernel Linux in unione con le utilità GNU.

Per i virus il discorso si complica. Un virus writer alle prime armi non avrebbe possibilità di progredire se non potesse accedere ai sorgenti dei virus realizzati dai VXcoder (si fanno chiamare così i programmatori di virus) più esperti. Ed è un fatto che per i virus di cui viene rilasciato il codice sorgente vengono create un numero di varianti molto superiori rispetto ai virus closed source.

Esistono crew di virus writer che mensilmente rilasciano webzine con tutorial dettagliati e pagine di listati (molto spesso in codice assembly) che permettono a “chiunque” di capire come un virus funziona e successivamente di modificarlo creando una propria variante.

Nel caso del rilascio dei sorgenti di un virus l’opensource può diventare un modello che può esporre a rischi come dimostra l’ultima conferenza AVAR (Association of anti Virus Asia Researchers) tenutasi a Tokyo. Ecco un breve resoconto del convegno Open Malicious Source tratto dal weblog di F-secure, una tra le sotware house invitate alla conferenza:

One interesting presentation compared the differences in amount of variants between closed-source viruses and open-source viruses – with dramatic results. When even the most rapid variants of the Bagle / Mydoom saga only produced a handful of new variants per month, some of the Randex / Gaobot / Sdbot families have produced over 600 variants in a single month. That’s two new variants per day, for every day of the month.

P2P in sole 9 righe di codice

Slashdot come al solito offre ottimi spunti. Un botta e risposta tra un professore di informatica di Princeton e un giovane programmatore Canadese ha prodotto il più piccolo programma di file sharing mai concepito: solo 9 righe di codice.

Inizialmente il professor Ed Felten di Princeton coadiuvato dallo studente J. Alex Halderman ha realizzato quello che sembrava essere la più piccola applicazione P2P al mondo. TinyP2P, questo il nome del programma, è racchiuso in sole 15 righe di codice in linguaggio Python. Lavora sul protocollo HTTP e sul protocollo XML-RPC e non consente l’utilizzo su network molto estesi.
Ecco il listato:

# tinyp2p.py 1.0 (documentation at http://freedom-to-tinker.com/tinyp2p.html)
import sys, os, SimpleXMLRPCServer, xmlrpclib, re, hmac # (C) 2004, E.W. Felten
ar,pw,res = (sys.argv,lambda u:hmac.new(sys.argv[1],u).hexdigest(),re.search)
pxy,xs = (xmlrpclib.ServerProxy,SimpleXMLRPCServer.SimpleXMLRPCServer)
def ls(p=""):return filter(lambda n:(p=="")or res(p,n),os.listdir(os.getcwd()))
if ar[2]!="client": # license: http://creativecommons.org/licenses/by-nc-sa/2.0
  myU,prs,srv = ("http://"+ar[3]+":"+ar[4], ar[5:],lambda x:x.serve_forever())
  def pr(x=[]): return ([(y in prs) or prs.append(y) for y in x] or 1) and prs
  def c(n): return ((lambda f: (f.read(), f.close()))(file(n)))[0]
  f=lambda p,n,a:(p==pw(myU))and(((n==0)and pr(a))or((n==1)and [ls(a)])or c(a))
  def aug(u): return ((u==myU) and pr()) or pr(pxy(u).f(pw(u),0,pr([myU])))
  pr() and [aug(s) for s in aug(pr()[0])]
  (lambda sv:sv.register_function(f,"f") or srv(sv))(xs((ar[3],int(ar[4]))))
for url in pxy(ar[3]).f(pw(ar[3]),0,[]):
  for fn in filter(lambda n:not n in ls(), (pxy(url).f(pw(url),1,ar[4]))[0]):
    (lambda fi:fi.write(pxy(url).f(pw(url),2,fn)) or fi.close())(file(fn,"wc"))



Per tutta risposta Matthew Skala, insoddisfatto del risultato di Felten, ha prodotto un programma di sole 9 righe di codice scritto nel linguaggio Perl. Si tratta di Molester, probabilmente il più piccolo programma di file sharing mai realizzato.
Ecco il listato:

$p=shift;$a=shift;i(shift);use Socket;socket S,PF_INET,SOCK_STREAM,6;
bind S,&a($a);listen S,5;$/=undef;while(@ARGV&&($_="$p $a f".shift)||
accept(C,S)&&($_=)&&close C){m!^(.*?) (.*?) ([e-i])([^/]*)/(.*)$!s&&
$1 eq$p&&&$3($2,$4,$5);}sub e{open F,'>',$_[1];print F $_[2];close F}
sub f{&s($_,@_)foreach keys %k}sub g{open(F,'<',$_[1])&&&s($_[0],$a,
"e$_[1]",);close F}sub h{&s($_[0],$_,'i')foreach keys %k}sub i{$k{
$_[0]}=1}sub a{$_[0]=~/^(.*):(\d+)$/&&$2>2e3&&sockaddr_in($2,inet_aton(
$1))}sub s{socket X,PF_INET,SOCK_STREAM,6;$w=shift;if(connect X,&a($w)
){print X "$p $_[0] $_[1]/$_[2]";close X}else{undef $k{$p}}}

Debugging del kernel Linux per individuare rootkit

Security Focus è una sorta di Bibbia per i maniaci della sicurezza. Ospita tra le altre cose anche l’importante mailing list BugTraq, che quotidianamente da spazio a discussioni aperte su vulnerabilità riscontrate in Windows e Linux.

Recentemente Mariusz Burdach, un redattore del sito, ha pubblicato un’interessante guida alla scoperta di possibili alterazioni in un kernel Linux dovute all’utilizzo di rootkit in grado di modificare le system calls invocate da programmi di uso comune

In Detecting Kernel-level Compromises With gdb Burdach utilizza nella sua esposizione un solo tool e cioè il debugger Gnu gdb, presente peraltro in tutte le distribuzioni Linux.

Di sicuro l’esposizione delle modalità di analisi attraverso il debugger non è facilmente comprensibile ma consiglio comunque a chi volesse approfondire l’argomento di dare un’occhiata all’articolo.
Per gli utenti Windows che volessero sperimentare l’utilizzo di un debugger funzionante in ambiente Win32 consiglio l’utilizzo di GoVest, programma analizzato tra gli altri anche da Sicurezza-Html.it nell’articolo Tecniche: Buffer Overflow realizzato da Roberto Dapino.




GoVest