본문 바로가기

정상을향해48

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.
상속 (Inheritance) 다음 소스코드를 보자. 25번째행에서 다음의 선언이 의미하는 바가 'public 상속'이다. class UnivStudent : public Person{ . . .} 그리고 WhoAreYou() 멤버함수를 살펴보자. (35행) UnivStudent 클래스에는 WhatYourName 함수와 HowOldAreYou 함수가 정의되어 있지 않음에도 불구하고, 이 두 함수를 호출할 수 이유가 바로 UnivStudent 클래스가 Person 클래스를 상속했기 때문이다. 즉, 이 두 함수는 Person 클래스의 멤버함수이기 때문에 호출이 가능하다. (이 것이 상속의 가장 두드러진 특징이다.) 여기서 하나의 의문점이 생긴다. UnivStudent 클래스의 생성자는 Person 클래스의 멤버까지 초기화해야 할 의무가 .. 2013. 11. 11.