Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
FreeMOCA | Kitploit
Strumenti/GitHubGitHub/iqsec-lab/freemoca
Sicurezza AndroidAnalisi StaticaAnalisi MalwareMachine LearningPaper e RicercaApprendimento e Formazione
GitHubiqsec-lab/freemoca

FreeMOCA

Vedi Repository
1 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

FreeMOCA: Apprendimento Continuo Senza Memoria per l'Analisi di Codice Maligno

[Link all'ArXiv Paper]

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

*Autori con pari contributo. †Autore corrispondente.

[!NOTE] Questa è l'implementazione ufficiale dell'articolo FreeMOCA: Memory-Free Continual Learning for Malicious Code Analysis.

Pipeline di FreeMOCA

FreeMOCA_Overview_v3

FreeMOCA opera nel seguente processo:

  1. I task arrivano in sequenza, ciascuno introduce nuove famiglie di malware.
  2. Il modello per ogni task viene inizializzato dal task precedente (warm-start) per allineare i minimi dei task nello spazio dei parametri.
  3. Dopo l'addestramento, viene calcolata un'interpolazione basata sulla connettività delle modalità (mode connectivity) tra gli ottimi del task corrente e di quello precedente. Questo processo può utilizzare un'interpolazione adattiva layer-wise basata sull'entità degli aggiornamenti dei parametri.
  4. Il modello interpolato sostituisce il modello corrente e viene utilizzato per il task successivo.
  5. Nessun dato passato, caratteristica o campione generato viene memorizzato, ottenendo così un apprendimento continuo senza memoria.

L'intero processo costruisce una catena di soluzioni connesse che giacciono su una varietà a bassa perdita (low-loss manifold), riducendo significativamente l'oblio catastrofico.

Dataset

FreeMOCA è stato valutato con due dataset di malware su larga scala, EMBER e Androzoo. Fonti dei dataset:

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

Scarica e configura il dataset nella seguente directory:

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
    └── ...

Eseguire FreeMOCA

Questa repository supporta due scenari di apprendimento continuo:

  • Class-Incremental Learning (Class-IL): nuove classi (famiglie di malware) vengono introdotte nel corso dei task.
  • Domain-Incremental Learning (Domain-IL): lo spazio delle etichette è fisso, ma la distribuzione dei dati cambia nel tempo (es. mesi/anni).

Passo 1. Installazione

Esegui il seguente comando per la

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

Passo 2. Eseguire FreeMOCA (Class-IL & 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

Per una configurazione più dettagliata degli iperparametri, consulta Appendice A. Argomenti Comuni per FreeMOCA.

Appendice A. Argomenti Comuni per FreeMOCA

Per regolare gli iperparametri o le impostazioni sperimentali, utilizza i seguenti argomenti:

Per modificare le impostazioni predefinite degli argomenti, controlla il file arguments.py.

Baselines

La nostra repository supporta esperimenti con le seguenti baselines standard:

  • None: Addestra solo sul task corrente (limite inferiore)
  • Joint: Addestra su tutti i dati visti finora (limite superiore, non praticabile)

Puoi eseguirle con il seguente 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

e i seguenti lavori precedenti:

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

Puoi eseguire le baselines con il seguente 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
Scarica lo strumento
ArgumentDescrizione
--init_classesNumero di classi al task 0
--epochsEpoche per task
--batchsizeDimensione del batch
--lrLearning rate
--momentumMomento SGD
--weight_decayDecadimento del peso
--lambda_minPeso minimo di interpolazione
--lambda_maxPeso massimo di interpolazione