Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

lunes, 16 de agosto de 2010

Galactic Inbox

Estamos en verano, época indolente donde las haya y los chicos de Google se proponen hacernos pasar un rato divertido además de descubrirnos algunas de las bondades del HTML 5, que cada día está adquiriendo mayor presencia en la web. Así, nos ofrecen el videojuego Galactic Inbox, en el que ocuparemos el lugar de una bandeja de entrada de Gmail dispuesta a liberar nuestros correos y batallar contra el spam.


No cabe duda de que se trata de una iniciativa divertida, muy al uso de Google que, al menos en Chrome no me ha funcionado todo lo rápido y fluida que habría sido de desear, pero que nos muestra cómo el nuevo estándar de la web ha llegado para quedarse.

martes, 29 de junio de 2010

Ave fénix a la fuerza

Cuando hace apenas un mes hablaba en el blog sobre los profundos cambios que pensaba imprimirle no pensaba que hoy estaría escribiendo sobre la plataforma de Blogger y que me las habría tenido que ver con la empresa de hosting que me daba servicio hasta la fecha. Un nuevo ataque hacker, incluso sobre una última versión de Wordpress y, como os decía antes, con varios plugins de seguridad y una adecuada (aunque a todas luces insuficiente) configuración de los .htaccess del servidor web provocó una nueva suspensión de la cuenta por parte de Igarcom. Después de semanas intentando obtener respuesta por su parte y opciones para solucionar el problema (ya que en ningún momento pude acceder a mi cuenta, ni recopilar información sobre el tipo de ataque sufrido, logs de acceso u otros datos que me permitieran evitar que volviese a ocurrir un hecho tan lamentable) he optado por hacerme cargo de la gestión de mi dominio y volcar el blog en Blogger (con Wordpress lo tenía más complicado ya que, además de acabar de renovar el dominio y el hosting tendría que volver a pagar ahora por la asignación del dominio a la cuenta de Wordpress correspondiente). Queda mucho trabajo por delante, como podréis ver si os dais una vuelta por el mismo: tengo que volver a subir las imágenes y actualizar las entradas. Teniendo en cuenta que son casi 400 las existentes, imaginad el esfuerzo que me queda por hacer para dejar el blog en un estado decente.

Si ya hace un mes mostraba mi cansancio por los problemas que estaba causándome el blog (mantengo otros tres y con ninguno he tenido tanto problema como con este), la dejadez de la empresa a la que acabo de pagar por sus servicios ha terminado por hastiarme. Me consta que se reservan el derecho de suspender una cuenta si desde ella se produce algún ataque, pero no me han facilitado de modo alguno el que no fuese atacado yo mismo. De hecho, he encontrado más páginas alojadas en sus servidores también con cuentas suspendidas, lo que me da que pensar acerca de la seguridad de las propias máquinas, más allá de las webs que alojan. En fin, este es otro tema aparte con el que tendré que lidiar.

Respecto al blog, qué deciros… Me apasiona y me encanta. Aprendo muchísimo con él y, sobre todo, con los lectores que aportan sus opiniones, sus conocimientos. Hablo de seguridad pero no soy un experto en la misma, de modo que lo hago desde la perspectiva de informático interesado en la misma. He aprendido mucho con algunos de vosotros que, es a todas luces evidente, sois unos verdaderos expertos. ¿Sobre programación? Ahí sí que me defiendo más (¡qué remedio! :D) y me encanta poder aportar algo a la comunidad. Aunque sea una pequeña píldora de conocimiento. Pero me cansa dedicar tiempo a la gestión del blog, máxime cuando escribo porque me gusta, lo hago por amor al arte, como suele decirse y, como os decía, mantengo otros blogs que me dan menos quebraderos de cabeza. Ya os comentaba a finales del año pasado que me embarcaba en otras aventuras: trabajo, una nueva carrera, los blogs… Para el próximo año es posible que incluso les sume la realización de un máster en comunicaciones y gestión de contenidos (si es así, ya iré contando alguna que otra experiencia en el blog)… Demasiadas cosas y apenas tiempo para perderlo en cosas que mermen la energía sin aportarme nada.

Siento la entrada, siento el pesimismo, pero resulta cansado ver cómo años de esfuerzo son atacados una y otra vez sin motivo aparente.

Lobosoft vuelve, esperemos que para quedarse. Un saludo y gracias a quienes, a pesar de todo, seguís ahí.

viernes, 28 de mayo de 2010

Cómo añadir nuestros ensamblados en el GAC a Visual Studio

Cuando desarrollamos una librería que deseamos que sea usada por muchas de nuestras aplicaciones o desplegamos una (o varias) que incluyen componentes, controles o funcionalidad disponible como, por ejemplo, la de una API, deseamos que esté disponible para nuestras aplicaciones. El GAC resulta, como bien sabéis, el lugar idóneo desde el que gestionar las distintas versiones de las DLLs de código administrado en nuestro sistema. Sin embargo, aunque registremos las DLLs en el mismo, estas no aparecen en el diálogo de Visual Studio para agregar una referencia a nuestro proyecto. Esto ocurre porque Visual Studio busca los ensamblados en rutas del tipo C:\Windows\Microsoft.NET\Framework\vx.y.z, pero aunque el CLR sea capaz de cargar ensamblados del GAC, este es independiente de nuestro IDE preferido.


Supongamos que ubicamos nuestras DLLs en la ruta C:\SomePath\LsAssemblies y las registramos en el GAC usando gacutil.exe. Cuando Visual Studio (en su versión x.y) busca los ensamblados al añadir una referencia lo hace a través de la clave de registro


HKLM\Software\VisualStudio\x.y\AssemblyFolders


Cada subclave representa una carpeta de ensamblados. Aunque el nombre no tiene la menor relevancia, el valor predeterminado debe contener la ruta completa a la carpeta que contendrá los nuestros. Por ejemplo:


HKLM\Software\Microsoft\VisualStudio\9.0\AssemblyFolders\LobosoftAssemblies \ (Default value): C:\SomePath\LsAssemblies


Como apunte final, cabría señalar que si en la ruta donde situamos las DLLs dejamos también los archivos para la depuración (PDB) y la documentación (XML), Visual Studio los usará cuando cargue la DLL para permitir la depuración en ese ensamblado y mostrar la documentación de Intellisense.


En la Visual Studio Gallery he encontrado también una extensión que nos ayuda a referencias DLLs del GAC. Su nombre es Muse.VSExtensions y permite mostrar un diálogo “Add GAC Reference” en nuestro Visual Studio 2010.

miércoles, 26 de mayo de 2010

Seguridad en WordPress


Tras el ataque sufrido en Lobosoft me he visto obligado a adelantar un poco la dedicación al blog (que tenía pensado incrementar, como ya dije, hacia mediados de junio), llevar a cabo una limpieza del mismo y actualizar, ya no la versión del mismo pero sí algunos plugins que podrían estar en el origen del ataque (fallo por mi parte al utilizar demasiados, aunque alguna de la funcionalidad extendidad del blog está basada, mucho me temo, en ellos).


El script que “me colaron” básicamente se encarga de permitir al atacante subir un archivo a la web con lo cual, dicho pronto y claro, la seguridad completa del sitio queda claramente comprometida. He estado buscando en Internet y parece que es un script genérico que ha sido instalado en numerosos servidores, sobre todo tipo de CMS y foros (y otras aplicaciones web), por lo que en sí no es más que una herramienta más que utilizar para atacar el sitio o usarlo como plataforma para fines oscuros y perversos. ;)


Uno de los blogs que he encontrado con el problema en cuestión es Brian's World, que muestra el código en cuestión. En mi caso no habían llegado ni tan siquiera a inyectarlo en uno de los archivos de Wordpress, sino que se encontraba replicado en varios archivos PHP con nombre similares (con un prefijo añadido) a los contenidos en un par de plugins y en el tema de Wordpress que da estilo al blog.
Dejo por aquí una extensa lista de referencias a la seguridad en Wordpress (algunas aplicables a otros CMS) que nunca está de más tener en cuenta. E incluso así, a pesar de lo que afirme nuestro amigo GigA, me temo que nada es demasiado seguro.


Feliz lectura.


Para saber más:


En castellano.




En inglés.

Más allá de WordPress.

La imagen que ilustra la entrada, que me ha encantado, es de Antivirus WordPress.

martes, 25 de mayo de 2010

Phoenicopterus

Hace apenas unos días comentaba en una entrada que me sentía con ganas y fuerzas de dar un empuje al blog. Tras un tiempo demasiado prolongado, durante el cual había permanecido inactivo por completo, con apenas alguna que otra entrada sin más contenido que vídeos o noticias que habían llamado mi atención, quería retomar un nivel de escritura aceptable, que tal vez no llegase al del verano de dos años atrás, pero sí que constituyese un estímulo para seguir adelante con el mismo. Sin embargo, es posible que en los últimos días, si habéis intentado al blog, lo hayáis encontrado deshabilitado, sin acceso o con un limitado, con problemas. El pasado sábado quise escribir una entrada en la que hablar, aunque fuese de forma somera, de la interesante charla que nos ofreció Bruno Capuano en Málaga mas no me fue posible. Tras un par de años de tranquilidad desde los últimos ataques al blog me encontré con que estaba siendo seriamente comprometido y usado como plataforma desde la que lanzar un ataque DoS contra otras máquinas. Mi gozo en un pozo, la cuenta desactivada hasta nueva orden y unos días en los que apenas podía permitirme el lujo de dedicarme a revisar el blog en los que este no ha estado disponible como habría sido de desear. Mis más sinceras disculpas a todos aquellos que pasaron por aquí buscando algo y tuvieron que irse como habían llegado.



La verdad es que el nuevo ataque me ha servido para reflexionar un poco en torno al blog, al sentido que tiene y al porqué de estas injerencias en su plácido transcurrir en la blogosfera. Por un lado, es cierto que hace un par de años sufrió un ataque en un periodo en el que no podía dedicar apenas tiempo al blog. Ahora ha ocurrido otro tanto, con la salvedad de que el blog llevaba ya mucho sin actividad y ha sido ahora, cuando intentaba retomarla, cuando ha ocurrido. Ya en las últimas semanas había notado ciertos repuntes bastante sospechosos en las visitas diarias al blog. El viernes, durante un descanso en el ecuador de la charla, le comentaba este hecho a un par de compañeros, así como mi suspicacia ante esta repentina afluencia a un blog apenas actualizado. La verdad es que no estaba equivocado.


¿Qué ha podido motivar el ataque? Bueno, no es necesario que exista una razón por la cual Lobosoft haya sido elegido, y ejercería de presuntuoso y “blogocéntrico” si afirmase que alguna oscura conspiración se ha centrado en este, mi blog, para derrocarlo. Sin embargo, me parece curioso que estando actualizado a la última versión estable de WordPress, con varios plugins de seguridad activados y sus ficheros de configuración de Apache medianamente bien estructurados haya sufrido un ataque de este tipo. A diario encuentro multitud de blogs WordPress (y otros CMS) sin actualizar, con la versión expuesta en el código HTML generado y que, pasando así el tiempo, no son atacados. Tal vez la temática del blog, que toca hasta cierto punto la seguridad informática, sea un aliciente para el hacker (más bien lammer, por los métodos usados) que haya accedido en una u otra ocasión. Ya os digo que no tiene que tratarse en sí mismo de un ataque centrado en el blog, pero si así fuese y el atacante estuviera leyendo estas líneas, me gustar decirle que, en primer lugar, no gano nada con el blog (es más, hasta la fecha me cuesta el dinero, aunque no me pesa: es una afición que me ofrece otros beneficios más allá de los pecuniarios) e intento ofrecer en él algunas píldoras de conocimiento que, espero, puedan ayudar a quienes lo necesiten. Y a mí mismo, por qué no decirlo, cuando esta memoria que tenemos nos falla en alguna ocasión y decimos: “oye, si yo escribí una vez algo de esto… voy a buscar en mi blog”, je, je, je. En segundo lugar, no soy un profesional de la seguridad informática. Informático, sí, y aficionado a la misma, intento que el blog sea un motor de aprendizaje y mejora de mis propios conocimientos. Por tanto, aunque haga mis pinitos en ella, con toda probabilidad muchos de los que leéis el blog superéis con creces mis propios conocimientos sobre el tema (me consta que algunos de quienes pasan o pasaron por aquí son grandes profesionales del campo de la seguridad, así que tomo sus visitas como un verdadero cumplido y como una invitación al reto de la autosuperación personal). Así las cosas, romper la seguridad del blog (basado en un CMS cuyo código está disponible libremente y con algunos plugins instalados que, me temo, han sido el origen de la actual invasión) supone un reto interesante pero prescindible. Si aun así, hipotético lector, te interesara atacarlo, me parecería un ejercicio interesante que cambiases la plantilla para poner un mensaje con lo membrillo que puedo llegar a ser y que yo intentase evitarlo, pero no que el sitio web sea usado para propagar pornografía, troyanos o para atacar a otros. Ahí la broma pasaría de castaño oscuro y la próxima vez puede que llegase a las autoridades. No por nada, sino porque creo que es de mal gusto y, además, compromete algo más allá del propio blog, que es mi propia credibilidad y mi responsabilidad civil con las leyes vigentes.


En resumen, después de la parrafada anterior: Lobosoft ha vuelto, esperemos que para quedarse. Aunque acciones como la descrita le quitan a uno un poco las ganas de seguir adelante como blogger (al menos de esta forma, con hosting propio), por otro lado inspiran las ganas de mejorar, de modo que la miraré desde esta perspectiva e intentaré que el blog vaya a mejor.


Si estáis leyendo esta entrada, habré sido capaz de restaurar el blog en la noche del martes (lo hago en tanto subo las imágenes y resto del material del blog) y dejarla programada. Mañana miércoles por la tarde espero poder publicar otra con el código del script que instalaron en el blog y un pequeño resumen sobre seguridad en WordPress.


Saludos.

jueves, 20 de mayo de 2010

Primeros pasos con Reflexil (2)

En la entrada anterior veíamos cómo era posible utilizar Reflexil como plugin de Reflector para modificar el valor de una variable, en concreto la que comprobaba nuestra aplicación de ejemplo para permitir el acceso del usuario a la misma. Hoy veremos cómo es posible incluir código propio en un ensamblado .NET para modificar el funcionamiento de la aplicación (inyección de código).

Deseamos que, cuando el usuario haya accedido al programa “crackeado” este realice una serie de acciones; en el ejemplo consistirá únicamente en mostrar un mensaje en pantalla pero podría tratarse de cualquier tipo de comportamiento inesperado. Para ello, creamos una DLL que contiene el siguiente código, la compilamos y la llevamos a la carpeta donde tenemos nuestra aplicación “ContaConta”.

[csharp]
namespace EjemploReflexil
{
public class Sorpresa
{
public static void Infectar()
{
MessageBox.Show("¡Pardillo!", "Sorpresa",
MessageBoxButtons.AbortRetryIgnore,
MessageBoxIcon.Exclamation);
}
}
}
[/csharp]

Partiremos del ejecutable que obtuvimos en la entrada anterior tras sustituir el valor de la contraseña por una cadena vacía (ContaConta.Patched.exe), incluyéndolo en Reflector. El usuario ahora espera utilizar el programa modificado para no tener que introducir contraseña alguna. Cuando el usuario introduce la palabra esperada (ninguna en este caso), la aplicación ejecuta un método que muestra un mensaje de bienvenida. Vamos a insertar una llamada a nuestro método Infectar() de la clase Sorpresa justo cuando esto ocurra.

Lo primero que debemos hacer es incluir una referencia a nuestro ensamblado (Sorpresa.dll).


Damos simplemente el nombre del ensamblado que, recordemos, se encuentra en la misma carpeta que nuestra aplicación:


Reflexil nos avisa de que los cambios que realizamos sobre el código no son visibles de inmediato en las ventanas de Reflector, así que debemos salvar los cambios y proceder a recargar la DLL. Podemos hacerlo desde el menú contextual o en las opciones que habrán aparecido en la zona de trabajo del plugin.


Tras recargar la DLL vemos que el ensamblado aparece ahora referenciado:



Abrimos el código del método Hola(System.String) para proceder a incluir en él la llamada a Sorpresa.Infectar(). Nos situamos sobre la primera instrucción y seleccionamos la opción de crear una nueva operación. Será una llamada (MSIL call) al método que deseamos, de modo que configuramos en el cuadro de diálogo el tipo de operación y de operando.


Seleccionamos, dentro del ensamblado Sorpresa, el método que deseamos llamar


y guardamos los cambios indicando que inserte la operación antes de la que teníamos seleccionada para que esta nueva sea la primera que se ejecute. Ahora guardamos los cambios y ejecutamos la aplicación con el nuevo parche.


Tras pulsar cualquier botón terminaría la ejecución del código inyectado, por lo que la aplicación prosigue con la del código preexistente:


En próximas entradas veremos cómo podemos reemplazar por completo el código fuente de una determinada clase del ensamblado directamente en C# o Visual Basic.NET mediante la opción “Replace all with code...