OP.MON.1 Detección de intrusión
☑️Aplicación de la medida
De acuerdo al ANEXO II, 2 Selección de medidas de seguridad, la medida de seguridad OP.MON.1 Detección de intrusión sí aplica dada la categoría de seguridad del sistema.
Documentos de referencia
- ISO/IEC 27000:
- 27002:2013:
- 12.6.1 - Management of network security vulnerabilities
- 16.1.1 - Responsibilities and procedures
- 16.1.2 - Reporting information security events
- 27002:2013:
- NIST SP 800-53 rev4:
- [SI-4] Information System Monitoring
- [IR-4] Incident Handling
- [AU-6] Audit Review, Analysis, and Reporting
- Otras referencias:
- NIST Cybersecurity Framework
- FDA Cybersecurity in Medical Devices: Quality System Considerations
- NIS2 Directive - Technical and organizational measures
Guía de implantación
- Se desplegarán medios técnicos y organizativos que permitan la detección de una posible intrusión en el dominio gestionado.
Incluirán al menos:
- Herramientas de monitorización de eventos de seguridad
- Procedimientos de análisis de eventos de seguridad
- Procedimientos de gestión de incidentes de intrusión
- Procedimientos de coordinación con terceros externos para la gestión de intrusiones
Implementación en Legit Health Plus
Arquitectura de detección de intrusión
El sistema de detección de intrusión de Legit Health Plus implementa un modelo de defensa en profundidad específicamente diseñado para proteger servicios de diagnóstico médico críticos.
Componentes principales
Network-based IDS (NIDS)
NIDS_Configuration:
Primary_Tool: "Suricata + Zeek (Bro)"
Deployment: "Mirrored traffic from VPC flow logs"
Coverage:
- "All ingress/egress traffic"
- "Inter-service communications"
- "Database connections"
- "API endpoints médicos"
Detection_Rules:
- "OWASP Top 10 attacks"
- "Medical device specific attacks"
- "Data exfiltration patterns"
- "Lateral movement indicators"
Host-based IDS (HIDS)
HIDS_Configuration:
Primary_Tool: "CrowdStrike Falcon + OSSEC"
Deployment: "All critical servers and workstations"
Monitoring:
- "File integrity (medical algorithms)"
- "Process execution anomalies"
- "Registry/config changes"
- "Privilege escalation attempts"
Medical_Specific_Rules:
- "Unauthorized access to patient data"
- "AI model tampering detection"
- "Clinical database modifications"
- "Audit log manipulation"
Application-layer Detection
# Sistema de detección a nivel de aplicación médica
class MedicalApplicationIDS:
def __init__(self):
self.ml_model = self.load_behavioral_model()
self.medical_patterns = self.load_clinical_patterns()
def detect_medical_anomalies(self, request):
"""Detecta anomalías específicas en aplicaciones médicas"""
anomalies = []
# 1. Patrones de acceso anómalos a diagnósticos
if self.detect_abnormal_diagnosis_access(request):
anomalies.append({
'type': 'unauthorized_medical_access',
'severity': 'high',
'description': 'Acceso anómalo a datos de diagnóstico'
})
# 2. Intentos de manipulación de algoritmos IA
if self.detect_ai_algorithm_tampering(request):
anomalies.append({
'type': 'ai_model_tampering',
'severity': 'critical',
'description': 'Intento de modificación de modelo IA diagnóstico'
})
# 3. Exfiltración masiva de datos clínicos
if self.detect_bulk_clinical_data_access(request):
anomalies.append({
'type': 'data_exfiltration',
'severity': 'critical',
'description': 'Posible exfiltración de datos clínicos'
})
return anomalies
Detección de amenazas específicas
Amenazas dirigidas a dispositivos médicos
Ataques específicos monitorizados
Medical_Device_Threats:
AI_Model_Poisoning:
Description: "Intentos de corromper modelos de diagnóstico"
Detection_Methods:
- "Model performance deviation monitoring"
- "Training data integrity checks"
- "Unexpected model behavior patterns"
Alert_Threshold: "Immediate (critical)"
Clinical_Data_Tampering:
Description: "Modificación no autorizada de datos clínicos"
Detection_Methods:
- "Database integrity monitoring"
- "Audit trail analysis"
- "Checksum validation"
Alert_Threshold: "< 5 minutos"
Diagnostic_Bypass:
Description: "Intentos de eludir controles diagnósticos"
Detection_Methods:
- "Workflow deviation analysis"
- "Authentication bypass attempts"
- "API endpoint abuse"
Alert_Threshold: "< 1 minuto"
Indicadores de compromiso (IoC) médicos
# IoCs específicos para entorno médico
MEDICAL_IOCS = {
'suspicious_patterns': [
# Acceso masivo a registros de pacientes
{'pattern': 'bulk_patient_access', 'threshold': 50, 'timeframe': '5min'},
# Modificaciones fuera de horario clínico
{'pattern': 'off_hours_clinical_changes', 'timeframe': '22:00-06:00'},
# Acceso desde ubicaciones geográficas inusuales
{'pattern': 'geographic_anomaly', 'threshold': 'outside_eu'},
# Intentos de acceso a algoritmos de IA
{'pattern': 'ai_algorithm_access', 'unauthorized': True},
# Exportación masiva de imágenes diagnósticas
{'pattern': 'bulk_image_export', 'threshold': 100, 'timeframe': '1hour'}
],
'file_indicators': [
# Archivos relacionados con ataques a sistemas médicos
'medical_device_exploit.py',
'dicom_parser_malicious.exe',
'hl7_interceptor.dll',
'ai_model_backdoor.pkl'
],
'network_indicators': [
# Comunicaciones sospechosas
{'dest_port': 11111, 'description': 'Medical device backdoor'},
{'domain': '*.medical-exploit.com', 'category': 'malicious'},
{'protocol': 'DICOM', 'anomaly': 'unexpected_destination'}
]
}
Monitorización continua
SIEM médico integrado
Medical_SIEM_Configuration:
Primary_Platform: "Splunk Enterprise Security"
Data_Sources:
- "AWS CloudTrail (all regions)"
- "VPC Flow Logs"
- "Application logs (diagnosis service)"
- "Database audit logs (PostgreSQL)"
- "Authentication logs (Azure AD)"
- "Medical device logs (custom format)"
Custom_Dashboards:
- "Medical Device Security Overview"
- "Clinical Data Access Monitoring"
- "AI Algorithm Integrity Status"
- "Regulatory Compliance Status"
- "Incident Response Timeline"
Automated_Responses:
- Block_Suspicious_IPs: "Automatic (high confidence)"
- Disable_Compromised_Accounts: "Semi-automatic (approval required)"
- Isolate_Affected_Services: "Manual (critical systems)"
- Notify_Regulatory_Bodies: "Automatic (major incidents)"
Machine Learning para detección de anomalías
class MedicalAnomalyDetection:
def __init__(self):
self.models = {
'user_behavior': self.load_user_behavior_model(),
'network_traffic': self.load_network_anomaly_model(),
'clinical_workflow': self.load_clinical_workflow_model()
}
def analyze_clinical_user_behavior(self, user_session):
"""Analiza comportamiento de usuarios clínicos"""
features = {
'diagnosis_rate': user_session.diagnoses_per_hour,
'access_pattern': user_session.access_pattern_vector,
'time_distribution': user_session.time_distribution,
'patient_data_volume': user_session.patient_records_accessed,
'geographic_location': user_session.source_location
}
anomaly_score = self.models['user_behavior'].predict_proba([features])[0]
if anomaly_score > 0.85: # High confidence threshold
return {
'anomaly_detected': True,
'confidence': anomaly_score,
'risk_factors': self.identify_risk_factors(features),
'recommended_action': 'immediate_review'
}
return {'anomaly_detected': False, 'confidence': anomaly_score}
Procedimientos de respuesta automática
Respuesta escalonada automática
Automated_Response_Tiers:
Level_1_Auto: # Confidence > 95%
Actions:
- "Block source IP immediately"
- "Isolate affected user session"
- "Generate incident ticket"
- "Notify SOC team (SMS + email)"
Triggers:
- "Known malware signatures"
- "Blacklisted IP addresses"
- "Clear policy violations"
Level_2_SemiAuto: # Confidence 80-95%
Actions:
- "Flag for manual review (< 5 min)"
- "Increase monitoring on affected systems"
- "Temporary rate limiting"
- "Alert security analyst"
Triggers:
- "Behavioral anomalies"
- "Suspicious but not definitive patterns"
- "Medical workflow deviations"
Level_3_Manual: # Confidence < 80%
Actions:
- "Log for investigation"
- "Add to watch list"
- "Schedule manual review"
Triggers:
- "Low confidence anomalies"
- "Potential false positives"
Script de respuesta a intrusión crítica
#!/bin/bash
# Script de respuesta automática a intrusión crítica
INCIDENT_ID="$1"
THREAT_TYPE="$2"
AFFECTED_SYSTEMS="$3"
echo "[$(date)] CRITICAL INTRUSION DETECTED: $INCIDENT_ID"
echo "Threat Type: $THREAT_TYPE"
echo "Affected Systems: $AFFECTED_SYSTEMS"
# Aislar sistemas afectados
if [[ "$THREAT_TYPE" == "medical_data_breach" ]]; then
echo "Isolating clinical database connections..."
# Bloquear acceso temporal a base de datos clínica
aws rds modify-db-instance \
--db-instance-identifier legit-health-clinical-db \
--publicly-accessible false
# Revocar tokens de API médica activos
python3 /opt/security/revoke_medical_api_tokens.py --incident-id $INCIDENT_ID
fi
# Preservar evidencia
echo "Preserving forensic evidence..."
mkdir -p /forensics/$INCIDENT_ID
cp -r /var/log/medical-app/ /forensics/$INCIDENT_ID/
cp -r /var/log/nginx/ /forensics/$INCIDENT_ID/
cp -r /var/log/postgresql/ /forensics/$INCIDENT_ID/
# Notificar autoridades (si aplica)
if [[ "$THREAT_TYPE" == "patient_data_breach" ]]; then
echo "Preparing regulatory notification..."
python3 /opt/compliance/notify_aemps.py \
--incident-type "data_breach" \
--incident-id $INCIDENT_ID \
--affected-records "$(wc -l < /forensics/$INCIDENT_ID/affected_patients.csv)"
fi
# Activar plan de comunicación de crisis
echo "Activating crisis communication..."
python3 /opt/incident-response/crisis_comms.py \
--incident-id $INCIDENT_ID \
--threat-level critical \
--medical-impact true
echo "[$(date)] Emergency response actions completed for $INCIDENT_ID"
Integración con gestión de incidentes
Workflow de escalado médico
Threat intelligence específico médico
Fuentes de intelligence
Medical_Threat_Intel_Sources:
Commercial:
- "CrowdStrike Falcon Intelligence"
- "FireEye Mandiant Threat Intelligence"
- "Microsoft Defender Threat Intelligence"
Medical_Specific:
- "FDA Medical Device Security Communications"
- "ICS-CERT Medical Device Advisories"
- "ECRI Healthcare Security Intelligence"
- "HIMSS Healthcare Threat Briefings"
Government:
- "US-CERT Healthcare Alerts"
- "INCIBE Healthcare Sector Warnings"
- "ENISA Medical Device Security Reports"
Community:
- "Medical Device Security Community (MDSC)"
- "Healthcare Cybersecurity Community (HCC)"
- "ISACA Health Information Security"
Métricas y KPIs de detección
Métricas técnicas
Detection_KPIs:
Performance_Metrics:
- "Mean Time to Detection (MTTD): < 5 minutos"
- "False Positive Rate: < 5%"
- "Detection Coverage: > 95%"
- "Alert Volume: < 50/día (actionable)"
Medical_Specific_KPIs:
- "Medical Data Breach Detection: < 1 minuto"
- "AI Algorithm Tampering Detection: Real-time"
- "Clinical Workflow Anomaly Detection: < 2 minutos"
- "Regulatory Notification Time: < 24 horas"
Dashboard de detección médica
class MedicalDetectionDashboard:
def generate_security_overview(self):
"""Genera overview de seguridad médica"""
return {
'critical_alerts_last_24h': self.count_critical_alerts(),
'medical_systems_health': self.check_medical_systems_health(),
'patient_data_access_anomalies': self.analyze_patient_data_access(),
'ai_algorithm_integrity': self.verify_ai_algorithm_integrity(),
'regulatory_compliance_status': self.check_regulatory_compliance(),
'threat_landscape': self.get_current_threat_landscape()
}
Integración con otros controles ENS
- OP.EXP.7: Escalado automático a gestión de incidentes
- OP.CONT.2: Activación del plan de continuidad en caso de intrusión mayor
- MP.SI.2: Protección de datos detectando intentos de acceso no autorizado
- R-TF-013-002: Mitigación de riesgos de ciberseguridad identificados
Referencias cruzadas
- T-024-005: Procedimiento de detección y respuesta a incidentes
- GP-013: Marco de gestión de ciberseguridad
- OP.MON.2: Integración con sistema de métricas
Signature meaning
The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix
of the GP-001
, are:
- Author: Team members involved
- Reviewer: JD-003, JD-004
- Approver: JD-001