Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
FreeMOCA — モード連結性に基づく補間を用いたマルウェア分類のためのメモリフリー継続学習フレームワーク。EMBERおよびAndrozooデータセット上のクラス増分シナリオとドメイン増分シナリオをサポートします。 | Kitploit
ツール/GitHubGitHub/iqsec-lab/freemoca
Androidセキュリティ静的分析マルウェア分析機械学習論文と研究学習と教育
GitHubiqsec-lab/freemoca

FreeMOCA

モード連結性に基づく補間を用いたマルウェア分類のためのメモリフリー継続学習フレームワーク。EMBERおよびAndrozooデータセット上のクラス増分シナリオとドメイン増分シナリオをサポートします。

リポジトリを見る
1ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

FreeMOCA: マルウェアコード解析のためのメモリフリー継続学習

[ArXiv論文リンク]

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

*同等に貢献した著者。 †責任著者。

[!NOTE] 本リポジトリは、論文 FreeMOCA: Memory-Free Continual Learning for Malicious Code Analysis の公式実装です。

FreeMOCAのパイプライン

FreeMOCA_Overview_v3

FreeMOCAは以下のプロセスで動作します。

  1. タスクが順次到着し、それぞれが新しいマルウェアファミリーを導入します。
  2. 各タスクのモデルは、パラメータ空間でタスクの最小値を揃えるために、前のタスクから初期化されます(ウォームスタート)。
  3. トレーニング後、現在のタスクと前のタスクの最適解の間にモード接続に基づく補間が計算されます。このプロセスでは、パラメータ更新の大きさに基づく適応的な層別補間を使用できます。
  4. 補間されたモデルが現在のモデルを置き換え、次のタスクに使用されます。
  5. 過去のデータ、特徴量、生成サンプルは一切保存されず、メモリフリーの継続学習を実現します。

このプロセス全体により、低損失多様体上に存在する接続された解の連鎖が構築され、破壊的忘却が大幅に軽減されます。

データセット

FreeMOCAは、EMBERとAndrozooという2つの大規模マルウェアデータセットで評価されました。データセットの入手先:

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

次のディレクトリにデータセットをダウンロードして配置してください:

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

FreeMOCAの実行

このリポジトリは、次の2つの継続学習シナリオをサポートしています。

  • クラス増分学習(Class-IL): タスクを重ねるごとに新しいクラス(マルウェアファミリー)が導入されます。
  • ドメイン増分学習(Domain-IL): ラベル空間は固定されていますが、データ分布が時間の経過(例: 月単位、年単位)とともに変化します。

ステップ1: インストール

以下のコマンドを実行してください。

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

ステップ2: 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

ハイパーパラメータのより詳細な設定については、付録A. FreeMOCAの共通引数を参照してください。

付録A. FreeMOCAの共通引数

ハイパーパラメータや実験設定を調整するには、次の引数を使用します。

引数のデフォルト設定を変更するには、arguments.pyファイルを確認してください。

ベースライン

本リポジトリは、以下の標準ベースラインでの実験をサポートしています。

  • None: 現在のタスクのみでトレーニング(下限)
  • Joint: これまでに確認されたすべてのデータでトレーニング(上限、非現実的)

以下のコマンドで実行できます。

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

および、以下の先行研究:

  • CLeWI: このGitHubリポジトリ を改変したもので、"Continual Learning with Weight Interpolation" の研究に基づいています。
  • WSC: このGitHubリポジトリ を改変したもので、"Forget Forgetting: Continual Learning in a World of Abundant Memory" の研究に基づいています。
  • Generative Replay (GR): このGitHubリポジトリ を改変したもので、"Continual learning with deep generative replay" の研究に基づいています。
  • EWC: このGitHubリポジトリ を改変したもので、"Overcoming catastrophic forgetting in neural networks" の研究に基づいています。
  • LwF: このGitHubリポジトリ を改変したもので、"Learning without Forgetting" の研究に基づいています。
  • iCaRL: このGitHubリポジトリ を改変したもので、"iCaRL: Incremental Classifier and Representation Learning" の研究に基づいています。
  • TAMiL: このGitHubリポジトリ を改変したもので、"Task-Aware Information Routing from Common Representation Space in Lifelong Learning" の研究に基づいています。
  • MalCL: このGitHubリポジトリ を改変したもので、"MalCL: Leveraging GAN-Based Generative Replay to Combat Catastrophic Forgetting in Malware Classification" の研究に基づいています。

ベースラインは以下のコマンドで実行できます。

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
ツールをダウンロード
ArgumentDescription
--init_classesタスク0におけるクラス数
--epochsタスクごとのエポック数
--batchsizeバッチサイズ
--lr学習率
--momentumSGDのモーメンタム
--weight_decay重み減衰
--lambda_min補間重みの最小値
--lambda_max補間重みの最大値