※ 해당 강의자료는 신수정 대표님의 카페(http://cafe.naver.com/innosecure)에 있는 보안컨설팅 강좌 중 모의해킹에 관한 강좌의 일부 내용입니다.
예전에 어떤 기업을 컨설팅 할 때 였다. 매우 보안이 잘된 금융기관이었다.
해당 금융기관의 보안 담당자는 모의해킹 테스트에 뚫리지 않을 자신이 있다고 했다. 만일 뚫으면 손에 장을 지지겠겠다고 아주 자신만만해 했다.
나는 우리 모의해킹팀에 테스트를 해보라고 했다. 실제 그 보안담당자의 말대로 해당 사이트는 난공불락이었다. 보안 설정도 잘 되어 있었고, 보안시스템도 막강했다. 직접적으로 뚫을 수 있는 방법은 없었다.
그러나 시간이 지난 후 모의해킹팀은 결국 그 싸이트를 해킹할 수 있었다. 어떻게 가능했는가? 해당 싸이트의 보안은 막강했지만 해당 네트워크 영역에 보안이 취약한 개발서버가 있음을 발견했다. 이에 개발서버를 해킹했고, 해당 개발서버와 그 시스템이 서로 신뢰관계에 있음을 발견했다. 이를 기반으로 그 시스템을 해킹할 수 있었다.
그 담당자의 실수는 무엇이었을까? 보안을 상당히 잘했지만 위협의 다양한 루트를 미리 고려하고 계산해보지 않았던 것이다. 해당 시스템의 보안만 철저히 하면 막을 수 있을 것이라는 관점에서 생각했던 것이다. 공격자의 관점에서 뚫고 들어올 다양한 시나리오를 체크하지 못했던 것이다.
왜 보안을 해야 하는가? 에 대한 질문에 두 문장으로 대답하라고 하면
한가지는 보호해야 할 자산이 있기 때문이며, 또 한가지는 이를 탈취하거가 손상시키려는 위협이 있기 때문이라고 대답할 수 있다.
결국 보안의 핵심은 1) 무엇을 보호할 것인가? 2) 이를 탈취하고 손상시키려는 위협들이 도대체 어떤 것인가? 를 도출하는데 있다.
위협이란 무엇인가? 먼저 ‘위협(threat)’이란 ‘공격(attack)’과는 다른 용어임을 인식해야 한다. ‘위협’은 정보자산에 손실을 가져올 수 있는 '잠재적(potential)' 공격이다. 여기에서 중요한 용어는 '잠재적'이라는 것이다. '잠재적'이라는 것은 실현될 수도 있고 실현 되지 않을 수도 있다. 우리는 '공격'에 대응해서 정보보호를 하는 것이 아니다. 당연히 공격이 발생될 때 대응해야 하지만, 더욱 중요한 것은 아직 실현되지 않았지만 실현될 수 있는 잠재적인 사건들을 대응하기 위해서 '정보보호'를 하는 것이다.
도대체 우리 기업에, 우리 기업이 가진 핵심 정보나 핵심 시스템에 어떤 위협이 가해질 수 있는가?
이를 도출하는 것은 매우 쉬운 일인 듯 보인다.
사실 거시적인 레벨에서 위협을 논하는 것은 용이하지만 시나리오레벨 까지 내려가면 그리 용이하지 않다.
'위협'을 다루는 컨설팅의 절차는 다음의 3단계로 나뉠 수 있다.
첫째는 위협의 분류를 파악하는 것이다.
위협은 아래 그림과 같이 1) 위협의 동기 2) 위협의 근원 3) 위협의 행위, 세 가지의 구성성분이 있다. (때로는 논리적인지 물리적인지 등의 경로를 포함하기도 한다)
위협의 동기를 크게 나눈다면 의도성과 비의도성으로 나눌 수 있으며, 위협의 근원을 크게 분류한다면 내부자와 외부자로 구분할 수 있다.(물론, 자연재해, 장애 등 사람과 연관되지 않은 위협도 별도로 분류할 수도 있다)
이에 이 두 가지의 조합으로 위협을 분류하자면 보안 위협은 아래와 같이 4가지 유형으로 모두 설명이 가능한다.
1) 내부자에 의한 의도적 위협
2) 내부자에 의한 비의도적 위협
3) 외부자에 의한 의도적 위협
4) 외부자에 의한 비의도적 위협
1)번은 내부직원들이 의도적으로 정보에 접근하여 정보를 유출할 수 있는 가능성을 의미한다.
2)번은 의도적이지 않지만 실수 등으로 정보를 유출하거나 시스템에 장애를 가할 수 있는 가능성을 의미한다.
3)번은 흔히 말하는 해커로 부터의 공격 가능성이며
4)번은 의도하지 않았지만 외부 사용자들이나 외주 직원들이 우연히 회사가 가진 정보를 보거나 유출할 수 있는 가능성을 의미한다.
위협이 어떤 결과를 가져오는 행위관점에서 분류한다면 몇 가지 분류방식이 있을 수 있다.
Pfleeger(Security in computing, Prenticall Hall, 1997)의 분류에 따르면
위협은
1) Interrution - 가용성에 대한 공격
2) Interception - 기밀성에 대한 공격
3) Modeifcation - 무결성에 대한 공격
4) Fabrication -인증성에 대한 공격
으로 분류될 수 있고
Microsoft사의 분류에 의하면 아래의 6가지 형태로 분류될 수도 있다.
위협분류 | 내용 |
사용자의 신원가장(Spoofing user identity) | 거짓된 신원을 이용하여 시스템의 접근권한 획득 |
데이터의 조작(tampering with data) | 불법적으로 데이터를 수정 |
부인(repudiation) | 사용자가 자신이 수행한 특정 행위를 부인함 |
정보유출(information disclosure) | 데이터의 누설 |
서비스 거부(denial of service) | 시스템을 가용하지 못하게 함 |
권한 상승(elevation of privilege) | 제한된 권한을 가진 사용자가 더 큰 권한 있는 사용자의 권한을 획득하는 것 |
또는 조금 더 현실적으로 필자처럼 다음과 같이 분류할 수 도 있다.
이러한 상위적 분류방법을 이해하는 것은 중요하다.
왜냐하면 위협을 도출할 때 생략하거나 빠지는 부분이 없는지를 cross-check할 수 있는 도구이기 때문이다.
위협을 단순히 브레인스토밍이나 생각나는대로 정리하다보면 빠질 수 있는 다양한 위협들이 있다.
그러므로 위협의 분류 프레임워크를 도입하여 놓치는 위협이 없어야 한다.
그러나 여기에서 한 단계 더 나가는 것이 필요하다.
이에 두번째 절차가 필요하다.
두번째 절차란 해당 조직에 예상되는 다양한 위협 시나리오를 도출하는 것이다.
위협 시나리오를 어느 정도의 상세단계까지 도출할 것인가는 해당 기업의 능력과 자원에 달려있다. 단지, 처음부터 너무 욕심을 내지 않는 것이 바람직하다. 해당 정보자산에 어떤 위협이 있을지에 대해서는 업무담당자, IT담당자, 외부 보안전문가, 해킹 전문가 등의 상호 토의가 필수적이다. 위협의 기술적 특성상 외부 보안전문가가 가장 큰 역할을 할 것 같지만 내부인에 의한 정보의 탈취나 조작, 오남용들의 위협은 외부 보안전문가가 파악하기 어려운 경우가 적지 않다.또한 어플리케이션을 통해 공격할 수 있는 위협은 해당 개발자가 가장 잘 아는 경우도 적지않다.
위협 시나리오를 체계적으로 도출할 수 있는 몇 가지의 프레임워크으로는 ISACA와 MS의 프레임웍을 추천할 만 하다.
(세부 사항은 2-심화학습에서)
<Source: The risk it practitioner guide >
이렇게 위협시나리오를 도출하고 리스크를 측정하는 단계를 '위협 모델링'이라고 한다.
글로벌 회사의 위협 모델링은 상당한 수준이고, 마이크로소프트 등은 자사 솔루션을 개발하는 초기 설계단계부터 관련된 모든 사람들이 모여 예상되는 위협 시나리오를 도출하고 이러한 위협 시나리오를 대응하기 위해 소프트웨어를 어떻게 설계하고 구현할지를 방법론화 하며 프로세스화 하고 있다.
한국의 경우 이러한 위협 모델링이 형식적에 그치는 경우가 대부분이다. 몇 몇 앞선 기업을 제외하고는 체계적으로 수행하고 있지 않다.
그러나 분명히 기억해야 할 것은 위협 시나리오가 구체적이지 않으면 대응도 구체적이지 않다. 위협 시나리오가 구체적이면 대응도 구체적이 된다. 특히, 세부적인 위협 시나리오 도출을 위해서는 사고 케이스들을 분석해보고 벤치마킹하는 것이 매우 중요하다.
세번째 단계는 위협을 평가하는 것이다. 위협시나리오를 도출한 후에 그것으로 그쳐서는 안된다. 어떤 위협 시나리오가 더 위험한지 평가해야 한다. 이러한 세부적인 평가방법은 컨설팅 강좌7. 위협시나리오를 도출하라(2. 심화학습)편에서 다루겠다. 여기서는 가장 간단한 논리를 이야기해보려 한다.
다양한 위협이 있다면 다음과 같이 대략적인 발생가능성과 발생 시 예상 손실을 유추해서 이를 조합하여 평가하는 방법이다. 가장 단순한 예는 다음과 같다. 발생가능성을 3단계(높음, 중간, 낮음)으로 구성하고 각각을 3점,2점,1점으로 부여하고 발생시 예상 손실도 마찬가지로 3단계(높음, 중간, 낮음)으로 구성하여 각각을 3점,2점, 1점 으로 부여한다. 이에 따라 최종 위협의 평가는 두 숫자를 곱하여 도출한다. 위협평가를 통해 위협들을 점수화하여 대응의 우선순위를 결정할 수 있다.
위협 | 발생가능성 | 발생시 예상 손실(피해) | 평가 |
위험1 | 높음(3) | 중간(2) | 6(3*2) |
위험2 | 낮음(1) | 낮음(1) | 1(1*1) |
발생가능성이 얼마가 될 것인가? 예상 손실이 얼마나 될것인가? 를 도출하는 것은 물론 어려운 작업이다. 여기에서 기억해야 할것은 위협의 '절대적' 평가가 중요한 것이 아니라 '상대적' 평가가 중요한 것이라는 것이다. 즉, 정확한 수치를 통해 위협의 절대적 중요도를 도출하는 것이 초점이 아니라, 대략적으로 어느 위협이 더 중요하고 위험한가를 도출하는 것이 초점인 만큼 평가는 정확한 논리와 근거보다는 적절한 전문가적 경험에 따르는 것이 필요하다.
댓글