Skype
Algumas notas do funcionamento….
Resumo
• Topologia da rede • Funcionamento do Skype ➢ Chamadas ➢ Pesquisa de utilizadores ➢ Travessia de NAT/Firewall ➢ Processo de Login/Sessões ➢ Transporte de dados • Ofuscação no Skype – código – rede • Problemas • VantagensTopologia da rede
• Overlay P2P
➢ Skype Login Server ➢ Super-nós
➢ Nós
➔podem ser promovidos a super nós • (IP publico + Largura de banda + CPU ...)
• Super-nós agrupados em slots
➢ usualmente 9 a 10 nós por slot
• Slots agrupados por blocos
➢ 8 slots por bloco
Funcionamento do skype
• Startup
➢ (1) Liga-se a um Super Nó
➢ (2) Autentica-se no Skype Login Server
• Sinalização através de TCP
• Transporte de dados usando TCP/UDP
• Host cache (HC)
➢ Endereço IP/Porta dos super nós ➢ Refrescada periodicamente
Global Index Search
• Cache de pesquisas
➢ Nós
➢ Super Nós ??
• Pesquisa de um utilizador
➢ Cliente efetua query ao Super Nó (SN)
➔SN devolve localização do utilizador + chave pública ➔SN delega SNs onde cliente poderá obter resposta
Chamadas
• Peers com IP públicos
➢ chamada estabelecida diretamente via TCP
• Caso contrário
➢ Super Nó atua como media proxy
•
Conferência
➢ Super Nó atua como mixer
• Codecs
➢ GIPS wideband codec
➔largura de banda (3kbyte – 16kbyte) ➔suporta frequências entre 50 – 8000 Hz
Travessia de
NAT/Firewall
• Determina presença de NAT/Firewall na fase de login
• Travessia sobre NAT ??
➢ Simple Traversal of UDP through NATs (STUN) ➢ Traversal Using Relay NAT (TURN)
• Firewall
➢ Caso tráfego UDP bloqueado
➔TCP (HTTP/HTTPS)
Fase de Login – Trusted
data
• Dados embebidos no binário
➢13 Módulos RSA embebidos no binário
➔(2) 4096 bit, (9) 2048 bit, (3) 1536 bit
➢IP/Porta
➔servidor de login ➔super nós
• Segredo pré-partilhado entre servidor de login e cliente
Fase de Login - Autenticação
Sessões
• Após autenticação
➢chave pública distribuída para os super-nós (assinada pelo Skype Server)
• Inter-comunicação entre clientes Skype
➢Troca de chaves públicas➢Autenticação assimétrica
➔challenge de 8 byte
Transporte de dados
• Start of Frame (SoF)
➢ Frame ID (2 byte) ➢ Payload Type (1 byte)
➔dados cifrados (enc), fragmento (frag), ACK/NACK, relay
...
• Operações
➢ comandos + lista de objetos (parâmetros)
Transporte de dados
• Lista de objetos
➢pode ser comprimida
• Objetos
➢ tipo
➔Número, porta, string, chave RSA ...
➢ identificador
Ofuscação
• Usada para dificultar➢ análise estática ➢ análise dinâmica
➢ Técnicas
➢ Cifragem do código ➢ Anti-debugging
➔ Code integrity checks, IDT hooking, IAT patching, Anti-SoftIce, mudanças estruturais...
➢ Código polimórfico/metamórfico
➔ dummy code, substituição de instruções, ...
➔ Calculo dinâmico de endereços de “salto” (jmp's e ret's)
Cifragem no Skype
• Binário cifrado ➢ (De)cifragem XOR ➢ Hard coded keys • Unpacker
➢ Decifra secções de código ➢ Reescreve estrutura do binário
➔ Import Address Table ➔ Apaga código já processado
Anti-debugging
• Single Step/ Breakpoints
➢ INT1 (trace flag), INT3 (opcode 0xCC) • Code integrity checks
➢ detetam modificações do código (checksum) ➢ fáceis de contornar (interceptar valor calculado) • Skype com mais de 300 checksumers
➢ polimórficos ( != operadores, dummy code ...) ➢ checksumer aleatório
➢ teste final baseado numa assinatura RSA
Anti-debugging
• Anti-Softice➢ Detecção do driver
• Medições temporais • Contra-medidas
➢ destrói contexto de execução caso detecte debugging ➔ registos alterados
Ofuscação de endereços
• Alteração aleatório do fluxo de execução
➢ induzindo condições falsas (determinadas/indeterminadas)
➔ If (sin(a) == 42) { dummy_code(); } go_on() ... ➢ dificulta depuração
Ofuscação da rede
• Ofuscação de padrões de tráfego
➢ tráfego em períodos de inatividade, relaying, pings ... • (De)Cifragem do tráfego
➢ RC4
• Dois modos de ofuscação ➢ UDP
Skype - UDP
• Cálculo da Chave RC4
➢ CRC de SRC IP, DST IP e Frame ID ➢ Skype obfuscation layer IV
➢ Seed do RC4 gerada pelo Skype (função muito ofuscada)
• IP público do peer ??
➢ Peer NACK
Skype - TCP
• Pacote TCP de inicialização
➢ primeiros 4 byte = seed
➢ 10 byte seguintes = string de inicialização cifrada
Primitivas criptográficas
• Sessão cifrada com AES-256 em modo ICM
➢ Counter = salt1: salt2: packet_index(48bit):block(16bit) ➢ CRC do buffer cifrado
➢ salt's gerados pelos clientes (64 bit)
• Random()
➢ são usados 64 bit mais significativos da hash ➢ efetua um conjunto de syscall's
➢ SHA1 (bits reunidos das syscalls + salt)
Problemas no Skype
• Relay não autenticado
• Facilita “covert channels” (encapotados)
• Falta de transparência
• Incompatível com monitorização de tráfego
• Confia em qualquer sistema que fale Skype
Vantagens no Skype
• Travessia de NAT/Firewall
• Qualidade das chamadas
➢ Voz ➢ Privacidade
• Arquitetura de rede
➢ descentralização ➢ escalabilidade ➢ robustezReferências
• Philippe Biondi, Fabrice Desclaux, “Skype Silver Needle”, BlackHat Europe, 2006
• Salman A. Baset, Henning Schulzrinne, “An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol”, 2004
• Tom Berson, “Skype Security Evaluation”, 2005
• Saika Guha, Neil Daswani, Ravi Jain, “An Experimental Study of the Skype Peer-to-Peer VoIP System”, 2006