Blog de Javier Castañón – JavCastaPosts RSS Comments RSS


Nuevo Post: Slik SVN - Subversion para win Y Sqlite3 como alternativa a MySQL en instalación de UMO en Windows http://t.co/t0UtgQJM
@javcasta
Javier Castañón


Referencias:

Hay ciertas utilidades que no se pueden descargar sus scripts y/o paquetes directamente desde web.
Y hay que hacerlo vía un cliente de subversion.

El cliente svn es muy simple de instalar en linux.
Por ejemplo para Ubuntu, se instala con:

usuario@maquina$sudo apt-get install subversion
usuario@maquina$sudo apt-get install libapache2-svn

En la pagina http://subversion.apache.org/packages.html nos indican que para windows existen:

  • CollabNet (client only; supported and certified by CollabNet; requires registration)
  • SlikSVN (32- and 64-bit client MSI; maintained by Bert Huijben, SharpSvn project)
  • VisualSVN (client and server; supported and maintained by VisualSVN)
  • WANdisco (32- and 64-bit client and server; supported and certified by WANdisco)
  • Win32Svn (32-bit client, server and bindings, MSI and ZIPs; maintained by David Darj)

He elegido para probar Skil.


Se descarga y se instala como cualquier paquete msi de win.

Solo instalo el cliente svn (no el servidor)

Ahora instalo UMO via svn.
Y sigo (no al pie de la letra ya que es para un debian) la guía de:

http://www.securityartwork.es/2011/07/13/instalacion-de-umo-0-1b-beta-url-malware-owned/

Abro una shell e instalo umo vía svn:

svn checkout http://umo.googlecode.com/svn/ umo-read-only

Ahora, si lees el README de la carpeta C:\umo-read-only\trunk\safebrowsing

# In this directory safebrowsing python library
http://code.google.com/p/safebrowsing-python/
# Modificaciones sobre la versión
(
Cuando se importa la librería MySQLdb el script backend.py tiene un fallo y es que la D está en mayúsculas.
 Hay que dejarlo así:
línea 55: import MySQLDb
línea 63: kwargs['db'] = self.db_name
línea 73: self.connection = MySQLdb.connect(**kwargs)
Con esto ya funciona.
El parche se ha sugerido en el proyecto (issue 11)

Instalo safebrowsing-python-read-only vía svn

svn checkout http://safebrowsing-python.googlecode.com/svn/trunk/ safebrowsing-python-read-only

Y copio el contenido de la carpeta C:\safebrowsing-python-read-only\safebrowsing a C:\umo-read-only\trunk\safebrowsing

copy C:\safebrowsing-python-read-only\safebrowsing\*.* C:\umo-read-only\trunk\safebrowsing\

Y hago las correcciones en C:\umo-read-only\trunk\safebrowsing\backend.py (lineas 55,63,73), pero me da error, asi que pruebo con:

 http://code.google.com/p/safebrowsing-python/issues/attachmentText?id=11&aid=110000000&name=backend.py.patch&token=4ace29b27293ed1f22be86e1e156cea8

que proponen como solucion http://code.google.com/p/safebrowsing-python/issues/detail?id=11
Pero me sigue dando error … así que usaré Sqlite3 como bbdd :-)

Ahora si lees el contenido del README en C:\umo-read-only\trunk\xgoogle, ves que hay que instalar xgoogle

Descargo xgoogle.zip de http://www.catonmat.net/blog/python-library-for-google-search/
Y descomprimo el contenido de la carperta xgoogle en C:\umo-read-only\trunk\xgoogle

Obviamente UMO necesita de python (.py) por lo que debes de instalarlo ( http://www.python.org/getit/), si no lo tuvieses.

He usado la version 2.6.6 de python
Es conveniente que definas la variable de entorno %PATH% con el camino a python.

Por ejemplo vía consola:

set path=%path%;C:\Python26

Ahora instalo vía svn pybing (necesario para UMO)

Instalo pybing vía el cliente SlikSvn

svn checkout http://pybing.googlecode.com/svn/trunk/ pybing

Y copio la carpeta C:\pybing\pybing en C:\umo-read-only\trunk\

Obtengo una API de Bing en http://www.bing.com/developers/
Algo parecido a:

674B8C83AB48A2ABEB1553FE313AE1F211DAF559

(ojo, que no es una API Key de Bing real, solo indica como es)

Si no tenes instalado MySQL en win, puedes decsargar el instalador en http://dev.mysql.com/downloads/mirror.php?id=404238

Aunque ya he comentado que usaré Sqlite3 como motor de bbdd

Una vez instalado MySQL, creamos la base de datos safebrowsing y su esquema en MySQL

El script sql para crear el esquema de la bbdd safebrowsing:

#creamos la bbdd safebrowsing
CREATE DATABASE safebrowsing;
#usamos la bbdd safebrowsing
use safebrowsing;
#creamos tablas y esquema - http://code.google.com/p/safebrowsing-python/wiki/SQLSchema
CREATE TABLE black_version(
        version_number varchar(20) not null primary key
);

CREATE TABLE malware_version(
        version_number varchar(20) not null primary key
);

CREATE TABLE url_hashes_table(
	badware_type varchar(1) not null,
	url_hash varchar(32) not null
);

CREATE INDEX url_hash_index on url_hashes_table (url_hash);

#usuario
CREATE USER 'umosb'@'localhost' IDENTIFIED BY 'Contraseña'; 123456
#permisos
GRANT ALL PRIVILEGES ON safebrowsing.* TO 'umosb'@'localhost';
flush privileges;

Como el error con MySQL, no lo he podido subsanar, he decidido usar Sqlite3 como bbdd, por lo que convierto la bbdd de MySQL a Sqlite
Lo hago con el siguiente shell script MySQL2Sqlite3.sh ( vía http://forums.mysql.com/read.php?145,68269,92627 )

./mysqldump.exe -u umosb --password=contraseña --compact --compatible=ansi --default-character-set=binary safebrowsing
 | 
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' | 
 
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;
 print "begin;\n";print;print "commit;\n"' | 
 
perl -pe 
 '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' |
 ./sqlite3 safebrowsing.db
# debes descargar el ejecutable de la shell de sqlite3: sqlite3.exe

Que ejecuto bajo MobaXterm con el plugin de perl

Si no deseas convertir la bbdd de MySQL a Sqlite3 y quieres recrear la bbdd safebrowsing visualmente, altamente recomendable la utilidad free Sqlite Browser. Hay versión para win. Sqlite3 no se instala, tan solo se debe de tener un fichero .db con el formato de Sqlite3 y un programa cliente que soporte conexión a ese tipo de fichero

Ahora Obtenemos una API Key safebrowsing de Google en

http://code.google.com/intl/es-ES/apis/safebrowsing/key_signup.html

algo parecido a:

ABQIBBACqCVqfJGA2Vf-CA0wTSsBbhTLLj6Gdx00Kuh7jyEJnQ82anOMNg

Editamos C:\umo-read-only\trunk\safebrowsing\conf.py y parametrizamos

# Inspired from Django’s settings.py
DATABASE_ENGINE = ‘sqlite3′ # Possible values being ‘postgresql’, ‘mysql’, ‘sqlite3′ or ‘memcached’
DATABASE_NAME = ‘c:\camino-a-bbdd-sqlite3\safebrowsing.db’ # Or path to database file if using sqlite3.
DATABASE_USER = ‘umosb’ # Not used with sqlite3.
DATABASE_PASSWORD = ‘Contraseña’ # Not used with sqlite3.
DATABASE_HOST = ‘localhost’ # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ” # Set to empty string for default. Not used with sqlite3.
DATABASE_IN_MEMORY = True       # Copy url_hashes_table to in-memory SQLite DB for Lookups
API_KEY = ‘ABQIBBACqCVqfJGA2Vf-CA0wTSsBbhTLLj6Gdx00Kuh7jyEJnQ82anOMNg’ # API Key provided by Google.

editamos C:\umo-read-only\trunk\umoconfig.py y parametrizamos (bingkey)

skippages = 0
pages = 10
results = 100
googlesleep = 5
user_agent = ‘code.google.com/umo’
bingresults = 400
bingkey = ’674B8C83AB48A2ABEB1553FE313AE1F211DAF559′ #’API Key Bing’
depth = ’1′
malware = ‘umomalware.log’
safebrowsing = ‘True’
updatesafebrowsing = ‘False’
maxtries = 5

Ahora instalo la libreria para python httplib2 ( http://code.google.com/p/httplib2/downloads/detail?name=httplib2-0.7.2.zip&can=2&q= )
Descomprimo httplib2-0.7.2 de httplib2-0.7.2.zip  en c:\python266\lib\ e instalo:

c:\python266\lib\httplib2-0.7.2\python setup.py install

Ejecutando UMO:

* Actualizar la base de datos

C:\umo-read-only\trunk\python umo.py –update-safebrowsing

* Prueba de UMO con  Crawling:

python umo.py –safebrowsing -H -u ‘http://javcasta.com’ -d 1

* Prueba de UMO vía google:

python umo.py -g -q ‘src=http://www.lizamoon.com/ur.php’

Ya tenemos UMO obtenido vía svn y casi operativo en Windows 7.

Digo casi, ya que ejecutando UMO me ha salido, a veces, un error de “Invalid URL” en query_lookup.py

Pero bueno, esto era solo una prueba de la utilidad, este tipo de problemas se lo dejo a los avezados chicos del python scripting

Y voila :-)

Share
Clika en el altavoz para oir el postAltavoz


Leave a Reply

Los enlaces en los comentarios pueden encontrarse libres de nofollow.

?>