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 Vantagens João Neves Pág. 1
Topologia 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 João Neves Pág. 2
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 João Neves Pág. 3
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 hash da password João Neves Pág. 4
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 Geração da chave de sessão João Neves Pág. 5
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 associado ao parâmetro do comando João Neves Pág. 6
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 João Neves Pág. 7
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 salta para uma página de memória aleatória João Neves Pág. 8
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 TCP João Neves Pág. 9
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 Pacote TCP de inicialização Skype - TCP primeiros 4 byte = seed 10 byte seguintes = string de inicialização cifrada {00,01,00,00,00,00,00,00,01,03,...}rc4_stream João Neves Pág. 10
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 João Neves Pág. 11
Vantagens no Skype Travessia de NAT/Firewall Qualidade das chamadas Voz Privacidade Arquitetura de rede descentralização escalabilidade robustez Referê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 João Neves Pág. 12