# Backdoor

Backdoor (em português, "porta dos fundos") é um método, geralmente secreto, de escapar de uma autenticação ou criptografia normais em um sistema computacional, produto ou dispositivo embarcado (por exemplo, um roteador doméstico), ou sua incorporação, por exemplo, como parte de um sistema criptográfico, um algoritmo, um chipset ou um "computador homúnculo" - um pequeno computador dentro de um maior (como o encontrado na tecnologia AMT da Intel). Os backdoors costumam ser usados para proteger o acesso remoto a um computador ou obter acesso a texto simples em sistemas criptográficos.
Um backdoor pode assumir a forma de uma parte oculta de um programa, um programa separado (por exemplo, o Back Orifice pode subverter o sistema através de um rootkit), um código no firmware do hardware ou partes de um sistema operacional, como o Microsoft Windows. Cavalos de Troia podem ser usados para criar vulnerabilidades em um dispositivo. Um destes pode parecer um programa inteiramente legítimo, mas quando executado, ele executa uma atividade que pode instalar um backdoor. Embora alguns sejam secretamente instalados, outros backdoors são deliberadamente e amplamente conhecidos. Esses tipos têm usos "legítimos", como fornecer ao fabricante uma maneira de restaurar as senhas dos usuários. O backdoor pode ser usado para obter acesso a senhas, excluir dados em discos rígidos ou transferir informações dentro da nuvem.
Muitos sistemas que armazenam informações dentro da nuvem não conseguem criar medidas de segurança precisas. Se muitos sistemas estiverem conectados na nuvem, os hackers podem obter acesso a todas as outras plataformas através do sistema mais vulnerável.
Senhas padrões (ou outras credenciais padrões) podem funcionar como backdoors se não forem alteradas pelo usuário. Alguns recursos de depuração também podem atuar dessa forma se não forem removidos na versão de lançamento.
Em 1993, o governo dos Estados Unidos tentou implantar um sistema de criptografia, o chip Clipper, com um backdoor explícito para a aplicação da lei e acesso à segurança nacional. Mas o chip não teve sucesso.

## Visão geral

A ameaça de backdoors contra multiusuário e sistemas operacionais em rede tornou-se amplamente adotada. Petersen e Turn discutiram em um artigo publicado no processo da Conferência de 1967 AFIPS. Eles observaram uma classe de ataques de infiltração ativos que utilizam o chamado "alçapão" como pontos de entrada no sistema para ignorar as instalações de segurança e permitir o acesso direto aos dados. O uso da palavra "alçapão" aqui claramente coincide com as definições mais recentes de uma porta. De modo geral, essas falhas de segurança foram discutidas em profundidade em uma Corporação RAND com relatório da força tarefa publicado sob ARPA, patrocinado por JP Anderson e DJ Edwards, em 1970. Um backdoor em um sistema de login pode assumir a forma de um código com difícil combinação de usuário e senha que dá acesso ao sistema.
Embora o número de backdoors nos sistemas que utilizam software proprietário (software cujo código fonte não está disponível ao público) não é amplamente creditado, eles são, no entanto, frequentemente expostos. Os programadores têm mesmo conseguido discretamente instalar grandes quantidades de código benignos como easter eggs em programas, embora tais casos pudesse envolver a tolerância oficial, se não a permissão real.

## Exemplos
### Worms

Muitos worms de computador, tais como Sobig e Mydoom, instalam um backdoor no computador afetado (em geral, um computador com banda larga e com execução do sistema operacional Microsoft Windows, além do uso do Microsoft Outlook). Tais backdoors parecem estar instalados para que os spammers possam enviar e-mails das máquinas infectadas.
A sofisticada tentativa de plantar uma backdoor no kernel do Linux, exposta em novembro de 2003, acrescentou uma pequena e sutil alteração de código de subverter o sistema de controle de revisão. Neste caso, a mudança de duas linhas apareceu para verificar o acesso root, permissões de uma chamada para a função sys_wait4, mas porque usou atribuição em vez de igualdade verificando, ele realmente tinha permissões concedidas ao sistema. Esta diferença é facilmente esquecida, e até poderia ser interpretado como um erro de digitação acidental, ao invés de um ataque intencional.
Em janeiro de 2014, um backdoor foi descoberto em determinados dispositivos móveis, como o Galaxy, ao qual mantém o sistema operacional Samsung Android, permitindo o acesso remoto aos dados armazenados no dispositivo. Em particular, o software Samsung Android que está encarregado de lidar com as comunicações com o modem, utilizando o protocolo Samsung IPC, implementa uma classe de pedidos conhecidos como servidores de arquivos remotos (RFS) comandos, que permite ao operador backdoor para executar via modem remoto I / O, operações no disco rígido ou outro dispositivo de armazenamento. Como o modem está sobre responsabilidade da Samsung, assim como o software Android, é provável que ele ofereça over-the-air, controle remoto que pode ser usado para emitir os comandos RFS e, portanto, para acessar o sistema de arquivos no dispositivo.

### Utilização de backdoors por cavalos de Troia

Os cavalos de Troia batizados como backdoors (por usar portas para entrar em computadores alheios) são muito comuns na Internet. Normalmente eles utilizam as portas 666, 888, 3333, entre outras, para que seu usuário tenha acesso ao computador da vítima. O atacante procura garantir uma forma de retornar a um computador comprometido, sem precisar recorrer aos métodos utilizados na invasão, assim o atacante pode retornar ao computador comprometido sem ser notado.
Os cavalos de Troia do tipo backdoor ainda são divididos por suas funções. Por exemplo, um backdoor com função de espião faz uma troca de informações através da porta que ele abre para seu usuário poder visualizar arquivos da vítima, ver imagens pela webcam (ativando-a sem o conhecimento da vítima), ligar o microfone, abrir e fechar o drive de CD/DVD-ROM, blu-ray, podendo corromper o Windows de forma irrecuperável, etc.
São conhecidos como RAT, da sigla inglesa Remote Administrator Tool, que por sua vez, em português, significa "ferramenta de administração remota".

### Backdoors - código de objetos

Mais difíceis de detectar são os backdoors que envolvem a modificação de código-objeto, ao invés de código-fonte — código objeto é muito mais difícil de fiscalizar. Estes podem ser inseridos diretamente no código objeto do disco rígido, ou inserido em algum momento durante a compilação, ligando a montagem, ou de carga — neste último caso, a porta dos fundos nunca aparece no disco, apenas na memória. Backdoors código-objeto são difíceis de detectar por inspeção do código objeto, mas são facilmente detectados pela simples verificação de alterações (diferenças), nomeadamente no comprimento ou na soma de verificação, e em alguns casos podem ser detectados ou analisados por desmontar o código objeto. Além disso, objetos backdoors referentes ao código podem ser removidos, basta recompilar a partir da fonte.
Para evitar a detecção, todas as cópias existentes de um binário devem ser subvertidas, e quaisquer somas de verificação de validação também devem ser comprometidas e a fonte deve estar disponível, para evitar a recompilação. Alternativamente, essas outras ferramentas (cheques comprimento, diff, checksum, disassemblers) pode-se estar comprometido para esconder o backdoor, por exemplo, detectar que o binário está sendo subvertido ao checksummed e retornando o valor esperado, e não o valor real. Para esconder essas novas subversões, as ferramentas também devem esconder as mudanças em si - por exemplo, um checksummer subvertido também deve detectar se ele é em si checksum (ou outras ferramentas subverteram) e retornam valores falsos. Isto leva a grandes mudanças no sistema e ferramentas sendo necessário para esconder uma única mudança.
O código objeto pode ser regenerado, recompilando do código-fonte original, fazendo uma persistência ao código objeto backdoor (sem modificar o código-fonte), ao qual é necessário subverter o compilador em si - para que, quando ele detecte quando está sendo realizado o compilador do programa sobre ataque, inserindo o backdoor - ou, alternativamente, o assembler, linker ou carregador.
Como isso exige subverter o compilador, este por sua vez, pode ser corrigido por recompilar o compilador, removendo o código de inserção backdoor. Essa defesa pode por sua vez ser subvertida, colocando uma fonte de meta-backdoor no compilador, para que, quando ele detecta que está compilando somente a si, inserindo em seguida, insere este um gerador de meta-backdoor, em conjunto com o gerador de backdoor original para o programa original sobre ataque. Depois que isso for feito, a fonte de meta-backdoor pode ser removido, e o compilador recompilado da fonte original com o executável do compilador comprometido.

### Backdoors assimétricos

Um backdoor assimétrico só pode ser usado pelo atacante que plantá-lo, mesmo que a plena implementação do backdoor se torne pública (por exemplo, por meio de publicação, sendo descoberta e divulgada pela engenharia reversa, etc.). Além disso, é computacionalmente intratável para detectar a presença de um backdoor assimétrico sob consultas de "caixa preta". Esta classe de ataques foi denominada como kleptography; eles podem ser realizados em software, hardware (por exemplo, cartões inteligentes), ou uma combinação dos dois. A teoria de backdoors assimétricas é parte de um campo maior agora chamado cryptovirology.

## Lista de backdoors conhecidos em normas

O hash MD5 mostrou ter várias deficiências, em 1996, por Hans Dobbertin. Estas debilidades permitem ao invasor substituir o seu próprio artigo por um original assinado-MD5. O código malicioso é assim introduzido em um sistema. Turner e Chen, em RFC 6149, escreveram que "MD2 não deve ser utilizado para assinaturas digitais", pois poderia ser falsificada. Escreveu também a RFC 6150, que MD4 "não devem ser usadas para criptografar a chave de criptografia de 80 bits ou mais."; e ataques MD4 são praticáveis. SHA-0 (aka FIPS-180) foi retirado após CRYPTO '98. SHA-1 (aka FIPS 180-1-) mostrou ser atacável em 2005, por Eli Biham e co-autores, bem como Vincent Rijmen e Elisabeth Oswald.
O Dual_EC_DRBG gerador de números pseudo-aleatórios criptograficamente seguro foi revelado em 2013 para, eventualmente, ter um (assimétrico) backdoor kleptographic inserido deliberadamente pelo NSA, que também tinha a chave privada para o backdoor.

## Backdoors em compiladores

Uma forma sofisticada de caixa preta é um backdoor em um compilador, onde não é só um compilador subvertido (para inserir um backdoor em algum outro programa, como um programa de login), é modificado para detectar quando for compilar a si mesmo e, em seguida, inserir tanto o código de inserção backdoor (visando o outro programa) e modificar o código de auto-compilação. Isto pode ser feito através da modificação do código-fonte, e o compilador comprometido (código objeto) resultante pode compilar o código original.
Este ataque foi originalmente apresentado em Karger & Schell (1974, p 52, seção 3.4.5:. "Trap Door Insertion"), que foi uma análise do Multics, onde eles descreveram como um ataque a um PL de segurança United States Air Force / compiler, e chamá-lo de "alçapão compilador"; eles também mencionam uma variante em que o código de inicialização do sistema é modificada para inserir um backdoor durante a inicialização, como este é complexo e mal compreendido, e chamá-lo de um "alçapão de inicialização", este que é agora conhecido como um vírus do setor de inicialização.
Este ataque foi então efetivamente implementado e popularizado por Ken Thompson, em Thompson (1984), em seu discurso de aceitação do Prêmio Turing em 1983 (publicado em 1984), "Reflexões sobre a Confiança", onde aponta que a confiança é relativa, o único software que se pode realmente confiar é um código onde cada passo do bootstrapping seja inspecionado. Este mecanismo backdoor é baseado no fato de as pessoas só o reverem código fonte (human-written), e código de máquina não compilado (código objeto). O programa chamado compilador é utilizado para criar o segundo a partir do primeiro, e o compilador é geralmente confiável para fazer um trabalho honesto.
O trabalho de Thompson descreve uma versão modificada do compilador C Unix que faria: colocar um backdoor invisível no comando de login do Unix quando se notou que o programa de login está sendo compilado, e como uma torção. Também pode adicionar esse recurso indetectável para versões futuras do compilador em cima de sua compilação também. Por o próprio compilador ser um programa compilado, seria extremamente improvável que os usuários notassem as instruções de código de máquina que realizaram essas tarefas. O pior, na prova da execução, conceito de Thompson, o compilador subvertido também subverteu o programa de análise (o desmontador), de modo que qualquer um que examinou os binários na forma habitual, não seria realmente ver o código real que estava correndo, mas sim outra coisa em seu lugar.
Uma análise atualizada do exploit original foi dado em Karger & Schell (2002, item 3.2.4: Doors Compiler Trap), e um panorama histórico e pesquisa da literatura foi dado em Wheeler (2009, Seção 2: Fundo e trabalhos relacionados).

## Ocorrências

A versão de Thompson, oficialmente, nunca foi apresentada. Acredita-se, porém, que a versão foi distribuída à BBN e pelo menos um uso do backdoor foi gravado. Não houve relatos de tais backdoors nos anos subsequentes.
Este ataque foi recentemente (em agosto de 2009) descoberto por laboratórios Sophos: A / Induc-A do vírus W32 infectando o compilador do programa para Delphi, uma linguagem de programação do Windows. O vírus introduziu o seu próprio código para a elaboração de novos programas Delphi, permitindo-lhe infectar e propagar para muitos sistemas, sem o conhecimento do programador de software. Um ataque que se propaga através da construção de seu próprio cavalo de Troia pode ser especialmente difícil de descobrir. Acredita-se que a-Induc (um vírus) tinha sido propagado durante pelo menos um ano antes de ser descoberto.

## Contramedidas

Uma vez que um sistema foi comprometido com um backdoor ou cavalo de Troia, como o compilador Confiando Trust, é muito difícil para o usuário "legítimo" recuperar o controle do sistema - tipicamente deve-se reconstruir um sistema limpo e transferir dados. No entanto, foram sugeridas várias deficiências práticas no esquema Confiando Trust. Por exemplo, um usuário suficientemente motivado poderia meticulosamente rever o código de máquina do compilador não confiável antes de usá-lo. Como mencionado acima, existem várias maneiras de esconder o cavalo de Tróia, como subverter o desmontador, mas existem maneiras de combater essa defesa, também, como escrever o seu próprio desmontador a partir do zero.
Um método genérico para combater os ataques de confiança é chamado Diverse Double-compilação (DDC). O método requer um compilador diferente e o código-fonte do-under-test compilador. Essa fonte, compilada com ambos os compiladores, resulta em duas fases, compiladores diferentes, que, no entanto devem ter o mesmo comportamento. Assim, a mesma fonte compilada com ambos (estágio 1) compiladores devem resultar em seguida, dois idênticos (estagio 2) compiladores. Uma prova formal só é dada quando esta última comparação garanta que o código fonte suposto é executável do-under-test compilador correspondam, em algumas hipóteses. Este método foi aplicado pelo seu autor para verificar se o compilador C da suíte GCC (v. 3.0.4) não continha “trojan” usando ICC (v. 11.0), como o compilador diferente.
Na prática, essas verificações não são feitas por usuários finais, exceto em circunstâncias extremas de detecção e análise de intrusão, devido à raridade de tais ataques sofisticados, pois os programas são normalmente distribuídos em formato binário. A remoção de backdoors (inclindo compiladores) normalmente é feita para reconstruir um sistema limpo. No entanto, essas verificações sofisticadas são de interesse de fornecedores de sistemas operacionais, para garantir que eles não estejam distribuindo um sistema comprometido, e em ambientes de alta segurança, onde tais ataques são uma preocupação realista.

## Proteção

A proteção mais comum contra backdoors em computadores pessoais é o uso de firewall e de IDS. De modo geral, backdoors que atuam através da internet podem ser facilmente detectados pelo sistema IDS ou impedidos de atuar pelo firewall.