Cómo te infecta el gusano Stuxnet
Stuxnet utilizará diferentes códigos para infectar los PLC en función de las características del sistema de destino.
Una secuencia de infección consta de varios módulos de PLC (módulos de código y módulos de datos), que se inyectan en el PLC para cambiar el comportamiento del PLC de destino. Esta amenaza consta de tres secuencias de infección. Stuxnet determina si un sistema es el objetivo de un ataque planificado verificando la "huella digital" del sistema. Comprobará:
Tipo/serie de PLC: sólo las CPU 6ES7-417 y 6ES7-315-2 están infectadas. Módulo de datos del sistema: el SDB se analizará según los datos que contenga, el proceso de infección seleccionará A, B u otro método de infección para iniciar la operación. Al analizar el SDB, el código busca la presencia de los valores 7050h y 9500h, y luego selecciona la secuencia A o B para infectar el PLC en función del número de apariciones de estos dos valores. El código también busca la secuencia de bytes 2C CB 00 01 en el subconjunto 50h del módulo SDB, que refleja la presencia del procesador de comunicaciones CP 342-5 (para Profibus-DP). Este subconjunto refleja la presencia o ausencia del procesador de comunicaciones CP 342-5 (para Profibus-DP).
La selección de la secuencia C para la infección también está restringida por otros factores. Stuxnet utiliza un método de "inserción de código" para la infección. Cuando Stuxnet infecta OB1, hace lo siguiente:
Aumenta el tamaño del módulo original; escribe código malicioso al principio del módulo;
Inserta el código OB1 original después del código malicioso. código.
Stuxnet también infecta a OB35 de forma similar a OB1. Reemplaza el bloque de código DP_RECV del coprocesador estándar con su propio bloque de código y luego conecta la comunicación de red en Profibus, un bus de red industrial estándar para E/S distribuidas.
Los pasos para la infección mediante el método A/B son los siguientes:
Compruebe el tipo de PLC;
El tipo debe ser S7/315-2;
Compruebe el módulo SDB para determinar qué secuencia en A o B debe escribirse;
Encuentre el DP_RECV, cópielo en FC1869, luego use Stuxnet y reemplácelo con una copia maliciosa incorporada por Stuxnet;
p>
Escribir módulos maliciosos incrustados por Stuxnet en la secuencia (20 *** en total);
Infectar OB1 para ejecutar código malicioso en el comienzo de un nuevo ciclo;
Infectado con OB35, desempeñará un papel de "perro guardián". Estas secuencias contienen los siguientes módulos:
Bloques de código: FC1865 a FC1874, FC1876 a FC1880 (nota: FC1869 no es parte de Stuxnet, sino una copia del módulo PLC DP_RECV);
Módulos de datos: DB888 a DB891. Las secuencias A y B interceptan el código OB1 utilizando el módulo de enlace DP_RECV. Los módulos de enlace RECV se utilizan para interceptar paquetes en Profibus y crear otros paquetes en función de los valores de estos módulos y enviarlos. Esto está controlado por una máquina de estados compleja (la máquina de estados está integrada en el módulo FC mencionado anteriormente).
Bajo determinadas condiciones, el PLC se escribirá en la secuencia C. Esta secuencia contiene más módulos que A y B:
FC6055 a FC6084, DB8063, DB8064 a DB8070 (generados durante el tiempo de ejecución). La secuencia C se utiliza principalmente para leer y escribir información de E/S en el área de E/S de mapeo de archivos de memoria del PLC y en las E/S de dispositivos periféricos.
El flujo de control del programa A/B se muestra en la siguiente figura. Parte del flujo de control se muestra en la captura de pantalla anterior del editor Step7 (módulo de datos FC1873):
Y la secuencia C El flujo del programa es más complicado, como se muestra en la siguiente figura
4. Herramienta raíz
El código de la herramienta raíz de Stuxnet PLC está oculto en el falso s7otbxdx.dll . Para no ser detectado por el PLC, debe gestionar al menos las siguientes solicitudes:
Solicitudes para leer sus propios módulos de datos maliciosos; solicitudes para leer módulos infectados (OB1, OB35, DP_RECV posiblemente sobrescribiendo); Solicitud de escritura de código propio de Stuxnet. Stuxnet contiene código que monitorea e intercepta estas solicitudes y las modifica para garantizar que el código PLC de Stuxnet no sea detectado ni comprometido. Aquí hay algunos ejemplos de cómo Stuxnet usa el comando de exportación de gancho para lidiar con estas situaciones:
s7blk_read: monitorea las solicitudes de lectura, Stuxnet devuelve: DP_RECV de la solicitud real (guardada como FV1869); implica su módulo malicioso, se devuelve un mensaje de error una copia limpia de OB1 u OB35. s7blk_findfirst / s7blk_findnext: Estas rutinas se utilizan para enumerar módulos en el PLC. s7blk_delete omite automáticamente los módulos maliciosos: supervisa las operaciones de "eliminación" en los módulos. Como se mencionó anteriormente, Stuxnet es una amenaza muy sofisticada y el código de infección del PLC hace que el problema sea aún más difícil de resolver. Sólo se puede analizar en detalle el código MC7 inyectado (al que le hicimos ingeniería inversa hace unos meses). Para obtener más información sobre el programa de infección de PLC y Stuxnet, asegúrese de consultar nuestro próximo documento técnico en la conferencia Virus Bulletin.