Estructura interna de funcionamiento de un Antivirus genérico – v.10
En esta entrada intentaré analizar de forma sencilla como funciona un antivirus. Aunque el proceso es bastante más complejo de los descrito, la infografía animada ofrece un boceto y esbozo de los componentes internos y su estructura. He creado la imagen ya que no he sido capaz de encontrar en internet mucha información al respecto.
En el diagrama animado se puede observar que lo primero que hace el antivirus es cargar su interfaz inicial y una vez en memoria, carga el motor en tiempo real (si está disponible). La interfaz inicial puede ser mostrada apenas cargar el sistema, o como un componene systray de la barra de aplicaciones. Una vez en memoria tendrá acceso privilegiado a los recursos y procesos del sistema. Por lo que requiere un nivel de ejecución de administrador o superusuario. Es por eso, que pueden (no necesariamente) llegar a ser incompatibles varias soluciones de antivirus a la vez ya que pueden provocar un incorrecto funcionamiento del sistema. En algunos sistemas, se controlará cual de ellos se encuentra activo de forma primaria.
La carga del resto de motores se realiza de forma paralela al motor principal. Pueden ser servicios o ser lanzados en función del uso. Por ejemplo, al abrir el cliente de correo predeterminado el motor detecta la apertura y supervisa los correos entrantes. Algunos motores pueden ser desactivados de forma explícita, si no se requiere su uso. En un escenario donde no existe la posibilidad de inserción de dispositivos USB por ejemplo.
La carga inicial del antivirus dependerá del tipo de sistema operativo, por ejemplo, en un sistema Windows, se produce de dos formas, como una entrada establecida en el arranque para todos los usuarios, cuyos parámetros iniciales se encuentran en el registro del sistema, o mediante la carga de un servicio que quede residente al iniciarse el sistema.
En todo caso, existe un panel de opciones generales que son leídas de la base de datos de configuración del antivirus. Esa base de datos es de lectura/escritura, ya que almacena las preferencias del programa y del usuario. Muchas opciones pueden ser sólo leídas ya que algunos productos ofrecen la posibilidad de desactivar a modo administrativo su manipulación, bien desde el endpoint o desde un servidor de administración de despliegues, políticas de dominio, etc.
El escaneao en busca de ficheros infectados se realiza de dos formas, en background o a petición del usuario.
La mayor parte de los antivirus poseen un controlador especial para acceder al sistema de ficheros. Este controlador, posibilita acceder sin bloqueos, a los ficheros, para su posible lectura, manipulación o borrado, de forma veloz, precisa y además tener la capacidad de realizar estas acciones independientemente del tipo de usuario que inicie en el sistema. Los controladores se programan a bajo nivel, generalmente en lenguajes como C o C++. Siguiendo el ejemplo anterior para un sistema Windows, la programación del controlador no podría ser realizada en .net ya que sería como un nivel superior a la necesidad de acceder completamente a los recursos de los ficheros.
La mayoría de los software antivirus en función de sus características ofrecen diversos motores especializados que trabajan de diferente forma en función del contexto y fin para el que han sido programados.
Motores especializados en la detección de virus en correo electrónico, analítica de direcciones o sitios web, motor de ransomware o software de cifrado y pago de rescate, motor de detección de conexiones USB o inalámbricas, motor de red. Todos ellos se encuentran conectados con las bases de datos de posibles firmas, y base de datos de posibles desinfecciones. La base de datos de desinfecciones ofrece las pautas en determinado orden que se debe realizar para desinfectar en sistema. Pueden ser rutinas de comandos ejecutados de forma secuencial o pautas de actuación.
Los ficheros detectados, se ubican en una base de datos de archivos en cuarentena, el controlador de ficheros a bajo nivel impide su apertura o ejecución. El controlador de ficheros supervisa el lanzamiento de nuevas aplicaciones a memoria, evitando que se conviertan en procesos dañinos si son detectados.
Además de la base de datos de configuración del software, existen otras bases de datos locales on premise que se actualizan periódicamente. Una de ellas es el sistema de firmas. Las firmas ofrecen un hash para detectar los archivos con virus cuando se contrasta con la base.
Tanto el programa principal como las bases de firmas, también se suelen actualizar de forma remota. Las actualizaciones de la aplicación que se descargará de un repositorio distribuido o central y la actualización de la base de datos local de firmas. Todas las actualizaciones de aplicación se verifican contrastando hashes para evitar suplantación.
Cuanto más actualizaciones sufra tanto el programa como la base de datos de las firmas, más eficaz y posibilidades tendremos de detectar software peligroso. El módulo en tiempo real también debe contar con un componente heurístico para su funcionamiento.
Para controlar el buen funcionamiento de todos los módulos existe de forma redundada un sistema de supervisión y caída de motores. Permiten controlar el buen funcionamiento de los motores, levantarlos en caso de fallo y control de su posible manipulación.
Los antivirus ofrecen la posibilidad de reportar los análisis, informar de acciones bien en pantalla como generando informes, estadísticas, conexiones, etc.
Algunos de ellos cuidan la interfaz gráfica otros prefieren la simplicidad. También pueden lanzarse comandos en modo terminal. Lo más importante bajo mi criterio es su algoritmia, velocidad y capacidad de detección.
Siguiendo con otros ejemplos, el antivirus GNU ClamAV.
ClamAV® es un motor antivirus de código abierto (GPL) que se utiliza en una variedad de situaciones, incluido el escaneo web y de correo electrónico, y la seguridad de terminales. Proporciona muchas utilidades para los usuarios, incluido un demonio multiproceso flexible y escalable, un escáner de línea de comandos y una herramienta avanzada para actualizaciones automáticas de bases de datos.
Ofrece sistemas de detección, y análisis en tiempo real (solo para GNU/Linux, freshclam), en cambio en Windows no ofrece la opción del motor en tiempo real. Clamwin, no la posee y tiene una interfaz poco actualizada (que conste que es un proyecto desligado pero usa su sistema de firmas) e Immunet una vez adquirida por Cisco va a ser discontinuada en enero de 2024.
Otras soluciones de pago, incluyen muchas posibilidades y libertad de elección en función de los módulos y puestos que necesitemos tener controlados. Tanto terminales, equipos y dispositivos móviles. En función de lo que contratemos, tanta seguridad poseeremos.
Los sistemas de antivirus generalmente de serie, gratuitos o limitados, no suelen ofrecen protección completa debido a la ausencia de ciertos módulos de control.
Nota:
Algunos me comentasteis sobre la herramienta HDLëD Pro que desarrolle para Windows. Me gustaría aclarar aunque lo dejo explicado en la entrada que sólo ofrece el módulo de detección de cifrado, no de desinfección. Aunque puede que en futuras versiones incorpore el motor de clamav.
Diagrama construido con screenshot 4.0 by palentino, Screentogif y DrawIO.
Animaciones gratuitas de https://lordicon.com/