Aplicaciones Thick Client desde 0

Thick Client

3,2,1 … Empezamos!

Nueva entrada en el blog y, nueva sección que estrenamos en el día de hoy.

Tanto en esta como en futuras entradas vamos a tratar sobre un tipo nuevo de auditorías que podemos realizar sobre aplicaciones de escritorio o también conocidas como Thick Client.

Las aplicaciones de cliente pesado o aplicaciones de escritorio (Thick Client) son aquellas que requieren instalación en el equipo del usuario y depende, en gran medida, de los recursos locales para su funcionamiento, a diferencia de las aplicaciones web que operan principalmente desde un servidor remoto. Estas aplicaciones son comunes en entornos corporativos, bancarios y de software especializado, y su seguridad es crucial debido a la cantidad de datos sensibles que manejan.

Diferencia entre Thin Client y Thick Client

A pesar de que puedan parecer lo mismo, no lo son.

Un thin client se conecta a un entorno formado por un servidor, que aloja la mayoría de aplicaciones, la memoria y datos confidenciales que necesita el usuario. Este tipo de dispositivos se ven a menudo en bancos y oficinas de empresas multinacionales.

Thin client


Por el contrario un thick client es un software que no necesita conexión a un sistema servidor para funcionar. Varios ejemplos pueden ser Microsoft Outlook y Skype entre otros.

Tipos de arquitectura

Una aplicación Thick Client puede tener dos tipos de arquitectura:

  • Two-Tier architecture (Arquitectura de dos niveles)
  • Three-Tier architecture (Arquitectura de tres niveles)

Two-Tier architecture (Arquitectura de dos niveles)

En la arquitectura de dos niveles, el cliente y la base de datos interactúan entre sí e implementan una comunicación cliente-servidor estando ambos elementos instalados en el mismo sistema o red interna.

Es decir, la aplicación se instala en el ordenador cliente y, para funcionar, necesita comunicarse con un servidor de base de datos.

Por ejemplo, una aplicación bancaria se instala en el ordenador cliente y, para recuperar la información del «cliente», se comunica directamente con el servidor de la base de datos bancaria, es decir, no hay ningún intermediario entre cliente y servidor.

Two-Tier architecture (Arquitectura de dos niveles)

Three-Tier architecture (Arquitectura de tres niveles)

En la arquitectura de tres niveles, existe una arquitectura de aplicaciones de software definida que organiza las aplicaciones en tres niveles lógicos y físicos: el nivel de presentación, o interfaz de usuario; el nivel de aplicación, donde se procesan los datos; y el nivel de datos, donde se almacenan y gestionan los datos asociados a la aplicación.

Los protocolos HTTP/HTTPS se utilizan habitualmente para las conexiones e interacciones en red, permitiendo peticiones y respuestas estándar. Además, algunas aplicaciones pueden emplear otros protocolos como FTP/FTPS, TCP y UDP.

La arquitectura de tres niveles tiene una ventaja de seguridad ya que evita que el usuario final se comunique directamente con el servidor de la base de datos.

Three-Tier architecture (Arquitectura de tres niveles)

Tipo de pruebas

Como en todo tipo de auditorías de seguridad, se recomienda seguir una estructura a la hora de realizar las diferentes pruebas en busca de vulnerabilidades.

En el siguiente diagrama, OWASP proporciona una visión general de las principales áreas clave y métodos utilizados en la prueba de seguridad de aplicaciones thick client, organizando las técnicas de acuerdo a diferentes fases y vectores de ataque:

Thick Client Security Testing

Recolección de Información

  • Arquitectura de la Aplicación: Estudiar cómo está diseñada la aplicación, incluyendo sus componentes y cómo interactúan entre sí.
    • Lógica de Negocio: Entender los procesos y reglas que gestionan la aplicación.
  • Mapeo de Plataforma: Identificar las plataformas en las que se ejecuta la aplicación y cómo está desplegada.
    • Entendiendo la Aplicación e Infraestructura: Comprender la infraestructura sobre la que se está ejecutando y las dependencias de la aplicación.
  • Lenguajes y Frameworks: Identificar los lenguajes de programación y frameworks utilizados en la aplicación.
    • Vulnerabilidades Comunes: Conocer las vulnerabilidades típicas asociadas a los lenguajes y frameworks identificados.

Ataques del Lado del Cliente

  • Análisis de Archivos: Revisar los archivos utilizados por la aplicación en busca de información sensible.
    • Información Sensible: Datos confidenciales que podrían estar expuestos o mal gestionados.
  • Análisis Binario: Examinar el binario de la aplicación para encontrar vulnerabilidades.
    • Análisis Estático (Descompilación): Descompilar el código para entender su funcionamiento sin ejecutarlo.
    • Análisis Dinámico (Tiempo de Ejecución – Ingeniería Inversa): Analizar la aplicación en tiempo de ejecución para observar su comportamiento y posibles puntos de ataque.
  • Análisis de Memoria: Evaluar cómo la aplicación maneja y almacena la memoria durante su ejecución.
    • Manipulación de Memoria: Intentar modificar la memoria de la aplicación para alterar su comportamiento.
    • Información Sensible Almacenada en Memoria: Verificar si se almacena información sensible en la memoria que pueda ser extraída o manipulada.

Ataques del Lado de la Red

  • Tráfico de Instalación: Monitorizar el tráfico generado durante la instalación de la aplicación.
    • Información Sensible de Instalación: Detectar si se transmite información sensible durante el proceso de instalación.
  • Tráfico en Tiempo de Ejecución: Analizar el tráfico de red mientras la aplicación está en funcionamiento.
    • Información Sensible: Identificar datos sensibles que puedan estar siendo transmitidos de forma insegura.
    • APIs Vulnerables: Evaluar las APIs utilizadas por la aplicación para detectar vulnerabilidades.

Ataques del Lado del Servidor

  • Ataques TCP/UDP: Explorar vulnerabilidades en las comunicaciones TCP/UDP.
    • Inundaciones (Flooding): Realizar ataques de denegación de servicio mediante el envío masivo de tráfico.
    • Desbordamientos (Overflows): Intentar desbordamientos de buffer y otros tipos de overflows para ejecutar código arbitrario.
  • Ataques de Capa 7: Evaluar vulnerabilidades en la capa de aplicación.
    • OWASP Top 10: Identificar y mitigar las principales vulnerabilidades de seguridad web según la lista OWASP Top 10.

Hasta aquí la introducción a aplicaciones de escritorio (Thick Client).

En las próximas entradas veremos cómo instalar el entorno para poder auditar y realizaremos diferentes pruebas de seguridad.

¡Nos vemos en el próximo! 😊

Referencias

Contacta con nosotros

Información básica sobre el tratamiento de datos personales:

Responsable: Carolina Gómez Uriarte.
Finalidad: Responder a tu comentario, duda, solicitud de información o presupuesto.
Legitimación: Interés legítimo en atender tu petición y, cuando proceda, aplicación de medidas precontractuales.
Derechos: acceso, rectificación, supresión, limitación del tratamiento, oposición, portabilidad, a no ser objeto de decisiones individuales automatizadas sin tu consentimiento y a presentar una reclamación ante una autoridad de control.
Información adicional: En la Política de Privacidad, encontrarás información adicional sobre la recopilación y el uso de tu información personal, así como de los derechos que tienes en relación con dichos datos.