viernes, 11 de marzo de 2011

Modificar capturas pcap con tcprewrite y un poco de zenity.

La cuestion es la siguiente, tenemos un .pcap entre una maquina X comunicandose con un servidor X. Por razones que no vienen al caso, tenemos que modificarlo para que la ip de la maquina se cambie dentro de la traza. Este seria el script para hacerlo incluso bonito:

#!/bin/bash
FILE=`zenity --file-selection --title="SELECCIONA LA CAPTURA ORIGINAL"`
wireshark "$FILE" & sleep 5
ORIG=`zenity --entry --title="IP ORIGINAL" --text="Introduce la IP original" --entry-text "10.0.0.0"`
NEW=`zenity --entry --title="IP NUEVA" --text="Introduce la IP nueva" --entry-text "10.10.10.100"`
MOD=$(zenity --file-selection --save --title="SELECCIONA DONDE GUARDARLA" --confirm-overwrite)
tcprewrite --pnat=$ORIG/32:$NEW/32 --infile="$FILE" --outfile="$MOD" --skipbroadcast
killall wireshark
exit


El flujo seria: Nos pide la traza original, nos la abre con el wireshark, nos pide la ip original, nos pide la ip nueva, nos pide donde guardar la nueva traza, modifica el pcap, cierra el wireshark, y chapa.

La cuestión es utilizar la opción de nat que ofrece tcprewrite poniéndole una mascara 32. De esta manera solo cambiara la ip que le digamos.

Sencillo, rápido, bonito, en 527 bytes y 9 lineas de bash. ¿Alguien da mas?

P.d: De momento solo le he encontrado un bug (seguro que tiene otros mil), al sobreescribir la captura elimina paquetes ¿?

domingo, 13 de febrero de 2011

Virtualbox + Phpvirtualbox en opensuse 11.2

Vamos a instalar VirtualBox y su interfaz http phpvirtualbox desde cero. Lo haremos sobre opensuse 11.2.

Empezamos con una instalación limpia y por defecto, actualizaremos e instalaremos los repositorios Packman (must have):

# /etc/zypp/repos.d/
# wget -c http://mirror.geht-schon.de/packman.links2linux.de/suse/11.2/packman.repo

# zypper up


Instalaremos las dependencias que necesitamos:

# zypper in kernel-source kernel-devel kernel-desktop-devel kernel-default-devel apache2 libapache2-mod-php5

Para instalar el Virtualbox tenemos dos opciones, bajar el rpm o instalar el repositorio.

Opcion 1, bajar el paqute:

Bajaremos el Virtualbox de su pagina y lo instalaremos:

# cd /tmp
# wget -c http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0-4.0.2_69518_openSUSE112-1.i586.rpm
# zypper in VirtualBox-4.0-4.0.2_69518_openSUSE112-1.i586.rpm

Opcion 2, instalar el repositorio e instalar el paquete:

# cd /etc/zypp/repos.d/ # wget http://download.virtualbox.org/virtualbox/rpm/opensuse/11.2/virtualbox.repo # zypper up # zypper in virtualbox

Una vez instalado, añadiremos nuestro usuario normal al grupo vboxusers:

# usermod -G vboxusers huskerdu
# id huskerdu


En este ejemplo hemos añadido al usuario "huskerdu" al grupo. El comando id lo utilizaremos para comprobar que lo hemos hecho bien...
Despues bajamos el extension pack y lo instalamos:

# cd /tmp
# wget -c http://download.virtualbox.org/virtualbox/4.0.2/Oracle_VM_VirtualBox_Extension_Pack-4.0.2-69518.vbox-extpack
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.2-69518.vbox-extpack

Ahora bajaremos el phpvirtualbox y lo pondremos en su carpeta correspondiente:

# cd /srv/www/htdocs
# rm -r *
# wget -c http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.0-3.zip
# unzip phpvirtualbox-4.0-3.zip
# cd phpvirtualbox-4.0-3
# mv * ..
# cd ..
# rmdir phpvirtualbox-4.0-3
# rm phpvirtualbox-4.0-3.zip


Reiniciamos el apache:

# service apache2 restart

A partir de este punto ya tendremos phpvirtualbox corriendo si vamos a http://localhost, pero solo veremos un bonito cartel de error:


Vamos a configurarlo un poco... Hacemos copia y editamos el archivo de configuración:

# cp /srv/www/htdocs/config.php-example /srv/www/htdocs/config.php
# nano /srv/www/htdocs/config.php


Cambiamos el usuario y password en el fichero mas o menos así:

/* Username / Password for system user that runs VirtualBox */
var $username = 'huskerdu';
var $password = 'felipe';
var $location = 'http://127.0.0.1:18083/';


VBoxManage setproperty websrvauthlibrary default
VBoxManage setproperty websrvauthlibrary null


To be continued...


miércoles, 9 de febrero de 2011

Creacion de certificados con openssl.

Como crear certificado, key y certificado CA con openssl en 10 minutos y sin despeinarse (casi):

Creamos un certificado de CA o entidad certificadora:



# openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -days 3650 -out cacert.pem


Creamos la key para los certificados:


#
openssl genrsa -des3 -out serv-priv.pem -passout pass:[password] 2048


Generamos una petición con los datos del propietario del certificado:


# openssl req -new -subj "/DC=dominio.com/OU=com/CN=dominio" -key

serv-priv.pem -passin pass:[password] -out petic-certificado-serv.pem


Editamos un fichero que se llame config.txt (por ejemplo) con lo siguiente:


basicConstraints = critical,CA:FALSE

extendedKeyUsage = serverAuth


Y creamos el certificado:


# openssl x509 -CA cacert.pem -CAkey cakey.pem -req -in petic-certificado-serv.pem -days 15 -extfile config.txt -sha1 -CAcreateserial -out servidor-cert.pem


domingo, 6 de febrero de 2011

Host inaccesible desde Vcenter.

A veces ocurre que un host aparece como "disconnected" en el Vcenter, para poder volver a conectar con el, nos vamos al esx y reiniciamos el servicio mgmt-vmware:

# service mgmt-vmware restart

Si se nos queda colgado en el reinicio, entramos por otra consola y buscamos el proceso hostd:

# ps -ef | grep hostd

Buscamos el proceso vmware-watchdog y lo matamos directamente:

# kill -9 [numero de proceso]

Y nos vamos a tomar una caña fresquita...

Edito:

Dejo la caña en la barra y vuelvo al tajo, esto no soluciono mi problema...

Despues de leer varios articulos en la kb de vmware, el problema esta en los keepalive (mas o menos) que el esx lanza al vcenter, y que en mi caso, estos se encuentran en dos redes distintas... El nat en el firewall con una ip virtual no funciono, ya que al volver a reconectar se "pispa" de que le has cambiado el valor y lo machaca. ¿La solucion? aumentar el timeout de los keepalive.
Esto se hace editando (en el vcenter) el archivo:

C:/Documents and Settings/All Users/Application Data/VMware/VMware VirtualCenter/vpxd.cfg

E insertando, en la seccion vpxd esto:


600


El valor a 600 lo he puesto a ojo, ya veremos como se comporta...
Despues reiniciamos el servicio VirtualCenter Service y arreando.

jueves, 3 de febrero de 2011

Shit happens, o como quitar las tarjetas de red residuales.

Cuando virtualizas una maquina o la mueves de un sistema de virtualizacion a otro, se van creando nuevas tarjetas de red dejando las anteriores como rémoras en el sistema (he dicho rémoras?), para eliminarlas:


1. Abrir una línea de comandos ejecutando cmd.exe.
2. Escribir: set devmgr_show_nonpresent_devices=1 y presionar ENTRAR.
3. Abrir el administrador de dispositivos escribiendo en la línea de comandos: DEVMGMT.MSC y pulsar ENTRAR.
4. En el Administrador de dispositivos pulsar en el menú Ver y marcar Mostrar dispositivos ocultos.
5. Expandir el ítem Adaptadores de red.
6. Seleccionar los adaptadores que aparecen en color atenuado, clic con el botón secundario del ratón y Desinstalar.


Siempre y cuando te molesten...

miércoles, 26 de enero de 2011

Encriptar archivos y/o carpetas bajo linux y complicarlo poco a poco.

Pues tienes un ubuntu server 10.10 (todo consola) al cual le tienes que meter una carpeta encriptada en el home de un usuario. ¿Solucion? encfs. Vamos alla...

Instalamos encfs:

sudo apt-get install encfs

Creamos en el home dos carpetas, por ejemplo enc y noenc. El contenido encriptado se guardara en enc y se montara desencriptado en noenc:

mkdir ~/enc ~/noenc

Encriptamos el contenido de la carpeta enc y lo montamos en noenc:

encfs ~/enc ~/noenc

Nos preguntara que nivel de seguridad queremos, si le damos al enter pondra el "por defecto" y nos preguntara el password para la carpeta encriptada.

A partir de este punto ya tenemos la carpeta enc encriptada y su contenido montado en noenc. Si queremos desmontar la carpeta y dejar solo lo encriptado lo hacemos con:

fusermount -u ~/noenc

Y si queremos volver a montarla usariamos otra vez:

encfs ~/enc ~/noenc

¿El problema? Nos pide el pass. Si queremos que se monte tras el login del usuario, por ejemplo, metiendo una linea en el .bashrc tenemos que pasarle el pass a enfs. Hasta donde yo se no se puede pasar el pass como parametro, asi que lei a un tipo habilidoso que creo un programa en C que lo hacia, ya que si existe el parametro --extpass. El codigo del programa llamado, por ejemplo, pass.cc seria:



#include 

int main()
{
//Put your password retreival functions here
std::cout << "my password" <<>
return 0;
//PD: All cout will be interpreted as password.
}


Cambiando "my password" por el password que pusimos antes, y ojo, dejando las comillas.
Una vez creado el codigo lo compilamos con:

g++ pass.cc -o pass

Lo cual nos dara un ejecutable llamado pass que le podremos pasar como parametro al encfs con la sentencia:

encfs ~/enc ~/noenc --extpass=~/pass

Pondria las fuentes, pero ocuparian mas que el post, y tampoco recuerdo todo lo que he leido.

domingo, 23 de enero de 2011

Login, sudo y gksudo con autenticador biometrico en Lenovo (Ouyea!)

De como habilitar el "fingerprint" en Ubuntu con un Lenovo L512:

Añadimos los repositorios y actualizamos:

sudo add-apt-repository ppa:fingerprint/fingerprint-gui
sudo apt-get update

Instalamos los paquetes:

sudo apt-get install fingerprint-gui policykit-1-fingerprint-gui libbsapi

Una vez instalado, hacemos un logout y nos escaneamos las huellas en:

Sistema > Preferencias > Fingerprint GUI

Y a disfrutar de la vida que son dos dias.

Fuente: https://launchpad.net/~fingerprint/+archive/fingerprint-gui