.. | ||
macos-bundles.md | ||
macos-installers-abuse.md | ||
macos-memory-dumping.md | ||
macos-sensitive-locations.md | ||
README.md | ||
universal-binaries-and-mach-o-format.md |
macOS ファイル、フォルダ、バイナリ&メモリ
htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ!
HackTricks をサポートする他の方法:
- HackTricks で企業を宣伝したいまたはHackTricks をPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスウォッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- Discord グループに参加💬(https://discord.gg/hRep4RUj7f)またはtelegram グループに参加するか、Twitter 🐦でフォローする @carlospolopm。
- HackTricks(https://github.com/carlospolop/hacktricks)とHackTricks CloudのGitHub リポジトリに PR を提出することで、あなたのハッキングテクニックを共有してください。
ファイル階層レイアウト
- /Applications: インストールされたアプリはここにあるはずです。すべてのユーザがアクセスできます。
- /bin: コマンドラインバイナリ
- /cores: 存在する場合、コアダンプを保存するために使用されます
- /dev: すべてがファイルとして扱われるため、ここにハードウェアデバイスが保存されていることがあります。
- /etc: 設定ファイル
- /Library: 好み、キャッシュ、ログに関連する多くのサブディレクトリとファイルがここに見つかります。ルートと各ユーザのディレクトリに Library フォルダが存在します。
- /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 ディスクイメージファイルはインストーラで非常に頻繁に使用されます。.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
: xar(eXtensible 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 などのすべてのシステム共有ライブラリが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 %}
特別なファイル権限
フォルダの権限
フォルダでは、読み取りはリスト化を可能にし、書き込みは削除およびファイルの書き込みを可能にし、実行はディレクトリをトラバースすることを可能にします。つまり、例えば、ユーザーが実行権限を持たないディレクトリ内のファイルに読み取り権限を持っている場合、そのユーザーはファイルを読むことができません。
フラグ修飾子
ファイルに設定されるいくつかのフラグがあり、ファイルの動作を異なるものにすることができます。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"
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.log
:OSXシステムのメインログ。com.apple.syslogd.plistはsysloggingの実行を担当しています("com.apple.syslogd"をlaunchctl list
で検索して無効になっていないか確認できます)。/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.log
:DiskUtility Appのログファイル(USBを含むドライブに関する情報)。/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
:ワイヤレスアクセスポイントに関するデータ。/private/var/db/launchd.db/com.apple.launchd/overrides.plist
:無効になっているデーモンのリスト。