GGGIIISSS를를를이이이용용용한한한 … · 실제적으로 지리 적 자료를 처리하고 분석하기 위해서 사용되는 정보시스템을 GIS 라고 하 며, 지리적
x86 실행파일에서 악성코드의 행동을 정적으로 분석하기...
Transcript of x86 실행파일에서 악성코드의 행동을 정적으로 분석하기...
x86 실행파일에서 악성코드의 행동을 정적으로 분석하기
이승중
서울대학교 프로그래밍 연구실
악성코드의 행동 표현
기존 악성코드 탐지의 문제점
SDT 가로채기
WriteProcessMemory
진입점 가로채기
IDT 가로채기
행동을 기술하는 언어
시스템 행동 가로채기의 표현
VM obfuscation 적용된 악성코드의 출현
매번 다른 obfuscation을 적용하여 모양이 달라짐
분석결과에서 악성코드의 행동 찾기
기존 악성코드 탐지방법 시그니처 기반
프로그램
악성코드의
바뀌지 않는 부분
● 프로그램의 실행코드/데이터에서
악성코드 고유의 모양을 살펴봄
● 변종이 나올 때마다 데이터베이스 업데이트 필요
Programming Research Laboratory
프로그램 sdt 가로채기 분석결과로 시그니처 만들기 메모리와 레지스터값 사용
레지스터 값
esp {0x0026fe88}
eax {0x005513b8}
… …
주소 값
0x0026fe88 …
0x0026fe8c {0x11223344}
… …
환경 메모리
레지스터 값
esp {0x0026fe8c}
eax {(a, 0x00000000)}
… …
주소 값
0x0026fe8c {(a, 0x00000000)}
0x0026fe90 …
… …
환경 메모리
프로그램의 정보를 이용하여 행동의 표현을 줄임 행동의 표현과 시그니처가 일치하는지 비교
함수 호출
함수 호출
의미기반의 정적 분석으로 악성코드의 행동 검출
실행파일이 악성코드의 행동을 하는지 여부를
의미 기반의 정적 분석을 이용하여 검출한다.
이진 프로그램과 악성 행동 의미를 기술한 언어의 리스트를 입력으로 받아
프로그램이 나쁜 행동을 하는지 여부를 알려주는 분석기
● 의미 기반: 프로그램의 모양새만을 보지 않는 분석
● 정적 분석: 직접 실행시켜보지 않고 미리 모든 실행경로를 아우르는 분석
x86 중간언어의 요약 실행
프로그램의 정의
요약 도메인
요약 실행
x86 바이너리 프로그램의 요약 실행은
프로그램이 실제로 실행되었을 때
프로그램 카운터가 가리키는 모든 지점에서의
메모리와 레지스터의 요약된 상태들의 집합을 얻는 것
악성코드의 주요 동작 시스템 행동 가로채기(hooking)
SDT(Service Description Table) 가로채기
정상적인 OS의 시스템 콜 동작방식 가로채기된 OS의 시스템 콜 동작방식
SDT 가로채기를 수행하는 실제 C 코드 여러 가지 가로채기 방법들
● IDT(Interrupt Descriptor Table) 가로채기
● 커널 함수 진입부 덮어씌우기
● sysenter 명령어 가로채기
● 시스템 콜 진입점 가로채기
● FltRegisterFilter 함수 사용
● WriteProcessMemory 함수 사용