Todos nos hemos encontrado con advertencias al visitar sitios web sospechosos. Su navegador o motor de búsqueda podría incluso impedirle ingresar, mostrando un mensaje de que este sitio puede dañar su dispositivo. Pero, ¿qué sucede si el sitio que intenta visitar no está marcado como malicioso?
Según el Informe de seguridad de 2022 de SiteLock, el 92% de los sitios web infectados no están en la lista negra de los motores de búsqueda. Esto significa que las empresas y las personas son vulnerables a los ataques cuando visitan estos sitios.
Hay una serie de razones por las que los motores de búsqueda no detectan sitios infectados. En primer lugar, pueden pasar semanas o incluso meses hasta que un sitio web se identifique como malicioso. Esto se debe a que los atacantes cambian constantemente sus tácticas para evadir la detección. En segundo lugar, muchas empresas no se dan cuenta de que su sitio ha sido pirateado hasta que es demasiado tarde. Y en tercer lugar, incluso si se marca un sitio web, no hay garantía de que los usuarios lo eviten.
Entonces, ¿qué se puede hacer para proteger a las empresas y los usuarios de estas amenazas? Así como los ciberdelincuentes usan la IA para automatizar sus ataques, nosotros también podemos usar la IA para defender las empresas. Esto no es meramente teoría; Un análisis de IEEE de las técnicas de detección de malware basadas en IA concluyó que " proporcionan ventajas significativas ", como en términos de precisión, velocidad y escalabilidad.
Por ejemplo, SafeDNS utiliza " aprendizaje automático continuo ", logrando una precisión del 98 % en la detección de malware. Usan una "base de datos de malware" para impulsar modelos de aprendizaje automático que analizan datos para buscar nuevos patrones de comportamiento que podrían indicar una amenaza. Esto les permite identificar las amenazas de forma rápida y eficaz, antes de que puedan causar algún daño.
Si queremos estar un paso por delante de los ciberdelincuentes, debemos utilizar la IA para defender nuestros negocios. Las investigaciones recientes son una llamada de atención: es hora de actuar e invertir en soluciones impulsadas por IA.
Hay muchas maneras de detectar y protegerse contra el malware. En esta sección, veremos uno de esos métodos: usar Python para detectar malware basado en un conjunto de datos de archivos ejecutables. Vea el código asociado completo aquí .
El conjunto de datos que usaremos es del conjunto de datos " Detección de malware ejecutable " de Kaggle. Está compuesto por 373 muestras de archivos ejecutables, 301 de los cuales son archivos maliciosos y 72 no maliciosos. Como puede ver, el conjunto de datos está desequilibrado , con archivos regulares superados en número por archivos de malware.
Hay 531 funciones representadas en el conjunto de datos, de F1 a F531, y una columna de etiqueta que indica si el archivo es malicioso o no malicioso. No usaremos todas estas características, pero usaremos una variedad de ellas para construir nuestros modelos.
Comenzaremos importando las bibliotecas necesarias para nuestra demostración. Usaremos las bibliotecas pandas, numpy y scikit-learn:
import pandas as pd import numpy as np import sklearn from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn import metrics from sklearn.metrics import classification_report from sklearn.metrics import roc_curve,accuracy_score,confusion_matrix,recall_score,precision_score,f1_score, auc, roc_auc_score from sklearn.model_selection import train_test_split
A continuación, cargaremos el conjunto de datos:
df = pd.read_csv('uci_malware_detection.csv')
Ahora que hemos echado un vistazo al conjunto de datos, avancemos y dividámoslo en conjuntos de entrenamiento y prueba. También asignaremos las etiquetas de cadenas a números y eliminaremos los duplicados:
df['Label'] = df['Label'].map({'malicious': 0, 'non-malicious': 1}) df = df.drop_duplicates(keep=False) X, y = df.drop("Label", axis=1), df["Label"] X_train, X_test, y_train, y_test= train_test_split(X,y, test_size=0.2, random_state=42)
Ahora estamos listos para construir nuestros modelos. Usaremos un modelo de regresión logística simple:
lr_model = LogisticRegression(max_iter=1,000) lr_model.fit(X_train, y_train)
Ahora podemos evaluar el rendimiento de nuestro modelo en el conjunto de prueba:
lr_model.score(X_test, y_test) y_pred = lr_model.predict(X_test) print(accuracy_score(y_test, y_pred)) print('ROC-AUC score', roc_auc_score(y_test,y_pred)) print('Confusion matrix:\n ', confusion_matrix(y_test, y_pred))
Ejecutar este código nos da el siguiente resultado:
0.9864864864864865 ROC-AUC score 0.9705882352941176 Confusion matrix: [[57 0] [ 1 16]]
En última instancia, hemos logrado hacer un modelo preciso con alta precisión y recuperación. ¡Nada mal! Por supuesto, esto es solo una prueba de concepto, ya que la situación del mundo real es mucho más compleja. A escala, los sistemas de IA entrenados en big data pueden marcar una diferencia real en la lucha contra el malware.