Conferência CHAPÉU PRETO. Como fazer um telefone espião. Parte 1A próxima coisa que precisamos modificar é o manifesto. É o que diz quais serviços estão envolvidos no aplicativo, quais permissões eles têm e assim por diante.
Então, começaremos com o próprio código, e é com o código do diretório smali. Se você olhar para a árvore de diretórios do Angry Birds, verá muitas pastas contendo vários componentes, organizados na forma de subdiretórios.

Eu nem sei de quais dessas coisas realmente preciso e o que elas fazem, mas não preciso disso. Agora, farei uma coisa técnica de tremenda complexidade - copie o diretório droidwhisperer daqui, do diretório SearchableDictionary, aqui, para o subdiretório com / burstly / example / android do diretório smali. Isso é tudo, espero que você entenda qual é o objetivo.
Portanto, uma cópia do nosso código foi inserida sempre que necessário, mas há mais algumas coisas que precisam ser feitas. Olho novamente para a minha lista de truques e vejo que agora é necessário fazer alterações no manifesto. Primeiro, quando pegarmos o manifesto, precisamos descobrir o nome do aplicativo - destacarei em vermelho, depois precisaremos porque inserimos algo no código existente.
Portanto, é necessário atualizar o manifesto para incluir o serviço de espionagem incorporado e suas permissões no aplicativo. Consiste nas seguintes etapas:
- lembrando o nome do pedido original para mais tarde,
- Definição do serviço Droidwhisperer
- Definição de permissões necessárias para o Droidwhisperer funcionar.

Então eu pego este manifesto e o arrasto para um caderno. A primeira coisa que faço no aplicativo é definir nosso serviço. Para fazer isso, encontro a função onCreate no manifesto na ação principal do aplicativo de destino. No caso do Angry Birds, era com / rovio / ka3d / App. Depois disso, recortei a parte do código destacada em amarelo e coloquei-a imediatamente após chamar involk-super no onCreate.
Assim, declaramos no manifesto que teremos o serviço Droidwhisperer, que deve iniciar imediatamente após sua disponibilização. É por isso que precisamos do nome do aplicativo original com.rovio.ka3d.App, usamos para inserir o novo nome do aplicativo com.rovio.ka3d. service.Droidwhisperer.
Em seguida, copio e colo as permissões para nosso aplicativo espião no local apropriado no manifesto - essas são as linhas destacadas em verde.

Depois de fazer as alterações, salvamos o manifesto, que já inclui as permissões necessárias e o serviço é definido que deve ser iniciado quando o telefone inicializar, portanto, está tudo certo.
O Android precisa de algo que inicie aplicativos; portanto, o aplicativo Angry Birds deve conter um código que inicie meu serviço de espionagem assim que o jogo original for lançado. Agora vou ao diretório do jogo e localizo a pasta ka3d, abro-a e copio o arquivo do aplicativo nele contido no bloco de notas. Este é o código smali, que é uma versão do código do assembler para o Dalvik. Usamos a função onCreate contida no Android. Uso a pesquisa de cadernos para encontrar a localização dessa função. Aqui você precisa de um pouco de conhecimento sobre como o sistema operacional Android funciona - por exemplo, a função onCreate é usada para chamar superclasses, ou seja, para criar ou reiniciar a atividade do aplicativo. É aqui que insiro meu código, que deve iniciar o lançamento de um serviço espião. Volto à minha folha de dicas, copio as linhas necessárias de lá e colo aqui.
Como eu sabia qual código inserir aqui? Acabei de copiá-lo do aplicativo original que escrevi. Eu disse que existe uma documentação excelente para os pequenos, então você não precisa se aprofundar em tudo para fazer isso.

Recentemente, alguns conjuntos de "conexão" foram anunciados que permitem automatizar o recebimento do código necessário. Apenas algumas semanas atrás, esses kits de ferramentas para desenvolvedores do Android foram lançados, permitindo criar qualquer serviço e implementá-lo em um aplicativo existente. Tudo isso pode ser feito manualmente.
Assim, assim que a função onCreate é chamada, ela ativa nosso serviço. Não esqueça que após isso você precisará salvar o arquivo modificado. Portanto, após a realização do treinamento técnico adequado, precisamos montar nosso aplicativo modificado. Então, volto para o Apk_tool e coleciono partes do diretório Angry Birds no diretório birds.apk. Portanto, reconstruímos o aplicativo original, fazendo as alterações necessárias e colocamos o novo assembly em um arquivo chamado birds.apk.
Se você tentar instalar este aplicativo modificado no seu telefone Android agora, ele informará que esse aplicativo não está assinado, por isso precisamos assiná-lo. Para fazer isso, crio um certificado digital autoassinado com a chave pública correspondente e o salvo no meu diretório de trabalho de injeção. Este é um arquivo chamado chaves.

Este é apenas um certificado que eu mesmo criei. Agora vou voltar e tomar este comando poderoso e lacônico do meu berço:
jarsigner -verbose -keystore keys birds.apk alias_name
Para não confundir nada, apenas recortei e coloquei no lugar certo. Então, eu vou assinar o arquivo birds.apk com minha própria chave, é bem simples. Então eu dou o comando e assino todos os componentes do aplicativo com essa chave digital. Agora eu posso colocá-lo na AppStore, no Google Play - em qualquer lugar.
Como eu já disse, o telefone não possui nenhuma interface que mostre o usuário que assinou o quê. Depois que o aplicativo é assinado, ele pode ser instalado. Ninguém pode dizer quem assinou este aplicativo, e isso é ótimo.
Portanto, a versão modificada do Angry Birds se parece exatamente com o jogo original e funciona da mesma maneira, exceto que contém o meu código espião. Agora você vê assinaturas digitais na tela feitas por Kevin McNami, do Kindsite.
Outra coisa interessante que vou lhe mostrar, voltando um pouco para trás. Observamos o aplicativo original - ele é assinado pela Rovio Mobile Ltd. Veja a data da assinatura - este certificado digital é válido até 26 de agosto de 2010, mas o aplicativo está instalado no telefone sem questionar. Portanto, mesmo que seu certificado digital tenha se transformado em lixo, ele ainda lhe dá o direito de instalar o aplicativo, ou seja, ninguém o verifica. Eu acho que essa é uma das coisas que é uma das falhas graves do modelo de segurança do Android.
O fato é que não há uma verificação rigorosa dos certificados digitais usados. Esse problema pode ser resolvido exigindo que aqueles que desejam receber um certificado digital se registrem. Então, voltando à nossa apresentação. Quero me debruçar sobre assinaturas digitais mais uma vez.

Todos os aplicativos devem ser assinados. Qualquer assinatura antiga permanece válida se for autoassinada. A assinatura é verificada apenas ao instalar o aplicativo. Ou seja, eu posso alterar qualquer arquivo .apk já instalado no telefone e o sistema não reagirá a isso de forma alguma. Esta é uma vulnerabilidade bastante significativa. Se você deseja alterar o arquivo .apk no telefone, deve ter acesso para alterar os diretórios nos quais esses arquivos estão armazenados, mas não será difícil obter direitos de root para fazer qualquer coisa com o telefone.
A segunda coisa que me incomoda é que não há interface do usuário mostrando quem assinou o aplicativo. Por exemplo, ao instalar o aplicativo, uma inscrição deve parecer assinada por Kevin McNami, do Kindsite. Observo que a assinatura deve corresponder a um aplicativo existente movido ou atualizado; portanto, não poderia substituir a versão existente do Angry Birds se não tivesse mudado o nome do meu spyware. Mas assim que fiz isso, nenhum problema surgiu. Os desenvolvedores do Android afirmam que o certificado não precisa ser assinado por um centro autorizado, e os aplicativos Android geralmente usam assinaturas autoassinadas.
Antes de começar a responder às perguntas, quero dizer que existe toda uma indústria de spyware para telefones. Eles são projetados para monitorar seus entes queridos, seus filhos ou parceiros de negócios.

Anteriormente, eles eram usados para monitorar cônjuges infiéis, mas agora seu objetivo mudou. Por exemplo, você pode monitorar seus filhos para garantir a segurança deles, e isso é completamente legal. Mas acho que os telefones espiões são mais adequados para uso no sistema BYOD. Você pode fornecer ao módulo espião qualquer funcionalidade e inseri-lo em qualquer aplicativo, e o usuário não saberá nada sobre isso. Como é ideal para fins de espionagem industrial, esses dispositivos expandem o escopo das ameaças à segurança em andamento.
Portanto, este é um dispositivo de rede totalmente funcional e, se eu conectar ao Wi-Fi no trabalho, posso instalar um software neste telefone que verificará as vulnerabilidades nas redes. Ao mesmo tempo, ele será atualizado, se necessário, e enviará as informações roubadas ao site de comando e controle. Ou seja, um telefone celular infectado é uma plataforma estendida de ameaças constantes à segurança, com enormes recursos de ataque. Por exemplo, alguém apenas entra no prédio com esse telefone, verifica as redes e depois as ataca por dentro. Obviamente, as pessoas protegem sua conexão com a Internet por meio de firewalls e similares, mas esse dispositivo se conecta às redes diretamente pelo ar, um telefone espião se conecta à rede em qualquer lugar onde exista um ponto de acesso e nenhum firewall ajudará aqui. De fato, os telefones entram na rede pela porta dos fundos. Um telefone espião é bem legal, mas aqui temos um cavalo de troia de acesso remoto, e acho muito perigoso.
Acho que disse tudo o que queria falar e agora estou pronto para responder a qualquer pergunta.
Portanto, a primeira pergunta é se esse aplicativo em particular está tentando ocultar sua presença. A resposta é não, não é assim, porque se você olhar para os serviços em execução no telefone, verá lá. Eu acho que poderia ser um processo oculto, mas, neste caso, nosso "telefone espião" foi criado apenas para demonstrar o conceito de ameaça.
Nosso aplicativo pode ser detectado por um programa antivírus? Não, o antivírus não conta esse módulo espião, porque não sabe nada sobre ele. Seria possível confundir ainda mais o código e depois inseri-lo no aplicativo, e esse processo pode ser automatizado.
O que se pode opor a um aplicativo spyware? Você pode usar um antivírus que detecta aplicativos maliciosos conhecidos em qualquer caso, mas nos concentramos no tráfego enviado ao site de comando e controle. Provavelmente, seria possível automatizar o processo de ofuscação de código, mas é muito difícil alterar o protocolo de comunicação com o servidor de comando e controle em tempo real, você precisará alterar o servidor, alterar clientes e tudo mais. Portanto, recomendamos a combinação dos dois métodos de proteção: antivírus contra aplicativos maliciosos conhecidos e monitoramento do tráfego de rede enviado pelo dispositivo espião ao site de comando e controle.

Responderei à pergunta sobre o que significa o requisito para a coincidência de assinaturas digitais ao mover ou atualizar o aplicativo. Se for a primeira vez que instala o aplicativo no telefone, você não terá problemas com ele. Mas se o telefone já tiver o aplicativo original e você desejar substituí-lo por uma nova cópia por uma assinatura digital diferente ou um aplicativo modificado com o mesmo nome, você não terá êxito, porque o telefone poderá comparar a assinatura original no aplicativo com sua versão modificada e observe que eles não correspondem. Nesse caso, contornei a proteção simplesmente substituindo o nome original do aplicativo por um nome diferente.
O servidor de comando e controle pode interagir com todas as funcionalidades do Android e usar sua API. Você pode obter acesso root remotamente, fazer upload de arquivos para o telefone e geralmente descartá-lo a seu critério, porque o Android oferece amplas oportunidades de acesso aberto ao telefone pela rede. Acho que a mesma funcionalidade também está disponível na plataforma iOS, apenas os desenvolvedores deste sistema operacional levam mais a sério a verificação da segurança de novos aplicativos. Por exemplo, você deve obter um certificado deles que certifica sua pessoa como desenvolvedor de aplicativos, e o próprio aplicativo será verificado antes de chegar à App Store, enquanto o Google verificará o aplicativo após ser publicado no Play Market.
Não conheço os detalhes da loja de aplicativos do Google Play, mas acho que se o desenvolvedor tiver uma má reputação ou o aplicativo estiver comprometido, ele não aparecerá na loja. No entanto, existem muitas outras lojas de aplicativos móveis on-line onde um invasor pode hospedar um aplicativo mal-intencionado. Esse é um tipo de ataque de phishing quando forçamos um usuário a baixar esse aplicativo de qualquer lugar, colocando links para ele.
O fato é que todas as funções em nosso aplicativo spyware parecem normais, não há nada de ilegal que esse aplicativo tente fazer. Quando instalado, exige que sejam concedidas as mesmas permissões que aplicativos legais. Outra coisa é como essas funções serão usadas posteriormente. Obviamente, se alguém relatar que o droidwhisperer é um vírus, qualquer antivírus instalado no telefone não permitirá a instalação de um aplicativo que o contenha.
Como eu disse antes, o spyware pode ser baixado de sites de terceiros. Nesse caso, o ataque de phishing é que eles fornecerão instruções detalhadas de instalação e oferecerão o download gratuito deste jogo, porque é um jogo muito legal e você não precisa pagar por isso baixando o original na loja do Google. Normalmente, o usuário é seduzido por essa oferta.
Observo que não pretendemos penetrar em redes protegidas por criptografia, mas simplesmente conectados a qualquer rede disponível. Obrigado pela atenção!
Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps da US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até janeiro de graça quando pagar por um período de seis meses, você pode fazer o pedido
aqui .
Dell R730xd 2 vezes mais barato? Somente nós temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?