Copy Link
Add to Bookmark
Report
SET 035 0x0A
-[ 0x0A ]--------------------------------------------------------------------
-[ John The Ripper "over MPI" ]----------------------------------------------
-[ by set-ezine ]----------------------------------------------------SET-35--
Hace apenas unos meses, en la revista @RROBA, hablamos de pasada sobre una
versión de"John The Ripper" distribuida bajo un "live CD" como tantas otras
versiones de linux. La característica de esta rama no oficial del famoso
cracker es su capacidad de utilizar la potencia total de una maquina multicore
o de poder distribuir de forma automática la tarea de crackear una hash por
fuerza bruta. Nos podríamos preguntar porque los creadores de JTR no han
soportado de forma activa esta rama de su criatura, razones puede que existan
muchas pero lo único cierto es que si queremos hacer algo especial tenemos que
andar sobre nuestras propias piernas. Hoy pretendemos contaros los problemas y
posibles soluciones cuando se pretenden hacer cosas distintas a lo que nos
tiene acostumbrada nuestra sociedad.
RESPUESTAS DE Solar Designer
En cualquier distribución de John The Ripper, existe en el directorio DOC un
archivo llamado FAQ, ahí el creador de JTR nos dice, aparentemente, con
claridad, porque no se soporta de forma activa una distribución de JTR hecha
para una maquina multiprocesor o para correr bajo un proceso distribuido. Según
sus propias palabras, simplemente no es necesario, ya que se puede fácilmente
planear la distribución de las tareas de forma manual. Una de las maneras es
lanzar john en diferentes sesiones atacando objetivos de longitud distinta.
Esto se puede hacer fácilmente con el modo "incremental" y jugando con la
configuración de los parámetros "MinLen" y "MaxLen". Aparentemente se pueden
lanzar varias sesiones de john y diferenciar el avance a través del parámetro
"--session"
No se a vosotros, pero a mi me ha dado dolor de cabeza solo imaginar la
complejidad de la operación. Mejor dicho, es fácilmente explotable, si lo
único que se desea es utilizar al máximo la potencia de una maquina multicore,
pero si lo que nos interesa es atacar una hash difícil, lanzar la tarea y
olvidarnos de la historia hasta que el objetivo haya sido alcanzado, no es
precisamente el consejo de Solar el que nos puede ayudar y estamos seguros que
nuestro amigo tiene la inteligencia suficiente para saberlo.
Es casi seguro que su problema reside en no verse involucrado en un ataque
masivo en donde se haya utilizado su criatura en forma distribuida, ya que este
tipo de cosas pueden acabar con una visita de la policía a tu casa, en el mejor
de los casos o al menos esta es nuestra opinión. Pero dado que no podemos
obtener respuestas fáciles y transparentes en ambientes públicos hay que
plantear las preguntas en otros entornos donde podamos obtener otras respuestas.
RESPUESTAS DE SET EZINE
Como no estamos dispuestos a confiar en la primera respuesta, ya que somos
escépticos profesionales, nos complace encontrar otras soluciones, lo que
ocurre es que se requiere algún incentivo para que decidamos movernos y
utilizar nuestras energías para conseguir un objetivo concreto, veamos como
empezó todo.
El caso es que en un anónimo despacho, dentro de un flamante edificio de vidrio
y cemento perteneciente a una de tantas corporaciones que velan por proveernos
de servicios o cosas, vitales o inútiles, sonó un teléfono con insistencia.
Nuestro viejo amigo Perico Viajero no tenia muchas prisas por responder, estaba
enfrascado en responder a un e-mail idiota sin que se notara demasiado su
opinión sobre el cretino que lo había escrito, cuando vió por el visor de donde
procedía la llamada y se decidió a contestar. "¿Si?", "Oye, tenemos tu nuevo
laptop", fue la rotunda respuesta. Era uno de los pocos dentro de la anónima
sociedad, que recibía, por motivos ignotos, un cierto trato personalizado del
departamento informático. "Vale, ya era hora. El que tengo empieza a tener
problemas de disco duro", contestó con soltura Viajero "Si no hicieras cosas
raras con tu maquina, estas serian mas longevas. En dos días lo tendrás listo".
La nueva maquina que recibió fue un "dual core" de esos de ultima generación.
Viajero se emocionó un poco al verlo, la posibilidad de utilizar la nueva
capacidad de calculo mientras haraganeaba en los vestíbulos de los aeropuertos
le despertó el apetito de volver a intentar nuevos ataques sobres hash que en
un pasado habían resistido a sus ataques. Lo primero que se le ocurrió fue
desenterrar una vieja hash de una maquina Win2000 que yacía en un despacho de
un país de habla germánica. La clave pertenecía a una clave LM, que como todo
el mundo debiera saber utiliza una clave de 14 byte, concatenada con ceros si
no tiene esta longitud, convierte en mayúsculas todas las letras alfabéticas y
dividida en dos mitades. Cada mitad es cifrada de forma separada mediante el
algoritmo DES sin aplicar ningún tipo de salto. Todo ello parece ser hecho para
facilitar la vida de los hackers mas tontos del mundo, pero los administradores,
menos inteligentes intentan complicarles la vida usando caracteres que no
existan en los teclados de tipo "QWERTY" de los mas normales o si simplemente
se tiene a disposición un teclado configurado para escribir en esa lengua, es
sumamente facil introducir un par de caracteres alemanes.
En el caso que nos ocupa la primera parte la clave indicaba que la password era
una derivación de la palabra "administrator", pero intercalando números y
caracteres especiales. Todo ello no es gran problema salvo si estos caracteres
especiales son un tanto raros, tal como lengua alemana u otra cosa mas exótica,
en este caso de poco sirven los múltiples diccionarios rainbow que existen en
la red, solo un ataque por fuerza bruta, pero aplicando algo de inteligencia
puede ser de alguna utilidad.
Viajero se planteó construir un ataque en base a "john" utilizando un modo
"external" especifico para atacar cinco o seis caracteres en forma bruta.
Calculaba que con los procesadores trabajando en paralelo podía atacar
fácilmente cinco caracteres y si la cosa se complicaba debería plantearse un
ataque conjunto con varias maquinas. Para ello pensó en utilizar la versión de
"john" adaptada para trabajar en redes neuronales tipo MPI.
Todo muy bonito pero, la versión de john en cuestión solo viene distribuida
bajo sus fuentes lo que significa que si se desea ejecutarlo hay que compilarlo
y enlazarlo. Si ademas deseamos hacerlo bajo Windows, todo hay que hacerlo bajo
este paraguas y tradicionalmente esto supone utilizar herramientas de pago. La
documentación disponible no era extraordinaria pero parecía claro que era
necesaria una versión de MPI instalada en la maquina donde se quería compilar.
Estudiando un poco mas la web http://bindshell.net/tools/johntheripper/ vio que
todas las pruebas habían sido hechas con la versión MPICH2-1.0.2 operando bajo
Linux o MacOSX. Como su intención era Windows el escenario era radicalmente
distinto, supuso que las cosas no iban a ser fáciles y el tiempo se encargó de
darle razón.
A veces es sumamente útil cuando se emprende algo que supones va a ser
complicado escribir sobre un papel cual es el objetivo. Después de reflexionar
un rato, Viajero anotó algo sobre un papel y después leyó complacido lo
siguiente. Compilar bajo cygwin "John The Ripper" versión MPI (MPICH2) para
poderlo ejecutarlo sobre Win2000 y WinXP.
INSTALACION DE MPICH2 BAJO CYGWIN
Lo primero que hizo fue bajarse de la web del departamento "Argonne National
Laboratory Group" de la Universidad de Chicago (www.mcs.anl.gov) el archivo
comprimido mpich2-1.0.6.tar.gz, lo descomprimió en un directorio temporal y
leyó en el README que le haría falta en un entorno linux, el compilador gcc,
gfortran o g77, el compilador g++, python 2.2 o superior y como opción el
compilador Fortran 90.
Después empezó con la laboriosa tarea de instalarse el cygwin con todos los
anteriores requisitos. No es difícil ya que basta con bajarse de www.cygwin.com
el ejecutable setup.exe, lo mejor es colocarlo en un directorio accesorio y
lanzarlo con una conexión a internet activa, ya que este pequeño programa lo
que hace es proponer una instalación standard y va buscando los paquetes que le
hemos indicado.
Es en la selección de los paquetes donde Viajero casi perdió la cabeza y los
nervios. La tarea de seleccionar uno a uno y comprobar las dependencias no es
de lo mas divertido del mundo, aunque cygwin presta una mano de forma activa.
También hay que saber que en caso de dificultad recalcitrante siempre puedes
elegir directamente los paquetes en www.cygwin.com/packages/
Una vez la primera parte de la tarea estaba terminada solo faltaba la segunda,
o sea instalarse MPICH2. Bastaba con seguir cautelosamente las instrucciones que
pudo leer en el archivo README que encontró al desempaquetar
mpich2-1.0.6.tar.gz. No fue difícil, tan solo laborioso. Desempaqueto sobre un
directorio de su elección "tar xfz mpich2.tar.gz" y se situó sobre el raíz "cd
mpich2-1.0.6". Creó un directorio donde situaría posteriormente el paquete
"mkdir /home/viajero/mpich2-install", después configuró el paquete
"./configure --prefix=/home/viajero/mpich2-install 2>&1 | tee c.txt"
La ultima parte de la instrucción es todo un detalle por parte de la
Universidad de Chicago, ya que, vaya todo bien o no, se crea un fichero "c.txt"
donde hay copia de la ejecución. En caso de problemas Viajero sabia que podía
enviarlo a "mpich2-maint@mcs.anl.gov" para ayudarle a desenredar la madeja.
Pero todo fue como una seda, lo cual es bastante raro, ya que como sabemos
Viajero se encontraba bajo un cygwin y no sobre una distribución real de linux.
Solo quedaba construir el paquete con "make |& tee m.txt" y tambien en este
caso se crea un fichero "m.txt" que se puede enviar a sus creadores en caso de
problemas. Finalmente se instalan los ejecutables y scripts en el directorio
bin "make install 2>&1 | tee mi.txt" y finalmente se actualiza el PATH para que
todos sepan donde están "PATH=/home/viajero/mpich2-install/bin:$PATH" , "export
PATH"
Viajero temía algún problema en el momento de comprobar la instalación, pero
tanto "which mpd" como "which mpiexec" dieron los resultados apetecidos. MPICH2
estaba funcionando correctamente bajo cygwin. Paso libre para compilar John The
Ripper, versión MPI.
Aunque ahora se encuentran en la versión
"http://bindshell.net/tools/johntheripper//john-1.7.2-bp17-mpi7.tar.gz" y fue
ésta la que utilizó Viajero para hacer sus pruebas. Descarga sobre un
directorio temporal dentro de cygwin y desempaquetado de forma standard da como
resultado tres directorios y un fichero README. Del README rápidamente se dio
cuenta que lo mejor era "pasar" de l. Se volvió hacia el directorio "src" e
intentó lo clásico con "John The Ripper", un simple
"make win32-cygwin-x86-sse2" debería rápidamente crear un ejecutable en el
directorio "run", sin embargo lo que cosechó fue un mensaje de error diciendo
que no se encontraba "mpicc", en concreto el mensaje era
"make[1]: mpicc: Command not found". "mpicc" es es solo una utilidad creada
especialmente para poder compilar en ambientes MPI. Una consulta rápida a la
mail list (john-mpi-subscribe@bindshell.net) recibió la sorprendente respuesta
de que lo mejor era que utilizara gcc en lugar de mpicc
Con un editor de lo mas normal, Viajero, substituyó en el fichero "Makefile"
todas las ocurrencias "mpicc" por "gcc" y las cosas marcharon un poco mejor,...
pero solo un poco. Ahora el mensaje fue
"bench.c:38:17: mpi.h: No such file or directory". El mensaje no podía ser mas
claro, "make" era incapaz de encontrar las librerías que pertenecen a la
distribución de MPI. Aparentemente el problema es fácil de resolver, basta con
añadir al PATH de cygwin la dirección donde se encuentran las fuentes que
deseamos utilizar. Viajero deseaba hacerlo de forma inteligente, o sea que no
tuviera que modificar PATH a cada arranque, y esto se consigue modificando el
fichero "cygwin.bat" que se encuentra en directorio raíz de cygwin. Con añadir
la linea "PATH=%PATH%:/dirección-deseada" al susodicho "bat" y a correr.
Digamos que correr no corrió mucho, ya que la siguiente compilación le dejo un
amargo sabor de boca con un esóterico mensaje sobre una linea de uno de los
includes. No era posible. Algo iba irremediablemente mal. Volvió a consultar la
lista de distribución de bindshell que le respondieron rápidamente. "Si quieres
compilar un programa basado en MPI bajo cygwin y que posteriormente corra bajo
Windows, tienes que borrar la instalación de MPICH2 bajo cygwin e instalar la
versión para Windows". Se dice mas pronto de lo que se hace y a Viajero le dio
dolor de cabeza nada mas pensar en lo que se le venia encima, pero nada se
termina si no se empieza, así que lo mejor en estos casos es dejarse de
lamentarse y ponerse manos a la obra.
INSTALACION DE MPICH2 BAJO WinXP
Viajero empezó por el principio, o sea buscar las herramientas adecuadas en
este caso el instalador. Está en
"http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads"
, elegir el fichero correcto, "mpich2-1.0.7-win32-ia32.msi" y en este caso
copiarlo en un sitio que después se debe recordar y lanzarlo con derechos de
administrador. El directorio por defecto donde se instala es
"C:\Program Files\MPICH2" y bajo l se encuentran "include", "lib", donde se
encuentran "headers" y librerias y tambien el directorio "bin" donde están los
ejecutables. Durante la instalación se le pidió una palabra de paso que en
teoría después se debe reutilizar sobre el resto de maquinas donde se quiera
monta el anillo de CPUs, pero de eso hablaremos mas tarde. Viajero se limitó a
crear un password que no tuviera nada que ver con l ni con sus andanzas mas
habituales y anotarla cuidadosamente.
Terminado esto, tuvo que desinstalar laboriosamente todo lo que se encontraba
bajo cygwin para evitar interferencias entre las dos instalaciones sin
olvidarse de todos los PATH habidos y por haber, que en esto, todo el entorno
de Windows es sumamente quisquilloso y tiene una memoria prodigiosa e
inoportuna que fastidia cuando menos te lo esperas. Finalmente todo quedó listo
para la siguiente etapa. La compilación.
LA COMPILACION
Contento como niño con zapatos nuevos, Viajero volvió a probar con
"make win32-cygwin-x86-sse2", con desesperación recibió de nuevo una catarata
de mensajes que se podían reducir a que seguían sin encontrarse las librerías.
Y sin embargo Viajero había modificado convenientemente el PATH de cygwin para
que buscara los programas en donde habían sido instalados automáticamente por
MPICH2 o sea en "C:/Program Files/MPICH2/include" ¿Que había podido fallar? Le
costó bastante darse cuenta que estaba cometiendo un error de principiante.
"make" no va a buscar las librerias y headers en función del contenido de las
variables de entorno, hay que indicarse lo de forma explicita en el propio
"Makefile". La razón no la conocía, pero bien pudiera ser que los programadores
de esta utilidad se quisieran asegurar que las cosas estaban donde el
programador desea y no donde le parece al Sistema Operativo el mejor sitio.
Esto los utilizadores de Windows puede que no lo entiendan, pero los de
Unix/Linux lo comprenden perfectamente.
Viajero modificó levemente el Makefile para que encontrara la joya de la corona.
En este caso ademas había que acordarse que se estaba compilando bajo cygwin y
por tanto las cosas están en sitios que aparentemente no son los mas evidentes.
En este caso tuvo que cambiar la linea
"CFLAGS = -c -Wall -O3 -fomit-frame-pointer" por
"CFLAGS = -c -Wall -O3 -fomit-frame-pointer
-I/cygdrive/c/Progra~1/MPICH2/include"
Véase con atención que los includes apuntan a
"/cygdrive/c/Progra~1/MPICH2/include" y no a
"Progra~1/MPICH2/include" ya que cygwin mapea todo lo que se encuentra bajo el
disco principal a un dispositivo virtual llamado "/cygwin/c/". Es una de las
características y gracias de este simulador. A Viajero le salieron algunas
canas hasta que no se dio cuenta de lo que pasaba.
Quien piense que hasta aquí llegaron las desventuras de Viajero, intuirá que
nada mas lejos de la realidad, aunque solo sea porque el articulo le falta un
buen trozo para terminar. El siguiente problema fue que "make" se lamentaba con
amargura que no encontraba algunos componentes de las librerías. Vuelta a
consultar a la lista de distribución para descubrir que las librerías no son
las mismas si se quiere compilar desde cygwin utilizando una distribución
MPICH2 instalada bajo cygwin que si esta instalada en Windows. Afortunadamente
fue rápida la solución ya que le informaron de exactamente cuales eran las
librerías a copiar en "/MPICH2/lib" y substituir la linea en Makefile que decía
"LDFLAGS = -s -lm" por otra donde ponía
"LDFLAGS = -s -lm -L/cygdrive/c/Progra~1/MPICH2/lib -lmpicxx -lfmpich2 -lmpi"
Aquí hay un pequeño detalle, mpicxx.h es un header y no una librería, pero el
caso es que las quejas sobre las librerías inexistentes desaparecieron, solo
para que aparecieran nuevos problemas.
El mensaje era siempre parecido
"john.o:john.c:(.text+0x33): undefined reference to `_MPI_Init'", o sea que
había un procedimiento, variable o parámetro que se no encontraba en ninguna
parte. Fueron duros días los que tuvo que sufrir Viajero, ya que _MP_Init esta
claramente definido en "mpi.h" y sin embargo parecía ser ignorada durante la
operación de enlazado. Fueron de nuevo los chicos que desarrollan MPICH2 que le
identificaron el problema y le indicaron la solución. Es algo no ciertamente
intuitivo y forma parte de la filosofía que siguen los enlazadores a la hora de
unir todas las piezas precompiladas. Hay que acordarse que en el momento de
enlazar, si el archivo "a.o" utiliza símbolos definidos en el archivo "b.o",
hay que especificar "a.o" antes que "b.o". Si, definitivamente no es intuitivo,
pero el caso es que cuando Viajero cambio la linea
"$(LD) $(JOHN_OBJS) -lkernel32 -o ../run/john.exe"
por la linea
"$(LD) $(JOHN_OBJS) -lkernel32 $(LDFLAGS) -o ../run/john.exe"
se acabaron sus problemas y encontró un magnifico fichero llamado john.exe bajo
el directorio "run". Ya tenia el ejecutable, ahora no había mas que utilizarlo.
MPICH2, JOHN, DUAL CORE.
La instalación de MPICH2 bajo Windows no solo crea una serie de librerías y
headers, también instala un servicio llamado "smpd" y un ejecutable llamado
"mpiexec.exe" que sirve para lanzar el programa "MPIzado". De todas formas
Viajero era la primera vez que utilizaba estos entornos y siempre los comienzos
son difíciles, así que hechó mano de un par de utilidades que vienen con la
distribución. "wmpiregister" sirve para configurar un anillo y como el primer
paso de Viajero era solo aprovechar los dos procesadores de un "DUAL CORE"
supuso que podía pasar de sus servicios. Después esta "wmpiregister" muy util
para registrar un nombre y su password en el registro de Windows. De utilidad
dudosa si eres el administrador de la maquina. El que tiene muchas mas
posibilidades es "wmpiexec". Es simplemente un "front end" que hecha una mano.
Viajero tuvo que especificar donde estaba el "john" que quería lanzar y las
diversas opciones. Lo mas importante era tener presente que solo deseaba lanzar
su programa en una sola maquina, para hacerlo tuvo que checkear "more options"
y en la opción "host" poner "localonly".
Al lanzar el "john" mediante "execute" aparentemente todo funcionó
correctamente, al comprobar mediante "Task Manager" la situacion de las dos
CPUs, comprobó que ambas estaban al 100%. Pensó que ya habia encontrado la
solución definitiva hasta que se le ocurrió parar el ataque, lo intentó, pero
no lo consiguió, un extraño bug en el programa se lo impedía. Tuvo que pararlo
con el "Task Manager" y rearrancarlo, después con la opción "shown" vio
exactamente cuales eran las opciones y comandos que utilizaba MPI, después
abrió una sesión "cmd" y desde allí recopió lo que había observado. Y desde
allí si que podia pararlo, el problema es que no podía utilizar prácticamente
la maquina ya que ésta consumía todos los recursos para "john-mpi". Viajero lo
que deseaba era que su maquina consumiera todos los tiempos muertos, no que lo
matara con esperas desesperantes para abrir una vulgar hoja "excel".
La solución se encontraba en una de las múltiples opciones que tiene "mpiexec"
y que consiste en fijar la prioridad de la sesión. Finalmente lanzo una sesión
con la instrucción
"mpiexec.exe -hosts 1 localonly 2 -localonly -priority 1
-noprompt john.exe -session=pims -e=prepend-pims hash-pims.txt",
ya que tenia una serie de hash interesantes en el fichero hash-pims.txt y había
creado un modo especial extendido con el nombre de "prepens-pims", para poder
recuperar la sesión la había denominado "pims".
El resultado fue bastante agradable, ambos procesadores marcaban al 100%, pero
cuando quería trabajar para su empresa, la carga se reducía automáticamente,
con el único peaje de una ligera espera cuando cambiaba de tareas. Todo parecía
funcionar correctamente y Viajero muy contento, interrumpió la sesión y
construyó un fichero "bat" que contenía la siguiente instrucción
"mpiexec.exe -hosts 1 localonly 2 -localonly -priority 1 -noprompt john.exe
-restore=pims"
y que copió en su directorio "...\Programs\Startup". Seguro de su éxito no hizo
mas pruebas.
A la mañana siguiente, cuando llego a su trabajo, después de hacer los falsos
saludos de todos los días, conectó y encendió su ordenador, que después de
hacer todas las comprobaciones y rutinas que Windows nos tiene acostumbrado,
lanzó su especialmente construido fichero "bat",.... que en unos segundos se
detuvo. Según el mensaje en pantalla no existían ni "john_rec.rec.0" ni tampoco
"john_rec.rec.1". Evidentemente hay un bug en el programa. John crea por
defecto un fichero "john.rec" donde se guardan los datos necesarios para
recuperar una sesión interrumpida. En caso de que se especifique una sesión con
un nombre en concreto, por ejemplo "pims", se crea un fichero llamado
"pims.rec". Como en este caso había que recuperar dos sesiones, una para cada
procesador, john había creado dos ficheros distintos denominados "pims.rec.o" y
"pims.rec.1", pero después hacia caso de la opción "restore=pims" y seguía
buscando sus amados "john.rec".
A Viajero le dolía la cabeza ya que mientras estaba buscando el problema una
amable secretaria de esas que parecen puestas en este mundo solo para ser lo
mas inoportunas e inútiles, le había estado dando la lata sobre un documento,
evidentemente anodino, que debía ser firmado con urgencia. Por tanto ni se le
ocurrió buscar el bug en los fuentes, simplemente cambio los nombres de los
ficheros para que john los encontrara, este los descubrió a la primera. El
contento y Viajero mas.
Solar Designer, al que hemos mencionada al principio del articulo podrá decir
lo que quiera, pero lo cierto que un john "MPIzado" de esta forma se comió un
par de hash en apenas dos días , cuando la experiencia de Viajero le decía que
le hubiera costado el doble con el método clásico y todo ello sin tener que
preocuparse ni de repartir tareas ni de hacer cálculos. Dos únicos
inconvenientes. Probablemente debido a otro bug en el programa no se puede ver
el avance del ataque y el otro es que la maquina funciona a plena potencia
desde el momento en que se enciende y esto, en opinión de Viajero, no puede ser
bueno par la salud del laptop ni para su longevidad. De todas formas la
password alemana que fue el motivo de toda esta carrera contra los elementos
cayó en cosa de una semana.
MPICH2, JOHN, EN RED
Perico Viajero tampoco deseaba freír la maquina que habían depositado a su
cuidado. Puede que a otros no les guste que la inversión de sus escuálidos
ahorros desaparezca en una nube de humo, poco virtual y bastante maloliente.
Viajero pensó que otra opción era organizar un anillo de maquinas. Según la
documentación de MPI esto es posible hacerlo si somos administradores del
DOMAIN de la red, pues es ella la encargada de permitir la entrada en cada una
de las maquinas que la componen, en la practica esto no es cierto, basta con
tener el mismo usuario registrado en las maquinas que deseamos utilizar para
que estas se pongan a trabajar obedientemente. Viajero hizo la prueba con éxito
con dos maquinas fijas, una con Windows 2000 y otra con WinXP. A continuación
añadió un viejo laptop que ni siquiera tenia SSE2. Como anécdota, esta vieja
reliquia se negaba a hacer su parte y Viajero tuvo que recompilar john con la
option "any" y esta vez el viejo laptop se agregó obedientemente al anillo
aportando su granito de potencia.
Por falta de espacio no podemos detallar los entresijos de la operación, que
tampoco es sencilla, pero si demuestra que es posible infectar varias maquinas
en una red y conseguir que se pongan a trabajar en tu honor para fines honestos
o deshonestos.
2008 SET, Saqueadores Ediciones Técnicas. Información libre para gente libre
www.set-ezine.org
web@set-ezine.org
*EOF*