시스템 개요
시스템
: 여러 구성 요소들이 체계적으로 상호작용하도록 얽힌 집합체. 컴퓨터 or 시스템으로 언급
<처리 방식 기준>
아날로그
- 물리적(증기, 석탄, 전기) 기계 동작의 상호작용으로 작업 처리하는 컴퓨터
하이브리드
- "전기" 신호 받아 물리적 기계 동작으로 작업 처리하는 컴퓨터
디지털 컴퓨터
- 전기 신호를 0과 1 디지털로 변경해 작업 처리하는 컴퓨터
< 처리 규모 기준 >
스마트폰
- 기존 모바일 기기와 개인용 컴퓨터 결합
- 최초 아이폰 2007년에 시작, 전성기는 2010년에 시작
마이크로 컴퓨터
- 대표적으로 IoT(라즈베리 파이, 아두이노)
슈퍼 컴퓨터
- 과학기술연산을 위해 특별히 제작된 고성능, 고용량 컴퓨터
< 시스템 구조(Architecture) >
구조 : 시스템이 동작하는 구조 ( 입력 > 처리 > 출력 )
입력(Input) - 키보드, 마우스
출력(Output) - 모니터, 스피커
CPU - RAM(Memory) - Disk(HDD, SSD)
RAM(Random Access Memory : 임의접근 메모리) - 주기억장치(휘발성)
ROM(Read-Only Memory)
Disk - 보조기억장치(비휘발성)
- exe, ext, pdf, pptx -> 프로그램(코드) ==(활성화)==> 프로세스
- 프로세스 : 디스크 안에 있는 프로그램 동작 시키기 위해 그 프로그램 코드의 일부가 메모리로 적재된 것. RAM에서 버스를 통해 CPU로 연산 보내고(전체가 아니라 잘라서) 중앙처리장치가 연산해서 그 결과 값을 다시 반환해줌. 이러한 동작의 최소 단위가 스레드(Thread)
- 4GHz : 클럭?
CPU - 중앙처리장치
- ALU - 연산
폰 노이만의 시스템 구조
- 5개의 구성요소 가짐
- 입/출력 유닛
- 산술 논리 유닛 : 덧셈, 뺄셈, 곱셈, 나눗셈 수행하는 유닛
- 제어 유닛
- 메모리 : 프로그램의 시작과 데이터의 기억을 담당 현재의 RAM 역할을 수행
< 폰 노이만 구조의 CPU >
- 산술 논리 유닛(ALU)
- 제어 유닛(CU)
- 캐시
- 레지스터 : 연산값, 결과값
-- 프로그램 계수기(PC)
-- 메모리 주소 레지스터(MAR)
-- 메모리 데이터 레지스터(MDR)
-- 계수기(ACC)
레지스트 관련 참고 : https://pearlluck.tistory.com/120
하버드의 시스템 구조
- 폰 노이만 구조 변형
-- 병목현상 해결하기 위한 구조
-- 데이터와 명령의 메모리 구조 분리
-- 속도적 성능이 우수
컴퓨터 하드웨어
노스브릿지
- CPU - 중앙처리 장치
- 연산하기 위한 값과 연산결과 기억하는 레지스터
- 이러한 기억에 의존해 연산하는 ALU
- 명령 해석하고 제어하는 CU
- 최신 CPU는 자체적으로 Graphics Processor를 가짐
- RAM - 물리 메모리
- 임의 접근 메모리(Random Access Memory)라고 부르기도 함
- 임의는 무작위가 아니라 "임의"의 의미
- 메모리 어느 부분에 접근하든 동일 시간으로 접근 가능함
- CPU와 물리적으로 위치가 가까움
- 대부분 시스템은 폰 노이만 구조 따름
- 프로그램 운영시 메모리에 적재될 수 밖에 없는 구조를 가지고 있음
- 시스템 운영과 관련된 대부분 내용은 메모리에서 찾을 수 있다.
- 메모리 분석이 쉽지는 않음
- 프로그램 운영시 메모리에 적재될 수 밖에 없는 구조를 가지고 있음
- GPU - 그래픽 카드
- 고성능 그래픽 처리 위한 요소
- GPU만을 위한 메모리가 존재함(악성코드를 심을 수도 있음)
사우스브릿지
- 몸통 역할
- BIOS, USB, PCI, HDD 등 구성요소 가짐
- BIOS(Basic Input/Output System)
- 기본 입/출력 장치
- 펌웨어의 일종
- ROM(비휘발성)에 있음
- 하드웨어가 추가되거나 변경된 정보를 소프트웨어에서 처리할 수 있도록 전달하는 기능
- 부팅 절차에 사용
- 하드웨어 찾는 과정은 CMOS가 도와줌
- CMOS는 장치에 관한 정보들이 저장되어 있음 > 리튬 배터리 사용
- USB
- 범용 직렬 버스
- 유형에 따라 A, B, C타입 존재
- 쌍으로 존재함(플러그-잭)
- 윈도우 XP SP2때 autorun 기능으로 악성코드 실행시킬 수 있음
- autorun.inf에서 설정
- SP3부터 이 방식 이용한 공격이 불가능
- USB 이용한 발전한 공격 기술이 존재
- BadUSB - https://github.com/brandonlw/Psychson
- Plug & Play 위한 펌웨어가 존재하기 때문에 가능
- USBKiller - https://usbkill.com/
- BadUSB - https://github.com/brandonlw/Psychson
- SATA
- 직렬 ATA(Serial ATA)를 의미
- 물리적인 하드디스크 연결하기 위한 버스의 한 종류
- 주로 SATA3 이용, 노트북은 mSATA 사용
- 전력 공급 중단 되어도 데이터가 사라지지 않음
- 비활성 데이터로 분류
- 삭제된 파일 복구할 수 있음
메모리 반도체
ROM(Read-Only Memory) : 고정기억 장치 또는 읽기전용 기억기
- 비휘발성 메모리(Non-volatile memory)
- 전원 차단되어도 내용 기억하는 메모리
- 종류
- diode matrix, mask ROM, CD-ROM
- PROM, EPROM
- Falsh Memory
- NOR Flash
- 병렬이라 회로 복잡. 대용량화 어려움. 쓰기 속도 느림
- NAND Flash
- 직렬이라 회로 단순, 대용량화 가능, 읽기 속도 느림
- NOR Flash
- 하드디스크(HDD, Hard Disk Drive)
- 비휘발성, 순차접근, 보조기억장치
- 자기기록 매체
- 자기장 밀도 이용해 0과 1의 디지털로 표현
- 헤더가 자기장 밀도를 측정
- 실린더, 헤더가 지정된 데이터 자리 지나갈때 찾는거
- 속도는 빠르지만 한계가 있다.
- 1섹터 = 512byte
- 2섹터 기준 > 섹터들끼리 묶인것 = 클러스터
- slack : 섹터에 저장할 때 비어있는 부분
- SSD(Solid State Drive)
- 비휘발성, 순차접근, 보조기억장치
- 메모리 반도체
- NAND 플래시 메모리 유형 사용
- 서버용 잘 사용하지 않음
- 데이터 저장에 한계
윈도우 기초
윈도우?
- 마이크로소프트가 개발한 컴퓨터 OS
- MS-DOS(Disk Operating System)에서 멀티태스킹과 GUI 제공하기 위한 프로그램으로 처음 출시
윈도우 탄생
- 1981년 인터페이스 매니저라는 프로그램으로 시작
- 95부터 고객 지향 PC용 운영체제
- 최초의 32bit 아키텍처 운영체제
- 98, ME - FAT32를 기본 파일 시스템으로 채택, DirectX API를 기본 제공
- NT - NTFS 파일시스템 사용, 32bit 응용프로그램용 Win32 API 적용, TCP/IP 네트워킹 지원
- XP
- 2000기반으로 가정용(- 서비스를 제공받는 입장) 사용자 인터페이스 개발
- 루나 인터페이스 제공
- 8 <윈도우 위기>
- 시작 버튼 삭제
- 시스템 일부 프리징 현상
- 백신 프로그램과의 충돌과 호환성 문제 제기
윈도우 NT 아키텍처
- 유저 모드
- 사용자 어플리케이션 코드 실행
- 커널 모드
- 하드웨어의 접근과 보호된 메모리 내에 실행되고 있는 코드와 컴퓨터의 시스템 자원 모두 접근하는 영역
- 스케쥴링, 메모리 관리, 하드웨어와의 상호 작용 등의 역할 수행
- 운영체제 구조마다 커널 이름 다름
- 환경 서브 시스템
- WIN32 환경에 맞는 어플리케이션 운용할 수 있도록 지원
- 필수 서브시스템
- 보안, 워크스테이션 서비스, 서버 서비스로 구성
- Executive
- 모든 사용자 모드 하위 시스템과 상호작용
- I/O Manager : 입출력 제어
- Security Reference Monitor(SRM) : 보안 필수 서브시스템 보안 규칙 시행하기 위한 주요 권한 모니터링
- IPC Manager : 서버 클라이언트 사이의 상호작용 관리 담당
- Virtua Memory Manager : 가상 메모리 관리
- Process Manager : 프로세스 생성 및 관리
- PnP Manager : Plug & Play 기능 관리
- Power Manager : 전원과 관련 이벤트 관리 수행
- 디스플레이 시스템
- Window Manager : 윈도우 화면(창) 그리는 역할 수행
- GDI(Graphic Device Interface) : 폰트 렌더링과 팔레트, 곡선, 직선 등의 라인 그리는 작업 수행
- 커널 모드 드라이버
- 하드웨어 장치와 상호작용 수행할 수 있도록 중간자 역할
- 최상위, 중간, 하위 레벨 드라이버로 구분되어 구성
- Hardware Abstraction Layer(HAL)
- 물리적 하드웨어와 운영체제의 나머지 부분 사이에 위치
- 하드웨어의 기능적인 부분을 운영체제와 호환되도록 한 부분
- 참조 : https://angangmoddi.tistory.com/57
- 물리적 하드웨어와 운영체제의 나머지 부분 사이에 위치
윈도우 부팅 과정(Vista 이후)
Power On | ROM BIOS (Basic I/O System) |
POST (Power On Self Test) |
MBR (Master Boot Record) |
Bootmgr.exe (Boot manager) |
Winload.exe (Boot Loader) |
ntoskrnl.exe |
- Power On
- 외부 전압을 시스템에서 사용 가능한 전압으로 변환해 CPU로 전달
- CPU 레지스터인 Program Counter(PC)를 초기화
- PC - 다음 실행할 명령 주소를 담은 값
- 초기화는 지우거나 0으로 만드는게 아니라 지정하는 것도 포함됨
- 초기화된 Program Counter 값이 ROM BIOS 주소가 됨 (초기화된 PC값 = ROM BIOS값)
- ROM BIOS
- CPU 이상 유무를 확인(테스트)해서 CPU 테스트 결과(반환값)를 ROM BIOS에 저장된 값(정상 결과 값)과 비교
- 일치할 경우 POST 작업 수행
- POST(Power On Self Test)
- System Bus로 특정 시그널 전송
- RTC(Real-Time Clock) 테스트
- 비디오 구성요소(비디오 메모리) 테스트 : 이후 부팅 과정에서 정의된 출력 확인 가능
- RAM, 키보드, 드라이브 테스트
- CMOS(RTC/NVRAM) 데이터와 비교
- POST 과정 완료시
- 부팅 매체(USB, H/D, SSD) 탐색
- 인식한 드라이브 내에서 첫 번째 섹터(MBR) 읽음
- MBR 섹터 마지막 2 바이트 값이 0x55AA(sign)인 매체 찾게 되면 코드 실행
- MBR(Master Boot Record)
- 부트코드, 파티션 테이블 정보, 시그니처 존재
- 코드 실행하는 동안 오류가 발생하는지 확인
- 오류가 없는 경우 부팅 가능한 파티션 탐색
- 탐색 완료되면 해당 파티션 특정 섹터인 VBR(Volume Boot Record)로 이동
- VBR에서 bootmgr.exe 실행
- 하이버네이션(절전 모드) 상태인 경우 winresume.exe 로드
- 하이버네이션 상태 아닌 경우 BCD(Boot Configuration Data) 읽으며 부팅 정보 획득
- 해당 부팅 정보 참조 후에 winload.exe 실행해 제어권 넘김
GPT(GUID Partition Table) 방식
MBR 파티션 테이블의 제한 때문에 하드웨어 용량의 확장을 위해 발전하였다. 메인보드에서 UEFI 부팅이 가능해야 하고, GPT 파티션이 MBR 파티션에 비해 부팅속도가 빠르다고 알려져 있다. 최대 8ZB이하의 디스크를 사용할 수 있으며, 사용자가 최대 128개의 파티션을 만들 수 있습니다. 부팅 USB로 사용하는 GPT는 WINDOWS 64bit나 windows Vista SP1이상에서 지원이 가능하다.
- ntoskrnl.exe
- 프로세스 수행 함으로써 역할 수행
- winlogon.exe 시작 통해 로그인 창 활성화 (win 10 로그인 화면)
- 로컬 보안 인증 서버(Local Security Authentication Server, lsass.exe)
- 보안 계정 관리자(SAM, Security Accounts Manager)에 정보비교
- userinit.exe 실행
- Shell 실행
- 레지스트리에 구성된 쉘 실행 (기본값: explorer.exe - 윈도우에 있는 기본 셸)
- userinit.exe 프로세스에서 레지스트리 내용 받아 실행
윈도우의 주요 프로세스
프로그램
- 하드 디스크 등에 저장되어 있는 실행 코드
프로세스
- 연속적으로 실행되고 있는 컴퓨터 프로그램의 작은 단위
스레드
- 프로세스에서 작업의 최소 단위
세션
- 윈도우 내 어플리케이션 동작하기 위해서 실행하고 있는 세션 필요
- 윈도우 세션은 일종의 사용자를 뜻하며 Session 0부터 시작
프로세스 종류(Win 7 기준)
- System
- 대부분의 커널 모드 스레드 담당
- smss.exe
- 세션(사용자) 매니저 프로세스
- svchost.exe
- 윈도우 서비스의 호스트 프로세스
- DLL 이용한 서비스가 실행하도록 제공
- 여러 개의 프로세스 생성할 수 있음
- lsm.exe
- Local Session Manager
- explorer.ex
- 사용자가 파일 접근하도록 기능 제공하는 프로세스
- winlogon.exe
- 사용자 계정의 로그온과 로그 오프 상태 관리하는 프로세스
- 이런 프로세스로 위장해 비정상적인 행위를 할 수도 있음
DLL(Dynamic Link Library) : 함수들의 집합. 뭔가 실행할 때 dll 로드해다가 동작함.
프로세스 종류(Win 10)
- RumtimeBroker.exe
- 제한된 UWP(Universal Windows Platform) 앱과 전체 WinAPI 간의 프록시 역할 수행
- UWP : Win10, Win10 모바일, 엑스박스 원 등에서 실행할 유니버셜 앱의 개발 돕기 위한 것
- 제한된 UWP(Universal Windows Platform) 앱과 전체 WinAPI 간의 프록시 역할 수행
서비스?
- 사용자 간섭이 없음
- 보통 윈도우 OS가 시동될 때 실행
- 유닉스 또는 리눅스의 데몬 개념과 유사
- 서비스 실행 계정
- Local System
- Local Service
- Network Service
윈도우 주요 서비스
Windows Event Log
- 이벤트 메시지 기록 설정
- 이벤트
- 응용 프로그램(ASSS)
- 보안
- Setup
- 시스템
DHCP Client
- DHCP
- 서버에서 아이피 주소 동적 할당 해주는것
- SAM(Security Accounts Manager)
- 계정 인증에 관련된 서비스
- ClipBook
- Copy & Paste 지원하기 위한 서비스
- COM+ (an extension to the Component Object Model) Event System
- Com(Component Object Model)은 프로그램의 컴포넌트 객체들을 개발하고 지원하기 위한 하부 기반 구조, 인터페이스 교섭과 언제쯤 객체가 시스템에서 제거될 수 있는지 판단
- 라이센스, 이벤트 서비스 등 제공
레지스트리?
- 윈도우 운영체제 내에서 여러 설정 값들을 담은 일종의 데이터베이스. 리눅스에서 각 설정 값을 파일로 담고 있는 것과는 다르게 차이점 가지고 있다.
- 32/64bit 아키텍처에서 윈도우 운영체제의 설정과 선택 항목을 담고 있는 데이터베이스
- 하드웨어, 소프트웨어, 사용자 PC 선호도, 중요 시스템 정보 등의 대한 설정이 포함
- 이전에는 윈도우 프로그램 내부에 ini 파일을 사용했었음
- 구성
- 키
- 윈도우의 폴더와 유사한 형태
- 레지스트리 안에 경로와 같은 개념으로 사용(경로가 존재함)
- 값
- 키 안에 담겨있는 이름 또는 자료
- 여러 키로부터 참조될 수 있음
- 키
- regedit의 SAM, SECURITY, SOFTWARE, SYSTEM 키 파일들 따로 저장되어 있음 << HIVE 파일(conf)
- reg 명령어 통해서 레지값 변경 가능
Q-dir 도구 > 멀티 탐색기
'정보보호과정' 카테고리의 다른 글
2주차(5) - 2022/02/18 윈도우기초 (0) | 2022.02.18 |
---|---|
2주차(4) - 2022/02/17 윈도우기초 (0) | 2022.02.17 |
2주차(2) - 2022/02/15 정보보호개론 복습 (0) | 2022.02.15 |
2주차(1) - 2022/02/14 정보보호개론 복습 (0) | 2022.02.14 |
1주차(5) - 2022/02/11 암호학 + RSA, ECC (0) | 2022.02.11 |