본문 바로가기
KERD
논문KCI 등재

심볼 테이블을 이용한 펌웨어 리눅스 커널 버전 정적 식별 기법

Static Identification of Firmware Linux Kernel Version by using Symbol Table

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

장비 도입 시 해당 장비에 설치된 커널의 정확한 버전을 식별하는 것은 매우 중요하다. 특정 커널 버전에 취약점이 발견된 경우 이에 대해 조치 여부를 판단하거나, 특정 커널 버전의 제외 또는 포함 등에 대한 도입 요구 조건이 있는 경우 이를 판단하는데 사용될 수 있기 때문이다. 하지만 많은 시스템 및 네트워크 장비 제조업체들은 공식적으로 배포되고 있는 리눅스 기저 커널을 그대로 사용하지 않고, 장비에 최적화된 펌웨어를 제작하기 위해 커널을 수정하여 사용하므로 리눅스 커널 버전을 판단하기 어려운 상황이 발생한다. 또한, 커널의 패치가 공개될 경우 제조사는 수정한 커널에 패치 내용을 반영하므로, 이런 과정이 지속될 경우 커스터마이징된 커널은 리눅스 기저 커널과 매우 다른 형상이 된다. 따라서, 특정 파일 존재 여부 등의 단순한 방법으로는 리눅스 커널을 정확히 식별하기 어렵다. 새로운 리눅스 커널 버전이 공개될 때는 새로운 함수가 포함되기도 하고 기존 함수가 삭제되기도 한다. 본 논문에서는 심볼 테이블에 저장된 함수명을 이용하여 펌웨어 커널 버전의 정적 식별 방안을 제안하고 실험을 통해 그 실효성을 증명하였다. 100개의 리눅스 펌웨어를 대상으로 한 실험에서 99%의 정확도로 리눅스 커널 버전을 식별할 수 있었다. 본 연구를 통해 펌웨어 이용 환경의 보안성 향상에 기여할 것으로 기대한다.

Abstract

When acquiring a product having an OS, it is very important to identify the exact kernel version of the OS. This is because the product’s administrator needs to keep checking whether a new vulnerability is found in the kernel version. Also, if there is an acquisition requirement for exclusion or inclusion of a specific kernel version, the kernel identification becomes critical to the acquisition decision. In the case of the Linux kernel used in various equipment, sometimes it becomes difficult to pinpoint the device’s exact version. The reason is that many manufacturers often modify the kernel to produce their own firmware optimized for their device. Furthermore, if a kernel patch is applied to the modified kernel, it will be very different from its base kernel. Therefore, it is hard to identify the Linux kernel accurately by simple methods such as a specific file existence test. In this paper, we propose a static method to classify a specific kernel version by analyzing function names stored in the symbol table. In an experiment with 100 Linux devices, we correctly identified the Linux kernel version with 99% accuracy.

참고문헌 (13)

  1. "The Linux Kernel, Version 0.8-3"[URL]
  2. "Google slams Samsung for making unnecessary changes to Linux kernel code"[URL]
  3. "Allwinner News –Root Exploit in Linux and Fake Pine A64 Boards"[URL]
  4. Yufei Gu, "OS-SOMMELIER : Memory-Only Operating System Fingerprinting in the Cloud", Proceedings of the Third ACM Symposium on Cloud Computing, pp.1~13 (2012)
  5. Vassil Roussev, "Image-based kernel fingerprinting", Digital Investigation, 11, pp.13~21 (2014)
  6. Bhatt, "Leveraging relocations in ELF-binaries for Linux kernel version identification", Digital Investigation, 26, pp.12~20 (2018)
  7. Mihai Christodorescu, "Cloud security is not (just) virtualization security: a short paper", Proceedings of the 2009 ACM workshop on Cloud computing security, pp.97~102 (2009)
  8. Arati Baliga, "Automatic Inference and Enforcement of Kernel Data Structure Invariants", 2008 Annual Computer Security Applications Conference (ACSAC) IEEE, pp.77~86 (2008)
  9. "Symbol Table"[URL]
  10. Alessandro Rubini, "Linux Device Drivers", pp.27~29 (2001), O'Reilly Media, Inc
  11. "System.map"[URL]
  12. "kallsyms - Extract all kernel symbols for debugging"[URL]
  13. Oliver, Jonathan, "TLSH--a locality sensitive hash", 2013 Fourth Cybercrime and Trustworthy Computing Workshop. IEEE, pp.7~13 (2013)

관련 논문AI추천

이 간행물의 다른 논문 (11건)