Monday, May 2, 2011

Ataque a la red Sony PSN: ¿Es responsable la Compañía?


Note: This post is available in English.

El 20 de Abril la red de entretenimientos on-line de Sony (Sony PlayStation Network ó PSN), que permite la posibilidad de jugar juegos on-line, ver películas, programas de TV y contenidos exclusivos salió de línea y entró en modo de mantenimiento. El 26 de Abril Sony hizo público que información  personal de sus 78 millones de usuarios fue extraída de sus servidores (101.269 de Argentina), convirtiéndose así en uno de los robo de información personal más grande de la historia.


Dentro de la información extraída, se encontraba: Nombre completo, dirección completa (ciudad, estado/provincia, código postal y país), dirección de e-mail, fecha de nacimiento, usuario y contraseña de ingreso a red PSN y números de tarjetas de crédito (estimado en 10 millones de números).
La pregunta que nos hacemos todos es ¿Cómo le sucede esto a un gigante como Sony? Lo cierto es que en el mundo de la Seguridad de la Información nadie esta exento de incidentes, dado que no existe un control 100% infalible. Lo que uno puede hacer es un análisis de los riesgos de su infraestructura de IT e implementar los controles necesarios para reducir estos riesgos al mínimo aceptable por la Compañía.
Por lo tanto, la pregunta que nos debemos hacer es: ¿Es Sony responsable del incidente? ¿Tomó todas las medidas necesarias para impedir que esto suceda? Para determinar esto, decidí realizar un análisis de la infraestructura de la red PSN y del ataque en sí.
¿Cómo funciona la Red PSN?
La red PSN utiliza Internet (protocolo HTTPS) para conectar las consolas PS3 a los servidores donde los usuarios acceden a las diferentes funcionalidades que la misma ofrece. Las comunicaciones entre las partes son a través de Web Services, que por definición es un software que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones (en este caso, entre las consolas PS3 y los servidores). Como protocolo de transporte es el HTTPS, éste requiere un servidor Web, como ser el Apache ó Microsoft IIS.
La infraestructura de IT de los servidores de la red PSN está basada en 3 capas:
1.   Capa de aplicación (presentación ó frontend): En esta capa se encuentran el software que interactúa con las consolas PS3 y sólo se comunica con la capa que le sigue (la capa lógica). En esta capa se utiliza el servidor Web Apache donde se ejecutan los Web Services.
2.   Capa lógica: La capa lógica es la que procesa las solicitudes de la capa de aplicación y solicita información a la capa de datos.
3.   Capa de datos (ó backend): La capa de datos son los servidores de base de datos. Esta capa es independiente de las demás capas y su función es guardar y buscar datos.
Entre capa y capa la red PSN posee firewalls para controlar el flujo de acceso entre las mismas, dado que en teoría, desde la capa de aplicación no se podría acceder a la capa de datos directamente. Esta arquitectura es conocida como arquitecturas de múltiples capas (ó multitier architectures).
Como es el proceso de Identificación y Autentificación de las consolas PS3 con la red PSN:
1.   La consola establece una conexión segura (SSL) vía Internet con el servidor de autentificación de la red PSN. De esta forma el servidor se autentifica con la consola PS3 y la misma sabe que está conectada con el servidor correcto.
2.   Una vez iniciada la conexión, la consola PS3 envía un passphrase (una contraseña más larga, como ser una frase) como forma de autentificación de la misma ante la red PSN.
3.   Como parte de los parámetros, envía el número de firmware (software) que está utilizando (e.j. 3.60).  
4.   Luego se envían las credenciales de acceso del usuario y otras transacciones.
¿Cuán segura es la red PSN?
La Compañía diseño la consola para que solo pueda ejecutar juegos autorizados por la misma y que no pueda ser accedida por terceros para ser modificada. Esto generó recelos en la comunidad de usuarios y motivó a varios usuarios y hackers a tratar de desbloquear la consola para poder ejecutar cualquier juego ó programa. Este fue el error de Sony: basar la seguridad de la red PSN suponiendo que la consola era segura.
Así fue como el hacker Geohot (famoso por realizar el jailbreak del iPhone),  logró  hackear la PS3  en conjunto con otros hackers y  encontrar las llaves privadas (root keys) de la misma. Estas llaves les permiten a los usuarios firmar digitalmente e  instalar software no avalado por Sony en las consolas, incluyendo sistemas operativos (como ser AsbestOS, un sistema Linux compacto). Esto permitió la distribución de Firmware no oficiales (llamados Homebrew) que ya contenían todos los hackeos necesarios para que los usuarios tengan el control de sus consolas PS3.
Sony intentó varias veces bloquear el acceso a la red PSN de las consolas PS3 hackeadas mediante la versión del Firmware y por medio de la implementación de claves de autentificación (passphrase). Aún así, los usuarios lograron seguir accediendo a la misma mediante la implementación de un ataque del tipo Man in the Middle, que consistió en lo siguiente:
1.   Lo primero que necesitaron es entender cómo funciona el protocolo entre las consolas PS3 y la red PSN. Pero como el tráfico era cifrado por SSL, necesitaban implementar modificaciones a la consola  PS3 para poder interceptar el tráfico cifrado. Lo que hicieron fue lo siguiente:
a.   Crearon su propio Certificate Authority (CA) que emita un certificado SSL a nombre del dominio auth.np.ac.playstation.net. Este dominio apunta a la dirección IP del servidor de autentificación de la red PSN.
b.   Instalaron un servidor proxy entre la consola PS3 e Internet y lo configuraron con el certificado SSL creado anteriormente.
c.   Modificaron la configuración de la consola PS3 para que resuelva el dominio auth.np.ac.playstation.net a la dirección IP del servidor proxy instalado.
d.   Copiaron el certificado público del CA creado a la consola PS3, para que éste tome al certificado SSL como válido.
2.   De esta forma, sucede lo siguiente al conectarse la  PS3 con la PSN:
a.   La PS3 resuelve la dirección auth.np.ac.playstation.net con la del proxy.
b.   Establece una conexión SSL con el Proxy. Como el certificado SSL está firmado por el CA creado y está emitido para el dominio auth.np.ac.playstation.net, la PS3 cree que es una conexión auténtica con el servidor de Sony.
c.   El Proxy establece una conexión con el verdadero servidor de Sony y re-envía todo el tráfico de red a ese servidor y viceversa.
3.   Una vez logrado esto, el atacante puede ver el tráfico de red cifrado entre la consola PS3 y los servidores de la red PSN por medio del Proxy.
4.   Como resultado del análisis del tráfico, los atacantes pudieron determinar dos parámetros importantes:
a.   La consola le enviaba al servidor de autentificación la versión del Firmware que utilizaba (ej. 3.55 ó 3.56)
b.   La consola de la PS3 con el último Firmware le enviaba un passphrase como forma de autentificación, siendo éste igual para todas.
5.   Para resolver estos controles impuestos por Sony, utilizaron directamente el Proxy para modificar los parámetros en cuestión en tiempo real. De esta manera, cuando el parámetro de Firmware ingresaba al Proxy con el valor 3.55, el mismo lo cambiaba por el valor 3.60 y lo re-enviaba a los servidores de Sony. Lo mismo con el parámetro para el passphrase.
¿Cómo fue el ataque a la red PSN?
En su última conferencia de prensa, Sony no dio demasiados detalles sobre cómo fue el ataque, pero si los suficientes para lograr entender como fue realizado el mismo:
1.       Los atacantes, sabían de la existencia de una vulnerabilidad conocida en los servidores Web Apache. Podemos estimar que esta información la pudieron obtener del análisis de tráfico entre la consola PS3 y la red PSN.
2.       Enviaron una transacción válida al Web Service  con un código que utilizó la vulnerabilidad para instalar un software de comunicación. De esta forma, se comprometió  la capa lógica de la red PSN. Al ser una transacción válida, los firewalls no fueron de mucha utilidad.
3.       Una vez dentro de la capa lógica el atacante inició, mediantes técnicas de elevación de privilegios, un ataque  a la capa de datos y obtener acceso a los mismos.
Dada la falta de confirmación por parte de Sony, tras el análisis del ataque podemos estimar que la herramienta de comunicación instalada fue un backdoor y que el hecho de utilizar una transacción válida puede llegar a implicar el uso de una consola PS3 hackeada y un Proxy (para modificar la transacción acorde).


Slide de la presentación de Sony sobre cómo fue el ataque

¿Es Sony responsable del incidente?
Si hacemos una revisión rápida de la infraestructura de seguridad de la red PSN, podemos establecer lo siguiente:
·    La seguridad estaba basada en que la consola PS3 era segura: Uno de los conceptos en la  seguridad de la información  es “no confiar en el cliente”.
·    La red PSN no posee un método de Identificación y Autentificación fuerte: Utilizar el mismo passphrase para todas las consolas es un grave error, ya que como se comprobó, es fácil de obtener.
·    El servidor de la red PSN se identificaba y autentificaba a la consola PS3 por medio de SSL, pero ésta solo lo hacía mediante un passphrase: ¿Por qué no se utilizó un método de doble autentificación (cliente con servidor y viceversa)? ¿Por qué no se utilizaron tecnologías más seguras, cómo certificados digitales?
·    Servidores vulnerables: Se sabía que el servidor Web Apache tenía una vulnerabilidad  ¿Por qué Sony no lo actualizó? ¿Por qué Sony no sabía que era vulnerable?
·    Falta de controles de detección de intrusos: ¿Por qué Sony no instaló entre capas de su infraestructura un N-IDS  (Network Intrussion Detection Systems) y/o un  H-IDS (Host based Intrussion Detection Systems) en combinación con un WAF (Web Application Firewall) para detectar y detener el ataque?
·    Falta de cifrado de datos: ¿Por qué no estaban cifrados los datos más críticos de los usuarios? Solo las tarjetas de crédito estaban (aparentemente) cifradas y las contraseñas estaban guardados en formato hash.
·    Falta de controles aplicativos: ¿Por qué la capa de aplicación no detectó parámetros incorrectos?
·    Respuesta a incidentes: ¿Estaba preparada Sony para un incidente de este tipo? ¿Por qué tardaron más de 6 días en notificar el incidente?
·    Postura sobre seguridad de la información: ¿Por qué recién en la conferencia de prensa  del 1ro de Mayo se anunció la creación del puesto Chief Information Security Officer  para monitorear la seguridad de la red PSN?
Si Sony no sabía que los servidores eran vulnerables, entonces es responsable por no realizar un análisis de riesgos de su infraestructura de IT. Si en cambio sabía que los servidores eran vulnerables, entonces es responsable por no actualizarlos.
Por Agustin Chernitsky
Gracias: Fer Spettoli, Rami Corletti y Leo Rosso por el input!

No comments:

Post a Comment