티스토리 뷰

  백도어( Backdoor)



백도어는 쉽게 '뒷문', '개구멍'이라는 의미로 시스템 관리자가 시스템 유지 보수를 할 때 좀 더 편하게 접근하기 위해
만들어 놓은 보안상의 구멍입니다. 해커들은 이를 이용해 루트 권한을 획득한 후 재 침입을 위해 사용하곤 합니다.
리눅스 실습환경을 통해 간단하게 백도어 공격 원리 파악

  공격 원리 



 1.루트 권한 취득 후 백도어 파일 생성 


↑루트권한 취득 후 임의의 C파일을 생성한다.

  # 파일 생성 후 다음과 같은 코드를 작성한다.



1
2
3
4
5
6
7
#include <stdio.h>
 
main(){
    setuid(0);
    setgid(0);
    system("/bin/bash");
}
cs

  # setuid == 0 , setgid == 0  → root의 권한

  # system : 프로그램 실행 명령


 2.생성한 파일 컴파일 


↑생성한 백도어 파일을 컴파일하여 실행 파일 생성

  # 실행 파일의 이름은 임의로 설정해도 된다.



 3.실행 파일 권한 변경 



↑생성된 실행 파일의 권한에 setUID( 4000 ) 및 모든 권한( 777 )을 부여

  # 4777 → 특수권한으로 setUID 부여

  # 권한에 s가 붙었고, 소유자는 root이다.

 


 4.임의 유저 생성 



↑임의 유저 생성

  # useradd 명령을 통해 user를 생성할 수 있다.



↑생성한 user로 들어간다.

  # su - 명령을 통해 접근

  # id명령을 통해 현재 아무런 권한이 없는 test02 유저 이다.






 5. 미리 생성한 백도어 실행파일 찾기 



↑find 명령을 통해 / 디렉터리 아래 파일이름이 aaa인 파일을 찾아 보았다.

  # 아무런 결과가 나오지 않는다. 이는 관리자 권한으로 백도어 파일을 생성할 때 root디렉터리 아래에 만들었기 때문

    일반 사용자는 접근할 수 없다. 

  # root권한을 가진 사용자로 들어가 백도어파일을 /etc디렉터리 아래로 옮겨주자



↑일반 사용자도 접근할 수 있는 /etc 디렉터리 아래 백도어 실행 파일을 옮겨 놓았다.



↑find 명령을 통해 / 디렉터리 아래 파일의 이름이 aaa인 파일을 찾아 출력 했다.( print )

  # 2>/dev/null : 발생한 에러는 쓰레기통( /dev/null )에 넣어라

  # 디렉터리 이름을 검색하기 때문에 에러가 발생하는데 이는 무시해도 무방

  # 0 == standard input, 1 == standard output , 2 == standard error 



↑2>/dev/null 옵션을 넣지 않은 경우



↑-perm -4000옵션을 통해 더욱 정확하고 빠르게 파일을 찾아낼 수 있다.( 선호 )

  # -perm = permission( 권한 ) 관련 명령어

  # -4000 : 권한이 4000이상 , 4000 : 권한이 딱 4000



 6. 백도어 파일 실행하기 



↑만들어 놓은 백도어 파일을 실행하면 root 권한을 획득할 수 있다.

  # 프롬프트 모양 변화 ( $ → # )

  # id 명령을 통해 root권한 확인

  # exit 명령을 통해 복귀

  # 실행시 소유자의 권한으로! 현재 파일의 소유자는 root이다. root의 권한으로 셸을 실행