1 pontos por GN⁺ 1 일 전 | 1 comentários | Compartilhar no WhatsApp
  • Mantém uma lista de binários Unix organizada por função, com links diretos para páginas detalhadas e links de âncora de cada ação possível em cada binário
  • As categorias que se repetem com frequência são Shell, File read, File write, Command, Inherit, Upload, Download, Reverse shell, Library load e Privilege escalation, e alguns itens também incluem Bind shell
  • File read e Shell aparecem de forma muito ampla, e ferramentas como dd, sed e sqlite3 acumulam leitura e escrita, tornando menos nítida a fronteira com ferramentas de consulta simples
  • Ferramentas como apt, git, journalctl e systemctl frequentemente incluem Command e Inherit, e também reaparecem binários multifuncionais que combinam transferência de rede e operações de shell, como bee, pipx, sqlmap e a família vim
  • Privilege escalation aparece limitado a alguns binários com link dedicado, e a ampla lista que vai de 7z a zypper mostra de relance as diferenças nas combinações de comportamento de ferramentas comuns

Distribuição principal de funcionalidades

Binários multifuncionais

Rede, shell e carregamento de bibliotecas

Itens de escalonamento de privilégios

1 comentários

 
GN⁺ 1 일 전
Comentários do Hacker News
  • Como parece que houve confusão nos comentários, um exemplo de quando isso é usado em um contexto de segurança/CTF seria o seguinte
    Em ambientes com shell restrito ou onde só é possível executar alguns comandos/binários, normalmente ainda dá para passar argumentos com bastante liberdade
    Nesses casos, usando o GTFOBins, é possível chegar a leitura/escrita de arquivos ou até execução de comandos, escapar do contexto restrito e obter um shell
    Se alguém deixou o sudo aberto ou deu o bit SUID a um GTFOBin, também pode ser possível ler ou escrever arquivos sensíveis e executar comandos privilegiados de formas que nem quem configurou imaginava

    • Isso também se aplica bastante a ferramentas como o claude-code
      O tratamento de permissões é bem primitivo, centrado em block-list e allow-list
      Uma vez, em uma sessão, dei por engano ao Claude permissão para powershell e, depois disso, quando ferramentas como git eram bloqueadas, ele contornava a restrição escrevendo scripts de powershell que faziam a mesma coisa e executando-os
      Em um sistema normal, ninguém colocaria powershell numa allow-list geral, mas se houver lacunas entre os níveis de permissão por ferramenta, parece bem possível contornar usando as técnicas desta página
    • Alguns softwares corporativos de segurança que supostamente fazem mediação de escalonamento de privilégios também podem ser perigosos de forma parecida
      Em uma empresa, vi uma implantação em que programas presentes na allowlist definida pelo administrador podiam ser executados com sudo sem senha, e desde o início já estavam lá ferramentas genéricas como vim e bash
      Trabalhando de casa, isso até pareceu uma sorte, porque esse software que dizia "proteger" meu computador acabou tornando muito mais fácil para alguém chegar, enquanto eu saía por um instante e esquecia de bloquear a tela, e executar qualquer coisa
    • No fim, isso parece um guia bem abrangente mostrando o quanto um restricted shell na prática não consegue restringir tanta coisa assim
    • Há também exemplos concretos
      Alguns anos atrás, a equipe de suporte precisava fazer captura de rede com tcpdump, então, para agilizar, criaram uma regra de sudo que deixava alguns argumentos relativamente abertos
      Como porta ou NIC podiam mudar, isso pareceu natural na época, mas na verdade a opção -z do tcpdump permite especificar um comando de compressão, então, colocando ali um comando "especial", dá para tomar o servidor inteiro
      sudo tcpdump -i any -z '/home/despicable_me/evil_cmd.sh' -w /tmp/dontcare.pcap -G 1 -Z root
      Parece pequeno, mas esse tipo de coisa é realmente fácil de deixar passar
      Hoje em dia camadas como apparmor às vezes reduzem esse risco, mas em troca trazem outros problemas e ainda são fáceis de configurar errado
    • Olhando para isso, também dá a impressão de ser uma lista organizada para a IA aprender métodos de escape de sandbox
  • A última vez que usei algo parecido foi em computadores de escola por volta de 1995, com Windows 3.11
    Haviam bloqueado para só permitir a execução de alguns apps aprovados, e um deles era o Word
    No Word, dava para usar macros e chamar o shell para executar outros aplicativos
    Então aqueles computadores travados, que pareciam mostrar só alguns apps, na prática conseguiam executar qualquer coisa
    Na época foi bem empolgante, e depois disso quase não vi mais casos parecidos
    Às vezes vejo relatos de ser possível escapar do kiosk mode em displays touch de lojas ou shopping centers, e isso parece da mesma categoria

  • Ao ver restic - Shell, Command, Upload, sinto que fica um pouco mais justificada a decisão de ajustar o backup para não rodar como root
    Em vez disso, ele roda como usuário comum, recebendo apenas a capability de ler todos os arquivos, e sem shell de login
    Claro que, em desktop, isso talvez seja exagero, e um invasor que chegasse tão longe provavelmente já conseguiria ler quase todos os arquivos e implantar um backdoor no backup mesmo assim
    [0] https://man7.org/linux/man-pages/man7/capabilities.7.html

    • Diante dessas restrições, a tendência de um LLM de pensar "então é só dar a volta usando algum helper de contorno" parece quebrar bastante as suposições do mundo antigo
      Há formas de lidar com atacantes humanos remotos, bots remotos e até, em certa medida, atacantes humanos locais, mas bots locais capazes de escrever código por conta própria viraram um alvo que exige muito mais atenção do que antes
      Isso também não é exatamente a mesma categoria de malware
      Eu mesmo já tratei contêineres como esse tipo de fronteira e fiz todos os processos internos rodarem como root, mas com LLM no meio fica difícil saber se a segurança em nível de sistema operacional de repente ficou mais importante ou se ficou menos relevante
  • Fiquei confuso: isso quer dizer usar base64 /path/to/input-file | base64 --decode no lugar de cat /path/to/input-file quando não existe cat?
    Ou quer dizer que base64 /path/to/input-file | base64 --decode contorna a própria permissão de leitura do arquivo?

    • É a primeira opção
      O processo chamado normalmente herda as permissões do usuário que o executou, e só há exceção quando existe setuid bit
      A ideia é que, em ambientes que tentam impedir a movimentação lateral do atacante desabilitando ferramentas Unix padrão, ainda é possível fazer a mesma coisa com outras ferramentas
    • Isso quer dizer que bloquear privilégios com restrição de comandos baseada em blacklist nunca funcionou muito bem, e continua não funcionando
    • É a primeira, não a segunda
      Não se trata de furar a permissão em si, mas de obter o mesmo resultado com outro binário dentro de um shell restrito onde apenas alguns comandos são permitidos
      Isso é realmente muito comum em CTF
    • Mas, se houver um arquivo que você normalmente não pode ler e, em vez disso, for possível executar base64 como root, aí a história muda
      Rodando base64 como root para codificar o conteúdo do arquivo em base64 e decodificando a saída com outro processo base64, no fim você consegue ver o conteúdo do arquivo
      Na prática, vira um cat com etapas extras
    • Nesse caso, parece até que um pipe com tar seria mais leve
  • Eu era mantenedor de uma dessas ferramentas e foi engraçado ver alguém conseguir um shell com ela
    É criativo, divertido e um bom material de referência

  • Quando eu fazia hackthebox.eu, usava isso demais

  • O GTFOBins já existe faz bastante tempo e já era um recurso útil antes da IA

    • É por isso que o futuro preocupa ainda mais
      O motivo de a IA ser útil é justamente conseguir trazer à tona materiais úteis como esse, que já existiam
  • Não entendo muito bem por que base64 está na lista
    Pelo que penso, isso só conseguiria ler arquivos aos quais o usuário já tem acesso; será que estou enganado?
    Ou a descrição de contornar restrições locais de segurança em sistemas mal configurados quer dizer algo diferente do que entendi?

    • O ponto principal é que, mesmo quando há apenas um shell restrito mal configurado ou acesso limitado a comandos, as ferramentas daquela lista podem devolver ao usuário parte do alcance que ele já teria em um ambiente não restrito
      O exemplo mais simples é trocar o shell padrão por rbash: se o usuário puder simplesmente executar bash e entrar num shell normal, a restrição perde o sentido
    • Por exemplo, o sudoers pode ter sido configurado para permitir executar base64 como root
      Não sei por que alguém faria isso, mas, nessa situação, isso permitiria contornar a limitação de privilégios pretendida e ler qualquer arquivo do sistema
      Ou, se o Claude Code estiver configurado para permitir executar base64 sem revisão, isso pode acabar abrindo acesso até a arquivos secretos como .env
    • Uma situação comum é que algumas ferramentas possam ser executadas com privilégios de root
      Seja por estarem explicitamente permitidas em sudo -l, seja porque outra coisa as chama como root
  • Seria bom mostrar também formas de mitigação para esses desvios
    Por exemplo, no caso de obter um shell via more
    definir SHELL como /bin/false antes de executar more
    trocar para less em secure mode
    ou, se more estiver sendo usado com sudo, usar a flag NOEXEC

    • A melhor mitigação é configurar corretamente as permissões reais dos arquivos que o usuário não deveria poder ler ou escrever
      O resto, no fim das contas, depende um pouco da sorte
  • Bem legal, e aparecem abordagens criativas que eu não esperava
    Por exemplo, eu nunca teria pensado em yt-dlp
    Acho que vou repensar instalar isso por padrão