본문 바로가기

정상을향해/OS·Kernel Driver·Rootkit15

2장. 커널 조작 - 루트킷 설계 루트킷은 하나 이상의 커널 모듈 또는 드라이버 프로그램을 이용한다. 예를 들어 파일을 숨기는 작업을 위한 디바이스 드라이버와 레지스트리 키를 숨기는 작업을 위한 드라이버를 별도로 사용할 수 있다. 이처럼 여러 드라이버에 필요한 기능 코드를 분산시키면 코드 관리가 쉬워진다. 모든 기능을 다 포함해서 제공하는 하나의 통합적인 드라이버를 다루고 코드를 관리하는 것은 힘들기 때문이다. 복잡한 루트킷 프로젝트는 많은 컴포넌트를 가진다. 그런 것들을 하나의 큰 프로젝트 안에 조직적으로 관리하면 편하다. 다음과 같은 디렉토리 구조를 이용하면 복잡한 루트킷 프로젝트에 도움이 될 것이다. /My Rootkit/src/File Hider 파일을 은닉하기 위한 코드는 복잡할 수 있으며 그 것을 수행하기 위한 기술에는 여러가.. 2014. 1. 10.
2장. 커널 조작 - 커널의 중요 요소 커널의 중요 요소 프로세스 관리 프로세스가 동작하려면 CPU가 필요하다. 커널은 CPU 스케쥴링을 관리하는 코드를 포함하고 있다. 운영체제가 스레드를 지원한다면 커널은 각각의 스레드별로 CPU 스케쥴링을 수행할 것이다. 모든 스레드와 프로세스에 대한 정보는 메모리상의 데이터 구조체에 의해서 유지, 관리된다. 만일 공격자가 이 데이터 구조체를 변경하면 특정한 프로세스를 숨기는 것이 가능하다. 파일 접근 파일 시스템은 운영체제가 제공하는 가장 중요한 기능 중 하나다. 디바이스 드라이버에 의해서 각종 파일시스템이 구현되고 처리된다. 커널은 이런 파일시스템에 대한 일관적인 인터페이스를 제공한다. 커널의 파일시스템 관련 코드를 수정하면 특정한 파일이나 디렉토리를 숨기는 것이 가능하다. 보안 프로세스간의 독립성은 .. 2014. 1. 8.
1장. 흔적을 남기지 말라 - 루트킷이란? 루트킷은 공격자가 컴퓨터의 관리자 계정인 '루트(root)' 계정의 권한을 획득하는 데 유용하게 사용되는 작은 프로그램들로 이루어진 '킷'이라고 할 수 있다. 루트킷은 영구적 또는 일관적으로 탐지되지 않는 형태로 컴퓨터에 존재할 수 있게 해주는 프로그램들과 코드들로 이루어진 세트다. 루트킷의 정의에서 핵심적인 키워드는 '탐지되지 않는'이다. 루트킷이 사용하는 대부분의 기술과 트릭은 코드와 데이터를 컴퓨터 시스템에서 숨기기 위한 것들이다. 즉 대부분의 루트킷이 파일과 디렉토리를 숨길 수 있는 기능을 제공해 준다. 루트킷의 기능 중 또 다른 것으로 원격지에서의 컴퓨터 접근과 네트워크 패킷 훔쳐보기를 들 수 있다. 이런 기능들이 조합되면 보안에 위협을 가할 수 있다. 루트킷은 본질적으로 '악의적'인 것이 아니.. 2014. 1. 8.
파일시스템 (File System) 파일시스템파일과 그 안에 든 자료를 저장하고 찾기 쉽도록 유지 및 관리하는 방법을 말한다. 다시말해 파일을 읽고 쓰는 방법에 대한 내용이라 보면 된다. 우리가 많이 쓰는 윈도우와 리눅스는 이러한 파일시스템이 각각 존재한다. 윈도우 파일시스템윈도우 운영체제에서 사용하는 파일시스템은 익숙한 FAT16, FAT32, NTFS 등이 있다. FAT 파일시스템은 1976 Microsoft사의 빌게이츠에 의해 구현되었다. FAT12 : 1980년대 초, 플로피 디스크용으로 처음 개발처음에는 FAT12로 베이직(BASIC) 언어를 지원하기 위해 개발되었고, 이는 플로피 디스크용으로 사용되었다. FAT16 : 1980년대 말, 하드디스크를 지원하기 위해 개발1988년 MS-DOS 4.0 이후에 FAT16 버전을 발표한다.. 2013. 11. 11.