hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries
2023-10-09 11:53:00 +00:00
..
macos-bundles.md Translated ['macos-hardening/macos-security-and-privilege-escalation/REA 2023-09-11 00:05:47 +00:00
macos-installers-abuse.md Translated to Japanese 2023-07-07 23:42:27 +00:00
macos-memory-dumping.md Translated to Japanese 2023-07-07 23:42:27 +00:00
macos-sensitive-locations.md Translated to Japanese 2023-07-07 23:42:27 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2023-10-09 11:53:00 +00:00
universal-binaries-and-mach-o-format.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2023-09-28 20:14:46 +00:00

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

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

ファイル階層レイアウト

  • /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フォルダにマップされます。各アプリには、アプリケーションのバンドルIDcom.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ディスクイメージファイルはインストーラーに非常に頻繁に使用されます。
  • .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共有キャッシュ

macOSおよびiOSでは、フレームワークやdylibなどのシステム共有ライブラリは、単一のファイルであるdyld共有キャッシュに結合されます。これにより、コードの読み込みが高速化されます。

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

単一のファイルdylib共有キャッシュからライブラリを抽出するためには、以前はバイナリの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 %}

特殊なファイルのパーミッション

フォルダのパーミッション

フォルダでは、読み取りリスト表示を許可し、書き込みファイルの削除書き込みを許可し、実行ディレクトリの移動を許可します。したがって、例えば、ファイル内の読み取り権限を持つユーザーが、実行権限がないディレクトリ内にあるファイルを読み取ることはできません

フラグ修飾子

ファイルに設定されているフラグによって、ファイルの動作が異なるようになります。ls -lO /path/directoryでディレクトリ内のファイルのフラグをチェックすることができます。

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

ファイルACL

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

ディレクトリにこれらの権限を付与することができます:listsearchadd_fileadd_subdirectorydelete_childdelete_child
ファイルには次の権限があります:readwriteappendexecute

ファイルに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を持つすべてのファイルを見つけることができます(これは非常に遅いです):

find / -type f -exec ls -le {} \; 2>/dev/null

このコマンドは、ACLを持つすべてのファイルを検索し、それぞれのファイルのACL情報を表示します。ただし、このコマンドは非常に時間がかかる可能性があるため、注意が必要です。

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

リソースフォーク | macOS ADS

これは、macOSマシンでの代替データストリームを取得する方法です。ファイルを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 %}

ユニバーサルバイナリとMach-oフォーマット

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

{% 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 には、ファイルの拡張子に応じたリスクが含まれています。

可能なカテゴリは以下の通りです:

  • LSRiskCategorySafe完全に安全ダウンロード後にSafariが自動的に開く
  • LSRiskCategoryNeutral:警告はないが、自動的に開かれない
  • LSRiskCategoryUnsafeExecutable:「このファイルはアプリケーションです...」という警告をトリガーする
  • LSRiskCategoryMayContainUnsafeExecutable実行可能ファイルを含むアーカイブなどに使用されます。Safariがすべてのコンテンツが安全または中立であることを判断できない場合、警告をトリガーします。

ログファイル

  • $HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2ダウンロードされたファイルに関する情報が含まれています。ダウンロード元のURLなど。
  • /var/log/system.logOSXシステムのメインログ。sysloggingの実行はcom.apple.syslogd.plistが担当しています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アプリのログファイルドライブに関する情報、USBを含む
  • /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist:ワイヤレスアクセスポイントに関するデータ。
  • /private/var/db/launchd.db/com.apple.launchd/overrides.plist:無効化されたデーモンのリスト。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥