Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
FreeMOCA | Kitploit
Herramientas/GitHubGitHub/iqsec-lab/freemoca
Seguridad AndroidAnálisis EstáticoAnálisis de MalwareAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y Educación
GitHubiqsec-lab/freemoca

FreeMOCA

Ver Repositorio
hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

FreeMOCA: Aprendizaje Continuo sin Memoria para el Análisis de Código Malicioso

[Enlace al artículo de ArXiv]

Zahra Asadi*, Haeseung Jeon*, Sohyun Han, Md Mahmuduzzaman Kamol, Se Eun Oh, Mohammad Saidur Rahman†

*Autores con igual contribución. †Autor de correspondencia.

[!NOTE] Esta es la implementación oficial del artículo FreeMOCA: Aprendizaje Continuo sin Memoria para el Análisis de Código Malicioso.

Pipeline de FreeMOCA

FreeMOCA_Overview_v3

FreeMOCA opera mediante el siguiente proceso:

  1. Las tareas llegan de forma secuencial, cada una introduce nuevas familias de malware.
  2. El modelo de cada tarea se inicializa a partir de la tarea anterior (warm-start) para alinear los mínimos de las tareas en el espacio de parámetros.
  3. Después del entrenamiento, se calcula una interpolación basada en conectividad de modos entre los óptimos de la tarea actual y la anterior. Este proceso puede usar interpolación adaptativa por capas basada en la magnitud de la actualización de parámetros.
  4. El modelo interpolado reemplaza al modelo actual y se utiliza para la siguiente tarea.
  5. No se almacenan datos pasados, características ni muestras generadas, lo que resulta en un aprendizaje continuo sin memoria.

Todo el proceso construye una cadena de soluciones conectadas que se encuentran en una variedad de baja pérdida, reduciendo significativamente el olvido catastrófico.

Datasets

FreeMOCA se evaluó con dos conjuntos de datos de malware a gran escala, EMBER y Androzoo. Fuentes de los datos:

  • EMBER: https://github.com/elastic/ember
  • Androzoo (AZ): https://zenodo.org/records/14537891

Descargue y configure el conjunto de datos en el siguiente directorio:

root@kitploit:~
FreeMOCA/data/
├── AZ_Class
│   ├── AZ_Class_Test.npz
│   └── AZ_Class_Train.npz
│
├── AZ_Domain
│   ├── 2008_Domain_AZ_Test_Transfo...
│   ├── 2008_Domain_AZ_Train_Transfo...
│   ├── 2009_Domain_AZ_Test_Transfo...
│   └── ...
│
├── EMBER_Class
│   ├── XY_test.npz
│   └── XY_train.npz
│
└── EMBER_Domain
    ├── 2018-01
    ├── 2018-02
    ├── 2018-03
    └── ...

Ejecutar FreeMOCA

Este repositorio admite dos escenarios de aprendizaje continuo:

  • Aprendizaje Incremental por Clases (Class-IL): se introducen nuevas clases (familias de malware) a lo largo de las tareas.
  • Aprendizaje Incremental por Dominio (Domain-IL): el espacio de etiquetas es fijo, pero la distribución de los datos cambia con el tiempo (p. ej., meses/años).

Paso 1. Instalación

Ejecute el siguiente comando para el

root@kitploit:~
conda create -n freemoca python=3.9
conda activate freemoca
pip install -r requirements.txt

Paso 2. Ejecutar FreeMOCA (Class-IL y Domain-IL)

root@kitploit:~
# EMBER Class-IL
cd ./FreeMOCA_Class/EMBER_Class
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
root@kitploit:~
# AZ Class-IL
cd ./FreeMOCA_Class/AZ_Class
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
root@kitploit:~
# EMBER Domain-IL
cd ./FreeMOCA_Domain/EMBER_Domain
CUDA_VISIBLE_DEVICES=0 python main.py --data_root /path/to/data/directory
root@kitploit:~
# AZ Domain-IL
cd ./FreeMOCA_Domain/AZ_Domain
CUDA_VISIBLE_DEVICES=0 python main.py --data_root /path/to/data/directory

Para una configuración más detallada de los hiperparámetros, consulte el Apéndice A. Argumentos comunes para FreeMOCA.

Apéndice A. Argumentos comunes para FreeMOCA

Para ajustar los hiperparámetros o la configuración experimental, use los siguientes argumentos:

Para cambiar la configuración predeterminada de los argumentos, consulte el archivo arguments.py.

Baselines

Nuestro repositorio admite experimentos con las siguientes líneas base estándar:

  • None: Entrenar solo en la tarea actual (cota inferior)
  • Joint: Entrenar con todos los datos vistos hasta ahora (cota superior, poco práctico)

Puede ejecutarlas con el siguiente comando:

root@kitploit:~
cd /path/to/experiment/directory
CUDA_VISIBLE_DEVICES=0 python none.py --arugment_you_want
CUDA_VISIBLE_DEVICES=0 python joint.py --arugment_you_want

y los siguientes trabajos previos:

  • CLeWI: Modificado de este repositorio de GitHub, trabajo de "Continual Learning with Weight Interpolation."
  • WSC: Modificado de este repositorio de GitHub, trabajo de "Forget Forgetting: Continual Learning in a World of Abundant Memory."
  • Generative Replay (GR): Modificado de este repositorio de GitHub, trabajo de "Continual learning with deep generative replay."
  • EWC: Modificado de este repositorio de GitHub, trabajo de "Overcoming catastrophic forgetting in neural networks."
  • LwF: Modificado de este repositorio de GitHub, trabajo de "Learning without Forgetting."
  • iCaRL: Modificado de este repositorio de GitHub, trabajo de "iCaRL: Incremental Classifier and Representation Learning."
  • TAMiL: Modificado de este repositorio de GitHub, trabajo de "Task-Aware Information Routing from Common Representation Space in Lifelong Learning."
  • MalCL: Modificado de este repositorio de GitHub, trabajo de "MalCL: Leveraging GAN-Based Generative Replay to Combat Catastrophic Forgetting in Malware Classification."

Puede ejecutar las líneas base con el siguiente comando:

root@kitploit:~
# CLeWI for EMBER-Class
cd ./baselines/CLeWI
CUDA_VISIBLE_DEVICES=6 python main.py --model="clewi" \
  --dataset="seq_ember" --n_tasks=11 \
  --lr=0.001 --buffer_size=500 --n_epochs=50 \
  --seed=42 --optim_wd=0.0 --optim_mom=0.0 \
  --batch_size=512 --sub_dataset="ember"

# CLeWI for AZ-Class
cd ./baselines/CLeWI
CUDA_VISIBLE_DEVICES=6 python main.py --model="clewi" \
  --dataset="seq_ember" --n_tasks=11 \
  --lr=0.001 --buffer_size=500 --n_epochs=50 \
  --seed=42 --optim_wd=0.0 --optim_mom=0.0 \
  --batch_size=512 --sub_dataset="az"
root@kitploit:~
# WSC for EMBER-Class
cd ./baselines/WSC
MODEL_NAME=wsc_20_ember
python main.py --config=./exps/wsc_memory/$MODEL_NAME.json
root@kitploit:~
# WSC for AZ-Class
cd ./baselines/WSC
MODEL_NAME=wsc_20_az
python main.py --config=./exps/wsc_memory/$MODEL_NAME.json
root@kitploit:~
# GR for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=EMBER --tasks=11 --replay=generative --metrics --logger_file gr --scenario=class

# GR for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=ANDROZOO --tasks=11 --replay=generative --metrics --logger_file gr --scenario=class
root@kitploit:~
# EWC for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=EMBER --tasks=11 --ewc --lambda=50 --metrics --logger_file ewc --scenario=class

# EWC for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=ANDROZOO --tasks=11 --ewc --lambda=50 --metrics --logger_file ewc --scenario=class
root@kitploit:~
# LwF for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=EMBER  --tasks=11 --replay=current --distill --metrics --logger_file lwf --scenario=class

# LwF for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=AZ  --tasks=11 --replay=current --distill --metrics --logger_file lwf --scenario=class
root@kitploit:~
# iCaRL for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=1 python main.py --data_set=EMBER --tasks=11 --icarl --budget=2000 --metrics --logger_file=icarl --scenario=class

# iCaRL for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=ANDROZOO --tasks=11 --icarl --budget=2000 --metrics --logger_file=icarl --scenario=class
root@kitploit:~
# TAMiL for EMBER-Class
cd ./baselines/TAMiL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py

# TAMiL for AZ-Class
cd ./baselines/TAMiL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py
root@kitploit:~
# MalCL for EMBER-Class
cd ./baselines/MalCL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data

# MalCL for AZ-Class
cd ./baselines/AZ_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
Descargar herramienta
ArgumentDescripción
--init_classesNúmero de clases en la tarea 0
--epochsÉpocas por tarea
--batchsizeTamaño del lote
--lrTasa de aprendizaje
--momentumMomento de SGD
--weight_decayDecaimiento de peso
--lambda_minPeso mínimo de interpolación
--lambda_maxPeso máximo de interpolación