반응형
1.운영체제 보안
# TCB(Trusted computing base)의 의미
컴퓨터 시스템내의 총체적 보호 메커니즘
# TCB의 4가지 모니터 기능
a) 프로세스 활성화
b) 실행 도메인 변경
c) 메모리 보호
d) 입출력 연산
# 운영체제 구조
5계층 : 파일 관리 : 파일의 생성과 소멸, 파일의 열기와 닫기, 파일의 유지 및 관리 담당
4계층 : 주변장치 관리 : 주변장치의 상태파악과 입출력 장치의 스케줄링
3계층 : 프로세스 관리 : 프로세스의 생성, 제거, 메세지전달, 시작과 정지 등의 작업
2계층 : 메모리 관리 : 메모리의 할당 및 회수 기능을 담당
1계층 : 프로세서 관리 : 동기화 및 프로세서 스케줄링 담당
# 메모리구조
text, data, heap, stack로 이루어짐
코드 영역
코드 자체를 구성하는 메모리 영역
Hex나 BIN파일 메모리
데이터 영역
전역변수, 정적변수, 배열, 구조체
힙 영역
동적할당, malloc
스택영역
지역변수, 매개변수, 리턴 값
# 시스템보안 패스워드 크랙 및 스캐닝
패스워드 크랙 : John The Ripper, pwddump, L0phtCreack, ipccrack, chntpw, Commander
다중취약점 스캔 : SAINT, sscan2k, vetescan, mscan
특정 취약점 스캔 : cgiscan, winscan, rpcscan
키로거 : Keycopy, keylogwin, Keylog25, Winhawk, perfectkeylog
# 포멧 스트링 문자의 종류
%d : 정수형 10진수 상수
%f : 실수형 상수
%lf : 실수형 상수
%s : 문자 스트링\\
%u : 양의 정수(10 진수)
%o : 양의 정수(8 진수)
%x : 양의 정수(16 진수)
%s : 문자열
%n : int(쓰인 총 바이트 수)
%hn : n의 반인 2바이트 단위
# 시스템보안 공격 유형
Format String
포맷스트링 인자로 하는 함수의 취약점(입력값을 검증하지 않음)을 이용한 공격방법이다.
공격자는 취약한 프로세스를 공격하거나, 메모리 내용을 read/write가능하다.
결과적으로 프로세스 권한획득 및 임의의 코드 실행할 수 있다.
Race condition
둘 이상의 프로세스나 스레드가 공유자원에 접근시 비정상적인 결과가 발생하도록 유도
실행되는 프로세스가 임시파일을 만드는 경우 실행중에 끼어들어 악의적인 행위를 한다.
만약 setuid 설정이 되어 root권한으로 실행된다면 권한상승이 발생하여 심각한 문제가 발생할 수 있다.
Stack Buffer overflow
지역변수 및 매개변수가 위치하는 메모리영역이 문자열 계산등으로 버퍼의 한계치를 넘는 경우 발생한다
Heap Buffer overflow
동적으로 할당하는 메모리영역에 최초 정의된 힙의 메모리 사이즈를 초과하여 저장되는 경우 발생한다.
# 버퍼오버플로우 대응방법
①스택가드 : 복귀주소와 변수 사이에 특정 값 저장해두었다가 변경시 오버플로우로 가정하여 실행 중단
②스택쉘드 : RET라는 특수 스택에 저장해두었다가 함수종료시 값비교하여 값이다를 경우 오버플로우로 가정하여 실행 중단
③ASLR : 주소 공간을 난수화 하여 실행 시 마다 메모리 주소 변경하여 악성코드에 의한 특정 주소 호출을 방지한다.
④안전한 함수 사용 : 문자열 길이를 제한하는 함수를 사용하여 버퍼를 초과하지 않는다.
⑤입력값 사전 검증 : 입력문자열이 버퍼와 같거나 크면 프로그램을 중단
# 스택오버플로우 공격에 대응하는 사용 자제/권장 함수
사용 자제 함수
strcat(), strcpy(), gets(), scanf(), sscanf(), vscanf(), vsscanf(), sprintf(), vsprintf(), gethostbyname(), realpath()
사용 권장 함수
strncat(), strncpy, fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()
2.클라이언트 보안
# 컴파일형 악성코드와 스크립트형 악성코드 차이 비교
컴파일형 바이러스
목적 시스템에서 첫 구동 시 실행파일이 만들어지므로 여러 차례 실행 시 속도가 빨라진다.
리버싱을 통해 실행하지 않더라도 내용 짐작이 가능하다.
실행속도가 빠르다.
스크립트형 바이러스
목적시스템에서 인터프리터 된다.
브라우저에서 구동될 때 브라우저에 포함된 인터프리터에 의해 한줄 씩 해석하면서 실행된다.
3.윈도우 서버보안
# NTFS와 FAT
NTFS의 특징
로컬 파일시스템 보안 기능이 있다.
파일의 접근권한이 폴더의 접근권한 보다 우선한다.
NTFS 보안의 기본 설정은 everyone그룹에 모든 권한이 ‘허용’이다.
허용 항목보다 거부 항목이 우선이다.
FAT의 특징
호환성이 우수하다.
저용량 볼륨에서 속도가 빠르다.
보안에 취약하다.
# 윈도우 부팅순서
① POST - 하드웨어 자체가 시스템에 문제가 없는지 기본적인 사항을 체크한다.
② CMOS - 사용자가 설정한 기본 사항을 읽어 시스템에 적용한다.
③ MBR - 부팅 매체에 대한 기본적인 파일시스템 정보가 들어 있는 MBR 정보를 읽는다.
④ NTLDR - 하드디스크의 부팅 파티션에 있는 프로그램으로 윈도우가 부팅될 수 있도록 간단한 파일시스
템을 실행하며 boot.ini 파일의 내용을 읽는다.
⑤ NTDETECT.com - NTDETECT는 NTLDR로부터 제어권을 위임받아 시스템에 설치된 하드웨어를 검사한다.
⑥ ntoskrnl.exe - HAL.dll을 로드한다.
#윈도우 시스템 인증 구성요소
LSA(Local Security Authority)
모든 계정의 로그인에 대한 검증 및 시스템 자원(파일 등)에 대한 접근 권한 검사(로컬 및 원격 로그인 포함)
계정명과 SID(Security ID)를 매칭하여 SRM이 생성한 감사 로그를 기록
NT 보안의 중심 서비스, 보안 서브시스템(Security Subsystem)
SAM(Security Account Manager)
사용자/그룹 계정 정보에 대한 데이터베이스 관리
사용자 로그인 정보와 SAM 파일에 저장된 사용자 패스워드 정보를 비교해 인증 여부 결정
SAM 파일은 사용자, 그룹 계정 및 암호화된 패스워드 정보를 저장하고 있는 데이터베이스
SAM 파일은 윈도우 설치 디렉터리(C:\Winnt 또는 C:\Windows)에 위치
SRM(Security Reference Monitor)
인증된 사용자에게 SID(Security ID)를 부여
SID를 기반으로 하여 파일이나 디렉터리에 대한 접근 허용 여부를 결정하고 이에 대한 감사 메시지를 생성
NTLM(Challenge - Response mechanism)
① 클라이언트가 서버로 사용자 이름을 보낸다
② 서버는 이에 대한 요청값을 생성해 클라이언트로 보낸다
③ 클라이언트는 이 요청값을 사용자 암호로 암호화해 서버로 응답을 보낸다.
④ 로컬 계정인 경우 서버는 SAM을 검색해 사용자의 응답을 검증한다.
⑤ 도메인 계정인 경우 서버는 이 응답을 도메인 컨트롤러로 전달해 검증하고 사용자 계정에 대한 그룹 정책을 받는다.
⑥ Access Token을 발급하고 세션을 맺는다.
# 윈도우 레지스트리 키
HKEY_CLASSES_ROOT : 시스템에 등록된 파일 확장자와 그것을 열 때 사용할 애플리케이션에 대한 맵핑 정보 그리고 COM(Component Object Model) 오브젝트 등록 정보를 저장하고 있다.
HKEY_CURRENT_USER : 현재 로그인한 사용자의 설정을 담고 있다.
HKEY_LOCAL_MACHINE : 컴퓨에 설치된 하드웨어와 하드웨어를 구동시키는데 필요한 드라이버나 설정 사항에 관련된 정보를 갖고 있다.
HKEY_USERS :시스템에 있는 모든 계정과 그룹에 관한 정보를 저장하고 있다.
HKEY_CURRENT_CONFIG : 시스템이 시작할 때 사용하는 하드웨어 프로파일 정보를 저장하고 있다.
4.유닉스/리눅스 서버 보안
# i-node란?
i-node(index node)는 유닉스에서 각 파일에 대한 정보를 기억하는 약 120byte의 고정 크기 구조체이다.
# 유닉스 파일시스템 i-Node에 포함된 정보
I-node 번호
파일 유형
파일 링크 숫자
소유주 uid
소유주 gid
파일이 사용하는 실제 블록 개수
마지막으로 수정된 시각
마지막으로 접근한 시각
마지막으로 변경된 시각
파일의 이름은 없음
# 좀비프로세스 확인 명령어
ps -ef | grep defunct
top -b -n 1 | grep zombie
|
Top 옵션
-b : 배치모드 옵션, -n : 실행 주기를 설정, -p : process ID
# 리눅스 사용자의 특수 권한
리눅스에서 권한(Permission)은 너무나도 익숙한 개념이다. 777, 711, 644, drwxrwxrwx 등 리눅스를 겉핥기식으로 아는 사람들이라면 일반적으로 소유자(User) 권한, 소유그룹(Group) 권한, 그 외(Other) 권한 3가지, 그리고 쓰기(Write), 읽기(Read), 실행(Execute) 3가지로 인식하는 경우가 많다.
하지만 실제로 리눅스에서 적용되는 권한은 4가지이다. 위 3+3 분류로 해결할수 없는 특수한 상황이 필요한 경우가 있기 때문이다. 실제로 권한을 조회하다 보면 rwx가 아닌 rwS 같은 특이한 권한이 보이기도 하고, chmod나 몇몇 권한 세팅 예제에서 1755, 0644 등 4자리로 표현되는 권한을 보기도 한다. 모두 특수권한이 적용되는 경우이다.
특수권한은 3가지가 있다. 바로 Set-UID, Set-GID, Sticky-Bit이다.
많이 쓰이나? 꼭 알아야되나? 라고 생각 할 수도 있지만, 필요에 의해 따로 설정해서 쓰지 않더라도 리눅스 기본 시스템이나 소프트웨어에서 불가피하게 사용되고 있는 곳이 많고, 여러가지 해킹 기법 및 보안사고의 근원이므로 상식적인 차원에서도 무조건 알아두어야 한다.
파일종류
|
특수권한
|
User
|
Group
|
Other
|
||||||||
-, d, c, b, s, l p
|
4
|
2
|
1
|
4
|
2
|
1
|
4
|
2
|
1
|
4
|
2
|
1
|
setuid
|
setgid
|
sticky bit
|
r
|
w
|
x
|
r
|
e
|
x
|
r
|
e
|
x
|
Set-UID
8진수 방식 : 4000
특수권한 파일검색 : #find / -perm 4000 -print
실행하는 동안 해당 파일의 소유자 권한으로 인식한다.
일반적으로 실행 파일에 사용된다.
소유자 권한 부분의 x 자리에 s 로 표기 된다.
실행 권한이 있을 경우 소문자 s 로 표시된다.
실행 권한이 없을 경우 대문자 S 로 표시된다.
Set-GID
8진수 방식 : 2000
특수권한 파일검색 : #find / -perm 2000 -print
실행하는 동안 해당 파일의 소유자그룹 권한으로 인식한다.
일반적으로 디렉터리에 설정된다.
사용자가 파일이나 디렉터리를 생성하면 사용자가 속한 그룹에 상관없이 디렉터리 소유 그룹으로 만들어진다.
그룹 권한 부분의 x 자리에 s 로 표기 된다.
실행 권한이 있을 경우 소문자 s 로 표시된다.
실행 권한이 없을 경우 대문자 S 로 표시된다.
Sticky-Bit
8진수 방식 : 1000
특수권한 파일검색 : #find / -perm 1000 -print
일반 사용자들이 디렉터리에서 파일 및 디렉터리 생성이 가능하다.
일반 사용자들은 자신이 생성한 것 이외에는 수정 및 삭제가 불가능하다.
디렉터리에만 적용된다.
시스템 기본 폴더인 /tmp 디렉터리에 설정되어 있다.
설정하면 other 계층 권한 부분의 x 자리에 t 로 표기되며 실행권한이 없는 경우 대문자 T 로 표기된다.
Umask
파일이나 디렉터리 생성 시 부여되는 기본 허가권을 지정하는 명령어이다.
umast의 권장 설정값은 027 또는 022이다.
ex)
UNIX 시스템에서는 각각 파일과 디렉터리를 생성할 때 기본접근 권한
일반 파일 접근권한 : 666
디렉터리 접근권한 : 777
※ umask 022일 때 적용하면 파일은 644, 디렉터리는 755의 접근권한을 갖는다.
# PAM
PAM 인증 처리 단계
① 대상이 애플리케이션의 액세스를 요구한다.
② 애플리케이션의 PAM 설정 파일을 열고 읽는다.
③ 스택의 각 PAM 모듈이 리스트 상의 순서대로 호출된다.
④ 각 PAM 모듈이 성공 또는 실패 상태를 리턴한다.
⑤ 스택은 계속 순서대로 읽혀지며, 한번 실패 상태를 리턴했다고 해서 중단되지 않는다.
⑥각 PAM 모듈이 성공 또는 실패 상태를 리턴한다.
PAM의 보안설정
password requisite / lib/security/$ ISA/ pam_ cracklib.so
retry= 3 minlen=8 lcredit=-1 ucredil=-1 dcredit= -1
scredit=-1 difok=4
|
-
패스워드 복잡도 설정
retry=3 : password 변경 때 3번 틀리면 변경 실패
minlen=8 : 최소 8자리 이상의 문자
lcredit=-1 : 최소 1개 이상의 소문자 포함
ucredit=-1 : 최소 1개 이상의 대문자 포함
dcredit=-1 : 최소 1개 이상의 숫자 포함
ocredit=-1 : 최소 1개 이상의 특수문자 포함
/etc/shadow 파일형식
[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactivel]:[expires]
Ex)
sys_admin:!!:15965:0:99999:7:0:11323:
sec_admin:$1$Elnsjin$:15970:0:30:10:::
[user_account] : 사용자 계정
[encrypted_password] : 암호화된 패스워드
[last_change] : 마지막으로 패스워드를 변경한 날
[minlife] : 최소 변경 일수
[maxlife] : 최대 변경 일수
[warn] : 경고일수
[inactive] : 최대 비활성 일수
[expires] : 사용자 계정이 만료되는날
5 서버 보안 관리
# 윈도우 시스템 이벤트로그 종류
응용 프로그램 로그 : 응용 프로그램이 기록한 다양한 이벤트가 저장되며, 기록도[는 이벤트는 소프트웨어 개발자에 의해 결정된다.
보안 로그 : 유효하거나 유효하지 않은 로그인 시도 및 파일생성, 열람, 삭제 등의 리소스 사용에 관련된 이벤트를 기록한다. 감사 로그 설정을 통해 다양한보안 이벤트 저장이 가능하다.
시스템 로그 : Windows 시스템 구성요소가 기록하는 이벤트로 사스템 부팅 시 드라이버가 로드 되지 않는 경우와 같은 구성요소의 오류를 이벤트에 기록한다.
디렉터리 서비스 로그 : Windows Active Directory 서비스에서 발생하는이벤트
파일 복제 서비스 로그 : Windows 파일 복제 서비스에서 발생하는 이벤트
DNS 서버 로그 : Windows DNS 서비스에서 발생하는 이벤트
# 리눅스 시스템 이벤트로그 설정과 관리
lastlog : 최근 로그인 시간, 사용자 이름, IP 정보 등의 확인이 가능
wtmp : 파일이 생성되는 순간부터 로그인/로그아웃 정보를 보여줌
last : 사용자의 로그인 시간, 사용자, 세션지속시간, 접속자ip등을 보여줌
btmp : 로그인 실패할 경우에 이파일에 저장, 바이너리 형태여서 "lastb"라는 명령어를 사용하여 확인 가능
utmp : 현재 로그인한 사용자상태 정보를 담고 있는 로그파일
dmesg : 부팅에서부터 하드웨어적인 부분의 장애나 에러사항을 기록해주는 메세지
secure : 로그인 시도나 ftp 원격접속 인증등을 기록
xferlog : FTP 프로토콜로 어떠한 자료가 오고갔는지의 발자취를 보여주는 로그파일
# 윈도우 감사정책
계정 관리 검사(실패) : 사용자 관련 설정 변경 로그를 탐지한다.
디렉터리 서비스 액세스 검사(실패) : 시스템 액세스 제어 목록(SACL)에 저장되어있는 AD 개체에 접근하는 사용자에 대한 로그르 탐지한다.
계정 로그인 이벤트 감사(성공, 실패) : 도메인 계정의 로그인에 대한 사항을 탐지한다.
로그인 이벤트감사(성공, 실패) : 로컬 계정 접근 시 생성되는 이벤트를 탐지한다.
권한 사용 감사(성공, 실패) : 권한 설정 변경, 관리자 권한이 필요한 작업 로그를 탐지한다.
정책 변경 감사(성공, 실패) : 사용자 권한 할당 정책, 감사 정책 또는 신뢰 정책과 관련된 로그를 탐지한다.
개체 액세스 감사(감사 없음) : 객체(디렉토리, 프린터)에 대한 접근시도, 속성 변경 등을 탐지한다.
프로세스 추적 검사(감사 없음) : 사용자 또는 응용 프로그램이 프로세스 중지 및 시작하는 로그를 탐지한다.
시스템 이벤트 검사(감사 없음) : 시스템의 시작 및 종료, 로그 삭제등 시스템에 주요한 로그를 탐지한다.
6 최신 보안 주제들
# SMB 취약점을 이용한 랜섬웨어 공격에 필요한 포트 차단
TCP : 139, 445
UDP : 137, 138
# 악성코드의 일종인 페티야 특징
랜섬웨어와는 달리 파일을 암호화할 뿐만 아니라 MBR을 암호화해서 시스템 자체를 먹통으로 만듬
'CERTIFICATE > 정보보안기사' 카테고리의 다른 글
210529 17회 정보보안기사 실기 시험 후기 (1) | 2021.05.29 |
---|---|
[정보보안기사 필기 요점정리] - 어플리케이션 보안 (0) | 2020.11.20 |
[정보보안기사 필기 요점정리] - 네트워크보안 (0) | 2020.11.20 |
[정보보안기사] 필기 기출문제 공부할 때 유용한 사이트 (0) | 2019.11.26 |