Logo GH

Bot Protection y la API antifraude

1) Por qué es necesario

Bots y atacantes atacan los puntos de entrada de crecimiento y dinero: registro, inicio de sesión (ATO), depósitos/retiros, mecánica promocional, catálogos de juegos/coeficientes. Las reglas manuales y el límite de puntuación puro ya no son suficientes: se necesitan señales en niveles, puntuación en tiempo real y control de la solución (allow/deny/challenge/throttle) con retroalimentación de eventos empresariales (charjbacks, chargeback-ratio, KYC-feiles).

2) Taxonomía de amenazas

Check-in/onboarding: cuentas masivas, bancos de correo electrónico/SIM desechables, granjas de dispositivos.
ATO (Account Takeover): credential stuffing, password spraying, session hijack.
Bonus Abuse: multiackouting, arbitraje geo/jurisdicciones, auto-exclusión de elusión.
Kart/Food de pago: prueba de tarjetas, carteras robadas, reembolsos.
Scraping/inventario: tirando agresivamente del contenido, de los precios, de los coeficientes.
API-DoS de baja intensidad: ataques de tortugas, slow-POST, emulaciones de SDK móviles.
Webhooks/integraciones: falsificación de notificaciones sin HMAC/mTLS, replay.

3) Arquitectura de protección

3. 1 Capas

1. Edge (CDN/WAF/gateway): fallos tempranos (ASN/Geo/reputación IP), retos ligeros, límites, PoW.
2. API de riesgo (PDP por riesgo): motor centralizado de reglas/ML; ответ — `decision`, `score`, `reason`, `ttl`.
3. Nivel de aplicación: invariantes de dominio, lógica de negocio (límites, KYC, AML), rugido asíncrono.
4. Flujo de eventos: Kafka/Kinesis → feature store/modelo → comentarios de pagos/disputs.

3. 2 Esquema de solución


[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow      deny      throttle      challenge(type=captcha    sms    PoW    biometry)

La solución se almacena en caché por clave (por ejemplo, device × account × route) durante 'ttl' segundos.

4) Señales y enriquecimiento

Red/canal: IP/ASN, proxy/VPN/Tor, rdns, rtt/jitter, tasa SYN, huella dentada TLS (JA3/JA4), comportamiento HTTP/2/3.
Device/navegador: canvas/audio/WebGL FP (cuidadosamente), plataforma/SDK, timezone/locale, resolución, fuentes, indicadores WebDriver/headless, mobile attestation (SafetyNet/DeviceCheck, si es posible).
Comportamiento: velocidad de entrada, trayectorias mouse/touch, secuencia de pantalla, dwell-time, frecuencia de intento, transiciones entre identificadores de navegador.
Contenido/solicitud: formulario de correo electrónico/dominio, disposable-proveedores, teléfono HLR/o tipo de número, tarjeta BIN, cuenta/IBAN en los registros de Sank, FIO/direcciones similares.
Cuenta/historial: edad de la cuenta, estado KYC, retiro, ARPPU, velocity por depósitos/retiros/bonos.
Fuentes externas: listas de compromiso (similares a HIBP), señales de riesgo de pago (PSP), reputación ASN.

5) Solución: reglas + ML

5. 1 Reglas (deterministas)

Velocity: «N inscripciones con/24 en 10 min», «M de inicio de sesión con un solo dispositivo a X cuentas», «K 3DS-files seguidas».
Geo/jurisdicción: conflictos IP-geo vs dirección/documento, saltos de ubicación repentinos.
Invariantes empresariales: límites de pagos responsables, autoliquidación, listas sancionadoras.

5. 2 ML-scoring (tiempo real)

Modelo ligero (GBM/logreg) en las características en línea: 'ip _ risk', 'device _ age', 'account _ age', 'pwd _ fail _ rate', 'bin _ risk', 'velocity _', 'behavioral _'.
Modelo separado para ATO y por separado para pagos/retiros.
Segmentación por jurisdicción/tenante (calibración de umbral de mercado per).

5. 3 Decisión


if ip_blacklisted or bad_asn then deny else if rule_severe then challenge(hard)
else if score >= 0. 9 then deny else if 0. 7 <= score < 0. 9 then challenge(soft)
else allow

Al 'desafío' almacenar los hechos del paso/fracaso; escalar/reducir la fricción dinámicamente.

6) Velocity y cuotas (llaves y ventanas)

Ключи: `ip`, `ip/24`, `device_id`, `account_id`, `payment_instrument`, `email_domain`, `bin`.
Ventanas: deslizantes (1m/5m/1h/24h) + individuales «burst «/« sustained ».
Políticas: «duro» deny en las rutas calientes (inicio de sesión/depósito), suave throttle en el contenido.

Ejemplo de reglas Redis (pseudo):
pseudo allow, retry_after = gcra_allow(key="login:ip:"+ip, rate=60/min, burst=30)
if not allow:
return 429, {"Retry-After": retry_after}

7) Desafíos y verificación de la «humanidad»

CAPTCHA/turnstile: как soft-challenge; limpiar después de una alta confianza en una sesión «limpia».
Proof-of-Work (PoW): para API/scripts - calcular el hash con la complejidad especificada; complejidad dinámica en el crecimiento de la carga.
OTP/SMS/Email/Push: para ATO/operaciones críticas; no abusar (costo/UX).
WebAuthn/Biometría: alto nivel de confianza en las piezas de pago/cambio.
Device trust: bind de la cuenta al dispositivo verificado; nuevos dispositivos → desafío.

8) Integración en gateway/proxy

8. 1 Envoy: ext_authz → Risk API (pseudo)

yaml http_filters:
- name: envoy. filters. http. ext_authz typed_config:
http_service:
server_uri: { uri: http://risk-api:8080, cluster: risk, timeout: 80ms }
authorization_request:
allowed_headers:
patterns:
- exact: "x-tenant"
- exact: "x-device-id"
- exact: "user-agent"
authorization_response:
allowed_upstream_headers:
patterns: [{ exact: "x-risk-score" }, { exact: "x-risk-decision" }]
- name: envoy. filters. http. router

8. 2 NGINX/Lua: ligero PoW y velocity

nginx lua_shared_dict vel 20m;

access_by_lua_block {
local ip = ngx. var. remote_addr if not gcra_allow("reg:ip:"..ip, 20, 40) then ngx. header["Retry-After"] = 30; return ngx. exit(429)
end

local pow = ngx. req. get_headers()["X-POW"]
if not verify_pow(pow, ngx. var. request_id, 18) then ngx. status = 401; ngx. say('need-pow'); return ngx. exit(401)
end
}

9) Contrato de la API de Risk

Solicitud (enriquecida):
json
{
"tenant":"eu-1",
"route":"POST /v1/login",
"subject":{"account_id":"a123","email":"u@d. com"},
"device":{"id":"d-xyz","fp":"...","ja3":"...","headless":false},
"network":{"ip":"203. 0. 113. 10","asn":12345,"country":"DE","rtt_ms":42},
"context":{"fail_5m":3,"pwd_reset_24h":1}
}
Respuesta:
json
{ "decision":"challenge", "score":0. 83, "reason":"high_velocity+new_device", "ttl_sec":900, "challenge":"captcha" }

10) Datos, fichas y modelos

Feature Store (en línea): Redis/Scylla/KeyDB - contadores/velocity/marcas de tiempo.
Batch/offline: DWH (BigQuery/S3 + Athena) para entrenamiento/refits; almacene las marcas de salida, chargeback, rugido manual.
Modelos: simple para real-time (logreg/GBM); pesado (XGBoost/NN) - fuera de línea con PGMs/escala y posterior destilación.
Control de deriva: PSI, AUC/PR, calibración de umbrales por regiones/canales.

11) Observabilidad y circuito operativo

Métricas:
  • `risk_requests_total{route,decision}`
  • `risk_score_bucket` (distribution)
  • `waf_block_total`, `velocity_block_total`, `challenge_pass_rate`
  • `ato_incidents`, `carding_detected`, `cashout_denied`
  • métricas de negocio: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
  • Logs (editados): 'decision', 'score', señales clave, 'trace _ id', sin PII/secretos.
  • A/B y Shadow: nueva política en modo shadow (lógica de la solución), luego canario (1-5%), autorollback por SLO/FP.
  • Playbooks: escalada, apriete temporal, retroceso, «parches virtuales».

12) Privacidad y cumplimiento

Minimice el PII; hash identificadores sostenibles (por ejemplo, correo electrónico SHA-256 con sal).
Respetar la jurisdicción regional (localización de datos, consentimiento).
Explicaciones transparentes para soluciones de rugido manual; almacene sólo lo necesario y con TTL.

13) Especificidad de iGaming/finanzas

Registro: filtros disposable e-mail/VoIP, velocity por/24, granjas de device → challenge/deny.
Login/ATO: nuevos dispositivos/geo-saltos → OTP/WebAuthn; password spraying → throttle/deny.
Bonificaciones: límites de «camino al lavado» (depozit→bonus→minimalnyy oborot→vyvod), análisis graph de afiliación (direcciones/dispositivos/tarjetas).
Pagos/conclusiones: riesgo BIN, país-mismatch, señales PSP; cashout a la nueva herramienta → alto umbral y cheque KYC.
Webhooks PSP/KYC: HMAC + mTLS, hoja IP-allow estrecha, anti-replay ('X-Timestamp', ventana ± 5 min).

14) Antipattern

Un captcha universal «en todas partes y siempre» → alta FP/caída de conversión.
Sólo rate limit sin señales de comportamiento/device.
El almacenamiento de las impresiones «crudas» y PII es indefinido.
No hay shadow-running y canary para nuevas políticas.
Confianza total en las marcas «reputacionales» externas sin validación propia.
Toma de decisiones en el cliente (JS/SDK móvil) sin revisión del servidor.

15) Ejemplos de reglas y pseudocódigo

15. 1 Regla compuesta (tiempo real)

pseudo score = 0 if ip_asn in bad_asn_list then score += 0. 5 if device_age < 1d and route in {login, withdraw} then score += 0. 3 if velocity("login:account", 5m) > 10 then score += 0. 3 if geovelocity(last_login_loc, current_loc) > 800km/h then score += 0. 2 decision = score>=0. 9? "deny": score>=0. 7? "challenge": "allow"

15. 2 Grafo de conexiones (multiaccount)


edge(accountA, deviceX)
edge(accountB, deviceX)
edge(accountB, cardY)
edge(accountC, cardY)
Threshold by common nodes → investigation/deny bonus

16) Lista de comprobación prod

  • Arquitectura multinivel: Edge → Risk API → App, flujo de eventos.
  • Señales: red, dispositivo, comportamiento, contenido, pago; minimización de PII.
  • Velocity/GCRA en las claves ip/device/account/payment, ventanas deslizantes.
  • Decisiones: allow/deny/challenge/throttle; caché de soluciones con TTL; repositorio de hechos Challenge.
  • Challenges: captcha/PoW/OTP/WebAuthn; complejidad dinámica.
  • API de riesgo: SLA <100 ms, caché, degradación en modo «mínimamente seguro».
  • Observabilidad: métricas risk, FP/FN, dashboards, alertas; métricas de negocio (chargeback/bonus-abuse).
  • Shadow → canary → enforce; playbucks de escalamiento y retroceso.
  • Webhooks PSP/KYC: HMAC + mTLS + anti-replay + allow-list.
  • Requisitos regionales y TTL para datos sensibles.

17) TL; DR

Construya una protección en capas: filtros edge y challenges tempranos, una API centralizada de Risk con reglas + ML y un flujo de eventos para retroalimentación. Utilice los límites de velocidad, señales de red/dispositivo/comportamiento, desafío dinámico (captcha/PoW/OTP/WebAuthn). Tomar decisiones allow/deny/challenge/throttle, medir FP/FN y el efecto de negocio, rodar a través de shadow/canary. Para las rutas de pago/bonificación - perfiles individuales apretados y un conjunto con KYC/AML.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.