hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries
2024-02-07 05:47:12 +00:00
..
macos-bundles.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:47:05 +00:00
macos-installers-abuse.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2024-02-07 05:47:12 +00:00
macos-memory-dumping.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:47:05 +00:00
macos-sensitive-locations.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:47:05 +00:00
README.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:47:05 +00:00
universal-binaries-and-mach-o-format.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2024-02-07 05:47:12 +00:00

macOS ファイル、フォルダ、バイナリ&メモリ

htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ htARTEHackTricks AWS Red Team Expertを学ぶ!

HackTricks をサポートする他の方法:

ファイル階層レイアウト

  • /Applications: インストールされたアプリはここにあるはずです。すべてのユーザがアクセスできます。
  • /bin: コマンドラインバイナリ
  • /cores: 存在する場合、コアダンプを保存するために使用されます
  • /dev: すべてがファイルとして扱われるため、ここにハードウェアデバイスが保存されていることがあります。
  • /etc: 設定ファイル
  • /Library: 好み、キャッシュ、ログに関連する多くのサブディレクトリとファイルがここに見つかります。ルートと各ユーザのディレクトリにLibraryフォルダが存在します。
  • /private: 文書化されていませんが、言及されている多くのフォルダはprivateディレクトリへのシンボリックリンクです。
  • /sbin: システムの基本バイナリ(管理に関連する)
  • /System: OS Xを実行するためのファイル。ここには主にApple固有のファイルのみがありますサードパーティ製ではありません
  • /tmp: ファイルは3日後に削除されます/private/tmpへのソフトリンクです
  • /Users: ユーザーのホームディレクトリ。
  • /usr: 設定とシステムバイナリ
  • /var: ログファイル
  • /Volumes: マウントされたドライブはここに表示されます。
  • /.vol: stat a.txtを実行すると、16777223 7545753 -rw-r--r-- 1 username wheel ...のようなものが得られます。最初の数値はファイルが存在するボリュームのID番号であり、2番目の数値はinode番号です。このファイルの内容には、その情報を使用してcat /.vol/16777223/7545753を実行することでアクセスできます。

アプリケーションフォルダ

  • システムアプリケーション/System/Applicationsにあります
  • インストールされたアプリケーションは通常、/Applicationsまたは~/Applicationsにインストールされます
  • アプリケーションデータは、ルートとして実行されるアプリケーションの場合は/Library/Application Support、ユーザーとして実行されるアプリケーションの場合は~/Library/Application Supportにあります。
  • ルートとして実行する必要があるサードパーティアプリケーションのデーモンは通常/Library/PrivilegedHelperTools/にあります
  • サンドボックス化されたアプリケーションは~/Library/Containersフォルダにマップされます。各アプリには、アプリケーションのバンドルIDに従って名前が付けられたフォルダがありますcom.apple.Safariなど)。
  • カーネル/System/Library/Kernels/kernelにあります
  • Appleのカーネル拡張/System/Library/Extensionsにあります
  • サードパーティのカーネル拡張/Library/Extensionsに保存されています

機密情報を含むファイル

MacOSは、パスワードなどの情報をいくつかの場所に保存します

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

脆弱なpkgインストーラ

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

OS X固有の拡張子

  • .dmg: Apple Disk Imageファイルはインストーラーで非常に頻繁に使用されます。
  • .kext: 特定の構造に従う必要があり、OS Xバージョンのドライバーですバンドルです
  • .plist: プロパティリストとしても知られ、情報をXMLまたはバイナリ形式で保存します。
  • XMLまたはバイナリです。バイナリの場合は次のように読み取ることができます
    • 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: ディレクトリ構造に従うAppleアプリケーションバンドルです。
  • .dylib: ダイナミックライブラリWindowsのDLLファイルのようなもの
  • .pkg: xareXtensible Archive形式と同じです。これらのファイルの内容をインストールするには、installerコマンドを使用できます。
  • .DS_Store: このファイルは各ディレクトリにあり、ディレクトリの属性とカスタマイズを保存します。
  • .Spotlight-V100: このフォルダはシステムのすべてのボリュームのルートディレクトリに表示されます。
  • .metadata_never_index: このファイルがボリュームのルートにある場合、Spotlightはそのボリュームをインデックスしません。
  • .noindex: この拡張子を持つファイルとフォルダはSpotlightによってインデックスされません。

macOSバンドル

バンドルは、Finderでオブジェクトのように見えるディレクトリです(*.appファイルの例があります)。

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

Dyld Shared Cache

macOSおよびiOSでは、フレームワークやdylibなどのすべてのシステム共有ライブラリが1つのファイルに結合され、dyld共有キャッシュと呼ばれています。コードをより速く読み込むことができるため、パフォーマンスが向上します。

dyld共有キャッシュと同様に、カーネルとカーネル拡張もカーネルキャッシュにコンパイルされ、起動時に読み込まれます。

1つのファイルからライブラリを抽出するには、以前はバイナリdyld_shared_cache_utilを使用することができましたが、現在は機能しないかもしれません。代わりにdyldextractorを使用できます:

{% code overflow="wrap" %}

# dyld_shared_cache_util
dyld_shared_cache_util -extract ~/shared_cache/ /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/dyld_shared_cache_arm64e

# dyldextractor
dyldex -l [dyld_shared_cache_path] # List libraries
dyldex_all [dyld_shared_cache_path] # Extract all
# More options inside the readme

{% endcode %}

古いバージョンでは、/System/Library/dyld/共有キャッシュ を見つけることができるかもしれません。

iOSでは、/System/Library/Caches/com.apple.dyld/ にそれらを見つけることができます。

{% hint style="success" %} dyld_shared_cache_util ツールが機能しなくても、共有dyldバイナリをHopperに渡すことができ、Hopperはすべてのライブラリを識別し、調査したいどれを選択するかを許可します。 {% endhint %}

特別なファイル権限

フォルダの権限

フォルダでは、readリスト化 を許可し、write削除 および ファイルの書き込み を許可し、executeディレクトリのトラバース を許可します。つまり、例えば、ユーザーが実行権限を持たないディレクトリ内のファイルに対する読み取り権限を持っていても、そのファイルを読み取ることはできません

フラグ修飾子

ファイルに設定されるいくつかのフラグがあり、ファイルの動作を異なるものにすることができます。ls -lO /path/directory でディレクトリ内のファイルのフラグを確認できます。

  • uchg: uchange フラグとして知られ、ファイルの変更や削除を防止します。設定するには: chflags uchg file.txt
  • ルートユーザーはフラグを削除してファイルを変更できます
  • restricted: このフラグはファイルをSIPで保護します(このフラグをファイルに追加することはできません)。
  • Sticky bit: スティッキービットが設定されたディレクトリの場合、ディレクトリの所有者またはルートのみがファイルの名前を変更または削除できます。通常、これは/tmpディレクトリに設定され、通常のユーザーが他のユーザーのファイルを削除したり移動したりするのを防ぎます。

ファイルACL

ファイルのACLには、異なるユーザーにより細かい権限を割り当てることができるACE(アクセス制御エントリ)が含まれています。

これらの権限をディレクトリに付与することが可能です: list, search, add_file, add_subdirectory, delete_child, delete_child
そしてファイルに対して: read, write, append, execute

ファイルにACLが含まれている場合、権限をリスト表示する際に「+」が表示されます。

ls -ld Movies
drwx------+   7 username  staff     224 15 Apr 19:42 Movies

ファイルのACLを次のようにして読むことができます

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

あなたはこれですべてのACLを持つファイルを見つけることができます(これは非常に遅いです):

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

リソースフォーク | macOS ADS

これは、MacOS マシンで Alternate Data Streams を取得する方法です。ファイル内にコンテンツを保存することができます。file/..namedfork/rsrc という名前のファイル内の com.apple.ResourceFork という拡張属性に保存します。

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

次のコマンドを使用して、この拡張属性を持つすべてのファイルを見つけることができます:

{% 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"

{% endcode %}

Universal binaries & Mach-o Format

Mac OSのバイナリは通常、universal binariesとしてコンパイルされます。universal binary同じファイル内で複数のアーキテクチャをサポートできます。

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

macOSメモリダンプ

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

リスクカテゴリファイル Mac OS

ディレクトリ/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Systemには、異なるファイル拡張子に関連するリスクに関する情報が格納されています。このディレクトリはファイルをさまざまなリスクレベルに分類し、Safariがこれらのファイルをダウンロード後にどのように処理するかに影響を与えます。カテゴリは次のとおりです

  • LSRiskCategorySafe:このカテゴリのファイルは完全に安全と見なされます。Safariはこれらのファイルを自動的にダウンロード後に開きます。
  • LSRiskCategoryNeutralこれらのファイルには警告がなく、Safariによって自動的に開かれません
  • LSRiskCategoryUnsafeExecutable:このカテゴリのファイルは、そのファイルがアプリケーションであることを示す警告をトリガーします。これはユーザーに警告するセキュリティ対策となります。
  • LSRiskCategoryMayContainUnsafeExecutableこのカテゴリは、実行可能ファイルを含む可能性があるアーカイブなどのファイル用です。Safariは、すべてのコンテンツが安全または中立であることを検証できない限り、警告をトリガーします。

ログファイル

  • $HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2ダウンロードしたファイルに関する情報が含まれています。ダウンロード元のURLなどが含まれます。
  • /var/log/system.logOSXシステムのメインログ。com.apple.syslogd.plistはsysloggingの実行を担当していますlaunchctl listで "com.apple.syslogd" を検索して無効になっていないか確認できます)。
  • /private/var/log/asl/*.aslこれらは興味深い情報が含まれる可能性のあるApple System Logsです。
  • $HOME/Library/Preferences/com.apple.recentitems.plist最近「Finder」を介してアクセスしたファイルやアプリケーションが格納されています。
  • $HOME/Library/Preferences/com.apple.loginitems.plsit:システム起動時に起動するアイテムが格納されています。
  • $HOME/Library/Logs/DiskUtility.logDiskUtility AppのログファイルUSBを含むドライブに関する情報が含まれます
  • /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist:ワイヤレスアクセスポイントに関するデータ。
  • /private/var/db/launchd.db/com.apple.launchd/overrides.plist:無効になっているデーモンのリスト。