Etiquetagnu/linux

[PoC] Cifrado del historial de bash (.bash_history)

El otro día, en mis momentos de ocio, se me ocurrio buscar una forma de cifrar el historial de comandos que guarda bash. Hay servidores que sólo tenemos -o hemos ganado- acceso como usuarios, y no nos gusta que el administrador (root) vea lo que hacemos o los comandos que hemos ejecutado. Existen varias formas de ir contra eso, por ejemplo eliminar el bash_history o bien editarlo cada vez que hacemos algo que no queremos que sepan. Esta forma es un poco mas rebuscada y busca cifrar mediante GPG el historial, de manera tal que el root no podrá leer lo que dice el archivo.

La logica es bastante simple:

  1. Cuando ingresamos (login) a nuestra cuenta desciframos el bash history usando nuestra clave privada
  2. Cuando salimos (logout) ciframos el archivo con nuestra clave publica.

Para lograrlo vamos a necesitar tener una clave gpg y configurar el comportamiento del login y logout con unos scripts que les mostraré a continuación.

Seguir leyendo

Tethering con un BlackBerry 8520 en Archlinux via bluetooth

Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte “Dial Up“.
Debemos tener instaladas las herramientas de bluetooth: bluez-utils bluez-libs dbus wvdial

Primero, debemos poner el bluetooth del teléfono en modo escucha y escanearlo con nuestro disponisitivo, para ver si soporte el modo.

[root@balcebu zerial]# hcitool scan
Scanning ...
F4:0B:93:DB:90:FF BlackBerry 8520
[root@balcebu zerial]#

Y vemos si soporta el modo Dial Up

root@balcebu zerial]# sdptool browse F4:0B:93:DB:90:FF
Browsing F4:0B:93:DB:90:FF ...
[...]
Service Name: Dialup Networking
Service RecHandle: 0x10000
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
[...]

En este caso soporta, en el canal 1.

Seguir leyendo

[Tip] AND (&&) y OR (||) en bash

Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos && y || al momento de crear scripts o ejecutar comandos en bash.
Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si no se ejecuta el primero entonces ejecuto el segundo, dependiendo de lo que necesitemos.
Ejemplos:

Ejecutar el comando2 solo si se ejecuta el comando1:
$ comando1 && comando2

Ejecutar el comando2 solo si no se ejecuta el primero
$ comando1 || comando2

Sería así:
[zerial@balcebu ~]$ comando1 || echo "Como comando1 no existe, entonces ejecuto el echo"
bash: comando1: command not found
Como comando1 no existe, entonces ejecuto el echo
[zerial@balcebu ~]$ echo "El primer echo se ejecuta, pero el segnudo no" || echo "Como comando1 no existe, entonces ejecuto el echo"
El primer echo se ejecuta, pero el segnudo no
[zerial@balcebu ~]$

Es muy útil cuando queremos programar scripts para ejecutar tareas condicionadas a otros comandos.

Esteganografía: Ofuscación de archivos (parte 1)

Entendamos como “ofuscación de archivos” el hecho de esconder un archivo dentro de otro. Es posible, usando comandos básicos de Unix, ofuscar un archivo y que pase desapercibido. En esta etapa solo usaremos el comando para concatenar archivos cat.

Teóricamente, lo que haremos será concatenar dos tipos de archivos, en este caso un archivo de imagen junto con un zip o un rar. Si ponemos nuestro fichero comprimido al final de un archivo de imagen, podremos ver la imagen sin problemas y poder debajo tener nuestro archivo ofuscado. Hice algunas pruebas en M$ Windows con distintos antivirus enviando el archivo por correo electrónico y descargandolo, sin que se detectara el archivo ofuscado.

El comando es ultra sencillo, lo único que haremos sera concatenar dos (o más) archivos al final de nuestro fichero de imágen. Tenemos una nuestra imagen “imagen.jpg” y nuestro zip “archivo.zip“:

$ cat imgen.jpg archivo.zip >archivo_ofuscado.jpg

Ahora “archivo_ofuscado.jpg” tiene un tamaño igual a la suma de imagen.jpg con archivo.zip.

Seguir leyendo

[Tip] Limitar el uso de ancho de banda con Trickle

trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode.

Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar “solo” y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones que se corran usando trickle (sin especificar subida ni bajada) correrán con el límite señalado. Por ejemplo, si corremos el demonio con los parametros:

trickled -d 150 -u 20
Establecemos que la velocidad de bajada y subida será de 150 y 20 Kb/s, respectivamente. Desde ahora, todas las aplicaciones corridas con trickle tendran esa configuración, por ejemplo:

trickle axel https://domain.com/download.tbz2
Limitará la bajada a 150kb/s.

Podemos pasarle parametros a trickle directamente, por ejemplo trickle -d 100 -u 100 wget https://domain.com/file.tbz2, de esta forma se limitara a wget solo descargar a 100kb/s.

Aunque wget tiene la opción –limit-rate que nos permite limitar el RATE, y –max-speed que nos permite limitar la máxima velocidad en axel, trickle nos puede servir para limitar el ancho de banda de cualquier aplicación.

Tip: Ver y modificar los parametros de tu tarjeta de red

Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas mii-tool y ethtool, aunque la primera herramienta está obsoleta (deprecated), aún sirve para sistemas con instalaciones antiguas.

mii-tool – view, manipulate media-independent interface status
ethtool – Display or change ethernet card settings

Para modificar la velocidad de transferencia de las tarjetas usamos el siguiente comando:

ethtool eth1 speed 1000 duplex full

Para dejarla a 1Gbps full duplex. Podemos setear la tarjeta a 10, 100 o 1000mbps según su capacidad, tambien decirle si es half o full duplex, activar y desactivar la autonegociación, modiicar el tamaño de los Jumbo Frames, etc.

Para conocer la configuración actual de la tarjeta de red sólo debemos ejecutar ethtool y especificarle el dispositivo: