## 단답형 (각 3점, 총 36점)
1. 공격자가 DNS 서버의 캐시를 오염시켜 정상적인 도메인 이름을 공격자가 지정한 IP 주소로 연결되도록 하는 공격 기법은?
2. 암호화된 데이터를 복호화하지 않고도 원본 데이터의 특성을 유지한 채 연산이 가능한 암호화 기술은?
3. 네트워크 상에서 패킷의 출발지 주소를 변조하여 공격 근원지를 숨기는 기법은?
4. 개인정보 보호법에 따라 개인정보처리자가 개인정보 처리방침을 수립하고 공개해야 하는 방법 중 하나는?
5. 다음 중 stateless 프로토콜은?
a) TCP b) HTTP c) FTP d) Telnet
6. 악성코드가 자신의 코드를 변형하여 탐지를 회피하는 기술은?
7. 정보보호 관리체계(ISMS) 인증 유효기간은 최초 인증일로부터 몇 년인가?
8. 「개인정보 보호법」상 만 14세 미만 아동의 개인정보 수집 시 누구의 동의를 받아야 하는가?
9. 다음 중 대칭키 암호화 알고리즘은?
a) ECC b) ARIA c) ElGamal d) DSA
10. 네트워크에서 브로드캐스트 도메인을 논리적으로 분할하는 기술은?
11. 블록체인에서 작업 증명(Proof of Work) 방식의 대안으로 제시된, 암호화폐 보유량에 따라 채굴 권한을 부여하는 합의 알고리즘은?
12. 웹 애플리케이션에서 사용자 입력값을 검증하지 않아 발생할 수 있는 취약점으로, 서버 측 파일 시스템에 접근할 수 있게 되는 공격은?
## 서술형 (각 12점, 총 48점)
1. CSRF(Cross-Site Request Forgery) 공격의 원리를 설명하고, 이를 방지하기 위한 대책을 3가지 이상 제시하시오.
2. 디지털 포렌식 조사 과정의 주요 단계를 순서대로 나열하고, 각 단계에서 수행해야 할 핵심 작업을 간단히 설명하시오.
3. 정보보호 관리체계(ISMS)의 주요 통제 영역 5가지를 나열하고, 각 영역에 대해 간단히 설명하시오.
4. 버퍼 오버플로우 공격의 원리를 설명하고, 이를 방지하기 위한 프로그래밍 기법과 시스템 레벨의 보호 메커니즘을 각각 2가지씩 제시하시오.
## 실무형 (각 16점, 총 32점)
1. 다음은 Apache 웹 서버의 설정 파일(httpd.conf)의 일부입니다. 보안 강화를 위해 수정이 필요한 지시어를 찾아 적절한 값으로 변경하고, 그 이유를 설명하시오.
```apache
ServerTokens Full
ServerSignature On
TraceEnable On
```
2. 다음은 취약한 Java 코드입니다. 이 코드에서 발생할 수 있는 보안 취약점을 지적하고, 이를 해결하기 위한 안전한 코드로 수정하시오.
```java
import java.io.File;
public class FileManager {
public static void deleteFile(String fileName) {
File file = new File(fileName);
if (file.exists()) {
file.delete();
System.out.println("File deleted successfully");
} else {
System.out.println("File not found");
}
}
public static void main(String[] args) {
String userInput = System.console().readLine("Enter file name to delete: ");
deleteFile(userInput);
}
}
```
## 단답형 (각 3점, 총 36점)
1. 답: DNS 캐시 포이즈닝 (DNS Cache Poisoning)
해설: 공격자가 DNS 서버의 캐시를 조작하여 정상적인 도메인 이름을 악의적인 IP 주소로 연결시키는 공격입니다.
2. 답: 동형 암호 (Homomorphic Encryption)
해설: 암호화된 상태에서 연산이 가능한 암호화 기술로, 데이터 프라이버시를 유지하면서 분석이 가능합니다.
3. 답: IP 스푸핑 (IP Spoofing)
해설: 패킷의 출발지 IP 주소를 위조하여 공격의 출처를 숨기거나 다른 시스템으로 위장하는 기법입니다.
4. 답: 인터넷 홈페이지에 지속적으로 게재
해설: 개인정보처리자는 개인정보 처리방침을 수립하고 홈페이지에 공개해야 합니다.
5. 답: b) HTTP
해설: HTTP는 각 요청이 독립적으로 처리되는 stateless 프로토콜입니다.
6. 답: 변종 (Metamorphic) 기법
해설: 악성코드가 실행될 때마다 코드를 변형하여 탐지를 어렵게 만드는 기술입니다.
7. 답: 3년
해설: ISMS 인증의 유효기간은 최초 인증일로부터 3년입니다.
8. 답: 법정대리인
해설: 만 14세 미만 아동의 개인정보 수집 시 법정대리인의 동의를 받아야 합니다.
9. 답: b) ARIA
해설: ARIA는 한국의 국가 표준 블록 암호 알고리즘으로, 대칭키 방식입니다.
10. 답: VLAN (Virtual LAN)
해설: VLAN은 물리적 네트워크를 논리적으로 분할하여 브로드캐스트 도메인을 나누는 기술입니다.
11. 답: PoS (Proof of Stake)
해설: PoS는 암호화폐 보유량에 따라 채굴 권한을 부여하는 합의 알고리즘입니다.
12. 답: 경로 조작 (Path Traversal) 공격
해설: 사용자 입력값을 제대로 검증하지 않아 서버의 파일 시스템에 무단으로 접근할 수 있게 되는 취약점입니다.
## 서술형 (각 12점, 총 48점)
1. CSRF(Cross-Site Request Forgery) 공격의 원리와 대책:
원리: 공격자가 피해자의 브라우저를 이용하여 피해자의 권한으로 원하지 않는 동작을 수행하게 하는 공격입니다.
대책:
a) CSRF 토큰 사용: 각 요청마다 고유한 토큰을 생성하여 검증
b) Referer 검증: 요청의 출처를 확인하여 허용된 도메인에서만 처리
c) SameSite 쿠키 속성 사용: 크로스 사이트 요청 시 쿠키 전송 제한
d) 중요 동작에 대해 재인증 요구
2. 디지털 포렌식 조사 과정:
a) 준비 단계: 법적 근거 확보, 도구 준비
b) 수집 단계: 데이터 수집, 무결성 보장
c) 조사 단계: 데이터 분석, 증거 추출
d) 분석 단계: 증거 연관성 분석, 타임라인 구성
e) 보고 단계: 조사 결과 문서화, 법정 제출 준비
3. ISMS 주요 통제 영역:
a) 정보보호 정책: 조직의 정보보호 방향성 제시
b) 정보보호 조직: 정보보호 조직 구성 및 역할 정의
c) 정보자산 관리: 정보자산 식별 및 중요도 분류
d) 정보보호 교육: 임직원 대상 보안 인식 제고 활동
e) 접근 통제: 인가된 사용자만 접근 허용
4. 버퍼 오버플로우 공격 원리와 대책:
원리: 프로그램이 할당된 메모리 버퍼의 경계를 넘어 데이터를 쓰거나 읽을 때 발생하는 취약점을 이용한 공격입니다.
프로그래밍 기법:
a) 경계 검사: 입력 데이터의 길이를 검증
b) 안전한 함수 사용: strcpy() 대신 strncpy() 등 사용
시스템 레벨 보호:
a) ASLR (주소 공간 배치 무작위화): 메모리 주소를 무작위로 배치
b) DEP (데이터 실행 방지): 데이터 영역에서 코드 실행 차단
## 실무형 (각 16점, 총 32점)
1. Apache 웹 서버 설정 수정:
수정 전:
```apache
ServerTokens Full
ServerSignature On
TraceEnable On
```
수정 후:
```apache
ServerTokens Prod
ServerSignature Off
TraceEnable Off
```
해설:
- ServerTokens Prod: 서버 정보 노출 최소화
- ServerSignature Off: 에러 페이지 등에서 서버 정보 숨김
- TraceEnable Off: HTTP TRACE 메소드 비활성화로 XST 공격 방지
2. Java 코드 보안 취약점 수정:
취약점:
- 경로 조작 취약점: 사용자 입력을 검증 없이 파일 경로로 사용
- 안전하지 않은 파일 삭제: 삭제 작업의 결과를 확인하지 않음
수정된 코드:
```java
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileManager {
private static final String ALLOWED_DIRECTORY = "/safe/directory/";
public static void deleteFile(String fileName) {
try {
Path filePath = Paths.get(ALLOWED_DIRECTORY, fileName).normalize();
if (!filePath.startsWith(ALLOWED_DIRECTORY)) {
throw new SecurityException("Access to file outside allowed directory");
}
File file = filePath.toFile();
if (file.exists()) {
if (file.delete()) {
System.out.println("File deleted successfully");
} else {
System.out.println("Failed to delete file");
}
} else {
System.out.println("File not found");
}
} catch (SecurityException e) {
System.out.println("Security violation: " + e.getMessage());
}
}
public static void main(String[] args) {
String userInput = System.console().readLine("Enter file name to delete: ");
deleteFile(userInput);
}
}
```
해설:
- 허용된 디렉토리 내의 파일만 삭제 가능하도록 제한
- 경로 정규화 및 검증을 통해 경로 조작 공격 방지
- 파일 삭제 결과 확인 및 예외 처리 추가