
Plugin para Wireshark para dissecar o protocolo Telegram
Este é um dissecador do Wireshark que ajuda a entender o tráfego Telegram ao seu redor.
Ele disseca os pacotes Telegram que vê de acordo com o Protocolo MTProto 2.0.
Para instalar este dissecador:
luarocks (para a versão Lua do seu Wireshark)luagcrypt.dll pré-compiladoluagcrypt.dll/luagcrypt.so correspondente para o diretório de instalação do Wireshark, por exemplo C:\Program Files\Wiresharkmtproto para o diretório de plugins do Wireshark, por exemplo C:\Users\<username>\AppData\Roaming\Wireshark\pluginsApós a instalação, você pode simplesmente abrir o Wireshark com algum tráfego Telegram.
IMPORTANTE: Para que a desofuscação funcione, toda a conversa TCP deve ser conhecida desde o início (conforme as especificações do MTProto), portanto é recomendado abrir o aplicativo Telegram após o início da gravação dos pacotes.
Para descriptografar o tráfego, você precisará ter a Chave de Autorização (auth_key) correspondente.
Versões recentes de clientes oficiais do Telegram usam Perfect Forward Secrecy para chats na nuvem, chamando auth.bindTempAuthKey na inicialização e/ou regularmente. Isso significa que as sessões principais usarão chaves de autenticação temporárias (estabelecidas usando DH) em vez de permanentes.
Para extrair as chaves de autenticação usadas em tempo real, são fornecidos dois scripts frida que hookam os processos do Telegram. Para usá-los, certifique-se de ter o Frida instalado e execute:
hook_windows_auth_key.py para o aplicativo Windows oficial (com algumas alterações provavelmente funcionaria também no Linux/Mac)hook_android_auth_key.py para o aplicativo Android oficialAs chaves de autenticação e IDs de chave de autenticação devem ser impressos assim que alguma comunicação de rede for realizada.
Depois de obter suas chaves de autenticação, para alimentar o dissecador com elas, vá em Editar --> Preferências --> Protocolos --> MTProto e preencha as chaves de autenticação.
Você também pode extrair a chave de autenticação permanente do arquivo tgnet.dat (Android - veja por exemplo aqui, aqui, aqui) ou do arquivo key_datas (Desktop - veja aqui, aqui). Outros clientes provavelmente armazenam o auth_key de forma diferente.
Às vezes, o Telegram atualiza a versão do esquema da API em seus clientes (ou talvez você esteja olhando tráfego de clientes mais antigos). Quando isso acontece, é possível que o esquema TL desta ferramenta esteja dessincronizado com algumas das chamadas RPC que você vê em seus pacotes, gerando mensagens de Análise incompleta no Wireshark. Você pode ver qual nível de API seu aplicativo está usando na sua solicitação invokeWithLayer.
Para sincronizar o dissecador com o esquema de API correto, você precisará baixar o arquivo TL da camada do Telegram, convertê-lo para JSON (veja abaixo) e salvá-lo em mtproto/schema/api_tl_schema_layer_X.json, onde X é o número da sua camada.
Você pode obter o esquema TL da API atualizado do api.tl do aplicativo desktop, ou procurar no site do Telegram por mais versões.
Para converter o arquivo tl para JSON, execute, por exemplo (certifique-se de ter npm instalado)
C:\path\to\MTproto Dissector>
npx @psqq/tl-to-json api_layer_218.tl mtproto/schema/api_tl_schema_layer_218.json default --indent 4
Em seguida, copie o novo arquivo json para mtproto/schema/ no diretório de plugins do Wireshark.
Por fim, no Wireshark vá em Editar --> Preferências --> Protocolos --> MTPROTO e altere "Nível da API" para o nível que corresponde ao seu tráfego.