-
1장
운영체제 : 사용자가 컴퓨터 시스템을 손쉽게 사용하고, 시스템 자원(기억 장치, 프로세서, 입출력 장치, 정보, 네트워크 등)을 효율적으로 관리할 수 있도록 하는 프로그램 집합
사용자 명령 인터페이스를 기반으로 하여 메모리 관리자, 프로세서 관리자, 파일 관리자, 장치 관리자, 네트워크 관리자로 구성
서브 시스템 관리자
- 메모리 관리자
- 프로세서 관리자
- 장치 관리자
- 파일 관리자
- 네트워크 관리자
윈도우의 관리자
- 입출력 관리자
- 객체 관리자
- 보안 참조 관리자
- 프로세스 관리자
- 로컬 프로시저 호출 관리자
- 가상 메모리 관리자
- 그래픽 장치 관리자
- 기타 관리자
윈도우의 파일시스템
FAT : 2GB까지 파티션 설정 가능, 기본 크기 16bit
FAT32 : 32bit 개의 클러스터
NTFS : 사용권한 설정가능, 암호화 가능, 감사기능 제공, 64bit
윈도우의 부팅순서(XP/2000/2003)
1) POST 실행
2) 기본 부팅 관련 설정사항 로드
3) MBR 로드
4) NTLDR 실행
5) NTDETECT.com 실행
6) ntoskrnl.exe 실행
윈도우의 부팅순서(vista/2008/7)
1) POST 실행
2) 기본 부팅 관련 설정사항 로드
3) MBR 로드
4) 윈도우 부트 서브 시스템 실행
5) 윈도우 OS 로더 실행
리눅스/유닉스의 구조
- 모놀리식 커널
- 마이크로 커널
커널의 파일 크기가 윈도우의 1/3 정도
셸 : 응용 프로그램에서 명령을 받아 커널에 전송하는 역할
리눅스/유닉스의 부팅순서
1) POST 실행
2) 기본 부팅 관련 설정사항 로드
3) MBR 로드
4) 부트로더 실행 (LILO/GRUB)
5) 실행 레벨에 따른 서비스 실행
2장
연산 장치 : 산술과 논리 연산을 수행하는 연산 회로 집합으로 구성된다.
제어 장치 : 입력, 출력, 기억, 연산 장치를 제어하고 감시하며, 주기억 장치에 저장된 명령을 차례로 해독하여 연산 장치로 보내 처리되도록 지시
레지스터 : 처리중인 데이터나 처리 결과를 임시 보관하는 CPU 내의 기억 장치로, 대개 연산장치나 제어 장치에 함께 포함
- Win32 API 함수들은 모두 리턴 값을 EAX에 저장한 후 리턴한다.
상태 플래그
- CF(Carry Flag) : 산술 연산 결과로 자리올림이나 자리내림이 발생할 때 세트된다(1).
- ZF(Zero Flag) : 산술 연산 결과가 0이면 세트되고(1), 이외에는 클리어된다(0).
- OF(Overflow Flag) : 부호가 있는 수의 오버플로우가 발생하거나, MSB(Most Significant Bit)가 변경되었을 때 세트된다(1).
스택 : 후입선출(LIFO), 스택에 저장된 로컬 변수는 함수가 실행되는 동안만 존재하며 함수 실행이 종료되면 해당 변수들도 사라진다.
힙 : 힙에 대한 기억장소는 포인터를 통해 동적으로 할당되거나 반환되면 연결 리스트, 트리, 그래프처럼 동적인 특성이 있는 데이터 구조에서 널리 사용된다.
프로그램 실행 중 해당 힙이 없어지면 메모리 부족으로 이상 종료를 하게 된다.
3장
SetUID와 SetGID의 동작원리 : SetUID나 SetGID가 설정되어 있는 파일 실행시, 파일의 소유자 및 그룹 소유자의 권한으로 실행된다.
윈도우의 권한 상승 : 상위 권한으로 수행되고 있는 프로그램의 프로세스에 다른 작업 끼워넣기
윈도우 SID 구조 : 숫자로 표현되는 각 사용자별 고유한 ID. 관리자는 500번 Guest는 501번, 일반사용자는 1000번 이상
4장
LSA : 모든 계정의 로그인에 대한 검증을 하고, 시스템 자원 및 파일 등에 대한 접근 권한을 검사한다.
SAM : 사용자/그룹 계정 정보에 대한 데이터베이스를 관리한다. 사용자의 로그인 입력 정보와 SAM 데이터베이스 정보를 비교해 인증 여부를 결정하도록 해준다.
(%systemroot%system32/config/sam)
SRM : 사용자의 계정과 패스워드가 일치하는 사용자에게 고유의 SID를 부여한다. 또한 파일이나 디렉터리에 대한 접근의 허용여부를 결정하고 이에 대한 감사 메시지를 생성한다.
5장
패킹 : 원본 프로그램을 새로운 PE 파일에 패킹된 형태로 압축하고 암호화하여 저장하는 기술 (패킹된 프로그램을 분석하려면 언패킹한 후 분석해야함)
안티 디버깅 : 디버거의 활동을 여러 가지 방법으로 탐지하여 프로그램을 강제 종료
타이밍 체크 : RDTSC 명령을 써서 타임 스탬프 값을 비교하여 시간이 많이 걸리는 특정 구간을 디버깅 중으로 판단하여 프로그램이나 디버거를 종료
쓰레기 코드 넣기와 코드 치환 : 코드 사이에 의미 없는 쓰레기 코드를 넣고, 다단계의 점프문을 섞어 코드를 치환하여 배치하는 방법
'운영체제보안' 카테고리의 다른 글
윈도우 인증과 패스워드 (0) 2016.04.10 권한상승 (0) 2016.04.10