domingo, 16 de septiembre de 2018

Conexion por red wifi via terminal

En esta ocasión explicare como realizar una conexión exitosa a una red wifi mediante la terminal de Gnu/Linux.





lo primero que necesitamos es saber el nombre de nuestras interfaz wifi, esto lo podemos descubrir con el siguiente comandos:

~# iwconfig

seguidamente, sabiendo el nombre de nuestra interfaz inalambrica procedemos a enlistar las redes inalambricas disponibles, con el siguiente comando:

~# iwlist wlan0 scan
wlan0    Scan completed :
          Cell 01 - Address: B4:CE:FF:6F:2D:03
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
                    Quality=28/70  Signal level=-82 dBm 
                    Encryption key:on
                    ESSID:"INFINITUMXXX"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=0000017edeb52f2b
                    Extra: Last beacon: 40ms ago
                    IE: Unknown: 0011494E46494E4954554D323342425F322E34
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 030106
                    IE: Unknown: 0706555320010B1E
                    IE: Unknown: 200100
                    IE: Unknown: 23021200
                    IE: Unknown: 2A0104
                    IE: Unknown: 32040C121860
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 0B0507001A0000
                    IE: Unknown: 2D1AAD091BFFFFFF0000000000000000000000000000000000000000
                    IE: Unknown: 3D1606081500000000000000000000000000000000000000
                    IE: Unknown: 7F080400080000000040
                    IE: Unknown: DD800050F204104A0001101044000102103B00010310470010AAE87F221656C749F3FB9DB431547DC71021000842726F6164636F6D10230008472D323430572D421024000631323334353610420004313233341054000800060050F20400011011000A42726F6164636F6D415010080002200C103C0001011049000600372A000120
                    IE: Unknown: DD090010180207001C0000
                    IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
          Cell 02 - Address: 80:5B:69:2B:B5:31
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=55/70  Signal level=-55 dBm 
                    Encryption key:on
                    ESSID:"INFINITUMX3X"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
                              18 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000002f997380e78
                    Extra: Last beacon: 40ms ago
                    IE: Unknown: 00084E6574776F726B32
                    IE: Unknown: 010882848B961224486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0104
                    IE: Unknown: 32040C183060
                    IE: Unknown: 2D1AAC0117FFFF000000000000000000000000000000000000000000
                    IE: Unknown: 3D160B000400000000000000000000000000000000000000
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 7F09000000000000000000
                    IE: Unknown: 0B05020021127A
                    IE: Unknown: DD180050F20201018A0003A4000027A4000042435E0062322F00
                    IE: Unknown: DD07000C4303000000
          Cell 03 - Address: 55:30:32:FA:57:C2
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=63/70  Signal level=-47 dBm 
                    Encryption key:on
                    ESSID:"INFINITUMX5X"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=00000065d6d8e493
                    Extra: Last beacon: 40ms ago
                    IE: Unknown: 00074E6574776F726B
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 03010B
                    IE: Unknown: 2A0104
                    IE: Unknown: 2F0104
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 32040C121860
                    IE: Unknown: 2D1AFC181BFFFF000000000000000000000000000000000000000000
                    IE: Unknown: 3D160B080400000000000000000000000000000000000000
                    IE: Unknown: DD090010180207F02C0000
                    IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00


una vez seleccionada la red wifi procedemos a realizar la conexión, mediante el siguiente comando:

~# iwconfig wlan0 essid INFINITUMX3X key s:password123

el prefijo s: indica al comando que la contraseña empleada es representada como ascii ya que habitualmente el comando solo reconoce contraseñas hexadecimales.

una vez ejecutado el comando y realizado con exito la conexion es hora de pedir la ip para podernos integrar a la red, para eso ejecutaremos el siguiente comando:

~# dhclient wlan0

y con esto ya tendremos una conexion wifi via terminal.

domingo, 9 de septiembre de 2018

Instalación de PAC Manager (Debian Stretch)

Ya hace mucho tiempo que no realizo una publicación en este blog olvidado, espero seguir publicando contenido en mi tiempo libre, para ayudar a quien lo necesite en el mundo de GNU/Linux, en esta ocasión este tutorial ira de como instalar PAC Manager, para el que no tenga idea de que sea, aqui dejare una pequeña definicion.

PAC Manager :(Perl Auto Connector) es una herramienta de código abierto en Linux, como el sistema operativo, que proporciona GUI (interfaz gráfica de usuario) para administrar sesiones ssh, telnet, sftp, rdesktop, vnc, remote-tty y ftp. En otras palabras, podemos decir que PAC Manager es una herramienta alternativa de Secure CRT & Putty de Windows en Linux.





Bueno basta de explicaciones, vamos a como instalarlo.


lo primordial es descargarlo para eso ejecutamos los siguientes comandos:

~$ wget https://sourceforge.net/projects/pacmanager/files/pac-4.0/pac-4.5.5.7-all.deb

el comando wget nos permitira iniciar la descarga del empaquetado deb para realizar 
su instalación.

~# dpkg -i pac-4.5.5.7-all.deb

seguidamente realizamos la instalación del paquete deb, obviamente debemos loggearnos 
como root o si tienes configurado el comando sudo, podrias usarlo, una vez ejecutado el comando, 
nos pedira dependencias que debemos solucionar, exactamente como lo muestra la imagen de a bajo.

 
para solucionar ese problema debemos ejecutar el siguiente comando:

~# apt-get install -f

dicho comando solucionara e instalara las dependencias de pac manager, una vez finalizada 
la instalación ya podremos usar pac manager.


domingo, 2 de noviembre de 2014

Ataque de inyección CCS con MITM en OpenSSL (CVE-2014-0224)

Todavía no nos hemos recuperado del susto del Heartbleed cuando aparece una nueva vulnerabilidad crítica en OpenSSL (CVE-2014-0224). Parece que se está poniendo de moda las vulnerabilidades en las librerías de cifrado. En este caso se trata de combinar un ataque de Man-in-the-Middle (MITM) con una inyección de paquetes CCS para renegociar los atributos de seguridad de la conexión segura.
openssl-logo
Bien es cierto que para que el ataque tenga éxito, tanto el cliente como el servidor han de ser vulnerables. Parece ser que todos los clientes OpenSSL son vulnerables, y los servidores los de la versión 1.0.1, además el atacante tiene que estar en disposición de poder hacer un MITM. Hoy en día con las redes WiFi disponibles en bares, restaurantes, hoteles o aeropuertos esto es más probable que hace 10 años.
¿Cómo se realizaría el ataque?
Las sesiones SSL/TLS se inician con los mensajes de ClientHello y ServerHello desde ambos lados de la conexión, similar al handsake en las conexiones TCP/IP. Durante esta parte del protocolo se negocian los atributos de la sesión como por ejemplo las claves de cifrado o protocolo de cifrado.
Por alguna razón, el cliente o el servidor puede modificar la estrategia de cifrado de la conexión durante la etapa del handshake. Esto es posible gracias al ChangeCipherSpec (CCS), que consiste en paquetes enviados entre cliente y servidor para informar que los siguientes registros de la conexión estarán protegidos bajo otras especificaciones de cifrado y claves.
ChangeCipherSpec
El mensaje CCS se envía durante el handshake, después de que los parámetros de seguridad han sido aceptados pero antes de verificar si se ha enviado el mensaje de “Finalizado”.
Ante este escenario un atacante podría esperar a una nueva conexión TLS, seguido de los mensajes ClientHello y ServerHello. A continuación emitir un paquete CCS en ambas direcciones provocando que OpenSSL use una clave maestra con longitud cero, obligando a que las claves de sesión usen una longitud cero, así como las futuras claves de sesión, extrapolando la debilidad de la sesión durante toda la conexión. Una vez renegociados los parámetros del handshake, el atacante podrá descifrar y modificar los paquetes que pasen por sus manos.
OpenSSL ya ha corregido esta vulnerabilidad (CVE-2014-0224) cambiando la forma en la que los paquetes CCS son recibidos y no permitiendo longitudes cero como valores de las claves maestras.
Espero que os sirva de ayuda para entender mejor en qué consiste la vulnerabilidad y hasta que punto nos puede afectar.
Hasta la próxima!

Informacion tomada del sitio web: 

http://hacking-etico.com/2014/06/05/ataque-de-inyeccion-ccs-con-mitm-en-openssl-cve-2014-0224/

toda la información presentada en este articulo es propiedad de Miguel A. Arroyo, @Miguel_Arroyo76


Introducción a sockets en python




Hola a todos los que aun siguen este pequeño blog olvidado, espero inyectarle un poco de vida a este blog con nuevas entradas, en esta ocacion explicare un poco lo que son los sockets en python y haremos unos pequeños scripts en python de un cliente y servidor, los cuales enviaran y recibirán instrucciones, en pocas palabras cadenas de textos.


Sockets

De acuerdo con wikipedia los sockets son un concepto abstracto por el cual dos programas (posiblemente situados en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.

El termino socket es también usado como el nombre de una interfaz de programación de aplicaciones para la familia de protocolos de internet TCP/IP, provista usualmente por el sistema operativo.
Los sockets de internet constituyen el mecanismo para la entrega de paquetes de datos provenientes de las tarjetas de red a los procesos o hilos apropiados. Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto.



El modelo de programación distribuida que sería popularizado por el API de sockets era el modelo cliente/servidor, en donde hay un servidor y un grupo de clientes. Los clientes envían mensajes al servidor pidiéndole que haga trabajo en su nombre, esperan que el servidor realice el trabajo pedido, y en algún momento posterior reciben una respuesta. Hoy en día este modelo computacional es tan utilizado que a menudo es el único modelo con el que muchos ingenieros de software están familiarizados. Sin embargo, en el momento que fue diseñado, era visto como una manera de extender el modelo de I/O de Unix a través de una red. Otro factor que llevó al API de sockets hacia el modelo cliente/servidor fue que el protocolo más popular que soportaba, TCP, era un modelo comunicacional 1:1.
El API de sockets hizo que el modelo cliente/servidor fuera fácil de implementar, porque el programador podía usar una pequeña cantidad de llamadas de sistema y agregarlas a su código existente ("desconectado") para aprovechar otros recursos computacionales. Aunque era posible usar otros modelos, el API de sockets hizo que el modelo cliente/servidor dominara al mundo de las redes.

Programando los sockets
Ahora que ya sabemos que son los sockets, explicare mediante un ejemplo sencillo como programarlos en python, la forma de explicacion sera como habitual mente se hace en este blog, colocare el codigo y seguidamente explicare cada una de sus sentencias para que el lector pueda entender claramente el codigo, bueno comencemos.
script cliente:
1.-  #!/usr/bin/python
2.-  import socket
3.-
4.-  sock = socket.socket()
5.-  sock.connect((“localhost”, 5000))
6.-
7.-  while True:
8.-           mensaje = raw_input(“#>”)
9.-           sock.send(mensaje)
10.-          if mensaje == “exit”:
11.-                    break
12.- print “Bye”

13.- sock.close()



En la linea 1 colocamos el shebang para el interprete de python en gnu/linux:

          #!/usr/bin/python

En la linea 2 se encuentra la importacion del modulo socket, para el manejo de sockers en python
          import socket

En la linea 4 se encuentra la instanciacion del objeto socket en la variable sock

          sock = socket.socket()

En la linea 5 realizamos la conexión con el servidor, la sentencia connect, esta compuesta de una tupla que pide como parametro el host y el puerto del servidor para realizar la conexión, en este ejemplo usaremos como host el localhost, que para el despistado el localhost es nuestro propio ordenador que igual es representado por 127.0.0.1, y utilizaremos el puerto 5000, para el que no sabe esto la cantidad maxima de puestos logicos en un ordenador es de 65535 puertos, pero eso ya es otro tema que abordaremos en una entrada relacionada con redes o sistemas operativos.

          sock.connect((“localhost”, 5000))

En la linea 7 iniciamos un bucle infinito mediante la sentencia while y el valor booleano True con el fin de poder repetir indefinidamente las sentencias siguientes.

          while True:

En la linea 8 inicializamos la variable mensaje con el valor de retorno del metodo raw_input, el metodo raw_input retorna el buffer de entrada, que podrian ser datos del teclado.

          mensaje = raw_input(“#> ”)

En la linea 9 utilizamos en metodo send del modulo socket el cual anteriormente inicializamos, la finalidad de este metodo es enviar datos por la conexión del socket hacia el servidor, asi que enviaremos la variable mensaje

          sock.send(mensaje)

En la linea 10 y 11 se encuentra la condicion if que determinara si la variable mensaje es igual a “exit” si en dado caso lo es se ejecuta la sentencia break que rompe el bucle infinito y termina el programa.

          if mensaje == “exit”:
                    break

En la linea 12 se encuentra la sentencia print que enviara un mensaje de Bye si se concluye el while

          print “Bye”

En la linea 13 se encuentra el metodo close del objeto socket, este metodos finaliza la conexión del socket con el servidor.


          sock.close()



script servidor:
1.-  #!/usr/bin/python
2.-  import socket
3.-  
4.-  sock = socket.socket()
5.-  sock.bind((“localhost”, 5000))
6.-  sock.listen(1)
7.-  
8.-  source, adreess = sock.accept()
9.-  
10.- while True:
11.-           datos = source.recv(1024)
12.-          if datos == “exit”:
13.-                     break
14.-          print “Se recibio:”, datos
15.-          source.send(datos)
16.- print “Bye”
17.- source.close()
18.- sock.close()


En la linea 1 colocamos el shebang para el interprete de python en gnu/linux:

          #!/usr/bin/python

En la linea 2 se encuentra la importacion del modulo socket, para el manejo de sockers en python
          import socket

En la linea 4 se encuentra la instanciacion del objeto socket en la variable sock

          sock = socket.socket()

En la linea 5 especificamos mediante una tupla el cliente que tendra acceso al servidor y el puerto por el cual el servidor se mantendra a la escucha a espera de el cliente, si en dado caso queremos que cualquier cliente se pueda conectar dejamos el primer campo vacio entre comillas pero en este caso especificaremos al localhost como el unico que puede conectarse al servidor , ademas de eso especificamos que escucharemos a los clientes en el puerto 5000.

          sock.bind((“localhost”, 5000))

En la linea 6 especificamos cuantos clientes aceptara el servidor, mediante la sentencia listen, en este caso solo aceptamoas un solo cliente.

          sock.listen(1)

En la linea 8 aceptamos la conexión entrante del cliente.

          source, adreess = sock.accept()

En la linea 10 iniciamos un bucle infinito mediante la sentencia while y el valor booleano True con el fin de poder repetir indefinidamente las sentencias siguientes.

          while True:

En la linea 11 inicializamos la variable datos con los datos provenientes del cliente, que en este caso es el valor de la variable mensaje en el script del cliente socket

          datos = source.recv(1024)

En la linea 12 y 13 especificamos una condicion if que verifica que el dato recibido sea igual a “exit”, en dado caso de que sea igual a exit, ejecuta la sentencia break y termina el bucle infinito.

          if datos == “exit”:
                    break

En la linea 14 mandamos a imprimir en pantalla el mensaje “Se recibio: ” seguido del dato proveniente de la comunicación con el clientes

          print “Se recibio:”, datos

En la linea 15 se envia el valor de la variable datos al cliente conectado al servidor.

          source.send(datos)

En la linea 16 ya fuera del bucle infinito se imprime en pantalla el mensaje Bye indicando que se concluira el script.

          print “Bye”

En la linea 17 y 18 indicamos el cierre de la conexión con el cliente conectado al servidor y el cierre de servidor creado.

          source.close()
          sock.close()


con eso concluye esta nueva entrada, creo que aplazar una entrada por dos semanas en contraproducente asi que cada semana lanzare una nueva, en esta ocacion el tiempo y la falta de microfono no ayudo en realizar un videotutorial de este tema, pero espero que la proxima entrada pueda lanzar junto con su version escrita una version en video, ademas de esto la encuenta para el proximo tema en abordar quedo en un triple empate por eso, omitire para la proxima un tema de programacion y tomare como el siguiente tema, los sistemas operativos.

viernes, 14 de febrero de 2014

Reparando el Kernel Panic Volume group "VolGroup00" not found en Centos 5


En esta ocacion explicare como solucionar este error que me llevo 1 dia y medio resolver, me atormento por un buen rato pero al final lo pude vencer.

bueno al grano, si estas viendo esta entrada de seguro tienes este mismo problema y te sale en el post este mismo error que muestro a bajo:

Scanning logical volumes
No volume groups found
Activating logical volumes
Volume group "VolGroup00" not found
Trying to resume from /dev/VolGroup00/LogVol01
Unable to access resume device /dev/VolGroup00/LogVol01
Creating root device
Mounting root filesystem
mount: could not find the system "/dev/root/"
Setting up other filesystems
Setting up new root fs
setuproot: moving /dev/failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel Panic - not syncing: attempted to kill init


todo esto se debe a que el nucleo de linux no reconoce las particiones del disco duro, en este caso el /dev/VolGroup00/LogVol00 y /dev/VolGroup00/LogVol01

la manera con que pude resolver este dilema es mediante un enjaulamiento de sistema, para eso necesitamos una ditribucion de linux, yo use lubuntu para esta tarea ya que tiene livecd, pero cualquier distribucion de gnu/linux con livecd funciona.

ok, iniciamos nuestro ordenador con nuestro livecd, accedemos a una terminal y montamos todo lo necesario, a bajo mostrare los comandos.

$sudo mount /dev/VolGroup00/LogVol00  /mnt
$sudo mount /dev/sda1  /mnt/boot
$sudo mount  --bind  /dev  /mnt/dev
$sudo mount  --bind  /dev/pts  /mnt/dev/pts
$sudo mount  --bind  /proc  /mnt/proc
$sudo mount  --bind  /sys  /mnt/sys

ahora que hemos montado todo esto, es hora de realizar el enjaulamiento con el comando chroot, e aqui el ejemplo:

$sudo chroot /mnt

ok, en este momento ya estamos dentro de nuestro CentOS 5 en el cual no teniamos acceso, por culpa del kernel panic, ahora es hora de hacer la magia para que todo funcione.

Ahora debemos averiguar que modulos esta usando el livecd para que funcione nuestro disco duro, en mi caso fue el ahci, esto lo puedes averiguar con el comando lspci y lsmod.

ok, una vez sabiendo que modulos  son para nuestro equipo es hora de modificar el archivo modprobe.conf asi que lo modificamos con nuetro editor de texto favorito, yo usare nano.

#nano /etc/modprobe.conf

y renombramos los drivers que corresponden a nuestro ordenador, en mi caso asi quedo.

alias eth0 tg3
alias scsi_hostadapter ahci

una vez hecho esto guardamos, cerramos y nos dirigimos a la carpeta de boot de esta forma.

#cd /boot

lo que haremos sera recontruir el initrd para que reconozca nuestro nuevo hardware que es el motivo por el cual linux nos lanza el kernel panic.

Pero antes tenemos que hacer una copia de nuestro initrd por si las dudas.

#mv initrd-2.6.18-238.9.1.el5PAE.img initrd.backup

Una vez ya hecho una copia procedemos a realizar la recontruccion del initrd.

#mkinitrd initrd-2.6.18-238.9.1.el5PAE.img   2.6.18-238.9.1.el5PAE

ya finalizada la reconstruccion, nos salimos del modo enjaulamiento con un exit

#exit

y ya solo queda reiniciar el equipo y acceder con el kernel que reparamos.

$sudo reboot

Nota: este error surgio por una clonacion de un servidor que maneja raid y al pasarlo a sata, centos no tenia idea de como levantar las particiones LVM ya que no tenia los drivers necesarios para poder reconocer el disco duro.


espero que le sirva a alguna persona que tenga el mismo problema que yo tuve :)

lunes, 27 de enero de 2014

Reparando disco duro dañado con Gnu/Linux







En esta ocasión explicare algunos comando de Linux que nos permite reparar los sectores dañados de un disco duro.

Badblocks

badblocks es un comando que nos permite reparar sectores de nuestro disco duro ya que analiza el disco y sobre escribe los sectores en caso de que estén dañados por una mala escritura de los datos en el, existen dos formas de usarlo que ahora explicare.

la primera forma de usarlo es la que recomiendo, esta borra todo el contenido del disco duro y repara completa mente el disco. 

ahora supongamos que nuestro disco a reparar se llama sdc, entonces realizaríamos algo similar a esto.

#badblocks -s -v -w /dev/sdc

donde:

-s    nos muestra el proceso de escaneo del disco.

-v    es la verbosidad del programa, nos muestra información del proceso.

-w   realiza la reparación de los sectores dañados.


ahora explicare como realizar el mismo proceso pero sin perder los datos que vendría siendo la segunda forma.

#badblocks -s -v -n -f /dev/sdc

donde:

-s    nos muestra el proceso de escaneo del disco.

-v    es la verbosidad del programa, nos muestra información del proceso.

-n    nos coloca en modo no destructivo  con el fin de no perder nuestros datos a la hora de repara los sectores.

-f    nos permite reparar los sectores dañados, a diferencia de -w, -f es usado para el modo no destructivo, con el fin de recuperar y reparar la información del sector dañado.


Fsck

fsck te permite reparar una partición si así lo deseas en lugar de todo el disco duro.

ahora supongamos que tenemos la partición sdc1 la cual tenemos problemas por sectores defectuosos, entonces usaríamos el comando siguiente para realizar esta reparación.

#fsck -c -v -y  /dev/sdc1

donde:

-c    comprueba los bloques en el disco.

-v    despliega información del proceso.

-y    asume yes de respuesta.


bueno con esto concluyo una nueva entrada, ojala le sirva a alguna persona esta información.


martes, 12 de noviembre de 2013

Crackeando redes wifi con cifrado wep



En esta ocacion explicare como podemos apropiarnos de una clave wifi con cifrado wep

para realizar el crackeo o mejor dicho auditoria a redes wifi necesitamos, una tarjeta wifi con soporte en modo monitor o modo promiscuo, anteriormente era toda una odisea conseguir una, pero actualmente la mayoria de los portatiles modernos ya tienen una nic inalambrica con soporte modo monitor.

supongamos que nuestra nic inalambrica es la wlan0, para poder colocarla en modo monitor tendremos que usar el comando airmon-ng que viene en la suite aircrack-ng, en cuyo caso de que no se tenga instalada procedemos a instalarla de esta manera.
#aptitude install aircrack-ng -y
con el anterior comando le indicamos que realize la instalacion de aircrack-ng.

una vez finalizada la instalacion de aircrack, ahora si procedemos a activar el modo monitor de nuestra tarjeta wifi, con el siguiente comando.
#airmon-ng start wlan0
esto nos dara como resultado una nueva interfaz de red la cual por defecto mayormente es mon0.



seguidamente ejecutaremos el siguiente comando, para poder observar las redes wifi, en cuyo caso que nos topemos con una con cifrado wep.

#airodump-ng mon0
Como podemos observar en la imagen nos hemos topado con una red wifi con cifrado wep.


Ya que como es un tutorial no se crackeara una cuenta verdadera por ello he ocultado la informacion de las rede inamabricas.

Una vez descubierta la red inalambrica con cifrado wep, procederemos a recolectar informacion, para este proceso necesitamos el ESSID que en este caso seria XXXX en aplicaciones reales vendria siendo en nombre de la red.

ademas de eso necesitamos la direccion mac de la red inalambrica en este caso la direccion mac del punto de acceso.

Para esta practica seria la 10:20:30:40:50:60 y para terminar necesitamos el canal por donde transmite la red en este caso es el canal 1


ya que sabemos todo esto ahora si ejecutaremos el siguiente comando que nos pondra en la escucha de los paquetes DATA los cuales necesitaremos una vez alcanzado los 10mil o 15mil DATA para decifrar la clave.
#airodump-ng -c 1 -w capturandodata --bssid 10:20:30:40:50:60 mon0
ahora abriremos otra consola con la cual realizaremos una asociancion a la red wifi para comprobar la conectividad de la red wifi con nuestra nic inalambrica

#aireplay-ng -1 0 -a 10:20:30:40:50:60 -h 00:11:22:33:44:55 -e XXXX mon0

donde
-1 indica el tipo de accion que realizara de nivel 0
-a representa la direccion mac del punto de acceso
-h representa la direccion mac de nuestra nic inalambrica
-e representa el ESSID de la red a atacar
mon0 la interfaz de red en modo monitor.
Una vez que nos hemos asociado satisfactoriamente, es hora de inyectar trafico de esta forma

#aireplay-ng -3 -b 10:20:30:40:50:60 -h 00:11:22:33:44:55 mon0
lo que lograremos al inyectar trafico es que los paquetes DATA aumenten con lo que en poco tiempo llegaremos a los 10mil DATa para poder decifrar la clave.
Una vez que hemos conseguido como minimo 10mil paquetes DATA abrimos una nueva consola y tipeamos el siguiente comando con el fin de que empieze a decirfrar la clave, hay que recordar que debemos estar en la misma direccion donde se creo el archivo caprutardata-01.cap

#aircrack-ng capturandodata-01.cap
al finalizar nos revelara la clave con lo que podremos acceder a la cuenta ahora solo falta desactivar el modo monitor de esta forma

#airmon-ng stop wlan0 && airmon-ng stop mon0

y con esto he finalizado una nueva entrada.

martes, 5 de noviembre de 2013

Instalacion de Obkey el GUI para los atajos en LXDE



En esta ocacion y antes de irme a la universidad les quiero compartir esta excelente aplicacion, si te fastidia estar peleando con LXDe a la hora de crearle atajos de teclado la solucion a esto es Obkey, una GUI que nos permite crear atajos de teclado, en mi caso siempre la uso para crear un atajo de teclado a la terminal de esta forma puedo abrir una terminal solo presionando una combinacion de teclas.

bueno empezemos, obkey lo podemos descargar de aqui

https://code.google.com/p/obkey/downloads/list

una vez descargado procedemos a descomprimir el archivo, de esta forma

$tar -zxvf obkey*

una vez descomprimido a mover la capeta a la direccion /opt de esta forma

#mv obkey* /opt

borramos el tar.gz

#rm obkey*tar.gz

ahora solo crearemos un link simbolico para poder tenero acceso al programa desde cualquier lugar.

#ln -s /opt/obkey*/obkey /usr/bin

con esto podemos ejecutar obkey desde cualquier parte de nuestro directorio dentro de la terminal ahora para mandarlo a llamar y poder crear un link simbolico ejecutaremos el siguiente comando

$obkey  /home/USUARIO/.config/openbox/lxde-rc.xml

donde USUARIO es el usuario de tu cuenta.

de esta forma hemos instalado obkey




el uso de obkey es intuitivo, primero le damos clic donde dice la imagen






esto nos crea un nuevo Key




le damos clic al key creado con anterioridad y le especificamos la combinacion te teclas que queremos





ahora le damos clic a la cruz verde y luego seleccionamos la accion en este caso yo escogi la accion Execute





ahora solo colocamos el comando que queremos que ejecute en el campo command yo e colocado lxterminal ya que quiero que se ejecute la terminal al momento de presionar la combinacion de teclas escogida,  seguidamente damos en la imagen del disquette para guardar los cambios y con eso hemos finalizado ya podremos usar nuestro atajo de teclado.






de est form concluimos.

CactiInstaller



En esta ocacion les traigo un programa, mas bien un script que hice ya hace un tiempo y se los comparto a ustedes, este script permite la instalacion de Cacti en nuestro servidor, desafortunadamente se me perdio la version mas nueva de este script desarrollado por mi, la cual tenia soporte para varias distros de linux, con el tiempo mejorare este script.

les dejo el script, este se encuentra en mi github

https://github.com/jopc/CactiInstaller

Proyecto de RF



En esta ocacion les traigo material de un proyecto que hice el cuatrimestre pasado, es un receptor y transmisor de radiofrecuencia usando el microcontrolador 16f84a a bajo dejare el link de descarga,

Saludos.

https://drive.google.com/file/d/0B-nRkg4FrlcBZDFyOWNQdW1ZU2s/edit?usp=sharing

Eliminando nuestro antiguo nucleo Linux en Debian



En esta nueva entrada explicare el procedimiento de como podemos eliminar el nucleo de linux el cual no utilizamos, para eso solo necesitamos ejecutar un par de comandos que nos ayudaran en este procedimiento.

#dpkg -l | grep linux-image

el anterior comando nos permite saber que nucleos de linux tenemos instalado lo cual nos servira para desinstalar el nucleo que no estamos usando.

seguidamente ejecutamos el comando para eliminarlo
donde linux-image-x.x.x-x representa el nucleo que queremos eliminar.

#aptitude install remove linux-image-x.x.x-x

#aptitude install purge linux-image-x.x.x-x

con esto hemos finalizado esta entrada.
 

lunes, 4 de noviembre de 2013

Reseteando la contraseña de root en Gnu/Linux




En esta ocacion explicare como nosotros podemos resetear la contraseña de Gnu/Linux, el proceso es muy sencillo es similar al metodo de recuperacion de Grub2 el cual publique hace apenas unas horas.

bueno para poder realizar esto necesitamos un Livecd o un LiveUSB lo que ustedes prefieran.

bueno manos a la obra, el proceso es sencillo.

Iniciamos nuestro LiveCD en este caso un ubuntu LST o un SLAX en el caso de los que quieran usar un LiveUSB, y montamos la unidad donde se encuentra la direccion raiz, suponiendo que este es nuestro particionado


sda1          /boot
sda2          swap
sda3          /


sda3 vendria siendo la particion donde se encuentra el direoctorio raiz

asi seria el comando

$sudo mount /dev/sda3 /mnt


una vez montado en la direccion /mnt

procedemos a montar la unidad de boot de esta manera

$sudo mount /dev/sda1 /mnt/boot


una vez hecho esto procedemos a realizar el enjaulamiento de esta forma

$sudo chroot /mnt

de esta forma podemos tener acceso a la particion, ya aqui solo ejecutamos el comando

#passwd

el anterior comando nos permitira cambiar la contraseña de root, ahora solo colocamos la nueva contraseña y de esta forma tan sencilla hemos cambiado la contraseña de Gnu/Linux.

ahora solo nos falta salir con el comando "exit" y reiniciar nuestro equipo y con esto  hemos finalizado este pequeño tutorial.

PD: para los usuarios de SLAX recordar que no es necesario usar sudo, con que solo se logeen como root con el comando "su" pueden ejecutar estos comandos sin necesidad de anteponer sudo.

Recuperando nuestro Grub2



En esta ocacion les traigo un pequeño manual en donde explicare como reparar nuestro grub2 al tener una falla con el, para ello necesitamos un livecd de Gnu/Linux, yo use Ubuntu LTS para realizar hace un tiempo una recuperacion de mi grub2 asi que pueden escoger ese o el que quieran.

una vez arrancado nuestro Livecd procedemos a abrir una terminal con lo cual revisaremos en que particion se encuentra nuestro sistema

en este caso se tomara como ejemplo este juego de particiones, pero puede usar el comando "fdisk -l" para ver su particionado.

sda1          /boot
sda2          swap
sda3          /


dado que sda es nuestro disco duro, sda1 nuestra direccion boot y sda3 nuestro directorio raiz, procederemos de esta forma

montamos nuestro directorio raiz que en el particionado le corresponde al sda3 en la direccion /mnt

$sudo mount /dev/sda3 /mnt



montamos nuestro directorio /boot que en el particionado le corresponde al sda1 en la direccion /mnt/boot

$sudo mount /dev/sda1 /mnt/boot

montamos la direcion de nuestro /dev en la direccion /mnt/dev
$sudo mount --bind /dev /mnt/dev

montamos la direccion /dev/pts en la direccion /mnt/dev/pts

$sudo mount --bind /dev/pts /mnt/dev/pts

montamos la direccion /proc en la direccion /mnt/proc

$sudo mount --bind /proc /mnt/proc

montamos la direccion /sys en la direccion /mnt/sys

$sudo mount --bind /sys mnt/sys


todo esto es para preparar el sistema antes de realizar el enjaulamiento el cual necesitamos todo esto ya que trabajaremos con grub2.

seguidamente seguimos con este comando

$sudo chroot /mnt

el comando anterior permite realizar el enjaulamiento esto nos permite acceder a la unidad que hemos montado con permisos de root y poder realizar instalaciones asi como recuperar el sistema.


ahora ya que estamos dentro de nuestro sistema procedemos a recuperar grub.



el siguiente comando actualizara y corroborara los puntos de booteo del sistema, es decir en este paso reconocera que sistema operativo tienes instalado en tu equipo, para que sea agregado al grub

#grub-mkconfig -o /boot/grub/grub.cfg


seguidamente se realiza la instalacion del grub en el MBR que es donde apuntamos al MBR de nuestro disco duro en este caso sda

#grub-install --recheck /dev/sda


una vez terminado todo esto ya podemos salir de la terminal con "exit"
y procedemos a reiniciar el equipo en este punto ya tendremos nuestro grub2 reinstalado y funcionando.