1. PE파일을 통째로 이미지(png)로 변환이제 책에서 소개하는 마지막 특징추출방식인 파일 자체를 이미지로 변환하여 특징을 추출하는 방법이 남아있다.파일의 이진코드를 순서대로 0~255사이의 숫자로 변환하여 이를 각 픽셀의 밝기 수치로 사용한다. 자료에서 제공하는 코드의 핵심 부분은 다음과 같다 : g = np.reshape(a, (int(len(a)/width), width)) reshape= 배열의 구조를 재조정할 때 사용 (차원 간의 변경) a(= 파일의 이진코드 )를 순차적으로 읽어와 2차원 배열로 변환한다.g = np.uint8(g) unit8(g) 배열g요소를 부호 없는 8bit 정수로 변환 (0~255) 배열 내 모든 요소는 0~ 255 사이가 되고 이 요소요소가 각 픽셀의 ..
1. 코드의 내용으로 특징 추출하기1.1. 코드 섹션을 찾는 법pe_header.py 가 pe파일의 헤더만 보고 특징을 추출해 냈다면 이번엔 파일의 데이터 영역에 있는 실제 코드의 특징을 추출해 본다.이를 위해서는 데이터 영역 안에 코드가 어디에 위치하는지부터 찾아야 한다.책에서 소개하는 방법은 세 가지가 있다.일반적으로 코드가 저장된 섹션인 .text 섹션을 찾기Entrypoint 찾기속성(Characteristics)에 CNT_CODE 와 MEM_EXECUTE 플래그가 활성화된 섹션이 프로젝트에서는 두 번째, entrypoint를 사용하여 특징을 추출한다.1.2. 바이트 코드를 어셈블리코드로 바꾸기코드를 작성하여 컴파일을 하면 고급언어(c, java 등)에서 컴퓨터가 이해할 수 있는 0x66, 0x8..
특징 추출데이터라벨링까지 마쳤다면 이제 각 데이터의 특징 추출을 한다. 특징이란 각 데이터가 가지는 다른 데이터와 구별되는 요소로서, 이를 통해 악성코드 또는 정상프로그램의 차이점을 파악하여 모델이 학습하도록 한다.예) 악성코드의 경우 특정한 라이브러리를 import 한다 , 이런 기능을 사용한다 등 이 책에서 말하는 특징추출 방법은 세 가지가 있다.첫번째는 pe헤더 이다.pe헤더에는 방금 말했던 것처럼 어떤 라이브러리를 import하는지에 대한 정보가 담겨있다.이를 통해 프로그램이 사용하는 기능이 무엇인지 추측할 수 있다.ClaMP라는 오픈소스를 사용하여 특징추출을 하고 csv파일을 생성해 본다. 책에서 제공하는 실습자료인 pe_hearders.py를 사용하면 된다.오픈소스인 CLamP에서 제공하는데,..
티스토리를 운영하다 보니 본격적으로 블로그를 꾸미고 싶은 욕구가 마구 들었습니다.저는 아이콘을 좋아하는데, 예전 네이버 블로그 퍼스나콘을 기억하시나요?지금은 사진설정이 가능하지만 10년 전에는 퍼스나콘으로 자신을 표현했었습니다. 그래서 아이콘 정하느라 한두 시간을 쓴 적도 있었지요. 파비콘은 구글 검색이나 북마크, 사파리 즐겨찾기에서 내 블로그 주소 옆에 보이는 아이콘입니다.검색시 눈에 들어오는 아이콘이 있다면, 유저들의 클릭을 유도하기도 좋겠지요. 그래서 구글검색을 하면 제 블로그의 아이콘이 보이도록 적용해보록 하겠습니다. 먼저 아이콘을 만들어야 하는데요, 두 가지 방법이 있습니다. favicon.io 사이트 이용favicon.io 사이트는 기본적인 틀은 제공하며 텍스트만 입력하면 손쉽게 파비콘을 만들..
이 포스트는 프로젝트 진행 중 발생한 모든 오류 해결 과정을 포함하고 있습니다. 다소 긴 내용이 될 수 있으므로, 필요한 부분만 참고하시기 바랍니다. 1. 레이블링 이란레이블링 = 라벨링은 학습할 데이터에 정답을 표시하는 것으로, 있다면 이것은 악성코드다/정상파일이다 정답을 표시해 놓는 것이다. 모델은 이를 통해 패턴을 인식하고 학습할 수 있다.라벨링은 바이러스 토탈의api를 사용하여 진행한다. 바이러스 토탈에 접속하여 아이디가 없다면 회원가입을 한다.https://www.virustotal.com/gui/home/upload 회원가입 후 프로필 사진을 클릭해 API Key로 들어간다.바이러스 토탈 api key를 저장해 둔다. 1.1. 라벨링 자동화 코드 작성파이썬 코드를 작성하여 많은 수의 데이터 ..