Alonso Eduardo Caballero Quezada / ReYDeS





	
				Juan The Ripper


                                                   ReYDeS


...............................................................................

  Antes  que  nada, deseo  expresar  mi  agradecimiento  a  GuyBrush y  a PaTa,
por hacer posible que este  Peruano  pertenezca al staff  de RareGaZz. Es  para
mi motivo  de orgullo y a la par, un logro  personal, el colaborar  y compartir
los conocimientos que  pueda  poseer, con personas  que  se interesen en  estos
temas.  
...............................................................................



  El presente articulo va a mostrar al John The  Ripper. Asi es, vamos a hablar
sobre el John The Ripper, pero al estilo de RareGaZz; a nuestro estilo. Asi que
este modesto articulo pretende  tocar los puntos  mas sobresalientes que  hacen
al John unico es su especie.

  Como dicen los sillabus de mi universidad; Al finalizar el presente curso, el
alumno sera capaz de:  

  Escribir un articulo como este, e incluso mejor :D

  Gracias a PaTa, por hacer que rehaga mi articulo, como te odio, :DD

  El 99.1% del credito para  los creadores del John  The Ripper; el  porcentaje
restante para un servidor Yo.ReYDeS.edu.pe

  Ahora si empezemos...


  [ReYDeS@amaranta /root]# head -n

  
   ----------------------------------+-------------------------------------
   Indice:                           :
   ----------------------------------'

   0000  INTRO:
	 (G5 G/B Csus2 Am7 C5 Dsus4 G5 G/B Csus2 Am7 C5 C/E Dsus4 G5  Sayin' I)

   0001  PRE-REQUISITOS:
         ( Algunas cosillas a tener en consideracion para la lectura del
	   presente escrito )

   0010  INSTALACION:
         ( Pos hombre!... para los windozeros es un Setup! )

   0011  SOBRE LOS PASSWORDS:
	 ( Si, el mismo rollo de los passwords :-)
   
   0100  ENCRIPTACION:
	 ( Como se hace que nuestra password 'judithsa', se tranforme en
           'pAoXcz22Tjbfo' )

   0101  JOHN.INI:
	 ( En infame archivo de configuracion del JTR)
   
   0110  OPCIONES:        
	 ( Simple, las diferentes formas de utilizarlo )

   0111  LA TRILOGIA:
         ( Como todo lo existente... tres poderosas razones a favor )

   1000  ReYDeS RULES:
         ( Ejemplos no muy didacticos del uso de 'rules' )

   1001  OUTRO:
	 ( words... G Csus2 G/B Gm/Bb Am7 |G)

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



  -------------------------------------,
  0000 INTRO:                          :
  -------------------------------------'

  Nunca esta demas decir  algunas cosillas; pues aunque la  mayoria de  los que
estamos en la informatica Under, sabemos lo que es  el John The Ripper; debemos
darnos cuenta de que cada dia llegan oleadas de personas hacia nuestras costas,
deseosas de aprender lo que tal vez para nosotros resulta evidente. No  debemos
olvidar que nuestra existencia es un constante aprender.

  Asi es que demos una breve... brevisima descripcion, de lo que es el John The
Ripper:

  JTR (Asi se le referenciara algunas veces)

  John The Ripper es  un crackeador de passwords, el  cual esta disponible para
diferentes plataformas, como Unix, DOS y los win's. Y su proposito principal es
el de detectar passwords Unix. 

  Asi de sencillo... o NOOooo??



  -------------------------------------,   
  0001 PRE-REQUISITOS:                 :
  -------------------------------------'

  * Conseguir e instalar el John The Ripper  v 1.6 o  anteriores; y aunque este
    articulo lo hago  basado en la version  para  Linux, no debe haber  grandes
    inconvenientes cuando se usa con la version para Win o DoS.

  * Un archivo de passwords, que no este Shadow; si no sabes  lo que es shadow,
    pues; hay  una  breve explicacion  en  la  seccion PASSWORDS, del  presente
    escrito. 

  * Pasando  a pre-requisitos   mas sutiles; pues,   un   poco de  imaginacion,
    paciencia, sentido comun, e inteligencia.



  -------------------------------------,
  0010. INSTALACION:                   :
  -------------------------------------'

  Lo primero  que hay  que  realizar, para  utilizar  el John  The  Ripper,  es
logicamente tener instalado  el John The Ripper,  en  tu computador  :). Puedes
obtenerlo en la siguiente direccion:

  http://www.false.com/security/john/


  Su instalacion se hace de una manera simple: 

  Habiendo descomprimido el archivo que contiene al John The Ripper...

      cd src
      
      make
    
  Ahora se  te presentara una lista de  todos los tipos de  sistemas soportados
por la version actual, elije una opcion y teclea lo siguiente:

      make SYSTEM (supongo que sabras que es SYSTEM? 8)

  Y si tu  tipo de sistema  es un 'TREntium' y no  esta en la lista, intenta lo
siguiente: 

      make generic
  
  En este  punto  ya debes  de tener los  binarios  del John The Ripper,  en tu
directorio. Lo ideal en compilar el John con el  tipo de sistema que tienes, de
esta forma obtienes  el maximo rendimiento. Un  dato mas, no olvides ponerlo en
tu PATH.



  -------------------------------------,
  0011. SOBRE LOS PASSWORDS:           :
  -------------------------------------'

  Mucho se  ha hablado, se habla y  se seguira hablando  de los passwords. Pero
nuevamente hablaremos de  ellos, no mucho  claro;  pues no  es ol objetivo  que
persigo con este escrito.

  Al llegar  a este punto,  supongo  que posees  un  archivito, el cual  es muy
buscado  por ciertas personas.  ;) , el no  menos  famoso /etc/passwd. Pero!...
pero!...  para poder utilizar el John, es  necesario cerciorarse primero que el
archivo 'passwd', no este shadow. Ahora  bien, si el archivo  de passwords esta
shadow, tienes un problema mas, y  necesitaras obtener dicho archivo, es decir,
el  archivo /etc/shadow; y  vale recalcar que este  archivo  no sera de lectura
general. 

  Veamos, cuando un  archivo de passwords  esta shadow, visualizaras un archivo
cuyas lineas seran similares a esta:

           Aqui deberia estar el password encriptado.
           |
           |
           V 
Postmaster:x:113:20:Postmaster Nodo INTERNET-###,Ciudad Universitaria - ###
(Edificio de ###########),(51-44) 26 ## ## Anexo ###,:/usr/u/Postmaster:/bin
/csh
 
  Nota: los "#", los he colocado yo, pues es de un archivo original, ;)
        
  Es importante decir, que  la division de   los campos correspondientes a  los
datos se dividen mediante el ':'

  Ahora bien, en  el  archivo shadow  correspondiente, se visualizarian  lineas
como la siguiente:
           
            Este es el Password encriptado.
       _____|_____  
      |           |
hr###:yVoedB.Sm44qY:20:9:Hospital Regional ######## ######### Prestacion de
S######## de S####:/var/spool/#####public:/usr/lib/uucp/######  


  Nota: Me he topado con archivos de passwords que estan completamente "shadow"
        y tambien con una combinacion de estos, es  decir, en un archivo que se
        suponia esta shadow  encontre algunos passwords encriptados. Asi es que
        observad con cuidado.


  Bien, el John viene con una  'utilidad' denominada UNSHADOW,  el cual debe de
estar localizado en la carpeta donde residen los binarios  del JTR. Ahora bien,
si tienes el  archivo 'passwd' y el  archivo 'shadow', pues se  podria fusionar
estos dos archivos; asi en un crackeo single, este utilizara la informacion del
GECOS, el cual contiene nombres de usuario, shells y demas.

  Si no entendiste algo de lo anterior, tu tranquilo!.

  Entonces... la forma de uso del  unshadow seria:... (redireccionandolo a otro
archivo, claro).

  [ReYDeS@amaranta /root]# ./unshadow passwd shadow > FILE  (Que original!)



  -------------------------------------,
  0100. ENCRIPTACION                   :
  -------------------------------------'

  Aclaremos como primer punto: Que es encriptacion?,  para aquellos que vais un
poco perdidos en este tema.

  Desde  mucho tiempo   atras,  mas de   lo  que  imaginais. La    privacidad y
confiabilidad  de  la   informacion a   sido,    y es  un    tema de  constante
preocupacion; no soy muy docto  en este tema;  pero se lo suficiente para daros
unos peque~os conceptos.

  Que es criptografia?. si no me equivoco  debe provenir de dos terminos CRYPTO
y  GRAFOS.  La criptografia nos  permite 'ocultar'  o   'modificar' un mensaje,
siguiendo ciertas  pautas, de  forma tal  que  solo puedan descifrarlo aquellas
personas que tengan conociemiento de ellas. (Me salio bonito el concepto!)

  Antes de  proseguir, aclaremos el panorama  concerniente al modo en que UNIX,
encripta  las palabras que ingresamos  como   nuestras contrase~as. Realiza  lo
siguiente: Unix utiliza el  cifrado denominado DES,  pero no  solo aplica  este
cifrado  una sola vez, lo aplica  25 veces; luego  a la 'palabra' resultante le
a~ade 2 caracteres mas; este es el demonida 'Salt', el cual proviene de la hora
de encriptado.

  Ahora, lo que nos   interesa  a nosotros;  bueno   al menos  a mi!, es:   Que
mecanismos son  usados para  encriptar los  passwords, que  por ironias de  las
cosas el JTR puede obtener. Aqui van, sin ningun orden en particular. 

  * DES (Data Encryption Standard)

  Creado  por   la  NSA  (Estado-unidense),  es   un standard  de encriptacion,
supuestamente solido y  en el tiempo de  su  creacion, deberia de  haber tomado
muchisimo tiempo el poder romperse. Pero con el paso del tiempo y del avance de
la tecnologia, su crackeo resulto siendo un hecho.

  El algoritmo DES, es lo que se denomina un algoritmo 'Simetrico'.

  Su algoritmo es el siguiente:
  
  El algoritmo DES codifica bloques de 64 bits  empleando claves de 56 bits. Es
una red de Feistel de 16 rondas con dos  permutaciones, una inicial (Pi) y otra
final (Pf), tales que Pi=Pf'-1. (Pf'-1, significa f elevado a la menos 1).

  La funcion f se compone de una permutacion de expansion (E), que convierte el
bloque de 32 bits  correspondientes en uno de 48  bits. Despues realiza  un XOR
con el valor Ki, tambien de 48 bits, aplica ocho S-cajas de 6*4 bits, y efectua
una nueva permutacion P.

  Se calcula un total de  16  valores de  Ki, uno  para cada ronda,  efectuando
primero  una  permutacion  inicial sobre la   clave, y  luego llevando   a cabo
desplazamientos  a la  izuierda  de cada  una de las   dos mitades (de 28 bits)
resulatantes, y realizadndo  una eleccion permutada  de 48 bits en cada  ronda,
que sera la Ki.

  Para descifrar basta con usar el mismo  algoritmo (ya que Pi=Pf'-1) empleando
las Ki en orden inverso.

  Lo entendieron?... yo no! :P.


  Ahora debemos hablar sobre HASH. 

  Hash es un algoritmo de una via, al estilo del DES,  es una capa de seguridad
a~adida para mejorar  la seguridad de los algoritmos  de proteccion. El  MD5 es
utilizado mediante un valor HASH, para hacer mas duro el encriptado de objetos.

  * MD5

  Se trata de uno de  los mas populares  algoritmos de generacion de signaturas
(firmas) digitales, debido a  su inclusion  en  las primeras versiones  del PGP
(Pretty  Good Privacy). Es  el  resultado  de una serie    de mejoras sobre  el
algoritmo MD4; procesa mensajes de entrada en bloques de 512 bits y produce una
salida de  128 bits. El  MD5 es un metodo  que nos va a  permitir auntentificar
cualquier objeto. Pero es como todo :), ya que en los ultimos a~os el algoritmo
MD5 ha mostrado debilidades, eso si, sin  implicanciones preacticas reales, por
lo que actualmente se considera seguro? :O Uds. lo creen?

  Su algoritmo esta  bien pesadito, y  como no  soy ningun experto  criptologo.
Pos hombre!. Que me enredao con ese algoritmo!.

  Resaltar  que;  el   John the ripper  soporta  y  autodetecta los  siguientes
formatos de 'cifrado'. 

  Standard DES  
  BSDI DES
  FreeBSD MD5
  OpenBSD Blowfish
  Kerberos AFS DES
  NT LM DES


  Y  para finalizar  esta   seccion, decir que   el  JTR no usa rutinas  estilo
crypt(3), en  lugar de  ello utiliza sus  propios modulos  para  los diferentes
formatados de cifrado.

  Creo que, con lo  explicado anteriormente, a muchos de  nosotros nos a picado
la curiosidad por la Criptografia. Pero  afortunadamente tengo el antidoto para
esa picadura. :-).



  -------------------------------------,
  0101. JOHN.INI                       :
  -------------------------------------'

  Antes de  seguir avanzando, y pasar  a lo que   son las opciones del  JTR, es
necesario conocer  a un archivo  fundamental en el uso del  John; es el archivo
denominado: JOHN.INI. 

  * JOHN.INI

  El JTR, puede ser personalizado editando el archivo john.ini, en este archivo
se pueden definir 2 puntos importantes, variables y secciones. El simbolo usado
para colocar comentarios  en este archivo es  '#', las lineas que comienzen con
este simbolo seran ignorados.

  En este   archivo  se configuran  todos  los  aspectos fundamentales para  el
comportamiento  del JTR, en   los diferentes modo de crackeo   que este  posee.
Gracias a este archivo la utilizacion del JTR se realiza con comodidad. 

  Algunas variables para el comportamiento general de el JTR se localizan en la
seccion [Options], en dicha seccion se definen:
 
  Wordfile = ~password.lst 
  ( Aqui podemos  definir una lista de palabras  por defecto, en lugar de dicho
    archivo. )

  Save = 600
  ( Aqui  se  define el lapso   de tiempo, en el   que el  archivo 'restore' se
    sobreescribira, salvando en  el, el estado  del  John la ultima  vez que se
    inicio. ) 

  Beep = Y
  ( Pues nada, un pitido que te avisara que ha encontrado un password! )


  En  la   partes subsiguientes de  este   archivo  se definen  las  siguientes
secciones:  

  [List.Rules:Single] 
  ( Seccion utilizada para el crackeo, utilizando el parametro 'single'. )

  [List.Rules:Wordlist]
  ( Seccion utilizada cuando se  tiene una lista   de palabras o diccionario  y
    se habilitan  las  reglas  para  este proposito.  Cabe  acotar que  podemos
    definir nuestras  propias reglas de   acuerdo a nuestras  necesidades,  mas
    adelante comentaremos mas a respecto. )
 
  [Incremental:MODO]
  ( Todos  las secciones del  modo  incremental  se  definen con esta cabecera,
    donde MODO, toma  el valos de All,  Alpha, Digits y  LanMan. Ademas podemos
    definir nuestros propios modos incrementales. )

  [List.External:Filter_MODO]
  ( Esto define un modo externo utilizado para filtrar  palabras. MODO, toma el
    valor de Filter_Alpha,  Filter_Digits y  Filter_LanMan.  Ademas de las  que
    podemos nosotros definir. )

  [List.External:MODO]
  ( De esta forma se definen funciones en un tipo de lenguaje C, cuyo proposito
    es generar palabras que   cumplan determinadas caracteristicas.  Aqui  modo
    puede tomar el valor de LanMan, Double y  Parallel. Sin contar que nosotros
    podemos definir una. )  


  En cada una de  estas secciones se definen  variables que solo funcionan para
la seccion  en la cual  han sido definidas; asi  como en el  lenguaje C, define
variables locales y globales.

  Ahora bien, hablemos un poco sobre el archivo 'john.pot', no menos importante
en la utilizacion del JTR.

  * JOHN.POT

  En   este archivo  se van    registrando aquellos passwords   que  van siendo
encontrados por el JTR. Pero!... Pero!, no solo  tiene ese comentido. Tiene una
segunda mision, la cual es utilizada cuando se define un conjunto de caracteres
con el  parametro -makechars:FILE. Tranquilos!...  que en la  seccion OPCIONES,
trateremos este punto. 



  -------------------------------------,
  0110. OPCIONES                       :
  -------------------------------------'

  JTR tiene una conjunto muy interesante y variopinto de opciones. Las palabras
sobran para elogiar a este programa.


  Lo  mas tipico  de  hacer, cuando  uno ya  tiene   un archivo de  password es
utilizar el siguiente parametro con el JTR. Clasico!.

  Asumiremos  durante todo este escrito que  el archivo a  crackear es 'passwd'
(Que nombres tan originales!) :)

  [ReYDeS@amaranta /]# ./john -single passwd  

  Esto de seguro sacara algunas claves, pero de donde?... alli esta el detalle.
De  ello hablaremos  con mas calma,  mas   adelante. Tranquilos,  hay que saber
esperar, es una virtud.


  Ahora,   para aquellos  que tengan  vida   eterna o  mucha paciencia,  pueden
utilizar este parametro y esperar a que termine:

  [ReYDeS@amaranta /]# ./john -incremental:MODO passwd

  MODO,  se define en  el archivo de configuracion,  este puede ser All, Alpha,
digits o un modo creado por vosotros.


  Ahora viene mi parametro engreido:

  [ReYDeS@amaranta /]# ./john -rules -wordfile:FILE passwd

  Utilizando estos parametros se utilizara una lista de palabras definida en el
'john.ini' o  en la misma linea de  comandos, depues de '-wordfile'. Ademas, el
parametro  '-rules' habilitara las  reglas,  las cuales  seran utilizadas  para
manipular las palabras de una lista.


  Ahora veamos   la segunda utilidad   que tiene  el archivo  'john.pot',  este
archivo es utilizado por el JTR cuando es utilizado con el siguiente parametro.

  [ReYDeS@amaranta /]# john -makechars:FILE

  A partir del archivo 'john.pot' se generara un juego de caracteres, basandose
en la frecuencia de  caracteres que aparecen en  los passwords crackeados. Algo
asi como los caracteres  mas utilizados a la   hora de elegir una palabra  como
clave; asi se infiere que con este  promedio, hay mas  porcentaje de obtener un
password.

  Podemos   definir en  la  seccion correspondiente  al   modo incremental, una
seccion, la cual utilizara el  archivo generado anteriormente; definiendo todas
las variables correspondientes para su utilizacion.


  Una  opcion interesante es  la 'External', en esta   seccion que reside en el
archivo de configuracion, se definen funciones escritas  en un tipo de lenguaje
C, con estas funciones se generaran palabras para utilizar mientras se crackee,
estas funciones se compilaran cuando se inicie el JTR.

  [ReYDeS@amaranta /]# john -external:MODO

  Se puede  utilizar un  filtro externo con otros modos de crackeo, por ejemplo
incremental, wordlist.

 
  Visualizemos ahora  comandos menos complicados, pero no por ello menos utiles
que los demas. Se los presento a continuacion: 

  Con el siguiente  parametro se reinizara una sesion del JTR que anteriormente
haya sido interrumpida.  Se  puede definir  otro  archivo en FILE, pues  el JTR
leera el archivo por defecto que es el denominado 'restore'.

  [ReYDeS@amaranta /]# john -restore:FILE


  Con  este siguiente parametro,  si  el JTR  ha  encontrado algunos passwords,
entonces los visualizara por vuestra terminal.

  [ReYDeS@amaranta /]# john -show passwd

  
  Ahora  veamos un  conjunto de  parametros que le  dan una  mayor vitalidad al
proceso de  crack; cabe  resaltar que todos  ellos pueden  utilizarse  de forma
separada, yo los coloco todos juntos aqui por razones didacticas :o).

  Su significado es el siguiente;  crackear aquellos passwords que cumplan  los
siguientes requisitos; que sean de un usuario llamando ReYDeS, cuyo GID sea 100
y su shell sea el tcsh. Asi de simple!.

  [ReYDeS@amaranta /]# john -users:ReYDeS -group:100 -shells:/bin/tcsh passwd


  Ahora bien, si tenemos  un archivo de  passwd con un formato de  encriptacion
diferente al DES, podemos forzar al JTR a utilizar otro formato soportado, como
por ejemplo el MD5. Esto se haria de la siguiente manera:

  [ReYDeS@amaranta /]# john -format:MD5 (seguido de otros parametros) passwd


  Hay otros  parametros  a utilizar, pero  he  creido conveniente explicar  los
anteriores, pues son los mas utilizados. Bueno, eso creo!.



  -------------------------------------,
  0111. LA TRILOGIA                    :
  -------------------------------------'

  Asi  denomino   yo a los 3    puntos  fuertes del  JTR,   el  modo single, el
incremental y el wordlist (rules). Empezemos pues, sin mas demora...

  1) -wordlist (-rules)
  
  Bien, he creido  conveniente explicar  primero este comando para entrar luego
al '-single'. 

  Gracias al parametro '-wordlist' se hace posible la  utilizacion de una lista
de palabras; sea esta  obtenida por algun medio  o creado por vosotros  mismos.
Bien, pero esto no queda alli, noo!... ademas de probar las palabras tal y como
son, JTR nos da la posibilidad de alterar (en el sentido literal de la palabra)
esas mismas palabras a nuestro antojo. 

  Que como se hace esto?, pues con -rules.

  -rules -reglas?

  Asi  es,  reglas que    como  ya  intuiran,  se definen   en  el   archivo de
configuracion  del JTR; podemos hacer malavares con una lista de palabras. Esto
se    realiza con los      siguiente  'pseudo-comandos', el   cual   utiliza el
'preprocesador' del John para referirse a dichas reglas reglas. 

  Veamos lo que podemos hacer con las palabras en sus formas mas simples:

  a) Comandos Simples:

  :       no-op (no-operacion) : no hace nada a la palabra de entrada.
  l       convierte los caracteres de la palabra a minusculas.
  u       convierte los caracteres de la palabra a mayusculas.
  c       capitaliza (Convierte el 1er caracter a mayuscula)
  C       convierte a minuscula el 1er caracter, y en mayuscula los demas.
  t       convierte a mayuscula las minusculas y viceversa.
  r       revierte: "Fred" -> "derF"
  d       duplica: "Fred" -> "FredFred"
  f	  refleja: "Fred" -> "FredderF"
  {	  rota la palabra a la izquierda: "jsmith" -> "smithj"
  }   	  rota el palabra a la derecha: "smithj" -> "jsmith"
  $X      an~ade caracter X a la palabra.
  ^X      antepone caracter X a la palabra. 


  Ademas tenemos definidas y divididas los diferentes caracteres, como dice la
frase; divide y venceras. Asi pues, estan definidas de la siguiente forma:

  b) Clases de caracteres:

  ??      define un: " ? " 
  ?v      define vocales: " aeiouAEIOU "
  ?c      define consonantes: " bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ "
  ?w      define un espacio en blanco: " \t "
  ?p      define signos de puntuacion: " .,:; ' \"?! ` "
  ?s      define simbolos: " $% ^ & * () -_+ = | \ \ < > [] {} #@ / ~ "
  ?l      define letras minusculas: [a-z]
  ?u      define letras mayusculas: [A-Z]
  ?d      define digitos: [0-9]
  ?a      define letras: [a-z A-Z]
  ?x      define letras y digitos: [a-z A-Z 0-9]


  Tambien podemos controlar la longitud de las palabras con las siguientes
reglas:

  c) Comandos de control de longitud:

  N      ejecuta la palabra, si esta es mayor que N caracteres de longitud.
  'N      trunca la palabra a longitud N.


  Para modificar algunas palabras en ingles a terminaciones de esa gramantica
se utiliza:

  d) Ordenes de la Gramatica Inglesa:

  p       pluraliza la palabra: "crack" -> "cracks", etc. (solo minusculas)
  P       "crack" -> "cracked", etc. (solo minusculas)
  I       "crack" -> "cracking", etc. (solo minusculas)  


  Ahora vienen comandos que son utilizados en conjuncion con las clases de
caracteres definidos en un acapite anterior. Aqui os podeis dar cuenta de lo
poderoso que puede llegar a ser el JTR con este modo de crackeo.

  sXY     reemplaza todos los caracteres X en la palabra con Y
  s?CY    reemplaza todos los caracteres de clase C en la palabra con Y

  @X      elimina todos los caracteres X de la palabra.
  @?C     elimina todos los caracteres de clase C de la palabra.

  !X      ejecuta la palabra, si contiene un caracter X
  !?C     ejecuta la palabra, si contiene un caracter de clase C

  /X      ejecuta la palabra, a menos que contenga un caracter X
  /?C     ejecuta la palabra, a menos que contenga un caracter de clase C

  =NX     ejecuta la palabra, a menos que el caracter en la posicion N sea
          igual a X
  =N?C    ejecuta la palabra, a menos que el caracter en la posicion N este
          en la clase C

  (X      ejecuta la palabra, a menos que su primer caracter sea X
  (?C     ejecuta la palabra, a menos que su primer caracter, este en la
          clase C

  )X      ejecuta la palabra, a menos que su ultimo caracter sea X
  )?C     ejecuta la palabra, a menos que su ultimo caracter, este en la
          clase C

  %NX     ejecuta la palabra, a menos que esta contenga por lo menos N casos
          de X
  %N?C    ejecuta la palabra, a menos que esta contenga por lo menos N
          caracteres de clase C


  Y como penultimo acapite de esta seccion:

  f) Comandos de Insercion/Borrado:

  [       borra el primer caracter de la palabra.
  ]       borra el ultimo caracter de la palabra.
  DN      borra el caracter en la posicion N
  xNM     extrae  una subcadena empezando desde la posicion N, com M caracteres
          de longitud.
  iNX     inserta un caracter X en la posicion N
  oNX     sobrepone un caracter en la posicion N con un caracter X


  Y para cerrar con broche de oro:

  g) Comandos de Conversion de caracteres:

  S     Tecla Shift: Crack96 -> cRACK(^
  V	vocales minusculas: Crack96 -> CRaCK96
  R     Crack96 -> Vtsvl07
  L     Crack96 -> Xeaxj85

  ( En estos dos ultimas lineas, observen las reglas y su teclado con mucho
    detenimiento. Ya saben de lo que se trata?. )


  Para mejor    entendimiento de   los  acapites   anteriormente   mencionados,
resultaria,   creo yo, beneficioso    para el  lector,   que  comente  sobre el
Preprocesador. 

  * El Preprocesador:

  Bien, el preprocesador del JTR, se utilizada para combinar comandos u ordenes
o las dichosas  reglas en una solo  linea. Con esto se  logra ahorrar espacio y
no  escribir  reglas innecesarias  para el  procesamiento de   las palabras. El
preprocesador  empieza a  generar las reglas cuando verifca  la  sintaxis y una
vez mas, en el  proceso de crack;   pero, no guarda  las ordenes  extendidas en
memoria.

  Por ejemplo  si deseamos hacer una orden que pruebe las palabras minusculas y
que ademas a~ada 2 digitos al final  de dicha  palabra, pues una forma de hacer
dicha regla, seria:

  l$[0-9]$[0-9]

  Cuando este   comando sea interpretado por   el preprocesador, esta  regla se
'expandira',  en  las  100 ordenes  que  deberiamos  de haber   escrito,  si no
existiese el preprocesador, para cumplir este proposito. Que avance, no?.

  Demas decir, esto se  aplica a las demas reglas, que residen en el 'john.ini'
y las que podemos definir nosotros.

  Existen algunos  caracteres de control que tienen  que  manipularse con algun
cuidado;  es el caso   de '[', el  cual  empieza una  lista  de caracteres  del
preprocesador; tambien el de '-', el cual define un rango dentro de un a lista.
Para la utilizacion de  esos caracteres es necesario  anteponer el caracter con
un '\', asi perdera su significado especial. Y lo mismo se aplica al '\'.


  2) -single

  El  modo '-single', es   un clasico  para  comenzar  un proceso  de  crackear
passwords.  Este  modo  usara la  informacion del   GECOS; Que  es GECOS?, pues
de una forma somera;  es informacion de usuarios,  como su nombre; como  decia,
usa esta  informacion en combinacion  con algunas reglas pre-establecidas en el
archivo de configuracion, para intentar obtener algunas claves.

  Las  reglas a  utilizar para este  modo,   son las mismas  que  las descritas
anteriormente para la seccion  '-wordlist' (-rules). A mi  gusto sus reglas son
mas interesantes en composicion y propositos :).

  Cabe resaltar que este modo es mas rapido, que el  modo de 'wordlist'. Ademas
los passwords  hallados seran probados en  el  mismo archivo de  claves, por si
existe mas de un usuario usando el mismo password.

  Dada  las caracteristicas de este tipo  de crackeo, se  obtendran mas claves,
mientras se usen mas archivos de passwords en este modo. 


  3) -incremental :(MODO)
 
  Este modo, es mucho mas potente y  seria el mas efectivo, si  no fuese por el
tiempo; dado que por el mismo hecho de probar todas las combinaciones posibles;
por ese mismo hecho se asume que este modo no finalizaria nunca.

  La unica manera de ver a este modo finalizar  una sesion, seria la de limitar
la longitud de las palabras; o  limitar el conjunto de caracteres a utilizar en
la contruccion de las 'palabras'. 

  Es  por ello  que  es  recomendable,  utilizar este  modo  con  una  tabla de
frecuencia de caracteres, ya que asi sera posible  coger mas claves en un menor
tiempo. Como se  dijo anteriormente una  tabla de frecuencia de  caracteres, es
algo asi como un ranking de  los caracteres mas usados al momento de elegir una
palabra clave; construido en base a las claves que han sido obtenidas.

  En esta seccion se definen las siguientes variables:

  File = ~/FILE.chr
  ( Aqui se define el nombre del archivo generado con el comando '-makechars'.)

  MinLen = 
  ( Define la longitud minima de la 'palabra'. )

  MaxLen = 
  ( Como ya habran intuido, la longitud maxima. )

  CharCount = 
  ( Permite limitar  el juego de  caracteres a usar.   Si este parametro  no se
    especificase, se utilizan todos los caracteres definidos. )
  
  Extra = 
  ( Esto permite al  JTR, a~adir algunos caracteres extras  al juego defindo de
    caracteres que se esta usando. )

  Los  juegos  de caracteres  que se  establecen  por defecto  en el archivo de
configuracion  son: All,  para   todos  los caracteres   posibles;  Alpha, para
caracteres alfabeticos y Digits, para los digitos numericos.



  -------------------------------------,
  1000. ReYDeS RULES                   :
  -------------------------------------'

  Voy a hacer  esta seccion, como un punto  de partida a  la utilizacion de las
reglas que es posible escribir para usar con una lista de words. Gracias a este
metodo se convierten en More Than Words (mas que palabras).

  Empezamos  por lo   mas simple y  gradualmente   le agregaremos una   nota de
complejidad:

  Haber, empezemos con un clasico del crackeo y que me  da escalofrios, el solo
pensar que en mi facultad aun usan esta combinacion en sus passwords. El tipico
password con una  palabra y dos numeros al  final (esos 2  numeros al final son
para seguridad), :).   

  Dadme... un password!... 
                           cecilia00

  Son 7   letras y  dos numeros.  Entonces  como se   "supone" que tenemos  una
diccionario  el cual contiene  entre  sus muchas  palabras nombres de personas,
hacemos una regla como la siguiente: 

     l$[0-9]$[0-9]

  Veamos, en este caso al John le dara lo mismo 'cecilia00' que 'cecilia0', asi
es  que   para  ahorrarnos algunas comparaciones    inuteles   podemos hacer lo
siguiente: Para el primer caso, probar solamente con palabras cuya longitud, no
supere los 6 caracaters; de  esta forma, al agregarle  los dos numeros al final
tendriamos 8 caracteres, que corresponde al formato DES. Entonces quedaria como
sigue: 

     <7l$[0-9]$[0-9]

  Si deseamos  probar palabras, y  solamente agragarle un  numero al  final, se
haria lo siguiente:

     l$[0-9]

  Ahora, hacemos  lo mismo si desemaos probar palabras de determinada longitud.

     <8l$[0-9]  o  <*l$[0-9]

  Para ambos casos, si  deseamos probar con palabras a  partir de una  longitud
minima, contamos con las siguientes formas:

     >2l$[0-9]$[0-9]

  Lo  anterior probara solo  palabras  a  partir de  una  longitud mayor  a dos
caracteres; pero tambien podriamos hacer lo siguiente:

     <*>2u$[0-9]

  Recuerdan  lo que significaba max_lenght?, pues  es lo que representa el '*',
para el  caso del DES, toma  el valor de 8, que  son ocho caracteres. Y  lo que
hace la 'u', es  convertir la palabra en  mayusculas, por lo cual  las palabras
quedarian con este formato: 'PAOLA0'.

  Ahora bien, lo  que podriamos hacer para no preocuparse por la longitud de la
palabra, seria truncar la longitud de la palabras. Asi:

     '6c$[0-9]$[0-9]
  
  Tener en cuenta que esto  modificara a la palabras. Serian algo como esto, en
lugar de 'elizabeth', seria 'Elizab78'.

  Ahora   se me ocurre que  en  lugar de colocar   esos benditos dos numeros al
final, esos dos numeros sean colocados al principio, de la siguiente forma.
    
     l^[0-9]^[0-9] 

  Tomando nuevamente la  clave 'cecilia', la nueva  palabra  seria '00cecilia'.
Pero  esas ultimas   letras,  en este caso   a  partir  de   la letra   'a', es
innecesario. Asi es que definimos lo siguiente. 

     <7l^[0-9]^[0-9] 


  Para clausurar esta seccion y algunas palabras depues, tambien este articulo,
se me viene a la mente esa forma que tienen algunos tipos de escribir.

  Solo por ser una  ocasion  en la cual  es inevitable este tipo de  escritura,
veran esta combinacion de letras y caracteres. Con el perdon de los presentes:

  Digamos un nombre mas...  'carol' por ejemplo,  y digamos tambien, que es una
chica cool y que escribe su nombre reemplazando algunos caracteres con numeros,
asi: c4r01  :-|  

  Entonces... se los dejo como tarea... :D jeje!... No?

  sa4so0sl1

  Alli lo tienen la version alpha, examinenla...  



  -------------------------------------,
  1001. OUTRO                          :
  -------------------------------------'

  [ReYDeS@amaranta /]# tail -n   

  Este articulo   no solo  representa,  un  conjunto  de parrafos   con algunos
conocimientos, va mas alla de eso; es parte de mi  existencia, parte de todo lo
que me ocurre mientras lo elaboro; es por ello que toma un significado especial
para mi.

  No es necesario que os prometa algo  mucho mejor para  el proximo numero, esa
promesa me la hago a mi mismo; y espero que sea de vuestro agrado.

  Es todo por ahora.

  Yo me despido hasta una proxima oportunidad.


				o (:::::::::) o

   El presente articulo lo dedico a mi querida hermana, por haber culminado
	 satisfactoriamente sus estudios Universitarios el 07/02/2000.

				o (:::::::::) o



	- Sayin' "I love you", is not the words I want to hear from you -

                                                      More Than Words (Extreme)


			    ,,,,,,,,,,,,,,,,,,,,,,,
			    : ReYDeS@hobbiton.org :
			    :   Peru,  A~o 2000   :
			    '''''''''''''''''''''''