{"id":10855,"date":"2023-12-17T01:29:04","date_gmt":"2023-12-17T00:29:04","guid":{"rendered":"https:\/\/www.palentino.es\/blog\/?p=10855"},"modified":"2023-12-17T12:40:20","modified_gmt":"2023-12-17T11:40:20","slug":"estructura-interna-de-funcionamiento-de-un-antivirus-generico","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/estructura-interna-de-funcionamiento-de-un-antivirus-generico\/","title":{"rendered":"Estructura interna de funcionamiento de un Antivirus gen\u00e9rico"},"content":{"rendered":"<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2023\/12\/EstructuraAntivirus.gif\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10857 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2023\/12\/EstructuraAntivirus.gif\" alt=\"\" width=\"1191\" height=\"777\" \/><\/a><\/p>\n<p><strong>Estructura interna de funcionamiento de un Antivirus gen\u00e9rico &#8211; v.10<\/strong><\/p>\n<p>En esta entrada intentar\u00e9 analizar de forma sencilla como funciona un antivirus. Aunque el proceso es bastante m\u00e1s <strong>complejo<\/strong> de los descrito, la infograf\u00eda animada ofrece un boceto y esbozo de los <strong>componentes internos y su estructura<\/strong>. He creado la imagen ya que no he sido capaz de encontrar en internet mucha informaci\u00f3n al respecto.<\/p>\n<p>En el diagrama animado se puede observar que lo primero que hace el antivirus es cargar su<strong> interfaz inicial<\/strong> y una vez en memoria, carga el <strong>motor en tiempo real<\/strong> (si est\u00e1 disponible).\u00a0 La interfaz inicial puede ser mostrada apenas cargar el sistema,\u00a0 o como un componene systray de la barra de aplicaciones. Una vez en memoria tendr\u00e1<strong> acceso privilegiado<\/strong> a los recursos y procesos del sistema. Por lo que requiere un nivel de ejecuci\u00f3n 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\u00e1 cual de ellos se encuentra activo de forma primaria.<\/p>\n<p>La carga del resto de motores se realiza de forma <strong>paralela<\/strong> al motor principal. Pueden ser servicios o ser lanzados en funci\u00f3n del uso. Por ejemplo, al abrir el cliente de<strong> correo predeterminado<\/strong> el motor detecta la apertura y supervisa los correos entrantes. Algunos motores pueden ser desactivados de forma <strong>expl\u00edcita<\/strong>, si no se requiere su uso. En un escenario donde no existe la posibilidad de inserci\u00f3n de dispositivos USB por ejemplo.<\/p>\n<p>La carga inicial del antivirus <strong>depender\u00e1 del tipo de sistema operativo<\/strong>, por ejemplo, en un sistema Windows, se produce de dos formas, como una entrada establecida en el arranque para todos los usuarios, cuyos par\u00e1metros iniciales se encuentran en el <strong>registro<\/strong> del sistema, o mediante la carga de un <strong>servicio<\/strong> que quede <strong>residente<\/strong> al iniciarse el sistema.<\/p>\n<p>En todo caso, existe un panel de opciones generales que son le\u00eddas de la <strong>base de datos de configuraci\u00f3n del antivirus<\/strong>. Esa base de datos es de lectura\/escritura, ya que almacena las preferencias del programa y del usuario. Muchas opciones pueden ser s\u00f3lo le\u00eddas ya que algunos productos ofrecen la posibilidad de desactivar a modo <strong>administrativo<\/strong> su manipulaci\u00f3n, bien desde el <strong>endpoint<\/strong> o desde un <strong>servidor de administraci\u00f3n de despliegues, pol\u00edticas de dominio, etc.<\/strong><\/p>\n<p>El escaneao en busca de ficheros infectados se realiza de dos formas,\u00a0 en <strong>background<\/strong> o a <strong>petici\u00f3n del usuario<\/strong>.<\/p>\n<p>La mayor parte de los antivirus poseen un<strong> controlador especial<\/strong> para acceder al sistema de ficheros. Este controlador, posibilita <strong>acceder sin bloqueos<\/strong>, a los ficheros, para su posible lectura, manipulaci\u00f3n o borrado, de forma <strong>veloz<\/strong>, precisa\u00a0 y adem\u00e1s 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\u00f3n del controlador no podr\u00eda ser realizada en .net ya que ser\u00eda como un nivel superior a la necesidad de acceder completamente a los recursos de los ficheros.<\/p>\n<p>La mayor\u00eda de los software antivirus en funci\u00f3n de sus caracter\u00edsticas ofrecen<strong> diversos motores especializados<\/strong> que trabajan de diferente forma en funci\u00f3n del contexto y fin para el que han sido programados.<\/p>\n<p>Motores especializados en la detecci\u00f3n de virus en <strong>correo<\/strong> electr\u00f3nico, <strong>anal\u00edtica<\/strong> de direcciones o sitios <strong>web<\/strong>, motor de <strong>ransomware<\/strong> o software de cifrado y pago de rescate, motor de <strong>detecci\u00f3n de conexiones<\/strong> USB o inal\u00e1mbricas, <strong>motor de red<\/strong>. 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\u00f3n.<\/p>\n<p>Los ficheros detectados, se ubican en una base de <strong>datos de archivos en cuarentena<\/strong>, el controlador de ficheros a bajo nivel impide su apertura o ejecuci\u00f3n. El controlador de ficheros supervisa el lanzamiento de nuevas aplicaciones a memoria, evitando que se conviertan en procesos da\u00f1inos si son detectados.<\/p>\n<p>Adem\u00e1s de la base de datos de configuraci\u00f3n del software, existen <strong>otras bases de datos locales<\/strong> on premise que se actualizan peri\u00f3dicamente. Una de ellas es el sistema de firmas. Las <strong>firmas<\/strong> ofrecen un <strong>hash<\/strong> para detectar los archivos con virus cuando se contrasta con la base.<\/p>\n<p>Tanto el programa principal como las bases de firmas, tambi\u00e9n se suelen actualizar de forma remota. Las actualizaciones de la aplicaci\u00f3n que se descargar\u00e1 de un repositorio distribuido o central y la actualizaci\u00f3n de la base de datos local de firmas. Todas las actualizaciones de aplicaci\u00f3n se verifican contrastando hashes para evitar suplantaci\u00f3n.<\/p>\n<p>Cuanto m\u00e1s <strong>actualizaciones<\/strong> sufra tanto el programa como la base de datos de las firmas, m\u00e1s eficaz y posibilidades tendremos de detectar software peligroso. El m\u00f3dulo en tiempo real tambi\u00e9n debe contar con un componente heur\u00edstico para su funcionamiento.<\/p>\n<p>Para controlar el buen funcionamiento de todos los m\u00f3dulos existe de forma redundada un<strong> sistema de supervisi\u00f3n y ca\u00edda de motores<\/strong>. Permiten controlar el buen funcionamiento de los motores, levantarlos en caso de fallo y control de su posible manipulaci\u00f3n.<\/p>\n<p>Los antivirus ofrecen la posibilidad de reportar los an\u00e1lisis, informar de acciones bien en pantalla como generando <strong>informes<\/strong>, <strong>estad\u00edsticas<\/strong>, conexiones, etc.<\/p>\n<p>Algunos de ellos cuidan la interfaz gr\u00e1fica otros prefieren la <strong>simplicidad<\/strong>. Tambi\u00e9n pueden lanzarse comandos en modo terminal. Lo m\u00e1s importante bajo mi criterio es su <strong>algoritmia, velocidad y capacidad de detecci\u00f3n<\/strong>.<\/p>\n<p>Siguiendo con otros ejemplos, el antivirus GNU <a href=\"https:\/\/www.clamav.net\/\" target=\"_blank\" rel=\"noopener\">ClamAV.<\/a><\/p>\n<p>ClamAV\u00ae es un motor antivirus de <strong>c\u00f3digo abierto<\/strong> (GPL) que se utiliza en una variedad de situaciones, incluido el escaneo web y de correo electr\u00f3nico, y la seguridad de terminales. Proporciona muchas utilidades para los usuarios, incluido un demonio multiproceso flexible y escalable, un esc\u00e1ner de l\u00ednea de comandos y una herramienta avanzada para actualizaciones autom\u00e1ticas de bases de datos.<\/p>\n<p>Ofrece sistemas de detecci\u00f3n, y an\u00e1lisis en tiempo real (solo para GNU\/Linux, freshclam), en cambio en Windows no ofrece la opci\u00f3n del motor en tiempo real. <a href=\"https:\/\/clamwin.com\/\" target=\"_blank\" rel=\"noopener\">Clamwin<\/a>, no la posee y tiene una interfaz poco actualizada (que conste que es un proyecto desligado pero usa su sistema de firmas) e <a href=\"https:\/\/www.immunet.com\/index\" target=\"_blank\" rel=\"noopener\">Immunet<\/a> una vez adquirida por Cisco va a ser discontinuada en enero de 2024.<\/p>\n<p>Otras soluciones de pago, incluyen muchas posibilidades y libertad de elecci\u00f3n en funci\u00f3n de los m\u00f3dulos y puestos que necesitemos tener controlados. Tanto terminales, equipos y dispositivos m\u00f3viles. En funci\u00f3n de lo que contratemos, tanta seguridad poseeremos.<\/p>\n<p>Los sistemas de antivirus generalmente de serie, gratuitos o limitados, no suelen ofrecen protecci\u00f3n completa debido a la ausencia de ciertos m\u00f3dulos de control.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Nota<\/strong>:<\/p>\n<p>Algunos me comentasteis sobre la herramienta <a href=\"https:\/\/www.palentino.es\/blog\/utilidad-para-mostrar-el-led-del-disco-duro-en-pantalla-o-teclado-y-deteccion-de-ransomware\/\"><strong>HDL\u00ebD Pro<\/strong><\/a> que desarrolle para Windows. Me gustar\u00eda aclarar aunque lo dejo explicado en la entrada que s\u00f3lo ofrece el m\u00f3dulo de detecci\u00f3n de cifrado, no de desinfecci\u00f3n. Aunque puede que en futuras versiones incorpore el motor de clamav.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2023\/11\/PalentinoWelcome-2.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10835\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2023\/11\/PalentinoWelcome-2.gif\" alt=\"\" width=\"132\" height=\"137\" \/><\/a><\/p>\n<p>Diagrama construido con screenshot 4.0 by palentino, Screentogif y DrawIO.<\/p>\n<p>Animaciones gratuitas de<a href=\"https:\/\/lordicon.com\/\" target=\"_blank\" rel=\"noopener\"> https:\/\/lordicon.com\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estructura interna de funcionamiento de un Antivirus gen\u00e9rico &#8211; v.10 En esta entrada intentar\u00e9 analizar de forma sencilla como funciona un antivirus. Aunque el proceso es bastante m\u00e1s complejo de los descrito, la infograf\u00eda 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\u00f3n 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\u00e1 disponible).\u00a0 La interfaz inicial puede ser mostrada apenas cargar el sistema,\u00a0 o como un componene systray de la barra de aplicaciones. Una vez en memoria tendr\u00e1 acceso privilegiado a los recursos y procesos del sistema. Por lo que requiere un nivel de ejecuci\u00f3n 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\u00e1 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\u00f3n 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\u00edcita, si no se requiere su uso. En un escenario donde no existe la posibilidad de inserci\u00f3n de dispositivos USB por ejemplo. La carga inicial del antivirus depender\u00e1 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\u00e1metros iniciales se encuentran en el registro del sistema,<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/estructura-interna-de-funcionamiento-de-un-antivirus-generico\/\">(M\u00e1s)\u2026<\/a><\/p>\n","protected":false},"author":1,"featured_media":5050,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"footnotes":""},"categories":[1415],"tags":[236],"class_list":["post-10855","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-sin-categoria-es","tag-antivirus","post_format-post-format-image"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/10855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=10855"}],"version-history":[{"count":36,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/10855\/revisions"}],"predecessor-version":[{"id":10892,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/10855\/revisions\/10892"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/5050"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=10855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=10855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=10855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}