# AWS - SageMaker Enum {{#include ../../../../banners/hacktricks-training.md}} ## Visión general del servicio Amazon SageMaker es la plataforma administrada de aprendizaje automático de AWS que aglutina notebooks, infraestructura de entrenamiento, orquestación, registries y endpoints administrados. Una compromisión de recursos de SageMaker normalmente proporciona: - Roles de ejecución IAM de larga duración con amplio acceso a S3, ECR, Secrets Manager o KMS. - Acceso a conjuntos de datos sensibles almacenados en S3, EFS o dentro de feature stores. - Puntos de apoyo en la red dentro de VPCs (Studio apps, training jobs, endpoints). - Presigned URLs de alto privilegio que permiten eludir la autenticación de la consola. Entender cómo está ensamblado SageMaker es clave antes de pivot, persist, or exfiltrate data. ## Componentes principales - **Studio Domains & Spaces**: IDE web (JupyterLab, Code Editor, RStudio). Cada dominio tiene un sistema de archivos EFS compartido y un rol de ejecución predeterminado. - **Notebook Instances**: instancias EC2 gestionadas para notebooks autónomos; usan roles de ejecución separados. - **Training / Processing / Transform Jobs**: contenedores efímeros que obtienen código desde ECR y datos desde S3. - **Pipelines & Experiments**: flujos de trabajo orquestados que describen todos los pasos, inputs y outputs. - **Models & Endpoints**: artefactos empaquetados desplegados para inferencia vía endpoints HTTPS. - **Feature Store & Data Wrangler**: servicios gestionados para preparación de datos y gestión de features. - **Autopilot & JumpStart**: ML automatizado y catálogo de modelos curado. - **MLflow Tracking Servers**: UI/API de MLflow gestionada con tokens de acceso presigned. Cada recurso referencia un execution role, ubicaciones S3, imágenes de contenedor y configuración opcional de VPC/KMS—capture todos ellos durante enumeration. ## Account & Global Metadata ```bash 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 --region $REGION ``` Anota cualquier confianza entre cuentas (execution roles o S3 buckets con external principals) y las restricciones básicas como service control policies o SCPs. ## Dominios de Studio, Apps y Espacios Compartidos ```bash aws sagemaker list-domains --region $REGION aws sagemaker describe-domain --domain-id --region $REGION aws sagemaker list-user-profiles --domain-id-equals --region $REGION aws sagemaker describe-user-profile --domain-id --user-profile-name --region $REGION # Enumerate apps (JupyterServer, KernelGateway, RStudioServerPro, CodeEditor, Canvas, etc.) aws sagemaker list-apps --domain-id-equals --region $REGION aws sagemaker describe-app --domain-id --user-profile-name --app-type JupyterServer --app-name default --region $REGION # Shared collaborative spaces aws sagemaker list-spaces --domain-id-equals --region $REGION aws sagemaker describe-space --domain-id --space-name --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 --region $REGION ``` Qué registrar: - `DomainArn`, `AppSecurityGroupIds`, `SubnetIds`, `DefaultUserSettings.ExecutionRole`. - EFS montados (`HomeEfsFileSystemId`) y directorios home en S3. - Scripts de lifecycle (a menudo contienen credenciales de bootstrap o código adicional para push/pull). > [!TIP] > Presigned Studio URLs pueden eludir la autenticación si se conceden de forma demasiado amplia. ## Notebook Instances & Lifecycle Configs ```bash aws sagemaker list-notebook-instances --region $REGION aws sagemaker describe-notebook-instance --notebook-instance-name --region $REGION aws sagemaker list-notebook-instance-lifecycle-configs --region $REGION aws sagemaker describe-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name --region $REGION ``` Los metadatos del notebook revelan: - Rol de ejecución (`RoleArn`), acceso directo a Internet vs. modo solo VPC. - Ubicaciones S3 en `DefaultCodeRepository`, `DirectInternetAccess`, `RootAccess`. - Scripts de ciclo de vida para credenciales o hooks de persistencia. ## Training, Processing, Transform & Batch Jobs ```bash aws sagemaker list-training-jobs --region $REGION aws sagemaker describe-training-job --training-job-name --region $REGION aws sagemaker list-processing-jobs --region $REGION aws sagemaker describe-processing-job --processing-job-name --region $REGION aws sagemaker list-transform-jobs --region $REGION aws sagemaker describe-transform-job --transform-job-name --region $REGION ``` Examinar: - `AlgorithmSpecification.TrainingImage` / `AppSpecification.ImageUri` – qué imágenes ECR están desplegadas. - `InputDataConfig` & `OutputDataConfig` – S3 buckets, prefixes, y KMS keys. - `ResourceConfig.VolumeKmsKeyId`, `VpcConfig`, `EnableNetworkIsolation` – determinan la postura de red o de cifrado. - `HyperParameters` pueden leak secretos del entorno o cadenas de conexión. ## Pipelines, Experiments & Trials ```bash aws sagemaker list-pipelines --region $REGION aws sagemaker list-pipeline-executions --pipeline-name --region $REGION aws sagemaker describe-pipeline --pipeline-name --region $REGION aws sagemaker list-experiments --region $REGION aws sagemaker list-trials --experiment-name --region $REGION aws sagemaker list-trial-components --trial-name --region $REGION ``` Las definiciones de pipeline detallan cada paso, los roles asociados, las imágenes de contenedor y las variables de entorno. Los componentes Trial a menudo contienen URIs de artefactos de entrenamiento, registros en S3 y métricas que sugieren el flujo de datos sensibles. ## Modelos, Configuraciones de Endpoint & Endpoints Desplegados ```bash aws sagemaker list-models --region $REGION aws sagemaker describe-model --model-name --region $REGION aws sagemaker list-endpoint-configs --region $REGION aws sagemaker describe-endpoint-config --endpoint-config-name --region $REGION aws sagemaker list-endpoints --region $REGION aws sagemaker describe-endpoint --endpoint-name --region $REGION ``` Áreas de enfoque: - URIs S3 de artefactos de modelo (`PrimaryContainer.ModelDataUrl`) e imágenes de contenedores de inferencia. - Configuración de captura de datos del endpoint (bucket S3, KMS) para posible exfiltración de logs. - Endpoints multi-model que usan `S3DataSource` o `ModelPackage` (verificar empaquetado entre cuentas). - Configuraciones de red y grupos de seguridad adjuntos a los endpoints. ## Feature Store, Data Wrangler & Clarify ```bash aws sagemaker list-feature-groups --region $REGION aws sagemaker describe-feature-group --feature-group-name --region $REGION aws sagemaker list-data-wrangler-flows --region $REGION aws sagemaker describe-data-wrangler-flow --flow-name --region $REGION aws sagemaker list-model-quality-job-definitions --region $REGION aws sagemaker list-model-monitoring-schedule --region $REGION ``` Conclusiones de seguridad: - Online feature stores replican datos a Kinesis; comprueba `OnlineStoreConfig.SecurityConfig.KmsKeyId` y la VPC. - Los flujos de Data Wrangler suelen incrustar credenciales JDBC/Redshift o endpoints privados. - Los jobs de Clarify/Model Monitor exportan datos a S3 que podrían ser legibles por todo el mundo o accesibles entre cuentas. ## MLflow Tracking Servers, Autopilot & JumpStart ```bash aws sagemaker list-mlflow-tracking-servers --region $REGION aws sagemaker describe-mlflow-tracking-server --tracking-server-name --region $REGION aws sagemaker list-auto-ml-jobs --region $REGION aws sagemaker describe-auto-ml-job --auto-ml-job-name --region $REGION aws sagemaker list-jumpstart-models --region $REGION aws sagemaker list-jumpstart-script-resources --region $REGION ``` - Los servidores de tracking de MLflow almacenan experimentos y artefactos; las presigned URLs pueden exponerlo todo. - Los jobs de Autopilot lanzan múltiples training jobs: enumera las salidas en busca de datos ocultos. - Las arquitecturas de referencia de JumpStart pueden desplegar roles privilegiados en la cuenta. ## IAM y consideraciones de red - Enumera las políticas de IAM adjuntas a todos los roles de ejecución (Studio, notebooks, training jobs, pipelines, endpoints). - Revisa los contextos de red: subnets, security groups, VPC endpoints. Muchas organizaciones aíslan los training jobs pero olvidan restringir el tráfico saliente. - Revisa las políticas de los buckets S3 referenciadas en `ModelDataUrl`, `DataCaptureConfig`, `InputDataConfig` para detectar acceso externo. ## 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-unauthenticated-enum-access/aws-sagemaker-unauthenticated-enum/README.md {{#endref}} ## References - [AWS SageMaker Documentation](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) - [AWS CLI SageMaker Reference](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/index.html) - [SageMaker Studio Architecture](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio.html) - [SageMaker Security Best Practices](https://docs.aws.amazon.com/sagemaker/latest/dg/security.html) {{#include ../../../../banners/hacktricks-training.md}}