정보보안기사/필기2023년2회PBT리뷰

정보기 필기 2023년 2회 PBT 문제 05번 메모리 보호기법

멋쟁이천재사자 2023. 6. 30. 21:08

23년 2회 필기 PBT 시험을 66점으로 합격했습니다. 7월29일 실기 시험을 준비하며, 어려웠던 문제와 틀린 문제를 정리해보겠습니다. 다른 문제들은 https://it-freelancer.tistory.com/1210 에서 확인 가능합니다.

 

문제

5. 리눅스 바이너리 섹션(.ctors, .dtors, .dynamic, .got)의 메모리 변조를 막기 위해 사용되는 메모리 보호기법은?
① RELRO
② PIE

③ ASLR
④ POE

 

 

 

시험 후기

메모리 변조라는 단어를 보자 마자 ③ ASLR 선택

 

 

정답

1

 

 

실제 시험 문제와 제출 답안

문제번호의 X 표시는 99프로 찍었다는 표시이며 / 표시는 자신이 없다는 표시임

 

 

공부하면서

Relro 는 뭐다. 그런데 ... 는 더이상 유효하지 않은 옵션이다.

 

<<7.18 공부>>

https://news.ycombinator.com/item?id=23659118

 

I know how ASLR/ROP/PLT/GOT/RELRO work, but I'm still not understanding what's g... | Hacker News

 

news.ycombinator.com


I know how ASLR/ROP/PLT/GOT/RELRO work, but I'm still not understanding what's going on here.

ASLR이나 RELRO 가 어떻게 동작하는지 아는데 더 상세한 내용을 궁금해하는 글인 것 같다. ② PIE 에 있는 PIE 라는 용어도 나온다.

 



https://hackyboiz.github.io/2021/10/27/y00n_nms/linux-mitigation/

 

hackyboiz

hack & life

hackyboiz.github.io

RELRO에는 Partial RELRO , FULL RELRO 설정이 있으며 ELF 바이너리 / 프로세스의 데이터 영역에 Read-Only 권한을 설정해 Write 할 수 없게 하여 메모리가 변경되는 것을 막는 보호 기법입니다.


https://bbolmin.tistory.com/81

 

리눅스 - 메모리 보호 옵션(ref)

Ref : http://jjoon.net/tc/192?category=0 [랜덤 스택&라이브러리, 스택 실행권한 설정] 커널 2.6 부터 제공 (Default 값은 1) # sysctl -w kernel.randomize_va_space=0 (해제) # sysctl -w kernel.randomize_va_space=1 (랜덤 스택 & 라

bbolmin.tistory.com


# sysctl -w kernel.randomize_va_space=0 (해제)
# sysctl -w kernel.randomize_va_space=1 (랜덤 스택 & 라이브러리)
# sysctl -w kernel.randomize_va_space=2 (랜럼 스택 & 라이브러리 & 힙)
# sysctl -w kernel.exec-shield=0 (스택 실행권한 해제) - stack에 'X'줄 때
# sysctl -w kernel.exec-shield=1 (스택 실행권한 설정)

 

 

<<8.05 공부>>

/proc/sys/kernel/randomize_va_space 또는 exec-shield 관련 내용을 실제로 찾아보았다.

centOS 와 kali 에서 모두 확인해보았다.

kali 에서 찾지 못함

┌──(root㉿kali)-[~]
└─#  sysctl -a | grep exec
kernel.kexec_load_disabled = 0



centos 에서도 확인하지 못함

[root@centos ~]# sysctl -a | grep exec
kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h
kernel.kexec_load_disabled = 0
kernel.sched_domain.cpu0.domain0.forkexec_idx = 0
kernel.sched_domain.cpu1.domain0.forkexec_idx = 0
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp0s3.stable_secret"
sysctl: reading key "net.ipv6.conf.enp0s8.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"

[root@centos ~]# sysctl -w kernel.randomize_va_space=0
kernel.randomize_va_space = 0
[root@centos ~]# ls /proc/sys/kernel/exec-shield
ls: cannot access /proc/sys/kernel/exec-shield: 그런 파일이나 디렉터리가 없습니다
[root@centos ~]# echo 0 > /proc/sys/kernel/exec-shield
-bash: /proc/sys/kernel/exec-shield: 그런 파일이나 디렉터리가 없습니다
[root@centos ~]# ls /proc/sys/kernel/exec-shield-randomize
ls: cannot access /proc/sys/kernel/exec-shield-randomize: 그런 파일이나 디렉터리가 없습니다

 

exec-shield 가 기본으로 활성화되며 더이상 선택 가능한 옵션이 아니라는 뜻인듯 하다.

https://github.com/dev-sec/chef-os-hardening/issues/166

 

Cookbook fails on CentOS Linux release 7.2.1511 - kernel.exec-shield · Issue #166 · dev-sec/chef-os-hardening

When running the cookbook from the supermarket on a CentOS Linux release 7.2.1511 node, AWS AMI ami-6d1c2007, I get the following error: ############################################### "Running han...

github.com

In RHEL7+ exec-shield is enabled by default and the /proc entry has been removed.
Exec-shield is no longer an option in sysctl for kernel tuning.
This is a security measure, as documented in the RHEL 7 Security Guide.