Mapa de la infraestructura de IA
Qué componentes tiene un despliegue de IA (servidores de modelos, MLOps, bases vectoriales, registros, notebooks), en qué puertos escuchan y por qué un escaneo clásico no los reconoce.
Antes de atacar o de defender algo hay que saber que existe. El reconocimientoReconocimientoPrimera fase de un ataque: descubrir qué servicios, versiones y datos expone un objetivo antes de tocar nada. En IA incluye servidores de modelos, registros, bases vectoriales y notebooks. es esa fase: construir la lista de objetivos. En una red tradicional ya sabes qué buscar (80/443 web, 22 SSH, 3306/5432 bases de datos). La infraestructura de IA escucha en puertos que casi nadie tiene en su lista y habla protocolos (gRPC, formatos de tensores, APIs compatibles con OpenAI) que un escáner HTTP genérico interpreta mal.
Un sistema de IA en producción no es un servidor: es un conjunto de servicios especializados, uno por cada etapa del ciclo de vida del modelo. Esta nota es el inventario; la anatomía de un sistema de IA explica cómo se conectan.
Los cinco grupos de componentes#
Cargan el modelo en memoria y exponen una API de predicción. Son la puerta de entrada.
- NVIDIA Triton: HTTP
8000, gRPC8001, métricas Prometheus8002. Tres puertos para un servicio. - TensorFlow Serving: gRPC
8500, HTTP8501. - TorchServe: inferencia
8080, API de gestión8081, métricas8082. - Ollama:
11434. vLLM: normalmente8000. Ambos hablan formato compatible con OpenAI.
Casi todos exponen HTTP y gRPC: gRPC es más eficiente entre servicios internos con tensores grandes, HTTP es más cómodo para los clientes.
Gestionan experimentos, entrenamiento y despliegue. Son los objetivos más valiosos porque lo contienen todo.
- MLflow Tracking:
5000. Guarda cada experimento, hiperparámetro, métrica y artefacto. - Kubeflow: corre sobre Kubernetes (
80/443) y orquesta pipelines, notebooks y despliegues. - Ray: dashboard en
8265, Ray Serve en8000. Su dashboard permite lanzar trabajos: es el que explotó la campaña ShadowRay.
Guardan embeddingsEmbeddingVector numérico que representa el significado de un texto; textos parecidos producen vectores cercanos, lo que permite la búsqueda semántica de un vector store. y alimentan el RAGRAGPatrón que recupera fragmentos relevantes de una base de conocimiento y los inyecta en el contexto del LLM para que responda con ellos.. Si hay un chatbot que «conoce tus documentos», hay una detrás.
- Qdrant: HTTP
6333, gRPC6334. - Weaviate:
8080, con endpoint GraphQL. - Milvus:
19530(gRPC). - Chroma:
8000.
Su esquema ya cuenta una historia: una colección rrhh-politicas-internas con vectores de 768 dimensiones dice qué hace ese RAG y con qué familia de modelos de embedding.
El registro de modelosRegistro de modelosCatálogo versionado de modelos entrenados: guarda artefactos, etapas (staging, producción), URIs de almacenamiento y quién creó cada versión. guarda los archivos serializados (.pkl, .pt, .onnx, .mar), el historial de versiones, la etapa de cada una (staging, producción, archivado), la URI del artefacto en el almacenamiento en la nube y quién la creó.
Un registro sin proteger es el mejor hallazgo de reconocimiento: mapa completo del portafolio de ML de la organización en un solo sitio.
- Jupyter (
8888): se lanza a menudo con--ip=0.0.0.0y sin token. Eso es una terminal para quien llegue al puerto, y las celdas suelen traer credenciales en claro. - MinIO (
9000API,9001consola): almacenamiento compatible con S3 para artefactos; el listado de buckets se deja habilitado con frecuencia. - Métricas Prometheus (
8002Triton,8082TorchServe): filtran nombres de modelo, tamaños de lote, uso de GPU y latencias. Dibujan la topología del despliegue sin tocar la API de inferencia.
Tabla de referencia#
| Componente | Puertos por defecto | Protocolo | Primer endpoint que mirar |
|---|---|---|---|
| NVIDIA Triton | 8000, 8001, 8002 | HTTP, gRPC, métricas | /v2/health/ready, /v2 |
| TensorFlow Serving | 8500, 8501 | gRPC, HTTP | /v1/models/<nombre> |
| TorchServe | 8080, 8081, 8082 | HTTP | /ping, /models (gestión en 8081) |
| Ollama | 11434 | HTTP | /api/tags, /api/show |
| vLLM | 8000 | HTTP (OpenAI-like) | /v1/models |
| MLflow | 5000 | HTTP | /api/2.0/mlflow/experiments/search |
| Kubeflow | 80, 443 | HTTP | /pipeline/apis/v1beta1/pipelines |
| Ray | 8265, 8000 | HTTP | Dashboard, /api/jobs/ |
| Qdrant | 6333, 6334 | HTTP, gRPC | /collections |
| Weaviate | 8080 | HTTP, GraphQL | /v1/schema, /v1/meta |
| Milvus | 19530 | gRPC | Conexión al puerto |
| Jupyter | 8888 | HTTP | /api/kernels, /api/contents |
| MinIO | 9000, 9001 | HTTP (S3) | Listado de buckets |
| Métricas ML | 8002, 8082 | HTTP | /metrics |
Qué cambia respecto a una red clásica#
Catorce componentes y más de veinte puertos. Una aplicación web convencional añade tres o cinco puertos a la red; sumar un stack de IA multiplica la superficie de ataqueSuperficie de ataqueConjunto de puntos por los que un atacante puede entrar, causar un efecto o extraer datos de un sistema. de red por tres como poco. Y hay una segunda diferencia, más importante que el número: estos servicios nacieron para científicos de datos en entornos de confianza. Muchos no traen autenticación por defecto porque se diseñaron para correr dentro de un clúster «seguro».
Paso 1 de 4Una subred, seis hosts
La subred 10.10.45.0/24 tiene seis hosts. Desde fuera no sabes cuáles son de IA: de momento solo ves direcciones.
Dónde se ve en la realidad#
En enero de 2026 un barrido en Shodan encontró decenas de miles de instancias de agentes e infraestructura de IA expuestas. Lo útil no es la cifra, sino el patrón de lo que aparecía: dashboards de MLflow sin autenticación en el 5000, notebooks Jupyter abiertos (algunos ya con mineros de Monero instalados por atacantes anteriores), dashboards de Ray en el 8265 y endpoints de Triton en el 8000. Las búsquedas que los encuentran son triviales:
port:5000 "MLflow"port:8888 title:"Home Page - Select or create a notebook"http.title:"Ray Dashboard"port:8001 "triton"Si conoces puertos y banners, encontrar infraestructura de IA es fácil. Lo difícil es acordarse de buscarla.
Tu turno#
Tu turno
Auditoría de una subred de IA
Te dan la subred interna 10.10.45.0/24 y el trabajo de encontrar todo componente de IA que haya.
- Escribe dos comandos de
nmap: uno para los puertos «clásicos» (22, 80, 443, 5432) y otro para los de la tabla (5000, 6333, 6334, 8000, 8001, 8002, 8888, 9000, 9001), ambos con-sV. - Compara los resultados: qué hosts solo tienen servicios tradicionales y cuáles tienen IA.
- Para cada puerto de IA abierto, anota IP, puerto y tu hipótesis de componente. ¿En cuáles es ambiguo (como el
8000)?
Reto
¿Qué hago con un 8000 ambiguo?
▸Mostrar solución
Pide la API que lo desambigua, sin modificar nada: GET /v2/health/ready y GET /v2 responden en
Triton; GET /v1/models en vLLM; GET /api/v1/heartbeat (o /api/v2/heartbeat) en Chroma. El
siguiente paso está en la nota de enumeración.
En resumen#
- Un despliegue de IA son cinco grupos de servicios: servir modelos, MLOps, bases vectoriales, registros y soporte.
- Usan puertos poco habituales y a menudo HTTP y gRPC a la vez; varios comparten número (
8000,8080). - Los más valiosos son el registro de modelos y la plataforma MLOps, porque contienen todo el historial.
- Muchos nacieron sin autenticación pensando en una red de confianza; expuestos, son hallazgos fáciles.
- Tener un inventario propio de estos servicios es el primer control defensivo.