728x90

정보보안 공부/운영체제, 시스템 4

[운영체제] 세마포어 구현

child1과 child2가 거의 동시에 실행되기에 하나의 실행이 채 끝나기 전에 entered되고 exits 되는 일이 발생함 이를 방지하기 위해 child1, child2 중 어떤 것이 먼저 실행되면 다른 하나는 접근하지 못하도록 하는 세마포어를 구현해보자. 실행 환경 : WSL ubuntu #include #include #include #include #include #include sem_t m1, m2; void *child1(void *arg) { printf("child thread 1 entered!\n"); sem_post(&m1);// call semaphoreshere here sem_wait(&m2); printf("child thread 1 exits!\n"); return NU..

[시스템 보안] 세그멘테이션 폴트를 gdb 디버깅을 통해 확인하기

*2022-1 시스템보안 과제 백업입니다. 1. 문제 아래 소스 코드를 컴파일하여, 버퍼 오버플로우 취약점으로 인해 Segmentation fault (세그멘테이션 폴트) 오류가 발생하게 하는 최소 길이의 입력 값을 찾고, 이유를 설명하라. 이 과정에서 gdb 디버거를 활용하여 버퍼 오버플로우가 발생하는 시점 직전에 breakpoint (중단점)를 설정하고, 버퍼 오버플로우가 일어난 직후의 스택을 gdb를 통해 각각 확인하여 비교하라 (스크린샷 첨부 필수). 비교 과정을 통해, 세그멘테이션 폴트가 해당 입력에서 왜 발생하게 되었는지를 설명하라. #include int main(int argc, char *argv[]) { char buf[12]; gets(buf); printf(“%s\n”, buf); ..

[시스템 보안] 백도어 (back door)

1. 백도어의 이해 - 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용 프로그램에 접근 - 로그를 남기지 않음 (관리자도 이를 발견하기 어려움) - 주로 사람들이 많이 사용할 것 같은 프로그램에 심어놓음 (안드로이드 apk 파일 등) 1) 백도어와 트로이 목마 - 트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램 - 스파이웨어 : 설치된 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램 - 백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로 2) 백도어의 종류 (동작과 목적에 따라 구분) - 로컬 백도어: 서버의 셸을 얻어내 관리자로 권한 상승(Pr..

[시스템 보안] 레이스 컨디션 (race condition)

1. 공유자원의 접근 1) 공유 자원 - 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말함 - 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라짐 2) 경쟁 조건 (race condition) - 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황 - 경쟁 조건이 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음 (CPU 관점에서 일어나는 문맥 교환과 비슷한 의미, 레이스 컨디션 자체가 공격은 아니나 악용하면 충분히 공격으로 적용 가능) A 기기에 돈을 10만원 있는 것을 확인 B 기기에 돈을 5만원 예금 잔고는 총 15만원이 됨 (그러나 A 기기에는 update가 되지 않음) 즉, A 기기에서 10만원을 다시 예금했을 때, 잔..

728x90