오래 못 할 짓 하지 않기

[ 컴퓨터 보안 ] 3. Authentication (인증) + Set-UID 특수권한 본문

3학년 2학기/컴퓨터 보안(Computer Security)

[ 컴퓨터 보안 ] 3. Authentication (인증) + Set-UID 특수권한

쫑알bot 2024. 9. 6. 16:19
728x90

Authentication

 

: 유저의 고유 정보를 확인하는 과정

 

- 비밀번호

- ID값

 

등등으로 유저의 고유 정보를 볼 수 있다.

 

 

 

유저와 관련된 정보는 /etc/passwd 파일에 저장되어 있다.

아이러니하게도 파일 이름은 passwd지만 사실은 password를 제외한 모든 정보들이 담겨있다.

(passwd는 모든 유저가 접근 가능하기 때문에!)

 

* 가장 마지막에 있는 Path : 로그인했을 때 시작하는 주소.

 

 

 

📌 그럼 비밀번호는 어디에 있을까?

➡️ Shadow 파일에 있다.

 

해당 파일에서 각각의 Entry는 다음과 같은 형태로 저장되어있다.

 

유저 : $(사용된 알고리즘)$ Salt값들 $ Password Hash 시킨 값 : 기타 등등 


 

좀 더 구체적인 형태를 보면 위와 같다.

1. Alice가 Bob(서버)에게 password를 보낸다.

2. Bob이 Password + Salt를 합쳐서 Hash로 돌린다.

 

그 이후에 같은지 다른지 비교도 하긴함.

 

 

📌 Salt란?

: 어느 부분이 Password를 hash로 한 부분인지 알 수 없도록 끼워넣는 무작위 문자열

 

- 목적 : Brute-force 공격의 진행을 늦추기 위해 

 

같은 비밀번호로 설정해도 salt+password hash 결과는 매번 다르기에 맞추기가 어렵다.

 



Privileged Program

: 특수 권한을 사용하여 실행시키는 프로그램

 

- Daemons 

: Background에서 돌아가는 프로그램

실제 유저와 직접 교류하진 않는다.

+ 하지만 실행시키기 위해서는 root 권한이나, 특수 권한이 필요하다.

 

 

- Set -UID Programs

: File의 Owner가 아니지만, Owner의 권한으로 실행시키는 것

 

+ Program에 special bit로 표시되어있다.

 

 

 

예시)

아이언맨 수트를 입은 사람은 강해진다.

➡️ 내가 강하지 않더라도 그 수트를 입으면 강한 사람이 된다.

= 내가 File의 Owner가 아니도 set-UID를 통해 Owner처럼 파일을 다룰 수 있다.

 

+ 수트를 나쁜 놈들이 입으면 문제가 되듯이

   이 권한을 나쁘게 쓰면 문제가 된다.

 

 

 


UID 관련해서는 2가지를 가진다.

 

- Real UID (RUID) : 진짜 파일/프로그램의 Owner ID

- Effective UID ( EUID ) : 해당 파일/프로그램에 privilege 를 가진 유저ID

 

 

 

 


이러한 권한을 이용한 공격은 2가지가 있다.

권한 = 파일에 Owner처럼 접근/작성할 수 있는 권한

 

- User Inputs : Explicit input

- System Input : Race condition

 

 

 

User Input

 

📌 Buffer overflow

 

 : 버퍼에 이상한 코드를 꽉 채워 넣어서

   입력 부분을 넘어 실행 영역에서 악성 코드가 실행되도록 하는 것

 

📌 Format String vulnerability

: String 으로 프로그램 동작을 바꾸기

 


System Input

 

📌 Race Condition

파일을 unprivileged file 에 Link 시킨다.

 

 


 

Environment에 입력을 줘서 바꿀 수도 있다.

 

혹은 Path를 넣어야 하거나

System 관련 명령어가 들어갈 자리에 악의적인 입력을 할 수도 있음

 

 

(출처)

한동대학교 고윤민교수님 - 컴퓨터보안