소소한 IT이야기/정보보안기사 실기

[한땀한땀] 정보보안기사 실기 기출풀이 (feat. 23회차, 23년 2회) - 01

Klaus 2023. 8. 10. 23:29

[기출 문제 정리]

- 출제된 문제를 완벽하게 이해하기

- 연관 문제 정리

 

[windows 로그 파일 경로]

1. windows에서 로그 파일 저장 경로에 대한 설명이다. 빈칸을 채우시오

 

[+] 정답 

더보기

ㄱ. HTTPERR

ㄴ. DHCP

 

[+] 해설 

- windows server에 IIS(인터넷 정보 시스템) 설치 시 아래와 같은 IIS관련 파일이 생성되는 것을 확인할 수 있습니다.

windows server 2022에서 IIS설치 후 로그 확인

 

[+] 기출 응용

- windows 로그 파일 경로

그 외의 로그 파일 경로

 

- event log : UNIX 시스템의 syslog나 messages 파일에 해당. 이벤트뷰어콘솔(eventvwr.msc)로 확인 가능 

- IAS : 원격인증 전화접속 사용자서비스(RADIUS) 프로토콜을 사용하여 원격 Access 인증을 위한 집중식 관리인증 및 계정 제공

- 작업 스케줄러(Task Scheduler) 서비스의 작업 실행 기록을 저장하는 로그 파일

 

[Linux 함수 호출]

2. 64bit Linux에서 아래와 같은 코드를 실행하였다. 내용을 확인하여 각각 어느 영역에 해당하는지 답하시오.

int main()
{
print ('A', 'B', 'C'):
}
위와 같이 printf를 통해 함수를 호출시 각각의 파라미터 영역은 A( ㄱ ), B( ㄴ ), C(ㄷ) 영역에 저장된다.

 

[+] 정답

더보기

- A : RDI 

- B : RSI

- C : RDX

 

[+] 해설

- 리눅스 64비트 환경에서는 'System V AMD64 ABI' 호출 규약

- 함수 호출 시 RDI, RSI, RDX를 사용하여 레지스터들을 표현

- RDI: "Destination Index"의 약자로, 함수에 전달되는 

   첫 번째 인자(argument)를 저장하는 레지스터

- RSI: "Source Index"의 약자로, 함수에 전달되는

  두 번째 인자를 저장하는 레지스터

- RDX: "Data Register X"의 약자로, 함수에 전달되는

  세 번째 인자를 저장하는 레지스터

 

 

 

 

 

 

 

 

 

[지역 바인딩]

3. 바이너리 파일을 실행하면 최종적인 재배치가 이루어진다. 지역 바인딩을 통해 프로그램이 실행되는데, 이 과정을 다음과 같이 설명한다. 빈칸에 답하시오

리눅스에서 (ㄱ) 방식으로 컴파일 할 경우 라이브러리가 프로그램 외부에 위치하는 주소를 가져온다. 외부라이브러리에서 받아오는데 (ㄴ) 테이블에서 실제 주소를 가져오기 위해 (ㄷ )를 참조한다.

 

[+] 정답

더보기

ㄱ. 동적 링킹(Dynamic Linking)

ㄴ. PLT(Procedure Linkage Table)

ㄷ. GOT(Global Offset Table)

 

[+] 해설

- 지연 바인딩의 핵심은 "PLT(Procedure Linkage Table)"와 "GOT(Global Offset Table)"

- GOT와 PLT는 동적 링크 바이너리에서 공유 라이브러리 함수 호출을 지연 바인딩으로 처리하여 실행 속도 향상 및 라이브러리 업데이트 시에도 프로그램 재컴파일을 최소화하여 유연성을 제공하는 주요 메커니즘 입니다.

- PLT : 외부 라이브러리 함수를 사용할 수 있도록 주소를 연결해주는 역할을 하는 테이블

- GOT :  PLT에서 호출하는 resolve 함수를 통해 구한 라이브러리 함수의 절대 주소가 저장되어 있는 테이블 (상대 주소)

- 라이브러리가 MEM에 매핑된 후 라이브러리 함수가 호출되면, 해당 함수의 PLT와 GOT영역에 접근하여 상대주소를 찾아 실행

- 장점 :  GOT와 PLT는 지연 바인딩을 통해 실행 시간에 함수 호출을 해결함으로써 실행 속도를 향상시키고, 라이브러리 업데이트 시에도 재컴파일을 최소화하여 유연성을 제공 합니다.

 

[+] 기출 응용

- ldd 명령어 실행 파일과 관련된 동적 링크 정보를 확인

 

[+] GOT와 PLT의 취약점

- GOT/PLT 오버플로우 :  라이브러리 함수 호출 시 사용되는 주소나 PLT의 주소를 조작하여 악의적인 코드를 실행 가능

- ROP 공격 : GOT/PLT의 주소를 이용하여 스니펫(ROP가젯)을 조작하여 시스템 권한 취득

 

[+] GOT와 PLT의 취약점 대응 방안

- ASLR(주소 공간 무작위화): 주소 공간 무작위화를 적용하여 GOT와 PLT의 주소를 예측하기 어렵게 만듭니다.

- NX/DEP(비실행 가능 영역): 실행 가능한 영역을 제한하여 악성 코드의 실행을 방지합니다.

- 입력 검증: 사용자 입력 값을 정확하게 검증하여 오버플로우 공격 방지

- 정적 및 동적 분석: 코드 리뷰와 보안 도구를 사용하여 취약점을 찾고 수정합니다.

- 라이브러리 업데이트: 사용하는 라이브러리를 최신 버전으로 업데이트하여 보안 패치 적용

- 버퍼 오버플로우 방지: 안전한 버퍼 조작 함수를 사용하여 오버플로우를 방지합니다.

- 안전한 버퍼 조작 함수

함수 설명 사용 방법
strcpy_s 문자열을 버퍼에 안전하게 복사 strcpy_s(dest, destSize, src)
strncpy_s 문자열을 버퍼에 안전하게 복사 (길이 제한) strncpy_s(dest, destSize, src, count)
strcat_s 문자열을 기존 버퍼에 안전하게 연결 strcat_s(dest, destSize, src)
strncat_s 문자열을 기존 버퍼에 안전하게 연결 (길이 제한) strncat_s(dest, destSize, src, count)
memcpy_s 메모리 블록을 다른 위치로 안전하게 복사 memcpy_s(dest, destSize, src, count)
memmove_s 메모리 블록을 다른 위치로 안전하게 이동 memmove_s(dest, destSize, src, count)
sprintf_s 형식화된 문자열을 버퍼에 안전하게 생성 sprintf_s(dest, destSize, format, ...)
snprintf_s 형식화된 문자열을 버퍼에 안전하게 생성 (길이 제한) snprintf_s(dest, destSize, count, format, ...)
memset_s 메모리 블록을 특정 값으로 안전하게 초기화 memset_s(dest, destSize, value, count)
strnlen_s 문자열의 길이를 안전하게 계산 strnlen_s(str, maxCount)
wcsncpy_s 와이드 문자열을 버퍼에 안전하게 복사 wcsncpy_s(dest, destSize, src, count)
wcscat_s 와이드 문자열을 기존 버퍼에 안전하게 연결 wcscat_s(dest, destSize, src)

 

[ISMS-P]

4. 정보보호 및 개인정보보호 관리체계 인증인 ISMS-P는 인증기준이 3개영역에 102개 인증 항목이 존재한다. 3개 영역을 적으시오.

 

[+] 정답

더보기
  1. 정보보호 정책 및 조직
  2. 정보자산 관리
  3. 정보보호 대책

※ 법규 관련하여는 추후 다시 기록 예정

 

 

[Linux /var/log/messages로그 ]

5. 리눅스 /var/log/messages 로그 파일의 필드를 5가지로 나눈다면 무엇인가?

Feb 7 11:48:34 toys network
Feb 7 11:48:34 toys network succeed
Feb 7 13:15:34 toys vsftpd(pam_unix)[12345]
authentication failure; ... user : chris
Feb 7 14:12:34 su (pam_unix)[11234]

 

[+] 정답

1) 날짜 및 시간 정보 (Timestamp)

2) 호스트명 또는 시스템 이름 (Hostname/System Name)

3) ㄱ. 이벤트 또는 메시지 (Event/Message)
4) ㄴ. 프로세스 또는 데몬 정보 (Process/Daemon Info)
5) ㄷ.  추가 정보 (Additional Information):

 

[+] 해설

1) 날짜 및 시간 정보 (Timestamp): 로그가 발생한 날짜와 시간 정보가 포함 "Feb 7 11:48:34", "Feb 7 13:15:34"

2) 호스트명/시스템 이름 (Hostname/System Name): 로그를 기록한 호스트명이나 시스템 이름이 이 필드에 포함 "toys"

3) 이벤트/메시지 (Event/Message): 로그에 기록된 이벤트, 동작, 메시지 등의 내용이 포함 "network"

4) 프로세스/데몬 (Process/Daemon Info):  로그와 관련된 프로세스,데몬의 이름/PID(프로세스 ID) 정보 "pam_unix)[12345]"

5) 추가 정보 (Additional Information): 로그에 따라 추가적인 정보가 필요한 경우, 해당 정보가 이 필드에 포함될 수 있습니다.

    예를 들어 "authentication failure; ... user : chris"와 같이 특정 사용자의 인증 실패 원인이나 상세 정보 등이 포함