커널 루트킷은 운영체제의 컴포넌트 사이의 통신을 가로채거나 수정할 수 있기 때문에, 운영 체제의 무결성을 훼손시킬 수 있는 가장 위협적이고 널리 퍼진 위협 중 하나로 인식되고 있다. 커널 루트킷이 이미 커널 권한을 획득하였기 때문에 루트킷이 설치된 공간에서 커널을 보호하는 것은 안전하지 않다. 따라서 커널보호 시스템은 커널과 동일한 공간으로부터 독립적이어야만 한다. 루트킷을 탐지하기 위해 많은 연구들이 수행되어 왔지만 다른 연구들과 달리 TrustZone 기반 연구는 커널과 동일한 공간으로부터 분리되고, 독립된 공간에서 커널을 보호하는 것이 가능하다. 하지만 제안된 방법들은 커널보호 시스템을 완전히 독립시킬 수 없는 단점이 있다. 이러한 이유로, 우리는 TrustZone의 시큐어 타이머를 이용한 효율적인 커널 검사 시스템을 제안한다. 이 시스템은 레퍼런스의 무결성을 보장하기 위해 커널 원본 이미지인 vmlinux을 활용하여 측정하였다. 또한, 보호영역 크기에 대한 유연성을 제공함으로써 효율적으로 커널보호 시스템을 운영하는 것이 가능하다. 실험 결과들은 제안된 커널보호 시스템이 완전히 독립되어 운영되고, 런타임동안 최대 6%정도의 성능만 저하시킨다는 것을 보여준다.
커널 루트킷은 운영체제의 컴포넌트 사이의 통신을 가로채거나 수정할 수 있기 때문에, 운영 체제의 무결성을 훼손시킬 수 있는 가장 위협적이고 널리 퍼진 위협 중 하나로 인식되고 있다. 커널 루트킷이 이미 커널 권한을 획득하였기 때문에 루트킷이 설치된 공간에서 커널을 보호하는 것은 안전하지 않다. 따라서 커널보호 시스템은 커널과 동일한 공간으로부터 독립적이어야만 한다. 루트킷을 탐지하기 위해 많은 연구들이 수행되어 왔지만 다른 연구들과 달리 TrustZone 기반 연구는 커널과 동일한 공간으로부터 분리되고, 독립된 공간에서 커널을 보호하는 것이 가능하다. 하지만 제안된 방법들은 커널보호 시스템을 완전히 독립시킬 수 없는 단점이 있다. 이러한 이유로, 우리는 TrustZone의 시큐어 타이머를 이용한 효율적인 커널 검사 시스템을 제안한다. 이 시스템은 레퍼런스의 무결성을 보장하기 위해 커널 원본 이미지인 vmlinux을 활용하여 측정하였다. 또한, 보호영역 크기에 대한 유연성을 제공함으로써 효율적으로 커널보호 시스템을 운영하는 것이 가능하다. 실험 결과들은 제안된 커널보호 시스템이 완전히 독립되어 운영되고, 런타임동안 최대 6%정도의 성능만 저하시킨다는 것을 보여준다.
Kernel rootkit is recognized as one of the most severe and widespread threats to corrupt the integrity of an operating system. Without an external monitor as a root of trust, it is not easy to detect kernel rootkits which can intercept and modify communications at the interfaces between operating sy...
Kernel rootkit is recognized as one of the most severe and widespread threats to corrupt the integrity of an operating system. Without an external monitor as a root of trust, it is not easy to detect kernel rootkits which can intercept and modify communications at the interfaces between operating system components. To provide such a monitor isolated from an operating system that can be compromised, most existing solutions are based on external hardware. Unlike those solutions, we develop a kernel introspection system based on the ARM TrustZone technology without incurring extra hardware cost, which can provide a secure memory space in isolation from the rest of the system. We particularly use a secure timer to implement an autonomous switch between secure and non-secure modes. To ensure integrity of reference, this system measured reference from vmlinux which is a kernel original image. In addition, the flexibility of monitoring block size can be configured for efficient kernel introspection system. The experimental results show that a secure kernel introspection system is provided without incurring any significant performance penalty (maximum 6% decrease in execution time compared with the normal operating system).
Kernel rootkit is recognized as one of the most severe and widespread threats to corrupt the integrity of an operating system. Without an external monitor as a root of trust, it is not easy to detect kernel rootkits which can intercept and modify communications at the interfaces between operating system components. To provide such a monitor isolated from an operating system that can be compromised, most existing solutions are based on external hardware. Unlike those solutions, we develop a kernel introspection system based on the ARM TrustZone technology without incurring extra hardware cost, which can provide a secure memory space in isolation from the rest of the system. We particularly use a secure timer to implement an autonomous switch between secure and non-secure modes. To ensure integrity of reference, this system measured reference from vmlinux which is a kernel original image. In addition, the flexibility of monitoring block size can be configured for efficient kernel introspection system. The experimental results show that a secure kernel introspection system is provided without incurring any significant performance penalty (maximum 6% decrease in execution time compared with the normal operating system).
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
EKI에서는 위의 두 문제를 해결하기 위해 vmlinux를 활용하는 방법을 제안하고자 한다. Vmlinux를 활용하여 빌드환경에서 안전하게 레퍼런스 측정값을 생성하여 첫 번째 문제를 해결할 수 있다.
따라서 EKI는 대부분의 커널 루트킷들에서 가장 기본적이고 널리 사용되는, 코드 인젝션과 시스템콜 후킹에 대한 탐지를 목적으로 한다.
EKI는 외부 하드웨어가 아니기 때문에, 오랜 시간 동안 런타임을 측정값을 생성하여 커널 메모리를 검사한다면, 운영체제의 성능 저하를 크게 일으킬 수 있다. 따라서 런타임 측정값을 생성할 시에, 최소한의 성능저하만 일으키도록 효율적인 커널 검사를 수행해 한다. 이를 위해, 커널 보호 영역의 측정값 생성 시에 필요한 정보들을 미리 생성해 놓는 것이 중요하다.
본 연구에서, 우리는 TrustZone의 시큐어 타이머를 이용한 효율적인 커널 검사 시스템을 제안하였다. 이 시스템은 외부 하드웨어 모니터와 TrustZone 기반 커널보호 방법의 장점 활용 및 기존 연구의 단점을 보완하였고, 커널과 동일한 공간으로부터 분리되고, 독립된 공간에서 커널을 보호하는 것이 가능하도록 설계하였다.
본 연구에서는 [11]의 아이디어를 확장하여 실제 단말 상에서 실험을 진행하였고, 단말의 보안과 성능을 효율적으로 관리하기 위해 세 가지 기능적 요소를 고려하였다. 첫째로, 커널의 원본 메모리 값을 나타내는 레퍼런스 측정값의 무결성 보장을 위해 커널 빌드 시, 커널 원본 이미지인 vmlinux를 이용하여 레퍼런스를 측정하였다.
본 연구에서는 앞서 얘기한 외부 하드웨어 모니터와 TrustZone 기반 커널보호 방법의 장점 활용 및 기존 연구의 단점을 보완한 TrustZone에 기반을 둔 상태 모니터링 시스템을 설계하였다. EKI는 항상 ARM 기반 아키텍처의 TrustZone 환경 안에서 동작하기 때문에 normal world와 독립적으로 커널 무결성을 검증할 수 있으며, 이는 외부 하드웨어 모니터를 이용하는 것과 같은 장점을 가질 수 있게 해준다.
가설 설정
본 연구에서는 이미 단말에 커널 루트킷이 설치되어 있고, 이 사실을 유추할 수 없도록 루트킷의 존재를 숨긴다는 것으로 가정한다. 설치된 커널 루트킷은 normal world의 커널을 변조하여 운영체제를 완전히 제어할 수 있으나, ARM TrustZone에 의해 보호되는 secure world를 제어할 수 는 없다.
제안 방법
운영체제의 성능저하를 측정하기 위해서 EKI의 모니터링 주기와 각 주기마다 검증하는 블록 크기 별로 benchmark 테스트를 수행하였다. ARM에서 동작되고, 널리 사용되는 Unixbench[14], Linpack[15], CoreMark[16], nbench[17]등 4개의 benchmark를 사용하여 측정방법의 차이를 고려하였고, EKI의 동작유무에 따른 운영체제의 성능저하를 비교하였다. Fig.
EKI의 성능을 평가하기 위해서 앞서 제시한 threat model의 공격에 대한 보호여부와 운영체제의 성능저하 측면에서 이를 평가하였다. 모든 실험은 리눅스 3.
이와 같이, 무결성과 유연성을 제공함으로써 단말의 용도, 성능과 커널의 크기를 고려하여 효율적으로 커널 보호 시스템을 운영하는 것이 가능하다. 둘째로, vmlinux를 이용한 레퍼런스 측정 시, 각 보호영역의 가상주소를 물리주소로 변환하는 방법을 제시하였다. 따라서 secure world에서도 normal world의 커널 메모리 데이터에 직접 접근하는 것이 가능하다.
(1) EKI 어플리케이션은 시큐어 타이머 동작 주기를 등록하는 커널 모니터링 시간 설정 및 커널 메모리의 보호 영역을 설정한다. 또한, 보호 영역의 데이터 값을 읽어서 런타임 측정값을 생성하고, 이를 레퍼런스 측정값과 비교하는 기능을 수행한다.
첫째로, 커널의 원본 메모리 값을 나타내는 레퍼런스 측정값의 무결성 보장을 위해 커널 빌드 시, 커널 원본 이미지인 vmlinux를 이용하여 레퍼런스를 측정하였다. 또한, 한 번에 검사할 수 있는 블록의 크기에 대한 유연성을 제공하기 위해, 각 섹션의 보호 영역을 설정 가능한 크기의 여러 모니터링 블록으로 나누어 측정하였다. 이와 같이, 무결성과 유연성을 제공함으로써 단말의 용도, 성능과 커널의 크기를 고려하여 효율적으로 커널 보호 시스템을 운영하는 것이 가능하다.
레퍼런스 측정값을 실제 단말에 적용하기 위해서 레퍼런스 해쉬 생성도구라는 컴포넌트를 구현하였다. 이 컴포넌트는 커널 빌드 시스템에 삽입되어, 리눅스 커널 빌드가 완료된 후에, 자동으로 vmlinux의 레퍼런스 측정값을 생성할 수 있도록 하였고, 작동 과정은 다음과 같다.
본 실험에서는 threat model에서 가정한 대로, Samsung Tizen TV용 공격 모듈을 직접 구현하고, 이를 미리 설치하여 커널 변조를 진행하였다. 이 모듈을 실행하면 text와 rodata 섹션의 메모리 값을 변조하거나 시스템콜 테이블 엔트리를 후킹하여 원하는 공격함수를 호출한다.
따라서 secure world에서도 normal world의 커널 메모리 데이터에 직접 접근하는 것이 가능하다. 셋째로, EKI의 독립적인 커널 검사 수행을 위해 TrustZone의 시큐어 타이머를 이용한 상태 모니터링을 수행하였다.
이 모듈을 실행하면 text와 rodata 섹션의 메모리 값을 변조하거나 시스템콜 테이블 엔트리를 후킹하여 원하는 공격함수를 호출한다. 시스템콜 후킹 공격의경우, TV에서 일반 웹사이트에 로그인 시, 아이디와 패스워드가 어플리케이션에 저장되도록 설계되었다. EKI가 동작하는 상태에서 두 가지 공격에 대한 탐지여부를 측정한 결과, EKI가 코드 인젝션과 시스템콜 후킹 공격을 정상적으로 탐지한다는 것을 확인할 수 있었다.
EKI는 TrustZone의 시큐어 타이머를 활용하여, 외부 하드웨어 모니터와 같은 형태의 active monitoring을 수행한다. 시큐어 타이머는 TrustZone상에서 FIQ(Fast Interrupt reQuest)를 발생시켜, 커널 메모리 검사를 수행한다. 이는 normal world로부터 검사 요청을 받아서, TrustZone상에서 커널 메모리를 검사하는 방법을 사용하지 않으므로, 커널보호 시스템을 완벽하게, 독립적으로 분리시키는 것이 가능하다.
운영체제의 성능저하를 측정하기 위해서 EKI의 모니터링 주기와 각 주기마다 검증하는 블록 크기 별로 benchmark 테스트를 수행하였다. ARM에서 동작되고, 널리 사용되는 Unixbench[14], Linpack[15], CoreMark[16], nbench[17]등 4개의 benchmark를 사용하여 측정방법의 차이를 고려하였고, EKI의 동작유무에 따른 운영체제의 성능저하를 비교하였다.
본 연구에서, 우리는 TrustZone의 시큐어 타이머를 이용한 효율적인 커널 검사 시스템을 제안하였다. 이 시스템은 외부 하드웨어 모니터와 TrustZone 기반 커널보호 방법의 장점 활용 및 기존 연구의 단점을 보완하였고, 커널과 동일한 공간으로부터 분리되고, 독립된 공간에서 커널을 보호하는 것이 가능하도록 설계하였다. 이를 위해, 3가지 주요 기술적 요소를 제시하고 이를 구현하였다.
Normal world에서 secure world로 메시지를 보냈을 때, 루트킷이 man-in-the middle 공격을 통해 이 메시지를 변조시킬 수 있기 때문이다[9,10]. 이러한 이유로, 우리는 TrustZone의 시큐어 타이머를 이용한 효율적인 커널 검사 시스템(EKI, Efficient Kernel Introspection system using secure timer on TrustZone)을 제안한다. EKI는 TrustZone의 시큐어 타이머를 활용하여, 외부 하드웨어 모니터와 같은 형태의 active monitoring을 수행한다.
이러한 컴포넌트들로 이루어진 EKI는 3가지 주요 기술적 요소를 고려하여 설계되었다. 아래는 각 주요 기술적 요소를 설명한 내용이다.
이 시스템은 외부 하드웨어 모니터와 TrustZone 기반 커널보호 방법의 장점 활용 및 기존 연구의 단점을 보완하였고, 커널과 동일한 공간으로부터 분리되고, 독립된 공간에서 커널을 보호하는 것이 가능하도록 설계하였다. 이를 위해, 3가지 주요 기술적 요소를 제시하고 이를 구현하였다. 실험을 통해, EKI가 제시된 threat model의 공격탐지가 가능하며, worst case에서도 운영체제의 정상적인 동작을 방해할만한 성능저하를 발생시키지 않는다는 것을 증명하였다.
하이퍼바이저 기반 연구에서는 가상화를 통해 커널과 격리된 환경에 커널보호 시스템을 구성할 수 있으나, 하이퍼바이저 역시 소프트웨어 취약점을 가질 수 있으며[7,8], 하이퍼바이저에 대한 무결성을 어떻게 보장할 수 있는지 등에 대한 문제점을 가진다. 이와는 달리, 외부 하드웨어 모니터 기반 연구는 독립된 공간에서 커널 무결성을 체크하기 위해 외부 하드웨어 모니터를 사용하였다. 하지만 외부 하드웨어 모니터를 사용하기 위해서는 특별한 하드웨어 모듈이나 SoC가 필요하며, 이는 다른 시스템과의 연결을 위해 하드웨어 디자인의 복잡성을 증가시키거나 [4]에서 제기한 바와 같이 전력소모를 증가시킨다.
본 연구에서는 [11]의 아이디어를 확장하여 실제 단말 상에서 실험을 진행하였고, 단말의 보안과 성능을 효율적으로 관리하기 위해 세 가지 기능적 요소를 고려하였다. 첫째로, 커널의 원본 메모리 값을 나타내는 레퍼런스 측정값의 무결성 보장을 위해 커널 빌드 시, 커널 원본 이미지인 vmlinux를 이용하여 레퍼런스를 측정하였다. 또한, 한 번에 검사할 수 있는 블록의 크기에 대한 유연성을 제공하기 위해, 각 섹션의 보호 영역을 설정 가능한 크기의 여러 모니터링 블록으로 나누어 측정하였다.
대상 데이터
EKI의 성능을 평가하기 위해서 앞서 제시한 threat model의 공격에 대한 보호여부와 운영체제의 성능저하 측면에서 이를 평가하였다. 모든 실험은 리눅스 3.10.30 커널과 쿼드코어 ARMv7 CPU가 내장되어 있는 실제 단말인, Samsung Tizen TV상에서 수행되었다.
성능/효과
(3) 레퍼런스 해쉬 생성도구는 커널 빌드 시점에 동작한다. 빌드 시, 커널 이미지(vmlinux), 커널 빌드 옵션(.
시스템콜 후킹 공격의경우, TV에서 일반 웹사이트에 로그인 시, 아이디와 패스워드가 어플리케이션에 저장되도록 설계되었다. EKI가 동작하는 상태에서 두 가지 공격에 대한 탐지여부를 측정한 결과, EKI가 코드 인젝션과 시스템콜 후킹 공격을 정상적으로 탐지한다는 것을 확인할 수 있었다.
Vmlinux를 활용하여 빌드환경에서 안전하게 레퍼런스 측정값을 생성하여 첫 번째 문제를 해결할 수 있다. 두 번째 문제를 해결하기 위해, 빌드 시, vmlinux를 통해 검사할 영역에 대한 전체크기를 사전에 파악함으로써, 런타임 시, 단말의 성능을 고려한 모니터링 블록의 크기설정을 가능하게 해준다. Vmlinux는 리눅스 커널 이미지가 포함된 ELF 실행파일이다.
Normal world 내의 리눅스 커널 메모리 영역과 분리되어 있는 TrustZone내의 EKI에서도 각 섹션의 물리메모리 시작 주소를 저장하고 있으면 동일한 데이터에 접근 가능하다. 따라서 vmlinux의 text와 rodata 섹션에 대한 레퍼런스 측정값을 해쉬 알고리즘을 활용하여 미리 생성하고, 런타임 시, 각 섹션이 로딩 되어 있는 물리메모리에 접근하여 런타임 해쉬 측정값을 생성, 이를 레퍼런스 측정값과 비교하여 무결성 검증을 수행할 수 있다.
이 공격방법은 커널의 자료구조를 직접 생성하거나 제거할 수 있으며 커널 상태정보의 변경 하여 통하여 악의적인 동작을 수행한다. 따라서 본 연구에서 제시한 방법으로는 이 공격을 직접적으로 탐지할 수 없으나, 동적영역의 변조를 통해 text와 rodata 섹션의 메모리 값을 변조하거나 시스템콜 테이블 엔트리를 후킹하는 행위를 간접적으로 탐지할 수 있다.
은 각 benchmark를 사용하였을 때의 성능을 나타낸 그래프로써 가로축은 모니터링 주기, 세로축은 성능, 각 그래프의 색깔은 블록크기를 나타낸다. 모든 benchmark 테스트 결과에서 모니터링 주기가 길어지고, 블록크기가 작을수록 높은 성능 결과를 나타내었는데 이는 주기가 길수록 EKI의 동작 횟수가 적어지고, 블록크기가 작을수록 연산하는 양이 적기 때문이라고 판단된다.
이 경우, 다른 설정에 비해 성능저하가 더 많이 발생한다는 단점이 있으나, 실시간으로 검증하는 것과 비슷한 효과를 나타내기 때문에 Vigilare[4]에서 소개된 transient 공격에 대해서도 탐지가 가능하다. 실험결과를 통해, EKI는 최대 6.09%정도의 성능저하만 발생시킨다는 것을 확인할 수 있었다. Table 2.
이를 위해, 3가지 주요 기술적 요소를 제시하고 이를 구현하였다. 실험을 통해, EKI가 제시된 threat model의 공격탐지가 가능하며, worst case에서도 운영체제의 정상적인 동작을 방해할만한 성능저하를 발생시키지 않는다는 것을 증명하였다. 향후에는 6장에서 설명한 내용들을 고려하여 커널 동적영역을 공격하는 kernel rootkit에 대한 분석 및 악의적인 변조를 검출해낼 수 있는 시스템을 개발할 것이다.
주기가 50ms이내의 경우에는 모든 공격을 1초 이내에 검출 가능하였고, 주기가 100ms인 경우에도 블록크기가 256Kb인 경우를 제외하고는 1초이내에 모든 공격을 검출하였다. 이 결과를 통해, 제안된 시스템은 실시간으로 동작하지 못하여 주기적으로 탐지기능을 수행한다는 단점이 있으나 짧은 시간 내에 모든 공격을 탐지할 수 있음을 확인하였다.
커널 루트킷들의 특성을 분석한 연구들 중 하나인, Poker[13]에서는 커널 루트킷을 다양한 측면에 프로파일링 하였다. 프로파일링된 결과에서 커널 루트킷의 기본적인 공격특성은 코드 인젝션을 통한 커널 코드 변조와 시스템콜 후킹인 것으로 확인되었다.
후속연구
실험을 통해, EKI가 제시된 threat model의 공격탐지가 가능하며, worst case에서도 운영체제의 정상적인 동작을 방해할만한 성능저하를 발생시키지 않는다는 것을 증명하였다. 향후에는 6장에서 설명한 내용들을 고려하여 커널 동적영역을 공격하는 kernel rootkit에 대한 분석 및 악의적인 변조를 검출해낼 수 있는 시스템을 개발할 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
커널 루트킷은 왜 운영 체제의 무결성을 훼손시킬 수 있는 가장 위협적이고 널리 퍼진 위협으로 인식되는가?
커널 루트킷은 운영체제의 컴포넌트 사이의 통신을 가로채거나 수정할 수 있기 때문에, 운영 체제의 무결성을 훼손시킬 수 있는 가장 위협적이고 널리 퍼진 위협 중 하나로 인식되고 있다. 커널 루트킷이 이미 커널 권한을 획득하였기 때문에 루트킷이 설치된 공간에서 커널을 보호하는 것은 안전하지 않다.
루트킷 코드는 어디에 삽입되는가?
커널 루트킷은 노출되지 않은 상태로 운영체제를 무력화시킬 수 있기 때문에, 운영체제의 발달에도 불구하고, 가장 위협적이고 널리 퍼진 커널 위협 중에 하나로 인식되어 왔다. 루트킷 코드는 보안 취약점을 이용하여 이전에 삽입되었던 디바이스 드라이버에 의해 커널 메모리에 삽입된다. 삽입된 루트킷이 실행되면 커널 코드, 데이터, 구조체의 변조 및 함수 포인터 후킹을 통해 공격자가 의도한대로 오작동이 유발된다.
커널보호 시스템이 커널과 동일한 공간으로부터 독립적이어야 하는 이유는 무엇인가?
커널 루트킷이 이미 커널 권한을 획득하였기 때문에 루트킷이 설치된 공간에서 커널을 보호하는 것은 안전하지 않다. 따라서 커널보호 시스템은 커널과 동일한 공간으로부터 독립적이어야만 한다.
참고문헌 (17)
O.S. Hofmann, A.M. Dunn, Sangman Kim, I. Roy, and E.Witchel, "Ensuring operating system kernel integrity with OSck," Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems, pp. 279-290, Mar. 2011
Z. Wang, X. Jiang, W. Cui, and P. Ning, "Countering kernel rootkits with lightweight hook protection," Proceedings of the 16th ACM conference on Computer and communications security, pp. 545-554, Nov. 2009
N.L. Petroni Jr., T. Fraser, J. Molina, and W. Arbaugh, W. A. "Copilot - a coprocessor-based kernel runtime integrity monitor," Proceedings of the 13th USENIX Security Symposium, pp. 179-194, Aug. 2004
Hyungon Moon, Hojoon Lee, Jihoon Lee, Kihwan Kim, Yunheung Paek, and Brent Byunghoon Kang, "Vigilare: toward snoop-based kernel integrity monitor," Proceedings of the 2012 ACM conference on Computer and communications security, pp. 28-37, Oct. 2012
A.M. Azab, P. Ning, J. Shah, Q. Chen, R. Bhutkar, G. Ganesh, J. Ma, and W. Shen, "Hypervision across worlds: real-time kernel protection from the ARM TrustZone secure world," Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security, pp. 90-102, Nov. 2014
X. Ge, H. Vijayakumar, and T. Jaeger, "Sprobes: enforcing kernel code integrity on the TrustZone architecture," Proceedings of the Third Workshop on Mobile Security Technologies (MoST) 2014, May. 2014
R. Riley, X. Jiang, D. Xu, "Multi-aspect profiling of kernel rootkit behavior," Proceedings of the 4th ACM European conference on Computer systems, pp. 47-60, Apr. 2009
※ AI-Helper는 부적절한 답변을 할 수 있습니다.