Aunque las siguientes protecciones que vamos a comentar es muy recomendable que se apliquen en entornos empresariales,aunque nuestro enfoque sera para la protección de ATMs.

La implementación de protecciones como Data Execution
Prevention (DEP), Address Space Layout Randomization (ASLR), and Structured Exception Handler
Overwrite Protection (SEHOP) para programas en ejecución o de terceros cumple con el requerimiento The Defense Information Systems Agency (DISA) Security Technical Implementation Guide (STIG)", El cual básicamente comenta que uno de los requerimientos es proteger a los sistemas informáticos y software de explotaciones de software malicioso utilizando software para ataques informáticos, lo cual quiere decir que mediante la utilización de exploits locales o remotos que aprovechen el stack de memoria en el cual se esta ejecutando el software , esta misma recomendación la hemos tomado para implementarla en nuestro end-point mediante las siguientes funciones

Antes de nada vamos a explicar algunos puntos:

  • Este tipo de protecciones de bajo nivel incrementan la seguridad contra la ejecución de malware o troyanos, el cual no significa que proteja al usuario puesto que el usuario puede ser engañado para correr con privilegios cualquier malware el cual pasaría este tipo de protecciones, ademas estas no compiten contra un anti-virus puesto que los antivirus detectan software malicioso inclusive si esta instalado, el cual para el caso de ATMs al no tener usuarios interaccionando con aplicaciones de desktop es mucho mas recomendable utilizar este tipo de protecciones que anti-virus o antimalware.

  • Este tipo de protecciones son incompatibles con aplicaciones que generan código dinámica mente como son las Just-in-Time (JIT) compiladores, o algunos drivers que no están con permisos de ejecución para generar código dinámico. El cual no es el caso para software como APTRA, Probash/procash, agilis etc..
    Hay que tener encuentra que este tipo de protecciones funcionan perfectamente para implementarse en software en ejecución que sabemos que los atacantes van a utilizar para manipular su memoria para explotarla y inyectar su código y funciones, como por ejemplo Java, Internet Explorer, Microsoft OCE apps.

  • ¿Este tipo de protecciones interfieren en software de lista blanca?

    • En absoluto inclusive es recomendado utilizar software de lista blanda y incrementar las protecciones con este tipo de soluciones
    • Hay que diferenciar los siguientes puntos:
      • Protecciones de bajo nivel previenen explotación del sistema
      • Lista blanca de aplicaciones restringen la ejecución de aplicaciones (este tipo de protecciones no restringen todas las formas de ejecución por eso es recomendable tener ambas tanto la primera como esta segunda )
      • El software de Antivirus detecta contenido malicioso.

Son tres acercamiento totalmente diferentes para proteger el sistema operativo y entre ellos son necesarios los 3 para evitar vectores de ataque que estén sueltos.

Muy aparte de listas blancas y de aplicación de políticas de firewall entre otras algo que nos diferencia del sector de protecciones para ATMs es que realmente el producto esta totalmente enfocado y especializado en proteger el entorno de operación y producción de un ATM , que es totalmente diferente al de un Desktop así sea el mismo sistema operativo que se este utilizando.

La siguiente lista esta sacada de las funcionalidades de nuestro end-point para ATMs el cual nos diferencia entre otros fabricantes de seguridad por los siguientes aspectos que no encontraran en ningún otro.

Features

para mayor información sobre estas funcionabilidades pueden consultar aqui

Vamos a explicar como implementar todas estas funciones a través de la interfaz API a cualquier proceso que se este ejecutando dentro del sistema operativo del ATM de forma dinámica y sin requerir recopilar ningún software de terceros todas las protecciones son implementadas "in-live".

Nuestro end-point permite mediante REST-API hacer implementaciones de :

  • "DEP"
  • "EAF+"
  • "EAF"
  • "HeapSpray"
  • "SEHOP"
  • "ASR"
  • "StackPivot"
  • "SimFlowExec"

el cual vamos a demostrar un ejemplo para internet explorer :

Ejecutamos una petición al webserver
http://xx.xx.xx.xx/webapi/controller.php?mdl=protect&idclient=ID

con el siguiente contenido en el body de la petición

{
   "apps":{
      "path":{
         "dir":"*\\Internet explorer",
         "exec":"iexplore.exe"
      },
      "mitigations":{
         "DEP":true,
         "EAF+":true,
         "EAF":true,
         "HeapSpray":true,
         "Nullpage":true,
         "SEHOP":true,
         "ASR":true,
         "StackPivot":true,
         "SimFlowExec":true,
         "BootomUpASLR":true,
         "LoadLib":true,
      }
   }
}

El body en formato json contiene básicamente 2 parámetros el primero es el tipo de implementación de protección que se requiere utilizar y el segundo es el estado de la activación de dicha protección, el cual permitirá al agente hookear la ejecución y implementar las protecciones de bajo nivel necesarias.

Esto nos permitirá proteger aplicaciones como internet explorer de explotaciones avanzadas que intenten esquivar protecciones actuales de los sistemas.

entonces para aplicarlo para las funciones especificas que se requiere por ejemplo para diebold vamos a proteger algunas funciones de EmPower que se muestran a continuación

diebold

la petición seria la sigiente:

POST: http://xx.xx.xx.xx/webapi/controller.php?mdl=protect&idclient=ID

BODY:

{
   "apps":{
      "path":{
         "dir":"*\\diebold\Agiles Empower\Bin",
         "exec":"Diebold.Agilis.Empower.Management.EnterSupervisor.exe"
      },
      "mitigations":{
         "DEP":true,
         "EAF+":true,
         "EAF":true,
         "HeapSpray":true,
         "Nullpage":true,
         "SEHOP":true,
         "ASR":true,
         "StackPivot":true,
         "SimFlowExec":true,
         "BootomUpASLR":true,
         "LoadLib":true,
      }
   }
}

y asi sucesivamente por cada servicio por ejemplo algunos servicios importantes de Diebold

Dentro de cada uno podemos identificar donde se encuentra seleccionados en las siguientes imagenes


entonces repetimos el proceso anterior para cada servicio que esta en ejecución de producción para los cajeros diebold asi protegeremos de explotaciones y/o ataques que intenten utilizar vulnerabilidades que esten dentro de dichos software.

generalmente este tipo de protecciones requieren que el propio proveedor recompile y soluciones las vulnerabilides que tienen internamente pero mediante nuestra solución nosotros nos encargamos de hacer una ejecución tipo Sandboxing para proteger la ejecución de las aplicaciones de terceros.

Exactamente de la misma forma debemos identificar todos los ejecutables y dependencias para ser agregadas a la petición en formato json, el cual una vez recibida por nuestro agente permitirá implementar dichas protecciones en cada una de las aplicaciones algunas muy necesarias como los encargados de la operatibilidad de el cash dispenser o el pinpad así como software directamente de windows que este dentro del cajero automático así evitaremos que cualquier exploit que aproveche alguna técnica de utilización de memoria indebida o vulnerabilidades locales sean protegidas por nuestro agente sin la necesidad de un antivirus.