Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
usbrip — Rastreamento do histórico de eventos USB no GNU/Linux | Kitploit
Ferramentas/GitHubGitHub/snovvcrash/usbrip
Análise ForenseForensia DigitalInteligência de AmeaçasResposta a IncidentesAnálise de LogsArchived
GitHubsnovvcrash/usbrip

usbrip

Rastreamento do histórico de eventos USB no GNU/Linux

Ver Repositório
1.2k113há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip (herdado de "USB Ripper", não "USB R.I.P.") é uma ferramenta forense simples com interface de linha de comando que permite rastrear artefatos de dispositivos USB (ou seja, histórico de eventos USB) em máquinas Linux.

Índice:

  • Descrição
  • Início Rápido
  • Demonstração
  • Estrutura do Log do Sistema
  • Dependências
    • deb
    • pip
  • Instalação Manual
    • Git Clone
    • install.sh
      • Caminhos
      • Cron
      • uninstall.sh
  • Uso
    • Sinopse
    • Ajuda
  • Exemplos
  • Créditos e Referências
  • Gráfico de Stargazers
  • Pós-Escrito

Descrição

usbrip é um pequeno software que analisa dados de log do Linux: saída do journalctl ou conteúdo dos arquivos /var/log/syslog* (ou /var/log/messages*). Com base nos dados coletados, o usbrip pode construir tabelas de histórico de eventos USB com as seguintes colunas:

  • Conectado (data e hora)
  • Host
  • VID (ID do fornecedor)
  • PID (ID do produto)
  • Produto
  • Fabricante
  • Número de Série
  • Porta
  • Desconectado (data e hora)

Além disso, também pode:

  • Exportar dados coletados como um dump JSON para uso posterior.
  • Gerar uma lista de dispositivos USB autorizados (confiáveis) como um arquivo JSON (chame-o de auth.json).
  • Procurar por "eventos de violação" com base em auth.json: descobrir dispositivos USB que aparecem no histórico e NÃO aparecem no arquivo auth.json.
  • *quando instalado com a flag -s* Criar armazenamentos protegidos (arquivos 7-Zip) para fazer backup e acumular automaticamente eventos USB com a ajuda do agendador cron.
  • Pesquisar detalhes adicionais sobre um dispositivo USB específico com base em seu VID e/ou PID.

Início Rápido

Maneira 1. Instalar com pip:

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

Maneira 2. Instalar a versão bleeding-edge com install.sh (recomendado, recursos extras disponíveis):

root@kitploit:~
~$ sudo apt install python3-venv p7zip-full -y
~$ git clone https://github.com/snovvcrash/usbrip && cd usbrip
~/usbrip$ sudo -H installers/install.sh
~/usbrip$ cd
~$ usbrip -h

Demonstração

showcase.png

Docker (*APENAS DEMO!*)

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

Estrutura do Log do Sistema

usbrip suporta dois tipos de timestamps para analisar dentro dos arquivos de log do sistema:

  1. Não modificado – estrutura syslog padrão para GNU/Linux ("%b %d %H:%M:%S", ex. "Jan 1 00:00:00"). Este tipo de timestamp não fornece a informação sobre o ano.
  2. Modificado (recomendado) – estrutura syslog melhorada que fornece timestamps de alta precisão incluindo anos ("%Y-%m-%dT%H:%M:%S.%f%z", ex. "1970-01-01T00:00:00.000000-00:00").

Se você tiver o journalctl instalado, não há com o que se preocupar, pois ele pode converter timestamps em tempo real. Caso contrário, a estrutura syslog desejada pode ser alcançada definindo o formato RSYSLOG_FileFormat na configuração do rsyslog.

  1. Comente a seguinte linha em /etc/rsyslog.conf:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. Adicione um arquivo .conf personalizado para o usbrip:
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *opcional* Exclua os arquivos de log existentes:
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. Reinicie o serviço:
root@kitploit:~
~$ sudo systemctl restart rsyslog

Primeiramente, o usbrip verificará se há a possibilidade de despejar eventos do sistema usando o journalctl como a opção mais portátil. Se não – ele procurará e analisará os arquivos de log do sistema /var/log/syslog* ou /var/log/messages*.

Dependências

deb

  • interpretador python3.6 (ou mais recente)
  • python3-venv
  • p7zip-full (usado pelo módulo storage)

pip

  • terminaltables
  • termcolor
  • tqdm

Instalação Manual

Git Clone

Para simplificar, vamos concordar que todos os comandos onde o prefixo ~/usbrip$ aparece são executados no diretório ~/usbrip que é criado como resultado de um git clone:

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

Além de instalar com pip, o usbrip também pode ser instalado com o script personalizado installers/install.sh.

Ao usar o install.sh, alguns recursos extras se tornam disponíveis:

  • O ambiente virtual é criado automaticamente.
  • Você pode usar o módulo storage – configurar uma tarefa cron para fazer backup de eventos USB em um cronograma (um exemplo de tarefa cron pode ser encontrado em usbrip/cron/usbrip.cron).

⚠️ Aviso: se você estiver usando agendamento cron, você deve configurar o crontab com sudo crontab -e para forçar o submódulo storage update a ser executado como root. As senhas dos armazenamentos são mantidas em /var/opt/usbrip/usbrip.ini e acessíveis apenas pelo root por padrão.

Para instalar o usbrip com install.sh use:

root@kitploit:~
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
  • Quando a opção -l está habilitada, as dependências Python são resolvidas a partir de pacotes .tar locais (diretório 3rdPartyTools) em vez do PyPI.
  • Quando a opção -s está habilitada, não apenas o projeto usbrip é instalado, mas também a lista de dispositivos USB confiáveis, os armazenamentos de histórico e violações são criados.

Após a instalação ser concluída, sinta-se à vontade para remover o diretório ~/usbrip.

Caminhos

Quando instalado com install.sh, o usbrip usa os seguintes caminhos:

  • /opt/usbrip/ – diretório principal do projeto.
  • /var/opt/usbrip/log/ – logs do cron do usbrip.
  • /var/opt/usbrip/storage/ – armazenamentos de eventos USB (history.7z e violations.7z, criados durante o processo de instalação).
  • /var/opt/usbrip/trusted/ – listas de dispositivos USB confiáveis (auth.json, criadas durante o processo de instalação).
  • /var/opt/usbrip/usbrip.ini – arquivo de configuração do usbrip (contém senhas para os armazenamentos 7-Zip).
  • /usr/local/bin/usbrip – link simbólico para o script /opt/usbrip/venv/bin/usbrip.

Cron

Tarefas cron podem ser configuradas da seguinte forma:

root@kitploit:~
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

uninstall.sh

O script installers/uninstall.sh remove o usbrip e todos os artefatos de instalação do seu sistema.

Para desinstalar o usbrip use:

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • Quando a opção -a está habilitada, não apenas o diretório do projeto usbrip é excluído, mas também todos os armazenamentos e logs do usbrip são excluídos.

Não se esqueça de remover a tarefa cron se você a tiver configurado.

Uso

Sinopse

root@kitploit:~
# ---------- BANNER ----------

~$ usbrip banner
Get usbrip banner.

# ---------- EVENTS ----------

~$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Get USB event history.

~$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Open USB event dump.

~$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Generate a list of trusted (authorized) USB devices.

~$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Get USB violation events based on the list of trusted devices.

# ---------- STORAGE ----------

~$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
List contents of the selected storage. STORAGE_TYPE is either "history" or "violations".

~$ sudo usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Open selected storage. Behaves similarly to the EVENTS OPEN submodule.

~$ sudo usbrip storage update <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Update storage -- add USB events to the existing storage. COMPRESSION_LEVEL is a number in [0..9].

~$ sudo usbrip storage create <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Create storage -- create 7-Zip archive and add USB events to it according to the selected options.

~$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Change password of the existing storage.

# ---------- IDs ----------

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
Get extra details about a specific USB device by its <VID> and/or <PID> from the USB ID database.

~$ usbrip ids download [-q] [--debug]
Update (download) the USB ID database.

Ajuda

Para obter uma lista de nomes de módulos use:

root@kitploit:~
~$ usbrip -h

Para obter uma lista de nomes de submódulos para um módulo específico use:

root@kitploit:~
~$ usbrip <MODULE> -h

Para obter uma lista de todas as opções para um submódulo específico use:

root@kitploit:~
~$ usbrip <MODULE> <SUBMODULE> -h

Exemplos

  • Mostrar o histórico de eventos de todos os dispositivos USB, suprimindo a saída do banner, mensagens de informação e interação do usuário (-q, --quiet), representado como uma lista (-l, --list) com as últimas 100 entradas (-n NUMBER, --number NUMBER):

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • Mostrar o histórico de eventos dos dispositivos USB externos (-e, --external, que foram realmente desconectados) representado como uma tabela (-t, --table) contendo as colunas Conectado, VID, PID, Desconectado e Número de Série (-c COLUMN [COLUMN ...], --column COLUMN [COLUMN ...]) filtrado por data (, ) e PID () com logs obtidos de arquivos externos (, ):

Créditos e Referências

  • usbrip / Инструменты Kali Linux
  • Как узнать, какие USB устройства подключались к Linux / HackWare.ru
  • usbrip: USB-форензика для Линуксов, или Как Алиса стала Евой / Форум информационной безопасности Codeby.net

13cubed.jpg

Gráfico de Stargazers

stargazers

Baixar ferramenta
-d DATE [DATE ...]
--date DATE [DATE ...]
--pid <PID> [<PID> ...]
-f FILE [FILE ...]
--file FILE [FILE ...]
root@kitploit:~
~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz

👽 Nota: há uma coisa a lembrar ao trabalhar com filtros. Existem 4 tipos de filtragem disponíveis: apenas eventos USB externos (dispositivos que podem ser removidos facilmente, -e), por data (-d), por campos (--host, --vid, --pid, --product, --manufact, --serial, --port) e por número de entradas que você obtém como saída (-n). Ao aplicar diferentes filtros simultaneamente, você obterá o seguinte comportamento: primeiro, os filtros externos e por data são aplicados, então o usbrip procurará pelos valores de campo especificados na interseção dos dois últimos filtros, e no final ele cortará a saída para o número que você definiu com a opção -n. Portanto, pense nisso como uma interseção para filtragem externa e por data e união para filtragem por campos. Espero que faça sentido.

  • Construir o histórico de eventos de todos os dispositivos USB e redirecionar a saída para um arquivo para análise posterior. Quando o fluxo de saída NÃO é o terminal stdout (| ou > por exemplo) não haverá caracteres ANSI de escape (cor) na saída, então fique à vontade para usar dessa forma. Observe também que o usbrip usa alguns símbolos UNICODE, então seria bom converter o arquivo resultante para codificação UTF-8 (com encov por exemplo), bem como alterar os caracteres de nova linha para o estilo Windows para portabilidade (com awk por exemplo):

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 Nota: você sempre pode se livrar dos caracteres de escape por conta própria, mesmo se já tiver obtido a saída para stdout. Para fazer isso, basta copiar os dados de saída para usbrip.out e aplicar mais uma instrução awk:

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • Gerar uma lista de dispositivos USB confiáveis como um arquivo JSON (trusted/auth.json) com os atributos VID e PID contendo os primeiros três dispositivos conectados em 30 de novembro de 1984:

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ Aviso: há casos em que diferentes pendrives USB podem ter números de série idênticos. Isso pode acontecer como resultado de um erro de fabricação ou apenas alguns black hats conseguiram reescrever o chip de memória do dispositivo que acabou não sendo programável uma única vez e assim por diante... De qualquer forma, "nenhum sistema é seguro". O usbrip não lida com tais casos de forma inteligente até o momento, ou seja, ele tratará um par de dispositivos com SNs idênticos (se existir algum) como o mesmo dispositivo em relação à lista de dispositivos confiáveis e ao módulo genauth.

  • Pesquisar o histórico de eventos dos dispositivos USB externos por violações com base na lista de dispositivos USB confiáveis (trusted/auth.json) pelo atributo PID, restringindo os eventos resultantes àqueles que têm Bob-PC como hostname, EvilUSBManufacturer como fabricante, 0123456789 como número de série e representar a saída como uma tabela com as colunas Conectado, VID e PID:

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • Pesquisar detalhes sobre um dispositivo USB específico pelo seu VID (--vid VID) e PID (--pid PID):

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • Baixar a versão mais recente do banco de dados usb.ids database:

    root@kitploit:~
    ~$ usbrip ids download