컴퓨터 보안 연습문제
1.1 컴퓨터 보안을 정의하라.
자동화된 정보 시스템 내의 자원들의 기밀성, 무결성, 가용성을 보존하기 위해 제공되는 보호
1.2 OSI 보안 구조는 무엇인가?
보안을 제공하는 작업을 구성하는 방법으로 보안 공격, 보안 메커니즘, 보안 서비스에 중점을 둔다.
보안 공격 : 조직이 소유한 정보의 보안을 손상하는 행위
보안 메커니즘 : 보안 공격의 탐지, 방지, 복구를 위해 설계된 메커니즘
보안 서비스 : 데이터 처리 시스템 및 조직의 정보 전송의 보안을 향상시키는 서비스로, 보안 공격에 대응하고, 서비스를 제공하기 위해 여러 보안 메커니즘을 이용한다.
1.3 능동적, 수동적 보안 공격의 차이는 무엇인가?
능동적 공격 : 시스템 자원을 바꾸거나 동작에 영향을 미치려는 시도
수동적 공격 : 시스템 정보를 이용하거나 알아내려는 시도, 시스템 자원에 영향을 미치지는 않는다.
1.4 능동적, 수동적 네트워크 보안 공격의 카테고리를 간략히 정의하고 기술하라.
능동적 네트워크 공격 : 데이터 스트림 변경 혹은 잘못된 스트림 생성을 포함하며 다음과 같은 네 가지 유형으로 나눌 수 있다.
재연 - 데이터 유닛을 포획하고 후에 재전송함으로써 비인가된 효과를 내는 것
매스커레이드 - 한 존재가 다른 존재인 것처럼 가장하는 것
메시지 변경 - 메시지 일부분을 변경 혹은 지연이나 재정렬을 통해 승인되지 않은 효과를 발생시키는 것
서비스 거부 - 통신 설비의 정상적인 사용 혹은 관리를 막거나 방해하는 것
수동적 네트워크 공격 : 도청 혹은 모니터링의 본질이며 다음과 같은 두 가지 유형으로 나눌 수 있다.
메시지 콘텐츠 노출 - 전송 콘텐츠들의 노출
트래픽 분석 - 노출 된 콘텐츠들이 암호화가 되어 있더라도 패턴을 통해 내용을 추측
능동적 네트워크 공격은 탐지와 복구, 수동적 네트워크 공격은 방지에 중점을 둔다.
1.5 보안 서비스의 카테고리를 간략히 정의하고 기술하라.
인증 - 통신 주체들이 자신이 주장하는 신원을 증명
접근 제어 - 자원의 무단 사용 방지
기밀성 - 무단 유출로부터 데이터 보호
무결성 - 수신된 데이터가 인가된 존재가 보낸 원본과 일치
가용성 - 네트워크 요소, 저장된 정보, 정보 흐름, 서비스 어플에 대한 인가된 접근 거부
부인 방지 - 통신에 참여한 주체들에 의한 거부에 대한 보호를 제공
1.6 보안 메커니즘의 카테고리를 간략히 정의하고 기술하라.
특정 보안 메커니즘 - OSI 보안 서비스 제공을 위해 적절한 프로토콜 계층에서 구체화
보편적 보안 메커니즘 - 특정 OSI 보안 서비스나 프로토콜 계층에 특화되지 않은 메커니즘
2.1 대칭 암호의 필수 요소는 무엇인가?
평문 - 암호화 알고리즘의 입력 값으로 입력되는 원래 메시지나 데이터
암호화 알고리즘 - 평문에 대해서 다양한 치환작업과 변환작업을 수행
비밀키 - 암호화 알고리즘 수행에 필요한 키
암호문 - 출력 데이터로 생성된 암호화된 메시지
복호화 알고리즘 - 암호화 알고리즘과 같지만 반대로 진행
2.2 두 사람이 대칭 암호로 안전하게 통신하는 데 몇 개의 키가 필요한가?
현대 알고리즘 사이에서 흔히 쓰이는 키는 128비트 키이다.
2.3 안전한 대칭 암호화 사용을 위한 두 가지 주요 요구사항은 무엇인가?
첫 번째는 강력한 암호 알고리즘
두 번째는 송신자와 수신자는 비밀키의 복제 본을 안전한 방식으로 획득하여 이를 안전하게 잘 보관
2.4 메시지 인증을 위한 세 가지 접근방식을 말하라.
대칭 암호화 코드 - 발신자와 수신자만 키를 공유.
메시지 인증 코드(MAC) - 메시지와 공통된 비밀키의 복소함수로써 메시지 인증 코드를 계산한다.
단 방향 해시함수 - 공격자가 같은 해시값을 이용해서 다른 메시지를 만드는 것을 어렵게 하기 위한 보안 방법이다.
2.5 메시지 인증 코드란 무엇인가?
메시지의 정당성을 검증하기 위하여 메시지에 추가되는 어떤 값 또는 부분을 말한다.
2.6 그림 2.4의 세가지 방식에 대해 간단히 설명하라.
문제가 거지네. 2.4는 한가지 방식( 메시지 인증코드 .mac을 통한 인증)만 보여주는 그림. 그림2.6이 3가지 방식.
단 방향 해시 함수를 이용한 메시지 인증 방식 세 가지에 대해 간략히 설명하라.
전통적인 암호화 기법 이용 - 대칭키 암호화를 이용하여 암호화. 수신자와 발신자만 암호키를 공유한다고 가정하면 인증이 보장
공개키 암호화 기법 이용 -비대칭 방식으로, 두가지 분리된 키를 사용하여 암호화한다.
비밀 값 이용 - 비밀키를 공유하고, 비밀키와 메시지의 결함을 통해 해시함수를 계산 하는 방식.
2.7 해시 함수(H)가 메시지 인증에 유용하게 사용되기 위해서 가져야 할 성질들은 무엇인가?
H는 어떠한 사이즈의 데이터 블록이라도 적용될 수 있어야 한다.
H는 고정된 길이의 결과를 내야 한다.
H는 상대적으로 주어진 x 계산이 쉽고, 하드웨어, 소프트웨어 모두 실용적이어야 한다.
주어진 모든 코드 h에 대하여 H(x) = h의 x를 찾는 것은 계산적으로 불가능해야 한다. (한 방향 || 사전 이미지 저항)
어떠한 블록의 x가 주어지더라도 계산상으로는 H(y) = H(x)인 y != x를 찾는 것은 불가능해야 한다. (2차 사전 이미지 저항 || 약한 충돌 저항)
H(x) = H(y)인 어떠한 한 쌍(x, y)를 찾는 것은 계산상으로 불가능해야 한다. (충돌 저항 || 강한 충돌 저항)
2.8 공개키 암호시스템의 주요 요소는 무엇인가?
평문 - 암호화 알고리즘의 입력 값으로 입력되는 원래 메시지나 데이터
암호화 알고리즘 - 평문에 대해서 다양한 치환작업과 변환작업을 수행
공개키와 암호키 - 한 키는 암호화에 대해 사용, 다른 한 키는 복호화에 사용
암호문 - 출력 데이터로 생성된 암호화된 메시지
복호화 알고리즘 - 암호와 알고리즘과 같지만 반대로 진행
2.9 공개키 암호시스템의 세 가지 사용을 정의하라.
전자 서명 - 해시코드를 자신의 비밀키로 암호화 해서 전사 서명을 만든다.
공개키 인증서 - 제 3자에 의해 서명된 한 덩어리의 블록, 공개키와 키를 소유한 사용자의id 로 구성되어 있다.
전자 봉투 - 1회용 램덤 대칭키와 수신자의 공개키를 통해 디지털 봉투 생성.
2.10 개인키와 비밀키의 차이는 무엇인가?
대칭암호에서 사용되는 키는 통상적으로 비밀키라 지칭된다. 공개키에서 사용되는 두 개는 공개키와 개인키로 지징된다. 개인키는 반드시 비밀리에 저장되지만, 혼돈을 막기 위해 비밀키라 불리는 대신 개인키라 부른다.
2.11 전자 서명은 무엇인가?
출처 및 데이터의 무결성 인증에 사용된다. 해시 코드를 서명자의 개인키로 암호화하여 서명하고 데이터를 생성한다. 단, 기밀성을 제공하지는 않는다.
2.12 공개키 인증은 무엇인가?
사용자는 인증기관에 안전한 방법으로 자신의 공개키를 전달하고, 서명된 인증서를 얻는다. 그러면 사용자는 인증서를 발행할 수 있다. 이 사용자의 공개키가 필요한 사람은 누구나 인증서를 얻을 수 있다. 인증서에 첨부된 신뢰할 수 있는 서명으로 유효성 검사를 할 수 있다.
2.13 공개키 암호를 비밀키 배포에 어떻게 이용할 수 있나?
DIffie-Hellman 키 교환
3.1 사용자 신원 인증의 네 가지 통상적인 방법은 무엇인가?
개인이 알고 있는 어떤 것 : PIN
개인이 소유하고 있는 어떤 것 : token
개인의 어떤 것 : 정적 생체인식
개인이 하는 것 : 동적 생체인식
3.2 패스워드의 기밀성에 대한 주요 위협을 간략히 기술하라.
오프라인 사전 공격 - 비밀번호 파일을 얻어 공격
특정 계정 공격 - 특정 계정을 목표로 비밀번호가 일치할 때까지 비밀번호 추측 공격
잘 알려진 비밀번호 공격 - 잘 알려진 비밀번호를 대입
단일 사용자에 대한 비밀번호 추측 - 사용자 정보를 파악 후 비밀번호 추측
단말기 강탈 - 단말기를 강탈
사용자 실수 이용 - 사용자의 실수를 악용
다중 비밀번호 사용 - 서로 다른 네트워크 장치가 같은 비밀번호 비슷한 경우를 이용
컴퓨터 모니터링 - 비밀번호가 네트워크상에 전달될 때 도청
3.3 패스워드 파일을 보호하기 위한 두 가지 일반적인 기법은 무엇인가?
해시된 비밀번호를 사용하거나 파일에 대한 접근 자체를 거부한다.
3.4 패스워드 선택이나 지정을 위한 네 가지 일반적인 기법을 기술하라.
사용자 교육, 컴퓨터에 의한 비밀번호 생성, 반응적 비밀번호 확인, 사전적 비밀번호 확인
3.5 메모리 카드와 스마트 카드의 차이점을 설명하라.
소프트웨어를 포함하고 있느냐 없느냐가 가장 큰 차이점
3.6 생체인식에 사용되는 주된 물리적 특성을 설명하라.
얼굴 특징, 지문, 손 기하학, 망막 패턴, 홍채, 서명, 음성
3.7 생체인식 사용자 인증에서 등록, 검증, 식별을 설명하라.
등록 - 사용자 개개인의 생체인식 정보가 데이터베이스에 등록되어야 한다.
검증 - 생체 특징을 추출하여 생체 정보와 비교, 검증한다.
신원 확인 - 생체 특징을 받아들여 데이터베이스에 등록된 정보와 비교, 확인한다.
@3.8 오류 매치 비율과 오류 비매치 비율을 정의하고 두 비율의 관계의 임계 값을 설명하라.
오류가 발생하면 오류 매치, 발생하지 않으면 오류 비매치?
시스템에 한계치를 정할 때 너무 낮게 하면 공격자도 인증되고, 너무 높게 하면 공격자가 인증될 확률은 떨어지나 인증된 사용자도 인증될 확률이 떨어진다.
3.9 도전-응답 프로토콜의 일반적 개념을 설명하라.
호스트 쪽에서 h()와 f()를 명시하여 전송, 사용자의 응답은 f(r`, h(P`))을 계산한 값이다. 여기서 r` = r이고, P` = 사용자의 비밀번호다. 함수 h는 해시 함수이며 사용자의 비밀번호와 f를 통해 생성한, 랜덤 숫자를 조합한 값과 연산한 값을 출력한다.
4.1 DAC와 MAC의 차이를 정의하라.
DAC는 한 엔터티가 자신의 뜻에 따라 다른 엔터티가 자원에 접근할 수 있도록 권한을 부여하는 기법이고, MAC는 한 엔터티가 자신의 뜻에 따라 다른 엔터티가 자원에 접근할 수 있도록 권한을 부여할 수 없는 기법이다.
4.2 RBAC와 DAC, MAC은 어떤 관련이 있는가?
어떤 관련이 있는지는 나도 잘 모르겠고, 사용자에 따라 권한이 부여되는 것이 아니라, 역할에 따라 권한이 부여되는 차이가 있다.
@4.3 접근 제어 시스템의 세 가지 주제를 설명하라.
세 가지 모델도 아니고, 세 가지 정책도 아니고, 세 가지 요소도 아니고, 세 가지 주체도 아니고...
세 가지 모델 - 인증, 권한 부여, 감사
세 가지 정책 - 임의 접근 제어(DAC), 강제 접근 제어(MAC), 역할기반 접근 제어(RBAC)
세 가지 요소 - 주체, 객체, 접근 권한
세 가지 주체 - 소유자, 그룹, 전체
4.4 접근 행렬은 무엇인가?
접근 행렬의 한쪽 차원은 자원에 접근을 시도하는 확인된 주체로 구성된다. 일반적으로, 사용자뿐만 아니라 터미널, 네트워크장비, 호스트, 또는 어플리케이션에 의해서 접근이 제어되지만, 이 목록은 사용자 개개인 또는 사용자 그룹으로 구성될 수도 있다. 다른 쪽의 차원은 접근이 되는 객체로 이루어져 있다. 가장 세밀한 단계에서 객체는 각각의 데이터 필드일 수 있으며 레코드나 파일, 또는 심지어 데이터베이스 전체처럼 좀 더 집단화된 그룹 또한 접근행렬에서 객체일 수도 있다. 행렬 각각의 엔트리는 특정 객체에 대한 측정 주체의 접근 권한을 나타낸다.
4.5 접근 제어 목록과 capability ticket의 차이는 무엇인가?
특정 자원에 대해서 특정 접근 권한을 가진 주체를 결정할 때는 ACL이 편리하다. 왜냐하면 각각의 ACL은 특정 자원에 대한 정보를 제공하기 때문이다. 그러나 이런 자료구조는 특정 사용자가 어떤 접근 권한을 이용할 수 있는지를 결정할 경우에는 불편하다. 접근 행렬을 열로 분리하면 capability tickets가 생성된다. 이것은 특정 사용자에 대한 승인된 객체와 기능을 명시한다. 각각의 사용자는 여러 개의 티켓을 가지고 있고 다른 사용자에게 그 티켓을 빌려주거나 줄 수 있도록 승인받을 수 있다. 티켓이 시스템 여기저기에 흩어져 있기 때문에, 접근 제어 목록보다 큰 보안상 문제를 일으킬 수 있다. 티켓의 무결성은 반드시 보호되어야 하며, 보장되어야 한다. 특히 티켓은 임의로 생성할 수 없어야 한다. 이를 위한 방법으로 사용자 대신 운영체제가 모든 티켓을 가질 수 있도록 하는 것이다. 이 티켓은 사용자가 접근할 수 없는 메모리 영역에 저장되어야 할 것이다. 다른 대안은 임의로 생성할 수 없는 토큰을 capability ticket에 포함하는 것이다.
4.6 UNIX의 운영모드는 무엇인가?
p136 시작 부분에 차이점이라고 뭐 설명 나옴... 그거로는 알 수 없고 네이버 검색해보니 UNIX는 듀얼모드까지 지원한다고 함, 유저모드, 커널모드 합쳐진 것..
4.7 RBAC₀, RBAC₁, RBAC₂, RBAC₃ 모델들을 정의하라.
RBAC₀(기본 모델) : 역할 계층과 제약이 없는 RBAC₀ 시스템에서 네가지 종류의 엔티티를 포함한다.
사용자 : 컴퓨터 시스템에 접근할 수 있는 사람. 각각의 사용자는 관련된 user ID를 갖는다.
역할 : 컴퓨터 시스템을 제어하는 기관 내에서 지명이 된 직무. 전형적으로 각각의 역할은 그 역할에 주어진 권한과 책임, 그리고 이 역할을 맡은 사용자에게 주어진 권한과 책임에 연관이 있다.
허가 : 1개 또는 그 이상의 객체로 접근하는 특정한 모드의 승인. 같은 의미의 용어는 접근 권한, 권한, 인가가 있다.
세션 : 사용자와 사용자에게 할당된 역할의 집합에서 활성화된 부분집합과의 매핑.
RBAC₁(역할 계층) : 역할 계층은 기관 내의 역할의 계층 구조를 보여주는 수단을 제공한다. 일반적으로 보다 큰 책임감이 따르는 직무는 자원에 접근할 수 있는 더 큰 권한을 가진다. 하위의 직무는 상위에 있는 직무의 접근 권한의 부분집합을 가질 수 있다. 역할 계층은 하나의 역할이 암시적으로 종속된 역할과 관련된 접근 권한을 포함하기 위해서 상속의 개념을 이용한다.
RBAC₂(제한 조건) : 제약은 한 기관내의 관리정책과 보안정책의 특성에 적합하게 만들어주는 수단을 제공한다. 제약이란 역할과의 관계 또는 역할과 관련된 상태의 관계로 정의할 수 있다. [SAND96]은 다음과 같은 종류의 제약을 나열한다 : 상호 배타적인 역할, 개수, 필요조건.
통합된 모델
RBAC₃(통합 모델) : RBAC₃ 는 RBAC₀와 RBAC₁과 RBAC₂의 기능을 모두 포함한다.
@4.8 RBAC 시스템의 기본 모델의 네 가지 유형의 존재를 정의하라.
문제에서 말하는 RBAC가 NIST RBAC를 뜻하는 것인지 RBAC₀ 혹은 Core RBAC를 뜻하는 것인지 모르겠음
NIST RBAC의 네 가지 모델 요소는 Core RBAC 계층적 RBAC, 직무의 정적분리(SSD) 관계, 직무의 동적 분리(DSD) 관계이다.
RBAC₀ 혹은 Core RBAC의 네 가지 요소는 사용자, 역할, 허가, 세션이다.
@4.9 역할 계층 제약의 세 가지 유형을 기술하라.
나도 모르겠네요 정말... p145
4.10 NIST RBAC 모델에서 SSD와 DSD의 차이점은 무엇인가?
SSD는 사용자가 한 역할에 할당되어 있으면 다른 역할에 할당되지 않는 상호 배타적인 역할의 집합을 정의할 수 있다. 게다가, SSD는 역할 집합에 개수 제한을 가질 수 있다. 역할 집합과 연관된 개수 제한은 SSD 정책을 위반할 수 있는 역할 조합을 나타내는 숫자보다 더 큰 숫자이다. 예를 들어 구매 기능과 관련이 있는 접근 권한은 세 가지 이상의 역할에 아무 사용자도 할당이 안 될 수 있는 제한과 함께 네 가지의 역할 집합으로 구조화될 수 있다. SSD의 간략한 정의는 SSD가 한 쌍의 (역할 집합, n)으로 정의되고, 역할 집합에서 n개 또는 그 이상의 역할에 아무 사용자도 할당되지 않을 수 있다는 것이다. SSD는 역할 집합을 생성 및 삭제하고 역할 멤버를 추가하고 삭제하는 관리 gatn를 포함한다. 그리고 존재하는 SSD 집합의 속성을 검사하는 감시함수 또한 포함한다.
DSD 관계는 SSD와 마찬가지로 사용자가 사용할 수 있는 접근 권한을 제한한다. DSD 명세는 사용자 세션 안에서 또는 세션을 초월해서 활성화될 수 있는 역할에 제한을 둠으로써 접근 권한의 이용 가능성을 제한한다. DSD 관계는 역할 ㅈㅂ합에서 n개 또는 그 이상의 역할을 어느 사용자 세션도 활성화할 수 없다는 속성과 함께(역할 집합, n)의 쌍으로 제한을 정의한다. 여기서 n은 2보다 크거나 같은 자연수이다. DSD는 관리자가 겹치지 않는 시간상에서 사용자가의 특정한 능력을 명시할 수 있게 한다. SSD와 마찬가지로, DSD는 DSD 관계를 정의하고 검사하는 관리함수와 감시함수를 포함한다.
5.1 데이터베이스, 데이터베이스 관리 시스템, 쿼리언어를 정의하라.
데이터베이스 : 여러 어플리케이션이 사용하는, 구조화되어 저장된 데이터의 집합이다. 데이터베이스는 데이터뿐만 아니라 데이터, 데이터 그룹 간의 관계도 갖고 있다.
데이터베이스 관리 시스템 : 데이터베이스를 구축 및 유지하면서 다수의 사용자와 어플리케이션들에 쿼리를 제공하는 프로그램 군이다.
쿼리 언어 : 사용자와 어플리케이션에 공통된 데이터베이스 인터페이스를 제공한다.
@5.2 관계형 데이터베이스란 무엇이고 그 근간이 되는 개념들은 무엇인가?
데이터를 계층 구조가 아닌 단순한 표(릴레이션 ; 관계)로 표현하는 형식의 데이터 베이스. 관계... 뭐
5.3 관계형 데이터베이스에서 한 테이블이 몇 개의 primary key와 몇 개의 foreign key를 가질 수 있는가?
기본 키의 값은 테이블의 각 튜플에 유일해야 하지만, 외래키는 여러 번 나타날 수 있으므로, 기본키와 외래키를 갖는 행들은 일대 다의 관계이다.
5.4 RDBMS에서 사용할 수 있는 관리정책의 종류를 나열하고 간단히 설명하라.
중앙 관리 : 소수의 특권 사용자들이 접근 권한을 허가, 파기
소유권 기반의 관리 : 테이블 소유자가 테이블 접근 권한을 허가,파기
분산적 관리 : 테이블 접근 권한의 허가, 파기에 더하여 테이블 소유자는 다른 사용자가 테이블 접근 권한을 허가, 파기하는 권한을 허가, 파기
5.5 Cascading authorization에 대해서 설명하라.
계단식 권한 부여는 권한이 한 사용자에서 다른 사용자에게로 계단식으로 주어진 것과 마찬가지로, 권한의 파기도 계단식으로 이루어진다.
5.6 RDBMS에 대한 추론 공격의 본질에 대해서 설명하라.
추론은 인가된 쿼리 수행과 합법적 응답에서 비인가된 정보를 추론하는 것이다. 추론 문제는 많은 데이터 아이템의 조합이 개별 아이템보다 민감하거나 데이터 아이템들의 조합이 보다 민감한 데이터를 추론하는 데 사용될 수 있을 때 발생한다.
5.7 통계적 데이터베이스의 두 가지 종류는 무엇인가?
순수 통계적 데이터 베이스 : 통계적 데이터만 저장. 예로는 인구조사 데이터 베이스가 있다. 통상적으로 순수 SDB의 접근 제어는 간단하다. 특정 사용자가 전체 데이터베이스 접근 권한을 갖는다.
통계적 접근할 수 있는 일반 데이터베이스 : 이 장에서 논의 되었던 데이터베이스와 같이 개별 엔트리를 포함하는 데이터베이스. 데이터베이스는 임의의 접근 제어, 역할기반 접근 제어, 의무적 접근 제어에 의해 데이터베이스의 선택적인 부분에 접근 허가를 받은 비통계적 사용자를 지원한다. 추가적으로 통계적 쿼리만 허가받은 통계적 사용자도 지원한다. 후자의 경우, 원시 데이터 기반의 전체 통계가 사용자 쿼리로 생성되거나 데이터베이스의 부분에 미리 계산되어 저장된다.
5.8 통계적 데이터베이스에서 추론을 방지하기 위한 두 가지 접근방식을 나열하고 간단히 설명하라.
쿼리 제약 : 위협 노출 가능성이 있는 쿼리를 거부.
섭동 : 모든 쿼리에 답을 하지만, 답변은 사치를 제공.
5.9 데이터베이스 암호화의 단점을 설명하라.
Key Management : 합법적인 사용자는 자신에게 허용된 데이터에 접근하기 위해 복호키를 알 수 있어야 한다. 보통 데이터베이스는 많은 사용자가 존재하고 여러 가지 응용프로그램과 연결되어 있기 때문에 접근이 허용되어 있는 사용자나 응용프로그램에만 선택적으로 보안 키를 제공하는 것은 상당히 복잡한 작업일 수 밖에 없다.
Inflexibility : 데이터베이스의 일부 혹은 전부가 암호화되었을 때는 레코드를 검색하는 것이 훨씬 더 어려워진다.
@6.1 악성코드가 자신의 번식을 위해서 사용하는 세 가지 기법을 설명하라.
기존의 실행파일이나 온라인 스크립트를 바이러스로 감염시킴으로써 다른 시스템으로 널리 퍼지게 하는 방식.
웜이나 다운로드를 통하여 소프트웨어의 취약점을 이용해서 악성코드를 증식시키는 방식.
소셜네트워크를 통해서 사용자가 보안시스템을 생각하게 하여서 트로이를 설치하거나 아니면 피싱공격을 하는 방식.
6.2 악성코드가 운반하는 payload의 네 가지 분류를 설명하라.
시스템 파괴 : 초기의 바이러스와 웜에 담겨있는 payload들은 미리 정의된 조건이 만족되는 순간 감염된 시스템의 데이터를 손상시키는 것들이 대부분 이었다. 위의 형태에는 데이터 파괴, 실세계 파괴형, 논리폭탄 등이 있다.
공격 에이전트 : 감염된 시스템의 CPU와 네트워크 자원을 공격자 자신의 용도로 사용하는 종류이다.
정보 유출 : 감염된 컴퓨터에 저장되어 있는 데이터를 몰래 유출시키는 악성코드 payload이다. 이런 공격의 가장 흔한 예는 공격자가 사용자의 은행이나 게임 같은 서비스의 아이디와 패스워드를 알아낸 후 이를 악용하여 이득을 취하는 경우이다. 흔하지는 않지만 어떤 payload는 문서나 시스템의 설정 정보를 가져가서 사전감시나 스파이 용도로 사용하기도 한다. 이러한 공격의 목표는 바로 정보의 비밀성이다.
잠입 : 악성코드가 자신의 존재를 감여된 시스템으로부터 숨기고 공격자에게 시스템에 몰래 접근할 수 있도록 해즈는 경우이다. 이런 종류의 payload또한 감염된 시스템의 무결점을 대상으로한 공격이다.
6.3 바이러스나 웜의 전형적인 작동의 상태를 설명하라.
바이러스와 웜의 가장 큰 차이점은 바이러스는 어떤 특정 대상, 예를 들면 한 파일에 숙주하여 다른 파일로 확장해가며, 사용자의 사용에 따라 전파되는 것이고 이에 반해 웜은 특정 대상이 없으며 스스로 확장해 나가는데 특히 이메일을 통하여 전파된다.
6.4 바이러스가 자신을 숨기기 위해서 사용하는 기법을 설명하라.
압축과 같은코드 퓨테이션
루트킷은 시스템에 설치되어 그 존재의 흔적을 최대한도로 숨기면서 공격자가 언제든지 시스템에 관리자 권한으로 접근할 수 있도록 비밀통로를 지속적으로 유지시켜주는 일련의 프로그램 집합을 말한다. 루트킷은 시스템의 프로세스, 파일, 그리고 레지스트리를 모니터하고 보고하는 매커니즘을 조작함으로써 자신의 존재를 숨긴다.
6.5 실행 가능한 바이러스와 매크로 바이러스의 차이를 설명하라.
실행형 바이러스 구조
-> 다른 실행파일의 앞나 뒤에 첨부, 실행 파일을 감염시킨다.
매크로 (스크립팅) 코드 바이러스
-> 문서에 액티브 콘텐츠를 위해 사용되는 스크립팅 코드를 감엽. 실행 파일이 아닌 문서파일을 감염
6.6 웜이 번식을 위해서 원격시스템에 접근하는 방법을 설명하라.
이메일 혹은 메신저를 이용한 기술 : 웜은 자신의 복제본을 첨부문서로 포함한 이메일을 만들어 전송하거나, 메신저의 파일전송기능을 이용해 다른 시스템으로 전송한다. 사용자가 이메일의 첨부파일을 열거나 메신저로 전송된 파일을 열어보는 순간 웜이 작동하게 된다.
파일공유를 이용한 기술 : 웜은 USB드라이브 같은 이동성 미디어에 자신을 복제하거나 바이러스 형태로 파일을 감염시킨다. 후에 드라이브가 시스템에 연결되면, 소프트웨어 취약점을 이용하여 자동 실행기능을 통해 자신을 활성화 시키거나, 감염된 프로그램이 열릴 때 활성화되곤 한다.
원격 실행 기능을 이용한 기술 : 다른 시스템에 설치된 자신의 복제본을 원격 실행기능을 통해서 직접 활성화시키거나 네트워크 서비스의 약점을 이용하여 기능을 마비시키는 기술이다.
원격 파일접근 혹은 파일 전송을 이용한 기술 : 원격 파일 접근기능이나 원격 파일 전송 기능을 이용하여 자신을 복제하고, 사용자가 복제된 웜을 실행하기를 기다린다.
원격 로그인 기능을 이용한 기술 : 원격 시스템에 사용자로 로그인을 시도한 후 적절한 명령을 수행함으로써 자신의 복제본을 시스템에 설치하고 이를 실행시킨다.
6.7 'Drive-by-download'가 무엇인지 설명하고 웜과 어떻게 다른지 설명하라.
사용자 프로그램의 버그를 이용하는 것인데, 흔히 사용되는 예로는 인터넷 브라우저의 취약점을 이용해서 사용자에게 보여지는 내용을 해커가 조정하여 악성코드를 사용자가 전혀 눈치채지 못하도록 사용자 시스템으로 다운로드하고 설치한다. 웜처럼 적극적으로 번식으로 번식을 시도하는 대신, 의심 없는 사용자가 악성 웹사이트를 방문하기를 기다리는 방법으로 자신을 번식하게 된다.
6.8 보트넷이 무엇인지 설명하라.
인터넷에 연결되어 있는 컴퓨터를 조용히 감염시켜 조종함으로써 보트의 제작자가 누구인지 알기 힘든 여러가지 공격을 감행할 수 있게 된다. 보통 보트는 의심하지 않는 제 삼자에게 속해있는 수백, 수천 개의 컴퓨터에 심어진다. 이 보트의 집합이 서로 협력하는 형태의 행동을 취할 수도 있는데, 이를 보트넷이라고 한다.
6.9 백도어, 보트, 키로거, 스파이웨어, 루트킷의 차이점을 설명하고 하나의 악성코드에 이 모든 것들이 담겨 있을 수 있는지 설명하라.
보트 - 감연된 시스템의 cpu와 자원을 공격자 자신의 용도로 사용
키로거 - 모든 키입력 저장
스파이 웨어 - 더 많은 종류의 행동을 모니터링
백도어 - 공격자가 특정 프로그램에 몰래 접근하도록 비밀통로 생성
루트킷 - 흔적을 숨기며 공격자가 관리자 권한으로 접근하도록 비밀톨로를 지속적 유지시키는 프로그램 집합
초기에는 주로 한 가지 번식 방법으로 한 가지 공격 을 취했던 것에 반해, 시간이 지나면서 점점 진화하여 이제는 악성코드가 다양한 번식방법과 여러가지 공을 동시에 취함으로써 보다 강한 번식력과 파괴력을 가지게 되었다. 이러한 혼합공격(blended attack) 기술은 감연과 번식에 여러가지 방식을 취함으로써 번식속도와 파괴력을 극대화 한다.
6.10 루트킷이 사용할 수 있는 시스템의 다른 레벨들을 나열하라.
시스템콜 테이블 조작 : 공격자는 시스템콜 테이블에 적혀 있는 시스템콜 주소를 수정한다. 이렇게 함으로써 시스템콜이 불리면 원래 정해진 루틴 대신에 루트킷이 지정한 루틴이 작동하게 된다.
시스템콜 테이블 타깃을 조작 : 시스템콜 테이블은 그대로 두고, 특정 시스템콜의 루틴이 정의되어 있는 위치에 새로운 코드를 덮어 쓴다.
시스템콜 테이블을 대체 : 공격자는 커널이 갖고 있는 시스템콜 테이블 주소를 공격자가 새로 만든 시스템콜 테이블의 주소로 바꿔치기 한다.
6.11 악성코드에 대응요소를 설명하라.
정책, 인식, 취약점 보안, 위협의 최소화
6.12 악성코드에 대응하는 장치가 설치될 수 있는 세 가지 위치를 나열하라.
악성코드의 detection은 다양한 위치에서 수행될 수 있다. 즉 감염된 시스템 내부에서 작동될 수 있는데, 안티바이러스 프로그램이 시스템에 들어오는 데이터와 실행되고 있는 프로그램들의 행동을 감시하게 된다. 혹은 firewall이나 intrusion detection system(IDS) 같은 주변부 보안장치의 일부에서 수행될 수도 있다. 마지막으로 수많은 네트워크나 기관들에 거쳐서 시스템 내부나 주변부에서 감지되는 데이터를 수집하는 분산형 장치를 이용하여 악성 코드를 감지할 수 있는데, 악성 코드의 행동을 대규모로 관찰할 수 있게 해준다.
6.13 안티바이러스 소프트웨어의 네 가지 세대를 간단히 설명하라.
제 1세대 : 간단한 스캐너_ 스캐너는 악성코드의 시그너처를 알아야 감지할 수 있다. 시그너처는 일부 wildcard가 포함될 수 있지만 대체로 그 악성코드의 모든 복사본에서 볼 수 있는 구조와 비트 패턴을 말한다. 다른 종류로는 시스템의 파일 길이들을 기록해 놨다가 길이가 바뀌면 바이러스 감염을 의심한다.
제 2세대 : 시그너처에 의존하지 않고, 일종의 발견적 규칙을 사용해서 악성코드의 가능성을 추측해 낸다. 어떤 종류는 종종 악성코드에서 발견되는 부분코드를 찾아낸다. 다른 종류의 2세대 접근방식으로는 무결성 체크 방식이 있다. 각 프로그램 뒤에 체크섬을 기록해 놓았다가 악성코드가 프로그램을 조작하면 무결성 테스트가 이를 곧바로 알아차리게 된다. 심지어 체크섬까지 다시 계산해서 써넣는 악성코드 같은 경우는 암호화된 해시함수를 사용할 수 있다. 이때 사용되는 암호키는 프로그램과는 따로 저장되어 있어서 악성코드가 새로운 해시코드를 계산해서 암호화 시키는 것은 어렵다.
제 3세대 : 프로그램은 메모리에 상주하면서, 악성프로그램의 내부구조 대신 그 행동패턴을 감지해 내는 방법이다. 이 방법은 다양한 종류의 악성코드에 대해서 그들의 시그너처나 발견적 특성을 알고 있을 필요가 없다는게 장점이다. 대신에 이 방법은 악의적인 행동이 시도되고 있음을 알 수 있는 몇가지 행동들을 찾아내고 이를 저지하는 방법이다.
제 4세대 : 다양한 안티바이러스 기술을 종합적으로 활용하는 프로그램을 말한다. 이는 제 1세대, 2세대, 3세대에서 사용되는 기술뿐만 아니라 시스템의 접근 제어를 관리함으로써 악성코드가 시스템에 침투하거나 번식을 위해서 파일을 수정하는 등의 시도를 막는다.
6.14 Behavior-blocking 소프트웨어의 작동원리를 설명하라.
호스트 컴퓨터의 운영체계와 통합되어 어떤 프로그램이 의심쩍은 행동을 수행하는지를 실시간으로 검색한다. 만약 프로그램이 의심가는 행동을 시도하는 것 같으면 이로 인해서 시스템이 영향을 받기 이전에 이 행동을 봉쇄한다. 다음과 같은 행동들이 지속적으로 모니터링 된다.
- 파일을 열거나 보거나 삭제하거나 수정하는 행동.
- 디스크 드라이브를 포맷하거나 돌이킬 수 없는 디스크 작업.
- 실행파일이나 매크로의 논리를 수정하는 행동.
- 시스템 시작설정 같은 시스템의 중요한 설정을 변경하는 행동.
- 이메일이나 메신저에서 실행파일을 전송하려고 하는 스크립트 실행
- 네트워크 통신의 시작.
6.15 Zero-day exploit이란 무엇인지 설명하라.
Zero Day란 말을 들어본 적이 있는가? 네트워크의 보안이나 신뢰성을 위협하는 시스템의 버그나 취약성은 시스템상의 내부에서 발견된다. 하지만 발견된 문제점이 얼마 동안 어디에도 보고되지 않는 경우가 있다. 이 기간을 Zero Day라고 한다. Zero Day 기간 중에는 해당 시스템의 벤더나 유저가 해당 문제점을 알지 못하므로, 시스템 공격을 받아도 대책을 할 수 없고, 공격을 인지할 수 있는 방법도 없다. 이와 같이 무방비한 Zero Day 기간을 노린 공격을 Zero Day Exploit이라고 한다.
7.1 Denial-of-service(DoS) 공격을 정의하라.
CPU, 메모리, bandwidth, 디스크공간 등의 자원을 소진시켜서 네트워크, 시스템, 혹은 응용프로그램에 대한 정상적인 사용자의 접근을 힘들게 하거나 봉쇄하는 공격이다.
7.2 이러한 공격은 어떤 자원을 목표로 삼는가?
네트워크 자원(bandwidth), 시스템 자원, 응용프로그램 자원
7.3 Flooding 공격의 목표는?
가장 간단한 공격이 flooding 공격인데, 대상 조직의 네트워크 연결의 최대 용량을 압도하는 게 목적이다. 이를 위해서 공격자는 목표네트워크보다 더 용량이 높은 시스템에 접속해서 목표네트워크가 감당하기 힘든 정보의 트래픽을 생성할 수 있다.
7.4 Flooding 공격에 많이 사용되는 패킷 타입은?
거의 어떤 종류의네트워크 패킷도 flooding 공격에 사용될 수 있다. 단지 목표 시스템으로 가는 네트워크 링크를 통과할 수만 있으면 목표 시스템의 링크 용량을 소비할 수가 있기 때문이다. 실제로 패킷사이즈가 크면 클수록 공격의 효과는 높아진다. 보통 flooding 공격은 ICMP, UDP, TCP SYN 등을 사용하게 되지만, 물론 다른 종류의 패킷도 사용이 가능하다. 하지만 다른 종류의 패킷은 상대적으로 많이 사용되지 안힉 때문에 눈에 띄기가 쉽고 제어당하기가 쉽다.
7.5 왜 Dos 공격에 사용되는 패킷은 시작 주소가 조작되어 있는가?
DoS 공격에 사용되는 패킷들의 공통된 특징은 조작된 시작 주소지다. 이는 시작 주소 spoofing(source address spoofing)이라고 한다. flooding ping을 예로 들어서 설명하자면 ICMP echo request 패킷은 모두 같은 경로를 통해서 목적지에 도달한다. 그리고 목적지 앞에서 용량이 적은 링크에 달려 있는 라우터에서 모두 정체가 될 것이다. 하지만 목적지에 도달한 일련의 request 패킷에 대한 ICMP echo response 패킷들은 이제 더 이상 패킷의 근원지로 보내지지 않는다. 대신에 이들은 request 패킷에 적혀 있는 가짜 시작 주소로 모두 흩어지게 된다. 이 중 일부는 실제 어떤 시스템의 주소일 것인데, 이 시스템들은 예상하지 않은 패킷이 와서 아마 에러 패킷을 보낸다. 이 에러 패킷들은 다시 목적지로 보내지기 때문에 flooding 트래픽을 더 악화시킨다. 또 다른 일부는 존재하지 않는 주소일 수 있다. 이 경우에는 ICMP destination unreachable 패킷이 또 다시 목적지로 돌아오게 되거나, 혹은 그냥 버려지게 된다. 이렇게 목적지로 다시 돌아오는 패킷들은 현재 진행되고 있는 flooding 공격을 더 악화시킬 것이다. 또한 시작 주소가 조작된 패킷을 사용하면 공격자의 시스템을 알아내기가 더 어려워진다.
7.6 Distributed Denial-of-Service(DDos) 공격을 정의하라.
하나의 시스템에서 시작되는 flooding 공격의 한계를 극복하기 위해서 시작된 초기의 DoS 공격은 여러 시스템에서 패킷을 생성하는 방법으로 공격자가 운영체제나 응용프로그램의 잘 알려진 취약점을 통해서 시스템에 접근하고 자신의 프로그램을 설치한다. 이러한 시스템을 좀비라고 한다.
7.7 DDoS는 보통 어떤 구조를 이용하는가?
공격자가 각 좀비를 개별적으로 명령을 할 수도 있지만, 보다 계층적인 방법이 사용되는 게 일반적이다. 적은 수의 시스템들이 핸들러가 되어 훨씬 많은 수의 에이전트 시스템을 관리한다.
7.8 Reflection 공격이란?
공격자는 실제 공격 대상의 주소를 시작 주소로 갖는 패킷을 중간단계의 시스템들에 보낸다. 중간 시스템들은 이에 응답 메시지를 공격대상에게 전달한다. 행해진 공격은 중간 시스템들로부터 반사가 되어 공격대상에게 향해지는 방식의 공격이다.
7.9 Amplification 공격이란?
Amplification 공격이란 reflector 공격의 변형이며 대상시스템을 겨냥한 조작된 시작 주소를 가진 패킷들이 중계시스템에 보내진다. 이 두 공격은 수신된 패킷에 대해서 어떻게 여러 개의 응답패킷을 생성하느냐에 있다. 이는 최초의 요청을 한 네트워크의 브로드캐스트 주소로 보내는 것으로 달성할 수 있다.결과적으로 그 네트워크의 모든 호스트가 응답하게 되어 응답패킷의 flood를 생성해 준다.
7.10 많은 DoS 공격에 대한 주된 방어책이 무엇이고 어디에 구현되어 있는가?
주된 방어책 4가지
공격의 예방과 선점(공격 전) - 목표대상 시스템이 정상적인 클라이언트에 대한 서비스에 영향 받지 않도록 공격을 버티는 전략이다. 자원의 소비를 제어한다든가 필요하면 추가적인 자원을 지원하는 등의 정책을 사용할 수 있다. 또한 시스템이나 관련 프로토콜을 수정하여 DDos 공격의 가능성을 줄이기도 한다.
공격의 감지와 선별(공격 중) - 공격이 시작되면 이를 감지하여 빨리 대응함으로써 시스템에 대한 영향을 최소화한다. 감지는 시스템의 의심가는 패턴을 찾아낸다. 대응으로는 공격과 관련이 있는 패킷을 선별해 내는 방법을 주로 사용한다.
공격의 원천지 추적(공격 후) - 미래의 또 다른 공격 가능성을 봉쇄하기 위해서 공격의 원천지를 역추적한다. 하지만 이 방법은 현재 진행 중인 공격을 중단시킬 수 있을 정도로 신속하게 이루어 지기는 어렵다.
공격의 대응 (공격 후) - 공격의 효과를 최소화하는 노력이다.
7.11 Nonspoofed flooding 공격에 대한 가능한 방어책은 무엇인가? 이러한 공격은 완전히 예방될 수 있는가?
공격에 대한 예방책은 조작된 시작 주소를 사용하는 패킷을 걸러내는 것이다. 이러한 패킷 필터링은 공격의 근원지와 가까운 곳에서 수행될 수록 그 효과가 큰데, 도착하는 패킷이 속하고 있는 적절한 주소범위를 잘 알고 있는 라우터나 게이트웨이에서 수행되는 것이 일반적이다. isp들이 사용하는 고급 라우터 중 많은 것들은 패킷의 속도를 조절하는 기능이 있다. 이런 패킷 종류의 전달속도를 적절히 제어하면 관련된 flooding 공격을 제어할 수 있어서, 비록 공격이 진행중이어도 다른 종류의 패킷들이 정상적으로 목표시스템에 도달할 수 있도록 해준다.
7.12 TCP SYN spoofing 공격에 대한 가능한 대응책은?
TCP 연결을 다루는 코드를 수정하면 SYN spoofing 공격을 방어할 수 있다. 서버에 연결의 세부사항을 기록해 놓는 대신, 요청된 연결의 중요한 정보를 쿠키에 암호화 하여 저장한 후 이를 서버의 초기 순번으로 전송한다. 이는 Syn-ACK 패킷에 담겨서 클라이언트로 전송되는데, 클라이언트가 이 순번을 증가시킨 후 ACK 패킷을 보낼 때 서버는 이 연결에 대한 정보를 TCP연결 테이블을 사용하지 않고 다시 구성할 수 있다.
7.13 Slashdotted와 flash crowd란 무엇을 말하는가? 합법적인 네트워크 오버로드와 DoS 공격 간의 관계는 무엇인가?
7.14 조직의 시스템들이 amplification 공격의 중간자 역할을 하지 않도록 하기 위해서는 어떤 방어책이 있는가?
최고의 방어책은 IP - directed broadcast를 허용하지 않는 것이다. 의심가는 서비스나 시작/도착포트를 사용하는 트래픽을 제한하거나 봉쇄하는 것만으로도 reflection 공격의 상당부분을 막을 수 있다.
7.15 DoS 공격이 감지되면 어떤 관계들이 수행되어야 하는가?
DoS공격이 감지되면, 그 첫 번째 대응 단계는 공격의 종류를 결정하고 이에 따른 가장 좋은 방어방법을 찾는 것이다. 이는 도착하는 패킷을 분석하고 공격에 많이 사용되는 패킷종류를 골라내는 일이 포함된다. 이 작업은 적절한 네트워크 분석 툴을 이용해서 조직 내부의 사람이 수행할 수 있다. 만약 이러한 자원이나 기술이 없을 때에는 ISP에 도움을 요청할 수 있다. 이 분석을 통해서 공격의 종류를 알아내고 이에 대응되는 필터링 방법을 결정한다. 이 필터링은 ISP의 라우터에 설치되어야 한다. 만약 공격이 대규모 트래픽이 아닌, 시스템이나 어플리케이션의 취약점을 노리는 공격이라면 이를 감지하여 취약점을 고치는 단계를 거침으로써 미래의 침투를 봉쇄해야 한다.
7.16 DoS 공격에서 사용된 다양한 패킷 종류들의 시작 주소를 알아내기 위해서 어떤 방법들이 필요한가? 시발점의 위치를 다른 패킷들보다 더 알아내기 쉬운 패킷 종류가 있는가?
패킷 필터링을 통해서 알아낸다. 도착하는 패킷이 속하고 있는 적절한 주소범위를 잘 알고 있는 라우터나 게이트웨이에서 패킷 필터링을 수행한다. 이러한 종류의 필터링은 라우터에서 명시적인 접근 권한 제어의 규칙을 사용해서 구현될 수 있는데, 각 고객의 패킷에 있는 시작 주소가 ISP로부터 할당받은 주소인지를 확인하면 된다. 혹은 패킷에 담겨있는 시작 주소로 도달하는 경로가 실제로 패킷이 거쳐온 경로와 같은지를 확인할 수도 있다.
'공부' 카테고리의 다른 글
oracle -데이터 조작어 공부하기 #1 (0) | 2014.12.25 |
---|---|
데이터 보안 복습 문제 간추리기 (0) | 2014.12.25 |
자바 안드로이드 이미지 버튼 만들기 (0) | 2014.11.11 |
어도비 프리미어 cs6 (0) | 2014.04.09 |
컴퓨터 구조 (0) | 2014.03.18 |