IDEA는 해시함수가 아니라 64비트 블록을 128비트 키로 암호화하는 대칭키 블록 암호이므로 해시함수에 해당하지 않는다.
해시함수는 임의 길이의 입력을 고정 길이의 다이제스트로 압축하는 일방향 함수이며, 나머지 셋이 모두 여기에 속한다.
- SHA1은 160비트 다이제스트를 출력하는 해시함수이다.
- MD5는 128비트 다이제스트를 출력하는 해시함수이다.
- RMD160(RIPEMD-160)은 160비트 다이제스트를 출력하는 해시함수이다.
가상서버·가상 PC 같은 인프라 자원을 인터넷으로 빌려 쓰는 유형은 IaaS(Infrastructure as a Service)이다.
클라우드 서비스 모델은 제공 범위에 따라 인프라·플랫폼·소프트웨어로 나뉜다.
- PIMS는 개인정보보호 관리체계 인증 제도로서 클라우드 서비스 유형이 아니다.
- 완성된 소프트웨어를 응용 형태로만 제공하는 것은 SaaS로, 인프라 자원 제공과 다르다.
- ISMS는 정보보호 관리체계 인증 제도로서 클라우드 서비스 유형이 아니다.
파일 내 특정 문자열 검색은 grep 명령의 기능이며, touch는 빈 파일을 생성하거나 파일의 접근·수정 시간(타임스탬프)을 갱신하는 명령이므로 설명이 옳지 않다.
나머지 설명은 각 명령의 기능과 일치한다.
- chown은 파일·디렉터리의 소유자를 변경한다.
- mv는 파일을 다른 디렉터리로 이동하거나 이름을 바꾼다.
- df는 파일 시스템의 디스크 사용량·여유 공간 정보를 보여 준다.
수집된 증거가 위·변조되지 않았음을 입증하라는 요구는 무결성의 원칙으로, 수집 시점과 제출 시점의 해시값을 비교해 동일성을 보장한다.
나머지 원칙은 서로 다른 요구를 가리킨다.
- 정당성의 원칙은 증거가 적법한 절차로 수집되어야 한다는 것이다.
- 신속성의 원칙은 휘발성 증거 등을 지체 없이 수집·분석해야 한다는 것이다.
- 연계 보관성의 원칙은 증거의 수집·이동·보관·분석 과정이 담당자와 함께 연속적으로 기록·관리되어야 한다는 것이다.
안티 리버싱은 리버스 엔지니어링을 어렵게 만드는 보호 기술이므로, 이를 쉽게 만드는 기술이라고 한 설명은 옳지 않다.
나머지 설명은 리버스 엔지니어링의 정의·도구와 일치한다.
- 안티 디버거는 디버깅을 방해하는 안티 리버싱의 한 방법이다.
- 리버스 엔지니어링에 쓰이는 대표적 도구로 OllyDbg와 IDA가 있다.
- 리버스 엔지니어링은 완성된 소프트웨어를 역으로 분석하는 방법이다.
문자메시지(SMS)로 악성 링크를 보내 클릭을 유도하고 악성코드를 설치·정보를 탈취하는 기법은 스미싱(Smishing)으로, SMS와 피싱의 합성어이다.
나머지는 서로 다른 공격·악성코드이다.
- 루트킷은 침입 후 관리자 권한과 흔적을 은폐하는 악성 프로그램이다.
- 스턱스넷은 산업제어시스템을 겨냥한 웜이다.
- 키로깅은 키보드 입력을 가로채 정보를 수집하는 기법이다.
시스템 계정을 획득한 상태에서 쉘을 얻어 관리자로 권한을 상승할 때 쓰는 것은 로컬 백도어의 특징이며, 이를 원격 백도어의 설명으로 제시한 것은 옳지 않다.
원격 백도어는 네트워크를 통해 원격에서 접속 통로를 여는 것으로, 로컬 계정 보유를 전제하지 않는다.
- 백도어 공격 도구로 NetBus, Back Orifice 등이 있다.
- 로컬 백도어는 시스템 내부에서 동작하므로 접속 가능한 계정 획득이 전제된다.
- Schoolbus는 트로이 목마처럼 서버 파일과 클라이언트 파일로 구성된 공격 도구이다.
프로그램이 실행될 때까지 알 수 없는 가변적인 양의 데이터를 저장하기 위해 프로그램의 프로세스가 사용할 수 있도록 예약되어 있는 메인 메모리의 영역으로, 프로그램들에 의해 할당되었다가 회수되는 작용이 되풀이된다. 프로그램들이 요구하는 블록의 크기나 요구/횟수 순서에 일정한 규칙이 없다.
실행 전에는 크기를 알 수 없는 가변적인 데이터를 위해 프로세스가 할당·회수를 반복하며 사용하는 메모리 영역은 힙(Heap) 영역이다.
나머지 영역은 역할이 다르다.
- 스택은 함수 호출의 지역변수·복귀주소를 LIFO로 저장하는 영역이다.
- 텍스트 영역은 실행할 프로그램 코드가 저장되는 영역이다.
- 데이터 영역은 전역변수·정적변수가 저장되는 영역이다.
strcat(), strcpy(), gets(), scanf() 등 경계 검사를 하지 않는 함수는 사용을 피해야 할 위험 함수이므로, 이를 사용하라고 한 설명은 옳지 않다.
이들 대신 길이를 제한하는 strncpy()·fgets() 같은 안전한 함수로 대체하는 것이 대응책이다.
- 버퍼 오버플로우에는 스택 기반과 힙 기반 공격이 있다.
- 버퍼를 넘치게 해 프로그램의 이상 동작을 유발하는 기법이라는 설명은 맞다.
- 대응 방법으로 Non-Executable Stack, Stack Guard, Stack Shield가 있다.
FAT는 연결리스트 방식이어서 검색 시간이 길고 단편화가 발생하며 NTFS보다 앞선 구형 파일 시스템이므로, NTFS의 제약을 개선했다는 설명은 옳지 않다.
나머지 설명은 파일 시스템의 일반적 특성과 일치한다.
- 파일 시스템은 파일의 저장 위치를 조직화·구조화해 관리한다.
- EXT는 리눅스 고유 파일 시스템으로 계속 개량되어 왔다.
- 슈퍼 블록은 전체 블록 수와 사용·가용 블록 정보를 담아 효율적 관리를 돕는다.
인증·무결성·부인봉쇄·기밀성을 모두 지원하는 이메일 보안 기술은 S/MIME으로, 공개키 기반으로 메일을 서명·암호화한다.
나머지는 이메일 보안 기술이 아니다.
- TFTP는 인증 없이 파일을 전송하는 간이 전송 프로토콜이다.
- WEP는 무선랜 구간을 암호화하는 초기 보안 방식이다.
- WPA는 WEP를 보완한 무선랜 보안 방식이다.
| - | rw- | r-- | r-- |
| ㉠ | ㉡ | ㉢ | ㉣ |
권한 문자열 맨 앞의 종류 표시에서 '-'는 일반 파일을 뜻하고 디렉터리는 'd'로 표시되므로, '-'가 디렉터리를 나타낸다는 설명은 옳지 않다.
나머지 세 영역은 세 자리씩 끊어 읽는 권한 구분과 일치한다.
- 소유자 권한을 나타내는 세 자리(rw-)에 대한 설명은 맞다.
- 그룹 권한을 나타내는 세 자리(r--)에 대한 설명은 맞다.
- 그 외 사용자의 권한을 나타내는 세 자리(r--)에 대한 설명은 맞다.
로그인·로그아웃·시스템 재부팅 같은 시스템 접속 기록은 wtmp 등 시스템 로그가 저장하는 정보이며 쿠키가 저장하는 내용이 아니므로 옳지 않다.
나머지 설명은 쿠키의 특성과 일치한다.
- 쿠키는 클라이언트 컴퓨터에 생성·저장된다.
- 사용자와 웹사이트를 연결해 주는 상태 정보가 담긴다.
- 쿠키 자체는 텍스트 데이터라 직접 바이러스를 옮기거나 악성코드를 설치하지는 못한다.
- 순수 국내 기술로 개발된 128비트 크기의 블록 암호 알고리즘
- Feistel 구조로 128비트 알고리즘이 있음
- 1999년 국내 표준으로 제정, 2005년에는 국제 표준 제정
- IETF RFC 4269
순수 국내 기술로 개발된 128비트 블록 암호이며 1999년 국내 표준·2005년 국제 표준으로 제정되고 RFC 4269로 공개된 알고리즘은 SEED이다.
나머지는 국산 블록 암호라는 조건에 맞지 않는다.
- RSA는 공개키(비대칭) 암호로 블록 암호가 아니다.
- Triple DES는 DES를 세 번 적용한 미국 계열 블록 암호이다.
- AES는 미국 표준으로 채택된 블록 암호이다.
잘못된 시퀀스 넘버로 세션에 혼란을 주어 연결을 가로채는 것은 세션 하이재킹 계열의 특징이며 CSRF의 설명이 아니므로 옳지 않다.
CSRF는 웹사이트가 사용자의 브라우저를 신뢰하는 점을 악용해, 사용자 의지와 무관하게 공격자가 의도한 요청을 보내게 하는 공격이다.
- 사용자 의지와 무관하게 의도한 행위를 특정 웹사이트에 요청하게 한다는 설명은 맞다.
- 정상 요청이 아닌 임의 요청을 하도록 위조한다는 설명은 맞다.
- 웹사이트가 사용자의 브라우저를 신용하는 상태를 악용한다는 설명은 맞다.
- 파일의 소유자가 root이어야 함
- SetUID 비트를 가져야 함
- 바로 생성되는 임시 파일의 이름을 알고 있어야 함
SetUID root 프로그램이 생성하는 임시 파일의 이름을 미리 알고 그 생성 시점의 틈을 노리는 조건은 레이스 컨디션(Race Condition) 공격의 전제이다.
나머지 공격은 이런 임시 파일·SetUID 조건과 관련이 없다.
- 버퍼 오버플로우는 버퍼 경계를 넘겨 메모리를 덮어쓰는 공격이다.
- 포맷 스트링은 형식 문자열 입력을 악용해 메모리를 읽거나 쓰는 공격이다.
- 패스워드 크래킹은 암호를 추측·해독해 알아내는 공격이다.
패킷을 가로채 송신자인 것처럼 변조해 재전송하는 것은 중간자·스푸핑 계열의 설명이며, SQL 인젝션은 입력값을 조작해 임의의 SQL 구문을 실행시키는 공격이므로 옳지 않다.
나머지 설명은 SQL 인젝션의 특성·대응과 일치한다.
- 공격자가 입력값을 조작해 원하는 SQL 구문을 실행한다는 설명은 맞다.
- 입력값에 특수문자가 포함됐는지 검증하는 것이 대응책이라는 설명은 맞다.
- OWASP 10대 웹 보안 위험에 SQL 인젝션이 2004·2007·2010·2013·2017년판에 포함되어 있다는 설명은 맞다.
정상 AP를 사칭한 가짜 AP를 세우고 강한 신호로 접속을 유도해 정보를 가로채는 기법은 Evil Twin이다.
나머지는 무선 AP 사칭과 무관한 공격이다.
- Zero Day는 패치가 나오기 전 알려지지 않은 취약점을 노리는 공격이다.
- DDoS는 다수의 좀비 PC로 트래픽을 유발해 서비스를 마비시키는 공격이다.
- DRDoS는 반사·증폭 서버를 이용해 출발지를 숨기고 트래픽을 증폭하는 분산 반사 공격이다.
상태 코드 404는 요청한 자원을 찾을 수 없음(Not Found)을 뜻하며 PUT 요청의 성공을 의미하지 않으므로 옳지 않다(성공 응답은 2xx 계열이다).
나머지 설명은 HTTP의 사실과 일치한다.
- HTTP 1.0은 RFC 1945, HTTP 1.1은 RFC 2616에 규정되어 있다.
- HTTPS는 SSL을 이용해 클라이언트와 서버 사이 정보를 보호한다.
- Request는 GET·POST 등의 메소드로 서버에 데이터를 요청·전송할 때 보내는 패킷이다.
- 가. 해당 웹 서비스 사용자가 공격자가 작성해 놓은 XSS 코드에 접근한다. 물론 사용자는 자신이 공격자가 작성해 놓은 XSS 코드에 접근한다는 것을 인지하지 못한다. 사용자는 어떤 게시판의 글을 읽는 과정에서 공격자의 XSS 코드에 접근하게 된다.
- 나. 사용자의 시스템에서 XSS 코드가 실행된다.
- 다. 웹 서버는 사용자가 접근한 XSS 코드가 포함된 게시판의 글을 사용자에게 전달한다.
- 라. 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 저장한다. 일반적으로 공격자는 임의의 사용자나 특정인이 이용하는 게시판을 공격한다.
- 마. XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 공격을 종료한다.
XSS 공격은 공격자가 취약한 서버에 코드를 저장하는 단계로 시작해, 사용자가 그 코드에 접근하고, 웹 서버가 해당 글을 사용자에게 전달하면 사용자 시스템에서 코드가 실행되어 그 결과가 공격자에게 돌아가는 순서로 진행된다.
따라서 서버에 저장(라) → 사용자 접근(가) → 서버의 글 전달(다) → 사용자 시스템에서 실행(나) → 결과 회수·종료(마) 순서가 옳다.
특히 사용자 시스템에서 코드가 실행된 뒤라야 그 결과가 공격자에게 전달되므로, 실행 단계가 결과 전달 단계보다 앞선다.