hogbal / Malware-Detection

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dataset

  • https://www.kaggle.com/c/malware-classification/ 사이트의 BIG 2015 데이터셋을 이용해서 모델을 학습했습니다.
  • 악성코드는 바이너리이기 때문에 hex 값으로 이루어져 있습니다. 따라서, hex 값을 GrayScale 이미지로 변환한 뒤 CNN 알고리즘을 이용해서 학습을 진행했습니다.

Training

  • BIG 2015 데이터셋에 존재하는 악성코드는 이미지로 변환했을 때, 특징이 존재했습니다. 따라서 CNN 알고리즘을 통해 학습을 진행한 결과 높은 정확도를 도출할 수 있었습니다.
  • 학습할 때 사용한 모델은 VGG Net을 이용해 학습을 진행하였습니다. 당시 SOTA인 모델이 아닌 해당 모델을 사용한 이유는 사람과 같이 특징이 많이 존재하지 않기 때문에 파라미터가 적은 VGG Net을 이용해 학습을 진행했을 때, 성능이 좋게 나왔기 때문에 해당 모델을 사용했습니다.
malware_class = tf.keras.Sequential()
malware_class.add(Conv2D(10, (3,3), 
                         activation='relu', padding='same',
                         input_shape=(32, 32, 1)))
malware_class.add(MaxPooling2D((2,2)))

malware_class.add(Conv2D(10, (3,3), 
                         activation='relu', padding='same',
                         input_shape=(16, 16, 1)))
malware_class.add(MaxPooling2D((2,2)))

malware_class.add(Flatten())
malware_class.add(Dropout(0.25))
malware_class.add(Dense(100, activation='relu'))
malware_class.add(Dense(10, activation='softmax'))

About


Languages

Language:Jupyter Notebook 100.0%