정보보안기사 실기 26년 대비 예상문제 (AI 요약)

2025. 11. 24. 14:35·자격증/정보보안 기사

 

 

AI에게 정보보안기사 실기 예상문제를 부탁해 보았습니다.
===============================================================

[주요 출제 경향]

- 2022~2025 기출 분석 결과, 위험관리·ISMS-P·법규, 시스템·네트워크, 웹 취약점, 로그·포렌식이 반복 출제
- 최근 단답·서술형 비중 증가, 실무형 축소 추세
- 같은 개념을 다양한 상황과 용어로 변형해 재출제하는 패턴 강함
- 개념 암기가 아닌 "왜"와 "어떻게"를 설명할 수 있는 능력 중요

===============================================================

제1부: 단답형 문제 (12문제) - 각 3점 만점

===============================================================

【1번】 위험분석 접근법
─────────────────────────────────────────────
문제: 위험분석 접근방법 세 가지의 명칭을 쓰시오.

정답:
  ① 기준선(베이스라인) 접근법
  ② 상세 위험 분석
  ③ 복합 접근법

해설:
  • 베이스라인: 모든 시스템에 공통 기준선 적용, 빠르고 저비용
  • 상세 위험분석: 자산·위협·취약성을 정량·정성 분석, 정확하지만 고비용
  • 복합 접근법: 고위험만 상세, 나머지 베이스라인 적용, 균형


【2번】 위험대응 전략
─────────────────────────────────────────────
문제: ISMS-P에서 정의하는 위험 처리 방법 네 가지를 쓰시오.

정답:
  ① 위험 수용 (위험을 감수하고 진행)
  ② 위험 감소 (완화 - 보안 통제로 위험 수준 낮춤)
  ③ 위험 전가 (보험·외주 등으로 이전)
  ④ 위험 회피 (위험 활동 중단)

해설:
  • 각 전략의 선택은 위험도·비용·영향도에 따라 결정
  • ISMS-P 위험관리계획에서 각 위험에 대응 방법 명시


【3번】 자산·위협·취약성 정의
─────────────────────────────────────────────
문제: 정보보호 위험관리에서 자산, 위협, 취약성을 한 줄씩 정의하시오.

정답:
  자산: 조직이 보호해야 할 유형(HW·DB·장비)·무형(정보·지적재산권) 대상

  위협: 자산에 손실을 초래할 수 있는 원하지 않는 사건의 잠재적 원인
        또는 외부/내부 행위자 (예: 해킹, 자연재해, 내부자)

  취약성: 위협이 악용할 수 있는 자산·통제의 기술적·관리적·물리적 약점
         (예: 보안 패치 미흡, 권한 과다 설정, 불충분한 감시)


【4번】 리눅스 로그 파일
─────────────────────────────────────────────
문제: 리눅스에서 (1) 현재 로그인 상태를 저장하는 파일, 
      (2) 성공 로그인/로그아웃 누적 기록 파일, 
      (3) 마지막 성공 로그인 기록 파일명을 순서대로 쓰시오.

정답:
  (1) utmp     → 현재 로그인 사용자 정보 실시간 기록
  (2) wtmp     → 로그인·로그아웃 이력 누적 (wtmp, lastlog와 다름)
  (3) lastlog  → 각 사용자별 최근 로그인 시간·IP 기록

추가 정보:
  • btmp: 실패한 로그인 시도 기록
  • lastcomm: 실행 완료된 프로세스 기록 (일부 시스템)


【5번】 리눅스 비밀번호 파일과 권한
─────────────────────────────────────────────
문제: 리눅스에서 (1) 사용자 계정 정보 저장 파일명과 권한(3자리),
      (2) 암호 해시 저장 파일명과 권한(3자리)을 쓰시오.

정답:
  (1) /etc/passwd  →  권한 644 (r--r--r--)
      형식: username:x:uid:gid:description:home:shell

  (2) /etc/shadow  →  권한 400 (r-------)
      형식: username:$id$salt$hash:lastchange:min:max:warn:inactive:expire

해설:
  • passwd는 일반 사용자도 읽어야 하므로 644
  • shadow는 암호해시 저장이므로 root만 읽을 수 있도록 400
  • $id: 1=MD5, 5=SHA-256, 6=SHA-512


【6번】 PAM 모듈 유형
─────────────────────────────────────────────
문제: PAM(Pluggable Authentication Module) 모듈 유형 중
      (A) 비밀번호·인증 정보 검사 담당,
      (B) 계정 유효성·접근정책 검사 담당,
      (C) 세션 시작·종료 시 작업 담당 유형명을 쓰시오.

정답:
  (A) auth     → 사용자 신원 확인 (비밀번호 검증)
  (B) account  → 계정 유효성·접근 정책 검증 (계정 만료 확인 등)
  (C) session  → 세션 시작/종료 시 추가 작업 (로깅·환경 설정)

기타 모듈:
  • password: 비밀번호 변경 관리


【7번】 VLAN 종류
─────────────────────────────────────────────
문제: (1) 스위치 포트 기반,
      (2) MAC 주소 기반,
      (3) 네트워크(IP) 주소 기반,
      (4) 프로토콜 기반 VLAN을 각각 무엇이라 하는가?

정답:
  (1) 포트 기반 VLAN (Port-based VLAN)
      → 스위치 포트에 수동으로 VLAN 할당, 설정 간단·안정적
      → 기기 이동 시 재설정 필요

  (2) MAC 기반 VLAN (MAC-based VLAN)
      → 호스트 MAC 주소로 자동 할당
      → 이동 시 동일 VLAN 유지, VMPS 서버 필요

  (3) 네트워크주소 기반 VLAN (IP-based VLAN)
      → IP 주소 범위로 VLAN 할당

  (4) 프로토콜 기반 VLAN (Protocol-based VLAN)
      → 이더타입(Ethertype)으로 VLAN 할당 (예: IPX, IP)


【8번】 스위치 프레임 전송 방식
─────────────────────────────────────────────
문제: LAN 스위치의 프레임 전송 모드 세 가지 명칭을 쓰시오.

정답:
  ① Cut-through (컷-쓰루)
     → 목적지 MAC 주소만 읽고 즉시 전송
     → 속도 빠름, 오류 검사 없음 → 오류율 높음

  ② Fragment-free (프래그먼트 프리)
     → 처음 64바이트 읽은 후 전송 (중간 크기 프레임까지 확인)
     → 속도·정확성 중간

  ③ Store-and-forward (스토어 앤 포워드)
     → 전체 프레임 수신 후 CRC 검사 후 전송
     → 속도 느림, 오류 검사 철저 → 신뢰성 높음


【9번】 IPsec 기본
─────────────────────────────────────────────
문제: IPsec에서 (1) 인증·무결성·기밀성을 제공하는 프로토콜 두 가지,
      (2) 동작 모드 두 가지의 명칭을 쓰시오.

정답:
  (1) 프로토콜:
      ① AH (Authentication Header) 
         → 인증·무결성 제공, 기밀성 없음
         → 재생 공격 방지를 위해 시퀀스 번호 사용
      
      ② ESP (Encapsulating Security Payload)
         → 기밀성·인증·무결성 동시 제공
         → AH보다 광범위한 보호

  (2) 모드:
      ① 전송 모드 (Transport Mode)
         → 페이로드만 암호화, 원본 IP 헤더 유지
         → 호스트 간 통신에 사용

      ② 터널 모드 (Tunnel Mode)
         → 전체 패킷(IP 헤더 포함) 캡슐화·암호화
         → VPN에 주로 사용


【10번】 개인정보 마스킹 방식
─────────────────────────────────────────────
문제: DB에서 개인정보 비식별화 시 (1) 정규표현식 등 규칙으로 
      특정 위치 문자만 치환하는 방식,
      (2) SQL을 분석해 조건에 맞는 값만 마스킹하는 방식 이름을 쓰시오.

정답:
  (1) 패턴 기반 마스킹 (Pattern-based Masking)
      예: 주민등록번호 뒤 7자리만 * 치환 → 123456-*******
      → 규칙이 명확하면 구현 간단, 오탐·미탐 가능성 있음

  (2) SQL 파싱 기반 마스킹 (SQL-based Masking)
      예: WHERE salary > 100000000 조건에만 급여 마스킹
      → 조건별 선별 마스킹 가능, 구현 복잡하나 정확도 높음


【11번】 쿠키 보안 속성
─────────────────────────────────────────────
문제: XSS 기반 쿠키 탈취 방지에 사용하는 쿠키 속성 두 가지와 각각의 기능을 쓰시오.

정답:
  (1) Secure 속성
      → HTTPS 연결에서만 쿠키 전송
      → 평문 HTTP 전송 시 자동 제외 (중간자 공격 방지)

  (2) HttpOnly 속성
      → 자바스크립트(document.cookie)에서 접근 불가
      → XSS 기반 쿠키 탈취 방지

추가 속성:
  • SameSite: CSRF 공격 방지 (Strict/Lax/None)
  • Domain/Path: 쿠키 유효 범위 지정
  • Max-Age/Expires: 쿠키 유효 기간


【12번】 디지털 포렌식 5대 원칙
─────────────────────────────────────────────
문제: 디지털 포렌식 5대 원칙 중 세 가지를 선택해 명칭만 쓰시오.

정답 (모두 알면 5점, 3개 이상 정답 시 3점):
  ① 정당성 (Justifiability)
     → 적법 절차에 따른 증거 수집

  ② 재현성 (Reproducibility)
     → 동일한 조건에서 동일한 결과 도출 가능

  ③ 신속성 (Speediness)
     → 휘발성 증거부터 우선 확보

  ④ 연계보관성 (Chain of Custody)
     → 증거 인수·인계·보관 과정 문서화

  ⑤ 무결성 (Integrity)
     → 증거의 위·변조 방지 및 입증 (해시값 기록 등)


===============================================================

제2부: 서술형 문제 (6문제) - 각 12점 (실제로는 4문제)

===============================================================

【1번】 위험분석 접근법 비교 서술 (12점)
─────────────────────────────────────────────
문제:
  베이스라인 접근법, 상세 위험분석, 복합 접근법의 개념을 각각 설명하고,
  복합 접근법의 장점과 단점을 서술하시오. (채점: 개념 설명 3점, 장단점 2점)

모범답안 작성 지침:

1) 베이스라인 접근법 개념 (1점):
   모든 시스템·조직에 공통적으로 적용할 보호 기준선(정책·표준)을 정하고
   일괄 적용해 최소 보호 수준을 빠르게 확보하는 접근 방식

2) 상세 위험분석 개념 (1점):
   개별 시스템·자산의 가치, 위협 발생 가능성, 취약성 정도를 정량적·정성적으로
   분석하여 각각 위험도(Risk = Asset × Threat × Vulnerability)를 산정하는 방식

3) 복합 접근법 개념 (1점):
   고위험도 영역은 상세 위험분석으로 정밀하게 분석하고,
   저위험도 영역은 베이스라인으로 일괄 처리해 효율성을 높이는 방식

4) 복합 접근법 장점 (1점):
   - 고위험 자산에 자원을 집중 배분 → 비용 효율성
   - 저위험도 항목의 불필요한 분석 생략 → 시간 단축
   - 정확성과 효율성의 균형 달성

5) 복합 접근법 단점 (1점):
   - 고위험 영역 식별 오류 시 핵심 자산이 보호되지 못할 위험
   - 저위험으로 분류된 영역의 위험도가 증가할 경우 대응 지연
   - 적절한 분류 기준 수립의 어려움


【2번】 ISMS-P 물리보안·관리체계 서술 (12점)
─────────────────────────────────────────────
문제:
  ISMS-P에서 물리보호(2.4) 영역의 주요 통제 항목을 3개 이상 예로 들고,
  정보보호 방침과 실행계획 수립이 왜 중요한지 설명하시오.
  (채점: 물리보호 항목 설명 2점, PDCA 관점 2점, 중요성 1점)

모범답안 작성 지침:

1) 물리보호(2.4) 주요 통제 항목 설명 (2점):

   ① 보호구역 지정 (2.4.1)
      → 정보시스템이 위치한 구역을 명확히 지정·표시·제한
      → 승인받지 않은 사람의 접근 방지

   ② 출입통제 (2.4.2)
      → 출입문, 경비 인력, 카드키, 생체인식 등으로 물리적 접근 제한
      → 사용자 인증·권한 기반 입퇴실 관리

   ③ 정보시스템 보호 (2.4.3)
      → 서버·네트워크 장비를 잠금·케이지·랙 등으로 보호
      → 장비 도난·무단 연결 방지

   ④ 보호설비 운영 (2.4.4)
      → CCTV 감시, 화재감지기, 소화기 등 설비 운영·점검
      → 사건 기록·환경 사고 방지

   ⑤ 반출입 기기 통제 (2.4.5)
      → 노트북·USB 등 외부 반출 정책·기록
      → 정보 유출·외부 악성코드 유입 방지

   ⑥ 업무환경 보안 (2.4.6)
      → 청소용역자 관리, 쓰레기 처리(파쇄) 등
      → 민감 정보 우발적 노출 방지

2) 정보보호 방침과 실행계획의 중요성 (2점):

   정보보호 방침:
   - 조직의 정보보호 목표·범위·책임·원칙을 명문화
   - 임직원이 따라야 할 기준과 기대치 명확화
   - 조직 전체 정보보호 방향의 최상위 지침 역할

   정보보호 실행계획:
   - 방침을 구체적 프로젝트·일정·예산으로 구현하는 실행 로드맵
   - ISMS-P의 "실행(DO)" 단계에서 필수
   - 계획 없이는 방침이 선언적 지침에만 그침

3) PDCA 관점에서의 중요성 (1점):
   - Plan: 방침 수립 + 실행계획으로 목표·수단 정의
   - Do: 실행계획에 따른 보안 투자·프로젝트 추진
   - Check: 방침·계획 이행도 감사·평가
   - Act: 부족 부분 개선·방침 개정


【3번】 리눅스 계정·세션·로그 보안 강화 (12점)
─────────────────────────────────────────────
문제:
  리눅스 서버의 계정·세션·로그 측면 보안을 강화하기 위해 적용할 수 있는
  설정 4가지를 선정하고, 각 설정의 목적과 효과를 설명하시오.
  (채점: 각 설정당 1점 = 4점, 설정 선정의 타당성 1점)

모범답안 작성 지침:

1) TMOUT 환경변수 설정 (1점):
   설정: export TMOUT=600  (또는 /etc/profile에 영구 등록)
   목적: 세션 유휴 상태 시간 제한
   효과: 장시간 방치된 터미널 세션을 자동 종료
        → 무단 접근·세션 하이재킹 방지

2) /etc/securetty 설정 (1점):
   내용: Root가 로그인 가능한 TTY(터미널) 목록 지정 예) tty1, tty2만 허용
   목적: Root의 원격 직접 로그인(SSH/Telnet) 차단
   효과: 일반 사용자 계정 탈취 후 root 권한 직접 탈취 시도 방지
        → 공격 난이도 상승

3) /etc/passwd·/etc/shadow 권한 관리 (1점):
   설정:
   - /etc/passwd: 644 (r--r--r--)
   - /etc/shadow: 400 (r-------)
   목적: 암호 해시 파일 접근 권한 최소화
   효과: 비root 사용자의 shadow 파일 읽기 불가
        → 오프라인 암호 크래킹·사전 공격 난이도 상승

4) World-writable 파일 검사·제거 (1점):
   명령: find / -type f -perm -2 2>/dev/null (또는 -perm /o+w)
   목적: 모든 사용자가 쓰기 가능한 파일 탐지
   효과: 권한 상승·정상 파일 변조·백도어 설치 발판 제거
        → 시스템 무결성 보증

추가 설정 예시:
   - su/sudo 명령 감시 (pam_wheel, PAM log 활성화)
   - SSH 보안 설정 (PermitRootLogin no, PubkeyAuthentication yes 등)
   - 로그 아카이빙·원격 전송 (rsyslog 설정)


【4번】 웹 파일 업로드 취약점과 대응 (12점)
─────────────────────────────────────────────
문제:
  웹 애플리케이션의 파일 업로드 기능에서 발생할 수 있는 주요 취약점을
  설명하고, 공격자가 업로드를 이용한 임의 명령 실행에 성공하는 조건 2가지,
  그리고 보완 대책 3가지를 서술하시오.
  (채점: 취약점 설명 1점, 성공 조건 2점, 대책 2점)

모범답안 작성 지침:

1) 파일 업로드 취약점의 종류 (1점):

   MIME 타입 검증 우회:
   - 서버가 Content-Type 헤더만 확인할 때
   - 공격자가 웹쉘 파일(shell.php)을 image/jpeg으로 변조해 업로드
   - 검증 우회 후 백엔드에서 php 확장자로 저장됨

   매직넘버 검증 부족:
   - 파일 확장자+MIME만 확인할 때
   - 실제 파일 헤더(매직넘버)를 위조할 수 없음
   - 그러나 일부 이미지 라이브러리 구멍 존재 가능

2) 임의 명령 실행 성공 조건 (2점):

   조건 1: 업로드 디렉터리의 실행 권한 설정
   - 일반적으로 /var/www/upload 같은 폴더가 웹루트 하위에 위치
   - chmod 755 등으로 실행 권한이 있을 때
   - 업로드된 웹쉘(shell.php)이 실행 가능해짐

   조건 2: 외부에서 업로드 파일에 직접 접근 가능
   - http://example.com/upload/shell.php 처럼 URL 직접 호출 가능
   - 업로드 디렉터리가 웹 루트 하위 & .htaccess 등 제한 없을 때
   - 공격자가 URL 호출로 shell.php 실행 → 서버 명령 실행

3) 보완 대책 (2점 이상):

   애플리케이션 측:
   - 확장자 화이트리스트: .jpg, .png 등만 허용 (블랙리스트 피함)
   - 파일 MIME 타입+매직넘버 검사: Content-Type + 파일 헤더 검증
   - 업로드 후 재검증: 저장 후 image/jpeg 라이브러리로 재이미지화

   서버(시스템) 측:
   - 업로드 디렉터리 실행 권한 제거: chmod 644 등으로 실행 불가 설정
   - 웹루트 외 저장: 업로드 파일을 /var/upload 등 웹 외부에 저장
   - 파일명 난독화: 저장 시 UUID 또는 hash로 파일명 변경
   - .htaccess 설정: <FilesMatch "\\.(php|exe|sh)$"> Deny from all

   보안솔루션 측:
   - WAF(Web Application Firewall) 정책 적용
   - 파일 업로드 감시 및 격리 시스템(DLP 등) 연동


【5번】 이메일 인증 (SPF·DKIM·DMARC) (12점)
─────────────────────────────────────────────
문제:
  SPF와 DKIM의 개념과 동작 방식을 각각 설명하고, 두 기술을 결합한 DMARC의
  목적과 효과를 서술하시오.
  (채점: SPF 설명 1.5점, DKIM 설명 1.5점, DMARC 설명 2점)

모범답안 작성 지침:

1) SPF (Sender Policy Framework) - 1.5점:

   개념:
   - 도메인의 DNS TXT 레코드에 "어떤 IP가 이 도메인으로 메일을 보낼 수 있는가"를 등록
   - 예: v=spf1 ip4:203.0.113.1 include:google.com ~all

   동작 방식:
   1. 공격자가 attacker@example.com으로 스푸핑 메일 발송
   2. 수신 서버가 Envelope From (Return-Path) 주소 확인 → example.com
   3. example.com의 DNS SPF 레코드 조회
   4. 발송 서버 IP가 SPF 레코드의 허용 IP 목록에 있는지 확인
   5. 없으면 fail 또는 softfail → 메일 거부/스팸 폴더

   장점:
   - 도메인 위장 발송 탐지 용이
   - 기존 메일 인프라 변경 최소

   제한:
   - SPF alignment 문제: SMTP 경로와 From 도메인 일치 보장 안 됨
   - 메일 전달(forwarding) 시 실패 가능


2) DKIM (DomainKeys Identified Mail) - 1.5점:

   개념:
   - 발신 도메인이 개인키로 메일(헤더·본문)에 전자서명 첨부
   - 수신 측이 DNS 공개키로 서명 검증 → 위장·변조 탐지

   동작 방식:
   1. 발송 서버: 메일 헤더·본문을 SHA-256 해시화
   2. 발송 서버: 개인키로 해시값 서명 → DKIM-Signature 헤더 첨부
      (형식: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
       s=selector; h=from:to:subject:date; bh=...; b=...)
   3. 수신 서버: DKIM-Signature에서 selector(s=) + domain(d=) 추출
   4. 수신 서버: selector._domainkey.example.com DNS TXT 레코드 조회
   5. 공개키 획득 후 서명 검증
   6. 검증 성공 → 발신자 신원 확인 & 메일 위변조 없음 증명

   장점:
   - 메일 본문 변조 탐지 가능
   - 발신자 암호학적 증명
   - 메일 전달 시에도 작동

   제한:
   - 발송 서버 설정 필요 (개인키 관리)
   - 수신 서버 설정 필요 (공개키 배포)


3) DMARC (Domain-based Message Authentication, Reporting & Conformance) - 2점:

   개념:
   - SPF + DKIM 결과를 수집·정책화·리포팅하는 정책 체계
   - 도메인 소유자가 "SPF/DKIM 실패 시 어떻게 처리할지" 정책 지정

   DNS TXT 레코드 예시:
   v=DMARC1; p=quarantine; rua=mailto:admin@example.com; ruf=mailto:forensics@example.com

   정책(p) 옵션:
   - none: 조치 없음, 리포트만 전송
   - quarantine: 의심 메일을 스팸 폴더 격리
   - reject: 메일 거부

   동작 흐름:
   1. 수신 서버: SPF/DKIM 검증 수행
   2. SPF 통과하지만 DKIM 실패 또는 그 반대의 경우
   3. DMARC alignment 정책 적용 (relaxed/strict)
      - Relaxed: 서브도메인 허용 (mail.example.com → example.com)
      - Strict: 완벽한 도메인 일치만 허용
   4. 정책 불일치 시 p=quarantine이면 격리, p=reject이면 거부
   5. 일일/주간 리포트(Aggregate Report) 생성 → admin@example.com으로 전송
   6. 위조 시도 시 Forensics Report(ruf) 별도 전송

   효과:
   - SPF/DKIM만으로 방어 불가한 부위 보완
   - 도메인 스포핑 종합 대응
   - 메일 보안 통합 모니터링


【6번】 디지털 포렌식 5대 원칙 적용 사례 (12점)
─────────────────────────────────────────────
문제:
  디지털 포렌식 5대 원칙(정당성, 재현성, 신속성, 연계보관성, 무결성) 중
  세 가지를 선택해 정의하고, 침해사고 현장에서 각 원칙을 어떻게 준수해야
  하는지 현장 사례를 들어 설명하시오.
  (채점: 정의 3점, 현장 준수 방법 2점)

모범답안 작성 지침 (세 가지 선택 예시):

1) 정당성 (Justifiability) - 1점:

   정의:
   증거 수집이 법적 절차를 준수하고 적절한 권한 하에서 이루어져야 한다는 원칙
   - 적법 절차: 영장 취득, 내부 인가, 법정 대리인 입회 등
   - 부적절 수집: 비인가 스니핑, 도청, 불법 침입 등은 증거능력 상실

   현장 준수 사례 (2점):
   - 경찰·검찰·법원으로부터 압수수색 영장 획득 후 컴퓨터 디스크 수집
   - 내부 사건 (예: 내부자 의심): CISO·법무팀 승인 후 증거 수집
   - 수집 시 변호사·감시자 입회로 적법성 확보
   - 수집 과정 전체 영상 기록·문서화 (법적 공방 대비)


2) 재현성 (Reproducibility) - 1점:

   정의:
   동일한 절차·환경·데이터로 분석을 반복할 때 같은 결과가 나와야 한다는 원칙
   - 타 전문가가 같은 도구·방법으로 검증 가능해야 함
   - 주관적 해석 배제, 객관적 사실만 기록

   현장 준수 사례 (2점):
   - 디스크 이미징:
     * Write blocker 사용해 원본 디스크 접촉 차단 (변조 방지)
     * dd if=/dev/sda of=image.img bs=4096 명령으로 1:1 복사
     * 이미징 전후 MD5/SHA256 해시값 기록
       (예: Original: a1b2c3d4e5f6... → Image: a1b2c3d4e5f6... ✓ 일치)
     * 이미지로만 분석 수행 (원본 접근 절대 금지)
   - 분석 도구 & 방법 기록:
     * 사용 도구(FTK, Encase 등) 버전·설정 명시
     * 분석 절차 단계별 스크린샷 또는 로그 저장
     * 다른 포렌식 전문가가 같은 도구로 재분석 가능하도록 정리


3) 신속성 (Speediness) - 1점:

   정의:
   증거 보전의 우선순위를 고려해 휘발성 높은 정보부터 수집해야 한다는 원칙
   - 메모리·네트워크 연결 정보는 전원 차단 시 소실됨
   - 하드디스크는 상대적으로 휘발성 낮음

   현장 준수 사례 (2점):
   - 우선순위별 증거 수집:
     1순위: 메모리 덤프 (즉시 수행, 전원 유지)
            → volatility, dd if=/dev/mem of=memory.bin 등으로 메모리 캡처
     2순위: 네트워크 연결 정보 (netstat, ss 명령 기록)
            → netstat -anp > network_state.txt (활성 연결 저장)
     3순위: 로그 파일 (syslog, auth.log 등 백업)
     4순위: 하드디스크 이미징
   - 절대 금지: 혼란 중 디스크 접근 → 메모리 휘발 → 나중에 이미징
               (증거 손상 + 신속성 원칙 위배)


또는 다른 조합 선택 가능:

4) 연계보관성 (Chain of Custody) - 1점:

   정의:
   증거의 수집·인수·인계·보관 과정을 문서화해 증거의 출처·무결성·연속성을 증명하는 원칙

   현장 준수 사례 (2점):
   - 증거 수집 시:
     * "2025-11-24 14:30, HDD 1개 (SN: 123ABC), 용량 1TB"
     * "수집자: A, 서명, 타임스탬프"
   - 증거 이동 시마다 기록:
     * "14:35 A → B로 인수인계, B 서명"
     * "냉동보관실 입고, 보관자 C 서명"
   - 분석 단계별 기록:
     * "15:00 분석자 D가 증거 인수, 봉인 상태 확인 ✓"
     * "해시값 검증 ✓ (원본과 일치)"
   - 법정 제출 전 최종 확인:
     * 증거 수집~분석~제출까지 모든 단계 기록 제출
     * "누가 언제 어떤 목적으로 접근했는가" 전체 추적 가능


5) 무결성 (Integrity) - 1점:

   정의:
   증거의 변조·손상을 방지하고, 변조되지 않았음을 암호학적으로 입증해야 한다는 원칙

   현장 준수 사례 (2점):
   - 해시값 기록 & 검증:
     * 원본 디스크: MD5 = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
     * 이미지 생성 완료 후 재계산: MD5 = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
     * 일치 ✓ → 이미지 정합성 증명
   - 저장 매체 보호:
     * 증거 저장 매체(CD/USB 등)를 손상으로부터 보호
     * 냉동 보관실 등 통제된 환경에서 보관
   - 증거 접근 제한:
     * 필요한 사람만 접근 (접근 로그 기록)
     * 불필요한 도구/소프트웨어 설치 금지 (의도치 않은 변조 방지)
   - 분석 후 검증:
     * 최종 분석 보고서에 해시값 재기록
     * "본 분석 과정에서 증거 무결성 확인 완료" 명시


===============================================================

제3부: 실무형 시나리오 문제 (2문제 중 선택) - 각 16점 만점

===============================================================

【1번】 리눅스 서버 보안 점검 시나리오 (16점)
─────────────────────────────────────────────
[상황 제시]

귀사 정보보안팀이 운영 중인 리눅스 서버에서 정기 보안 점검을 수행했습니다.
다음과 같은 설정이 확인되었습니다.

1) SSH 설정
   /etc/ssh/sshd_config:
   → PermitRootLogin yes (root 원격 직접 로그인 허용)

2) 세션 관리
   /etc/profile:
   → TMOUT 설정이 전혀 없음 (타임아웃 무제한)

3) 파일 권한
   /etc/passwd:  -rw-rw-rw- (666)
   /etc/shadow:  -rw-r----- (640)

4) 파일시스템 점검
   find / -type f -perm -2 결과:
   → world-writable 파일 다수 발견 (예: /tmp/test.sh, /opt/app/config.txt 등)

[요구사항]

(1) 각 항목별 보안 취약점 설명 (6점)
    - 취약점 명칭
    - 보안상 영향 (공격자의 가능 행동)
    - CVSS 또는 심각도 평가 (High/Medium/Low)

(2) 개선 조치 방법 (6점)
    - 각 항목별 구체적 설정 방법 또는 명령 예시
    - 설정 후 검증 방법

(3) 추가 보안 강화 방안 (3점)
    - 위 4가지 외 리눅스 서버 보안 강화를 위한 추가 조치 2~3가지

[모범답안 작성 지침]

(1) 각 항목별 취약점 분석 (6점):

【항목 1: SSH root 원격 로그인 허용】(1.5점)
취약점: 원격 Root 권한 탈취 위험
영향:
  - 일반 사용자 계정 탈취 후, SSH로 root 직접 로그인 시도
  - 로그인 성공 시 시스템 최고 권한 즉시 확보
  - root 권한으로 백도어 설치, 시스템 전체 장악
심각도: HIGH (최상위 권한 탈취)

【항목 2: TMOUT 미설정】(1.5점)
취약점: 세션 타임아웃 없음 → 장시간 방치 세션 지속
영향:
  - 사용자가 로그오프하지 않고 자리 떠날 경우
  - 다른 사용자가 해당 터미널 접근 → 무단 명령 실행
  - 세션 하이재킹, 권한 오용
심각도: MEDIUM (우발적 권한 오용 / 의도된 공격 모두 가능)

【항목 3: /etc/passwd 과도 권한 (666)】(1.5점)
취약점: 모든 사용자가 읽기·쓰기 가능
영향:
  - 일반 사용자가 /etc/passwd 읽기 → 전체 사용자 계정 조회 가능
  - 악의적 사용자가 /etc/passwd 수정
    * 기존 계정 암호 제거 (UID 0으로 변조)
    * 신규 계정 추가 → 백도어 계정 생성
심각도: HIGH (권한 상승 / 백도어 설치)

【항목 3-2: /etc/shadow 과도 권한 (640)】(1.5점)
취약점: 일반 사용자가 shadow 읽기 가능 (표준은 400 또는 000)
영향:
  - 일반 사용자가 /etc/shadow 읽기 → 전체 계정의 암호 해시 획득
  - 오프라인에서 해시 크래킹 (John the Ripper, Hashcat 등)
    * 약한 비밀번호 경우 빠르게 역산 가능
  - root 계정 비밀번호 탈취 → 전권한 장악
심각도: HIGH (암호 해시 노출)

【항목 4: world-writable 파일】(1점)
취약점: 모든 사용자가 읽기·쓰기·실행 가능
영향:
  - /tmp/test.sh: 일반 사용자가 스크립트 수정 → 타 사용자 실행 시 악의적 명령 실행
  - /opt/app/config.txt: 애플리케이션 설정 변조 → 기능 오류 또는 권한 상승
  - 특히 cron·systemd 등 root 소유 스크립트가 world-writable이면 권한 상승 취약점
심각도: HIGH (권한 상승)


(2) 개선 조치 방법 (6점):

【항목 1: SSH root 로그인 차단】(1.5점)

명령:
  1. vi /etc/ssh/sshd_config
  2. PermitRootLogin yes → PermitRootLogin no 변경
  3. PermitRootLogin prohibit-password (암호 로그인만 차단, 공개키만 허용 옵션도 있음)
  4. SSH 서비스 재시작: systemctl restart sshd
  5. 설정 검증:
     grep "^PermitRootLogin" /etc/ssh/sshd_config
     → "PermitRootLogin no" 출력 확인

효과:
  - root 계정으로 SSH 직접 접근 불가
  - 일반 사용자 로그인 → sudo su - 로 권한 상승 (감시 로그 남음)

【항목 2: TMOUT 설정】(1.5점)

명령:
  1. vi /etc/profile (또는 /etc/bash.bashrc)
  2. 하단에 추가:
     export TMOUT=600  (600초 = 10분)
  3. 파일 저장 후 로그아웃
  4. 새 터미널 로그인 후 검증:
     echo $TMOUT
     → 600 출력 확인

동작:
  - 세션 유휴 10분 후 자동 로그아웃
  - 환경에 따라 TMOUT=1800 (30분) 등으로 조정 가능

주의:
  - /etc/profile은 모든 쉘 사용자에 적용
  - .bashrc는 bash 사용자만 적용


【항목 3: /etc/passwd·/etc/shadow 권한 정정】(1.5점)

명령:
  chmod 644 /etc/passwd   # 표준 권한: r--r--r--
  chmod 400 /etc/shadow   # 표준 권한: r------

검증:
  ls -la /etc/passwd /etc/shadow
  출력 예:
  -rw-r--r-- 1 root root /etc/passwd
  r-------- 1 root shadow /etc/shadow

해설:
  - /etc/passwd 644: 모든 사용자 읽기 필요 (로그인 명령에서 사용)
                    쓰기는 root만 (비밀번호 명령어에서 shadow 업데이트)
  - /etc/shadow 400: root만 읽기 (해시 정보 보호)


【항목 4: World-writable 파일 권한 정정】(1.5점)

명령:
  1. world-writable 파일 검사:
     find / -type f -perm -2 2>/dev/null (또는 -perm /o+w)
     또는
     find / -type f -perm /o+w 2>/dev/null

  2. 결과 검토 (예):
     /tmp/test.sh
     /opt/app/config.txt

  3. 각 파일별 권한 확인 & 정정:
     ls -la /tmp/test.sh  → -rwxrwxrwx
     chmod 750 /tmp/test.sh (또는 755, 소유자·그룹만 쓰기)

  4. /opt/app/config.txt는?
     ls -la /opt/app/config.txt → -rw-rw-rw-
     chmod 640 /opt/app/config.txt (소유자 읽기·쓰기, 그룹 읽기만)

  5. 정정 후 재확인:
     find / -type f -perm -2 2>/dev/null
     → world-writable 없어야 함 (또는 /tmp, /dev 등 예외만 남아야 함)

주의:
  - /tmp, /var/tmp: 세션 임시 파일이라 world-writable 허용되는 경우 많음
  - /dev: 디바이스 파일이라 world-writable 정상
  - 일반 애플리케이션·데이터 파일은 world-writable 제거


(3) 추가 보안 강화 방안 (3점):

추가 조치 1: sudo 명령 감시 & 권한 상승 로깅 (1점)

  목적: 권한 상승 시도를 추적
  설정:
    - sudo 명령 실행 로그: /var/log/auth.log (또는 /var/log/secure)
    - auditd 활성화:
      systemctl enable auditd && systemctl start auditd
      auditctl -w /etc/sudoers -p wa -k sudoers_edits
    - 모든 sudo 사용 기록 및 권한 상승 흔적 남김

추가 조치 2: /etc/securetty 설정 (1점)

  목적: Root 로그인 가능 터미널 제한
  설정:
    vi /etc/securetty
    → 콘솔 터미널(tty1, tty2 등)만 허용
    → 원격 Telnet/SSH에서는 root 로그인 완전 불가
    (예) /etc/securetty 내용:
       tty1
       tty2
       # SSH/Telnet 등 원격 접근은 명시되지 않음 → 원격 root 로그인 불가

추가 조치 3: fail2ban 설치 & SSH 무차별 대입 공격 방어 (1점)

  목적: SSH 포트 스캔·무차별 공격(Brute-force) 방어
  설정:
    apt-get install fail2ban
    systemctl enable fail2ban && systemctl start fail2ban
    # 5회 실패 후 60초 차단 등 정책 설정
  효과: 잦은 로그인 실패 IP 자동 차단 (iptables 룰 적용)


【2번】 웹·DB 연동 취약점 시나리오 (16점)
─────────────────────────────────────────────
[상황 제시]

한 전자상거래 웹 서비스를 점검한 결과, 다음과 같은 문제가 발견되었습니다.

【로그인 기능 코드】
```php
<?php
  $user = $_POST['user'];
  $query = "SELECT pw FROM member WHERE id='$user'";
  $result = mysqli_query($conn, $query);
  if ($result && mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_assoc($result);
    if ($row['pw'] == $_POST['pwd']) {
      $_SESSION['id'] = $user;
      echo "로그인 성공";
    }
  }
?>
```

【파일 업로드 기능 코드】
```php
<?php
  if ($_FILES['file']['type'] == 'image/jpeg') {  // MIME 타입만 검사
    $upload_dir = '/var/www/html/upload/';  // 웹루트 하위
    move_uploaded_file($_FILES['file']['tmp_name'], 
                       $upload_dir . $_FILES['file']['name']);
    echo "파일 업로드 완료: " . $_FILES['file']['name'];
  }
?>
```

【서버 설정】
  - /var/www/html/upload/ 디렉터리 권한: 755 (실행 권한 있음)
  - URL 직접 접근 가능: http://example.com/upload/any_file.php
  - 웹 서버(Apache): mod_php 활성화 → PHP 파일 실행 가능

[요구사항]

(1) SQL 쿼리의 취약점 명칭과 공격 페이로드 2개 (5점)

(2) 파일 업로드 취약점의 유형과 웹쉘 공격 성공 조건 (5점)

(3) 위 두 취약점을 모두 고려한 종합 보완 대책 (5점)
    - 애플리케이션 코드 수정
    - DB 보안 조치
    - 서버·시스템 조치
    각각 2~3가지씩

[모범답안 작성 지침]

(1) SQL Injection 취약점 분석 (5점):

【취약점 명칭】(1점)
  SQL Injection (SQL 인젝션)

【원인 분석】(1점)
  - 사용자 입력값($user)을 직접 SQL 쿼리에 연결
  - 입력값 검증·이스케이프 없음
  - 쿼리문과 데이터의 경계 불명확

【공격 페이로드 1: 인증 우회】(1.5점)
  입력: user = admin' OR '1'='1
  실행 쿼리:
    SELECT pw FROM member WHERE id='admin' OR '1'='1'
  결과: '1'='1'은 항상 참이므로 첫 번째 계정(대개 admin) 반환
  → 비밀번호 모르고도 로그인 성공

【공격 페이로드 2: 전체 데이터 유출】(1.5점)
  입력: user = admin' UNION SELECT group_concat(id,':',pw) FROM member WHERE 'x'='x
  실행 쿼리:
    SELECT pw FROM member WHERE id='admin' UNION SELECT group_concat(...) WHERE 'x'='x'
  결과: 회원 테이블 전체 ID·비밀번호 조회 (UNION 기반 인젝션)
  → 계정 정보 대량 탈취

추가 공격 예시:
  - admin' ; DROP TABLE member; --  (테이블 삭제)
  - admin' UNION SELECT @@version; --  (DB 버전 조회)


(2) 파일 업로드 취약점 분석 (5점):

【취약점 유형】(1.5점)
  - 부정확한 파일 타입 검증 (MIME 타입만 검사)
  - 업로드 파일이 실행 가능한 위치에 저장
  - 업로드 디렉터리 외부 접근 가능

【MIME 타입 검증 우회】(1.5점)
  공격자 행동:
    1. 웹쉘 작성: shell.php (PHP 코드 포함)
    2. 파일명을 shell.jpg로 변경
    3. Content-Type을 image/jpeg으로 조작 (Burp Suite 등 이용)
    4. 업로드 실행
  
  서버 처리:
    if ($_FILES['file']['type'] == 'image/jpeg')  // ✓ 통과
    move_uploaded_file(..., '...shell.jpg');  // jpg로 저장됨

  그러나:
    - Apache 설정에서 .jpg.php 같은 이중 확장자 실행 가능 경우
      또는 .htaccess 설정 불완전
    - 또는 .jpg 파일도 실행 가능 설정된 경우 (AddType image/jpeg .jpg 등)
    - 또는 파일명에 null byte 삽입: shell.php%00.jpg → shell.php로 저장

【웹쉘 공격 성공 조건】(2점)
  조건 1: 업로드 디렉터리의 실행 권한 (755)
    - /var/www/html/upload 권한 755
    - 모든 사용자가 실행 가능
    - PHP 파일이 저장되면 실행 가능해짐

  조건 2: 외부에서 업로드 파일 URL 직접 호출
    - http://example.com/upload/shell.php 호출 가능
    - URL을 브라우저에서 호출 → PHP 엔진 실행
    - 웹쉘 코드 (예: system($_GET['cmd']);) 실행
    → 공격자가 원격에서 서버 명령 실행 가능


(3) 종합 보완 대책 (5점):

【애플리케이션 코드 측 (2.5점)】

대책 1: PreparedStatement 및 파라미터 바인딩 사용 (1.25점)

  수정 전:
  ```php
  $query = "SELECT pw FROM member WHERE id='$user'";
  $result = mysqli_query($conn, $query);
  ```

  수정 후:
  ```php
  $query = "SELECT pw FROM member WHERE id=?";
  $stmt = $conn->prepare($query);
  $stmt->bind_param("s", $user);  // "s" = string 파라미터
  $stmt->execute();
  $result = $stmt->get_result();
  ```

  효과:
    - SQL 쿼리 구조와 데이터 분리
    - 특수문자(' " ; --) 자동 이스케이프
    - SQL Injection 완벽 방지


대책 2: 파일 업로드 보안 강화 (1.25점)

  수정 전:
  ```php
  if ($_FILES['file']['type'] == 'image/jpeg') {
    move_uploaded_file(..., '/var/www/html/upload/' . $_FILES['file']['name']);
  }
  ```

  수정 후:
  ```php
  // 확장자 화이트리스트
  $allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];
  $file_ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
  if (!in_array($file_ext, $allowed_ext)) {
    die("허용되지 않는 파일 타입입니다.");
  }

  // MIME 타입 검사
  $finfo = finfo_open(FILEINFO_MIME_TYPE);
  $mime = finfo_file($finfo, $_FILES['file']['tmp_name']);
  if (!in_array($mime, ['image/jpeg', 'image/png', 'image/gif'])) {
    die("파일이 이미지가 아닙니다.");
  }

  // 파일명 난독화 (임의의 명칭으로 변경)
  $new_filename = bin2hex(random_bytes(16)) . '.' . $file_ext;

  // 웹루트 외에 저장
  $upload_dir = '/var/uploads/';  // /var/www/html 외부
  move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir . $new_filename);
  ```

  효과:
    - 확장자 화이트리스트로 PHP/JSP 등 실행 파일 제외
    - MIME 타입 검증 + 파일 매직넘버 검증
    - 파일명 난독화 → URL 예측 불가
    - 웹루트 외 저장 → 직접 실행 불가


【DB 보안 측 (1.25점)】

대책 1: 최소권한 원칙 + 별도 계정 분리 (0.625점)

  현상: 웹 애플리케이션이 DB root 또는 admin 계정으로 연결
  문제: 웹 서버 해킹 시 전체 DB 제어 가능

  개선:
  ```sql
  -- 웹 애플리케이션용 별도 계정 생성
  CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'strong_password';
  
  -- 필요한 권한만 부여 (SELECT/INSERT/UPDATE만, DELETE 제외)
  GRANT SELECT, INSERT, UPDATE ON ecommerce.member TO 'webapp'@'localhost';
  
  -- 관리자 계정과 분리
  -- webapp 계정이 해킹되어도 다른 DB는 접근 불가
  ```

  효과:
    - 웹 서버 침해 시 피해 범위 제한
    - 실수로 인한 DELETE 명령 차단
    - 감시·감사 용이


대책 2: AUDIT 활성화 & 암호화 (0.625점)

  MySQL AUDIT Plugin 설정:
  ```sql
  -- 민감한 쿼리(로그인·결제) 감시
  SET GLOBAL audit_log_events = 'CONNECT', 'QUERY_DCL', 'QUERY_DML';
  
  -- 모든 SELECT 쿼리 기록
  SELECT * FROM mysql.audit_log WHERE event_class='query_error';
  ```

  TDE (Transparent Data Encryption):
  ```sql
  -- DB 파일 자체를 암호화
  SET GLOBAL innodb_encrypt_tables=ON;
  ALTER TABLE member ENCRYPTION='Y';
  ```

  효과:
    - SQL Injection 시도 흔적 기록
    - DB 파일 유출 시에도 암호화로 보호


【서버·시스템 측 (1.25점)】

대책 1: 업로드 디렉터리 실행권한 제거 + .htaccess (0.625점)

  파일시스템 설정:
  ```bash
  chmod 755 /var/www/html/upload  # 디렉터리 자체는 접근 가능하나
  chmod 644 /var/www/html/upload/*  # 파일들은 실행 불가
  ```

  또는 Apache .htaccess:
  ```apache
  # /var/www/html/upload/.htaccess
  <FilesMatch "\\.(php|php5|php7|phps|jsp|asp|aspx|cgi|pl|py|sh|exe)$">
    Deny from all
  </FilesMatch>
  
  # 또는 모든 스크립트 실행 금지
  php_flag engine off
  AddType text/plain .php .php5 .php7 .jsp
  ```

  동작:
    - 공격자가 shell.php 업로드 → 브라우저에서 호출해도 실행 안 됨
    - 텍스트 파일로 다운로드만 되거나 거부


대책 2: WAF (Web Application Firewall) 및 모니터링 (0.625점)

  ModSecurity WAF 규칙 예:
  ```
  # SQL Injection 탐지
  SecRule ARGS "@contains OR" "id:1001,deny,status:403"
  SecRule ARGS "@contains UNION" "id:1002,deny,status:403"
  
  # 파일 업로드 크기 제한
  SecRule REQUEST_HEADERS:Content-Length "@gt 10485760" "id:1003,deny"
  ```

  로그 모니터링:
  ```bash
  tail -f /var/log/apache2/error.log | grep -i "injection|upload"
  
  이상 탐지 시 즉시 알림 발송
  ```

  효과:
    - 의심 쿼리 실시간 탐지·차단
    - 업로드 이상 탐지 (초과 크기, 의심 파일 등)

저작자표시 비영리 동일조건 (새창열림)
'자격증/정보보안 기사' 카테고리의 다른 글
  • 정보보안기사 실기 최근 5년 정리
  • bpfdoor에 관해
  • 위험분석 주요 접근법 정리
  • 정보보안기사 실기 AI 기출 - 5회
재성
재성
늦게 철든 아재.. 늦은 공부는 힘드네요
  • 재성
    자격증 취득 / 박재성
    재성
  • 전체
    오늘
    어제
    • 분류 전체보기 (73)
      • 자격증 (69)
        • 개인정보관리사 CPPG (4)
        • 정보처리 기사 (1)
        • 정보통신 기사 (3)
        • 정보보안 기사 (33)
        • SQL개발자 (1)
        • SW자산관리사 (7)
        • 네트워크관리사 (10)
        • 지능형홈관리사 (10)
      • 소망 목록 (1)
        • 코딩 - 리액트 (1)
      • 발자취 (2)
  • 공지사항

    • Who is 박재성?
  • 블로그 메뉴

    • 🏠 블로그 홈
    • 💾 취합 자료실
    • 🔍 태그
    • 📒 방명록
    • 🗝️ 관리
    • ✏️ 글 쓰기
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3

재성
정보보안기사 실기 26년 대비 예상문제 (AI 요약)
상단으로

티스토리툴바