Civilization V in Simplified Chinese

Hi All

I’ve been struggling lately in an attempt to get Civilization V working with simplified Chinese characters. As you probably know, Civilization V officially supports traditional Chinese characters, but simplified Chinese characters are not supported at all by firaxis.

The chinese people of course also want to play this game, and they have created a translation for it, but it is mostly inaccessible for people who don’t speak chinese.

After dealing with dodgy .exe files and all sorts of weird crap, I found an .exe which will actually install the translation pack here. You can skip all the sections which speak of a crack if you have a legitimate copy of the game. I’ve also made a mirror of the .exe I downloaded here.

Instructions are as follows:

  • Install Civilization V legitimately. Piracy is illegal and all pirates go to hell without exception.
  • Download and extract the zip file. Execute the .exe file within it (virustotal says it has no virus)
  • Locate your Config.ini file and replace the values at line 66 and 69 with zh_CN. An example location for the file could be D:\Programs\Steam\steamapps\common\Sid Meier’s Civilization V\Config.ini

Run civilization as normal. All text should now be in simplified chinese.

Thanks,
Pedro

Actualización de seguridad para Drupal.

Hola a todos,

Salió una nueva versión de Drupal, que contiene parches de seguridad. Resuelve problemas de XSS, inyección SQL y CSRF, pero nada super grave que yo pueda ver.

Mas detalles acá: https://www.drupal.org/SA-CORE-2015-003

Pronto voy a sacar una versión nueva de droopescan.

Un abrazo,
Pedro

Hackear paginas web II (Fingerprinting and Information gathering)

En el articulo anterior (como hackear paginas web, en serio) de esta serie, se vio lo básico de las vulnerabilidades web mas comunes, que si bien no son todas ni son muchas las que se cubrieron, y no están cubiertas a un nivel muy profundo, nos dan un overview básico de por que un sitio web puede ser comprometido y nos dan un par de enlaces interesantes para ampliar nuestros conocimientos.

Nota: Quiero agradecer a COSO por permitirme utilizar su servidor para hacer las pruebas. No autorizo que nadie mas lo haga, aunque tal vez me autorice a mi para investigar quien esta intentando hacer fingerprinting de su servidor en un futuro. (seria interesante para un capitulo 3)

Quiero aclarar que este articulo lo escribo para mi mismo con fines de aprender y comprender mas del tema, y tener una referencia mas clara para utilizar en algún momento en el qué me pueda ser útil. En mi opinión, el tener una habilidad no nos da el derecho ni la obligación de usarla como queramos, y es responsabilidad de cada una de las personas que lea este articulo el uso que haga de él.

El propósito de este articulo es descubrir con quien tratamos: El servidor al que estamos investigando, de ahora en mas nombrado como COSO, ¿Qué versión de apache corre? ¿Corre un CMS en nadakedecir.net? y si es asi, ¿Qué versión es?, y ¿Qué plugins tiene instalados? Otras preguntas interesantes son ¿Existe algún medio de contacto que podría usar para comunicarme con COSO? ¿Puedo llegar a encontrar un dump de la base de datos en su public_html? Procedemos a responderlas todas.

Nota: La intención de este articulo no es ilustrar como se instalan las herramientas, ni como se usan las herramientas, sino lo que se puede llegar a hacer con ellas.

Conociendo a COSO (¿Qué servidor usa COSO? ¿En que OS lo corre?)

Este es un post con muchas preguntas ya, y queremos empezar a querer tener alguna respuesta. El mundo del fingerprinting es muy gracioso, porque podemos interesarnos mucho en una computadora en la que no deberíamos interesarnos tanto. ¿Qué tanto nos podemos interesar? Veamos ahora…

Todo con mucho cuidado, porque COSO también se puede interesar mucho por sus clientes :). Ademas este tipo de herramientas dejan MUCHÍSIMAS evidencias en el servidor que estamos investigando.

Respecto a la pregunta, lo podemos saber usando nmap. Esto nos va a decir que puertos tiene abiertos:

root@droope-VirtualBox:~ nmap -sV -O -A -T4 nadakedecir.net
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.3c
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
[...snip...]
25/tcp open smtp qmail smtpd
[...snip...]
80/tcp open http Apache httpd
| robots.txt: has 2 disallowed entries
|_/wp-admin/ /wp-includes/
|_html-title: nadakedecir*
106/tcp open pop3pw poppassd
110/tcp open pop3 Courier pop3d
[...snip...]
143/tcp open imap Courier Imapd (released 2004)
[...snip...]
443/tcp open ssl/http Apache httpd
[...snip...]
465/tcp open ssl/smtp qmail smtpd
[...snip...]
587/tcp open smtp qmail smtpd
[...snip...]
993/tcp open ssl/imap Courier Imapd (released 2004)
[...snip...]
995/tcp open ssl/pop3 Courier pop3d
[...snip...]
3306/tcp open mysql MySQL 5.1.54
[...snip...]
8443/tcp open ssl/https-alt?

Y tambien nos va a decir que sistema operativo potencialmente esta corriendo:

Running (JUST GUESSING) : Linux 2.6.X|2.4.X (94%), Google embedded (90%), Cisco Linux 2.6.X (89%), Riverbed embedded (89%), Buffalo embedded (87%), D-Link embedded (86%), Linksys embedded (86%), HP embedded (86%)
Aggressive OS guesses: Linux 2.6.30 (94%), Linux 2.6.9 (91%), Google Mini search appliance (90%), Linux 2.6.18 (CentOS 5.1, x86) (90%), Linux 2.6.18 (90%), Linux 2.6.9 - 2.6.27 (90%), Linux 2.6.9 (CentOS 4.4) (89%), Linux 2.6.11 (89%), Riverbed Steelhead 200 proxy server (89%), Linux 2.6.28 (88%)
No exact OS matches for host (test conditions non-ideal).

Esto también nos dijo que CMS esta usando, pero para hacerme el misterioso no voy a decir por que. Si abandonáramos el tutorial exactamente en este momento, ya sabríamos que COSO esta corriendo un worpdress. De todas maneras lo vamos a determinar mas adelante.

¿Quién es COSO? y ¿Cómo me contacto con él?

Lo mas importante al encontrar una vulnerabilidad es encontrar la forma de contactarnos con el dueño del sitio web para que él pueda arreglarla antes de que alguien con malas intenciones la encuentre. En este tutorial no nos vamos a interesar en encontrar vulnerabilidades, pero quizás queramos contactarnos con el usuario por otros motivos.

Usando theHarvester vamos a obtener información sobre los humanos que trabajan con este dominio y otras cosas sobre el PC:

root@pc:~# python theHarvester.py -d nadakedecir.net -l 500 -b all
*************************************
*TheHarvester Ver. 2.1 (reborn)     *
*Coded by Christian Martorella      *
*Edge-Security Research             *
*cmartorella@edge-security.com      *
*************************************

Full harvest..
[-] Searching in Google..
	Searching 0 results...
	Searching 100 results...
	Searching 200 results...
	Searching 300 results...
	Searching 400 results...
	Searching 500 results...
[-] Searching in PGP Key server..
[-] Searching in Bing..
	Searching 100 results...
	Searching 200 results...
	Searching 300 results...
	Searching 400 results...
	Searching 500 results...
[-] Searching in Exalead..
	Searching 100 results...
	Searching 200 results...
	Searching 300 results...
	Searching 400 results...
	Searching 500 results...
	Searching 600 results...

[+] Emails found:
------------------
No emails found

[+] Hosts found in search engines:
------------------------------------
72.10.32.61:www.nadakedecir.net
72.10.32.61:mail.nadakedecir.net

[+] Proposed SET
---------------
[]
[+] Virtual hosts:
==================
72.10.32.61:www.twitter.korochi.com
72.10.32.61:notengoenie.com
72.10.32.61:naotenhocedilha.com
72.10.32.61:evapedroza.com
72.10.32.61:barquitosdepapel.com
72.10.32.61:www.eckell.com
72.10.32.61:www.avioncitosdepapel.com
72.10.32.61:juguetesdoblo.com
72.10.32.61:korochi.com
72.10.32.61:www.conaini.com.ar
72.10.32.61:www.quierohablarconelgerente.com
72.10.32.61:lucasworcel.com
72.10.32.61:nadakedecir.net
72.10.32.61:www.iguanaovera.com.ar
72.10.32.61:ipa.notengoenie.com
72.10.32.61:fabulosospremios.com.ar
72.10.32.61:korochi.net
72.10.32.61:ceciliasluga.com
72.10.32.61:coqueterias.net
72.10.32.61:www.ahhhproject.com.ar
72.10.32.61:www.worcel.com
72.10.32.61:twitter.korochi.com
72.10.32.61:iguanaovera.com.ar

Bueno! No nos vamos a poder comunicar con COSO. Ahi tenemos un par de otros hosts que se corren en la misma computadora, que tambien pueden ser puntos de entrada en este caso.

COSO, ¿Corre un CMS en nadakedecir.net?

Ahora vamos al jugo, investiguemos si COSO tiene un CMS instalado en su servidor. Para eso, vamos a hacer WAFP, o Web application finger printing. Es un nombre muy cheto, pero basicamente nos sirve para saber que es lo que e que tiene hostiao ai. Importante mencionar que deberian sin falta clickear ese link que les dejo ahi, porque probablemente sea un mucho mejor articulo que este.

La app que me afane de ese web para probar, es whatweb. A ver que hace:

root@pc:~# ./whatweb nadakedecir.net
http://nadakedecir.net [200] Apache, Country[UNITED STATES][US], Email[nadakedecirnet@gmail.com], HTTPServer[Apache], IP[72.10.32.61], MetaGenerator[WordPress 3.4.2], Plesk[Lin], Script[text/javascript], Title[ nadakedecir*], WordPress[3.4.2], X-Powered-By[PleskLin], x-pingback[http://nadakedecir.net/xmlrpc.php]

Bueno! Quien te dice! Encontro un mail, no me la esperaba: nadakedecirnet@gmail.com. Genial, considerando que esta en la primera página, debería haberlo encontrado el harvester. En definitiva yo ya sabía que esto era un wordpress, porque el escaneo del nmap me tiró un link al archivo robots.txt, que decía:

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/

Tambien sabía que era un 3.4 porque hay un archivo de README que los wodpress dejan muy amablemente. Recomiendo el lugar donde aprendí esto, FLU project, que tiene una guia para fingerprinting de wordpress.

Tambien vamos a hacer uso de su aplicacion que nos permite determinar los plugins que tiene instalados un wordpress. Necesitamos descargar Flunym0us y tambien una lista de los plugins mas usados de wordpress, por ejemplo esta.

Sin mas, la corremos (tarda un buen rato, tiene que hacer miles de peticiones al servidor. Recomiendo cancelarlo luego de un tiempo.)

root@pc:~# python flunym0us.py -wp http://nadakedecir.net wp-plugins.lst

 Flunym0us is a scanner that allows you retrieve a list of all installed plugins
 in WordPress and Moodle

 Plugins:

 wp-db-backup

Asi que ahi tenemos un plugin, que podria tener una vulnerabilidad conocida, aunque no creo que sea el caso. Tambien podemos sospechar que, si el servidor esta mal configurado, el WP_BACKUP_DIR podria ser publico, creo que no es el caso.

Vamos a investigar eso con dirb. Esta complicado, hay que compilarlo, pero eventualmente hay que compilar algo. Yo lo compile, viene con wordlists en la carpeta worlists del source. Hay una alternativa en java llamada dirbuster, pero yo la verdad no soy un gran fanatico de las interfaces graficas. Lo voy a correr con dos diccionarios.

root@ip-10-29-235-201:/home/ubuntu/dirb# dirb http://nadakedecir.net/ wordlists/big.txt,wordlists/vulns/apache.txt

-----------------
DIRB v2.03
By The Dark Raver
-----------------

START_TIME: Fri Sep 21 00:56:00 2012
URL_BASE: http://nadakedecir.net/
WORDLIST_FILES: wordlists/big.txt,wordlists/vulns/apache.txt

-----------------

GENERATED WORDS: 4234

---- Scanning URL: http://nadakedecir.net/ ----
+ http://nadakedecir.net//
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/0/
    ==> DIRECTORY
+ http://nadakedecir.net/1
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/2
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/20
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/3
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/30
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/A
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/D
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/E
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/G
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/J
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/L
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/M
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/S
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/V
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/a
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/admin
    (FOUND: 302 [Moved Temporarily] - Size: 0)
+ http://nadakedecir.net/ar
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/archivo
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/archivos
    (FOUND: 200 [Ok] - Size: 17792)
+ http://nadakedecir.net/atom
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/cgi-bin/
    (FOUND: 403 [Forbidden] - Size: 275)
+ http://nadakedecir.net/css/
    ==> DIRECTORY
+ http://nadakedecir.net/d
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/demo/
    ==> DIRECTORY
+ http://nadakedecir.net/do
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/e
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/en
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/feed
    (FOUND: 200 [Ok] - Size: 10973)
+ http://nadakedecir.net/g
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/gr
    (FOUND: 301 [Moved Permanently] - Size: 0)
+ http://nadakedecir.net/img/
    ==> DIRECTORY
+ http://nadakedecir.net/j
    (FOUND: 301 [Moved Permanently] - Size: 0)

Esta es una busqueda de fuerza bruta, y si bien puede aportar algunos resultados, la verdad es que no sirve mucho. Vamos a hacer que la busqueda sea un poco mas efectiva. El comando que vamos a usar es

dirb http://nadakedecir.net/ wordlists/common.txt,wordlists/vulns/apache.txt -x mutations_common.txt

que significa: usame los diccionarios common y vulnerabilidades y agregale las extensiones de respaldo mas comunes. Basicamente estoy buscando un archivo, por ejemplo index.php~ que seria un respaldo de index.php. Lo corri por bastante tiempo, pero la verdad es que todavia no encontro nada. Habria que tunear las wordlists para que tengan info mas relevante.

Asique eso seria todo, el resumen ejecutivo seria este:

  • ¿Qué versión de apache corre? Lo averiguo usando NMAP.
  • ¿Corre un CMS en nadakedecir.net? ¿Qué version es? ¿Qué plugins tiene instalados? Lo averiguo usando whatweb && flunym0us
  • ¿Existe algún medio de contacto que podría usar para comunicarme con COSO? Lo averiguo usando theHarvester
  • ¿Puedo llegar a encontrar un dump de la base de datos en su public_html? Lo averiguo usando dirb

Ahora la pregunta que se me ocurre es, ¿Qué otras cosas sería interesante averiguar?

¡Espero su input en los comentarios!

Un abrazo enorme,
Pedro

Configurar windows en redes linux (active directory)

Hola a todos!

Disclaimer: Esto tuv0 la intencion de hacer funcionar mi entorno linux en una red windows. No estan sencillo como parece y ni siquiera windows puede funcionar bien algunas veces. En lo personal, abandone este esfuerzo y setie el proxy aplicacion por aplicacion. Si alguien encuentra una solucion mas elegante y me contacta, se ganara el amor de mi vida.

Debo ser honesto, saqué esta guía de un sitio en ingles. Ademas le hago unas mejoras que simplifican mucho la vida. Deberian revisarse ese articulo, igual, porque tiene para configurar todas las cosas que sirven para una red Windows: el mail, el communicator. Yo voy a ir avanzando con esto y les voy a ir contando.

Primero debemos averiguar el kdc — el active directory server — que controla toda la bola. Desde su powershell de windows o el clasico cmd de una PC conectada a esta misma red, tipeen

PS C:\Users\PedroW> nslookup
Default Server:  dnzdc3.datacom.co.nz
Address:  172.30.0.99
>

Con esa informacion, podemos seguir paso a paso con la guia.

Ahora vuelvan a su amado linux. Corran este comando. Si somos root omitimos el sudo:

sudo apt-get install krb5-config krb5-user

Ahora nos va a pedir el “Default Kerberos version 5 realm”. No tengo la mas palida idea que es, pero creo que es un nombre que le vamos a poner al coso. Por lo pronto, en mi red datacom funciona.

Luego nos va a pedir “Kerberos server for your realm.”. Para satisfacer ese campo, usamos el contenido de lo que nos devolvio el nslookup, en mi caso dnzdc3.datacom.co.nz. Despues el otro campo nos va a pedir un administrative server. Como no tenemos ni idea que es eso, le ponemos dnzdc3.datacom.co.nz tambien.

Por lo pronto la instalacion va a terminar, y estariamos listos para conectarnos a la red. Si no llenamos los datos correctamente, podemos corregir nuestros errores editando el archivo /etc/krb5.conf

Luego, ejecutamos el comando

root@pc~:# kinit <usuario>

en mi caso, mi usuario en windows es DATACOM\PedroW. En el kinit, se espera exactamente ‘PedroW@DATACOM.CO.NZ’. Notesen las mayusculas y tambien notese que tuve que agregar el dominio completo y no solo DATACOM

Entonces, usando comillas simples, y respetando las mayusculas:

root@pc~:# kinit 'PedroW@DATACOM.CO.NZ'

Y listo, tenemos internet!

Hay tres errores que obtuve, y cada uno tiene su obscuro significado:

  • kinit: Client not found in Kerberos database while getting initial credentials – este significa que el usuario esta mal.
  • kinit: KDC reply did not match expectations while getting initial credentials – este significa que el usuario esta bien, y el dominio esta bien, pero el servidor esta respondiendo algo distinto a lo que el cliente espera y este esta fallando. Mi solucion fue hacer que el dominio sea DATACOM.CO.NZ en lugar de DATACOM. Las mayusulas son escenciales.
  • kinit: Preauthentication failed while getting initial credentials – la contrase;a esta mal

Les deseo suerte. Si quieren su communicator, su mail, y demas cosas funcionando en Windows, los remito a este articulo.

Un abrazo,
Pedro

VIM como ide de Python

¡Hola a todos!

Vim es un editor de texto que corre en BASH. GVim es su contraparte con interfaz gráfica. Últimamente me encontraba en la situación de querer programar en mi pentium 4, pero la mayoría de las IDEs son muy exigentes respecto al hardware. Quizás sea necesario, ya que las IDEs hacen muchas cosas interesantes, pero la verdad es que muy en el fondo todos sabemos que programar es cuestión de editar texto, y decirme que necesito mas de 1GB de RAM para editar texto… Además, no siempre va a tener uno la posibilidad de tener una PC así ( si está viajando o algo por el estilo. )

Ahora, no solo necesito editar texto. Necesito auto indentación, un fondo oscuro, y algo que me sirva para browsear los archivos. Así se ve mi Gvim:

Ese es un programa que estoy haciendo que obtiene información de la API de twitter en python para mi trabajo en brandigital :)

Si quieren descargarse el código para hacer que su vim se vea así, tienen que instalar moria y nerdtree. Mis archivos de configuración están en un repositorio público en bitbucket, solo tienen que ponerlos en su directorio home.

Un abrazo grande,
Pedro

Como usar south

¡Hola a todos!

Escribo este post para la empresa en la que ahora trabajo ( Brandigital ), como para documentar un poco el proceso que implica poner nuestra base de datos bajo control de versiones usando mercurial y #django-south. El proceso es relativamente sencillo. Este tutorial supone que tenemos una base de datos ya creada, y que ya leimos el manual de south respecto a la instalación, su uso y como convertir una aplicación ya creada a south.

Comprendiendo lo básico

South tiene 2 comandos que debemos saber: schemamigration y migrate. Sus usos mas comunes son los siguientes:

# identificar todos los cambios hechos en los modelos y escribirlos al disco duro.

root@alice# python manage.py schemamigration app_name --auto
 - Deleted field nombreTrue on web.CategoriaWidget
Created 0005_auto__del_field_categoriawidget_nombreTrue.py. You can now apply this migration with: ./manage.py migrate web

# aplicar los cambios

root@alice# python manage.py migrate app_name
Running migrations for web:
 - Migrating forwards to 0005_auto__del_field_categoriawidget_nombreTrue.
 > web:0005_auto__del_field_categoriawidget_nombreTrue
 - Loading initial data for web.

Aplicando cambios en los modelos en una versión y reflejándolos en el resto

Como primer paso tenemos que hacer un cambio en los modelos en este caso, quité un field llamado nombreTrue del modelo CategoriaWidget. Una vez hecho esto, debemos decirle a south que por favor nos reconozca los cambios

root@alice# python manage.py schemamigration web --auto
 - Deleted field nombreTrue on web.CategoriaWidget
Created 0005_auto__del_field_categoriawidget_nombreTrue.py. You can now apply this migration with: ./manage.py migrate web

Esto hace que los cambios se apliquen en el disco duro y sean vistos por nuestro sistema de control de versiones. Una vez hecho esto, tenemos que envíar nuestros cambios al repositorio. Nosotros usamos mercurial.

root@alice# hg add 
root@alice# hg commit -m 'testeando south'
root@alice# hg push

Una vez hecho esto, nos conectamos por ssh a la pc bob, y obtenemos la información desde el repositorio.

root@bob# hg pull 
root@bob# hg update 

Los cambios que tendrían que hacerse en la PC de Alice son los mismo que en la de bob, por lo que solo tenemos que aplicar los cambios que ha calculado el schemamigrate de Alice.

root@alice# python manage.py migrate web
Running migrations for web:
 - Migrating forwards to 0005_auto__del_field_categoriawidget_nombreTrue.
 > web:0005_auto__del_field_categoriawidget_nombreTrue
 - Loading initial data for web.

De esta misma manera podemos llevar los cambios a staging / producción.

¡Espero que les sirva! En realidad es bastante sencillo, y me parece que nos puede llegar a servir bastante.

Un abrazo,
Pedro

Vulnerabilidades masivas y persistentes

Hola a todos.

Este es un bloc de notas personal en el que voy a guardar vulnerabilidades que funcionan en cualquier instalación de determinado software y que debido a sus características es probable que perdure en el tiempo. Este post tiene finalidades educativas y esta destinado exclusivamente para mi. Usted no está autorizado a leerlo :) y mucho menos utilizarlo.

Voy a ir actualizando esta lista a medida que pase el tiempo. Si supiera de que se trata, hubiera incluido un link a esto.

Un abrazo,
Pedro