틀린 설명은 iOS와 안드로이드 모두 실행 권한이 일반 사용자에게 있다는 진술이다.
정보보안 교재의 iOS·안드로이드 보안 비교에서 프로그램 실행 권한은 iOS가 관리자, 안드로이드가 일반 사용자로 서로 다르게 분류되므로 "모두 일반 사용자"라는 진술은 성립하지 않는다.
- iOS가 모든 앱의 코드 무결성을 점검해 설치를 제한한다는 설명은 옳다.
- iOS는 애플 CA 서명으로 배포하고 안드로이드는 개발자가 스스로 서명해 배포한다는 설명은 옳다.
- 보안 통제권이 iOS는 애플에, 안드로이드는 개발자나 사용자에게 있다는 설명은 옳다.
접근이 허락된 주체에게 기능·서비스를 이용할 권한을 부여하는 것은 인가(authorization)이다.
접근통제는 식별 → 인증 → 인가 순으로 진행되며, 인가는 신원이 확인된 뒤 무엇을 할 수 있는지를 결정하는 단계다.
- 식별은 사용자가 자신이 누구인지 밝히는(ID 제시) 단계다.
- 인증은 제시한 신원이 진짜인지 패스워드·인증서 등으로 확인하는 단계다.
- 평가는 접근통제의 권한 부여 단계를 가리키는 용어가 아니다.
사회공학적 공격기법에 해당하지 않는 것은 스푸핑(spoofing)이다.
스푸핑은 IP·MAC·DNS 주소 등을 위조해 다른 시스템으로 가장하는 기술적 위장 공격으로, 사람의 심리를 속이는 사회공학과 구분된다.
- 피싱은 금융기관 등을 사칭한 메일·사이트로 사용자를 속여 정보를 입력하게 한다.
- 파밍은 사용자가 정상 주소로 접속해도 위조 사이트로 유도해 정보를 빼낸다.
- 스미싱은 문자메시지(SMS) 속 링크로 사용자를 속여 악성 앱 설치나 소액결제를 유도한다.
chmod 751 test.c
chmod 751 을 적용한 결과는 -rwxr-x--x이다.
8진수 각 자리를 r=4, w=2, x=1 비트로 나눈다.
소유자 7 = 4+2+1 → rwx
그룹 5 = 4+1 → r-x
기타 1 = 1 → --x
- -rwxrw---x 는 그룹이 6(rw-), 기타가 1이므로 761 에 해당한다.
- -rwxr-x--- 는 기타가 0이므로 750 에 해당한다.
- -rw-r----- 는 640에 해당한다.
틀린 설명은 익명 FTP가 유효한 사용자 이메일 주소를 패스워드로 요구한다는 진술이다.
익명 FTP는 anonymous 같은 공용 계정으로 누구나 접속하게 하는 서비스로, 패스워드 자리에 이메일을 적도록 안내하는 것은 관례일 뿐 유효한 주소를 요구하거나 검증하지 않는다.
- 임의 계정으로 로그인을 반복 시도해 패스워드를 유추하는 무차별 대입 취약점이 있다는 설명은 옳다.
- 평문 인증정보 유출을 막는 대책으로 SCP·SFTP·FTPS 가 있다는 설명은 옳다.
- 꼭 필요하지 않으면 FTP 서비스를 사용하지 않는 것이 좋다는 설명은 옳다.
SSL 프로토콜 스택에 없는 것은 user authentication 프로토콜이다.
SSL은 하위의 Record 프로토콜 위에 Handshake·Change Cipher Spec·Alert 프로토콜이 놓인 구조다.
- handshake 프로토콜은 암호 알고리즘 협상과 키 교환, 서버(필요시 클라이언트) 인증을 수행한다.
- alert 프로토콜은 오류나 경고 메시지를 상대에게 전달한다.
- record 프로토콜은 상위 데이터를 단편화·압축·MAC 부가·암호화해 전송한다.
전자우편 보안을 위해 개발된 것이 아닌 것은 SMTP이다.
SMTP는 메일을 전송하는 기본 프로토콜로, 자체적으로 암호화·전자서명 기능이 없다.
- PGP는 전자서명과 암호화로 메일의 기밀성·무결성·인증을 제공한다.
- S/MIME 은 MIME 메시지에 인증서 기반 서명과 암호화를 적용한다.
- PEM 은 IETF가 제안한 메일 보안 표준으로 기밀성·인증·무결성을 제공한다.
거짓 정보나 소문을 메일·게시판에 퍼뜨려 사용자를 겁주거나 속이는 것은 혹스(Hoax)이다.
혹스는 실제 악성코드가 아니라 "바이러스가 있으니 이 파일을 지워라" 같은 거짓 경고로 사용자를 속여 스스로 피해를 내게 한다.
- 트로이 목마는 정상 프로그램으로 위장해 악의적 기능을 수행하는 악성코드다.
- 백도어는 정상 인증을 우회해 시스템에 접근하는 비밀 통로다.
- 스파이웨어는 사용자 몰래 정보를 수집해 외부로 보내는 프로그램이다.
틀린 설명은 403 Forbidden을 다른 요청이나 서버 구성과의 충돌로 설명한 것이다.
403은 서버가 요청을 이해했지만 접근 권한이 없어 거부하는 경우이고, 요청이 리소스 상태와 충돌하는 경우는 409 Conflict 에 해당한다.
- 401 Unauthorized 는 인증 정보가 없거나 잘못된 경우로 옳다.
- 404 Not Found 는 요청한 주소의 리소스가 없는 경우로 옳다.
- 414 Request-URI Too Long 은 요청 URI가 서버가 처리할 수 없을 만큼 긴 경우로 옳다.
모든 파일 및 디렉터리에 대한 정보가 저장된다. 즉, 정보는 파일 내용들을 정의하는 속성들의 집합으로 구성된다.
설명에 해당하는 NTFS 구조는 MFT(Master File Table)이다.
MFT는 볼륨의 모든 파일·디렉터리마다 엔트리를 두고, 파일 이름·시간 정보·데이터 등을 속성(attribute)의 집합으로 저장한다.
- PBS(파티션 부트 섹터)는 볼륨 앞부분에서 부트 코드와 볼륨 정보를 담는다.
- 시스템 파일은 NTFS가 내부 관리용으로 두는 메타데이터 파일들을 가리키며, 모든 파일 정보를 담는 표 자체가 아니다.
- 백업 수퍼 블록은 유닉스 계열 파일시스템(ext 등)의 구조다.
<보기 1>
- ㄱ. 갑은 송신하는 개인정보를 도청당하는 일이 없이 을에게 전달하기 원한다.
- ㄴ. 갑은 송신하는 개인정보가 조작당하는 일이 없이 을에게 전달되기 원한다.
- ㄷ. 갑은 통신 상대의 웹 서버가 진짜 을의 서버라는 것을 확인하고 싶다.
- ㄹ. 갑은 을의 서버에 적절한 시간에 접속하여 정상적으로 요청된 내용을 수행하고 싶다.
<보기 2>
- A. 기밀성
- B. 무결성
- C. 인증
- D. 가용성
ㄱ~ㄹ에 맞는 서비스는 차례로 기밀성, 무결성, 인증, 가용성이다.
각 상황이 막으려는 위협(노출·변조·위장·서비스 방해)을 정보보호의 핵심 서비스에 대응시키면 된다.
- 도청당하지 않기를 원하는 ㄱ은 내용 노출을 막는 기밀성이다.
- 조작당하지 않기를 원하는 ㄴ은 변조를 막는 무결성이다.
- 상대 서버가 진짜 을의 서버인지 확인하려는 ㄷ은 인증이다.
- 필요한 때에 접속해 정상적으로 서비스를 받으려는 ㄹ은 가용성이다.
틀린 설명은 passwd·shadow 파일의 쓰기 권한을 일반 사용자에게 주어도 안전하다는 진술이다.
/etc/passwd 는 쓰기를 root 만 갖게 하고, 패스워드 해시가 담긴 /etc/shadow 는 일반 사용자에게 읽기조차 허용하지 않아야 한다. 쓰기를 허용하면 계정 추가나 UID 0 변조로 관리자 권한을 탈취당한다.
- 윈도우즈 NT 계열이 NTFS로 파일·디렉터리 접근을 통제한다는 설명은 옳다.
- NTFS가 모든 권한·수정·읽기 및 실행·폴더 내용 보기·읽기·쓰기의 여섯 가지 권한을 둔다는 설명은 옳다.
- 유닉스 계열이 소유권과 접근 권한으로 자원 접근을 통제한다는 설명은 옳다.
틀린 설명은 Brute force 공격이 입력하는 패스워드를 가로채는 공격이라는 진술이다.
Brute force(무차별 대입) 공격은 가능한 모든 문자 조합을 차례로 대입해 패스워드를 찾는 방식이며, 입력 중 가로채기는 스니핑·키로깅에 해당한다.
- 패스워드를 암호화(해시)해 저장하는 것이 안전하다는 설명은 옳다.
- 사용자의 신원·주변 정보로 추측하는 사회공학적 방법이 있다는 설명은 옳다.
- 후보 단어를 crypt() 함수로 변환해 저장된 값과 비교하는 방식으로 패스워드를 추측할 수 있다는 설명은 옳다.
저장 XSS에 가장 적절한 대책은 게시글 속 악성 스크립트 코드를 찾아 제거하는 것이다.
저장 XSS는 게시글에 심어 둔 스크립트가 열람자의 브라우저에서 실행되는 공격이므로, 입력·출력 시 스크립트를 필터링하거나 무력화해야 근본적으로 막힌다.
- 가상 사설망 접속으로 제한해도 저장된 스크립트는 그대로 실행된다.
- 허가된 사용자만 글을 쓰게 해도 그 사용자가 스크립트를 넣으면 막지 못한다.
- SSL은 전송 구간만 암호화할 뿐 게시글 내용의 스크립트를 걸러내지 않는다.
( )는(은) 불특정 다수를 대상으로 로그인된 사용자가 자신의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금) 등을 하게 만드는 공격이다.
괄호에 들어갈 취약점은 CSRF(사이트 간 요청 위조)이다.
단서는 로그인된 사용자가 자기 의도와 무관하게 수정·삭제·등록·송금 요청을 보내게 된다는 점으로, 사용자의 인증된 권한으로 요청을 위조하는 공격이다.
- 명령 삽입 취약점은 입력값에 운영체제 명령을 섞어 서버에서 실행시키는 공격이다.
- XSS 취약점은 악성 스크립트를 사용자 브라우저에서 실행시켜 쿠키 탈취 등을 노리는 공격이다.
- 디렉터리 리스팅 취약점은 웹 서버가 디렉터리의 파일 목록을 그대로 노출하는 설정 결함이다.
스택가드(stackguard)는 가장 잘 알려진 보호 메커니즘 중 하나이다. 이것은 GCC 컴파일러의 확장 버전으로 추가의 함수 진입과 종료 코드를 삽입한다. 추가되는 함수 진입 코드는 지역변수를 위한 공간을 할당하기 전에 이전 ( ㉠ ) 주소 앞에 ( ㉡ ) 값을 기록한다. 추가되는 함수 종료 코드는 이전 ( ㉠ )를 복원하고 제어를 ( ㉢ )로 이동하는 보통의 함수 종료 연산을 수행하기 전에 ( ㉡ ) 값이 변경되었는지를 검사한다. 전통적인 스택 버퍼 오버플로우 시도는 이전 ( ㉠ )와 ( ㉢ )를 변경하기 위해 ( ㉡ ) 값을 바꾸어야 하는데, 만약 변경되었다면 프로그램을 종료하게 된다.
㉠~㉢에는 차례로 프레임 포인터, 카나리아(canary), 반환주소가 들어간다.
스택가드는 지역변수 공간과 저장된 이전 프레임 포인터·반환주소 사이에 카나리아 값을 넣어 두고, 함수가 반환주소로 돌아가기 전에 그 값이 바뀌었는지 검사한다.
- 함수 종료 시 복원되는 "이전 ㉠"은 호출자의 스택 프레임 기준인 프레임 포인터이며, 스택포인터가 아니다.
- 함수 종료 후 제어가 이동하는 ㉢은 반환주소이고, 그 앞을 덮어쓰려면 반드시 ㉡ 카나리아를 지나야 하므로 변조가 탐지된다.
틀린 설명은 SET가 메시지 무결성을 제공하지 않는다는 진술이다.
SET는 전자서명(이중서명)과 해시를 이용해 기밀성뿐 아니라 무결성·인증·부인방지까지 제공하는 전자상거래 보안 프로토콜이다.
- HTTPS가 HTTP와 SSL을 결합해 브라우저와 서버 간 안전한 통신을 구현한다는 설명은 옳다.
- PKI가 전자서명·전자상거래의 기반 기술이라는 설명은 옳다.
- 스팸메일이 무차별 전송되어 수신자의 시간과 비용을 낭비시킨다는 설명은 옳다.
틀린 설명은 트립와이어 데이터베이스에 물리적 보안 대책이 필요 없다는 진술이다.
공격자가 기준 데이터베이스를 변조하면 변경을 검출하지 못하므로, 데이터베이스는 읽기 전용 매체 보관 등으로 별도 보호해야 한다.
- 해시로 파일 정보를 데이터베이스화하는 무결성 검사 도구라는 설명은 옳다.
- 침입으로 인한 파일·디렉터리 변경을 쉽게 검출하게 돕는다는 설명은 옳다.
- 저장된 해시값과 현재 해시값을 비교해 무결성을 판단한다는 설명은 옳다.
운영체제의 구조는 이중 모드(dual mode)로 되어 있는데, 이는 사용자 모드(user mode)와 커널 모드(kernel mode, 또는 운영체제 실행 모드)이다. 이 중 사용자 모드는 특권 명령어를 사용할 수 없으며, 이러한 경우에 사용자 프로세스는 운영체제에게 도움을 요청하게 되는데, 이를 ( )(이)라 한다. 즉, ( )는(은) 실행 중인 프로그램과 운영체제 사이에 인터페이스를 제공하는 것이다.
괄호에 들어갈 말은 시스템 호출(system call)이다.
사용자 모드 프로세스는 특권 명령을 직접 실행할 수 없으므로, 시스템 호출로 커널 모드로 전환해 운영체제가 대신 수행하게 한다. 이것이 실행 중인 프로그램과 운영체제 사이의 인터페이스다.
- 시스템 관리는 운영체제가 자원을 관리하는 일반적 기능을 뜻하며, 프로세스가 커널에 요청하는 인터페이스가 아니다.
- 프로세스 관리는 프로세스의 생성·종료·동기화 등을 다루는 운영체제 기능이다.
- 스케줄링은 CPU를 어느 프로세스에 할당할지 정하는 기능이다.
틀린 설명은 gets()가 버퍼 오버플로우에 취약하지 않다는 진술이다.
gets()는 입력 길이를 검사하지 않고 버퍼에 복사하므로 대표적인 취약 함수이며, 길이를 지정하는 fgets() 로 대체해야 한다.
- 버퍼 오버플로우가 데이터 길이에 대한 불명확한 정의를 이용한다는 설명은 옳다.
- 포맷 스트링 공격이 데이터 형태에 대한 불명확한 정의로 발생한다는 설명은 옳다.
- 취약 함수를 쓰지 않거나 최신 운영체제를 쓰는 것이 방어 방법이라는 설명은 옳다.