Malware Detection Using Deep Transferfed Generative Adversarial Model

Malware Detection Using Deep Transferred Generative Adversarial Networks
by Jin-Young Kim, Seok-Jun Bu, and Sung-Bae Cho

1. 서론

악성 소프트웨어는 컴퓨터에 악영향을 끼치는 모든 소프트웨어의 총칭이다.
여러 단체 및 개인이 어마어마하게 피해를 보고 있으므로 악성 소프트웨어 탐지는
중요한 문제이다. 개발자들은 백신에 탐지되지 않게 숨기고, 백신은 탐지할려고 한다.
현백신은 샘플링을 기반으로 악성소프트웨어를 탐지하는데 악성소프트웨어가
어마어마하게 늘어나고 있어 비용과 시간이 많이 든다. 그래서 자동으로 분류하는 방법을
제안하고자 한다.

 

2. 관련연구

악성 소프트웨어를 분석하는 연구
– 악성 소프트웨어를 시각화 를 통해
– 코드를 통해 기능을 통해

악성 소프트웨어를 종류별로 분류하는 연구
– 트리화해서 각 트리를 비교분석
– 기계학습을 이용하여 분류

최근 들어 기계학습을 이용한 악성 소프트웨어의 분류에 관한 연구가 늘고있다.

3. 사전 필요 지식들

이 논문에서는 악성코드를 먼저 시각화 하고 시작한다.
(각종 Code to Vector 부분)

– http://vizsec.org/files/2011/Nataraj.pdf
– https://github.com/bsvineethiitg/malwaregan

 

 Microsoft Malware Classification Challenge (BIG 2015) Kaggle
9개의 Malware를 구분하는 Compitition 논문에서는 이 데이터를 기반으로 사용
https://www.kaggle.com/c/malware-classification

  • Ramnit : 웜 주로 USB를 통해 감염후 봇넷구성, 윈도우를 어마어마하게 감염시켰음
  • Lollipop : 윈도우 기반의 트로이목마 바이러스, 검색 엔진 결과를 리디렉션하고, PC에서 수행하는 작업을 모니터링 정보 송신 등등
  • Kelihos_ver3 : 웹 사이트의 악성 다운로드 링크를 사용자에게 보내서 Facebook을 통해 컴퓨터를 감염 후 봇넷 구성. 비트코인 지갑 훔침
  • Kelihos_ver1 : 상동
  • Vundo : 윈도우 기반의 트로이목마 바이러스, 보통 광고프로그램 Down
  • Simda : 봇넷, 은행 로그온정보 수집
  • Tracur : 윈도우 기반의 트로이 목마 바이러스, 검색 엔진에서 검색 결과 링크를 가로 채고 다른 웹 페이지로 리디렉
  • Obfuscator.ACY : 난독화 ACY
  • Gatak : 트로이 목마 바이러스, 주로 헬스케어 정보 수집

* 봇넷이란?
봇넷은 악성코드에 감염된 디바이스, 인터넷을 통해 상호 연결된 네트워크로 구성되어 있으며, 일반적으로 범죄행위에 사용됩니다.이는 일반적으로 스팸메일이나 악성코드를 유포하는데 사용되거나, DDoS 공격에 사용됩니다. 봇넷은 최대 백만대의 좀비 디바이스를 포함할 수 있고,매일 최대 600억개의 스팸메일을 발송할 수 있습니다. “botnet” 은 “roBOT”과 “NETwork”가 결합된 단어입니다.
– 봇넷 컨트롤러 : 봇넷을 컨트롤하는 공격자 원격에서 신분을 숨김
– C&C 서버 : 공격자의 명령과 컨트롤을 맡고 있는 서버입니다. 메인 디바이스로 좀비 디바이스에 명령을 하달 및 수집
– P2P 봇넷 : P2P 봇넷은 분산식 좀비 디바이스 네트워크를 사용하며, 주로 봇넷을 보호하고 네트워크가 끊기는 것을 방지하기 위해 사용합니다.
– 좀비 디바이스 : 좀비 디바이스는 봇넷 중 인터넷을 통해 연결되어 있는 각각의 디바이스

* Kaggle Data

4. tGAN

What I cannot create, I do not understand by Richard Feynman
내가 만들지 못하는 것은 내가 이해하지 못한다. Malware를 생성할수 없다면
Malware를 구분하지도 못할것이다.

전체적인 아키텍처는 위와 같다.
Malware to Image  -> Auto Encoder -> GAN -> Detector1 -> Detector2

– ASM파일을 Image화 시킨다.
– Auto Encoder를 사용해서 Malware Image를 학습한다. GAN은 학습이 잘 안되기 때문에 오토인코더를 사용하는것을 제안
– Auto Encoder의 Decoder부분과 Generator의 사이즈를 동일하게 설정함. 왜냐면 Auto Encode의 weight를 그대로 Gan의 Generator로 사용할려고 함

autoencoder    z = f(x), x=g(z) -> x=g(f(x))

 

– 약간 학습된 Auto encoder의 Decoder부분을 그대로 가져와서 GAN으로 훈련시킨다.
– Discriminator는 생성된 데이터와 실제데이터를 정확하게 구분하고 학습
– Generative model은 Discriminator가 실제데이터로 구분하게끔 데이터를
생성하도록 학습

 

 

GAN의 수식 설명
D는 진짜인지 가짜인지의 확률을 나타냄
D가 아주 잘할때를 가정하면
앞수식에서, 즉 x가 진짜 데이터가 왔다면 D는 1을 주고, Log1은 0이 됨
뒷수식은 G에서 데이터를 만들어서 D로 왔는데 G는 가짜를 만들것이므로
D는 0을 주고, Log 1-0은 1 그러므로 0
D입장에서는 0이 최대값,
만약 D가 일을 못한다고 가정하면 D가 0 이 되고, Log가 0이 되므로 -무한대가 됨
그래서 D는 Max로 G는 D를 속이는 방향이므로 Min으로 훈련함

– 훈련된 Discriminator를 그대로 들고와서 transferred
– Type(9가지 타입)중 1개를 선택하여 1, 나머지는 0으로 훈련 Gd가 Detector가 됨
– 모든 타입을 반복(N개의 Detector생성)

– N개의 Dectector를 붙여서 Multi Classification을 함

5. 실험결과

t-sne : 고차원 데이터의 시각화에 사용되는 t-Stochastic Neighbor Embedding기법에 대한 설명자료. 자료 첨부

 

6. 결론

데이터를 생성해서 학습하므로 zero day attach을 방지할수 있다는 잠재성을 보임
또한 반대로 Generative model이 생성되지 않는 Malware를 무한히 생성할수 있다는 가능성도 있어서 연구가 조심스럽다고 교수님이 말함.
무한 증식 변형 바이러스(?)

 

출처
– https://docplayer.net/77028551-Malware-detection-using-deep-transferred-generative-adversarial-networks.html

-https://github.com/bsvineethiitg/malwaregan
-https://www.kaggle.com/c/malware-classification
– http://vizsec.org/files/2011/Nataraj.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *