hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md

12 KiB

macOS Arquivos, Pastas, Binários e Memória

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Layout da hierarquia de arquivos

  • /Applications: Os aplicativos instalados devem estar aqui. Todos os usuários poderão acessá-los.
  • /bin: Binários de linha de comando
  • /cores: Se existir, é usado para armazenar despejos de núcleo
  • /dev: Tudo é tratado como um arquivo, então você pode ver dispositivos de hardware armazenados aqui.
  • /etc: Arquivos de configuração
  • /Library: Muitos subdiretórios e arquivos relacionados a preferências, caches e logs podem ser encontrados aqui. Uma pasta Library existe na raiz e em cada diretório do usuário.
  • /private: Não documentado, mas muitas das pastas mencionadas são links simbólicos para o diretório privado.
  • /sbin: Binários do sistema essenciais (relacionados à administração)
  • /System: Arquivo para fazer o OS X funcionar. Você deve encontrar principalmente apenas arquivos específicos da Apple aqui (não de terceiros).
  • /tmp: Os arquivos são excluídos após 3 dias (é um link simbólico para /private/tmp)
  • /Users: Diretório home para usuários.
  • /usr: Configuração e binários do sistema
  • /var: Arquivos de log
  • /Volumes: As unidades montadas aparecerão aqui.
  • /.vol: Executando stat a.txt você obtém algo como 16777223 7545753 -rw-r--r-- 1 username wheel ... onde o primeiro número é o número de ID do volume onde o arquivo existe e o segundo é o número do inode. Você pode acessar o conteúdo deste arquivo através de /.vol/ com essas informações executando cat /.vol/16777223/7545753

Pastas de aplicativos

  • Os aplicativos do sistema estão localizados em /System/Applications
  • Os aplicativos instalados geralmente são instalados em /Applications ou em ~/Applications
  • Os dados do aplicativo podem ser encontrados em /Library/Application Support para os aplicativos em execução como root e ~/Library/Application Support para aplicativos em execução como o usuário.
  • Os daemons de aplicativos de terceiros que precisam ser executados como root geralmente estão localizados em /Library/PrivilegedHelperTools/
  • Os aplicativos sandboxed são mapeados na pasta ~/Library/Containers. Cada aplicativo tem uma pasta com o nome do ID do pacote do aplicativo (com.apple.Safari).
  • O kernel está localizado em /System/Library/Kernels/kernel
  • As extensões de kernel da Apple estão localizadas em /System/Library/Extensions
  • As extensões de kernel de terceiros são armazenadas em /Library/Extensions

Arquivos com informações sensíveis

O MacOS armazena informações como senhas em vários locais:

{% content-ref url="macos-sensitive-locations.md" %} macos-sensitive-locations.md {% endcontent-ref %}

Instaladores pkg vulneráveis

{% content-ref url="macos-installer-packages-pkg.md" %} macos-installer-packages-pkg.md {% endcontent-ref %}

Extensões Específicas do OS X

  • .dmg: Arquivos de imagem de disco da Apple são muito frequentes para instaladores.
  • .kext: Deve seguir uma estrutura específica e é a versão OS X de um driver. (é um pacote)
  • .plist: Também conhecido como lista de propriedades, armazena informações em formato XML ou binário.
    • Pode ser XML ou binário. Os binários podem ser lidos com:
      • defaults read config.plist
      • /usr/libexec/PlistBuddy -c print config.plsit
      • plutil -p ~/Library/Preferences/com.apple.screensaver.plist
      • plutil -convert xml1 ~/Library/Preferences/com.apple.screensaver.plist -o -
      • plutil -convert json ~/Library/Preferences/com.apple.screensaver.plist -o -
  • .app: Aplicativos da Apple que seguem a estrutura de diretório (é um pacote).
  • .dylib: Bibliotecas dinâmicas (como arquivos DLL do Windows)
  • .pkg: São iguais a xar (formato de arquivo de arquivo extensível). O comando installer pode ser usado para instalar o conteúdo desses arquivos.
  • .DS_Store: Este arquivo está em cada diretório, ele salva os atributos e personalizações do diretório.
  • .Spotlight-V100: Esta pasta aparece no diretório raiz de cada volume no sistema.
  • .metadata_never_index: Se este arquivo estiver na raiz de um volume, o Spotlight não indexará esse volume.
  • .noindex: Arquivos e pastas com esta extensão não serão indexados pelo Spotlight.

Pacotes macOS

Basicamente, um pacote é uma estrutura de diretório dentro do sistema de arquivos. Curiosamente, por padrão, este diretório parece um único objeto no Finder (como .app).

{% content-ref url="macos-bundles.md" %} macos-bundles.md {% endcontent-ref %}

Permissões Especiais de Arquivo

Permissões de pasta

Em uma pasta, ler permite listá-la, escrever permite excluir e escrever arquivos nela, e executar permite atravessar o diretório. Portanto, por exemplo, um usuário com permissão de leitura sobre um arquivo dentro de um diretório onde ele não tem permissão de execução não poderá ler o arquivo.

Modificadores de sinalizador

Existem alguns sinalizadores que podem ser definidos nos arquivos que farão com que o arquivo se comporte de maneira diferente. Você pode verificar os sinalizadores dos arquivos dentro de um diretório com ls -lO /path/directory

  • uchg: Conhecido como sinalizador uchange impedirá qualquer ação de alterar ou excluir o arquivo. Para defini
ls -ld Movies
drwx------+   7 username  staff     224 15 Apr 19:42 Movies

Você pode ler as ACLs do arquivo com:

ls -lde Movies
drwx------+ 7 username  staff  224 15 Apr 19:42 Movies
 0: group:everyone deny delete

Você pode encontrar todos os arquivos com ACLs com (isso é muuuito lento):

ls -RAle / 2>/dev/null | grep -E -B1 "\d: "

Garfos de Recursos | ADS do macOS

Esta é uma maneira de obter fluxos de dados alternativos em máquinas MacOS. Você pode salvar conteúdo dentro de um atributo estendido chamado com.apple.ResourceFork dentro de um arquivo, salvando-o em file/..namedfork/rsrc.

echo "Hello" > a.txt
echo "Hello Mac ADS" > a.txt/..namedfork/rsrc

xattr -l a.txt #Read extended attributes
com.apple.ResourceFork: Hello Mac ADS

ls -l a.txt #The file length is still q
-rw-r--r--@ 1 username  wheel  6 17 Jul 01:15 a.txt

Você pode encontrar todos os arquivos que contêm este atributo estendido com:

{% code overflow="wrap" %}

find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork"

Binários universais e Formato Mach-o

Os binários do Mac OS geralmente são compilados como binários universais. Um binário universal pode suportar várias arquiteturas no mesmo arquivo.

{% content-ref url="universal-binaries-and-mach-o-format.md" %} universal-binaries-and-mach-o-format.md {% endcontent-ref %}

Dumping de memória do macOS

{% content-ref url="macos-memory-dumping.md" %} macos-memory-dumping.md {% endcontent-ref %}

Arquivos de categoria de risco do Mac OS

Os arquivos /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System contêm o risco associado aos arquivos dependendo da extensão do arquivo.

As possíveis categorias incluem as seguintes:

  • LSRiskCategorySafe: Totalmente seguro; Safari será aberto automaticamente após o download
  • LSRiskCategoryNeutral: Sem aviso, mas não é aberto automaticamente
  • LSRiskCategoryUnsafeExecutable: Dispara um aviso "Este arquivo é um aplicativo..."
  • LSRiskCategoryMayContainUnsafeExecutable: Isso é para coisas como arquivos que contêm um executável. Ele dispara um aviso a menos que o Safari possa determinar que todo o conteúdo é seguro ou neutro.

Arquivos de log

  • $HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2: Contém informações sobre arquivos baixados, como a URL de onde foram baixados.
  • /var/log/system.log: Log principal dos sistemas OSX. com.apple.syslogd.plist é responsável pela execução do syslog (você pode verificar se está desativado procurando por "com.apple.syslogd" em launchctl list.
  • /private/var/log/asl/*.asl: Estes são os Registros do Sistema da Apple que podem conter informações interessantes.
  • $HOME/Library/Preferences/com.apple.recentitems.plist: Armazena arquivos e aplicativos acessados recentemente através do "Finder".
  • $HOME/Library/Preferences/com.apple.loginitems.plsit: Armazena itens para iniciar no início do sistema
  • $HOME/Library/Logs/DiskUtility.log: Arquivo de log para o aplicativo DiskUtility (informações sobre unidades, incluindo USBs)
  • /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist: Dados sobre pontos de acesso sem fio.
  • /private/var/db/launchd.db/com.apple.launchd/overrides.plist: Lista de daemons desativados.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥