# USBKill

USBKill é um software anti-forense distribuído via GitHub, escrito em Python para os sistemas operacionais BSD, Linux e OS X. Ele é projetado para servir como um Kill switch se o computador no qual está instalado cair sob o controle de indivíduos ou entidades contra a vontade do proprietário. É um software livre, disponível sob a GNU General Public License.
O desenvolvedor do programa, que atende pelo nome online de Hephaest0s, o criou em resposta às circunstâncias da prisão do fundador do Silk Road Ross Ulbricht, durante a qual agentes federais dos Estados Unidos puderam obter acesso a provas incriminatórias em seu laptop sem precisar da cooperação, copiando dados de seu pen drive depois de distraí-lo. Ele mantém uma lista de permissões de dispositivos permitidos para se conectar às portas USB do computador; se um dispositivo que não está na lista de permissões se conectar, ele pode realizar ações que vão desde simplesmente retornar à tela de bloqueio até criptografar o disco rígido, ou até mesmo excluir todos os dados nele. No entanto, ele também pode ser usado como parte de um regime de segurança de computador para evitar a instalação sub-reptícia de malware ou spyware ou a duplicação clandestina de arquivos, de acordo com seu criador.

## História

Quando as agências policiais começaram a fazer prisões relacionadas a crimes de cibernético na década de 1990, eles muitas vezes pediam aos juízes para mandados de busca onde não precisavam bater na porta, para impedir o alvo de eliminar provas incriminatórias a partir de computadores ou mídia de armazenamento. Em circunstâncias mais extremas, onde era provável que os alvos pudessem ser avisados ​​com antecedência da chegada da polícia, os juízes concederiam mandados de "desligamento de energia", permitindo que as concessionárias desligassem a eletricidade no local do ataque um pouco antes, evitando ainda mais quaisquer esforços para destruir as evidências antes que possam ser apreendidas. Esses métodos eram eficazes contra criminosos que produziam e distribuíam software e filmes piratas: o principal crime de computador em grande escala da época.
Na década de 2010, as circunstâncias do crime de computador mudaram junto com o uso legítimo do computador. Os criminosos eram mais propensos a usar a Internet para facilitar seus crimes, então eles precisavam permanecer online na maior parte do tempo. Para fazer isso, e ainda manter suas atividades discretas, eles usaram recursos de segurança do computador, como telas de bloqueio e proteção por senha
Por esses motivos, a polícia agora tenta prender suspeitos cibercriminosos com seus computadores ligados e em uso, todas as contas no computador e online abertas e conectadas e, portanto, facilmente pesquisáveis. Se eles não conseguirem apreender o computador nessa condição, existem alguns métodos disponíveis para contornar a proteção por senha, mas podem levar mais tempo do que o tempo disponível para a polícia. Pode ser legalmente impossível obrigar o suspeito a abrir mão de sua senha; nos Estados Unidos, onde ocorrem muitas investigações de crimes informáticos, os tribunais distinguiram entre forçar um suspeito a usar meios materiais de proteção de dados, como impressão digital, exame de retina, ou chave, em oposição a uma senha ou código de acesso, que é puramente o produto dos processos mentais do suspeito e, portanto, é protegida da divulgação forçada pela Quinta Emenda.
A técnica usual para autoridades - sejam entidades públicas, como as autoridades policiais, ou organizações privadas como empresas - apreender um computador (geralmente um laptop) que acreditam estar sendo usado indevidamente é, primeiro, separar fisicamente o usuário suspeito do computador o suficiente para que ele não possa tocá-lo, evitando que fechem a tampa, desconectem ou digitem um comando. Depois de fazer isso, eles costumam instalar um dispositivo na porta USB que imita as ações menores de um mouse, touchpad ou teclado, evitando que o computador entre no modo de hibernação, do qual normalmente voltaria para uma tela de bloqueio que exigiria uma senha.
Agentes do Federal Bureau of Investigation (FBI) dos Estados Unidos que investigam Ross Ulbricht, fundador do mercado negro online Silk Road, descobriram que ele costumava administrar o site em seu laptop, usando as redes sem fio disponíveis nas filiais da Biblioteca Pública de São Francisco. Quando tivessem evidências suficientes para prendê-lo, eles planejaram pegá-lo executando o Silk Road, com seu computador ligado e conectado. Eles precisavam garantir que ele não conseguiria acionar a criptografia ou excluir as evidências quando o fizessem.
Em outubro de 2013, um agente masculino e feminino fingiram ter uma briga de namorados perto de onde Ulbricht estava trabalhando na filial de Glen Park. De acordo com o Business Insider, Ulbricht estava distraído e se levantou para ver qual era o problema, então a agente feminina agarrou seu laptop enquanto o agente masculino prendia Ulbricht. A agente foi então capaz de inserir um pen drive em uma das portas USB do laptop, com um software que copiava os arquivos-chave. De acordo com Joshuah Bearman da Wired, um terceiro agente agarrou o laptop enquanto Ulbricht estava distraído pela aparente briga de amantes e o entregou ao agente Tom Kiernan.

## Uso

Em resposta às circunstâncias da prisão de Ulbricht, um programador conhecido como Hephaest0s desenvolveu o código USBKill em Python e carregou-o no GitHub em 2014. Ele está disponível como software livre sob a GNU General Public License e atualmente é executado em Linux e OS X
O programa, quando instalado, solicita que o usuário crie uma whitelist (contrário de lista negra) de dispositivos que podem se conectar ao computador por meio de suas portas USB, que são verificadas em uma taxa de amostragem ajustável. O usuário também pode escolher quais ações o computador executará se detectar um dispositivo USB que não esteja na lista de permissões (por padrão, ele desliga e apaga dados da RAM e do arquivo de troca). Os usuários precisam estar logados como root. Hephaest0s avisa os usuários de que eles devem usar pelo menos criptografia de disco parcial junto com USBKill para evitar totalmente que invasores obtenham acesso; O site Gizmodo sugere o uso de uma máquina virtual que não estará presente quando o computador for reinicializado.
Também pode ser usado ao contrário, com uma unidade flash na lista de permissões na porta USB conectada ao pulso do usuário por meio de um cordão que serve como chave. Nesse caso, se a unidade flash for removida à força, o programa iniciará as rotinas desejadas. "[Ele] foi projetado para fazer uma coisa", escreveu Aaron Grothe em um breve artigo sobre USBKill em 2600, "e o faz muito bem." Como precaução adicional, ele sugere que os usuários o renomeiem para algo inócuo assim que o carreguem em seus computadores, caso alguém possa estar procurando por ele em um computador apreendido para desativá-lo.
Além de sua finalidade projetada, Hephaest0s sugere outros usos não relacionados ao desejo do usuário de frustrar a polícia e os promotores. Como parte de um regime geral de segurança, ele pode ser usado para impedir a instalação sub-reptícia de malware ou spyware ou a cópia de arquivos de um computador protegido. Também é recomendado para uso geral como parte de uma prática de segurança robusta, mesmo quando não há ameaças a serem temidas.

## Variações e modificações

Com seu artigo 2600, Grothe compartilhou um patch que incluía um recurso que permitia ao programa desligar uma rede quando um USB não incluído na lista de permissões era inserido em qualquer terminal. Nate Brune, outro programador, criou o Silk Guardian, uma versão do USBKill que assume a forma de um módulo de kernel carregável, uma vez que ele "[sentiu] que poderia ser implementado melhor do que já é." Na edição de 2600 após o artigo de Grothe, outro escritor, conhecido pelo nome de Jack D. Ripper, explicou como o Ninja OS, um sistema operacional projetado para drives flash dinâmicos, lida com o problema. Usa um bashscript residente na memória que executa um ciclo através do dispositivo de inicialização (ou seja, a unidade flash) três vezes por segundo para ver se ele ainda está montado e reinicializa o computador se não estiver.