[논문요약] 악성코드 정적탐지를 위한 PE의 Rich헤더 활용방법
악성코드를 정적으로 탐지하는 방법을
연구하는 과정에서
https://www.zdnet.co.kr/view/?no=20180309104954
위와 같은 기사를 보았고
Rich헤더가 조작되었다고 말했습니다.
모든 기사를 100%신뢰할 수는 없지만
연구하는데 있어서 Rich헤더를 변조하면
다른사람으로 위장할 수 있다는 내용이 담겨 있네요.
그렇다면 Rich헤더는 무엇일까요?
Rich헤더란?
(리치헤더란?)
비정형 데이터구조를 가지고 있으며 프로그램을 빌드한 컴파일러에 대한 정보 및 실행파일이 생성된 환경에 대한 정보를 말합니다.
여기서 비정형데이터는 json, xml 같은 것을 말하는 것이 아니고,
비정형데이터를 말하기 전에
여러분들은
마이크로소프트에서 발표한 API말고
Undocumentation 한 API를 아시나요?
MSDN에 공개된 API가 아닌 내부에서 사용하는
API가 따로 있다는 말입니다.
즉, 공개적으로 문서화하지 않았다는 말이고
이 부분은 문서화되지 않아서 알기 힘들다는 내용이지
사용할 수가 없다는 말은 아닙니다.
Rich헤더도 이와 같습니다.
정형화 된 문서에 따라서 확인을 할 수 없다는 말이
비정형화 된 데이터라는 말이라고 보이네요.
제 능력으로는 Rich헤더정보만 가지고
확인하는 방법을 모르니
논문을 참고해보려고 합니다.
참고한 논문은 맨 아래 적어놓겠습니다.
용어 |
설명 |
Rich헤더 |
Rich 헤더는 비정형데이터구조를 가지고 있으며 프로그램을 빌드한 컴파일러에 대한 정보 및 실행파일이 생성된 환경에 대한 정보를 제공 |
제목 |
설명 |
주제 |
악성코드를 정적으로 탐지하기 위한 PE의 Rich헤더 활용방법 |
제시 내용 |
Rich헤더에 숨겨진 세부정보는 분석가들에게 가치있는 내용을 제공하기 때문에 이를 추출하려고 함 |
목표 |
Rich헤더의 세부정보 추출 |
악성코드와 정상파일의 분류 |
|
조건 |
Windows 실행 파일을 빌드 |
1. rich 헤더 분석 |
1) rich헤더는 컴파일된 중간코드를 하나의 실행파일로 결합하는 링커가 생성합니다. |
2) rich헤더는 MZ파일헤더와 DOS stub의 바로 뒤에 있습니다. |
3) rich헤더는 오프셋 0x80부터 Rich문자열사이에 있습니다.(가변) 즉, 80 ?? ?? ?? .. ?? ?? ?? 52 69 63 68 |
4) 0x52696368은 rich헤더 섹션의 끝을 의미합니다. |
5) Rich(0x52696368) 바로 뒤에는 32비트 체크섬 및 암호해독 키가 있습니다. |
1) 에서 linker가 rich헤더를 생성한다고 되어있는데..
링커소스를 보면 rich헤더를 만드는 과정을
알 수 있지 않을까?
생각해 봅니다.
이 정보를 이용해서
어디서 악성코드를 만든 것인지
프로파일링 할 수 있지요.
방법은..?
현재까지 발견된 악성코드의
rich헤더를 싸그리 정리합니다.
악성코드 탐지 솔루션에서
샘플 악성코드의 rich헤더를 추출한 후
싸그리 정리했던 rich헤더 정보와 비교합니다.
그래서 같다면..
악성일 수도 있다는 결론을 내릴 수 있겠네요.
rich헤더는 변조될 수도 있기 때문에
이 영역 하나만으로 식별한다는 것은
말도 안되는 소리지만
탐지모델의 정확도를 올리는데는
어느정도 기여를 할 수 있겠죠?
오늘은 일이 있어서 아래 내용은
추후에 적도록 하겠습니다.
'Try Attack > Malware Analysis[basic]' 카테고리의 다른 글
메모리 상에 있는 code영역을 수정하는 프로그램 (0) | 2019.09.18 |
---|---|
Anti-VM 기법 (0) | 2019.09.13 |
악성코드 분석[4] (0) | 2019.09.01 |
악성코드 분석[3] (0) | 2019.08.30 |
악성코드 분석[2] (0) | 2019.08.28 |
댓글