DongDD's IT

[정보보안기사 실기] 시스템 보안 - 기초 본문

자격증/정보보안기사

[정보보안기사 실기] 시스템 보안 - 기초

DongDD 2018. 4. 20. 15:45

[정보보안기사 실기] 시스템 보안 - 기초



Windows(윈도우)



윈도우 인증


1. 인증 구성 요소


1) LSA(Local Security Authority)

- 모든 계정의 로그인을 검증, 시스템 자원 접근 권한 검사

- 계정명과 SID 매칭, SRM이 생성한 감사 로그에 기록

- NT 보안의 중심 서비스(보안 서브시스템)


2) SAM(Security Account Manager)

- 사용자/그룹 계정 정보에 대한 DB 관리

- 로그인 정보와 SAM 파일의 정보를 비교해 인증 여부 결정

- SAM 파일 : 계정과 암호화된 패스워드를 저장한 DB(C:\Winnt or C:\Windows에 저장)


3) SRM(Service Reference Monitor)

- 인증된 사용자에게 SID 부여

- SID를 기반으로 파일 접근 여부 결정, 이에 대한 감사 메시지 생성


2. Local 인증

- 윈도우 부팅 후 로그인을 시도하면 LSA 서브 시스템이 인증 정보를 받아 NTLM 모듈에 넘기고 SAM이 다시 받아 접근 토큰을 넘겨줌


3. Remote 인증

- 윈도우 부팅 후 로그인을 시도하면 LSA 서브 시스템이 인증 정보를 받아 local인지, domain인지 확인하고 kerberos를 이용해 도메인 컨트롤러(DC)에 인증을 요청함

- 도메인 컨트롤러는 인증 정보를 확인해 사용자에게 접근 토큰을 부여하고 해당 권한으로 프로세스 실행


4. SAM 파일 접근 통제(시스템 취약점 분석 항목)

- SAM 파일은 계정을 관리하고 LSA를 통한 인증을 제공하므로 적절한 접근 통제 필요

- Administrator, System 그룹 외에 접근 제한

- 불필요한 계정 접근 권한 제거

- C:\System32\config에 위치



윈도우 보안 식별자(SID : Security IDentifier)


- 사용자, 그룹에 부여되는 고유 식별 번호

- 접근 토큰에 SID 정보가 있음

- 사용자 프로세스에 접근 토큰 할당됨

- SAM 파일에 SID 정보 저장


S-1-5-21-1234567890-1234567890-1234567890-500


1) S-1 : 윈도우 시스템을 의미

2) 5-21 : 도메인 컨트롤러, 단독 시스템을 구분

3) 1234567890-1234567890-1234567890 : 해당 시스템 고유 식별자

4) 500 : User를 나타냄(500 : Administrator, 501 : guest, 1000 이상 : 일반 user)


- whoami /user : 현재 로그인한 사용자 SID 출력(도메인 접속은 표시 X)

- wmic Useraccount list brief : 사용자 SID 출력



윈도우 인증


- Challenge & Response 방식

- 인증 요청 -> Challenge -> Response -> 인증 성공 순으로 진행

1) 인증 요청

- 사용자가 윈도우에 인증 요청

2) Challenge

- 서버가 랜덤한 Challenge 값 생성해 사용자에게 전달

3) Response

- 사용자가 Challenge 값과 Password 정보를 이용해 Response값을 생성해 서버에 전달

4) 인증 성공


1. 인증 암호 알고리즘


1) LM(LAN Manager) 해시

- Windows 2000,XP의 기본 알고리즘

- 취약한 점이 많아 현재 사용 X

2) NTLM 해시

- LM 해시에 MD4 해시를 추가함

3) NTLMv2 해시

- Windows Vista 이후의 윈도우에 사용되는 기본 인증 프로토콜

- 현재까지 크래킹이 어려움


- LM 인증 수준을 설정할 수 있음(시스템 취약점 분석 항목) : 기본은 Kerberos이고 원하는 프로토콜 선택 가능



Password Cracking


1. Dictionary Attack

- 자주 사용되는 단어들을 미리 저장해놓고 하나씩 대입해 일치하는지 확인하는 방법

2. Brute Force Attack

- 범위를 정하고 범위 내에서 사용 가능한 모든 경우의 수를 대입하는 방법

3. Rainbow Table Attack

- 해시 테이블과 변이 함수 R을 반복해 일치하는 해시 값을 찾는 방법

- Rainbow table : 하나의 패스워드를 특정 변이 함수를 이용해 여러 변이된 패스워드를 생성하고 각 패스워드를 연결해 해시체인 생성



Linux/Unix


로그인/로그아웃


1. 로그인 

- 입력한 패스워드와 /etc/passwd 파일 비교

- /etc/passwd에 기록된 HOME, SHELL, USER 값 등을 이용해 초기 쉘 변수들 설정

- 설정 후 로그인 쉘 실행(passwd 파일 끝 부분 - sh, csh, ksh 등)

2. 로그아웃

- logout, exit 명령어, [ctrl+d]를 이용해 로그아웃


사용자 정보


1. /etc/passwd 파일

- 사용자 관련 정보 저장

- ':' 구분자를 이용해 7개의 필드로 구성


account:password:uid:gid:comment:home_dir:login_shell

1) account : 계정 이름

2) password : x -> shadow 패스워드 사용

3) uid,gid = 0 -> root 계정 -> 취약점에 이용할 수 있음

4) home_dir : 쉘 실행 시 초기 홈

5) login_shell : 초기에 실행되는 쉘 종류


2. 사용자 확인

- id 명령어 사용

- id account : account 계정의 정보 확인

- id : 현재 account 정보 확인


3. 패스워드 변경

- passwd 명령어 사용

- passwd account : account 계정의 password 변경(root만 사용 가능)

- passwd : 현재 account의 password 변경


그룹 정보


- 하나의 기본 그룹과 여러 개의 보조 그룹에 소속될 수 있음

- /etc/passwd의 4번째 필드

- /etc/group : 시스템의 모든 그룹 정보

- cat /etc/group


group_name:X:gid:accounts

1) group_name : 그룹 이름

2) X : 그룹의 암호화된 패스워드

3) gid : 그룹 id

4) accounts : 그룹에 속한 계정들


Redirection


- 입출력을 표준 입출력을 사용하지 않고 다른 파일로 지정

- < : input, > : output

- cat aa > a.txt

- ./a.out < b.txt


Pipe


- 동시에 둘 이상의 명령어를 묶어서 사용

- 한 프로그램의 출력 결과를 한 프로그램의 입력으로 사용할 수 있음

- ex) cat aa | grep "search"


Shell Metacharacter


- shell에서 사용할 수 있는 특별한 특수 문자

- # : 주석

- $ : 쉘 변수

- & : background 실행

- * : 문자열 wildcard

ex) f* : f로 시작하는 모든 파일

- ? : 한 문자 wildcard

ex) a?c : a로 시작하고 c로 끝나는 3글자 파일


파일 시스템


- 물리적 저장장치에 파일을 생성, 저장, 관리하기 위한 논리적인 자료구조

- 물리적 저장장치의 각 파티션별로 다른 파일시스템 적용 가능

1. 구성

- 부트 블록(Boot Block) : 운영체제 부팅, 초기화시 사용되는 bootstrap 코드를 담고 있는 블록

- 슈퍼 블록(Super Block) : 해당 파일시스템을 관리하기 위한 정보를 담고 있는 블록

- i-node list : 파일에 대한 여러 정보를 담고 있음(파일명은 없음)

-> 특정 파일의 i-node 정보 확인 : stat 명령어 사용

- 데이터 블록(Data Block) : 실제 파일의 내용이 저장되는 블록, 고정된 크기의 block들로 구성



각종 명령어


1. ln

- 파일에 대한 link를 사용하기 위해 사용하는 명령어

1) Hard link 

- 기존 파일과 동일한 i-node를 가지는 파일 생성

- 동일 파일시스템 내에서만 생성 가능

- link 생성 시 link count 증가

2) Symbolic link

- 원본 파일의 경로를 파일 내용으로 하는 파일 생성

- i-node 기반이 아닌 파일 경로 기반

- 원본 파일 삭제 시 dangling point


2. ls

- 디렉토리 내용 출력

- option : -l, -a, -R, -F, -i

-> -l : 리스트 형태로 보여줌

-> -a : 숨김 파일까지 모두 보여줌

-> -R : 하위 디렉토리 내용까지 보여줌

-> -F : 파일 종류를 보여줌

-> -i  : inode를 보여줌


3. mkdir, rmdir, cd

1) mkdir

- 디렉토리 생성

- option : -m, -p

-> -m : 새로 만들 디렉토리의 접근 권한 설정

-> -p : 하위 디렉토리까지 한번에 만듬

2) rmdir

- 디렉토리 제거

- option : -p

-> -p : 하위 디렉토리까지 모두 삭제

3) cd

- 디렉토리 이동


4. chmod, chown, chgrp

1) chmod

- 파일 권한 설정

2) chown

- 소유주 변경

3) chgrp

- 소유 그룹 변경


5. umask

- 파일 생성 시 설정되는 권한 설정

- 일반 파일 default : 666, 일반 디렉토리 : 777

- default - umask


6. find

- 시스템 내의 파일을 찾기 위해 사용

- 논리적 연산 -o(or), -a(and) 사용 시 ()를 이용해 사용

-> ex) find \( -perm -4000 -o -perm -2000)

- option : -name -type, -user, -group, -size, -perm, -atime, -ctime, -mtime

-> -name file_name : file_name을 찾음

-> -type : 찾을 파일 종류 설정

-> -user : 찾을 파일의 소유자명

-> -group : 찾을 파일의 그룹명

-> -size : 찾을 파일의 크기

-> -perm : 찾을 파일의 권한

-> -atime : 찾을 파일의 마지막 접근 시간

-> -ctime : 찾을 파일의 마지막 속성 변경 시간

-> -mtime : 찾을 파일의 마지막 내용 변경 시간



프로세스


- 프로세스가 생성되면 프로세스마다 정보를 가지고 있는 PCB(Process Control Block) 생성

- 프로세스가 생성되면 프로세스가 사용하는 파일을 관리하기 위한 FDT(File Descriptor Table) 생성

1. PCB

- Process state

- Process number

- Program counter

- Register

- Memory limits


2. Foreground/Background Process

1) Foreground process

- 일반적으로 실행되는 프로세스로 터미널에 대한 제어권을 가지고 동작하는 프로세스

2) Background Process

- 보이지 않는 곳에서 실행되고 있는 프로세스로 터미널에 대한 제어권없이 동작하는 프로세스


3. ps

- 프로세스 정보를 확인하기 위해 사용하는 명령어

- option : -f, -l, -a, -A, -e

-> -f : 프로세스 정보를 한 줄씩 출력

-> -l : 자세한 정보 출력

-> -a : 최근에 많이 실행된 제어 터미널을 가진 프로세스의 정보 출력

-> -A, -e : 현재 실행중인 모든 프로세스 정보 출력


4. kill

- signal을 보내기 위한 명령어

- kill -sig_num process_id

Comments