Whonix es una distribución basada en Debian que esta diseñada para correr en maquinas virtuales. Por tanto es posible utilizarla en Windows, Mac y LInux.
Esta basada en la navegación a través de la Red Tor y del uso de aplicaciones para pasar inadvertidos en la red.
Para los que buscáis una distro para hacking, texting de seguridad, esta no es de ese tipo, solo se limita a pasar inadvertido en la red, que no es poco en estos días
Os dejo un vídeo para que veáis como se instala y como funciona. Cualquier duda no dudeis en dejarme el comentario y os contestare.
Os muestro un vídeo sobre BlackArch Linux, una distro basada en Arch Linux y que esta orientada al la seguridad informática.
Para los usuarios de Arch tenéis la posibilidad de añadir los repositorios de BlackArch y así acceder a todo su software incluso tenemos el repositorio del código fuente en github y podéis compilar las aplicaciones. También se puede instalar en disco o en un USBLIve
Hoy muestro uno de los mejores editores para programar en haskell que he probado.
Es un viejo conocido que recientemente libero Microsorft. Visual Studio Code.
Como soy usuario de Antergos Linux, os mostrare la instalación de este editor y de su extensión para haskell, en distribuciones basadas en Arch Linux.
Os dejo un vídeo para que os animéis a instalarlo, es muy sencillo y rápido. para los que uséis otro lenguaje de programación como Pythom el procedimiento es el mismo.
Para los que tengáis otras distros o S.O. os aconsejo utilizar Visual Studio Code para haskell.
Aprenderemos a automatizar nuestros backups en Arc Linux y derivados, usando tres aplicaciones de software libre.
ClamAV antivirus de libre disposición para limpiar nuestros dispositivo de huéspedes indeseables.
rsync potente herramienta para la transferencia y sincronización de archivos. Admite sincronización mediante ssh para transferencias a host remoto.
cronie (derivado de cron en ArchLinux) que permite programar o automatizar tareas.
A día de hoy, una de las mejores herramientas de seguridad, a mi entender, sigue siendo el BackUp. La copia de seguridad nos permitirá viajar atrás en el tiempo hasta ese momento en que todo era maravilloso. No hacerlo es asumir muchos e indeseables riesgos.
En mi caso y para que os sirva de ejemplo, haremos una copia de seguridad de mis carpeta Programación, donde guardo archivos que no quiero perder, en el primer vídeo también cifraremos el dispositivo usb usando la aplicación que viene por defecto en gnome; gnome-disks, ( en KDE hay una similar, pero si queréis usar la misma os pongo abajo como instalarla)
Que haremos realmente
Pasaré un antivirus sobre la carpeta origen y destino.
Guardare los logs del antivirus en archivos de texto.
En caso de que sean datos sensibles, podríamos cifrar el dispositivo donde alojemos los backups.
Usare un USB externo en el que tendré 3 backups de la misma carpeta (diario, semanal, mensual).
Realizare script de automatización que se ejecutara creando las copias de seguridad (mediante cronie).
Resumen de aplicaciones a instalar (también se puede hacer desde el gestor de paquetes):
Primero actualizar pacman sudo pacman -Syu
ClamAv, Antivirus. sudo pacman -S clamav
rsync sudo pacman -S rsync
cronie, gestor de tareas. sudo pacman -S cronie
Para cifrar almacenamiento externo externo uso el que viene en gnome instalado. sudo pacman -S gnome-disks
CIfrado (opcional)
Si deseamos cifrar seria el primer paso, el cual es dependiente del resto y opcional. (Ver video)
ANTIVIRUS (I)
Instalacion:
Instalaremos ClamAv desde terminal previa actualización de pacman
sudo pacman -Syu
sudo pacman -S clamav
para actualizar la base de datos del antivirus si no lo automatizamos:
sudo freshclam
Automatización del las actualizaciones del Antivirus ClamAV
Para que se actualice ell antivirus cada vez que iniciemos el sistema. Equivale a hacer sudo freshclamen en cada inicio.
sudo systemctl start clamav-freshclam.service
sudo systemctl enable clamav-freshclam.service
Sinraxis y comandos usados.
clamscan -r ORIGEN -l /DESTINOLOG
-r es recursivo escanea también las subcarpetas.
-l crea un archivo de texto con los datos del análisis.
Backup (II)
Instalacion.
Hemos elegido rsync por su velocidad y estabilidad, ademas de estar disponible en multitud de distribuciones y S.O.
sudo pacman -S rsync
Sintaxis y comandos de rsync.
La sintaxis es: rsync [opciones] origen destino
Pongo los comandos más usuales solamente, para ampliar usar rsync –help o mirara la bibliografía.
-a modo archivo, este modo permite copiar archivos de forma recursiva aceptando enlaces simbólicos, permisos, propiedad del usuario y grupo, así como las fechas de acceso.
-v muestra información en pantalla sobre las acciones que se realizan.
-r recursivo, realiza la copia de archivos de forma recursiva dentro de los directorios, pero no copia los permiso, los datos de las fechas de accesos o modificación de los archivos.
-z comprime los datos antes de enviarlos, lo que puede hacer más rápidas las transferencias entre hosts remotos, para rutas locales no proporciona ninguna ventaja usar esta opción.
-P Muestra el progreso de las transferencias.
— delete borra archivos que no estén en el origen.
Scripts (III).
Yo lo guarde como como BackUpDiario.sh, BackUpSemanal.sh y BackUpMensual.sh
El script parece más grade, porque lo he comentado todo, para que lo veáis mas claro. Estas son las instrucciones que lo componen.
Pasamos antivirus al Origen y guardamos el log: clamscan -r /home/nukebull/Programacion/ -l /home/nukebull/Logs/backupDiario.txt
Sincronizamos Archivos: rsync -a –delete /home/nukebull/Programacion/ /run/media/nukebull/401D-1A0E/BackUpDiario/
Pasamos antivirus al Destino y guardamos el log:clamscan -r /run/media/nukebull/401D-1A0E/BackUpDiario/ -l /home/nukebull/Logs/backupDiarioBackUp.txt
se añaden también dos instrucciones echo para ordenar los log del antivirus.
BackUpDiario.sh
#!/bin/bash
#Vicente Parra
#www.nukebull.com
# Pasamos el antivirus a la carpeta origen y guardamos los datos (log y fecha) en un archivo de texto
#escribimos en archivo log la fecha para tenerlo ordenado
echo -e “n Fecha del Backup :n” >> /home/nukebull/Logs/backupDiario.txt
echo `date` >> /home/nukebull/Logs/backupDiario.txt
# Sincronizamos rsync -a –delete carpeta_origen/ carpeta_destino/ -vP ver datos des ploceso y program -delete hace pocias identicas al borrar los archivos distintos en destino
#rsync -avP –delete /home/nukebull/Programacion/ /run/media/nukebull/401D-1A0E/BackUpDiario/
rsync -a –delete /home/nukebull/Programacion/ /run/media/nukebull/401D-1A0E/BackUpDiario/
# Pasamos el antivirus a la carpeta de destino y guardamos los datos (log y fecha) en un archivo de texto
#escribimos en archivo log la fecha para tenerlo ordenado
echo -e “n Fecha del Backup : n” >> /home/nukebull/Logs/backupDiarioBackUp.txt
echo `date` >> /home/nukebull/Logs/backupDiarioBackUp.txt
# Pasamos el antivirus a la carpeta origen y guardamos los datos (log y fecha) en un archivo de texto
#escribimos en archivo log la fecha para tenerlo ordenado
echo -e “n Fecha del Backup :n” >> /home/nukebull/Logs/backupSemanal.txt
echo `date` >> /home/nukebull/Logs/backupSemanal.txt
# Sincronizamos rsync -a carpeta_origen/ carpeta_destino/ // en esta omitimos –delete -v -P
rsync -a /home/nukebull/Programacion/ /run/media/nukebull/401D-1A0E/BackUpSemanal/
# Pasamos el antivirus a la carpeta de destino y guardamos los datos (log y fecha) en un archivo de texto
#escribimos en archivo log la fecha para tenerlo ordenado
echo -e “n Fecha del Backup : n” >> /home/nukebull/Logs/backupSemanalBackUp.txt
echo `date` >> /home/nukebull/Logs/backupSemanalBackUp.txt
# Pasamos el antivirus a la carpeta origen y guardamos los datos (log y fecha) en un archivo de texto
#escribimos en archivo log la fecha para tenerlo ordenado
echo -e “n Fecha del Backup :n” >> /home/nukebull/Logs/backupSemanal.txt
echo `date` >> /home/nukebull/Logs/backupSemanal.txt
# Sincronizamos rsync -rvuc carpeta_origen/ carpeta_destino/ en esta omitimos –delete -v -P
rsync -a /home/nukebull/Programacion/ /run/media/nukebull/401D-1A0E/BackUpSemanal/
# Pasamos el antivirus a la carpeta de destino y guardamos los datos (log y fecha) en un archivo de texto
#escribimos en archivo log la fecha para tenerlo ordenado
echo -e “n Fecha del Backup : n” >> /home/nukebull/Logs/backupSemanalBackUp.txt
echo `date` >> /home/nukebull/Logs/backupSemanalBackUp.txt
Acabo de comenzar mis primeros pasos con este lenguaje de programación, funcional y distinto a otros en sintaxis y conceptos.
Os dejare referencias bibliográficas para los que empezáis como yo, también un video de como descargar e instalar el compilador y el entorno de desarrollo.
En las siguientes entradas y con el fin de practicar Haskel, los script o pequeños programas ya no serán escritos en C++, se escribirán en Haskell.
Instalación.
En mi caso soy usuario de Antergos una distribución basada en Arch Linux y mostrare como podéis instalarlo. Dejare referencias de como instalarlo en otras distribuciones. Así como donde descargarlo para Windows y MacOS.
Es importante para los que empezamos instalar lo mas básico y necesario el compilador ghci y cabal. Posteriormente instalaremos stack que es su entorno de desarrollo y ademas os añadirá muchas librerías.
Para Arch y derivados lo mostrare en el video pero si lo queréis hacer desde el terminal. Con la primera linea instalaremos lo básico para funcionar y con la segunda su entorno de desarrollo.
sudo pacman -S ghc cabal-install happy alex haddock
De entre los anteriores recomiendo es aunque esta en Ingles, es genial para tener los conceptos básicos de este lenguaje funcional. Una vez que asimiles los conceptos mas básicos del lenguaje la curva de aprendizaje baja considerablemente. https://openlibra.com/es/book/happy-learn-haskell-tutorial-vol-1
Si queremos alojar algún archivo en la red, si alguien se lo descarga tendrá un tiempo ilimitado para poder hackear su cifrado.
Si el archivo es de nuestra propiedad, no solo lo podemos proteger con un cifrado estandar aes256 (o similar), sino que para aumentar dramáticamente su nivel de cifrado de forma muy sencilla. Usando estos dos métodos no tendremos nada que envidiar, a los niveles de encriptación militar.
Este método es para archivos privados donde no transmitiremos nuestra clave a nadie, ya que no es necesario.
La fortaleza de este método se basa, en romper una de las leyes del cifrado, una clave una sola solución. En nuestro caso haremos una clave con millones de millones de soluciones y además crearemos una clave, no de 128 bits, no de 256 bits, no de 512 bits sino de varios Kb o Megas. (Por que tu lo vales)
Consideraciones Importantes:
También es aconsejable si el archivo esta expuesto, usar un cifrado simétrico previo, consiguiendo así algo muy, muy desagradable de crackear.
El programa posterior leer archivos de modo binario, por lo que a pesar de ser imágenes en el ejemplo, en la realidad sirve para cualquier tipo de archivos.
Por último, para aumentar la seguridad al absurdo, no se debe usar siempre el mismo archivo de cifrado, han de ser parejasmonogámicas. Quiero decir que cada archivo tendrá su pareja de cifrado única, impidiendo el posterior análisis criptográfico si subimos un numero grande de archivos con el mismo cifrado.
En el ejemplo hay una condición para simplificar el código y que sea más fácil de entender, El archivo de cifrado ha de ser mayor que el que se cifra. Con un par de lineas adicionales esta limitación desaparecería.
En el siguiente vídeo probaré el programa de ejemplo, para la imagen del logo de Antergos y posteriormente con un archivo cifrado mediante aescrypt. El código lo podéis modificar para vuestra conveniencia y recordar cuanto más aleatorio es el archivo de cifrado mas cerca del imposible esta su descifrado.
Ejemplo de cifrado/decifrado con Imágenes.
Ingredientes para la destrucción controlada:
Archivo a cifrar.
Archivo para cifrado de mayor tamaño al anterior.
Programa de cifrado y descifrado.
El ejemplo sera muy sencillo, lo mostraremos para una imagen, que es más visual e intuitivo. Pero lo ideal es cifrar el archivo primero por un cifrado simétrico estándar y luego añadir muestra capa de destrucción controlada.
Archivo Foto.jpg, archivo Original en mi caso usare una de Antergos mi S.O.
Foto.jpg
Archivo para cifrar FotoKey.jpg
FotoKey.png
Programa Cifrado/descifrado.(Al usar XOR es prácticamente lo mismo)
#include<iostream>
#include<fstream>
using namespace std;
// El programa encripta origen mediante cifrado XOR con origen2
// origen 2 debe ser mayor que origen en esta versión
// El resultado se escribirá en destinoint
main(){// Abrimos los ficheros origen y origen2 en modo lectura
// Abrimos destino en modo estritura
// puedes cambiar Foto.jpg , FotoKey.png, CopiaSegura.jpg por los que tu quieras
Para descifrar es el mismo programa cambiando [Foto.jpg por CopiaSegura.jpg ) y (CopiaSegura.jpg por CopiaDescifrada.jpg), FotoKey.png no se altera
#include<iostream>
#include<fstream>
using namespace std;
// El programa encripta origen mediante cifrado XOR con origen2
// origen 2 debe ser mayor que origen en esta versión
// El resultado se escribirá en destino
int main(){
// Abrimos los ficheros origen y origen2 en modo lectura
// Abrimos destino en modo estritura
// puedes cambiar Foto.jpg , FotoKey.png, CopiaSegura.jpg por los que tu quieras
Usar esta segunda capa de cifrado produce una destrucción de los datos del programa, si el original estaba cifrado, reconstruirlo es prácticamente imposible. Para archivos sensibles que estén expuestos es ideal, ya que el criptoanálisis que le pudieran hacer, se lo hacen a un archivo incompleto del que no saben que tipo de cifrado se ha usado o con que programa se ha encriptado.
El código se puede mejorar pidiendo los archivos desde consola, o añadiendo algún tipo de GUI. Pero en lo básico seguirá siendo similar.
Espero que les sirva de ayuda y deja un comentario si deseas alguna aclaración. Gracias
En la entrada vamos a generar claves de forma rápida y sencilla desde la terminal usando las funciones hash (sha256, sha512,sha1, md5). También añadiremos un nuevo comando al bash para automatizar el proceso.
Lo más aconsejable es usar sha512 al ser la de mayor complejidad. Veremos varias formas combinadas con diferentes comandos
Junto con el comando date (lo bueno de esta función es que cambia el valor en el tiempo)
[nukebull@]$ date
jue oct 4 20:02:25 CEST 2018
[nukebull]$ date | sha256sum
07ef00e6a72dc78e7109b93d92d94f71a8ca05ef7f9da1d18904634d5fcdd457 –
[nukebull]$ date | sha512sum
be3a8132ff936b12981c7888dc5a189df3ab1699be2ce19bdcea8e1eede5289c0
41e1d4a8a7efbd2d98679bef961bc7e146565b1bfec8268a167cede03fc2f51 –
[nukebull]$ date | md5sum
cf6c4a3551301c72103b1a29903adb09 –
[nukebull]$ date | sha1sum
976b418e17f5621c264a41323196fa0fa63a0a69 –
Por último os mostrare como se añade al bash si lo utilizáis constantemente. como ejemplo usaré un alias llamado keygen y una de las funciones anteriores basada en date que varia en el tiempo, generando nuevas claves en cada ocasión
Primeramente buscaremos el archivo .bashrc en el directorio principal de nuestro usuario (/home/usuario).
Lo editaremos con nano, vin , emacs, gedit (ejemplo)
[nukebull]$ gedit .bashrc
Añadimos linea alias keygen =”date | sha256sum | sha1sum | sha512sum ”
Cerramos la terminal, para que al volverla a abrir cargue el nuevo comando en la terminal
La esteganografía (del griego στεγανος steganos, “cubierto” u “oculto”, y γραφος graphos, “escritura”) trata el estudio y aplicación de técnicas que permiten ocultar mensajes u objetos, dentro de otros, llamados portadores, de modo que no se perciba su existencia. Es decir, procura ocultar mensajes dentro de otros objetos y de esta forma establecer un canal encubierto de comunicación, de modo que el propio acto de la comunicación pase inadvertido para observadores que tienen acceso a ese canal. (wiki)
El cifrado digital de mensajes tiene una variante que consiste en introducir un mensaje dentro de otro medio para que este pase desapercibido. Se utilizan imágenes, audios y vídeos. Cualquier medio digital es susceptible de portar mensajes.
Descripción del programa
Trabajaremos con Steghide, aplicación para Linux, que desde el terminal nos permitirá ocultar mensajes cifrados en archivos JPEG, BMP, WAV. En nuestro caso usaremos una imagen jpg. El software ha sido desarrollado gracias a la iniciativa de Stefan Hetzl y se aloja en la siguiente dirección: http://steghide.sourceforge.net/index.php
Para saber mas sobre ella nos fijaremos en sus dependencias:
libmhash Contiene los algoritmos tipo hash para generación de contraseñas. y archivos de verificación.
libmcrypt Esta librería contiene algoritmos simétricos comunes como son: aes, twofish,…
libjpeg Nos dará la capacidad de comprimir y descomprimir imágenes.
zlib Libreria para comprimir y descomprimir mensajes.
Además tenemos el manual en Ingles y castellano gracias a la traducción de “Alberto Adrián Schiano” (Muchas gracias por tu gran trabajo) Manual
Como usar steghide
Los ejemplos que mostrare a continuación se realizan sobre la imagen Descanso.jpg, también crearemos un archivo de texto (Mensaje.txt) con el mensaje que deseamos esconder. El programa podéis instalarlo del repositorio de vuestra distro.
Imagen Original
Sin mensaje oculto
Primer comando steghide –encinfo nos muestra todos los algoritmos disponible (heredados de la libreria libmcrypt)
El podcasting o podcast consiste en la distribución de archivos multimedia (normalmente audio o vídeo que suelen ser de larga duración, que pueden incluir texto como subtítulos y notas) mediante un sistema de redifusión (RSS) que permite opcionalmente suscribirse y usar un programa que lo descarga para que el usuario lo escuche. (wikipedia)
Es una alternativa a la radio convencional, sobre todo en temas que comercialmente no atraen a las grandes emisoras. En nuestro caso, el software libre, linux,.. prácticamente no es difundido por emisoras convencionales. Ademas muchos podcast no están sujetos a la censura institucional, espesando conocimientos y opiniones de una forma más libre
Existen muchos programas que nos permitirán automatizar las suscripciones y así poder escuchar a nuestros podcaster favoritos según añadan contenido. A continuación mostraré algunos programas para escuchar podcast. Y en sucesivas entradas haré referencia a alguno de mis podcaster favoritos.
Se instala desde el repositorio de la mayoría de distribuciones. Y te permite bajar los audios a tu pc para escucharlos posteriormente.
Programas para el Teléfono.
Las aplicaciones son similares y muy fáciles de utilizar. Nos permiten gestionar nuestros Podcast/Podcaster favoritos, la segunda y tercera ademas de la versión gratuita tienen una premium con más funciones.
Hoy aplicaremos un tipo de cifrado basado en un operador lógico XOR. Programaremos en C++ y compilaremos desde el terminal.
El operador XOR opera a nivel de bit A ^ A = 1 A ^ B = 0 (A ^ B) ^ B = B
Como ejemplo aplicaremos a la palabra nuke el operador XOR (la contraseña de cifrado que usaremos bull)
Cifrado XOR
En este tipo de cifrado, si se vuelve a cifrar una segunda vez con la misma clave obtengo el mensaje original. Usado de forma aislada como único método de cifrado es muy débil, pero esta incluido en algoritmos más complejos como puede ser AES.
Programa de cifrado usando XOR
Crearemos un archivo llamado XOR.cpp
El programa nos debe pedir la frase de cifrado y la clave.
Debe aplicar el operador XOR bit a bit.
Nos mostrará por pantalla como se va aplicando el operador letra a letra y la frase final cifrada.
Puedes copiarlo y pegarlo con cualquier editor de texto para hacer modificaciones y pruebas
#include <iostream>
#include <string>
using namespace std;int main(){// Variables
int a,b,c;
int i,j;
string frase;
string clave;string res;//Entrada de Datos
cout << “Este programa encripta una frase usando el operador XOR”;
cout << “n”;
cout << “Introduce la frase para encriptarn”;
getline(cin,frase);
cout << “clave:”;
cin >> clave;
res = frase;//Se aplica el operador XOR
for(i = 0; i < frase.length() ; i++){
a = int (frase[i]);
j = i % clave.length();
b = int (clave[j]);
c = a ^ b;
res[i] = char( c );
Compilamos desde el terminal usando; g++ -o XOR XOR.cpp
Y ejeculamos ./XOR
En el ejemplo usaremos como frase para cifrar: nukebull y clave: +-*
Y lo volveremos a aplicar una segunda vez al resultado con la misma clave para probar que obtenemos la frase original.
[nukebull XOR]$ g++ -o XOR XOR.cpp
[nukebull XOR]$ ./XOR
Este programa encripta una frase usando el operador XOR
Introduce una frase para encriptar
nukebull
clave:+-*
n XOR + = E
u XOR - = X
k XOR * = A
e XOR + = N
b XOR - = O
u XOR * = _
l XOR + = G
l XOR - = A
La frase encriptada es:
EXANO_GA
[nukebull XOR]$ ./XOR
Este programa encripta una frase usando el operador XOR
Introduce una frase para encriptar
EXANO_GA
clave:+-*
E XOR + = n
X XOR - = u
A XOR * = k
N XOR + = e
O XOR - = b
_ XOR * = u
G XOR + = l
A XOR - = l
La frase encriptada es:
nukebull
Cualquier consulta estaré encantado de responderos.