9.8 KiB
AWS - SageMaker Enum
{{#include ../../../../banners/hacktricks-training.md}}
Przegląd usługi
Amazon SageMaker to zarządzana przez AWS platforma uczenia maszynowego, która scala notebooks, infrastrukturę treningową, orkiestrację, rejestry i zarządzane endpoints. Kompromitacja zasobów SageMaker zazwyczaj daje:
- Długotrwałe role uruchomieniowe IAM z szerokim dostępem do S3, ECR, Secrets Manager lub KMS.
- Dostęp do wrażliwych zbiorów danych przechowywanych w S3, EFS lub wewnątrz feature stores.
- Sieciowe przyczółki wewnątrz VPC (Studio apps, training jobs, endpoints).
- Presigned URLs o wysokich uprawnieniach, które omijają uwierzytelnianie w konsoli.
Zrozumienie, jak zbudowany jest SageMaker, jest kluczowe zanim wykonasz pivot, persist lub exfiltrate data.
Główne elementy składowe
- Studio Domains & Spaces: Web IDE (JupyterLab, Code Editor, RStudio). Każda domena ma współdzielony system plików EFS i domyślną rolę wykonawczą.
- Notebook Instances: Zarządzane instancje EC2 dla samodzielnych notebooków; używają oddzielnych ról wykonawczych.
- Training / Processing / Transform Jobs: Efemeryczne kontenery, które pobierają kod z ECR i dane z S3.
- Pipelines & Experiments: Orkiestrowane workflowy, które opisują wszystkie kroki, wejścia i wyjścia.
- Models & Endpoints: Spakowane artefakty wdrożone do inferencji za pomocą punktów końcowych HTTPS.
- Feature Store & Data Wrangler: Zarządzane usługi do przygotowania danych i zarządzania cechami.
- Autopilot & JumpStart: Zautomatyzowane ML i kuratorowany katalog modeli.
- MLflow Tracking Servers: Zarządzane serwery MLflow z UI/API i presigned access tokens.
Każdy zasób odnosi się do roli wykonawczej, lokalizacji S3, obrazów kontenerów oraz opcjonalnej konfiguracji VPC/KMS — przechwyć wszystkie podczas enumeration.
Konto i metadane globalne
REGION=us-east-1
# Portfolio status, used when provisioning Studio resources
aws sagemaker get-sagemaker-servicecatalog-portfolio-status --region $REGION
# List execution roles used by models (extend to other resources as needed)
aws sagemaker list-models --region $REGION --query 'Models[].ExecutionRoleArn' --output text | tr ' ' '
' | sort -u
# Generic tag sweep across any SageMaker ARN you know
aws sagemaker list-tags --resource-arn <sagemaker-arn> --region $REGION
Zanotuj wszelkie zaufania między kontami (execution roles lub S3 buckets z zewnętrznymi principalami) oraz podstawowe ograniczenia, takie jak service control policies lub SCPs.
Studio Domains, Apps & Shared Spaces
aws sagemaker list-domains --region $REGION
aws sagemaker describe-domain --domain-id <domain-id> --region $REGION
aws sagemaker list-user-profiles --domain-id-equals <domain-id> --region $REGION
aws sagemaker describe-user-profile --domain-id <domain-id> --user-profile-name <profile> --region $REGION
# Enumerate apps (JupyterServer, KernelGateway, RStudioServerPro, CodeEditor, Canvas, etc.)
aws sagemaker list-apps --domain-id-equals <domain-id> --region $REGION
aws sagemaker describe-app --domain-id <domain-id> --user-profile-name <profile> --app-type JupyterServer --app-name default --region $REGION
# Shared collaborative spaces
aws sagemaker list-spaces --domain-id-equals <domain-id> --region $REGION
aws sagemaker describe-space --domain-id <domain-id> --space-name <space> --region $REGION
# Studio lifecycle configurations (shell scripts at start/stop)
aws sagemaker list-studio-lifecycle-configs --region $REGION
aws sagemaker describe-studio-lifecycle-config --studio-lifecycle-config-name <name> --region $REGION
What to record:
DomainArn,AppSecurityGroupIds,SubnetIds,DefaultUserSettings.ExecutionRole.- Zamontowane EFS (
HomeEfsFileSystemId) i katalogi domowe S3. - Skrypty lifecycle (często zawierają bootstrap credentials lub dodatkowy kod push/pull).
Tip
Presigned Studio URLs mogą ominąć uwierzytelnianie, jeśli są przyznane zbyt szeroko.
Notebook Instances & Lifecycle Configs
aws sagemaker list-notebook-instances --region $REGION
aws sagemaker describe-notebook-instance --notebook-instance-name <name> --region $REGION
aws sagemaker list-notebook-instance-lifecycle-configs --region $REGION
aws sagemaker describe-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name <cfg> --region $REGION
Metadane notebooka ujawniają:
- Rola wykonawcza (
RoleArn), bezpośredni dostęp do internetu vs. tryb tylko VPC. - Lokalizacje S3 w
DefaultCodeRepository,DirectInternetAccess,RootAccess. - Skrypty cyklu życia dla poświadczeń lub mechanizmów utrwalania.
Szkolenie, Przetwarzanie, Transformacja & Zadania wsadowe
aws sagemaker list-training-jobs --region $REGION
aws sagemaker describe-training-job --training-job-name <job> --region $REGION
aws sagemaker list-processing-jobs --region $REGION
aws sagemaker describe-processing-job --processing-job-name <job> --region $REGION
aws sagemaker list-transform-jobs --region $REGION
aws sagemaker describe-transform-job --transform-job-name <job> --region $REGION
Przeanalizuj:
AlgorithmSpecification.TrainingImage/AppSpecification.ImageUri– które obrazy ECR są wdrożone.InputDataConfig&OutputDataConfig– S3 buckets, prefiksy oraz KMS keys.ResourceConfig.VolumeKmsKeyId,VpcConfig,EnableNetworkIsolation– określają konfigurację sieciową lub szyfrowania.HyperParametersmogą leak sekrety środowiska lub connection strings.
Pipeliny, Eksperymenty i Próby
aws sagemaker list-pipelines --region $REGION
aws sagemaker list-pipeline-executions --pipeline-name <pipeline> --region $REGION
aws sagemaker describe-pipeline --pipeline-name <pipeline> --region $REGION
aws sagemaker list-experiments --region $REGION
aws sagemaker list-trials --experiment-name <experiment> --region $REGION
aws sagemaker list-trial-components --trial-name <trial> --region $REGION
Definicje pipeline'ów opisują każdy krok, przypisane role, obrazy kontenerów oraz zmienne środowiskowe. Komponenty Trial często zawierają URI artefaktów treningowych, logi S3 oraz metryki sugerujące przepływ danych wrażliwych.
Modele, konfiguracje punktów końcowych & wdrożone punkty końcowe
aws sagemaker list-models --region $REGION
aws sagemaker describe-model --model-name <name> --region $REGION
aws sagemaker list-endpoint-configs --region $REGION
aws sagemaker describe-endpoint-config --endpoint-config-name <cfg> --region $REGION
aws sagemaker list-endpoints --region $REGION
aws sagemaker describe-endpoint --endpoint-name <endpoint> --region $REGION
Główne obszary:
- URI artefaktów modeli w S3 (
PrimaryContainer.ModelDataUrl) oraz obrazy kontenerów do inferencji. - Konfiguracja przechwytywania danych endpointu (S3 bucket, KMS) dla możliwego log exfil.
- Endpointy multi-modelowe używające
S3DataSourcelubModelPackage(sprawdź pakowanie międzykontowe). - Konfiguracje sieciowe i grupy zabezpieczeń przypisane do endpointów.
Feature Store, Data Wrangler & Clarify
aws sagemaker list-feature-groups --region $REGION
aws sagemaker describe-feature-group --feature-group-name <feature-group> --region $REGION
aws sagemaker list-data-wrangler-flows --region $REGION
aws sagemaker describe-data-wrangler-flow --flow-name <flow> --region $REGION
aws sagemaker list-model-quality-job-definitions --region $REGION
aws sagemaker list-model-monitoring-schedule --region $REGION
Wnioski dotyczące bezpieczeństwa:
- Online feature stores replikują dane do Kinesis; sprawdź
OnlineStoreConfig.SecurityConfig.KmsKeyIdi konfigurację VPC. - Przepływy Data Wrangler często zawierają osadzone poświadczenia JDBC/Redshift lub prywatne punkty końcowe.
- Zadania Clarify/Model Monitor eksportują dane do S3, które mogą być publicznie czytelne (world-readable) lub dostępne między kontami.
MLflow Tracking Servers, Autopilot & JumpStart
aws sagemaker list-mlflow-tracking-servers --region $REGION
aws sagemaker describe-mlflow-tracking-server --tracking-server-name <name> --region $REGION
aws sagemaker list-auto-ml-jobs --region $REGION
aws sagemaker describe-auto-ml-job --auto-ml-job-name <name> --region $REGION
aws sagemaker list-jumpstart-models --region $REGION
aws sagemaker list-jumpstart-script-resources --region $REGION
- Serwery śledzenia MLflow przechowują eksperymenty i artefakty; presigned URLs mogą ujawniać wszystko.
- Zadania Autopilot uruchamiają wiele training jobs — enumerate outputs w poszukiwaniu ukrytych danych.
- JumpStart reference architectures mogą wdrażać uprzywilejowane role w koncie.
IAM i kwestie sieciowe
- Enumerate IAM policies przypisane do wszystkich execution roles (Studio, notebooks, training jobs, pipelines, endpoints).
- Sprawdź konteksty sieciowe: subnets, security groups, VPC endpoints. Wiele organizacji izoluje training jobs, ale zapomina ograniczyć ruch wychodzący.
- Przejrzyj polityki bucketów S3 odwoływane w
ModelDataUrl,DataCaptureConfig,InputDataConfigpod kątem dostępu zewnętrznego.
Privilege Escalation
{{#ref}} ../../aws-privilege-escalation/aws-sagemaker-privesc/README.md {{#endref}}
Persistence
{{#ref}} ../../aws-persistence/aws-sagemaker-persistence/README.md {{#endref}}
Post-Exploitation
{{#ref}} ../../aws-post-exploitation/aws-sagemaker-post-exploitation/README.md {{#endref}}
Unauthorized Access
{{#ref}} ../aws-sagemaker-unauthenticated-enum/README.md {{#endref}}
Źródła
- AWS SageMaker Documentation
- AWS CLI SageMaker Reference
- SageMaker Studio Architecture
- SageMaker Security Best Practices
{{#include ../../../../banners/hacktricks-training.md}}