Wholeaked es una herramienta de intercambio de archivos que permite encontrar a la persona responsable en caso de fuga. Está escrita en Go.
¿Cómo?
wholeaked obtiene el archivo que se va a compartir y una lista de destinatarios. Crea una firma única para cada destinatario y la añade al archivo en secreto. Después, puede enviar automáticamente los archivos a los destinatarios correspondientes utilizando Sendgrid, AWS SES o integraciones SMTP. En lugar de enviarlos por correo electrónico, también puedes compartirlos manualmente.
wholeaked funciona con cualquier tipo de archivo. Sin embargo, dispone de funciones adicionales para tipos de archivo comunes como PDF, DOCX, MOV, etc.
Proceso de intercambio
+-----------+
|Top Secret |
|.pdf |
| |
-| |
/ | |
/ |Hidden |
a@gov / |signature1 |
/ +-----------+
/ +-----------+
+-----------++-----------+ / |Top Secret |
|Top Secret ||Recipient | / |.pdf |
|.pdf ||List | +---------+ / | |
| || | |utkusen/ | / b@gov | |
| ||a@gov |----->|wholeaked| /----------+ |
| ||b@gov | | | \ |Hidden |
| ||c@gov | +---------+ \ |signature2 |
| || | \ +-----------+
+-----------++-----------+ \ +-----------+
\ |Top Secret |
\ |.pdf |
c@gov \ | |
\ | |
\ | |
\ |Hidden |
-|signature3 |
+-----------+
Parte de validación
Para averiguar quién ha filtrado el documento, basta con proporcionar el archivo filtrado a wholeaked, y éste revelará al responsable comparando las firmas de la base de datos.
+-----------+ +---------+
|Top Secret | |Signature|
|.pdf | +---------+|Database |
| | |utkusen/ || | Document leaked by
| |->|wholeaked|| |--------+
| | | || | b@gov
|Hidden | +---------+| |
|Signature2 | | |
+-----------+ +---------+
Vídeo de Demostración
Tipos de Archivo y Modos de Detección
wholeaked puede añadir la firma única a diferentes secciones de un archivo. A continuación se indican los modos de detección disponibles:
- Hash del archivo: Hash SHA256 del archivo. Se admiten todos los tipos de archivos.
- Binario: La firma se añade directamente al binario. Se admiten casi todos los tipos de archivo.
- Metadatos: La firma se añade a una sección de metadatos de un archivo. Tipos de archivo admitidos: PDF, DOCX, XLSX, PPTX, MOV, JPG, PNG, GIF, EPS, AI, PSD
- Marca de agua: Se inserta una firma invisible en el texto. Sólo se admiten archivos PDF.
Instalación de Wholeaked
Desde el binario
Puedes descargar los binarios preconstruidos desde la página de versiones y ejecutarlos. Por ejemplo
https://github.com/utkusen/wholeaked/releases/latest
unzip wholeaked_0.1.0_macOS_amd64.zip
./wholeaked --help
Desde el código fuente
Instala Go en tu sistema
Ejecuta:
go install github.com/utkusen/wholeaked@latest
Instalación de dependencias
wholeaked requiere exiftool para añadir firmas a la sección de metadatos de los archivos. Si no deseas utilizar esta función, no es necesario que la instales.
- Linux basado en Debian: Ejecute
apt install exiftool
- macOS: Ejecute
brew install exiftool
- Windows: Descarga exiftool desde aquí https://exiftool.org/ y pon exiftool.exe en el mismo directorio que wholeaked.
wholeaked necesita pdftotext para verificar las marcas de agua dentro de los archivos PDF. Si no deseas utilizar esta función, no es necesario que la instales.
- Descarga “Xpdf command line tools” para Linux, macOS o Windows desde aquí: https://www.xpdfreader.com/download.html
- Extrae el archivo y navega hasta la carpeta bin64.
- Copia el ejecutable
pdftotext
(opdftotext.exe
) en la misma carpeta con todoaked - Para Linux basado en Debian: Ejecuta el comando
apt install libfontconfig
.
Utilización de Wholeaked
Uso básico
wholeaked requiere un nombre de proyecto -n, la ruta del archivo base que añadirán las firmas -f
y una lista de destinatarios -t
Ejemplo de comando:
./wholeaked -n proyecto_prueba -f secreto.pdf -t destinatarios.txt
El archivo destinatarios.txt
debe contener el nombre y la dirección de correo electrónico en el siguiente formato:
Utku Sen,utku@utkusen.com
Bill Gates,bill@microsoft.com
Una vez finalizada la ejecución, se generarán los siguientes archivos únicos:
test_project/files/Utku_Sen/secreto.pdf
test_project/files/Bill_Gates/secreto.pdf
Por defecto, wholeaked añade firmas a todos los lugares disponibles que se definen en la sección “Tipos de archivo y modos de detección”. Si no deseas utilizar un método, puedes definirlo con una bandera false
. Por ejemplo:
./wholeaked -n test_project -f secret.pdf -t targets.txt -binary=false -metadata=false -watermark=false
Envío de correos electrónicos
Para enviar correos electrónicos, es necesario rellenar algunas secciones en el archivo CONFIG
.
Si deseas enviar e-mails a través de Sendgrid, introduce tu clave API en la sección SENDGRID_API_KEY
.
Si quieres enviar e-mails a través de la integración AWS SES, necesitas instalar awscli
en tu máquina y añadir la clave AWS requerida. wholeaked leerá la clave por sí mismo. Pero tienes que rellenar la sección AWS_REGION
en el archivo de configuración.
Si deseas enviar correos electrónicos a través de un servidor SMTP, rellena las secciones SMTP_SERVER
, SMTP_PORT
, SMTP_USERNAME
, SMTP_PASSWORD
.
Los otros campos necesarios a rellenar:
- EMAIL_TEMPLATE_PATH: Ruta del cuerpo del correo electrónico. Puedes especificar el uso de HTML o text.
- EMAIL_CONTENT_TYPE: Puede ser html o texto
- EMAIL_SUBJECT: Asunto del e-mail
- FROM_NAME: Nombre del remitente del mensaje
- FROM_EMAIL: Correo electrónico del remitente
Para especificar el método de envío, puedes utilizar las opciones -sendgrid
, -ses
o -smtp
. Por ejemplo:
./wholeaked -n proyecto_prueba -f secreto.pdf -t destinatarios.txt -sendgrid
Validación de un archivo filtrado
Puedes utilizar el indicador -validate para revelar el propietario de un archivo filtrado. wholeaked comparará las firmas detectadas en el archivo y la base de datos ubicada en la carpeta del proyecto. Ejemplo:
./wholeaked -n proyecto_prueba -f secreto.pdf -validate
https://github.com/utkusen/wholeaked