본문 바로가기

[혁신성장 청년인재] 인공지능을 활용한 보안전문가 양성과정

DAY 91~95 : 프로젝트 둘 째 주 | 두 가지 난관에 봉착하다... | EMBER dataset | 메모리에서 PE format 읽기

이번 주 월요일이 쉬는 날이었다. 오랜만에 쉬는 날이라 (내 생일도 껴있었고,,) 완전 푹 쉬다보니 플젝 다 까먹음 ㅋㅋㅋㅋㅋㅋㅋ

 

암튼 플젝이 두 가지 난관에 봉착했다.

# 하나는 PE format을 메모리에서 읽는 것이 어렵다는 점이다.

우리는 프로세스가 실행 되어 메모리에 올라간 후, 글로벌 후킹을 걸어 서스펜드 상태에서 메모리에 올라온 PE format을 읽어오려고 했다. 글로벌 후킹은 구현하였으나, 메모리에서 pe format을 읽는 게 넘 어려웠다. 이 주 차인데 진척이 없어서 고민이었다. 이 부분을 맡으신 분이 쉬지도 않고 열심히 하셔서 방향을 선뜻 바꾸자고 제의하기도 어려웠다. 

# 다른 하나는 EMBER 데이터셋에서 데이터 추출에 제약이 크다는 점이다.

EMBER 데이터셋은 PE format이긴 한데, 이미 lief 로 가공이 되어있어서, 바이너리를 보기는 어렵다는 한계점이 있었다. 엠버는 아래 그림처럼 14개 지표들로 가공이 되어있음.. 

 

EMBER 데이터셋 샘플

 

# 문제에 대한 대안

 - PE fomat을 메모리에서 읽는 게 어려우니, 그냥 실행파일 바이너리에서 PE format을 읽으면 쉬운 방법일 것 같기는 했다. 메모리에서 읽는 것의 장점은 실행 파일이 여러개로 쪼개져있거나, 패킹되어있는 바이너리들을 메모리에 올려놓고 고 찐 코드를 찾아갈 수 있다는 것이었다. 하지만 이걸 가지고 몇 일을 더 매달리자니, 아예 프로젝트는 완수하지 못할 수도 있다는 생각이 들었다. 그래서 그냥 이번 주 내로 구현을 못하면 실행파일에서 읽는 것으로 방향을 바꾸기로 했다. 

 

- 실행파일에서 바이너리 읽어서 특징 추출하는 거는 내가 직접 구현해봤다. 실행되는 프로세스의 실행파일을 찾아 PE format을 추출하는 것이었다. 넘나 간단한거라 몇 분 걸리지도 않아서, 흠 메모리로 읽는거 안되면 바로 바꿔서 진행할 수 있을 것이다.

 

- EMBER 데이터셋 문제는 마침 강사님께서 KISA 악성코드/ 정상코드 바이너리가 있으셔서 그걸 활용하기로 했다. 그거는 이제 바이너리라서 PE format 뿐 아니라, string 문자열 등 다양하게 추출해서 활용할 수가 있었다.

 

# 이번 주 멘토링

메모리에서 PE format 읽는거 아직도 못했다고 엄..청 혼났다. ㅠㅠ 그래서 실행파일에서 읽어도 되냐고 여쭈어보니 그래도 된다고 하셔서 그렇게 하기로 했다... 이번 주에는 한 게 없다는 소리까지 들음. 담주에 열심히 해야겠다..

반응형