
El proveedor de servicios de Internet (ISP) que eligen nuestros usuarios desempeña un papel fundamental en la protección de nuestros datos y activos. Aunque mucha gente se centra en la velocidad, la fiabilidad y el coste a la hora de elegir un ISP, un factor que a menudo se pasa por alto es el compromiso del proveedor con la seguridad. La elección entre un ISP seguro y un ISP que no invierte en controles de seguridad (a los que mencionaré como ISP de riesgo) puede afectar significativamente a la privacidad de sus datos, la integridad de los dispositivos y la postura general de ciberseguridad.
Por qué es importante la seguridad en un ISP
Los ISP actúan como pasarela entre los dispositivos e Internet. Asignan direcciones IP, gestionan la transmisión de datos y controlan el acceso a los recursos en línea. Este papel les convierte en un componente crítico de la seguridad de nuestra red. Un ISP seguro invierte en sólidas medidas de seguridad para supervisar el tráfico de la red, proteger contra ciberataques y garantizar que sus IP no se explotan con fines maliciosos. Por otro lado, un ISP de riesgo con prácticas de seguridad bajas o nulas, puede exponer a sus usuarios a importantes amenazas. Entre algunas de las características diferenciales podemos tener:
- Monitorización de red : Monitorización continua de actividades sospechosas VS Monitorización mínima o nula del tráfico de red.
- Reputación IP Mantiene rangos de IP limpios y de confianza VS IPs frecuentemente en la lista negra debido a uso malicioso.
- Cifrado de datos: Encriptación fuerte para una transmisión de datos segura VS Poca o ninguna encriptación, exponiendo datos sensibles.
- Respuesta a incidentes: Equipos dedicados para mitigar rápidamente las amenazas VS respuesta lenta o inexistente a los problemas de seguridad.
- Políticas de privacidad: Políticas claras que protegen los datos de los usuarios de usos indebidos VS los datos pueden venderse o quedar desprotegidos.
- Funciones de seguridad adicionales: Ofrece cortafuegos, filtrado DNS y soporte VPN VS no hay herramientas o características adicionales para la seguridad del usuario.
- Coste: Ligeramente superior debido a las inversiones en seguridad VS a menudo más barato debido a la ausencia de gastos en seguridad.
- Leyes y obligaciones: Procedimientos definidos y claros para cumplir las leyes y obligaciones (como la comunicación al CERT o a las autoridades correspondientes) en caso de actividades maliciosas VS procedimientos poco claros y no cumplimiento de las leyes y normativas.
Diferenciando entre ISP seguros e ISP de riesgo
Depende de cada persona. Por ejemplo, si tienes tiempo para explorar cada ISP e investigar sus capacidades y características, puedes clasificarlos según tus criterios. En mi caso, utilizo ChatGPT para recopilar esta información, como se muestra en la tabla siguiente:
Por otro lado, puede utilizar la siguiente consulta KQL para detectar si hay usuarios que utilizan un ISP seguro o de riesgo mediante actividades como los intentos de inicio de sesión:
<sub>IdentityLogonEvents
| where Timestamp > ago(30d)
| summarize Different_IPs=make_set(IPAddress), Total_different_IPs=dcount(IPAddress) ,Total_sign_attempts = count(), Suspicious_Sign_attempt = countif((ActionType has "OldPassword") or (FailureReason has "WrongPassword") or ( FailureReason has "validating credentials due to invalid username or password.") or ( FailureReason has "The account is locked, you've tried to sign in too many times with an incorrect user ID or password.") or (FailureReason has "Authentication failed.") or (FailureReason has "UnknownUser") or ( FailureReason has "The user account is disabled." )),
Success_Sign_attempt = count( ActionType has "LogonSuccess"),
Issues_Sign_attempt = countif((FailureReason has "The session is not valid due to password expiration or recent password change.") or ( FailureReason has "General failure")) by ISP, Location
| extend SuspiciousRatio = Suspicious_Sign_attempt * 1.0 / Total_sign_attempts, ValidRatio = Success_Sign_attempt * 1.0 / Total_sign_attempts, IssuesRatio = Issues_Sign_attempt * 1.0 / Total_sign_attempts
| extend SuspiciousPercentage = SuspiciousRatio * 100, ValidPercentage = ValidRatio * 100, IssuesPercentatge = IssuesRatio * 100
| order by SuspiciousPercentage
// you can use this filter if you want to specify specific percentatge | where ValidPercentage < 10 and (SuspiciousPercentage > 90 or lockedPercentatge > 90)</sub>
Lenguaje del código: JavaScript (javascript)
Centrándonos en los posibles ISP de riesgo utilizados por los actores maliciosos
Si pensamos como atacante, definitivamente preferiría utilizar un ISP con bajos elementos de seguridad en lugar de uno seguro por las razones comentadas anteriormente en el artículo sobre los controles de seguridad. Por ejemplo, utilizar un ISP de riesgo, podría significar no ser bloqueado tras intentos de ataque y evitar la monitorización de IP, entre otros controles.
Para detectar actividades maliciosas, se necesita usar herramientas de análisis de amenazas y registros – en mi caso, confío en las consultas KQL para el análisis.
En primer lugar, es importante entender que los actores maliciosos pueden utilizar ISP seguros como Azure, AWS o los principales ISP nacionales. Esto puede dar lugar a falsos positivos, por lo que el empleo de ratios para ayudar a distinguir entre actividades legítimas y potencialmente maliciosas es clave. Repasemos los resultados de la consulta KQL compartida anteriormente:
- Caso 1 : ISP usando múltiples IPs diferentes tratando de iniciar sesión en mi tenant, con 0 intentos de inicio de sesión exitosos. Esto me proporciona información útil, como IPs potenciales para ser añadidas como Indicadores de Compromiso (IOCs) en mi plataforma de Inteligencia de Amenazas, y me permite monitorizar futuras actividades desde IPs asociadas con este ISP.
- Caso 2: ISP utilizando múltiples IPs diferentes para intentar iniciar sesión en mi inquilino, con algunos intentos de inicio de sesión exitosos. Además del caso mencionado anteriormente, me ayuda a identificar posibles cuentas comprometidas por un ISP de riesgo debido al elevado número de intentos que podrían indicar, por ejemplo, un ataque de fuerza bruta.
Calificar ISP basado en Amenazas de Email
La consulta anterior es solo un pequeño % de todos los casos potenciales e información que puedes tener calificando ISPs. Un segundo ejemplo, es calificar ISP basado en los correos electrónicos etiquetados como amenaza por Microsoft DefenderXDR lo que le permitirá investigar diferentes casos como :
- ISPs que están utilizando múltiples dominios para enviarle correos con amenazas.
- ISPs y dominios con un alto porcentaje de correos maliciosos, y verificar si alguno fue entregado en las carpetas de Bandeja de Entrada.
- ISPs que utilizan múltiples direcciones IP diferentes para enviarle amenazas.
…¡y mucho más!
let CIDRASN = (externaldata (CIDR:string, CIDRASN:int, CIDRASNName:string)
['https://firewalliplists.gypthecat.com/lists/kusto/kusto-cidr-asn.csv.zip']
with (ignoreFirstRecord=true));
EmailEvents
| evaluate ipv4_lookup(CIDRASN, SenderIPv4, CIDR, return_unmatched=true)
| extend GeoIPData = tostring(geo_info_from_ip_address(SenderIPv4).country)
| summarize Different_IPs=make_set(SenderIPv4), Countries= make_set(GeoIPData), make_set(CIDR), make_set(SenderFromDomain), Total_different_IPs=dcount(SenderIPv4) ,Total_emails = count(),make_set(ThreatTypes),Delivered_on_Inbox= countif(DeliveryLocation has "Inbox/folder"), Email_Threat= count(isnotempty(ThreatTypes)),
Email_Valid = count( isempty(ThreatTypes)) by GeoIPData, CIDR, CIDRASNName
| extend SuspiciousRatio = Email_Threat * 1.0 / Total_emails, ValidRatio = Email_Valid * 1.0 / Total_emails
| extend SuspiciousPercentage = SuspiciousRatio * 100, ValidPercentage = ValidRatio * 100
| order by Email_Threat
| project CIDRASNName,set_SenderFromDomain, set_CIDR, Different_IPs, Countries,Total_different_IPs, set_ThreatTypes,Total_emails, Delivered_on_Inbox, Email_Threat, Email_Valid, SuspiciousPercentage, ValidPercentage
Lenguaje del código: JavaScript (javascript)
La ventaja de detectar ISP de riesgo
Una vez identificado un grupo de ISP de riesgo que podrían afectar a nuestra organización, se pueden aplicar y obtener ventajas de seguridad adicionales. Por ejemplo, si los atacantes utilizan una nueva IP de un ISP de riesgo que no se ha visto antes, en lugar de esperar a que inicien un ataque y sean marcados como maliciosos por los proveedores de seguridad (como VirusTotal), puede ir un paso por delante supervisando las conexiones procedentes de estos ISP. Este enfoque proactivo permite bloquear los intentos de conexión de estos ISP directamente o recibir notificaciones inmediatas cuando se realiza un intento de conexión, dependiendo de si se decide bloquear o supervisar las actividades relacionadas.
En segundo lugar, si tengo usuarios que han iniciado sesión con éxito desde cualquiera de los ISP de riesgo identificados, les exigiría que restablecieran sus contraseñas o revocara los tokens de acceso debido a los estándares de seguridad potencialmente bajos aplicados por esos ISP.
Además, la identificación de los ISP de riesgo que han desencadenado múltiples intentos de conexión -especialmente los que nunca tuvieron éxito y fueron clasificados como maliciosos- puede proporcionarle valiosos Indicadores de Compromiso (IOC) para integrar en plataformas de Inteligencia de Amenazas (como MISP).
Resumen
En resumen, monitorizar los ISP y clasificarlos puede ayudarnos a ser más proactivos contra los ataques, reducir el tiempo de respuesta debido al comportamiento conocido del ISP, y disminuir el número de peticiones necesarias para añadir IPs maliciosas y otros indicadores relacionados en nuestras plataformas.
Por otro lado, creo que a veces nos centramos demasiado en buscar fuentes nuevas o de confianza para añadir indicadores comunes, como direcciones IP, URL, dominios y hashes de archivos. No me malinterpretes: esto es absolutamente necesario. Sin embargo, investigar otros tipos de fuentes, como los ISP, puede ayudarnos a ir un paso por delante y proporcionar nuevos indicadores para proteger nuestros activos y datos.