파일명은 i-node가 아니라 디렉터리 엔트리에 저장되므로 i-node 정보에 해당하지 않는다.
디렉터리 엔트리는 파일명과 i-node 번호의 쌍이고, i-node에는 파일 타입, 접근권한, 소유자·소유그룹, 크기, 시간 정보, 링크 수, 데이터 블록 주소 등이 저장된다. 하드 링크로 한 i-node에 여러 이름을 붙일 수 있는 것도 이 구조 때문이다.
- 소유그룹: i-node에 GID로 저장된다.
- 파일 타입: 일반 파일·디렉터리·링크 등의 구분이 i-node 모드 필드에 저장된다.
- 접근권한: 소유자·그룹·기타 권한 비트가 i-node 모드 필드에 저장된다.
PGP는 디지털 서명 생성에 DSS를 허용하므로, DSS 사용을 허용하지 않는다는 설명이 틀렸다.
PGP 인증은 메시지의 해시 코드를 만들고 이를 송신자 개인키로 암호화해 서명으로 붙이며, 서명 알고리즘으로 RSA나 DSS를 사용할 수 있다.
- 송신자는 일방향 해시함수로 메시지의 해시 코드를 생성한다.
- 해시 코드를 송신자 개인키로 암호화한 결과가 메시지에 포함된다.
- 수신자는 송신자 공개키로 서명을 복호화해 해시 코드를 얻고, 직접 계산한 해시와 비교한다.
사용자·그룹 계정 정보 데이터베이스를 관리하는 구성 요소는 SAM(Security Account Manager)이다.
SAM은 계정 정보와 패스워드 해시를 보관하고 로그인 시 입력 정보와 대조한다. 이후 SRM이 SID를 부여하고 접근 허용 여부를 결정한다.
- LSA: 로그인 검증을 총괄하고 보안 정책을 관리하는 로컬 보안 기관이다.
- SRM: SID 부여, 객체 접근 허용 결정, 감사 메시지 생성을 담당한다.
- SID: 사용자·그룹을 식별하는 보안 식별자 값으로, 인증 구성 요소가 아니다.
웹 애플리케이션을 구동하는 웹 서버의 보안 설정이 취약하여 발생하는 보안 설정 오류 취약점이다. 정상적인 URL 경로 중 확인 대상 디렉터리까지만 직접 접근하여 이 취약점을 점검할 수 있다.
설명된 취약점은 디렉터리 인덱싱이다.
웹 서버의 디렉터리 리스팅 설정이 켜져 있으면, URL을 파일명 없이 디렉터리까지만 요청했을 때 그 안의 파일 목록이 노출된다. 웹 서버 설정 문제이므로 보안 설정 오류에 속하며, Apache에서는 Options의 Indexes를 제거해 막는다.
- SQL Injection: 입력값으로 DB 쿼리를 조작하는 취약점으로, 서버 설정 문제가 아니다.
- 운영체제 명령어 실행: 입력값으로 서버의 OS 명령을 실행시키는 취약점이다.
- XSS: 사용자 브라우저에서 악성 스크립트를 실행시키는 취약점이다.

(가)는 Salt, (나)는 SHA256, (다)는 /etc/shadow이다.
리눅스는 사용자 패스워드에 무작위 Salt를 덧붙인 뒤 일방향 해시 함수(SHA-256·SHA-512 등)로 변환해, 그 결과를 root만 읽을 수 있는 /etc/shadow에 저장한다. Salt 덕분에 같은 패스워드라도 저장값이 달라진다.
- RSA·ARIA는 복호화가 가능한 암호 알고리즘으로, 패스워드 저장에 쓰는 일방향 해시가 아니다.
- 패스워드에 더하는 값은 암호키가 아니라 Salt이다.
- /etc/passwd는 누구나 읽을 수 있어 현재는 패스워드 해시를 저장하지 않는다.
CS는 코드 세그먼트의 시작 주소를 저장하므로, 데이터·상수·작업 영역 주소를 저장한다는 설명이 틀렸다.
프로그램에 정의된 데이터·상수·작업 영역의 주소를 가리키는 것은 DS(데이터 세그먼트) 레지스터이다.
- EDI는 문자열 복사 등에서 목적지 주소를 저장한다.
- ECX는 반복 명령의 횟수를 세는 카운터로 쓰인다.
- EFLAGS는 연산 결과와 시스템 상태를 나타내는 플래그를 저장한다.
- 웹 서버를 기반으로 서버에 파일이 업로드되고 서버 측에서 실행되는 이러한 파일을 웹 셸(web shell)이라고 한다.
- 공격자는 웹 서버에 업로드된 웹 셸 파일을 원격지에서 실행하여 웹 서버를 공격할 수 있다.
웹 셸 업로드 공격의 대응 방법으로 옳지 않은 것은 업로드 파일명에 대한 필터링 설정이다.
웹 셸 대응의 핵심은 업로드된 파일이 서버에서 실행되지 못하게 하는 것이다. 파일명 필터링만으로는 대소문자 변형·이중 확장자 등으로 쉽게 우회되어 근본 대책이 되지 못한다.
- 업로드 파일에 대한 실행 금지: 업로드 디렉터리의 스크립트 실행 권한을 제거해 웹 셸이 동작하지 못하게 한다.
- 업로드 파일에 대한 위치 격리: 업로드 파일을 웹 루트 밖이나 별도 서버에 저장해 URL로 직접 실행할 수 없게 한다.
- 업로드 가능한 파일 형식 제한: 허용된 형식(화이트리스트)만 받아 스크립트 파일 업로드를 막는다.
참조 모니터는 주체와 주체 사이가 아니라 주체와 객체 사이의 접근을 통제하므로 설명이 틀렸다.
참조 모니터는 주체가 객체에 접근할 때마다 참조 모니터 데이터베이스(보안 정책)를 확인해 허용 여부를 결정하는 추상 기계이며, 이를 구현한 것이 보안 커널이다.
- 참조 모니터 데이터베이스를 참조해 접근통제를 수행한다.
- 모든 접근에 대해 시행되어야 하고 우회할 수 없어야 한다(완전성·격리성).
- 보안 매개변수 설정 등 다른 보안 메커니즘과 데이터를 주고받으며 상호 작용한다.
- 메일 클라이언트에서 (가) 로 메일을 보낼 때와 (가) 에서 (가) 로 메일이 중계될 때 SMTP 프로토콜을 사용한다.
- 불특정 다수의 메일 전송 및 중계를 허용하면 공격자는 스팸 메일을 보내는 도구로 (가) 를 악용할 수 있다.
(가)는 메일 전송·중계를 담당하는 MTA(Message Transfer Agent)이다.
MUA에서 MTA로 메일을 보낼 때와 MTA 간에 메일을 중계할 때 SMTP를 사용한다. 중계를 아무에게나 허용하는 오픈 릴레이 상태의 MTA는 스팸 발송에 악용된다. sendmail, postfix가 대표적인 MTA이다.
- MDA: MTA가 받은 메일을 사용자 메일함에 전달(저장)하는 요소이다.
- MUA: 사용자가 메일을 작성·읽는 클라이언트 프로그램이다.
취약점의 심각도 등급을 매기는 공개 프레임워크는 CVSS(Common Vulnerability Scoring System)이다.
CVSS는 공격 벡터·복잡도·영향도 등을 평가해 0.0~10.0의 점수와 None·Low·Medium·High·Critical 같은 심각도 등급을 산출한다.
- CVE: 공개된 개별 취약점에 붙이는 고유 식별자이다.
- CWE: 취약점을 일으키는 소프트웨어 약점의 유형 분류 체계이다.
- NVD: 미국 NIST가 운영하는 취약점 데이터베이스로, CVE에 CVSS 점수 등을 덧붙여 제공한다.
- (가) 는 컴파일러가 프로그램의 함수를 호출할 때 ret 앞에 canary 값을 주입하고, 종료할 때 canary 값을 변조했는지 확인하여 공격을 탐지한다.
- (나) 공격은 데이터의 형태와 길이에 대한 불명확한 정의로 인한 문제점 중 데이터 형태에 대한 불명확한 정의로 인한 것이다.
| (가) | (나) | |
|---|---|---|
| ① | 스택 실드 | 버퍼 오버플로 |
| ② | 스택 실드 | 포맷 스트링 |
| ③ | 스택 가드 | 버퍼 오버플로 |
| ④ | 스택 가드 | 포맷 스트링 |
(가)는 스택 가드, (나)는 포맷 스트링이다.
스택 가드는 반환 주소 앞에 canary 값을 넣고 함수 종료 시 값이 바뀌었는지 확인해 스택 오버플로를 탐지한다. 포맷 스트링 공격은 printf 등에 서식 지정자를 그대로 넘기는 것처럼 데이터 형태를 불명확하게 처리해 생긴다.
- 스택 실드는 canary가 아니라 반환 주소를 별도 안전 영역에 복사해 두었다가 함수 종료 시 비교하는 방식이다.
- 버퍼 오버플로는 데이터 형태가 아니라 데이터 길이에 대한 불명확한 정의(경계 검사 부재)로 생긴다.
사용자가 많이 가입한 웹 사이트(네이버, 구글, 페이스북 등)의 사용자 가입 정보를 이용해서 다른 웹 사이트에 별도의 가입 과정 없이 단순하게 사용자 신원을 검증하는 토큰을 제공하여 제삼자 인증 서비스를 이용할 수 있게 해 준다.
설명된 인증 방법은 OAuth이다.
OAuth는 사용자가 비밀번호를 제3자 서비스에 넘기지 않고, 네이버·구글 등 기존 계정의 인증 서버가 발급한 접근 토큰으로 다른 서비스를 이용하도록 권한을 위임하는 개방형 표준이다.
- Kerberos: 티켓 기반 대칭키 인증 프로토콜로, 주로 조직 내부 네트워크에서 사용한다.
- SSO: 한 번 인증으로 같은 조직의 여러 시스템을 이용하는 개념으로, 외부 사이트 가입 정보로 토큰을 제공하는 방식을 특정하지 않는다.
- DIAMETER: RADIUS를 개선한 네트워크 접근용 AAA 프로토콜이다.
클라우드 취약점이 전통적 IT 환경과 유사해 기존 보안시스템만으로 충분하다는 설명이 틀렸다.
클라우드는 가상화·멀티테넌시·API 기반 관리·책임 공유 모델 등 고유한 위협 요소가 있어, 기존 보안 체계에 더해 클라우드 특화 보안 대책이 필요하다.
- 클라우드 서비스 모델은 IaaS, PaaS, SaaS로 구분한다.
- KISA는 클라우드 서비스 보안인증(CSAP)을 시행하고 있다.
- CSA는 심각한 클라우드 보안 위협을 정리해 공유하고 있다.
MD5 해시값 생성기는 TPM의 구성 요소가 아니다.
TPM은 난수 발생기, RSA 키 발생기, 암복호화(서명) 엔진, SHA 계열 해시 엔진, HMAC 엔진, 비휘발성·휘발성 메모리 등으로 구성되며, MD5는 해시 엔진으로 쓰이지 않는다.
- 난수 발생기: 키 생성과 nonce 생성에 쓰이는 TPM 구성 요소이다.
- 암복호화 엔진: 데이터 암호화·복호화와 서명을 수행하는 구성 요소이다.
- RSA 키 발생기: RSA 키 쌍을 생성하는 구성 요소이다.
제시된 메시지 가운데 우선순위가 가장 높은 것은 alert이다.
syslog 우선순위는 높은 것부터 emerg → alert → crit → err → warning → notice → info → debug 순이다.
- crit: 치명적 오류로, alert보다 한 단계 낮다.
- err: 일반 오류로, crit보다 낮다.
- debug: 디버깅 정보로, 가장 낮은 우선순위이다.
사용자 브라우저로 전달된 데이터 속 악성코드가 브라우저에서 실행되는 것은 CSRF가 아니라 XSS에 대한 설명이다.
CSRF는 로그인한 사용자의 권한으로 공격자가 의도한 요청을 위조해 서버에 보내게 만드는 공격으로, 핵심은 스크립트 실행이 아니라 요청 위조이다.
- 입력 값의 특수문자를 검증·치환하면 XSS 공격에 대응할 수 있다.
- 리버스 텔넷은 방화벽이 아웃바운드 트래픽을 별로 필터링하지 않는 허점을 이용한다.
- 취약한 컴포넌트·라이브러리·프레임워크가 악용되면 데이터 손실 등이 발생할 수 있다.
PATH는 명령을 실행할 때 탐색할 디렉터리 경로 목록을 담는 환경 변수이다.
명령어를 경로 없이 입력하면 셸은 PATH에 콜론으로 나열된 디렉터리를 앞에서부터 차례로 찾아 실행하므로, PATH에 현재 디렉터리(.)를 앞에 두면 악성 명령 실행 위험이 생긴다.
- TERM은 접속 호스트 이름이 아니라 사용 중인 터미널 종류를 나타낸다.
- SHELL은 서브 셸이 아니라 로그인 셸의 경로를 나타낸다.
- PWD는 패스워드가 아니라 현재 작업 디렉터리를 나타낸다.
관리자 인증 등 정상적인 절차를 거치지 않고 시스템에 접근하기 위해 제작된 프로그램으로, 원격지에서 공격자가 몰래 정보를 수집하거나 시스템의 특정 명령을 수행하고 재구성할 수 있도록 통제한다.
설명된 공격은 백도어이며, Nessus는 백도어 도구가 아니라 취약점 점검 도구이다.
Nessus는 원격 시스템의 알려진 취약점을 스캔해 보고하는 도구로, 몰래 접근해 원격 제어하는 기능과는 목적이 다르다.
- Netbus: 원격 제어 기능을 제공하는 대표적인 백도어 프로그램이다.
- Schoolbus: Netbus 계열의 원격 제어 백도어 프로그램이다.
- Back Orifice: 윈도 시스템을 원격 제어하는 백도어 프로그램이다.
로컬 계정에 접근할 때 생성되는 이벤트는 로그온 이벤트 감사 대상이므로, 이를 계정 로그온 이벤트라고 한 설명이 틀렸다.
계정 로그온 이벤트는 도메인 컨트롤러 등에서 도메인 계정의 자격 증명을 검증할 때 생성되는 이벤트를 감사한다.
- 권한 사용은 관리자 권한이 필요한 작업 수행을 감사한다.
- 개체 액세스는 파일·디렉터리·레지스트리 키·프린터 등 개체에 대한 접근 시도와 속성 변경을 감사한다.
- 계정 관리는 사용자·그룹 생성·변경, 계정 활성화·비활성화, 패스워드 변경 등을 감사한다.
실행 코드나 데이터를 압축·암호화해 저장하는 안티 리버싱 기법은 패킹이다.
패킹된 실행 파일은 실행 시 메모리에서 원래 코드로 복원되므로, 정적 분석으로는 원본 코드를 보기 어렵다. UPX, Themida 등이 대표적인 패커이다.
- 디컴파일: 실행 파일을 고급 언어 코드로 되돌리는 리버싱 기법으로, 안티 리버싱과 반대 방향이다.
- 시큐어 코딩: 개발 단계에서 보안 약점을 제거하는 코딩 기법이다.
- 안티 디버깅: 디버거 사용을 탐지·방해하는 기법으로, 코드를 압축·암호화하는 것과는 다르다.