Pular para o conteúdo
GitHub

Pesquisa e coleções

O menu Pesquisar reúne as coleções e a pesquisa recursiva por nome ou conteúdo de ficheiro. Ambas mostram os resultados numa lista ordenável com o caminho de origem de cada ficheiro, e ambas funcionam com o visualizador e com a pré-visualização.

  • Ctrl-F: pesquisa a pasta atual e tudo o que está abaixo dela. Todas as palavras têm de corresponder: main rs encontra main.rs, e a | b encontra qualquer uma das palavras. Uma palavra em minúsculas ignora maiúsculas e minúsculas; uma palavra com alguma maiúscula tem de corresponder exatamente. Pode também usar padrões glob como *.log, expressões entre aspas, caminhos com uma barra como src/lib e -word para excluir correspondências, além dos filtros ext:rs,toml, type:file, type:dir, type:link, size:>10M, size:1M..50M, mod:<7d (alterado na última semana), mod:>1y e in:src (uma pasta em qualquer ponto do caminho). As pesquisas recentes aparecem por baixo do formulário, com as feitas na mesma pasta em primeiro lugar; clique numa delas, ou prima Ctrl-P e Ctrl-N no campo de pesquisa, para a reutilizar. A janela abre com a pesquisa e as opções que lá deixou da última vez, na pasta onde está. Os nomes correspondem em qualquer alfabeto, seja qual for a capitalização de um glob, e as letras acentuadas correspondem independentemente da forma como o sistema de ficheiros as guarda. As correspondências próximas da pasta de pesquisa aparecem primeiro, enquanto o resto da árvore ainda está a ser lido.
  • Alt-K: junta os ficheiros marcados, ou o ficheiro atual, numa coleção no outro painel. Uma coleção guarda referências, pelo que o conteúdo dos ficheiros não é copiado.
  • Alt-V: escolhe uma coleção guardada numa lista com deslocamento que mostra quantas entradas tem cada uma e uma estimativa do seu tamanho. Prima F7 ou N para criar uma. As coleções são mantidas quando o Borg reinicia.
  • Esc: oculta os resultados e mantém o cursor, a posição de deslocamento, as marcas, o filtro e o agrupamento.
  • Alt-Shift-R: volta a mostrar os resultados ocultos. Uma análise continua a decorrer enquanto os seus resultados estão ocultos.
  • Alt-D: abre Tamanhos das pastas para encontrar pastas pelo tamanho total ou pelo número de ficheiros. Os ficheiros ocultos são incluídos por omissão. Alt-D abre a caixa de diálogo de Ctrl-F com Totais de pastas selecionado; altere Procurar para alternar entre os dois modos. Ctrl-C interrompe uma análise.
  • Alt-S: calcula os tamanhos da pasta selecionada. Alt-Shift-D: abre uma árvore de tamanhos da pasta atual.
  • Alt-W: maximiza ou restaura o painel de resultados ativo. Os resultados abrem num painel normal por omissão. Os controlos [+] (maximizar), [=] (restaurar) e [-] (recolher) na barra de título podem ser clicados. Recolher oculta a vista; Alt-Shift-R repõe-na com o mesmo esquema e a mesma seleção.
  • Ctrl-S: filtra os resultados por nome ou caminho de origem. Um filtro vazio mostra tudo.

Escreva texto em Com o texto na caixa de diálogo de Ctrl-F para listar os ficheiros abaixo da pasta que o contêm. O padrão de nome continua a aplicar-se, por isso *.rs com fn main em Com o texto encontra os ficheiros Rust que o têm. As opções ao lado do campo funcionam como na barra de pesquisa: Alt-C distingue maiúsculas de minúsculas (caso contrário, uma pesquisa em minúsculas encontra qualquer caixa), Alt-W procura palavras inteiras e Alt-R lê o texto como expressão regular. Também pode clicar nas opções. Ctrl-P e Ctrl-N no campo trazem de volta pesquisas recentes da barra de pesquisa e de pesquisas anteriores. Uma pesquisa de texto lista apenas ficheiros, por isso não aceita totais de pastas nem um mínimo de ficheiros, e Tamanhos das pastas não tem o campo Com o texto.

Cada resultado mostra a primeira linha com correspondência, com o número da linha, na coluna Correspondência, e a linha de estado junta o número da linha ao caminho do ficheiro. F3 abre o ficheiro no visualizador nessa correspondência, com a barra de pesquisa aberta na pesquisa, para que Enter avance para a seguinte, e Ctrl-Q mostra-o aí na pré-visualização, com a pesquisa marcada. Os ficheiros Markdown e JSON abrem como código-fonte em ambos, porque a pesquisa leu o ficheiro tal como está, e s muda para a vista formatada. F4 abre o ficheiro no editor do Borg nessa correspondência, com a correspondência selecionada e a barra de pesquisa aberta na pesquisa, e Alt-E faz o mesmo no outro painel, para que os resultados continuem à vista. O Borg lê os ficheiros em segundo plano, e a linha de contexto conta os ficheiros lidos. Os ficheiros binários (um byte NUL nos primeiros 8 KiB) e os ficheiros com mais de 64 MiB ficam por ler e contam como binários ou demasiado grandes. Ctrl-C interrompe a pesquisa, que para nos 20 000 ficheiros como qualquer pesquisa.

Ctrl-R nos resultados, ou Substituir nos ficheiros… no menu Ficheiro, substitui o texto nos ficheiros marcados, ou em todos os ficheiros que os resultados mostram quando nenhum está marcado. Escreva o que fica no seu lugar e prima Enter; deixe o campo vazio para remover o texto. Uma segunda pergunta indica o texto e os ficheiros e abre com Não selecionado. Prima Y para os alterar. O Borg não guarda uma cópia do texto antigo. Os interruptores da pesquisa aplicam-se, por isso uma pesquisa de palavras inteiras substitui palavras inteiras, e com uma expressão regular $1 repõe o primeiro grupo. O Borg escreve cada ficheiro como o seu editor guarda, por isso as permissões e as ligações mantêm-se. Ignora os ficheiros que não são texto, que têm mais de 32 MiB ou que mudaram enquanto a tarefa corria. A tarefa aparece em Alt-J, e os resultados atualizam-se quando ela termina.

Defina Procurar como Correspondências de regras na caixa de diálogo de Ctrl-F para analisar os ficheiros abaixo da pasta com regras YARA: as que o Borg inclui e as suas. O padrão de nome, o Tamanho mínimo e Omitir resultados de compilação, caches e ficheiros ignorados continuam a aplicar-se. São as regras que decidem o que procurar, por isso a caixa de diálogo deixa de mostrar Com o texto e Mínimo de ficheiros.

Cada resultado mostra na coluna Correspondência a regra mais grave a que o ficheiro corresponde, a quantas outras corresponde e os primeiros bytes que essa regra encontrou, como texto entre aspas ou em hexadecimal. F3 abre o ficheiro no visualizador nesses bytes, com a barra de pesquisa preenchida com eles, e F4 e a pré-visualização também abrem nesse ponto. A linha de contexto conta os ficheiros analisados e as regras usadas. Os ficheiros com mais de 64 MiB ficam por ler e contam como demasiado grandes, e a análise para nos 20 000 ficheiros como qualquer pesquisa. Ctrl-C interrompe-a.

As regras do próprio Borg procuram:

  • reverse_shell: uma shell interativa através de /dev/tcp, nc ou socat a executar uma shell, ou uma shell lançada num pseudoterminal.
  • download_and_run: um script transferido e encaminhado diretamente para uma shell.
  • decode_and_run: base64 descodificado e executado como comando da shell ou como código Python.
  • crypto_miner: o endereço de um pool de mineração, ou as definições de um minerador comum.
  • upx_packed: um executável comprimido com UPX, que se descomprime a si próprio em memória.
  • execve_shellcode: o caminho da shell que o código de exploração constrói antes de iniciar uma shell.
  • ssh_key_planted: uma chave pública acrescentada a um ficheiro authorized_keys.
  • reboot_job_fetch: uma tarefa cron que corre em cada arranque e transfere, descodifica ou executa algo a partir de uma pasta temporária.
  • password_prompt: uma caixa de diálogo AppleScript que pede uma palavra-passe com a resposta oculta, como fazem os programas que roubam dados no macOS.
  • launch_agent_from_temp: um agente ou daemon de arranque do macOS que inicia um programa a partir de uma pasta temporária ou partilhada.
  • preload_write: uma escrita em /etc/ld.so.preload, que carrega uma biblioteca em todos os programas no Linux.
  • history_wiping: o histórico da shell desativado, ou registos do sistema esvaziados.
  • agent_unattended: um agente de programação com IA iniciado com as aprovações desligadas, como fez o ataque à cadeia de fornecimento do Nx para procurar segredos nas máquinas.
  • hidden_prompt: uma sequência de caracteres de etiqueta Unicode invisíveis, que podem esconder instruções para modelos de IA em prompts, ficheiros de regras e páginas web.
  • pickle_runs_code: um pickle, o formato em que o Python e o PyTorch guardam modelos, que executa um comando quando é carregado.

Coloque as suas regras na pasta rules ao lado de config.toml: ~/.config/borg-commander/rules, ou a mesma pasta em $XDG_CONFIG_HOME ou $BORG_CONFIG_DIR. O Borg lê todos os ficheiros .yar e .yara que aí estão e nas pastas abaixo, cada um num espaço de nomes próprio, por isso dois ficheiros podem usar os mesmos nomes de regras. Cada ficheiro é compilado separadamente. Um ficheiro com um erro fica de fora por inteiro, a linha de estado indica-o com a mensagem do compilador, a linha de contexto conta os ficheiros deixados de fora, e os outros ficheiros continuam a correr. Como cada ficheiro é carregado separadamente, um ficheiro que use include também fica de fora, e os ficheiros que inclui correm por si.

As regras podem importar os módulos hash, math, string, time, elf, macho, pe, dotnet e dex; um ficheiro que importe magic, cuckoo ou console fica de fora. As variáveis filename, filepath e extension contêm o nome, o caminho e a extensão do ficheiro analisado, como esperam os conjuntos de regras escritos para o THOR e o LOKI, e filetype e owner ficam vazias. A meta severity de uma regra define a importância de uma correspondência: alert, critical ou high dão um alerta, warning, medium ou suspicious um aviso, e notice, low ou info uma nota. Sem ela, um score de 80 ou mais dá um alerta, de 60 ou mais um aviso, e abaixo disso uma nota. Uma regra sem nenhuma das duas conta como aviso. Os seus campos description e false_positives aparecem com cada correspondência.

O Borg não inclui conjuntos de regras públicos, porque as licenças variam. Transfira os que considera fiáveis para a pasta de regras e verifique cada licença antes de os usar no trabalho:

As regras correspondem a padrões de bytes e nada sabem de intenções. Instaladores, ferramentas de segurança e os seus dados de teste também correspondem, e um ficheiro a que nenhuma regra corresponde pode mesmo assim ser malicioso. Encare as correspondências como pistas. Analisar a memória com regras explica o que uma análise não consegue ver.

Defina Procurar como Executáveis compactados na caixa de diálogo de Ctrl-F para listar os programas abaixo da pasta cujo código é tão denso como bytes comprimidos ou cifrados. Os compactadores e os protetores deixam código assim, tal como o malware que esconde o seu código até ser executado. O Borg lê as partes de cada ficheiro ELF, Mach-O e PE que o carregador mapeia como executáveis, incluindo cada fatia de um binário Mach-O universal, e mede a entropia de até 1024 blocos de 4 KiB distribuídos uniformemente por elas. Um programa é listado quando pelo menos 70% desses blocos chegam a 7,2 bits por byte. O código compilado da forma habitual fica muito abaixo disso. O padrão de nome, o Tamanho mínimo e Omitir resultados de compilação, caches e ficheiros ignorados continuam a aplicar-se, e a caixa de diálogo deixa de mostrar Com o texto e Mínimo de ficheiros.

A coluna Correspondência indica a percentagem de blocos com entropia alta e a entropia mais alta encontrada, como “97% alta · máx. 8”. F3 abre o programa nas linhas hexadecimais do visualizador, no primeiro bloco com entropia alta, com a faixa de entropia descrita em Visualizador e pré-visualização ao lado. A linha de contexto conta os programas lidos e os outros ficheiros, onde o Borg não sabe encontrar código. Ctrl-C interrompe a pesquisa, que para nos 20 000 ficheiros como qualquer pesquisa. Um programa compactado só mostra o seu verdadeiro código enquanto corre, e a Análise de entropia de todos os processos examina os programas dessa forma.

Clique no cabeçalho de uma coluna para ordenar por ela e clique de novo para inverter a ordem. Os menus Esquerda e Direita também permitem ordenar, e o menu Pesquisar acrescenta a ordenação por pasta de origem e o agrupamento por pasta ou tipo de ficheiro. Enter no cabeçalho de um grupo recolhe-o; Insert marca os ficheiros correspondentes desse grupo. As marcas mantêm-se quando ordena ou filtra, e o rodapé conta também os ficheiros marcados que o filtro oculta.

F3 e Ctrl-Q abrem o ficheiro original e, depois de uma pesquisa de texto, abrem-no na primeira correspondência. A pré-visualização acompanha o cursor pelos resultados e mostra cada ficheiro na sua correspondência, com a pesquisa marcada como a barra de pesquisa a marca. Alt-E abre o ficheiro no editor do Borg no outro painel, para que os resultados continuem à vista. Esc ou F10 fecha esse editor e devolve o foco aos resultados, e a pré-visualização regressa se estava aberta antes. F5 copia para uma pasta real; se o outro painel for uma coleção, F5 acrescenta-lhe referências. F6 precisa de uma pasta real como destino. Numa coleção, F8 remove referências e não mexe nos ficheiros; nos resultados de pesquisa, F8 pede confirmação para eliminar os ficheiros originais. Shift-F8 também elimina os ficheiros originais a partir de uma coleção, depois de confirmar. Quando estão marcados uma pasta e ficheiros dentro dela, a tarefa trata a pasta uma única vez. Revelar original ou Alt-O abre a pasta do ficheiro no outro painel, com o cursor no ficheiro. Left ou Esc ocultam os resultados, e Alt-Shift-R repõe-nos onde os deixou. Tab alterna entre os painéis mesmo quando a shell tem um comando por terminar. A shell fica sempre numa pasta real. F10 pede sempre confirmação antes de sair.

Por agora, as ações de Git e de arquivos só funcionam em painéis de pastas reais. Para as usar num ficheiro de uma coleção, abra primeiro a respetiva pasta com Revelar original.

A pesquisa lê nomes de ficheiros e metadados num processo em segundo plano que pode cancelar, e para às 20 000 correspondências. A linha de contexto indica se a pesquisa terminou, os erros e as entradas ignoradas, e se atingiu esse limite. As pastas ocultas só são pesquisadas com Mostrar ficheiros ocultos ativo. A pesquisa não sai do sistema de ficheiros onde começou e não segue ligações simbólicas para pastas. A janela de pesquisa pode limitar os resultados a ficheiros ou a pastas e definir um tamanho mínimo.

Escolha Totais de pastas para medir todos os ficheiros abaixo de cada pasta antes de filtrar por nome, tamanho ou número mínimo de ficheiros. O Borg guarda as 20 000 maiores pastas correspondentes e ordena-as por tamanho; clique em Ficheiros para as ordenar pelo número de ficheiros. Use um padrão como node_modules ou *cache*, ou * para ver todas as pastas abaixo da pasta inicial.

Os totais somam o conteúdo dos ficheiros. Eliminar uma pasta pode libertar uma quantidade diferente de espaço em disco. As subpastas também contam para os totais das pastas que as contêm. As ligações simbólicas nunca são seguidas, as análises não saem do sistema de ficheiros onde começaram, e uma pasta que se contém a si própria (através de uma montagem bind ou de uma pasta com ligação física) só é contada uma vez. Quando um total fica incompleto por causa de um destes limites, ou porque uma subpasta não pôde ser lida ou foi omitida, aparece com ≥. As análises de pastas leem apenas metadados, nunca o conteúdo dos ficheiros. Os resultados aparecem quando a medição termina, e pode cancelar a análise a qualquer momento.

Árvore de tamanhos das pastas mostra no painel atual o total da pasta inicial e das suas subpastas. Right expande um ramo, ou entra nele se já estiver expandido; Left recolhe um ramo ou seleciona o ramo pai. Enter abre a própria pasta. Clique na seta de um ramo para o recolher ou expandir, ou no cabeçalho de uma coluna para ordenar as pastas do mesmo nível por nome, tamanho ou número de ficheiros. Esc oculta a árvore, e Alt-Shift-R repõe os ramos, as marcas e o cursor. As operações com ficheiros atuam sobre os caminhos reais e, se marcar uma pasta e uma subpasta dela, uma tarefa de cópia ou eliminação recebe apenas a pasta.

Com Omitir resultados de compilação, caches e ficheiros ignorados assinalado, as pesquisas por nome ignoram pastas geradas: node_modules, .git, caches e ambientes virtuais de Python, pastas como target e dist que estejam ao lado de um ficheiro de compilação (Cargo.toml, package.json), e qualquer pasta marcada com um ficheiro CACHEDIR.TAG. Ignoram também os ficheiros excluídos por .gitignore, .ignore, .rgignore ou .borgignore, e os globs definidos em [search] exclude.

Para alterar o que fica de fora, prima F4 na caixa de diálogo de pesquisa ou clique em F4 Editar. Pode ativar ou desativar as pastas geradas e os ficheiros de exclusão, e adicionar (Ins), editar (Enter) ou remover (Del) padrões. As alterações são guardadas no ficheiro de configuração. Uma pasta omitida continua a aparecer se o próprio nome corresponder, e a linha de contexto indica quantas pastas foram omitidas. Acrescente excluded:yes a uma pesquisa para procurar em tudo nessa vez, ou hidden:yes para incluir ficheiros ocultos. As análises de tamanho leem sempre tudo.

No macOS, as pesquisas e as análises de tamanho que começam acima de ~/Library/Containers e ~/Library/Group Containers ignoram estas pastas: ler aí faz com que o macOS suspenda a leitura até alguém responder se autoriza o acesso aos dados de outra aplicação. Uma pesquisa iniciada dentro de uma destas pastas lê-a normalmente.

O histórico de pesquisa fica neste computador e só o utilizador o pode ler. Defina history = false em [search] para deixar de o guardar.

Pesquisar → Indexar esta pasta para pesquisa instantânea mantém um índice de todos os nomes abaixo da pasta ativa, para que Ctrl-F responda de imediato nessa pasta ou em qualquer pasta abaixo dela. A linha de contexto indica quando o índice foi criado. O Borg reconstrói os índices em segundo plano depois de arrancar e sempre que um índice tem mais de 15 minutos, e o índice antigo continua a responder até o novo estar pronto. Uma pesquisa que não omite nada, ou que usa exclusões diferentes, lê as pastas diretamente, tal como uma pesquisa de texto, porque o índice só guarda nomes. Escolha de novo a mesma opção do menu para deixar de indexar e eliminar o índice. Os índices ficam na pasta de cache, junto às análises de tamanho, e [index] na configuração enumera as pastas indexadas.

Para medir tamanhos sem fechar os painéis de ficheiros normais, prima Alt-I ou escolha Pesquisar → Contar tamanhos em segundo plano. O Borg analisa todas as pastas abaixo da atual, incluindo ficheiros ocultos, e preenche o total de cada pasta à medida que termina. Pode continuar a navegar ou usar a consola enquanto a análise decorre. As pastas que ainda estão a ser medidas mostram um total crescente assinalado com ≥, e os totais mantêm-se quando sai de uma pasta e volta a ela. O rodapé do painel mostra o progresso; prima Alt-I de novo, ou clique no rodapé, para parar a análise e manter os totais medidos até esse momento. Iniciar uma tarefa de cópia, movimentação ou eliminação para uma análise de tamanhos em curso. As análises concluídas partilham a cache com a árvore de tamanhos e com Totais de pastas.

As análises concluídas ficam guardadas neste computador. Totais de pastas e a árvore de tamanhos reutilizam uma análise guardada da mesma pasta com a mesma definição de ficheiros ocultos. Quando volta a abrir uma pasta que já foi medida, os tamanhos guardados aparecem de imediato, assinalados com ~, com a data da medição por cima da árvore. Ctrl-R volta a analisar em qualquer das vistas de tamanho, e Ctrl-C cancela. A árvore anterior continua visível durante a atualização e mantém-se se a nova análise for cancelada ou falhar. As listagens normais de pastas também mostram os totais guardados, quando existem. Alterações feitas fora do Borg podem desatualizá-los, e a navegação nunca inicia uma análise recursiva por si só. As tarefas de cópia, movimentação e eliminação do Borg descartam as análises guardadas que abrangem os caminhos alterados.

A cache SQLite local guarda todas as pastas medidas para até 16 pastas iniciais. As árvores carregam as subpastas de um ramo quando o expande. Um ramo mostra até 20 000 pastas, e Totais de pastas guarda as 20 000 maiores correspondências; estes limites de apresentação não interrompem a análise nem alteram os totais. Uma linha “Ficheiros nesta pasta” contabiliza os bytes guardados diretamente numa pasta expandida. Os erros e as subpastas ignoradas marcam os totais como incompletos. A cache fica em ~/.cache/borg-commander, ou em XDG_CACHE_HOME se estiver definido; BORG_CACHE_DIR substitui essa localização. A cache contém apenas medições que podem ser recriadas e é independente das coleções. Um ficheiro com ligações físicas conta uma vez por cada caminho que tem. Todos os tamanhos medem o conteúdo dos ficheiros, pelo que o espaço que um ficheiro ocupa em disco pode ser maior ou menor.

Este guia acompanha o ramo main · Borg 0.11.0 · 1f6bce6
A versão mais recente pode ainda não incluir tudo o que aqui se descreve. Notas de versão

Traduzido a partir do guia em inglês. As correções são bem-vindas. Os comandos e os atalhos de teclado não são traduzidos.