• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Entrevista Exclusiva: Hackeando o iPhone através de SMS

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
por Alan Dang

Recentemente, conversei com o especialista em segurança Charlie Miller da Independent Security Evaluators sobre a vulnerabilidade do iPhone recentemente divulgado que teria permitido que um hacker mal-intencionado assumir o controle de um iPhone através de uma série de mensagens SMS cuidadosamente.

Alan: Obrigado por ter tempo para conversar, Charlie. Por que não começar por dizer-nos um pouco sobre a vulnerabilidade de SMS?



Charlie: O bug do iPhone tem a ver com o telefone dizendo que há uma certa quantidade de dados, e depois não enviá-lo tanto quanto você disse que faria. A função que lê os dados começa a retornar 1 para indicar um erro, mas as outras partes do programa não se verificar esse erro e realmente acho que o -1 é os dados da mensagem. Isso mostra o quão complexo pode ser escrever código seguro, separadamente, cada parte do programa parece estar correta, mas a forma como eles interagem é perigoso!

De qualquer forma, dependendo do que você enviar, diferentes coisas ruins podem acontecer. Em um ponto, você pode obtê-lo para sair porque se trata de atribuir -1 bytes (que é visto como 0xffffffff - um número muito grande). Esta é uma negação de serviço que vai bater o telefone fora da rede temporariamente.

Durante minha palestra BlackHat, mantivemos o envio desta mensagem de negação de serviço a cada 10 segundos a um voluntário da platéia para mantê-lo fora da rede. Como uma conseqüência infeliz, as mensagens foram ficando cued em cima da rede e seu telefone ainda estava derrubado horas após a palestra. Ele já chegou de volta a funcionar.

Alan: Nota para os nossos leitores: quando Charlie diz que ele precisa de um voluntário, não fazer contato visual. Então, como você mandou a mensagem? Se você enviar SMS através da interface do iPhone ou outro fazer algo como e-mail, o "número de telefone @ attwireless" abordagem?

Charlie: Para enviar as mensagens SMS através da rede da operadora, tivemos um pequeno aplicativo no nosso iPhone ataque que iria falar com o modem GSM usando comandos AT. Para testar e encontrar os erros, nós usamos esta estrutura de injeção muito legal que o meu co-apresentador Collin Mulliner escreveu, o que permite testar implementações de mensagens SMS por apenas enviar dados sobre TCP. Isso evita que você tenha de enviar dados sobre a rede da operadora e não custa nada, e também permite que você teste várias mensagens muito rapidamente.

Alan: Então como você vai fazer a partir de uma negação de serviço para um full-on explorar?

Charlie: O pior caso tem a ver com a forma como o programa lida com mensagens concatenadas. Esta é uma forma de enviar mais de 140 bytes de cada vez. Você pode enviar uma mensagem longa de uma série de mensagens para o telefone reconstruí-lo em uma seqüência longa. Ele acessa uma matriz baseada em um valor a partir dos dados. No caso em que ele pensa que lê -1, acessa a memória antes da matriz, e não na matriz. Ao definir as coisas apenas para a direita e sendo complicado, você pode realmente aproveitar isso para ganhar o controle total do dispositivo.

O ataque inteiro leva há pouco mais de 500 mensagens, embora a vítima não sabe que eles estão sendo enviados, porque eles não aparecem no telefone. A maioria destas mensagens têm a ver com arrumar as coisas "apenas para a direita." Dezesseis deles realmente acessar o array fora dos limites.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Explicando O Vulnerabilidade

Alan: Então, em essência, você está lentamente transmitir o código de máquina para uma verdadeira aplicação integral de sua própria, só que é feito ao longo de 140 bytes de cada vez?


Charlie: Mais ou menos. Também estou com cuidado arrumar as coisas de modo que a memória é de uma forma previsível. Normalmente, o layout da memória é muito imprevisível. Mas se você fizer as dotações suficientes de um determinado tamanho, você pode começar a introduzir alguma previsibilidade. Esta técnica é algumas vezes chamado feng shui pilha, e é usado para fazer ataques que dependem de certas condições, mais confiável. Por exemplo, eu tenho que fazer o controle de dados certeza que aparece logo antes de essa matriz que eu possa acessar antes do primeiro elemento.


Este ataque é especialmente perigoso para algumas razões. Uma delas é que ele não exige nenhuma interação do usuário. Normalmente, eu faço as explorações do navegador, onde você tem que ter um usuário para ir para um determinado site. Aqui, eu posso atacar o telefone enquanto está no seu bolso ou no carregador ou qualquer outra coisa. A outra coisa que faz realmente mal é o processo que controla as mensagens SMS, CommCenter, é executado como root e não tem restrições. Em comparação, o navegador é executado como o usuário humilde "móvel" e tem uma caixa de areia, que a impede de fazer coisas como bifurcação ou enviar mensagens SMS.


Alan: Então, como você descobriu a vulnerabilidade?


Charlie: Eu achei o erro, enviando milhares de mensagens malformadas SMS para o dispositivo, um processo conhecido como difusão.


Alan: Então, o quadro de injecção permitiu o acesso direto ao CommCenter? Milhares? Foram-lhe o envio de milhares de seqüências aleatórias e controle da produção?


Charlie: Na verdade, o quadro sentei bem entre CommCenter eo modem no dispositivo. O quadro de relés de todas as informações do modem para CommCenter e também pode injetar mensagens SMS também. Desta forma, não havia nenhuma maneira para CommCenter saber se a mensagem tinha realmente vir do modem ou se ele tivesse vindo para nós.


Os dados não foram totalmente aleatórios. O modo como funciona é você ter bons dados, obtidos pela leitura dos dados relacionados ao SMS, e adicionar pequenas anomalias para eles. Assim, a mensagem SMS é todo legítimas, salvo uma pequena parte. Repita esse procedimento para todas as peças pequenas. É preciso um grande esforço para gerar esses tipos de casos de teste.


Alan: Então, uma vez que você identificou a vulnerabilidade, o que levou a movê-lo para a fase de exploração?


Charlie: Como escrever para a façanha, foi extremamente difícil. Estou acostumado a escrever exploits browser, onde você tem um monte de controle no ambiente. Você pode fazer o navegador faça o que quiser usando JavaScript e HTML. Isso permite que o invasor para configurar a memória de forma muito previsível. Aqui, eu era limitado a 140 bytes de mensagens SMS e o processo realizado uma série de ações entre cada mensagem. Levei cerca de 2,5 semanas para começar tudo deu certo, mas foi muito legal quando ela trabalhava.


Alan: 2,5 semanas Wow?. Isso é, essencialmente, nada comparado com o tempo que o iPhone tem sido em torno. Esteve presente no software do iPhone original?


Charlie: O erro provavelmente está aí para sempre. Eu chequei de volta para o iPhone OS 2.2. Essa é a coisa assustadora. Como muitos outros erros como este fazem maus saber? Eu sou um cara inteligente, mas há muita gente tão inteligente e mais esperto do que eu lá fora, que pode encontrar estes tipos de bugs.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Explicando a vulnerabilidade, Continuação

Alan: E sobre as notificações push e correio de voz visual? Não que dependem de SMS?

Charlie: Não tenho certeza sobre as notificações push, embora isso faria sentido. Ele faz uso de SMS para alertar quando o correio de voz novo chega, bem como indicando que o telefone pode pegar os arquivos de som real. Ele também usa SMS como a notificação de mensagens MMS.

Alan: Então, potencialmente, as notificações push ou de chegada de correio de voz novas "cadeias de magia?" Couldn'ta hacker malicioso direto do iPhone para pegar um correio de voz forjada com ficheiros de som em outro lugar?

Charlie: Não é que eles têm seqüências de mágica, mas sim que o SMS é mais do que mensagens de texto. Ele pode ser usado para transferir dados também. Algumas operadoras utilizam para enviar toques e atualizações OTA, por exemplo. Há um byte no cabeçalho dos dados que informa o dispositivo que tipo de dados que é, eo dispositivo sabe como lidar com diferentes tipos de dados. As mensagens concatenadas que falei anteriormente tem este "identificador" byte definido como 00. mensagens de texto normais não têm este mesmo cabeçalho de dados. Outro tipo de dados indica o número de mensagens de voz que estão à espera. Finalmente, um tipo diferente de dados (uma destinada a um SMS particular "porta") informa o telefone onde obter o arquivo de som. Isto explica também porque eu posso enviar 500 mensagens e você não sabe sobre ele. Todos eles são "dados" de mensagens SMS e por isso seu telefone não exibi-los com você desde que não sejam mensagens de texto simples.

Muitas pessoas queriam saber como desativar o SMS quando esse bug saiu. Na maioria dos casos, você não pode desativá-los porque o SMS é uma característica fundamental do telefone, e os portadores contam com ele para grande parte da funcionalidade de quem depende.

Para o teste, eu tentei fazer o iPhone pegar um arquivo de som do meu servidor Web, mas, aparentemente, a AT & T infra-estrutura permitirá apenas que pegar esse arquivo de seus servidores.

Alan: Na sua opinião, a Apple tinha auditado o código de segurança, eles deveriam ter pego o bug?

Charlie: Umm ... erros são difíceis de encontrar, razão pela qual as pessoas pagam-me a olhar para eles. Este bug não era óbvio por qualquer meio, e foi o único que eu encontrei enquanto realizava um esforço de difusão moderada, então eu acho que não posso culpá-los demais.

Alan: Parece que há temas de segurança embora. Programadores são treinados para pensar sobre os casos de fronteira de entrada do usuário quando malformados ou depurar, mas acho que uma lição aprendida aqui é que a interação entre diferentes módulos é importante considerar. Qual tem sido a recepção ao seu "Nenhum Bug Free" de campanha?

Charlie: na maior parte do silêncio. Algumas pessoas têm escrito com o apoio, mas, principalmente, ninguém fala sobre isso. É, provavelmente, principalmente por minha culpa, porque eu sou terrível organizar as coisas, e eu estou muito ocupado com trabalho e pesquisa, por isso não ter colocado qualquer tempo nele. Eu ainda acho que se os fornecedores pagos, mais pessoas poderiam procurar por bugs. Essa coisa de SMS é um bom exemplo. Entre nós, Collin e eu encontrei um bug no iPhone, Android e Windows Mobile. Então, paramos o teste. Nós tínhamos o suficiente para a nossa conversa, que a motivação que tivemos que continuar procurando? Este é realmente um hobby não pagos por nós, para nós o nível mínimo de trabalho possível para obter bons resultados o suficiente para apresentações em conferências. Se os pesquisadores iam para receber o pagamento de quantias chorudas para estes erros, eles iriam olhar e encontrá-los.

Como outro exemplo, eu não estou olhando para os erros de SMS mais, eu estou seguindo em frente. Isso é o que os pesquisadores agora. Por que eu iria continuar procurando esses bugs extremamente perigoso? Eu não vou receber o pagamento e uma vez que havia uma onda de fala SMS na BlackHat, as conferências não vai se interessar por eles por um tempo. Isso é o que realmente "Não Bugs Mais Livre" é sobre - motivar os investigadores qualificados a procurar por erros. Os vilões já estão motivados pelos ganhos financeiros que estão a fazer e vai continuar procurando estes erros poderoso.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
AT & T Full Of It? Say It Ain't So

Alan: Oh, me fale sobre o Windows Mobile e Android questões de SMS.

Charlie: quadro Collin também funciona no Android e WinMobile. Encontramos alguns bugs de negação de serviço no Android (que foram publicados e são fixos) e um erro muito mal na forma como os telemóveis HTC WinMobile tratar mensagens SMS contendo o especificador de formato% n Essa é divertido porque você não precisa de ferramentas especiais para enviar a mensagem maliciosa, é só usar seu telefone para o texto com o seu amigo n% ea TouchFlo (aplicação gerente) irá falhar e não vai voltar para cima.

Alan: leitores? Por favor, utilize essas informações para o bem, não mal. A CPU ARM no iPhone tem qualquer tipo de segurança do tipo bit-NX para minimizar o risco de explorações de buffer overflow?

Charlie: Sim, o ARM tem a XN (executar) Nunca pouco que desempenha um papel análogo ao NX em x86. No iPhone, este bit é definido no heap e pilha. Na verdade, você não pode desligar este bit em páginas de pilha, mesmo se você tentar. Eu também dei uma palestra em separado na BlackHat sobre como burlar essa proteção de memória no iPhone 2.2.1 e anteriores, mas fixaram-lo em 3.0 e não sei como contornar isso no momento.

Alan: Mas neste caso, foi realmente um erro na maneira como as mensagens foram concatenados em oposição a um "buffer overflow" tradicional.

Charlie: Sim, existem duas partes de qualquer façanha. Um deles é o erro, neste caso, ser capaz de acessar antes de uma matriz na memória. O outro é o que você faz com esse bug. Isto é onde as proteções de memória entram em jogo. Sem proteção de memória, basta colocar o código executável byte na memória e executá-lo. Para iPhone 3, você não pode fazer isso e temos que fazer algo diferente.

Este não era um bug de buffer overflow tradicional, mas ainda estava na classe de bugs de corrupção de memória. Programadores (e código de Contas) são muito bons na procura strcpy e memcpy's. No entanto, as coisas ainda podem dar errado quando você está lidando com ponteiros. Neste caso, ao acessar um array fora dos limites, um invasor pode corromper a memória, exatamente como fariam em um buffer overflow tradicional.

Como um aparte, o Android implementaram seus SMS pilha com Java. Por isso, não foi possível corromper a memória, em vez disso, nós acabamos de exceções não tratadas. Assim, nossos ataques se limitavam a negação de serviço.

Alan: Apple e AT & T afirmou que "jailbreak" poderiam causar problemas com o ECID? Com base em seus conhecimentos sobre o iPhone, você acredita que isso é verdade?

Charlie: Não, esta é a AT & T tentando se certificar de que eles fazem tanto dinheiro quanto possível. Absoluto FUD.

Alan: E quanto à alegação de que um iPhone desbloqueado pode falhar torres de telefonia celular - tem alguém que nunca olhou para a segurança do software em execução torres de telefonia celular?

Charlie: Isso é BS completo. Você pode diff um kernel jailbroken iPhone com um kernel padrão e há muito poucos lugares que são alterados. Em particular, ele não mexer com qualquer coisa que tenha a ver com a comunicação com a transportadora. Mesmo se ela fez alguma loucura, que ele não, espero que as torres são suficientemente robustos para lidar com isso. Assim como o software do iPhone deverá ser capaz de lidar com qualquer tipo de entrada que recebe, a torres de celular também deve ter. Espero que as transportadoras testar adequadamente seus equipamentos. Se não, podem sempre dar-me um convite, eu ficaria feliz em ajudar. Em outras palavras, se todos que leva para um terrorista para derrubar a comunicação celular no país é ter um iPhone desbloqueado, nós estamos em apuros.

Como um aparte, que foi outra razão para eu gostava do método de injeção de testes de mensagens SMS a nível local. Acho que se eu fuzzed o telefone usando a rede da operadora, eu provavelmente teria caído alguma coisa. Apesar de que seria intencional, eu poderia vê-los jogando-me na prisão por isso, e isso é um lugar que eu não quero visitar!

Alan: Heh, a menos que você estava testando a segurança de alguns fangled Sistema de Segurança Eletrônica-novo lá. Eu vi os filmes de Hollywood o suficiente! Como sempre, obrigado por ter tomado a tempo para conversar.

Charlie: Não tem problema, obrigado por me novamente.


traduzido pelo google
 
Topo