AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

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

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

VPC&ネットワーキング

VPCとそのコンポーネントについて学ぶ:

EC2

Amazon EC2は仮想サーバーを起動するために使用されます。セキュリティネットワーキングの構成、ストレージの管理が可能です。Amazon EC2の柔軟性は、リソースを上下にスケーリングできる能力に現れており、異なる要件の変更や人気の急増に効果的に適応します。この機能により、正確なトラフィック予測の必要性が薄れます。

EC2で列挙する興味深い事柄:

  • 仮想マシン

  • SSHキー

  • ユーザーデータ

  • 既存のEC2/AMIs/スナップショット

  • ネットワーキング

  • ネットワーク

  • サブネット

  • パブリックIP

  • 開いているポート

  • AWS外部の他のネットワークとの統合接続

インスタンスプロファイル

EC2インスタンスで実行されるアプリケーションに権限を付与するためには、少しの追加構成が必要です。EC2インスタンスで実行されるアプリケーションは、仮想化されたオペレーティングシステムによってAWSから抽象化されています。この追加の分離のため、AWSロールとその関連する権限をEC2インスタンスに割り当て、そのアプリケーションで利用可能にするために追加の手順が必要です。

この追加の手順は、インスタンスにアタッチされたインスタンスプロファイルの作成です。インスタンスプロファイルにはロールが含まれ、そのロールの一時的な資格情報をインスタンスで実行されるアプリケーションに提供できます。それらの一時的な資格情報は、その後、アプリケーションのAPI呼び出しで使用され、ロールが指定するリソースにのみアクセスし、そのリソースにのみアクセスを制限できます。EC2インスタンスには1つのロールしか割り当てられず、インスタンス上のすべてのアプリケーションが同じロールと権限を共有します。

メタデータエンドポイント

AWS EC2メタデータは、実行時にインスタンスで利用可能なAmazon Elastic Compute Cloud(EC2)インスタンスに関する情報です。このメタデータは、インスタンスに関する情報(インスタンスID、実行中の可用性ゾーン、インスタンスに関連付けられたIAMロール、インスタンスのホスト名など)を提供するために使用されます。

列挙

# Get EC2 instances
aws ec2 describe-instances
aws ec2 describe-instance-status #Get status from running instances

# Get user data from each ec2 instance
for instanceid in $(aws ec2 describe-instances --profile <profile> --region us-west-2 | grep -Eo '"i-[a-zA-Z0-9]+' | tr -d '"'); do
echo "Instance ID: $instanceid"
aws ec2 describe-instance-attribute --profile <profile> --region us-west-2 --instance-id "$instanceid" --attribute userData | jq ".UserData.Value" | tr -d '"' | base64 -d
echo ""
echo "-------------------"
done

# Instance profiles
aws iam list-instance-profiles
aws iam list-instance-profiles-for-role --role-name <name>

# Get tags
aws ec2 describe-tags

# Get volumes
aws ec2 describe-volume-status
aws ec2 describe-volumes

# Get snapshots
aws ec2 describe-snapshots --owner-ids self

# Scheduled instances
aws ec2 describe-scheduled-instances

# Get custom images
aws ec2 describe-images --owners self

# Get Elastic IPs
aws ec2 describe-addresses

# Get current output
aws ec2 get-console-output --instance-id [id]

# Get VPN customer gateways
aws ec2 describe-customer-gateways
aws ec2 describe-vpn-gateways
aws ec2 describe-vpn-connections

# List conversion tasks to upload/download VMs
aws ec2 describe-conversion-tasks
aws ec2 describe-import-image-tasks

# Get Bundle Tasks
aws ec2 describe-bundle-tasks

# Get Classic Instances
aws ec2 describe-classic-link-instances

# Get Dedicated Hosts
aws ec2 describe-hosts

# Get SSH Key Pairs
aws ec2 describe-key-pairs

# Get Internet Gateways
aws ec2 describe-internet-gateways

# Get NAT Gateways
aws ec2 describe-nat-gateways

# Get subnetworks
aws ec2 describe-subnets

# Get FW rules
aws ec2 describe-network-acls

# Get security groups
aws ec2 describe-security-groups

# Get interfaces
aws ec2 describe-network-interfaces

# Get routes table
aws ec2 describe-route-tables

# Get VPCs
aws ec2 describe-vpcs
aws ec2 describe-vpc-peering-connections

認証されていないアクセス

特権昇格

次のページでは、EC2権限を悪用して特権を昇格する方法を確認できます:

攻撃後の活動

EBS

Amazon EBS(Elastic Block Store)スナップショットは基本的にAWS EBSボリュームの静的バックアップです。つまり、特定の時点でEC2インスタンスに接続されたディスクコピーです。EBSスナップショットはリージョン間やアカウント間でコピーしたり、ダウンロードしてローカルで実行したりすることができます。

スナップショットにはソースコードやAPIキーなどの機密情報が含まれる可能性があるため、機会があればチェックすることをお勧めします。

AMIとEBSの違い

AMIEC2インスタンスを起動するために使用され、EC2 スナップショットはEBSボリュームに保存されているデータのバックアップと復旧に使用されます。EC2スナップショットを使用して新しいAMIを作成することができますが、AMIとは異なり、オペレーティングシステム、アプリケーションサーバー、アプリケーションの実行に必要な他のソフトウェアに関する情報は含まれません。

特権昇格

次のページでは、EBS権限を悪用して特権を昇格する方法を確認できます:

SSM

**Amazon Simple Systems Manager(SSM)**は、EC2インスタンスのフリートをリモートで管理し、その管理を容易にすることができます。これらのインスタンスのそれぞれは、SSMエージェントサービスを実行する必要があります。このサービスはアクションを受け取り、AWS APIから実行します

SSMエージェントにより、Systems Managerはこれらのリソースを更新、管理、構成できます。エージェントはAWSクラウド内のSystems Managerサービスからのリクエストを処理し、リクエストで指定されたとおりに実行します。

SSMエージェントは 一部のAMIに事前インストールされていますが、インスタンスに手動でインストールする必要があります。また、インスタンス内で使用されるIAMロールには、通信を行うためにAmazonEC2RoleforSSMポリシーがアタッチされている必要があります。

列挙

aws ssm describe-instance-information
aws ssm describe-parameters
aws ssm describe-sessions --state [Active|History]
aws ssm describe-instance-patches --instance-id <id>
aws ssm describe-instance-patch-states --instance-ids <id>
aws ssm describe-instance-associations-status --instance-id <id>

EC2インスタンスでSystems Managerが実行されているかどうかを確認するには、次のコマンドを実行するだけです:

ps aux | grep amazon-ssm

特権昇格

次のページでは、SSM権限を悪用して特権を昇格する方法を確認できます:

ELB

Elastic Load Balancing(ELB)は、Amazon Web Services(AWS)デプロイメント向けの負荷分散サービスです。ELBは自動的に着信アプリケーショントラフィックを分散し、トラフィック要求に応じてリソースをスケーリングします。

列挙

# List internet-facing ELBs
aws elb describe-load-balancers
aws elb describe-load-balancers | jq '.LoadBalancerDescriptions[]| select( .Scheme | contains("internet-facing"))|.DNSName'

# DONT FORGET TO CHECK VERSION 2
aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>

ランチテンプレート&オートスケーリンググループ

列挙

# Launch templates
aws ec2 describe-launch-templates
aws ec2 describe-launch-templates --launch-template-id <launch_template_id>
## Get details, like user data
aws ec2 describe-launch-template-versions --launch-template-id <launch_template_id>

# Autoscaling
aws autoscaling describe-auto-scaling-groups
aws autoscaling describe-auto-scaling-instances
aws autoscaling describe-launch-configurations
aws autoscaling describe-load-balancer-target-groups
aws autoscaling describe-load-balancers

Nitro

AWS Nitroは、AWS EC2インスタンスの基盤となる革新的なテクノロジーのスイートです。Amazonによって導入され、セキュリティ、パフォーマンス、信頼性を向上させるために、Nitroはカスタムハードウェアコンポーネントと軽量ハイパーバイザーを活用しています。従来の仮想化機能の多くを専用ハードウェアとソフトウェアに抽象化し、攻撃面を最小限に抑え、リソース効率を向上させています。仮想化機能をオフロードすることで、NitroはEC2インスタンスがベアメタルに近いパフォーマンスを提供できるようにし、リソース集約型アプリケーションに特に有益です。さらに、Nitroセキュリティチップはハードウェアとファームウェアのセキュリティを確保し、その堅牢なアーキテクチャをさらに強化しています。

詳細情報や列挙方法については、以下から入手できます:

VPN

VPNを使用すると、オンプレミスネットワーク(サイト間VPN)または従業員のノートパソコン(クライアントVPN)をAWS VPCに接続し、サービスにインターネットを公開することなくアクセスできます。

基本的なAWS VPNコンポーネント

  1. カスタマーゲートウェイ:

  • カスタマーゲートウェイは、VPN接続のあなたの側を表すためにAWSで作成するリソースです。

  • これは、サイト間VPN接続のあなたの側にある物理デバイスまたはソフトウェアアプリケーションです。

  • ルーティング情報とネットワークデバイス(ルーターまたはファイアウォールなど)のパブリックIPアドレスをAWSに提供して、カスタマーゲートウェイを作成します。

  • VPN接続の設定の参照点として機能し、追加料金は発生しません。

  1. 仮想プライベートゲートウェイ:

  • 仮想プライベートゲートウェイ(VPG)は、サイト間VPN接続のAmazon側にあるVPNコンセントレータです。

  • これは、VPCにアタッチされ、VPN接続のターゲットとして機能します。

  • VPGはVPN接続のAWS側エンドポイントです。

  • VPGはVPCとオンプレミスネットワーク間の安全な通信を処理します。

  1. サイト間VPN接続:

  • サイト間VPN接続は、安全なIPsec VPNトンネルを介してオンプレミスネットワークをVPCに接続します。

  • このタイプの接続には、カスタマーゲートウェイと仮想プライベートゲートウェイが必要です。

  • データセンターやネットワークとAWS環境との間の安全で安定した一貫した通信に使用されます。

  • 通常、定期的で長期的な接続に使用され、接続経由で転送されるデータ量に基づいて請求されます。

  1. クライアントVPNエンドポイント:

  • クライアントVPNエンドポイントは、クライアントVPNセッションを有効にし管理するためにAWSで作成するリソースです。

  • 個々のデバイス(ノートパソコン、スマートフォンなど)がAWSリソースまたはオンプレミスネットワークに安全に接続できるように使用されます。

  • サイト間VPNとは異なり、個々のクライアント向けに設計されており、ネットワーク全体を接続するのではなく、個々のクライアントデバイスに使用されます。

  • クライアントVPNでは、各クライアントデバイスがVPNクライアントソフトウェアを使用して安全な接続を確立します。

AWS VPNの利点とコンポーネントに関する詳細情報はこちらで確認できます

列挙

# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
aws ec2 describe-client-vpn-endpoints

## Get AWS network info related to the vpn endpoint
aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id <id>

## Get AWS subnet & ip range the VPN iconnected to
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id <id>

## Check authorization rules
aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id <id>

## Get current connections to the VPN endpoint
aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id <id>

# Get VPN gateways and check with which VPC each is connected
aws ec2 describe-vpn-gateways

# Get VPN site-to-site connections
aws ec2 describe-vpn-connections

ローカル列挙

ローカル一時資格情報

AWS VPNクライアントを使用してVPNに接続すると、ユーザーは通常、VPNにアクセスするためにAWSにログインします。その後、VPN接続を確立するためにローカルにいくつかのAWS資格情報が作成および保存されます。これらの資格情報は$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt保存されており、AccessKeySecretKey、およびTokenが含まれています。

これらの資格情報はユーザーarn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentialsに属しています(TODO: この資格情報の権限についてさらに調査)。

opvn構成ファイル

VPN接続が確立された場合、システム内で**.opvn構成ファイルを検索する必要があります。さらに、構成を見つけることができる場所の1つは$HOME/.config/AWSVPNClient/OpenVpnConfigs**です。

ポストエクスプロイテーション

参考文献

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

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

最終更新