중간보고서 김도엽, 김현일, 이상훈
목차 1. 방법 2. 결과 3. 문제파악 4. 개선
dex의 파일구조 /x68, /x6C 이미지 - softdx’s blog
방법 다음과 같은 4가지의 방법으로, dex파일을 이미지로 만들었습니다. 1. Dex를 단순히 이미지화 2. Black or White 3. Lossless Black or White 4. Variance Graph 추가로 실험한 방법 5. 1D Convolution for Dexfile
실험 모든 dex파일은 크기가 다른데, Deep Learning 학습을 위해서는 Input Feature를 맞춰줘야 하기 때문에 Resize를 해줘야 합니다. 학습 과정에서 인공신경망이 어떤 특징을 가지고 악성 프로그램과, 정상프로그램을 구분하는지 알아보기 위해서 Resize 과정에서 손실되는 데이터를 줄이거나, 의도적으로 데이터의 손실을 유도합니다. ->1번은 Base Line, 2번은 의도적으로 손실을 유도, 3번은 손실되는 데이터를 줄입니다. Dex를 이미지가 아닌 신호로 바꾸거나, 1D convolution을 적용 -> 4번은 신호로 변경, 5번은 1D Convolution을 적용
성능 정확도는 82~86%에 육박하지만, 이 정확도는 신뢰할 수 없기 때문에 비교할 수 없습니다. 정확도를 신뢰할 수 없는 이유 : Black or White 방법은 단순히 dex파일에 얼마나 많은 정보들이 들어있는지로 판 단 하는데 성능이 82%나 나와서 문젭니다. 가장 성능이 잘 나오는 것은, Variance Graph나 lossless Black or white 방법이지만, 성능차이는 4%입니다. 이미지화를 하기 위해서는 현재와는 다른 방법이 필요함.
성능 정상 프로그램은 대부분 정상 프로그램이라고 잡아냅지만, 악성코드는 잘 못 잡아내고 있습니다. 문제점을 발견하기 위해서, 빨간색 원에 해당하는 데이터들만을 따로 뽑아서 히스토그램을 추출해야 할 거 같습니다.
분석(File Size Graph) R = 악성 B = 정상 악성 프로그램들은 용량이 정해져있는 경우가 많고, 정상 프로그램은 잘 분산 되어 있습니다. 단위는 kb단윕니다.
분석(Average Dex Brightness) 평균 밝기로 보게 되면 악성이랑 정상 프로그램 사이에 큰 차이가 없습니다. 분포의 평균과 분산으로 보면 거의 유사합니다.
Average Dex Brighteness tp tn fp fn
tp,tn,fp,fn Average Dex Brightness
Appendix
실험 1) 단순히 이미지화 dex파일의 binary 값을 byte단위로 읽어와서 (0~255)의 값을 가진 pixel로 변환 단점 : 파일 크기가 큰 경우에 resize되면서 주변 값의 영향을 받을 수 있음. 좌측 그림 같은 경우는 4바이트가 보간되지만, 현재 데이터셋에서는 93~128바이트단위로 보간이 될수도 있음
변환된 이미지들 악성코드 정상코드 20번 2379번 2385번(실질적으로 원한 이미지) 152번(실질적으로 원한이미지) 30번 악성코드 정상코드 20번 2379번 2385번(실질적으로 원한 이미지) 152번(실질적으로 원한이미지) 30번 878 번
성능(84%) Val Graph Train Graph 학습은 잘되니 모델은 이상 없음 1.데이터 부족으로 오버 피팅,(100) 2.val acc가 올라가는 건 normalize한 결과가 아 님. 신뢰 불가
실험 2) Black or White 0 = 1~255 -> 255 0 = 1~255 -> 255 resize되는 값중 단 하나라도 1이상의 값을 가지고 있다면 흰색으로 판단 (메모리 내에서 값이 있는지 없는지가 중요한가를 판단하기 위함) resize값이 10이라서 10바이트가 1개의 바이트로 resize된다면, 다음과 같이 됩니다.
변환된 이미지들 악성코드 정상코드 20번 152번(실질적으로 원한이미지) 2379번 2385번(실질적으로 원한 이미지) 악성코드 정상코드 20번 152번(실질적으로 원한이미지) 2379번 2385번(실질적으로 원한 이미지) 878 번 30번
성능(82%) Val Graph Train Graph 학습은 잘되니 모델은 이상 없음 1.데이터 부족으로 오버 피팅,(100) 2.val acc가 올라가는 건 normalize한 결과가 아 님. 신뢰 불가 100에폭에서 로스가 오 르면 acc가 떨어짐. 저게 정상.
실험 3) Black or White 0 = 1~255 -> 255 0 = 1~255 -> 255 resize 값에 따라서 gray intensity를 정함 (ex resize를 통해 5배씩 줄어든다면) 이 방식을 이용하게 된다면, 위의 Black or White에서 발생한 문제 에서 Intensitiy의 다양성을 줌으로써, 문제를 단순화하면서도 해결 이 가능한 것으로 보입니다. 0, 65, 130, 195, 255
변환된 이미지들 악성코드 정상코드 2379번 20번 152번(실질적으로 원한이미지) 2385번(실질적으로 원한 이미지) 30번 악성코드 정상코드 2379번 20번 152번(실질적으로 원한이미지) 2385번(실질적으로 원한 이미지) 30번 878 번
성능(86%) Val Graph Train Graph 학습은 잘되니 모델은 이상 없음 1.데이터 부족으로 오버 피팅(100) 2.val acc가 올라가는 건 normalize한 결과가 아 님. 신뢰 불가 접근 방법에 문제가 있 는 것을 확인 데이터 전 처리 필요성 확인
4) variance로 그래프(혹은 신호로) 만들기(trash값으로부터의 variance로) bit로부터의 분산을 기준으로 만들어지는 분산 그래프입니다. 0 60 128 128 200 255의 5가지 값이 있고, 가장 많이 반복되는 값(혹은 trash 값)을 μ(평균값)로 가정. μ가 128일때 그래프는 다음과 같이 그려집니다. value 128 -128 1 2 3 4 5 offset
성능(86%) 학습이 매우 빠르지만, 오버피팅이 빨리 일어나고, 성능의 향상은 없었습니다.