FFRI Security, Inc.

MWS Cup 2023
マルウェア分類解説
株式会社ＦＦＲＩセキュリティ
https://www.ffri.jp

1

作問メンバーについて紹介

2

今年の作問体制
今年は以下のメンバーにご協力いただきました（敬称略）
所属・氏名
株式会社
ＦＦＲＩ
セキュリティ

役割

茂木裕貴

作問チームリーダー

愛甲健二

作問委員

草間好輝

作問委員

杉山孔亮

作問委員

LINEヤフー
株式会社

早稲田大学

3

今年の問題について背景

4

今年の問題の方針
今年の問題はマルウェアの分類問題とした

2022

2023

データの種類Stringsのみ

FFRI Datasetの形式全項目

プラット
フォーム

Kaggle（1チーム1人）

Kaggle（制限なし）

問題

マルウェア検知

マルウェア分類

Late Subできるので復習にどうぞ

5

今年のテーマ
以下の理由から半教師あり設定で、かつ「その他」のラベルを含むマルウェア分類にした
特徴

概要

検知ではなく分類

マルウェア検知以外のタスク

半教師あり

マルウェアのファミリのアノテーショ
ンは難しく、ラベルのないマルウェアの方が多い「その他」ラベル

マルウェアは常に進化している

6

MWS Cup 2023
マルウェア分類問題

7

データの形式
FFRI Datasetの形式とid, hashes, date, labelが異なるID

train_lab
eled.jsonl

HASHES

DATE

マルウェアの種類

0~1504train_unl
abeled.js
onl

1505~
2754

test.jsonl

2755~
4004

Label

md5,sha1,sha256
なし(null)

なし(null)

なし(null)

ここを予測

8

ファミリラベルに関する注意
今回ファミリラベルはMalware BazaarのSignatureをそのまま使用した本来このような自動付与されるラベルはあまり評価には適していない
ラベルの正しさが問題
正しい場合、機械学習などせずにそれを使えばよい
正しくない場合、マルウェア分類ではなくSignature予測

ハンドラベリングを行って評価するべきだが、それ自体かなり困難
当初はベンダの解析レポートなどを活用しようとしたが、訓練データとのデータセットシフトが大きく問題として成立しなかった
これらの経緯からSignatureを使用しているため、本Cupの手法を元に論文等に応用する場合は細心の注意が必要である
9

課題3 解説
解説と議論

10

ヒント・模範解答についての注意
他の問題と違ってDSコンペに「解答」はない
模範解答も普通はない（KaggleにせよProbSpaceにせよ普通ホストは出さない）
今回のヒントや模範解答はあくまで1つのやり方を提示しているに過ぎないサンプルやヒントは一切手が付けられないことのないように出しているだけで、この方法に誘導したいわけでは一切ないし、模範解答のやり方が「正しい」訳ではない
参加者にはより良い作問のためWrite-upにご協力いただきたいです（本コンペのDiscussionやNotebookの公開）

11

サンプルの回答の解説 (PB 0.568)
ラベル付きデータのみをFexrdを用いて分類
Fexrdについての説明
概要

FFRI Datasetと同形式のデータから特徴量を作成する
ライブラリ

URL

https://github.com/FFRI/FEXRD

使用している
特徴量LIEFやManalyzeなど使用したツールごとに数値をそのまま使用/Label Encoding/FeatureHashing等の変換を行っている

12

CVとアンサンブル
各Foldで作成したモデルでアンサンブルする（平均を取るだけ）
Cross Validationする以上Freeで計算できる
Kaggle等ではよくやられている
test.csv

train.csvを分割
1 fold

train

train

val

test

2 fold

train

val

train

test

3 fold

val

train

train

test

図は簡略のため3-fold
だが今回は5-foldvalを予測
Local CV:
Mean Validation Accuracy

testを予測
Submission:
Mean Test Prediction
13

CVとアンサンブル (PB 0.568 => 0.520!)
実はアンサンブルをやるとスコアが下がる
今回は「その他」のラベルの付いたデータが5つしかなく、5-foldでは各Foldの分類器があまり強くないためと考えられる
Local CVの数値だけ評価のために記録しておき、全データで訓練したモデルをSubmitする方法もある

この資料ではアンサンブルモデルを使用する。理由は後述

14

ヒントの解説：Balanced Weight (PB 0.568=> 0.611)
ラベル付きデータをラベル毎に見ると、「その他」のデータが極端に少ないため、何らかの調整が必要そう
最も簡単な策はWeightの調整
まだラベル付き訓練データを全て使った単体のモデルの方がCV時の各Foldの分類器の平均よりPBは高いが、差は小さく、LBは逆転している
Weightの調整により各Foldの分類器の性能が十分高くなった以降この資料ではアンサンブルモデルの方を前提とする

15

ヒントの解説：MaxProbによるOOD検知 (PB0.568 => 0.614)
5クラス分類器を作成したうえで、予測クラスのスコアがしきい値を超えない場合に「その他」扱いをする
こちらの方が若干（CV時の各Foldの分類器の平均で比べると）Weightを調整した場合よりPBが高い

16

ヒントの解説：Pseudo Labeling (PB 0.614=> 0.645)ラベルの予測値を使用してモデルを訓練する

17

ヒントの解説：Yaraと文字列 (PB 0.645 =>0.670)
ラベルに紐づいたYaraの情報が使えると強い
今回はStringsが使いやすい
またこれをヒントに文字列をジッと見ると、NanoCoreはそのまま”NanoCore”の文字列がある場合に気付く

18

Bonus：上手くいかなかった手法
Stringsの統計情報
TFIDF
上２つは昨年の問題で効いたが、今回はあまり効かなかった

Focal Loss
サンプルのスコアより下がった
FexrdのManalyzeの特徴量の修正
FexrdのWarningを見るとUnknown扱いされるケースがある
しかしこれを修正するとむしろスコアが下がった

19

Conclusion
データをよく確かめること
ラベルの偏りNanoCoreの文字には気付けたかもしれない

20

Towards：次回以降（サステナビリティ）
作問にご協力いただける方を募集しています！！！
2022

分類問題のサステナビ
リティ••

2023

Strings以外で単体で検知に使うフィールドがない
次回は模範解答からスタートされうる•問題を「解く」ではなく「作る側」•••

マルウェア検知ではなく分類問題とした
半教師あり設定とし工夫の余地を増やした
来年以降は未定

DSコンペに参加者ではなく作問側として参加する機会は希少
より良い問題、より良い模範解答ができればMWSコミュニティそしてサイバーセキュリティ業界全体にプラス
21