Autor: Molder
Fecha:28 Feb 2010
MyMiniCity es un sistema que tiene como finalidad atraer visitas y vender publicidad. La estrategia usada dentro de
MyMiniCity es un pequeño juego donde los visitantes puede crear una ciudad virtual y los habitantes de esa serán generados por cada visita que consigan a esta.
Hace unos días un amigo del trabajo me preguntaba si era posible generar habitantes en su ciudad virtual de forma fraudulenta, esta fue la razón por la cual me puse a investiga el funcionamiento del sitio y así encontrar la respuesta a su pregunta. Pensaba dejar todo hasta ahí sin embargo al platicar con el mas tarde me menciono que existían muchas paginas tituladas hack
MyMiniCity donde ofrecían respuesta a su incógnita pero que sin embargo ninguna de las soluciones propuestas era funcional, así que por eso me decidí publicar esto XD.
A primera vista nos damos cuenta que una de sus validaciones es a travez de IP, una IP solo puede generar un habitante por día. Con esto se propone una lista de proxys para solucionar el problema.
Se creara un programa en perl que acceda al MyMiniCyti a través de diferentes proxys con el fin de automatizar las visitas.
La función encargada de hacer una conexiona vía proxy el la siguiente:
my $useragent = LWP::UserAgent->new();
$useragent->proxy(['http', 'ftp'],'http://PROXYAQUI:PUERTO/');
Como segundo paso procedemos a cachar los eventos generarlos al acceder a
MyMiniCity asi como sus cabeceras, para esto uso el pluginn tramper data de firefox.
Como podemos ver en la imagen hay algo extraño en el comportamiento del sitio, y esto es un llamado a si mismo con el fin de que la cabecera REFERER contenga algo parecido a MiCiudad.MiMiniCity.es, con esto sabemos que hace una validación sobre la cabecera REFERER.
Para poder evadir este filtro aremos Header Spoofing de la siguiente manera:
my $useragent = LWP::UserAgent->new();
$useragent->agent($ENV{HTTP_USER_AGENT});
$useragent->proxy(['http', 'ftp'],'http://PROXYAQUI:PUERTO/');
$useragent->no_proxy('localhost');
$useragent->timeout(10);
$req = GET 'miciudad.miminicity.es';
$req->header(Referer => "miciudad.miminicity.es");
my $respuesta = $useragent->request($req);
Con esto ahora solo basta pasarlo por la lista de proxys y empezar a procrear. Con esto doy por finalizado este articulos, salu2.
Código completo:
#!/usr/bin/perl
#Powered by Sombrero de paja Molder
#17 sep 2009
#Aztlan Hack I. S. T. http://aztlan-hack.org
#Molder Sombrero de paja
#28 de febrero de 2010
#email: ussiel@gamil.com
#msn: molder@mexican-mafia.org
use LWP::UserAgent;
use HTTP::Request;
use LWP::Simple;
use HTTP::Request::Common;
$host = "http://miciudad.myminicity.es/";
print "\n[+] Conectando con $host\n";
open(ARCHIVO,'proxy3.txt') || die("No existe el archivo proxy.txt\n");
while(<ARCHIVO>)
{
s /\n//g;
s /\r//g;
$proxy=$_;
print "a este proxy me voy a conectar $proxy\n";
my $useragent = LWP::UserAgent->new();
$useragent->agent($ENV{HTTP_USER_AGENT});
$useragent->proxy(['http', 'ftp'],'http://'.$proxy.'/');
$useragent->no_proxy('localhost');
$useragent->timeout(10);
$req = GET $host;
$req->header(Referer => $host);
my $respuesta = $useragent->request($req);
print $respuesta->status_line.", proxy: $proxy\n";
}
close(ARCHIVO);
print "[+] Fin del programa\n";