본문으로 바로가기
반응형

13. 유닉스 파일시스템 설명


d + rwx + rwx + rwx (파일/디렉토리 구분 + 소유자 + 그룹 + 사용자, r : 읽기 w : 쓰기, x : 실행)

특수한 경우에 쓰이는 특수권한

 

- SET-UID : chmod 4777 [파일]

  • 실행하는 동안 해당 파일의 소유자 권한으로 인식
  • 일반적으로 실행 파일에 사용
  • 소유자 권한 부분의 x자리에 s로 표기됨.
  • 실행 권한이 없을 경우 대문자 S로 표기됨.

- SET-GID : chmod 2777 [파일]

  • 실행하는 동안 해당 파일의 소유자그룹 권한으로 인식.
  • 일반적으로 디렉토리에 설정.
  • 사용자가 파일이나 디렉터리를 생성하면 사용자가 속한 그룹에 상관없이 디렉터리 소유 그룹으로 만들어진다.
  • 그룹 권한 부분의 x 자리에 s 로 표기 된다.
  • 실행 권한이 없을 경우 대문자 S 로 표시된다.

- Sticky-Bit : chmod 1777 [파일]

  • 일반 사용자들이 디렉터리에서 파일 및 디렉터리 생성이 가능하다.
  • 일반 사용자들은 자신이 생성한 것 이외에는 수정 및 삭제가 불가능하다.
  • 디렉터리에만 적용된다.
  • 시스템 기본 폴더인 /tmp 디렉터리에 설정되어 있다.
  • 설정하면 other 계층 권한 부분의 x 자리에 t 로 표기되며 실행권한이 없는 경우 대문자 T 로 표기된다.

 

14. 파일시스템에서 가용공간(Free Space)을 관리하기 위해 사용하는 방법 - 비트벡터(Bit Vector)

ㅇ 간편하며 연속적인 n개의 가용 블록을 찾는 데 효과적이다.

ㅇ 마이크로컴퓨터는 가능하지만 대형컴퓨터에서는 불가능하다.

ㅇ 하드디스크의 용량이 작을수록 유리하다.

 

15. 유닉스 시스템의 로그 분석에 사용하는 파일

 

wtmp

/var/log/wtmp

성공한 로그인, 로그아웃한 정보를 가지고 있다. last 명령어에 사용된다.

 

utmp

시스템에 현재 로그인한 사용자들에 대한 상태정보를 가지고 있다. who 명령어에 사용된다.

 

btmp

5번 이상 로그인에 실패했을 경우에 로그인 실패 정보를 기록. lastb 명령어로 확인가능

 

pacct

사용자가 로그인한 후부터 로그아웃할 떄까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보를 가지고 있음.

binary 파일로 되어 있으며 그 내용을 확인하기 위해서 lastcomm 명령어 사용.

 

lastlog

사용자별 가장 마지막에 로그인한 시간과 접속IP, tty 등에 대한 정보를 가지고 있음.

 

sulog

Switch User을 사용한 로그가 기록되어 있음.

 

16. snort를 이용하여 탐지할 수 없는 공격

 

snort 란?

- IDS (Intrusion Detection System) : 침입 탐지 시스템 (버퍼 오버플로우, TCP SYN Flooding, IP Filtering ...)

- IPS (Intrusion Prevention System) : 침입 방지 시스템 (사전 공격 ...)

 

IDC에 대표적인 오픈소스 Snort

 

동작 원리

1. Snifer 패킷 수집하는 단계

2. Preprocessort 트래픽의 플러그인을 확인해 매칭되는지 확인

3. 탐색 엔진 Snort의 시그니처라 불리는 탐지 Rule에 의해 특정 트래픽을 탐지

4. 출력 탐지 Rule에 의해 해당 네트워크 트래픽의 정보가 출력되거나 저장

 

18. 버퍼 오버플로우(Buffer Overflow)에 대한 설명

- 메모리에서 스택영역에 복귀주소를 가진다.

- 스택 오버플로우(Stack Overflow)는 복귀주소에 악성 모듈을 삽입하여 공격할 수 있다.

- 힙(Heap)영역은 malloc 혹은 new의 동적 함수로 할당된다.

- 버퍼 오버플로우(Buffer Overflow)는 제한된 메모리를 초과한다.

- 프로세스 메모리 구조, Text, Data, Heep, Stack 구분.

  • Text 영역 : 프로그램 코드오 상수 정의, 읽기만 가능한 메모리 영역이기 떄문에 데이터를 저장하려고 하면 분할 충돌을 일으켜 프로세스가 중지됨.
  • Data 영역 : 전역 변수와 정적 변수가 저장되어 있는 영역.
  • Heep 영역 : 프로그래머의 필요에 따라 동적 메모리 호출에 의해 할당되는 메모리 영역
  • Stack 영역 : 함수 인자 값, 함수 내의 지역 변수, 함수의 반환 주소가 저장됨. 상위 메모리 주소에서 하위 메모리 주소로 데이터가 저장됨.

- 버퍼 또는 데이터 저장 영역에 할당된 용량보다 더 많은 입력이 위치하면 다른 정보를 변경할 수 있는 조건이다.

- 공격자는 이런 조건을 이용하여 시스템을 중지시키거나 시스템의 제어를 갖기 위한 특별한 코드를 삽입한다.

- 프로세스가 정해진 크기의 버퍼 한계를 벗어나 이웃한 메모리 위치에 데이터를 겹쳐 쓰려고 시도하는 것과 같은 프로그래밍 오류의 결과로 발생함.

- 취약점이 존재하는 함수 (strcpy, strcat, scanf, gets, sscanf, vscanf, vscanf, sprintf, realpath ~)

- 권장 함수 (strncat, strncpy, fgets, fscanf, vfscanf, snprintf, vsnprintf ~)

- 버퍼 오버플로우 공격 대응책

  • 프로그래밍 언어의 선택 (변수 타입, 타입에 허용되는 연산들에 강력한 표기)
  • 안전한 코딩 기법
  • 언어 확장과 안전한 라이브러리 사용
  • 스택 보호 매커니즘 (Stack Guard)
  • 스택 쉴드 (Stack Shield)
  • ASLR (주소 공간의 임의 추출)
  • NOP sled (NOP 썰매) - 스택 버퍼의 맨 끝 부분에 셸 코드를 위치시키고 버퍼의 앞부분에 의도적으로 채워진 NOP 기계어의 연속
  • 실행가능 주소 공간의 보호
반응형