Chap 6. 침입자, 바이러스 및 웜
목 차 1. 침입자 2. 바이러스 3. 웜 4. 신뢰된 시스템
1. 침입자 Hacker or Cracker 침입자 분류 가장 잘 알려진 두 가지 보안 위협들 중 하나 위장된 사용자(Masquerader) 컴퓨터 권한을 가지지 못하는 사람이 합법적 사용자 계정을 사용하기 위해 시스템을 뚫고 들어가는 사람 외부인 소행 직권 남용자(Misfeasor) 자신의 접근 권한을 오용하는 합법적 사용자 내부인 소행 비밀 파괴자(clandestine user) 시스템 감시 통제, 감사, 액세스 제어를 피하거나 감사 수집물 전체를 삭제하려는 사람 내/외부인 소행
침입자 양성적 측면 악성적 측면 양성적 침입자인지 악성적 침입자인지 알릴 방법이 없다. 네트워크 사이를 탐험 무엇이 있는지 알고자 하는 사람들 합법적 사용자의 성능 하락 악성적 측면 특권 데이터 read, 수정, 시스템 혼란 양성적 침입자인지 악성적 침입자인지 알릴 방법이 없다. 민감한 데이터를 가지고 있지 않더라도 이러한 문제에 대한 해결책을 보유해야 한다.
침입자 증가 이유 세계화 경쟁(Globalization) 산업 스파이의 활동 증가 많은 해커 클럽이 이런 목적으로 등장 클라이언트/서버 구조(Client/Server architecture) 기존 보안 s/w로 보호되는 메인 프레임이나 독립형 pc들에 데이터 저장 현재 클라이언트/서버 구조가 점점 인기 대부분의 서버 -- UNIX : 메인 프레임 형식의 보안 특징을 가지지 않음 해커의 빠른 기술 습득(Hacker’s steep learning curve) 지하 게시판 등을 통한 정보의 공유 이에 반해, 보안 및 시스템 요원들은 정보 공유를 꺼림
해커 기술 습득 예 텍사스 A&M대학에서 발생 1992년 8월 발생 그곳의 machine이 다른 곳의 컴퓨터를 공격하는데 이용 12,000개의 컴퓨터들이 연결된 센터에 패스워크 분해 루틴을 운용 수 백개의 패스워드 알아냄 한 지역 컴퓨터는 해커 게시판으로 셋업 이를 이용, 서로 접촉, 기술 진척 상황을 논의 상위 수준의 해커 고도의 기술력을 가짐 하위 수준의 해커 단순히 배포된 분해 프로그램을 이용하는 보병(foot soldier) 개념
CERT 침입자 문제에 대한 해결책으로 CERT가 발족 CERT : Computer Emergency Response Team 시스템 약점에 대한 정보 수집 활동 시스템 관리자에게 배포 불행히도, 해커 역시 CERT보고서에 접근 발견한 모든 약점을 테스트 하기 위한 프로그램을 개발
1.1 침입 기술 침입자의 목적 대부분 사용자 패스워드 형태로 보호 패스워드 파일의 보호 방법 액세스 제어 시스템의 접근 권한 획득 또는 시스템 액세스 권한 범주의 증가 특별히 보호되는 정보 획득 가능 대부분 사용자 패스워드 형태로 보호 패스워드와 접근 권한을 가진 사용자들이 연결되어 있음 합법적 사용자의 패스워드를 이용 시스템 진입 패스워드 파일의 보호 방법 일방향 암호화 암호화된 형태로 패스워드 저장 제시된 패스워드를 암호화하고 이를 저장된 데이터와 비교 액세스 제어 패스워드 파일에의 접근이 하나 혹은 소수의 계정으로 제한
패스워드 분석 기술 시스템에 적재된 default 패스워드를 시도 한 문자 내지 세 문자 정도의 짧은 패스워드를 철저히 시도 온라인 사전 또는 목록에 있는 단어를 시도 사용자 이름, 사무실 이름, 배우자 및 자녀 이름, 취미 등에 관한 정보 수집 사용자 전화번호, 주민등록 번호 관련 있는 자동차 번호 트로이 목마를 사용 원격 사용자와 호스트 시스템 간에 라인 도청 합법적 사용자 위장, 시스템 관리자로부터 새로운 패스워드 발행 요구 합법적 사용자의 패스워드 타이핑 관찰
1.2 비기술적인 공격에 대한 방어 비기술적 공격 방법 사람들의 인식 부족과 부주의로 패스워드 노출 보안 정책 권고 사항 모든 직원들에게 지속적인 교육 실시 모든 직원들은 전자우편, 음성 우편, 팩스 등의 약점에 대해 교육 받아야 한다. 침입 발견을 위한 지속적이고 주기적인 감사 책임을 명시하고 모든 직원들과 계약자들이 서명 합법적 사용자 위장, 시스템 관리자로부터 새로운 패스워드 발행 요구 합법적 사용자의 패스워드 타이핑 관찰
1.3 패스워드 보호 패스워드 시스템 침입자에 대한 방어의 최전선 시스템에 로그인한 개인의 ID를 인증 보안 제공 방법 임의적 액세스 제어가 가능 다른 사용자들의 ID를 올림으로서 자신의 파일들을 다른 사람이 읽는 것을 허가
패스워드의 약점 UNIX 패스워드 구조 새로운 패스워드 적재 첨가값 패스워드 패스워드 파일 12비트 56비트 적재 사용자 ID 첨가값 Epwd[첨가값,0] 첨가값 패스워드 12비트 56비트 적재 Crypt(3) 11문자
패스워드의 약점 패스워드 확인 패스워드 파일 패스워드 첨가값 Crypt(3) 선택 비교 사용자 ID 첨가값 Epwd[첨가값,0] 패스워드 사용자 ID 첨가값 Crypt(3) 선택 비교 암호화된 패스워드
Crypt(3)으로 알려진 암호화 루틴은 DES에 기초를 둠 DES의 E-table은 12비트 첨가값을 사용하여 수정 첨가값은 사용자에게 할당된 시간과 관련 첨가값의 목적 패스워드 화일에 중복된 패스워드를 방지 사용자가 두가지 추가 문자를 기억하도록 요구하지 않고 패스워드 길이를 효과적으로 증가 시킨다. 전체 경우 가지수를 추측 시도하는 공격을 위해 DES의 하드웨어 구현을 어렵게 함.
패스워드의 약점 UNIX 패스워드 구조의 위협 요소 guest 계정을 통하여 시스템 접근 후 패스워드 추측 프로그램을 수행 수 백개 내지 수 천개의 가능한 패스워드를 검사 가능 만약 패스워드 파일의 사본을 취득할 수 있다면 다른 컴퓨터에서도 암호풀기 프로그램을 쉽게 수행 가능 적당한 시간 이내에 수 천개의 가능한 패스워드를 훑어볼 수 있게 한다.
패스워드의 약점 1993년 보고된 패스워드 크래커 따라서, Thinking Machines Corporation 병렬 컴퓨터 이용 단위 벡터당 1초당 1,560개의 암호화 실행 처리 노드당 4개 벡터를 가지고 128노드 기계에서 초당 800,000개 암호화 수행 1,024노드 기계에서는 초당 6백 4십만개의 암호화 수행 따라서, 그러나 이러한 기술은 아직 패스워드 공격을 실현 가능하게 해 주지는 못한다. 사람들은 쉽게 추측할 수 있는 패스워드를 사용한다는 사실에 근거하여 공격 수행
패스워드의 약점 효과적인 패스워드 추측 다양한 자원으로부터 거의 14,000개의 암호화된 패스워드를 포함하는 UNIX 패스워드 파일들을 수집 이로부터 모든 패스워드들 중에 거의 1/4이 추측됨 사용 전략 사용자 이름, 이름의 첫 자, 계정명, 다른 관련된 개인 정보 다양한 사전상의 단어 시도 수집된 단어를 이용하여 다양한 순열을 시도 수집된 단어를 이용하여 다양한 대분자 사용 순열을 시도
엑세스 제어 패스워드 선택 전략 패스워드 공격을 방어하기 위한 효율적인 전략 추측하기 힘든 패스워드를 선택하는 것 목적 추측 가능한 패스워드를 제거하고 사용자가 기억할 수 있는 패스워드를 선택 4가지 기본 기술 사용자 교육 컴퓨터 생성(computer-generated) 패스워드 반작용(reactive) 패스워드 검사 사전(proactive) 패스워드 검사
4가지 기본 기술 사용자 교육 컴퓨터 생성(computer-generated) 패스워드 반작용(reactive) 패스워드 검사 많은 사용 인구와 많은 거래가 있는 곳에서는 의문시 됨 사람들은 무엇이 강력한 패스워드인지 판단을 내리지 못함 컴퓨터 생성(computer-generated) 패스워드 패스워드가 정말로 랜덤하다면 사람들이 기억하기 힘듬 반작용(reactive) 패스워드 검사 시스템이 추측가능한 패스워드를 발견하기 위해 분석기를 수행 추측되는 패스워드를 취소시키고 사용자에게 통보 사전(proactive) 패스워드 검사 가장 믿을 수 있는 방법 사용자가 자신의 패스워드를 선택 가능 패스워드가 정당하지 않으면 거절 사전 공격에서 추측될 것 같지 않은 굉장히 큰 패스워드 공간에서 기억하기 쉬운 패스워드를 선택할 수 있다는 것에 근거
침입 발견 침입 방어 시스템이 실패한다면, 제 2 방어노선은 침입 발견이다 침입이 빨리 발견되면 될수록 손상된 정도가 더 적어지고 회복도도 더 빨리 이룰 수 있다. 효과적인 침입 발견 시스템은 침입 억제력 역할 침입 예방 시설을 강화하는데 쓰일 수 있는 침입 기술에 대한 정보 수집을 가능케 한다. 침입 발견 침입자의 행동이 합법적인 사용자의 행동과 다르다는 가정에 기초 그러나, 침입자의 공격과 합법적 사용자의 정확한 구분은 되지 않음
침입 발견 Porras, P가 제안한 침입 방법 예) 통계적인 이례 발견(Statistical Anomaly Detection) 일정 기간 동안 합법적인 사용자들의 행동 관련 데이터 수집, 그 후 통계적인 테스트가 관찰된 행동에 적용 임계치(threshold) 발견 사용자와는 별개로 다양한 사건의 출현 주기에 대하여 한계점을 정의 프로필 기반(profile-based) 발견 각 사용자 활동의 프로필이 개발되고 개인 계정들에서 변화를 발견하는 데 이용 규칙 기반 발견(Rule-Based Detection) 일련의 규칙들을 정의 이례발견 전의 행동으로부터 이례적 행위들을 발견하기 위한 규칙 개발 침투 검증 어떤 전문가 시스템이 의심스런 행동을 조사
침입 발견 규칙 기반 침입 발견 시스템에서 사건들을 관찰하고 활동이 주어지 패턴인지 혹은 의심스러운 패턴인지를 유도하는 규칙들의 집합을 적용함으로써 침 입을 발견 사용될 수 있는 규칙들의 형태 1. 사용자들은 다른 사용자의 개인 디렉토리에 있는 파일을 읽지 말아야 한다. 2. 다른 사용자들의 파일에 쓰지 말아야 한다. 3. 로그인한 사용자들은 몇 시간 후에 그들이 전에 사용한 똑같은 파일들을 종종 접근한다. 4 동일한 시스템에 한 번 이상 로그인 하지 말아야 한다. 5 시스템 프로그램의 복사물들을 만들지 말아야 한다.
감사 기록 침입 발견을 위한 기본적인 툴 사용자에 대한 기록은 침입 발견 시스템에서 입력자료로 사용 기본적인 감사 기록 방법 선천적인(native) 감사 기록 운영 체제가 사용자 활동 정보를 수집하는 계정(accounting) 소프트웨어를 포함 장점 : 부가적인 수집 s/w가 필요하지 않음 단점 : 필요 정보가 포함되어 있지 않거나 유용한 형태로 정보를 가지고 있지 않다. 발견-명시 감사 기록 방법 수집 장치가 침입 발견 시스템에 의해 요구된 정보만을 생성 장점 : 다양한 시스템에서 사용 가능 단점 : 한 기계에서 수행되는 두 개의 계정 패키지를 가져야 하는데 관련 된 오버헤드
2. 바이러스 2.1 악의 있는 프로그램들 악의 있는 프로그램 호스트 프로그램 필요 독립적 논리 폭탄 트로이목마 바이러스 트랩도어 논리 폭탄 트로이목마 바이러스 박테리아 벌레 복제 가능
트랩도어 트랩도어를 알고 있는 사람이 일상의 보안 접근 절차를 통하지 않고 액세스를 할 수 있는 프로그램의 비밀 진입점 디버그, 프로그램 검색을 위해 수 년간 합법적으로 사용 어떤 특별한 입력을 인식하는 코드이거나 또는 어떤 사용자 ID로부터 수행되거나 나타날 것 같지 않은 일련의 사건들에 의해 발생되는 코드 양심 없는 프로그래머가 접근 권한을 획득하기 위해 사용될 때 위험
논리폭탄(Logic Bomb) 프로그램 위협의 가장 오래된 형태 중 하나 어떤 조건을 만나면 실행되도록 어떤 합법적인 프로그램에 끼워 넣어진 코드 조건 날짜, 시간, 특별한 사용자, 파일의 존재 여부 영향 데이터나 전제 파일 삭제, 수정, 컴퓨터 작동 중시 사용 예 프로그램 개발자가 개발 대금을 받지 못할 것을 우려 특정 지불 일자를 넘길 경우 폭발 시스템 무능력화
트로이목마(Trojan Horses) 해당 프로그램이 호출되었을 때 원치 않거나 해로운 기능을 수행하는 감춰진 코드를 포함한 어떤 유용한 프로그램이나 명령 절차 허가 되지 않은 사용자가 직접 성취할 수 없는 기능들을 간접적으로 성취하기 위해 이용 가능 유용한 유틸리티인 것처럼 이름을 붙여서 사용자로 하여금 사용하게 함 감춰진 해로운 기능이 수행됨 또 다른 동기는 데이터 파괴 유용한 프로그램을 수행하면서 동시에 사용자 파일 삭제
바이러스(Viruses) 다른 프로그램들을 변경시킴으로써 감염 완전한 자신의 복사물을 만들기 위한 비밀 방법을 명령 코드 안에 수반 감염된 S/W는 감염되지 않은 S/W 일부와 접촉할 때마다 바이러스 복제물이 새로운 프로그램으로 복사되어 넘어감 사람들이 의식하지 못하는 사이에 전염
박테리아(Bacteria) 벌레(Worm) 어떤 파일을 손상시키는 않는 프로그램 목적 자기 자신을 목제 지속적으로 재생산 모든 프로세서 용량, 메모리, 또는 디스크 공간을 차지 시스템 다운 전염되기 위해 네트워크를 이용 활성화된 벌레는 컴퓨터 바이러스나 박테리아처럼 행동 트로이목마 프로그램 주입 파괴적인 행동들 수행 벌레(Worm)
2.2 바이러스 1. 정의 자기 자신을 스스로 복제 할 수 있는 기능을 가지고 있으며 컴퓨터 프로그램이나 실행가능한 부분을 변형시켜 자신 혹은 자신의 변형을 복사해 넣는 명령어의 집합. 2. 특징 다른 시스템이나 소프트웨어를 감염시키기 위해 자신을 복제 할 수 있는 코드를 가지고 있으며 주로 어셈블리어와 c-언어로 짜여있다.
그 후 Lehigh, 예루살렘 바이러스등이 출현 3. 역사 1949년 존 폰 노이만 “Theory and Organization of Complicated Automata” -- 최초의 기술적 언급 1987년에 “파키스탄 브레인”이라는 최초의 바이러스가 미국에서 발견됨. 그 후 Lehigh, 예루살렘 바이러스등이 출현 가장 최근에 ‘멜리사’ 바이러스 출현(1999) E-mail 바이러스로 인터넷 사용시 주의가 요망되었음 감염되면 자동으로 다른 사람에게 메일 전송 기하급수적으로 증가되는 메일 양으로 인해 시스템 down 미 FBI, 배포자 검거 --- 작성한 S/W의 지문값으로 추적 검거한 것으로 추적 매년 많은 수의 바이러스가 제작, 유포되고 있음
4. 발전 단계 제 1세대 원시형 바이러스(Primitive Virus) --- 컴퓨터 바이러스의 존재 가능성을 증명하는 수준. ex)돌 바이러스, 예루살렘 바이러스 등 제 2세대 암호화 바이러스(Encryption Virus) --- 백신 프로그램이 진단하기 어렵도록 일부 또는 전부를 암호화시켜 저장. ex) 폭포 바이러스, 느림보 바이러스 등 제3세대 은폐 바이러스 ( Stealth Virus ) --- 기억장소에 존재하면서 파일의 길이가 늘어나지 않은 것처럼 은폐 --- 기억장소 먼저 검사함으로써 치료 가능 --- 브레인 바이러스, 조쉬 바이러스, 4096바이러스 등 제4세대 갑옷형 바이러스 ( Amour Virus ) --- 여러 단계의 암호화와 자체 수정기법을 이용함으로써 백신 프로그램의 개발을 지연
5. 컴퓨터 바이러스의 분류 1) 기종에 따라 개인용 컴퓨터 2) 로스 그린버그의 바이러스 분류 ( 기능에 따라 ) 대형기종 개인용 컴퓨터 2) 로스 그린버그의 바이러스 분류 ( 기능에 따라 ) ㄱ) 벌레(Worm) 프로그램 ㄴ) 트로이 목마( Trojam horse Program) ㄷ) 컴퓨터 바이러스( Computer Virus)
5. 컴퓨터 바이러스의 분류 ( 계속 ) 3) 랄프 버거의 바이러스 분류 ( 기생 장소에 따라 ) ㄱ) overwriting 바이러스 ㄴ) Non-overwriting 바이러스 ㄷ) 메모리 상주 바이러스 ㄹ) 호출 바이러스 4) IBM-PC 바이러스 분류 ( 감염되는 부위에 따라 ) ㄱ) 부트 바이러스 ㄴ) 파일 바이러스 ㄷ) 부트/파일 바이러스
1) 인식 --- 바이러스에 대한 정보와 작동원리 파악 6. 바이러스 예방 대책 1) 인식 --- 바이러스에 대한 정보와 작동원리 파악 2) 정책 --- 바이러스 연구기관 신설, 바이러스에 대한 교육 및 홍보 3) 기타 --- 주기적 백업, 바이러스의 사용, BBS로부터의 다운로드시 주의, 정품 S/W의 사용 등 7. 바이러스 백신 프로그램의 종류 1) 예방 백신 프로그램 플루샷 플러스(FLU SHOT+), 메이스 백신(Mace), 앤티 바이러스, 트랩 디스크, BOMBSAQAD, DATA PHYSICIAN, C-4 Antiviaral shield, DISK WATCHER 등 2) 검사 백신 프로그램 VIRUSCAN, VIRUS BUSTER, VCHECK, V_CHECK, NOVIRUS, VACINE, PROGNOSYS 등 3) 치료 백신 프로그램 백신 III 프로 95, PC-시린 95, COLMBUS, CLEAN-UP, TNT 노턴 안티 바이러스, MDISK등
항바이러스 방법 이상적 해결책 차선책 예방, 즉 바이러스가 시스템에 들어가는 것을 허락하지 않는 것 실질적으로 예방하기 힘들다. 차선책 발견 : 감염이 발생하면 발생된 위치를 알아낸다. 확인 : 감염시킨 구체적인 바이러스를 확인 제거 : 감염된 프로그램으로부터 바이러스의 모든 흔적을 제거하고 원래 상태로 복원 만약 제거가 되지 않는다면 감염된 프로그램을 버리고 깨끗한 버전 을 재로드
항바이러스 방법 항바이러스 소프트웨어의 구분 제1세대 : 단순 스캐너 제2세데 : 휴리스틱 스캐너 알려진 바이러스의 발견에 한정 프로그램 길이에 대한 기록을 유지하고 길이의 변화를 찾음 제2세데 : 휴리스틱 스캐너 휴리스틱 규칙들을 사용 바이러스와 연관되는 코드 단편들을 찾음 다형태 바이러스에서 이용된 암호화 루프의 시작을 찾고 암호화 키를 찾음 바이러스 복호화한 뒤 감염을 제거하고 프로그램을 복구 무결성 검사 점검값이 각 프로그램에 추가 암호화된 해쉬 함수를 사용할 수도 있다.
항바이러스 방법 항바이러스 소프트웨어의 구분(계속) 제3세대 : 활동 트랩 제4세대 : 통합적 방어 감염된 프로그램의 구조보다는 행동에 의해 바이러스를 구별하는 메모리 상주 프로그램 다양한 바이러스의 폭넓은 종류에 대한 감염 형태나 휴리스틱을 개발하는 것이 필요하지 않은 장점을 가짐 제4세대 : 통합적 방어 다양한 항바이러스 기술들로 구성된 패키지 스캐닝과 활동 트랩 요소들을 포함 바이러스의 능력을 제한하는 액세스 제어 능력을 가짐
3. 벌레(Worm) 바이러스와 침입자의 특징을 모두 가짐 벌레의 목적 침입자와 마찬가지로 시스템에 침투하는 것 바이러스처럼 자기 복제 잠복 단계, 증식 단계, 격발 단계, 실행 단계 수행될 때마다 불법적인 행위 발각되지 않기 위해 자신의 존재를 위장 벌레의 목적 침입자와 마찬가지로 시스템에 침투하는 것 네트워크를 통해 다른 컴퓨터에 자기 복제품을 침투 벌레에 대한 네트워크의 취약성 네트워크를 통하여 여러 호스트들에게 자신을 번식시킬 수 있는 기능을 가졌다는 점
대응책 벌레 특징 --- NIST(National Institute of Standards and Technology) 벌레는 자신을 복제하기 위하여 운영체제 또는 시스템 관리상의 결함을 이용 모든 네트워크의 정지를 초래 해결방안 액세스 제어 사용자의 신원확인과 인증은 벌레가 증식하는 것을 막아준다. 침입발견 방화벽 단일 LAN이나 인터넷은 방화벽 시스템에 의하여 보호될 수 있다.
4. 신뢰된 시스템 침입자나 악의 프로그램으로부터 시스템 방어 능력을 향상 시키기 위한 방법 데이터 액세스 제어 사용자 액세스 제어 절차를 통하여 시스템에 식별 연관된 허가 동작과 액세스 가능한 파일의 목록이 있다. 운영체재는 사용자 프로필을 근거로 규칙을 실행 파일 또는 데이터베이스 관리 시스템 특정 레코드 또는 레코드 일부에의 엑세스 제어 일반적인 액세스 제어 모델 액세스 행렬(access matrix)
비분류(Unclassified, U), 비밀(Secret, S), 최고비밀(Top Secret, TS) 혹은 그 이상으로 분류 보안 주준별로 나누어 데이터나 자원을 보호 비분류(Unclassified, U), 비밀(Secret, S), 최고비밀(Top Secret, TS) 혹은 그 이상으로 분류 데이터 다수 영역과 수준들이 정의 요구 조건 ---> “다중 수준 보안”으로 간주 다중 수준 보안 시스템의 두 가지 규칙 상위 읽기 불가(no read up) 동등 또는 그 이하의 보안 수준을 갖는 객체만을 읽을 수 있다. 하위 쓰기 불가(no write down) 동등 또는 그 이상의 보안 수준을 갖는 객체에만 쓸 수 있다. 두 가지 조건의 실행으로 다중수준 보안을 제공
참조 모니터(reference monitor) 데이터 처리 시스템을 위해서 취해진 방법의 기초 개념 객체에 대한 주체의 엑세스를 규제하는 컴퓨터의 운영체재에서 제어하고 있는 요소 보안 핵심 데이터베이스에 대한 액세스를 갖는다. 보안 규칙들을 수행 특성 완전한 중재 : 모든 액세스들에 대해 시행 격리 :권한 부여되지 않은 수정으로부터 보호 증명 가능 : 참조모니터의 정확성은 증명 가능해야 한다.
대안 : TIU(Trusted Interface Unit)을 사용 신뢰된 시스템 네트워크 환경으로 확장 가능 모든 호스트들이 신뢰된 시스템이 되도록 요구 신뢰되지 않은 시스템보다 고가 대안 : TIU(Trusted Interface Unit)을 사용 부착된 장치로부터 데이터를 받아들이고 네트워크 상으로 패킷을 전송 할당된 보안 수준에서 동작 요구되는 두 가지 기능 전송되는 각 패킷을 기밀 수준을 분류 자기 자신이나 하위 수준으로 분류된 패킷만을 받아들임 호스트가 허용되는 기밀 분류 등급까지만 데이터를 받는다.