Ubicación

El archivo profile.yaml debe estar en el mismo directorio que el binario justserver:

dist/
├── justserver
├── profile.yaml    ← aquí
├── server.rsa.crt
└── server.rsa.key

Estructura completa

Teamserver:
  interface: "0.0.0.0"
  port: 4321
  endpoint: "/endpoint"
  password: "pass"
  only_password: true
  operators:
    operator1: "pass1"
    operator2: "pass2"
  cert: "server.rsa.crt"
  key: "server.rsa.key"
  extenders:
    - "extenders/beacon_listener_http/config.yaml"
    - "extenders/beacon_listener_smb/config.yaml"
    - "extenders/beacon_listener_tcp/config.yaml"
    - "extenders/beacon_listener_dns/config.yaml"
    - "extenders/beacon_agent/config.yaml"
    - "extenders/gopher_listener_tcp/config.yaml"
    - "extenders/gopher_agent/config.yaml"
  axscripts:
    # - "Extension-Kit/extension-kit.axs"
  access_token_live_hours: 12
  refresh_token_live_hours: 168

HttpServer:
  error:
    status: 404
    headers:
      Content-Type: "text/html; charset=UTF-8"
      Server: "nginx/1.26.2"
    page: "404page.html"
  http:
    max_header_bytes: 8192
    read_header_timeout_sec: 0
    read_timeout_sec: 0
    write_timeout_sec: 0
    idle_timeout_sec: 0
    request_timeout_sec: 300
    request_timeout_message: "504 Gateway Timeout"
    disable_keep_alives: false
    enable_http2: true
  tls:
    min_version: "TLS1.2"
    max_version: "TLS1.3"
    prefer_server_cipher_suites: false
    cipher_suites:
      - "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
      - "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
      - "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
      - "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
      - "TLS_RSA_WITH_AES_128_GCM_SHA256"
      - "TLS_RSA_WITH_AES_256_GCM_SHA384"

Sección Teamserver

Campos principales

CampoTipoDescripciónEjemplo
interfacestringInterfaz de red donde escuchar"0.0.0.0" (todas)
portintPuerto del servidor4321
endpointstringPrefijo URL para la API"/endpoint"
passwordstringContraseña maestra del teamserver"mi_pass_segura"
only_passwordboolSi true, solo se requiere contraseña (sin usuario)true
certstringRuta al certificado TLS"server.rsa.crt"
keystringRuta a la clave privada TLS"server.rsa.key"

Modo de autenticación

JustC2 soporta dos modos de autenticación:

Solo contraseña (only_password: true)

Cualquier usuario puede conectarse proporcionando únicamente la contraseña maestra. El nombre de usuario es informativo:

Teamserver:
  password: "contraseña_segura"
  only_password: true

Operadores individuales (only_password: false)

Cada operador tiene sus propias credenciales. La contraseña maestra no se usa para login:

Teamserver:
  only_password: false
  operators:
    admin: "pass_admin_segura"
    operador1: "pass_op1_segura"
    operador2: "pass_op2_segura"

Extenders

Lista de rutas a los archivos config.yaml de cada extender que se cargará al inicio:

extenders:
  - "extenders/beacon_listener_http/config.yaml"
  - "extenders/beacon_agent/config.yaml"

Solo los extenders listados aquí se cargan. Puedes comentar los que no necesites para reducir la superficie de ataque.

AxScripts

Scripts de extensión que se cargan al inicio:

axscripts:
  - "Extension-Kit/extension-kit.axs"

Tokens JWT

CampoDescripciónValor por defecto
access_token_live_hoursHoras de validez del access token12
refresh_token_live_hoursHoras de validez del refresh token168 (7 días)

El access token se renueva automáticamente usando el refresh token cuando expira.

Sección HttpServer

Ver Configuración del servidor HTTP para documentación detallada de esta sección.

Sección TLS

Ver Configuración SSL/TLS para documentación detallada de esta sección.

Buenas prácticas

  1. Cambia la contraseña por defecto — Nunca uses "pass" en producción
  2. Usa operadores individuales — Establece only_password: false y define operadores con contraseñas únicas para trazabilidad
  3. Personaliza el endpoint — Cambia "/endpoint" por algo no predecible
  4. Reduce la vida de tokens — En operaciones sensibles, reduce access_token_live_hours
  5. Carga solo lo necesario — Comenta los extenders que no vayas a usar
  6. Personaliza el perfil HTTP — Cambia los headers del servidor para mimetizarse con un servicio legítimo