이 포스트는 [인공지능 보안을 배우다] 책을 참고해 학습한 내용을 정리한 글입니다.특징공학 기법을 사용하여 분류에 도움이 되는 특징과 그렇지 않은 특징을 분류하고, 성능이 가장 좋은 특징 조합을 찾아 낸다. 1. 첫번째 코드백업 해둔 pe_all 데이터를 다시 가지고와 불필요한 열을 제거하는 과정이다.pe_all = pe_all_tmp # 백업 데이터프레임 복원- 이전에 백업해 둔 pe_all_tmp를 다시 가져온다.pe_all = pe_all.drop(['filename', 'MD5', 'packer_type'], axis=1) # 불필요 열(col) 제거- 해당 데이터 중 filename, MD5, packer_type 열을 제거한다. pe_all.shape # ( 937 x ..
이 포스트는 [인공지능 보안을 배우다] 책을 참고해 학습한 내용을 정리한 글입니다.1. 첫번째 코드첫번째 코드는 필요한 라이브러리와 모듈을 임포트하고, 결과를 출력할 데이터 프레임을 생성하고 특징 데이터를 로드 한다.1.1. 필요 라이브러리와 모듈을 임포트import numpy as np : 넘파이를 임포트 한다.넘파이란 수치계산을 위한 라이브러리로서, 다차원 배열 객체를 생성하고 계산 할 수 있다.import pandas as pd : 판다스 라이브러리를 임포트한다. 판다스는 데이터 분석을 위한 라이브러리로 데이터를 표로 시각화 한다.import seaborn as sns : 시본 라이브러리를 임포트한다. 시본은 데이터를 시각화 하는 라이브러리로, 그래프를 쉽게 생성할 수 있도록 한다.imp..
이전 포스트에서 이어진다Featrue Engineering 첫 번째 코드 이전과 같은 오류다 pe_all = pe_all.drop(['filename', 'MD5', 'packer_type'], axis=1) 로 수정한다. Featrue Engineering세 번째 코드do_randomforest 함수에서 self.y_train이 2D 배열일경우 경고가 뜬다. fit() 메서드에 전달되기 전에 y_train을 1D 배열로 변환해야 한다. scikit-learn의 fit() 메서드는 1D 배열을 사용하므로, y_train을 ravel()을 사용해 1D 배열로 변환 해 준다. model.py의 랜던포레스트 메서드를 수정한다. 띄어쓰기에 주의한다. clf = RandomForestClassif..
이 포스트는 프로젝트 진행 중 발생한 모든 오류 해결 과정을 포함하고 있습니다. 다소 긴 내용이 될 수 있으므로, 필요한 부분만 참고하시기 바랍니다. 1. 레이블링 이란레이블링 = 라벨링은 학습할 데이터에 정답을 표시하는 것으로, 있다면 이것은 악성코드다/정상파일이다 정답을 표시해 놓는 것이다. 모델은 이를 통해 패턴을 인식하고 학습할 수 있다.라벨링은 바이러스 토탈의api를 사용하여 진행한다. 바이러스 토탈에 접속하여 아이디가 없다면 회원가입을 한다.https://www.virustotal.com/gui/home/upload 회원가입 후 프로필 사진을 클릭해 API Key로 들어간다.바이러스 토탈 api key를 저장해 둔다. 1.1. 라벨링 자동화 코드 작성파이썬 코드를 작성하여 많은 수의 데이터 ..
악성코드 및 정상프로그램 데이터 셋 수집 악성코드인지 아닌지 판단하는 탐지모델을 만들기 위해서는 학습할 많은 데이터가 필요하다. 바로 악성코드와 정상프로그램이다. 이 책에서 소개하는 방법중 하나는 크롤러를 사용하여 웹사이트에서 악성코드를 수집하는 것인데, 현재 시간이 지나면서 많은 악성코드 제공사이트들이 사라졌거나 바뀌어버렸다.그래서 이 방식으로 악성코드를 수집하기에는 어렵다고 다른 방법을 찾기로 했다. 수집 방법 1. 한국인터넷 진흥원에서 제공하는 데이터 셋을 다운로드악성코드는 시스템에 중대한 영향을 끼칠 수 있기 때문에, 반드시 가상환경에서 다운받도록 한다.vmware 우분투 환경에서 파이어폭스를 열어 아래 링크로 접속한다https://www.bigdata-map.kr/search/1367055 그..