41번
문제
다음 Snort 룰에 대하여 각 정책의 의미를 설명하시오.
alert any any -> any 80 (
msg:"GET Flooding";
content:"GET /HTTP1.";
content:"USER";
content:!"anonymous";
content:"|00|";
depth:1;
nocase;
sid:1;
)
msg:"GET Flooding"의 의미content:"GET /HTTP1."의 의미content:"USER"; content:!"anonymous"의 의미content:"|00|"; depth:1의 의미
답
- 룰의 다른 조건이 모두 참이어서 탐지되면 경고 메시지에
GET Flooding이라는 문자열을 기록한다. - 패킷 페이로드(또는 현재 버퍼)에
GET /HTTP1.이라는 문자열이 있는지 검사한다. content:"USER"는USER문자열 존재 여부를 검사하고,content:!"anonymous"는anonymous문자열이 없어야 조건을 만족한다.content:"|00|"는 널 바이트(0x00)를 찾는다는 뜻이고,depth:1은 이 매치를 시작 위치 기준 1바이트 범위 안에서만 검사하라는 의미다.
content 는 선언된 순서대로 평가되지만, distance/within 같은 상대 위치 옵션이 없으면 “이전 매치 직후”를 뜻하지는 않는다. 따라서 원문처럼 “이전 문자열 끝난 위치에서 바로 검사”라고 단정하면 부정확하다.
42번
문제
쿠키에 설정되는 보안 기능과 관련하여 다음 각 물음에 답하시오.
Secure속성의 기능Secure속성으로 대응 가능한 공격HttpOnly속성 설정 시 쿠키 값HttpOnly속성의 기능HttpOnly속성으로 대응 가능한 공격
답
Secure가 설정된 쿠키는 HTTPS 같은 보안 연결에서만 전송된다.- 평문 HTTP 구간에서 쿠키가 노출되는 스니핑 공격 완화에 도움이 된다.
Set-Cookie헤더에HttpOnly속성을 붙여 설정한다. 예:Set-Cookie: sessionid=abc123; HttpOnlyHttpOnly가 설정된 쿠키는 브라우저의 스크립트 API(예:document.cookie)로 접근할 수 없도록 제한된다.- XSS를 통해 쿠키 값을 읽어 가는 공격 완화에 도움이 된다.
쿠키 속성(Secure, HttpOnly)은 Set-Cookie 에서 설정되며, 이후 클라이언트가 보내는 Cookie 헤더에는 속성 자체가 다시 포함되지 않는다.
43번
문제
Apache 웹서버 설정 관련하여 다음 물음에 답하시오.
<Directory />
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>
<Directory /var/www>
Options indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
- 위와 같이 설정했을 때 발생 가능한 두 가지 문제점
- 두 가지 문제점에 대한 대응 방안
답
- 가능한 문제점
Options Indexes가 켜져 있으므로, 디렉터리에 기본 인덱스 파일이 없을 때 서버가 디렉터리 목록을 노출할 수 있다.FollowSymLinks가 켜져 있으므로, 문서 루트 아래의 심볼릭 링크를 따라가 다른 위치의 파일이나 디렉터리에 접근하게 만들 수 있다.
- 대응 방안
- 디렉터리 목록 노출 방지:
Indexes를 제거하거나Options -Indexes로 비활성화한다. - 심볼릭 링크 위험 축소:
FollowSymLinks를 제거하거나, 필요 시SymLinksIfOwnerMatch등 더 제한적인 설정을 검토한다.
- 디렉터리 목록 노출 방지:
원문에 있던 “.. 로 상위 디렉터리 접근”과 “AllowOverride authconfig/all 로 대응”은 이 설정만으로 바로 도출되는 결론이라고 확인할 수 없어서 본문에는 넣지 않았다.
44번
문제
스팸 메일 방지를 위한 기술에 대하여 다음 물음에 답하시오.
- SPF 적용 시 수신자 측에서 확인할 수 있는 항목
- SPF 적용 시 수신 받은 메일의 정당성을 검증하는 방법
- DKIM 에서 전자서명 주체와 키 공유 방법
- SPF 와 DKIM 을 혼합한 기법의 명칭
답
- 수신자는 SMTP 발신 도메인(MAIL FROM 또는 HELO/EHLO 관련 도메인)에 대해, 실제 발신 IP가 그 도메인에서 허용한 서버인지 확인할 수 있다.
- 발신 도메인의 DNS TXT 레코드에 게시된 SPF 정책을 조회한 뒤, 실제 접속한 발신 IP가 허용 목록에 포함되는지 비교한다.
- DKIM
- 전자서명 주체: 발신 메일 서버(또는 그 도메인을 대표해 서명하는 시스템)
- 키 공유 방법: 발신 서버가 개인키로 메일 헤더/본문 일부에 서명하고, 공개키는 DNS TXT 레코드(selector 기반)에 게시하여 수신 서버가 검증한다.
DMARC이다. DMARC 는 SPF/DKIM 결과와From도메인 정렬(alignment)을 함께 사용한다.
45번
문제
디지털 포렌식 5대 원칙 중 3가지를 설명하시오.
답
수험 정리에서 자주 묶는 5대 원칙 기준으로는 다음과 같이 정리할 수 있다.
- 정당성: 증거는 적법한 절차에 따라 수집되어야 한다.
- 무결성: 수집한 증거가 위변조되지 않았음을 입증할 수 있어야 한다.
- 재현성: 동일한 절차와 조건에서 같은 결과가 나와야 한다.
- 연계보관성: 수집, 이동, 보관, 분석, 제출까지의 이력이 끊기지 않아야 한다.
- 신속성: 특히 휘발성 증거는 지체 없이 확보해야 한다.
이 5대 원칙 묶음은 수험 자료에서는 널리 쓰이지만, 이 글 작성 범위에서는 단일한 공식 원전까지는 확인하지 못했다. 따라서 위 내용은 “수험 정리 기준”으로 이해하는 것이 안전하다.
46번
문제
다음 2개의 취약한 코드와 관련하여 다음 물음에 답하시오.
[코드 1]
<?xml version="1.0" encoding="ISO8859-1"?>
<!DOCTYPE foo
<!ELEMENT foo ANY
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<foo>&xxe;</foo>
[코드 2]
<?xml version="1.0" encoding="ISO8859-1"?>
<!DOCTYPE lols
<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
...
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lols>&lol9;</lols>
- 코드 1 은 어떤 공격인가
- 코드 1 의 공격 원리
- 코드 2 를 통한 공격 실행 결과
답
- 코드 1 은
XXE(XML External Entity)공격이다. - XML 파서가 외부 엔티티를 해석하도록 설정되어 있으면, 공격자가
SYSTEM "file:///etc/passwd"같은 외부 리소스를 참조하게 만들어 서버 내부 파일을 읽거나 SSRF 성격의 요청을 유도할 수 있다. - 코드 2 는 엔티티가 엔티티를 기하급수적으로 확장하게 만드는 이른바
Billion Laughs유형으로, 과도한 메모리/CPU 사용을 유발해 서비스 거부 상태를 만들 수 있다.
47번
문제
정보보호 위험평가 관련하여 다음 물음에 답하시오.
- 2가지(A, B) 정보보호 대책 적용 시 위험 평가 결과표의 빈칸을 채우시오.
- 위험 평가 결과를 참고하여, 2가지 정보보호 대책 중 적절한 대책을 선정하고 선정 사유를 설명하시오.
답
-
계산 결과
- A 대책
(1) SLE = AV × EF = 100,000 × 0.2 = 20,000(3) ALE = SLE × ARO = 20,000 × 0.5 = 10,000(5) 정보보호대책 효과 = 감소한 ALE - 운영비용 = 30,000 - 17,000 = 13,000
- B 대책
(2) SLE = AV × EF = 100,000 × 0.8 = 80,000(4) ALE = SLE × ARO = 80,000 × 0.25 = 20,000(6) 정보보호대책 효과 = 감소한 ALE - 운영비용 = 20,000 - 4,000 = 16,000
- A 대책
-
B 대책을 선택하는 것이 더 합리적이다.
- A 효과:
13,000 - B 효과:
16,000 - 차이:
16,000 - 13,000 = 3,000
- A 효과:
즉, B가 비용을 반영한 순효과가 더 크다.
48번
문제
공공기관의 개인정보흐름표에서 문제가 되는 사항 4가지를 찾아서 설명하시오.
답
- 주민등록번호 수집 근거가 단순히 “정보주체 동의”로만 적혀 있다. 주민등록번호는 원칙적으로 법령상 근거 등 예외 사유가 있을 때만 처리할 수 있으므로, 동의만으로 수집 근거를 충족한다고 보기 어렵다.
- 주민등록번호 보호 수단으로
MD5를 적어 둔 것은 부적절하다. 고유식별정보는 안전한 암호 알고리즘으로 암호화해야 하며, MD5는 안전한 암호 알고리즘으로 보기 어렵다. - 주민등록번호를 제3자 제공 또는 연계할 때 평문 전송으로 되어 있다. 전송 구간 보호가 필요하다.
- 파기주기가
영구보관으로 되어 있다. 보유 목적이 끝나면 지체 없이 파기해야 하므로, 법령상 보존 근거가 없는 영구보관은 문제가 된다.
49번
문제
다음 패킷을 ESP 터널 모드로 전송하는 경우 다음 물음에 답하시오.
[IP 헤더] [TCP 헤더] [데이터]
- ESP 터널 모드 전송 시 추가되는 필드를 그림으로 도식화
- 암호화되는 필드의 범위
- 인증되는 필드의 범위
답
- ESP 터널 모드 구조
[새 IP 헤더][ESP 헤더][원래 IP 헤더][TCP 헤더][데이터][ESP Trailer][ESP Auth]
- 암호화 범위
[원래 IP 헤더][TCP 헤더][데이터][ESP Trailer]
터널 모드에서는 “원래 IP 데이터그램 전체”가 ESP Payload 로 들어가며, 이 Payload 와 ESP Trailer 가 기밀성 보호 대상이다.
- 인증 범위
[ESP 헤더][원래 IP 헤더][TCP 헤더][데이터][ESP Trailer]
정확히는 ESP 헤더(SPI, Sequence Number) + Payload Data + ESP Trailer 가 무결성 보호 대상이며, 바깥쪽 새 IP 헤더는 포함되지 않는다.
50번
문제
백도어가 설치되어 있는 것을 아래 보기로 확인하였으나, 해당 파일 경로로 가보니 파일이 존재하지 않았다.
ls -al /proc/5900
exe -> 백도어경로(deleted)
- 백도어 파일 경로로 접속 시 해당 프로세스가 보이지 않는 이유
- 삭제된 백도어 프로세스를
/tmp/backdoor로 복원하는 명령어 - 공격자가 사용한 명령어를 확인하는 방법은 무엇인가? (
ps는 변조되어 사용 불가)
답
- 백도어 실행 후 원본 실행 파일이 삭제(unlinked)되었기 때문이다.
/proc/<pid>/exe는 삭제된 실행 파일도 가리킬 수 있으며, 이런 경우 보통(deleted)가 붙는다. - 복원 명령어
cp /proc/5900/exe /tmp/backdoor
- 확인 방법
/proc/5900/cmdline확인
cat /proc/5900/cmdline
- 셸 히스토리 확인
history
직접적인 확인은 /proc/5900/cmdline 이고, history 는 공격자가 셸을 사용했고 기록이 남아 있을 때만 보조적으로 의미가 있다.
51번
문제
위험 대응 방안에는 위험 수용, 위험 소멸, 위험 회피, 위험 전이 등이 있다. 이중 위험 수용, 위험 소멸을 제외한 위험 회피(risk avoidance), 위험 전이(risk transfer)의 개념과 각 방안의 발생조건을 자산, 위험, 정책 관점에서 서술하시오.
답
- 위험 회피(Risk Avoidance)
- 개념: 위험이 발생하는 업무, 기능, 서비스, 자산 운용 자체를 중단하거나 포기하여 위험 원인을 제거하는 방식
- 자산 관점: 해당 자산이나 서비스가 핵심 자산이 아니거나, 중단해도 조직 목적 달성이 가능한 경우
- 위험 관점: 위험 수준이 조직의 허용 한계를 넘고, 비용 대비 적절한 통제로도 수용 가능한 수준까지 낮추기 어려운 경우
- 정책 관점: 법령, 규제, 내부 보안정책상 해당 행위나 자산 운용을 계속할 수 없는 경우
- 위험 전이(Risk Transfer)
- 개념: 보험, 외주, 계약, SLA, 손해배상 조항 등을 통해 사고 발생 시 비용이나 책임의 일부를 제3자에게 이전하는 방식
- 자산 관점: 자산이나 업무는 계속 유지해야 하지만, 운영 책임이나 손실 부담을 내부가 전부 떠안기 어려운 경우
- 위험 관점: 위험 자체를 제거할 수는 없지만, 재무적 손실이나 운영 책임을 분산할 필요가 있는 경우
- 정책 관점: 외부 위탁, 보험, 보증, 책임 분담 계약을 허용하는 조달/보안 정책이 마련되어 있는 경우
52번
문제
백업 스크립트 파일과 백업 결과 파일은 다음과 같다. 아래 질문에 답하시오.
#!/bin/sh
tar -cvzf /data/backup/etc_$dat.tgz /etc/*
tar -cvzf /data/backup/home_$dat.tgz /home/*
rw-r--r-- root root /data/backup/etc_YYYYMMDD.tgz
rw-r--r-- root root /data/backup/home_YYYYMMDD.tgz
- 백업 결과 파일 권한의 문제점
umask변경 후 백업 파일을 생성하고, 이후 원래대로 되돌리는 스크립트 작성operator사용자만 백업 스크립트(/usr/local/bin/backup)를 사용하도록 만드는 명령어와 설명
답
- 백업 파일 권한이
644이므로 소유자 외 사용자도 읽을 수 있다./etc백업에는 계정/설정 정보가 포함될 수 있으므로 기밀성 문제가 생긴다. - 예시 스크립트
#!/bin/sh
dat=$(date +%Y%m%d)
OLD_UMASK=$(umask)
umask 077
tar -cvzf /data/backup/etc_"$dat".tgz /etc/*
tar -cvzf /data/backup/home_"$dat".tgz /home/*
umask "$OLD_UMASK"
- 명령어
chown operator /usr/local/bin/backup
chmod 700 /usr/local/bin/backup
설명: 파일 소유자를 operator 로 바꾸고 권한을 700 으로 설정하면 소유자만 읽기/쓰기/실행이 가능하다.
53번
문제
A시의 어르신 교통카드 신청서 안내문에서 개인정보보호법에 위반되는 사항 4가지를 찾아서 설명하시오.
답
- 주민등록번호를 필수 수집·제3자 제공 항목으로 두고 있다. 주민등록번호 처리는 원칙적으로 법령상 근거가 있어야 하므로, 단순 동의만으로는 충분하지 않다.
- 보유기간을
영구보관으로 두고 있다. 보유 목적이 끝나면 파기해야 하므로 과도하다. - 제3자 제공 항목에서 “동의를 거부할 권리”와 “거부 시 불이익” 고지가 빠져 있다.
- 제3자 제공 기관이
유관기관으로만 표시되어 있어 수령자 특정이 불명확하다.
추가로, 위탁 은 법 제26조 체계상 원칙적으로 “동의”보다 “공개 및 계약상 통제”가 중심이므로, 수집·이용/제3자 제공과 같은 형식으로 한꺼번에 동의를 받는 서식은 실무상 다시 점검하는 것이 안전하다.
54번
문제
유닉스 계정 패스워드 임곗값 설정에서 다음 옵션의 의미를 설명하시오.
deny=5, unlock_time=120, no_magic_root, reset
답
deny=5: 인증 실패가 5회 누적되면 계정을 잠근다.unlock_time=120: 마지막 실패 이후 120초가 지나면 자동으로 잠금을 해제한다.no_magic_root: root 계정에는 잠금 정책을 적용하지 않도록 하는 의미로 수험서에서 설명되곤 한다.reset: 인증 성공 시 실패 횟수를 초기화한다.
주의: 실제 PAM 환경에서는 배포판과 모듈(pam_tally, pam_tally2, pam_faillock)에 따라 옵션명이 다를 수 있다. 예를 들어 pam_tally2 문서에서는 no_magic_root 보다 even_deny_root / root_unlock_time 계열 옵션이 더 직접적으로 확인된다.
55번
문제
다음은 HTTP request 메시지를 패킷 분석 도구로 캡쳐한 화면이다. 다음 물음에 답하시오.
[패킷 캡쳐 화면 #1]
POST / HTTP/1.1
...
content-length: 1000000
[패킷 캡쳐 화면 #2]
...
TCP segment data (1 byte)
- 어떤 공격이 시도되고 있는가
- 그렇게 판단한 근거
- 공격에 대한 서버측 대응 방안 2가지
답
Slow HTTP POST DoS, 흔히RUDY(R-U-Dead-Yet)유형으로 설명한다.- 판단 근거
Content-Length: 1000000처럼 매우 큰 본문 길이를 선언했다.- 실제 본문은 한 번에 보내지 않고
1 byte씩 아주 느리게 분할 전송하고 있다. - 서버는 선언된 길이만큼 본문을 다 받을 때까지 연결을 오래 유지하게 되어, 동시 연결 자원을 소진할 수 있다.
- 대응 방안
- 읽기 타임아웃 설정: Apache
mod_reqtimeout의RequestReadTimeout같은 설정으로 헤더/본문 수신 시간을 제한한다. - 연결 수 및 요청 속도 제한: 동일 IP 기준 동시 연결 수 제한, 방화벽/리버스프록시 레벨 rate limit 등을 적용한다.
- 읽기 타임아웃 설정: Apache
56번
문제
/etc/shadow 파일에 대하여 다음 물음에 답하시오.
x:a$b$c:에서a,b,c의 의미b가 레인보우테이블 공격에 대응할 수 있는 이유pwunconv명령의 기능
답
- 의미
a: 해시 알고리즘 식별자b: salt 값c: salt 와 비밀번호를 이용해 계산된 해시값
- salt 를 쓰면 같은 비밀번호라도 서로 다른 해시값이 나올 수 있으므로, 미리 계산된 고정 해시 목록(레인보우테이블)의 재사용 효과가 크게 줄어든다.
pwunconv는/etc/shadow의 패스워드 정보를/etc/passwd로 되돌리고, shadow 파일 기반 분리를 해제하는 명령이다.
57번
문제
강제적 접근제어 모델에 대하여 다음 물음에 답하시오.
- 정보의 불법적 파괴나 변조보다는 기밀성 유지에 초점을 둔 모델의 명칭
no-read-up의 의미no-write-down의 의미와 보안적 의의- 비바(Biba) 모델의 write 정책
답
Bell-LaPadula(BLP)모델이다.no-read-up: 낮은 보안등급의 주체는 더 높은 등급의 객체를 읽을 수 없다는 뜻이다.no-write-down: 높은 보안등급의 주체는 더 낮은 등급의 객체에 쓸 수 없다는 뜻이다. 높은 등급의 정보가 낮은 등급으로 새어 나가는 것을 막아 기밀성을 보호한다.- Biba 모델의 write 정책은
no-write-up이다. 낮은 무결성 주체가 높은 무결성 객체를 오염시키는 것을 막아 무결성을 보호한다.
58번
문제
A 시스템에서 B 시스템으로 ACK 2012~2018 포트까지 패킷을 전송하여 2017 포트에서 reset 응답이 도착하였다. 이에 대하여 다음 물음에 답하시오.
- 무슨 스캔인가
- 스캔의 목적
- 본 스캔을 통하여 무엇을 알 수 있는가
답
TCP ACK 스캔이다.- 목적은 포트 open/closed 자체보다, 방화벽 등의 필터링 여부를 판별하는 것이다.
- 2017 포트는
RST응답이 왔으므로 “필터링되지 않음(unfiltered)”을 알 수 있다.
ACK 스캔은 보통 RST 가 오면 unfiltered, 응답이 없거나 ICMP unreachable 이면 filtered 로 해석한다. 이 스캔만으로 2017 포트가 open 인지 closed 인지를 단정할 수는 없다.
59번
문제
아파치 설정에서 다음 옵션들의 의미에 대하여 설명하시오.
Timeout 300MaxKeepAliveRequests 100DirectoryIndex index.htm index.html index.phpErrorLog "경로"
답
Timeout 300: 서버가 특정 I/O 이벤트나 응답을 기다리는 최대 시간을 300초로 둔다는 의미다.MaxKeepAliveRequests 100: Keep-Alive 연결 하나에서 처리할 수 있는 요청 수를 최대 100개로 제한한다.DirectoryIndex index.htm index.html index.php: 디렉터리 요청 시 기본 문서 후보를 이 순서대로 찾는다.ErrorLog "경로": 에러 로그를 기록할 위치를 지정한다.
원문 답안에 있던 “100회를 넘으면 현재 프로세스가 종료한다“는 설명은 Apache 공식 설명과 정확히 일치하지 않아 넣지 않았다. 이 값은 “지속 연결 하나당 허용 요청 수”를 뜻한다.
60번
문제
XSS 공격을 탐지하기 위한 다음 Snort rule 에 대하여 다음 물음에 답하시오.
alert any any -> any 80 (
msg:"XSS";
content:"GET";
offset:1;
depth:3;
content:"/login.php<script>XSS";
distance:1;
)
content:"GET"; offset:1; depth:3의 의미content:"/login.php<script>XSS"; distance:1;의 의미- 바이너리로 전송된 패킷을 참고하여 위 룰로 탐지되지 않을 경우 어떻게 수정해야 하는지 기술
답
- 첫 번째
content는 페이로드 시작점에서 1바이트 건너뛴 위치부터 3바이트 범위 안에서GET을 찾으라는 뜻이다. - 두 번째
content는 직전 매치가 끝난 위치에서 1바이트 더 이동한 뒤/login.php<script>XSS문자열을 찾으라는 뜻이다. - 패킷 시작 부분에
GET이 바로 오는 경우라면offset:1때문에 첫 번째 문자열을 놓칠 수 있으므로,offset:0으로 바꾸거나offset옵션을 제거하는 것이 맞다. 또한 대소문자 변형까지 잡으려면nocase를 추가하는 것이 안전하다.