Part01. 시스템 해킹을 위한 기초 지식 Chapter01. 운영체제에 대한 이해

Slides:



Advertisements
Similar presentations
1/29 Chapter 3: 시스템 소프트웨어 인터페이스 인간이 실질적으로 조작하는 기계의 부분 좋은 인터페이스 : 직관적 ( 사전지식, 경험으로 알 수 있음 ) 이어서 누구나 즉각적 사용 가능 사용자 ( 자연어 ) ↔ 응용 S/W↔ 시스템 S/W↔H/W( 기계어 )
Advertisements

운영 체제의 일반 발표자 : 백승재 황영종. 1. 운영체제의 의의 전자 계산기에서 사용자와 하드웨어와의 직접적으로 대화하는 대신 운영 체제라는 시스템 프로그램을 통하여 하드웨어를 다루는 것이다. 한정된 컴퓨터 자원을 효율적으로 관리, 운영함으로써 사용자에게 편의성을 제공하는.
1 장 Unix/Linux 소개 1 Helpers. 1 장 내용 1. 왜 유닉스인가 ? 2. 유닉스 시스템 구조 3. 유닉스 역사 및 버전 4. 리눅스 설치 ( 별도 2 시간 실습 ) 5. 사용 환경 6. 사용자 계정 관리 Unix/Linux 2.
윈도우 조 이충진, 김창완, 김현규, 최준영, 전병주, 송기훈. 목차  윈도우 최준영, 송기훈  윈도우 95 - 김현규, 이충진  윈도우 98 - 강창완, 전병주.
이재우.  운영체제 정의 ◦ OS(Operation System) ◦ 사용자와 컴퓨터 시스템 사이에 위치하여 컴퓨터 시스템의 전반 적인 동작을 제어하고 조정하며 ◦ 사용자에게 편리성을 제공하여 한정된 시스템 자원을 효율적으 로 사용할 수 있도록 관리하는.
운 영 체 제 실 습 ( 리눅스 서버관리입문 ) 개 요. 2/31 운영체제 (Operating System) 개요 시스템 소프트웨어 !!!  응용 프로그램과 하드웨어 사이의 인터페이스 역할  응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를.
1 단계 -CD 를 삽입 1.CD 를 넣는다 2. 전원을 다시켠다 3.[ENTER] 키를 친다 ( 계속 엔터를 침 ) : 자동으로 컴퓨터가 시스템을 체크하고있다.
시스템 운영계획 OS 설치 및 드라이버 설치 패치 및 업그레이드 보안설정
Understanding of Ubiquitous & Computers Plus
2015학년도 시스템보안 컴퓨터 공학과 발표자 : 안정섭
Managing Filesystems, Swap Space, and Devices
Linux Seminar #1 리눅스 이해하기.
1. 준비 사항 설치할 컴퓨터의 사양 확인 하드웨어와 Windows Server 2003의 호환성 확인
Basic of Buffer Over Flow
소프트웨어와 운영체제.
제 2장 컴퓨터 구조.
Windows Server 장. 서버 운영을 위한 필수 사항.
제12강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
1장 유닉스 소개.
4. 시스템 관리 기본 naldo.
Linux University of Seoul Computer Science Park Jong wook
안드로이드 스터디 => 언어만 잘 알면 어플리케이션을 만들 수 있을 것이다!
Redhat Linux 설치 과정.
Windows CE 시스템 개발 환경 구축.
제6장 FUSING.
Chapter 02. 시스템 보안 : 건강한 시스템이 챙겨야 할 기본
운영체제 이승언.
FUSING.
운 영 체 제 실 습 (리눅스 서버관리입문) 02. 리눅스 설치.
Complementary Metal Oxide Semiconductor
뇌를 자극하는 Windows Server 2012 R2
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
윈도우&유닉스 시스템 보안설정 Start! 서화섭.
소개: Unix란 무엇인가? 숙명여대 창병모 2009/09.
[beginning] Linux & vi editor
유닉스 이론과 실습 √ 원리를 알면 IT가 맛있다 컴퓨터정보계열 이광규.
리눅스 커널의 이해 중에서 1장. 소개 이원구 네트워크 실험실.
사용자의, 사용자에 의한, 사용자를 위한 APT.상가 분양임대관리 System 제안서
Unix Project-Final <test character device 생성>
Linux 9.X 기초에서 활용까지 Chapter 07 프로세스 관리.
운영체제와 Windows XP 초등 ICT 교육 방법론 2013년 1학기.
컴퓨터 구조.
UNIX Unbounded A Beginning Approach
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
직업 형태 변화 과정 일자리의 변화 ERP (Enterprise Resource Planning) 구분 18~19 세기
+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
Ch 08. 부트 프로세스 Flatstar.
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
BOF of 2.6 Kernel ! 박수완 / Su-Wan, PARK [ L1nkC] 숭실대학교 정보보호동아리 ACK
시스템 보안 정보 보안 개론 9장.
제3장 8086 프로세서의 내부구조.
제 2장 컴퓨터동작의 기본 개념.
Computer System Architecture
상지대학교 컴퓨터공학과 고광만 Lecture 01: 유닉스/리눅스 소개 상지대학교 컴퓨터공학과 고광만
Buffer Overflow
2018 봄학기 Pusan National University School of CSE
운영체제 (Operating Systems) (Memory Management Strategies)
유닉스 개요 및 기본 사용법 ㅎㅎ 유닉스 개요 유닉스 시스템 접속 방법과 명령 사용법.
원격 제어.
12장. 파일 시스템 구현.
Chapter 12 Memory Organization
11장. 마이크로 프로세서 내부 구조.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
제4강 학습내용 인텔프로세서의 발전 과정 8086 프로세서와 80i86프로세서 개요 인텔 펜티엄 IV프로세서 개요
Presentation transcript:

Part01. 시스템 해킹을 위한 기초 지식 Chapter01. 운영체제에 대한 이해 시스템 해킹을 위한 기초지식 파트를 발표 하게 된 이선민입니다. 이 파트는 운영체제에 대한 이해 , 8086시스템에 대한 이해, 계정과 권한 3개의 챕터로 나눠져 있고 첫 챕터인 운영체제에 대한 이해를 시작하도록 하겠습니다.

운영체제의 개념과 기능 운영체제 개념 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원 을 효율적으로 관리할 수 있도록 하는 프로그램 집합 운영체제란 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템자원에 해당하는 기억장치, 프로세서, 입출력장치, 정보, 네트워크 등을 효율적으로 관리할 수 있도록 하는 프로그램의 집합이라고 할 수 있습니다.

운영체제의 개념과 기능 운영체제의 기능 일반 PC는 단일 사용자 운영체제 구성 모델을 기반으로 하여 메모리 관리자, 프로 세서 관리자, 장치 관리자, 파일 관리자 등 4가지 서브 시스템 관리자로 구성 네트워크가 지원되는 운영체제에는 네트워크 관리자 추가 운영체제의 종류는 다양한데 일반적으로 사용하는 PC구성을 기준으로 기능을 살펴보자면 일반 PC는 사용자 명령 인터페이스를 기반으로 하여 메모리 관리자, 프로세서 관리자, 장치 관리자, 파일관리자 등 4가지 서브 시스템 관리자로 구성되어있습니다. 그리고 네트워크가 지원되는 운영체제에는 네트워크 관리자가 추가됩니다.

윈도우에 대한 이해 윈도우 역사 윈도우는 1981년 10월에 선보인 MS-DOS 1.0으로부터 시작되며 1983년 MS-DOS 2.0이 발표되었습니다. 그 후 MS-DOS는 계속 발전하였고 1985년에 윈도우 1.0이 발표되었습니다. 1.0은 다중처리 환경이 되고 절차가 단순해졌으나, 안정성과 성능문제로 주목을 받지는 못했습니다. 1987년에는 윈도우2.0이 발표되었고, 이때부터 DOS에서 설정한 기본 메모리인 640KB를 넘어서는 프로그램이 생겨나기 시작했습니다. 그리고 같은 해 윈도우3.0의 기초인 윈도우 386버전이 발표되었습니다. 1993년에는 DOS에서 시작한 PC용 운영체제였던 윈도우가 서버용 운영체제의 개념인 NT버전으로 출시되기 시작하였고 윈도우 NT에 이르러서야 각각의 프로세스가 고유 권한을 가지게 되면서 시스템 자원에 대한 제어권을 운영체제가 확실히 가지게 되었습니다. 1995년에는 윈도우 95가, 1998년에는 윈도우 98이 출시되었는데 윈도우 95나 98은 운영체제가 시스템자원에 대해 우선권을 가지지못했습니다. 99년에는 윈도우Me와 윈도우 2000, 2001년엔 윈도우XP 그리고 2003년엔 윈도우 2003, 현재는 윈도우 서버2008과 비스타,윈도우 7 등이 출시되었다.

윈도우에 대한 이해 윈도우 구조 커널은 인터럽트처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프 로그래밍 인터페이스 제공 등 운영체제의 기본 기능을 제공 윈도우의 커널 구조 [그림 1-5] 윈도우 시스템의 구조 [그림 1-4] 윈도우 링 구조 이제 윈도우의 커널 구조와 파일시스템구조를 알아볼 것인데요 이전에 커널이 무엇인지 잠깐 살펴보도록 하겠습니다. 커널은 인터럽트처리, 프로세스관리,메모리관리,파일시스템관리,프로그래밍 인터페이스 제공 등 운영체제에서 기본적인 기능을 제공하는 핵심이라 할 수 있으며 커널은 윈도우나 유닉스가 동작할 때 손상되면 안 되므로 접근 가능한 메모리에 로드 하지 않는 것이 일반적입니다. 윈도우 시스템은 보통 그림 1-4와 같은 링 구조를 이루는데 가장 밑에 하드웨어, 하드웨어를 제어하기 위한 HAL, 그리고 마이크로 커널과 각종관리자, 마지막으로 운영체제에서 동작하는 갖가지 응용 프로그램 순입니다. 윈도우에서는 하드웨어,HAL,마이크로 커널,각종관리자 까지를 커널 모드로 구분하고 마지막 링을 사용자모드로 구분합니다. 커널 모드는 기본적으로 사용자가 접근할 수 없는 영역으로, 프로그램의 실행과 관련한 기본 관리 시스템이 존재합니다. 윈도우는 프로그램을 만들고 실행하는 모든 과정이 사용자 모드에서만 가능하도록 설계되었으나, 완벽하게 구현되지는 않았습니다. 이는 윈도우가 링 구조를 완전히 적용한 운영체제가아니라는것을 보여주며 이런 점이 보안의 허점을 만들어 냅니다. 그림 1-5에서는 윈도우의 각 요소를 사용자 모드와 커널 모드로 좀 더 자세히 표현하였는데 밑에 부분이 커널 모드 위에 부분이 사용자모드로 나뉩니다. 가장 밑에 있는 하드웨어는 기계 그 자체를 말하며, HAL은 하드웨어가 소프트웨어와 원활히 통신할 수 있도록 도와주는 번역자 역할을 합니다. 다음으로 마이크로 커널은 하드웨어와의 통신만을 제어하는 최소한의 커널 입니다. 윈도우 관리자에는 입출력관리자, 객체 관리자, 보안 참조 관리자, 프로세스 관리자, 로컬프로시저호출관리자, 가상 메모리관리자 등 여러 관리자들이 있는데 대부분은 명칭만으로도 역할을 짐작할 수 있습니다. 사용자모드에는 다양한 응용 프로그램이 존재할 수 있으며, 응용 프로그램을 실행하기 위한 몇 가지 서브 시스템이 있는데 이중 첫 번째가 Win32입니다. Win32는 기본 서브 시스템으로 32비트 응용 프로그램이 동작할 수 있게 도와주며 기본적인 윈도우 사용자 인터페이스를 제공합니다. 다른 서브시스템으로는 OS/2용 응용프로그램에서 사용하는 OS/2 서브 시스템이 있지만 거의 쓰지 않는다. 또 다른 서브시스템으로는 보안 서브시스템과 유닉스 운영체계에 기반을 둔 일련의 표준 운영체계 인터페이스로 POSIX가 있습니다. 보안 서브시스템은 사용자가 로그인 할 때 데이터를 보호하고, 운영체제가 이를 제어할 수 있도록 만든 서브시스템 입니다. [그림 1-4] 윈도우 링 구조

윈도우에 대한 이해 윈도우의 파일시스템 FAT : FAT 이용 시 하나의 파티션의 최대 크기는 2GB이다. FAT 는 기본적으로 16비트 크기의 테이블을 가지고 있으며, 하나의 클 러스터는 32KB다. FAT32 : 총 32비트 개수만큼의 클러스터를 가질 수 있으며, 호환 성이 좋은 편이어서 리눅스나 다른 운영체제에 정보를 옮길 때 유 용하게 쓰인다. NTFS : NTFS는 개별적인 폴더와 파일에 대해 사용 권한을 설정할 수 있고, 각 파일과 폴더에 해당 계정만 접근하여 읽을 수 있게 암호 화할 수도 있다. 폴더를 암호화하면 폴더 안에 있는 모든 파일은 암 호화된다. 윈도우에는 FAT, FAT32, NTFS와 같은 파일시스템이 존재하는데 먼저 윈도우 95의 FAT 파일 시스템부터 살펴보도록 하겠습니다. FAT는 기본적으로 2GB까지를 한 파티션으로 설정할 수 있습니다. FAT 테이블의 기본 크기는 16비트인데, 이는 하드 디스크에 파일을 담는 최소 단위인 클러스터가 32KB기 때문입니다. 따라서 전체 가능 용량은 2GB입니다. FAT32는 FAT보다 용량이 커져 총 32비트개의 클러스터를 가질 수 있으며, 호환성이 좋아 다른 운영체제에 정보를 옮길 때 유용하게 쓰입니다. NTFS는 FAT와 HPFS의 장점을 모아 만든 것인데 파일 시스템의 결함 관리에 있어 FAT나 FAT32보다 훨씬 좋은 성능을 보입니다. 그리고 NTFS는 보안 관점에서도 비교적 훌륭하다 할 수 있습니다. 개별 폴더와 파일에 사용 권한을 설정할 수 있고, 각 파일과 폴더에 해당 계정만 접근하여 읽을 수 있게 암호화할 수 있기 때문입니다. 폴더를 암호화하면 폴더에 있는 파일도 모두 암호화되며, 암호화된 폴더나 파일은 복사나 이동을 해도 암호화 속성을 잃지 않습니다.

윈도우에 대한 이해 윈도우의 부팅 순서 윈도우 XP, 윈도우 서버200/2003의 부팅 순서 1단계. POST(Power On Self Test)의 실행 BIOS(Basic Input/Output system)에서 POST를 실행 2단계. 기본 부팅 관련 설정사항 로드 CMOS(Complementary Metal-Oxide Semiconductor)에서 BIOS는 CMOS에 설정되어 있는 시스템 설정사항 및 부팅과 관련된 여러 가지 정보를 읽어 시스템에 적용 3단계. MBR(Master Boot Record, 마스터 부트 레코드) 로드 MBR은 저장 매체의 첫 번째 섹터(LBA 0)에 위치하는 512바이트의 영역으로, 부팅 매체에 대한 기본 파일 시스 템 정보. ‘Missing operating system’은 운영체제가 설치되지 않았거나 CMOS에서 부팅 매체를 잘못 설정했을 때 확인 4단계. NTLDR(NT Loader) 실행 하드 디스크의 부팅 파티션에 있는 프로그램으로, 윈도우 서버 2000이 부팅될 수 있도록 간단한 파일 시스템 을 실행하고 boot.ini 파일의 내용을 읽어 가능한 부팅 옵션을 보여준다 5단계. NTDETECT.com 실행 하드웨어 검사(PC의CPU 유형, 버스 유형, 비디오 보드 유형, 키보드와 마우스 종류, 컴퓨터에 장착되어 있는 직 렬 포트와 병렬 포트, 플로피 드라이브) 운영체제의 부팅 순서는 시스템의 기본을 이루는 각 요소를 보여주기 때문에 운영체제를 이해하는 데 많은 도움이 됩니다. 윈도우는 버전에 따라 부팅 프로세스가 조금씩 다르므로 윈도우서버2003 이전의 버전과 윈도우 비스타 이후 버전으로 나누어 살펴보도록 하겠습니다. 먼저 이전의 버전에서는 1단계post의 실행 Post는 운영체제와 관련된 부분은 아니지만 어떤 운영체제를 설치해도 POST과정을 거치게 됩니다. Post실행은 하드웨어 스스로 시스템에 문제가 없는지 기본사항을 검사하는 과정으로 BIOS에서 POST를 실행하고 라우터나 스위치 등의 장비에서도 처음 스위치를 켤 때 POST를 실행합니다. 2단계기본부팅관련 설정사항로드 CMOS에서 BIOS는 CMOS에 설정되어 있는 시스템 설정사항 및 부팅과 관련된 여러 가지 정보를 읽어 시스템에 적용합니다. 3단계마스터부트레코드로드 MBR은 저장 매체의 첫 번째 섹터에 위치하는 512바이트의 영역으로, 부팅 매체에 대한 기본 파일 시스템 정보가 들어 있습니다. 운영체제가 부팅될 때 저장매체의 첫 번째 섹터를 호출하면 해당 부트코드가 수행됩니다. 4단계. NT Loader 실행 NT로더는 하드 디스크의 부팅 파티션에 있는 프로그램으로, 윈도우 서버 2000이 부팅될 수 있도록 간단한 파일 시스템을 실행하고 boot.ini 파일의 내용을 읽어 가능한 부팅 옵션을 보여줍니다. 5단계. NTDETECT.com 실행 NT디텍트는 NT로더에서 제어권을 위임 받아 시스템에 설치된다. 그리고 하드웨어를 검사합니다. NT디텍트가 문제없이 작동하면 레지스트리의 하드웨어 키를 만들고 컴퓨터를 재 부팅할 때마다 레지스트리의 해당 부분이 만들어지므로 항상 현재의 하드웨어 구성을 반영합니다.

윈도우에 대한 이해 윈도우의 부팅 순서 윈도우 XP, 윈도우 서버200/2003의 부팅 순서 6단계. ntoskrnl.exe(NT OS Kernel) 실행 HAL.DLL(Hardware Abstraction Layer) 로드 단계 ① 커널 로드 : 윈도우 서버 2000은 시스템 설정을 로드하고, 이것을 HKEY_LOCAL_MACHINE\ System\CurrentControlset\Services에 저장. 이 정보를 확인하여 로드할 드라이브와 그 순 서를 결정 ② 커널 초기화 : 드라이브에 대한 현재의 제어 설정을 검사하고 작업을 시작 ③ 서비스 로드 : 세션 관리자 서브 시스템(smss.exe)과 Win32 서브 시스템을 로드 ④ 서브 시스템 시작 : 윈도우 서브 시스템이 초기화, Win32 서브 시스템은 로그인을 처리하고 Winlogon.exe를 시작. Ctrl+Alt+Delete를 누르면 로그인 창이 활성화되고 계정과 패스워드 입력받아 로컬 보안 인증 서버에 보내 계정과 패스워드를 전달받은 로컬 보안 인증 서버는 보 안 계정 관리자에 저장된 정보와 비교. 일치하면 Userinit.exe 프로세스가 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon의 셸 값에서 참조되는 셸을 실행 6단계. ntoskrnl.exe(NT OS Kernel) 실행 NT OS 커넬은 HAL을 로드하는데 로드단계는 4단계로 나누어 생각할 수 있습니다. 커널 로드단계에서는 시스템 설정을 로드 하고 저장. 그리고 이 정보를 확인하여 로드 할 드라이브와 그 순서를 결정합니다. 커널 초기화 단계에서는 드라이브에 대한 현재의 제어 설정을 검사하고 작업을 시작합니다. 서비스 로드 단계에서는 세션 관리자 서브시스템과 Win32 서브시스템을 로드 합니다.

윈도우에 대한 이해 윈도우의 부팅 순서 윈도우 비스타 2008, 7의 부팅 순서 1~3단계. POST 실행/기본 부팅 관련 설정사항 로드/MBR 로드 4단계. 윈도우 부트 서브 시스템(Window Boot Manager) 실행 윈도우 부트 서브 시스템이 실행. bootmgr.exe가 실행되고 부트 설정 데이터(BCD, Boot Configuration Data)를 읽어 실행 가능한 운영체제 목록 보여줌. bcdedit.exe 이용 편집 가능 5단계. 윈도우 OS 로더(Winload.exe) 실행 윈도우OS 로더인 Winload는NTDETECT와 같이 각종 장치 드라이브를 로드하고, ntoskrnl.exe 실행 윈도우 비스타 이후 버전의 부팅순서는 윈도우 서버 2003 이전 버전의 부팅순서와 약간 다르지만 기본 순서와 구성은 거의 같습니다. 그럼 차이가 나는 부분을 중심으로 살펴보도록 하겠습니다. 1단계에서 3단계까지 이전의 버전과 부팅순서가 같습니다. 4단계. 윈도우 부트 서브 시스템실행 윈도우7은 MBR에서 NT로더가 실행되지 않고 윈도우 부트 서브 시스템이 실행됩니다. 부트매니저가 실행되고 부트 설정 데이터를 읽어 실행 가능한 운영체제 목록 보여줍니다. 5단계. 윈도우 OS 로더실행 윈도우OS 로더인 Winload는NTDETECT와 같이 각종 장치 드라이브를 로드하고, ntos커넬을 실행합니다.

리눅스/유닉스에 대한 이해 리눅스/유닉스 역사 유닉스의 시초는 멀틱스라는 시분할 운영체제로 1963년부터 3년 동안 MIT, GE, 벨 연구소가 공동으로 개발한 것입니다 멀틱스는 GE가 하드웨어를 만들었고 Programming Language 1 언어로 제작되었습니다. 데니스 리치가 켄 톰슨과 함께PDP- 7을 만들기 시작하며 멀틱스의 여러 개념 구현에 노력했고 이때 유닉스라는 이름이 생겨났습니다. 버클리대학교 학생이던 빌 조이와 척 핼리가 1978년 수정한 유닉스에 BSD라는 이름을 붙여 판매하였으며. BSD는 멀티태스킹이 가능하였으며 파일 이름을 255자까지 붙일 수 있었습니다. BSD운영체제가 널리 퍼진 후 AT&T에서 설립한 USG는 새로운 유닉스에 SystemV라는 명칭을 붙였고 이때부터 유명컴퓨터업체가 유닉스 운영체제 시장에 뛰어들게됩니다. 이후 HP-UX를 제외한 대부분 시스템이 시장에 출시됩니다. 리눅스의 시초는 1983년부터 리처드 스톨만이 개발한 GNU 운영체제입니다. 리눅스 정식 버전은 1991년 10월에 발표 ‘Copy Left’ 원칙에 의해 배포되고 발전하기 시작했습니다.

리눅스/유닉스에 대한 이해 리눅스/유닉스 구조 유닉스 링 구조 : 하드웨어, 커널, 셀, 응용 프로그램으로 구성 유닉스의 링 구조를 살펴보도록 하겠습니다. 유닉스 링 구조는 그림에서 확인할 수 있듯이 하드웨어, 커널, 셀, 응용프로그램 4개의 링 구조로 윈도우의 링 구조보다 하나 적습니다. 보통 링의 개수가 많을수록 보안레벨이 높지만 그렇다고 윈도우가 유닉스보다 보안레벨이 높다고 할 수는 없습니다. 왜냐하면 유닉스의 링 구조는 윈도우보다 훨씬 더 명확한 구분점을 가지고 구분되어 있기 때문에 링의 개수는 적지만, 일반적으로 유닉스가 윈도우보다 조금 더 높은 보안수준을 유지 하고 있기 때문입니다. 유닉스에서 커널의 개념은 윈도우와 큰 차이가 없지만 유닉스 커널은 개별관리자가 존재 하지 않습니다. 유닉스 커널은(칠판에 적으면서) 하나의 거대한 프로그램 덩어리로 만들어진 모놀리식 커널과 개별적인 모듈로 이루어진 마이크로 커널이 있는데 모놀리식 커널은 거대한 커널이 모든 기능을 수행하도록 만들어졌으며 안정적이지만 문제가 발생할 경우 부분 수정이 어렵습니다. 마이크로 커널은 윈도우에서와 용어가 같지만 의미는 조금 다릅니다. 최소한의 커널인 윈도우의 마이크로 커널과 달리, 유닉스의 마이크로 커널은 여러 개의 모듈이 모여 하나의 커널을 이루는 개념입니다. 따라서 개별 모듈의 업로드와 언로드가 가능합니다. 그러나 각 모듈의 권한이 동일하여 잘못된 모듈을 업로드 할 경우 커널 전체가 망가질 수도 있습니다. 부분 모듈의 업로드를 이용해 커널에 백도어를 심을 수도 있는데, 자세한 내용은 8장에서 설명하기에 넘어가도록하겠습니다. [그림 1-8] 리눅스/유닉스 운영체제의 링 구조

리눅스/유닉스에 대한 이해 리눅스/유닉스 구조 윈도우보다 훨씬 단순, 크게 파일 서브 시스템, 장치 드라이버, 프로세스 제어로 나뉘며, 커널의 파일 크기 또한 윈도우의 1/3 정도 프로세스 제어에서는 전체 프로세스 간 통신, 스케줄링, 메모리 관리를 구현, 장치 드라이버는 윈도 우에서처럼 하드웨어와 소프트웨어를 연결해주는 인터페이스를 제공, 파일 서브 시스템은 하드 디 스크와 같은 저장 공간에 유닉스의 파일을 저장하고 읽는 역할 유닉스 커널의 상세구조는 그림과 같습니다. 유닉스 커널은 윈도우 커널에 비해 훨씬 단순하며. 크게 파일 서브 시스템, 장치드라이버, 프로세스 제어로 나뉘며 커널의 파일 크기 또한 윈도우의 3분의1정도입니다. 먼저 프로세스 제어에서는 전체 프로세스간 통신과 스케줄링, 메모리 관리를 구현합니다. 장치 드라이버는 윈도우의 드라이버와 마찬가지로 하드웨어와 소프트웨어 사이를 연결해 주는 인터페이스를 제공합니다. 파일서브시스템은 하드디스크와 같은 저장 공간에 유닉스의 파일을 저장하고 읽어 들이는 역할을 한다.

리눅스/유닉스에 대한 이해 리눅스/유닉스 구조 셀 개념 응용 프로그램에서 명령을 받아 커널에 전송하는 역할, 사용자의 키보드 입력 인식 해당 프로그램을 수행 셀(Shell)의 종류 본 셀(Bourne Shell), 콘 셀(Korn Shell), C 셀(C Shell) 셀이 제공하는 주요 기능 자체의 내장 명령어 제공 입력/출력/오류의 방향 변경(redirection) 와일드카드(wildcard) 파이프라인 조건부/무조건 부 명령 열 작성 서브 셸 생성 백그라운드 처리(Background processing) 셸 스크립트(프로그램) 작성 커널과 함께 유닉스의 중요한 요소로는 셀이 있습니다. 윈도우는 기본적으로 GUI환경이며, 명령프롬프트의 기능이 제한적이어서 모든 것을 실행할 수 없으나 유닉스는 GUI환경을 지원하면서 셀의 기능 역시 막강하다. 따라서 유닉스를 해킹했다고 말하는 것은 관리자 권한의 셀을 얻어냈다는 의미를 뜻합니다. 셀은 링 구조에서도 확인할 수 있듯이 프로그램으로부터 명령을 받아 커널에 전송하는 역할을 하며, 사용자의 키보드 입력을 인식하고 해당 프로그램을 수행하기도 합니다. 셀의 종류는 크게 본셀 콘셀 C셀로 나눌 수 있고 셀이 제공하는 주요기능 중에는 자체의 내장 명령어 제공, 입력/출력/오류의 방향변경, 와일드카드, 파이프라인,조건부/무조건부 명령 열 작성, 서브 셀 생성, 백그라운드 처리, 셀 스크립트 작성이 있습니다.

리눅스/유닉스에 대한 이해 리눅스/유닉스 구조 리눅스/유닉스의 파일 시스템 일반 파일 : 데이터 파일이나 실행 디렉터리 : 유닉스에서는 디렉터리도 파일에 해당, 디렉터리가 담고 있는 여러 파일과 하위 디렉터리 정보가 담겨 있다. 특수 파일 : 프린터나 터미널, 테이프 드라이버 같은 물리적인 장치를 특수 파일을 통해 접근, 특수 파일은 /dev(device)에 있다. 파이프 파일 : | 문자를 말하며, 2개의 명령을 연결 시 사용, 임시 파일 이 생성 되었다가 명령 수행을 마치면 사라지는 것으로, 이 파일을 파 이프 파일이라고 함 유닉스에서 사용하는 파일은 크게 네 가지로 나눠지는데 우선 ,일반 파일은 일반적으로 생각하는 데이터 파일이나 실행파일로 반드시 하나의 디렉터리 안에 포함되어 있어야 합니다. 그리고 디렉터리를 생각할 수 있습니다. 유닉스에서는 디렉터리 역시 하나의 파일에 해당되며 디렉터리 파일에는 디렉터리가 담고 있는 여러 파일과 서브 디렉터리 정보가 담겨져 있습니다. 그리고 유닉스에서는 물리적인 특정 장치들을 특수한 파일을 통해서 접근하는데 이를 간단히 특수 파일이라고 합니다. 이러한 특수파일은 /device라는 경로안에 있는데 (칠판에쓰면서) 예를 들어 사운드카드에 대한 파일은 /dev/audio다. 이 파일에 사운드 파일을 입력식으로 넣어주면 운영체제에서 소리가 난다. 마지막으로 파이프 파일이 있는데, 파이프란 ‘I’ 문자를 말한다. I문자는 두 개의 명령을 연결해서 사용할 때 쓰는데 이때 임시 파일이 생성되었다가 명령이 수행되고 끝나면 사라진다. 이때 생성되는 임시 파일을 파이프 파일이라고 한다. 유닉스의 디렉터리 구조를 살펴보면 일반적으로 그림과 같은 트리 구조를 갖는다. 각 디렉터리는 특정한 역할을 하는 프로그램의 집합으로 되어 있다.

Part01. 시스템 해킹을 위한 기초 지식 Chapter02. 80X86시스템에 대한 이해

80X86시스템 CPU의 구조와 레지스터 80×86 시스템 CPU의 구조 8086시스템의 기본 구조는 그림과 같고 각 구성요소를 살펴보도록 하겠습니다.

80X86시스템 CPU의 구조와 레지스터 80×86 시스템 CPU의 구조 연산장치 [표 2-2] 연산 장치의 구성 요소 구성 요소 기능 내부 장치 가산기(Adder) 덧셈 연산 수행 보수기(Complementer) 뺄셈 연산 수행. 1의 보수나 2의 보수 방식 이용 시프터(Shifter) 비트를 오른쪽이나 왼쪽으로 이동하여 나눗셈과 곱셈 연산 수행 관련 레지 스터 누산기(Accumulator) 연산의 중간 결과 저장 데이터 레지스터 (Data Register) 연산에 사용할 데이터 저장 상태 레지스터(Status Register) 연산 실행 결과로 나타나는 양수와 음수, 자리올림, 오버 플로우의 상태 기억 연산장치는 CPU의 핵심 부분 중 하나로, 산술과 논리 연산을 수행하는 연산 회로 집합으로 구성된다.

80X86시스템 CPU의 구조와 레지스터 80×86 시스템 CPU의 구조 제어장치 제어장치는 입력, 출력, 기억, 연산 장치를 제어하고 감시, 주기억장치 에 저장된 명령을 차례로 해독하여 연산 장치로 보내 처리되도록 지시 [표 2-3] 제어 장치의 구성 요소 구성 요소 기능 내부 장치 명령 해독기(Instruction Decoder) 명령 레지스터에 있는 명령을 해독하여 부호기로 전송 부호기(Decoder) 명령 해독기가 전송한 명령을 신호로 만들어 각 장치 전송 주소 해독기 (Address Decoder) 명령 레지스터에 있는 주소를 해독하여 메모 리의 실제주소로 변환한 후, 이를 데이터 레 지스터에 저장 관련 레지 스터 프로그램 카운터(Program Counter) 다음에 실행할 명령의 주소 저장 명령(Instruction) 레지스터 현재 실행 중인 명령 저장 메모리 주소(Memory Address) 레지스터 주기억 장치의 번지 저장 메모리 버퍼(Memory Buffer) 레지스터 메모리 주소 레지스터에 저장된 주소의 실제 내용 저장 제어 장치는 입력, 출력, 기억, 연산장치를 제어하고 감시하며, 주기억 장치에 저장된 명령을 차례로 해독하여 연산 장치로 보내 처리되도록 지시한다.

80X86시스템 CPU의 구조와 레지스터 레지스터의 종류와 기능 레지스터 범용레지스터 연산 장치가 수행한 계산 결과의 임시 저장, 산술 및 논리 연산, 주소 색인 등의 목적으로 사 용될 수 있는 레지스터 EAX, EBX, ECX, EDX등. EAX, EBX, ECX, EDX는 32비트 레지스터로 앞의 E는‘확장된(Extended)’을 의미. 이 레지스터의 오른쪽 16비트를 각각 AX, BX, CX, DX라 부르고, 이 부분은 다시 둘로 나뉜다. 레지스터는 처리 중인 데이터나 처리 결과를 임시 보관하는 CPU 내의 기억 장치로, 대게 연산 장치나 제어 장치에 함께 포함되어 있습니다. 80286 시스템까지는 CPU가 16비트로 레지스터도 16비트이고 32비트인 80386 시스템에서는 기본적으로 레지스터가 32비트로 8비트나 16비트로 나누어 사용하기도합니다. 80386 이상은 목적에 따라 범용레지스터, 세그먼트 레지스터, 포인터레지스터, 인덱스레지스터, 플래그레지스터로 구분하기도 합니다. 먼저 범용 레지스터는 연산 장치가 수행한 계산 결과의 임시 저장, 산술 및 논리 연산, 주소 색인 등의 여러 목적으로 사용될 수 있는 레지스터로 80386 CPU에서 사용하는 범용 레지스터에는 EAX,EBX,ECX,EDX 등이 있습니다. (칠판에 그림그리며)EAX,EBX,ECX,EDX는 32비트 레지스터로 앞의 E는 확장된을 의미하며 이 레지스터의 오른쪽 16비트를 각각 AX, BX,CX,DX라 부르고, 이부분은 다시 둘로 나뉩니다. 예를 들어 AX는 왼쪽 8비트 상위부분을 AH, 오른쪽 8비트 하위 부분을 AL이라고 합니다. 다른 레지스터도 마찬가지로 이와같이 나뉩니다.

80X86시스템 CPU의 구조와 레지스터 레지스터의 종류와 기능 세그먼트 레지스터 : 프로그램에 정의된 메모리상의 특정 영역 코드, 데이터, 스택 등 을 포함 CS, DS, SS 3개의 레지스터가 기본 ES, FS, GS 레지스터는 여분 포인트 레지스터 : 프로그램 실행 과정에서 사용되는 주요 메모리 주소 값을 저장 EBP, ESP, EIP가 있다. 인덱스 레지스터 : 데이터를 복사할 때 출발지와 목적지 주소를 각각 가리키는데 사 용. EDI와 ESI가 있으며 오른쪽 16비트를 각각 DI, SI라 한다. 플래그 레지스터 : 32비트로, 컴퓨터의 다양한 상태를 나타내는 비트 포함. 상태 플래그, 제어 플래그, 시스템 플래그로 구성 세그먼트는 프로그램에 정의된 메모리상의 특정영역으로 코드, 데이터, 스택 등을 포함하며, 메모리의 대부분에 위치할 수 있고 실제모드에서는 최대 64KB크기까지 저장이 가능합니다. 세그먼트 레지스터는 각각의 세그먼트에 대한 주소를 지정합니다. CS,DS,SS 3개의 레지스터가 기본적으로 사용되며, ES, FS, GS레지스터는 여분으로 프로그램의 크기나 필요에 따라 사용될 수 있습니다. 포인터 레지스터는 프로그램 실행 과정에서 사용되는 주요 메모리 주소 값을 저장하며 EBP,ESP, EIP가 있습니다. 인덱스 레지스터는 데이터를 복사할 때 출발지와 목적지 주소를 각각 가리키는데 사용하며 EDI와 ESI가 있으며 오른쪽 16비트를 각각 DI, SI라 합니다. 플래그 레지스터는 크기가 32비트로 컴퓨터의 다양한 상태를 나타내는 비트를 포함하며 상태플래그, 제어플래그, 시스템플래그로 구성되어있습니다.

80X86시스템 CPU의 구조와 레지스터 메모리 기본 구조 8086 시스템의 메모리는 그림과 같이 스택, 힙, 데이터세그먼트 , BSS세그먼트, 텍스트 세그먼트로 구성되어 있습니다.

80X86시스템 CPU의 구조와 레지스터 메모리의 기본 구조 스택 힙 데이터 세그먼트 BSS 세그먼트 텍스트 세그먼트 후입선출(LIFO : Last-In, First Out) 방식에 의해 정보를 관리. Top이라고 불리는 스택의 끝부분에서 데이터의 삽입과 삭제가 발생. 가장 나중에 삽입된 정보가 가장 먼저 읽힘 힙 프로그램의 실행 중 필요한 기억 장소를 할당하기 위해 운영체제에 예약되어 있는 기억 장소 영역 데이터를 저장하기 위해 기억 장소를 요청하면 운영체제는 힙에 존재하는 기억 장소를 프로그램에 할당 기억 장치가 더 이상 필요 없으면 할당 받았던 기억 장소를 운영체제에 반납, 운영체제에서는 반납된 기 억 장소를 다시 힙에 돌려줌 힙에 대한 기억 장소는 포인터를 통해 동적으로 할당되거나 반환 연결 리스트, 트리, 그래프처럼 동적인 특성이 있는 데이터 구조에서 널리 사용 데이터 세그먼트 초기화된 외부 변수나 static 변수 등이 저장되는 영역 보통 텍스트 세그먼트(Text segment)와 데이터 세그먼트 영역을 합쳐 프로그램이라 한다. BSS 세그먼트 초기화 되지 않은 데이터 세그먼트(Uninitialized data segment)라 불리기도 한다. 프로그램이 실행될 때 0이나 NULL 포인터로 초기화 외부 변수나 static 변수 중 초기화 되지 않은 변수들이 정의될 때 저장 텍스트 세그먼트 초CPU에 의해 실행되는 머신 코드가 있는 영역 컴퓨터 메모리상의 스택은 함수내에서 정의되는데, 함수종료와 동시에 사라지는 자동변수가 저장되고 함수가 호출될 때 함수 내 로컬 변수 등이 저장되는 곳입니다. 스택에 저장된 로컬 변수는 함수가 실행되는 동안만 존재하며 함수 실행이 종료되면 해당 변수들도 사라집니다. ESP가 스택의 가장 상단을 가리킵니다. 힙은 프로그램이 실행될 때 까지 미리 알 수 없는 가변적인 양의 데이터를 저장하기 위해, 프로그램의 프로세스가 사용할 수 있도록 예약되어 있는 메인 메모리의 영역이며 프로그램들에 의해 할당되었다가 회수되는 작용이 되풀이되는 영역입니다. 힙은 프로그램들이 요구하는 블록의 크기나 요구와횟수순서에 일정한 규칙이 없고 힙의 기억장소는 대개 포인터 변수를통해 동적으로 할당받고 돌려줍니다. 프로그램에서 new나 malloc()함수를 이용해 메모리를 동적으로 할당하여 힙 영역을 사용 할 수 있습니다. 데이터 세그먼트는 초기화된 데이터세그먼트라고도 불리며 초기화된 외부 변수나 스태틱 변수 등이 저장되는 영역입니다. 보통 텍스트 세그먼트와 데이터 세그먼트 영역을 합쳐 프로그램이라 합니다. BSS 세그먼트는 초기화되지 않은 세그먼트라고도 불리며 프로그램이 실행될 때 0이나 NULL 포인터로 초기화되는 영역입니다. 외부변수나 스태틱 변수 중 초기화되지 않은 변수들이 정의될 때 저장되는 영역입니다. 텍스트 세그먼트는 CPU에 의해 실행되는 머신 코드가 있는 영역으로 EIP가 다음에 실행하는 명령을 가리키고 있습니다.

80X86시스템 CPU의 구조와 레지스터 메모리 접근 모드와 동작 실제 모드 8086 CPU에서 사용되던 동작 모드. 20비트 주소 버스 사용 위해 16비트 레지스터 사용. 총1MB(220 =1,048,567)의 메모리 사용 가능. 20비트 주소를 나타내기 위해 세그먼트 레지스터를 도입 16비트의 세그먼트 레지스터와 16비트의 오프셋을 중첩시킨 20비트의 물리 주소를 생성 실제모드는 8086 CPU에서 사용되던 동작모드로 실제모드는 20비트 주소 버스를 사용하기 위해 16비트 레지스터를 사용했으며, 총 1MB의 메모리 사요잉 가능했습니다. 그리고 20비트 주소를 나타내기 위해 세그먼트 레지스터를 도입하여 그림과 같이 16비트의 세그먼트 레지스터와 16비트의 오프셋을 중첩시킨 20비트의 물리 주소를 만들어 냈습니다. 실제모드는 16비트 CPU뿐만 아니라 80386 이상의 CPU에서도 지원되며 모든 프로그램이 처음 시작될 때는 실제 모드에서 동작합니다.

80X86시스템 CPU의 구조와 레지스터 메모리 접근 모드와 동작 보호 모드 32비트 주소 버스를 통해 4GB의 메모리를 사용 가능 메모리 보호 기능과 페이징(Paging) 등 을 통해 가상 메모리를 효율적으로 구현 세그먼테이션(Segmentation)과 페이징 이용 메모리 관리. 세그먼테이션은 4GB의 메모리를 세그먼트 단위로 쪼갠 것으로, 여기서는 16비 트의 셀렉터와 32비트의 오프셋을 이용해 4GB 범위의 32비트 선형 주소(linear address)를 만듬. 80286부터 도입된 보호 모드는 32비트 CPU 80386에 이르러 완성된모습을 보였습니다. 보호모드에서는 32비트 주소 버스를 통해 4GB의 메모리를 사용할 수 있으며, 메모리 보호 기능과 페이징 등을 통해 가상 메모리를 효율적으로 구현할 수 있습니다. 보호모드에서는 세그먼테이션과 페이징을 이용해 메모리를 관리합니다. 세그먼테이션은 4GB의 메모리를 세그먼트 단위로 쪼갠것으로, 여기서는 16비트의 셀렉터와 32비트의 오프셋을 이용해 4GB 범위의 32비트 선형 주소를 만듭니다. 이렇게 만들어진 선형주소는 그림과 같이 페이징을 통해 물리 주소로 변환합니다.

Part01. 시스템 해킹을 위한 기초 지식 Chapter03. 계정과 권한

리눅스/유닉스의 계정과 권한 로그인 시스템 해킹 리눅스 시스템의 계정과 권한 체계 계정 아이디와 패스워드로 자신이 누군지 밝히고, 그에 따른 권한을 부여 받아 시스템에 대한 접근을 허가 받는 과정 시스템 해킹 부여 받은 일반 사용자 권한 이상의 권한을 획득하는 절차 리눅스 시스템의 계정과 권한 체계 매우 단순하여, root라고 불리는 관리자와 일반 사용자 계정만 있음 계정 목록을 /etc/passwd 파일에 저장 vi /etc/passwd 로그인이란 계정 아이디와 패스워드로 자신이 누군지 밝히고 그에 따른 권한을 부여받아 시스템에 대한 접근을 허가받는 과정을 말합니다. 일반적으로 개인 PC에 로그인하면 관리자권한을 부여받지만 여러 사람이 함께 사용하는 시스템의 경우에는 주로 제한된 권한을 갖는 일반 사용자 권한을 받는데 시스템해킹은 이렇게 부여받은 일반 사용자 권한 이상의 권한을 획득하는 절차라고 볼 수 있습니다. 기본적으로 리눅스 시스템의 계정과 권한 체계는 매우 단순하여, root라고 불리는 관리자와 일반 사용자 계정만 있다고 생각할수있으며 리눅스 시스템에서는 계정 목록을 (/etc/passwd 가리키며) 이 파일에 저장하고 있습니다. 표시한 라인을 살펴보도록 하겠습니다.

리눅스/유닉스의 계정과 권한 /etc/passwd 파일 내용 ➊ 사용자 계정을 나타낸다. ➋ 패스워드가 암호화되어 shadow 파일에 저장되어 있음을 나타낸다. ➌ 사용자 번호(UID, User ID)다. ➍ 그룹 번호(GID, Group ID)다. ➎ 사용자의 이름이다. 시스템 설정에 별다른 영향이 없는 설정으로 자신의 이름을 입력해도 된다. ➏ 사용자의 홈 디렉터리를 설정한다. 관리자이므로 홈 디렉터리가 /root다. 일반 사용자는 /home/wishfree와 같이 /home 디렉터리 하위에 위치한다. ➐ 사용자의 셸을 정의한다. 기본 설정은bash 셸로 자신이 사용하는 셸을 이곳에 정의하면 된다. 리눅스에서 관리자는 UID를 0번으로 부여 받고 일반 사용자는 그 외의 번호를 부여 받 는데 보통 500번 이상을 부여 root : x : 0 : 0 : root : /root : /bin/bash ➊ ➋ ➌ ➍ ➎ ➏ ➐ 첫 번째 root는 사용자 계정을 나타내고 두 번째x는 패스워드가 암호화 되어 shadow파일에 저장되어있음을 나타냅니다. 세 번째0과 네 번째0은 사용자번호UID와 그룹번호GID입니다. 다섯 번째는 사용자의 이름이며 여섯 번째 는 사용자의 홈 디렉터리를 설정하고 일곱 번째는 사용자 셀을 정의합니다.여기서 UID와 GID는 리눅스에서 권한 수준을 결정하는 가장 결정적인 항목으로 사용자ID에 관계없이 리눅스에서의 권한은 이 UID와 GID로 결정되기 때문입니다. 리눅스에서 관리자는 UID를 0번으로 부여 받고 일반 사용자는 그 외의 번호를 부여 받는데 보통 500번 이상을 부여 받습니다. GID도 관리자그룹은 0번, 일반 사용자 그룹은 그 외의 번호를 부여 받습니다. 사용자 번호는 중복되어 사용될 수 있으며 동일한 사용자 번호를 가지고 있으면 계정의 ID가 달라도 동일한 권한을 부여받습니다.

리눅스/유닉스의 계정과 권한 [그림 3-2] /etc 디렉터리의 파일 목록 ➊ 파일에 대한 접근 권한을 표현 리눅스는 관리자와 사용자 계정에 대한 권한 체계가 비교적 명확합니다. 먼저 리눅스에서 파일에 대해 접근 권한을 적용하는 규칙을 설명하자면 이 규칙은 어떤 리눅스라도 동일하며 로컬에서 일어나는 모든 해킹과 밀접한 관련이있다. (그림을 가리키며) 이것은 파일과 디렉터리 목록 조회 명령인 ls-al을 실행하여 리눅스에서 /etc 디렉터리의 파일목록을 조회한 결과인데 리눅스에서 접근권한과 관련 있는 부분은 네 곳이 있습니다. 첫 번째 이 부분은 파일에 대한 접근 권한을 표현하고 두 번째 숫자들은 해당 파일에 링크되어 있는 파일의 개수를 표시한 것입니다. 세 번째는 보통 해당 파일을 생성한 계정이지만 파일 생성자 또는 관리자가 임의로 바꿀 수 있으며 네 번째는 위와 마찬가지로 보통 해당 파일을 생성한 계정이 속해 있는 그룹이나, 파일 생성자 또는 관리자가 임의로 바꿀 수 있습니다. 초록색 박스로 표시된 부분을 자세히 보도록하겠습니다. [그림 3-2] /etc 디렉터리의 파일 목록 ➊ 파일에 대한 접근 권한을 표현 ➋ 해당 파일에 링크(Link)되어 있는 파일의 개수를 표시 ➌ 보통 해당 파일을 생성한 계정이지만, 파일 생성자 또는 관리자가 수정 가능 ➍ 생성한 계정이 속한 그룹이나 파일 생성자 또는 관리자가 보통 해당 파일을 수정 가능

리눅스/유닉스의 계정과 권한 [표 3-1] 파일의 종류에 대한 속성 drwxr-xr-x 2 root root 4096 Nov 10 17:26 alternatives 파일 속성 파일 소유자 권한 그룹 권한 일반(Others) 권한 d rwx r-x [표 3-1] 파일의 종류에 대한 속성 문자 파일 속성 d 디렉터리 파일(Dirctory File) - 일반 정규 파일(Regular File) l 링크되어 있는 파일(Symbolic Link File) c 버퍼에 저장되지 않은 특수 파일(Character File). 예) 터미널 b 버퍼링된 특수 파일(Block File). 예) 디스크 드라이브 s 소켓 기능을 하는 파일(Socket File) p 파이프 기능을 수행하는 파일(Pipe File) 이 디렉터리의 권한이 drwxr-xr-x로 표시되어있고, 링크 값은 2로 되어있습니다. 이 값이 1인 경우에는 자기 자신을 나타냅니다. 접근 권한을 표시한 drwxr-xr-x부분은 크게 네 부분으로 다시 나눌 수 있는데 첫 글자 d는 파일 속성이 디렉터리임을 나타냅니다. D이외에도 리눅스에 존재하는 파일속성은 하이픈, l, c, b, s, p가 있습니다. 파일 속성 다음에 바로 이어지는 문자 9개가 실질적인 권한의 정의인데 처음의 rwx는 파일의 소유자에 대한 접근 권한, 다음의 r-x는 소유 그룹에 대한 접근 권한, 마지막 r-x는 파일과 아무런 관련이 없는 이들에 대한 접근 권한을 나타냅니다.

리눅스/유닉스의 계정과 권한 rwx의 r, w, x는 각각 읽기(Read), 쓰기(Write), 실행하기 (execution)를 의미 r : 4(2진수 100) w : 2(2진수 10) x : 1(2진수 1) rwx는 각각의 숫자 r(4) + w(2) + x(1)를 더한 수 7(2진수 111) 로 읽음 rwxrwxrwx는 파일의 소유자, 그룹, 관련이 없는 이들 모두가 파일을 읽고, 쓰고, 실행할 수 있으며, 권한을 777이라고 읽음 접근 권한이 rwxr-xr-x인 경우 755로 읽음 Rwx의 r,w,x,는 각각 read 읽기, write 쓰기, executie 실행하기를 의미하고 r은4, w는 2, x는1 각각의 고유한 숫자로 표기할 수 있습니다. 따라서 rwx는 각각의 숫자 421를 더한 수 7진수로 읽습니다. 접근 권한이 Rwxrwxrwx의 경우 파일의 소유자, 그룹, 관련이 없는 이들 모두가 파일을 읽고, 쓰고, 실행 시킬 수 있으며, 권한을 777이라고 읽습니다. 접근 권한이 rwxr-xr-x 인 경우에는 접근 권한을 755라고 읽습니다. 이것은 파일의 소유자, 그룹, 관련이 없는 이들 모두 파일을 읽고 실행할 수 있지만, 파일에 쓰거나 변경할 수 있는 이는 파일의 소유자뿐임을 말합니다.

윈도우의 계정과 권한 체계 윈도우사용자 확인 : [제어판]→[컴퓨터 관리]의 [로컬 사용자 및 그룹] 윈도우사용자 확인 : [제어판]→[컴퓨터 관리]의 [로컬 사용자 및 그룹] [그림 3-23] 윈도우 사용자 확인 윈도우의 계정과 권한체계도 리눅스처럼 기본적으로 관리자와 일반사용자로 나누어집니다. 그러나 윈도우의 경우에는 좀 더 세분화 되어있다. 윈도우에 생성되어있는 사용자는 제어판 로컬사용자 및 그룹에서 확인할수 있는데 같이 한번 확인해보도록하겠습니다. [제어판]ㅡ[관리도구]-[로컬사용자및그룹] PC에 존재하는 계정을 살펴보면 관리자 계정인 Administrator 계정과 guest계정 등이 있고 윈도우의 계정 목록에서는 확인되지 않지만, administrator계정보다 상위 권한을 가진 SYSTEM계정이 있습니다.

윈도우의 계정과 권한 체계 [표3-2] 윈도우 기본 사용자 [표3-3] 윈도우 기본 그룹 계정 이름 설명 Administrator 관리자 권한의 계정으로, 사용자가 사용 가능한 계정 중 가장 강력한 권한을 가진다. SYSTEM 시스템에서 최고 권한을 가진 계정으로 로컬에서 관리자보다 상위 권한을 가진다. 원격 접속이 불가능하며, 사용자가 이 계정을 사용하여 시스템에 로그인할 수 없다. Guest 매우 제한적인 권한을 가진 계정으로, 기본 설정은 사용 불능이다. [표3-2] 윈도우 기본 사용자 그룹 이름 설명 Administrators 도메인 자원이나 로컬 컴퓨터에 대한 모든 권한이 있다. Account Operators 사용자나 그룹 계정을 관리하는 그룹이다. Backup Operators 시스템 백업을 위해서 모든 시스템의 파일과 디렉터리에 접근할 수 있다. Guests 도메인 사용 권한이 제한된 그룹으로 시스템의 설정 변경 권한이 없다. Print Operators 도메인 프린터에 접근할 수 있다. Power Users 디렉터리나 네트워크 공유, 공용 프로그램 그룹 생성, 컴퓨터의 시계 설정 권한이 있다. Replicator 도메인에 있는 파일을 복제할 수 있는 권한을 가지고 있는 그룹이며, 디렉터리 복사 서비스에 이용된다. Server Operators 도메인의 서버를 관리할 수 있는 권한을 가진 그룹으로 로컬 로그온과 시스템 재시작 및 종료 권한이 있다. Users 도메인과 로컬 컴퓨터를 일반적으로 사용하는 그룹이다. 개개인에 할당된 사용자 환경을 직접 만들 수 있지만 설정할 수 있는 항목에는 한계가 있다. 시스템 서비스의 시작 및 종료 권한이 없으며, 디렉터리 공유 설정을 할 수 없다. 윈도우를 설치할 때 기본적으로 생성되는 계정과 그룹들입니다. 표에서 확인할 수 있듯이 윈도우에는 각 계정의 역할에 따라 기본 그룹이 설정되어 있습니다. [표3-3] 윈도우 기본 그룹

윈도우의 계정과 권한 체계 SID(Security Identifier) : 계정을 하나의 코드 값으로 표시한 값 WMIC useraccount list brief 윈도우에서 계정을 하나의 코드 값으로 표시한 것이 있는데, 그것은 SID 입니다. 윈도우 7 에서는 WMIC를 실행시켜 SID를 알아볼수있는데 한번 실행해보도록하겠습니다. 실행시키면 SID를 볼수있는데 관리자계정인 Administrator 계정의 SID를 자세히보도록 하겠습니다.

윈도우의 계정과 권한 체계 ➊ 해당 시스템이 윈도우 시스템임을 말한다. ➋ 시스템이 도메인 컨트롤러이거나 단독 시스템(Stand alone system)임을 표시 ➌ 시스템의 고유한 숫자로, 시스템을 설치할 때 시스템의 특성을 수집하여 생성 ➍ 숫자로 표현되는 각 사용자의 고유한 ID다. 관리자(Administrator)는 500번, Guest 계정은 501번, 일반 사용자는 1000번 이상의 숫자를 갖는다. S-1-5-21-1296151590-2140579736-3966732766-500 ➊ ➋ ➌ ➍ SID에서 첫번째 부분은 해당 시스템이 윈도우 시스템임을 말합니다. 두번째는 시스템이 도메인 컨트롤러이거나 단독 시스템임을 표시하고 세번쨰는 시스템의 고유숫자로 시스템을 설치할 때 시스템의 특성을 수집하여 생성합니다 그리고 네번째는 숫자로 표현되는 각 사용자의 고유한 ID로 관리자는 500번, 게스트계정은 501번 일반사용자는 1000번이상의 숫자를 갖습니다. 이 SID는 로컬에서만 사용하는 것이 아닙니다. 시스템 A에서 시스템B로 administrator계정이 로그온을 시도할 때, 시스템A의 administrator 계정과 시스템B의 administrator 계정은 분명 다른 것이고 각각의 시스템은 SID를 이용하여 구별합니다.

감사합니다.