보안전문가 기고(2). 침투시험 가치 극대화하기

|

침투시험 가치 높이는 Tip 5...조직의 보안수준 개선이 최종목적돼야

SANS연구소는 글로벌 보안연구 및 교육기관으로 연구활동과 함께 다양한 교육 프로그램을 마련해 전 세계적으로 활동하고 있다. 이에 본지에서는 최근 사이버 공격에 대한 이해도를 높이고, 글로벌 보안위협 추세와 대응방안을 살펴보기 위해 SANS코리아의 협조로 SANS연구소의 유명 보안전문가들의 기고를 3회에 걸쳐 연재한다. [편집자 주]


연재순서-----------------------------------------

1. 시뮬레이션 환경에서 APT 공격결과 분석 - 롭 리

2. 침투시험 가치 극대화하기 - 브라이스 갤브레이스

3. 가상 환경에서 권한 상승 방법 - 스테판 심스

------------------------------------------------

[보안뉴스=브라이스 갤브레이스 SANS연구소] 많은 사람들이 자동화된 취약점 스캔과 차이가 거의 없는 수준 낮은 침투시험(Penetration Testing)으로 시장에 참여함에 따라 침투시험 사업이 위험에 빠지고 있다.


이에 여기에서는 침투시험 대상 기업 및 기관에 중요한 사업적인 가치를 주기 위해 침투시험 방법 및 결과 보고서를 작성하는 방법에 대해 설명한다. 여러분이 만약에 기업 내에서 침투시험을 하는 사람이라면 침투시험을 통해 사업적인 가치를 제공해 직업 안정성을 높이고 급여도 높일 수 있으며, 외부 제3의 회사를 대상으로 침투시험을 한다면 기업 가치를 제공해 경력개발은 물론 더 높은 가치를 인정받을 수 있다.


필자는 업무와 연관해 또는 해킹사고와 관련해 많은 기업의 침투시험 및 취약점 평가 보고서를 읽어보기도 했으며, 직접 침투시험 팀에서 침투시험을 수행하면서 팀원이 작성한 보고서를 검토하기도 했다. 그리고 항상 침투시험 결과가 좀더 의미 있도록 하기 위해서 고민했으며, 일주일에 2개 정도의 보고서를 읽으며 침투시험 결과가 효과적일 수 있도록 하기 위해 많은 시간을 보내고 있다.


하지만 대부분의 침투시험 전문가가 작성한 보고서 수준이 엉망인 경우가 많다. 일부는 취약점 스캐너 결과를 그대로 사용한 후, ‘침투시험 결과’라고 조금 좋게 수정한 수준이다. 일부 시장에서는 낮은 수준의 침투시험을 요구하기도 하지만, 일부에서는 침투시험에 비용을 지출함으로써 사업적 가치를 높여주기를 원하는 시장도 존재한다. 수준 낮은 침투시험만 시장에 만연해 침투시험의 가치를 낮춘다면, 침투시험 전문가의 수준도 계속 낮아질 것이다. 하지만 일부 기관은 수준 높은 침투시험을 원하고 있다는 것이 사실이다.


수준 높은 침투시험을 위해서 침투시험 실행 표준(PTES)을 이용하여 철저하고, 절차를 정해서 훌륭한 결과를 도출하고 있는 사람도 있다. 여기에서는 침투시험 보고서를 작성하는 방법을 통해 침투시험 결과를 바탕으로 사업적 가치를 최대화할 수 있는 방법을 설명한다. 좋은 보고서는 단순히 침투시험 결과를 기술하는 것이 아니라 가치를 제공할 수 있어야 하며, 그래서 조직의 보안수준을 개선하는 것이 최종 목적이다. 이 목적이 바로 수준 높은 침투시험을 위해 끊임없이 집중해야 하는 점이다.


# Tip 1. 단순히 셸이나 도메인 관리자 권한 획득이 중요한 것이 아니라 사업적 위험을 파악해야 한다.

침투시험 전문가는 컴퓨터의 셸(shell)에 접근을 하면 가슴이 쿵쿵 뛴다. 하지만 시스템을 해킹하는 것이 최종 목표가 아니다. 최종 목표는 발견한 취약점과 관련하여 회사에 미치는 사업적인 위험을 알아내는 것이다. 침투시험 후 보고서를 작성할 때 최종 목표를 항상 염두에 둬야 한다. 기업의 위험을 알아내고, 설명하며, 위험을 낮추는 방법에 대해서 고민해야 한다.


위험을 파악하기 위해서는 침투시험 전문가는 단지 하나의 컴퓨터가 아니라 조직 전체 환경에 대해서 이해하고 있어야 한다. 침투시험 전문가는 어떤 컴퓨터에서 셸을 획득하면 당장 ‘높은 위험’이라고 생각하지만, 실제 해커들의 생각은 다르다. 시스템 1대를 해킹하는 것은 이제 조직 네트워크의 문지방에 들어선 것이고, 해커들은 컴퓨터 그룹과 네트워크 전체를 보고 있다. 즉, 컴퓨터를 해킹한 후 공격목표 환경으로 이동하기 위해 준비를 한다.


목표를 위해 이동할 때 일부 침투시험 전문가는 윈도우 환경에서 도메인 관리자 권한을 함정으로 설정해 놓는다. 그러나 도메인 관리자에 접근하는 것도 단지 사업상의 위험을 설명하기 위한 수단이다. 침투시험 전문가가 셸에 접근하고, 도메인 관리자 권한을 획득했다고 설명하면 의사 결정을 하는 사람들은 이해를 하지 못한다. 침투시험 전문가가 이러한 과정을 통해 수백만 개의 민감한 의료정보 또는 기업비밀 정보에 접근할 수 있다는 의미를 보여줘야 한다.


조슈아 자브라 아브라함은 목표 지향적인 침투시험에 관한 글을 쓴 바 있는데, 거기에서 침투시험은 취약점을 발견하는 그 이상의 목적을 달성하는 데 초점을 맞춰야 한다고 했다. 아브라함은 원격에서 내부 시스템에 접근할 수 있다든지, 도메인 관리자 접근이 가능하다든지, 신용카드 정보에 접근이 가능하다는 목표를 언급했다. 필자도 목표 중심의 시험에 동의하며, 침투시험 전문가는 대상 조직에서 중요한 사업적인 문제(단순히 기술적인 문제가 아니라)에 대해서 내부 직원과 함께 목표를 정의할 것을 추천한다.


먼저 침투시험 범위를 정할 때 시스템 관리 직원에게 가장 중요한 정보와 자산이 무엇이고, 가장 두려워하는 것이 무엇인지 질문해 보아야 한다. 가끔씩 생각을 확장해 사이버 공격자가 실제로 하고자 하는 것이 무엇인지도 고민해 봐야 한다. 즉, 해킹을 당하면 민감한 데이터 해킹 등의 경제적 손실, 법률 위반, 고객 및 사업파트너에 의한 소송 가능성, 브랜드 및 평판 침해 및 생명 등의 물리적인 위협 등에 대해서 솔직하게 토론을 해보는 것이 좋다.


예를 들어 필자는 침투시험을 위해 한 제조회사와 토론했을 때, 해커들이 컴퓨터 인프라를 해킹했을 때 가장 큰 문제가 무엇인지에 대해서 토론하고 있었다. 회사 직원들은 웹사이트를 변조하는 것이라고 했다. 그래서 필자는 공격자는 내부 망에 접속하여 영업 자료나 사업 계획을 훔쳐가거나, 제조 장비를 해킹한 후 통제해 기계가 오동작하거나 멈추는 것이 가장 큰 문제가 아닌지 물었다. 그 때 직원들이 “그것이 가능한가요?” 라고 물었다. 그래서 “그것이 가능한지를 확인하기 위해 침투시험을 계획을 수립하자”고 말했다. 이것이 사업 중심적인 목표를 설정하는 것이다.

그림 1. 침투시험 전문가 C가 셸 획득, 도메인 관리자 권한 획득보다 사업 중심적인 목표를 설정


그림 1에서는 3가지 침투시험 방법을 보여주고 있다, 첫 번째 침투시험 전문가 A(녹색 화살표)가 윈도우 7이 설치되어 있는 시스템의 클라이언트 취약점을 공격해 컴퓨터의 셸에 접근한다. 그리고 심각한 취약점이 발견됐다고 보고하고 끝낸다.


2번째 침투시험 전문가 B(파란색 화살표)는 첫 번째 시험보다 좀더 깊이 들어간다. 첫 번째 취약점을 공격한 후 측면으로 이동해 해쉬 값을 덤프 받고, 패스-더-해쉬(Pass-the-hash) 공격을 수행하고, 도메인 관리자가 관리하는 컴퓨터에 접근한다. 이 시험에서 도메인 관리자 토큰을 확보하고, 보고서에 결과를 기술한다. 그리고 도메인 관리자 컴퓨터를 해킹했다고 주장한다. B는 A가 찾은 취약점과 관련된 일부 위험을 시험한 것이다.


세 번째 침투시험 전문가 C(빨간색)는 도메인 관리자 권한을 획득한 후 계속해서 이동한다. 그래서 굉장히 민감한 기업 비밀이 들어있는 컴퓨터에 접근한다. 세 번째 침투시험 전문가는 목표 환경에서 여러 가지 취약점으로 인해 발생할 수 있는 조직의 위험을 가장 잘 표현할 수 있다. 그래서 취약점을 조치할 수 있도록 경영진에게 가장 잘 설명할 수 있다.


A와 B보다 C가 침투시험을 더 잘한 것뿐만 아니라 민감한 기업비밀에 접근함으로써 사업적인 위험이 있다는 것을 보여주었다.

# Tip 2. 보고서를 읽는 사람이 누구인지 기억하라.

실력 있는 침투시험 전문가는 종종 다른 침투시험 전문가들에게 보여주기 위해 보고서를 작성하는 경우가 많다. 필자도 종종 이러한 유혹에 빠진다. 우리가 작성하는 보고서는 다른 침투시험 전문가에게 보여주기 위해서 작성하는 것이 아니다. 자랑하고 싶은 마음은 이해가 되지만, 피하는 것이 좋다. 우리가 작성하는 보고서는 이 보고서를 읽는 사람에게 가치를 제공해 주어야 한다.


보고서의 요약본을 읽는 사람은 바로 기업에서 의사결정을 하는 사람들이다. 의사결정을 하는 사람들이 자원을 할당하고, 발견된 문제점을 해결한다. 보고서 나머지 부분은 기업의 보안전문가 및 운영팀에게 최고의 가치를 제공할 수 있도록 작성되어야 한다. 그곳에 당신의 의견과 권고사항을 포함시켜 보안 인력 및 시스템 관리자가 취약점을 패치할 수 있도록 하는 것이 좋다.


# Tip 3. 권고사항에 ‘해결방법’을 제공하라.

취약점을 수정하도록 하는 권고사항에 모호한 수준으로 권고사항을 기술하는 것은 좋지 않다. 대신에 권고사항을 구현할 수 있도록 실제단계별 패치 방법을 기술해야 한다. 바로 따라할 수 있는 명령어 또는 GUI 스크린샷을 예로 포함하는 것이 좋다.


그림 2와 같이 침투시험 전문가가 발견한 취약점 예제를 생각해 보자. 조직에서 NTLMv1을 사용하는 윈도우에서 오래되고 취약한 인증기능을 사용하고 있다고 가정해 보자. 취약점 스캐너 결과를 단순히 복사해서 붙이는 것은 발견사항의 가치를 낮추는 것이다. 그럼 어떻게 해야 하나?


단순히 NTLMv1을 NTLMv2로 바꾸라고 하는 것보다 발견한 취약점을 좀더 가치가 있도록 설명하기 위해서 서버에 ‘HKEY_LOCAL_MACHINE\SYSTEM\Current

ControlSet\Control\LSA\LMCompatibilityLevel’의 레지스티리 키 값을 5로 설정하도록 말하는 것이다. 이렇게 권고하면 단순히 NTLMv2로 바꾸라고 하는 것보다 확실히 효과가 있다. 하지만 여전히 직원이 실제 처리하는 방법과 대해서는 의문이 남는다. 좀더 가치 있게 하려면 발견된 취약점으로 영향 받는 서버에 다음과 같이 명령어를 실행하도록 알려주는 것이다.


C:\> reg add hklm\system\currentcontrolset\control \lsa /v lmcompatibilitylevel /t REG_DWORD /d 0x5

그림 2. 수준 높은 권고사항을 기술하는 방법


이보다 좀더 가치 있게 하기 위해서는 그룹정책을 사용해서 발견된 취약점을 구현하는 상세한 방법을 포함하고, 전체 윈도우 환경에 적용하는 것이다. 즉, 항상 발견한 취약점을 수정할 수 있도록 하고, 수정하는 방법에 대해서 답을 줄 수 있어야 한다. 그런데 너무 상세한 방법을 제공하면 직원들이 검증 없이 그대로 따라할 위험이 있다. 잘못 적용하면 시스템이 망가질 수 있다. 그래서 각각 발견된 취약점에 다음과 같은 문구를 포함하는 것이 좋다.


“위의 변경은 대부분의 환경에서 적용한 사례이지만, 특정 환경에서 알려지지 않은 결과가 발생할 수 있습니다. 그렇기 때문에 권고한 변경은 사전에 시험환경에서 먼저 평가가 된 후 적절한 공식적인 변경 통제 프로세스를 통해 실행되어야 합니다. 사전에 시험되지 않고 바꾸는 경우, 실제 환경의 시스템에 문제가 발생할 수 있습니다.”


# Tip 4. 권고사항에 ‘치료 후 확인방법’을 제공하라.

이제 침투시험 결과를 차별화하고 가치를 높일 수 있는 가장 중요한 방법에 대해서 설명할 것이다. 권고사항에 취약점을 치료할 수 있는 ‘how-to’만 포함하지 말고, 치료가 적용됐는지 조직에서 확인하는 방법도 포함하는 것이다.


이렇게 하면 취약점이 패치됐다는 확신을 가질 수 있다. ‘how-to-check’를 설명하는 것은 좀 장황할 수 있지만, 치료를 확인하기 위해 1~2개의 명령어, GUI 스크릿샷 또는 도구 구성방법을 제공할 수 있다. 침투시험 전문가가 실력 있는 보안전문가 또는 많이 알고 있는 시스템 관리자가 수행할 수 있을 정도의 권고사항을 기술해야 한다. 우리가 작성한 권고조치를 다른 침투시험 전문가가 수행할 수 있도록 작성하면 안 된다.


확인하는 과정을 포함하는 것이 어렵지 않다. 앞서 언급한 NTLMv2 권고사항에 대해서 침투시험 전문가 다음과 같은 권고사항을 추가하면 된다.


“다음과 같은 명령어를 실행하여 세팅 값을 확인할 수 있음”


C:\> reg query hklm\system\currentcontrolset \control\lsa /v lmcompatibilitylevel


실행하면 출력값이 5가 나오는 것을 확인하면 되며, 이 말은 NTLMv2를 사용하도록 시스템이 구성됐다는 것을 의미한다.


다양한 패치를 구성하거나 적용하기 위해서 ‘wmic qfe’ 및 ‘wmic product’와 같은 윈도 명령어가 유용하다. 리눅스에서는 cat, rpm, --version 옵션으로 프로그램을 확인할 수 있다.


복잡한 권고사항일 경우 침투시험 전문가가 아닌 사람에게 치료를 확인하도록 하는 것은 쉬운 일이 아니다. 예를 들어 크로스 사이트 스크립팅(XSS)를 방어하기 위해 제대로 구현이 됐는지 시험하는 절차를 만드는 것은 어려운 일이다. 새로 만들어진 필터를 시험하기 위해 단순히 특정 시험용 XSS 문자열을 입력해 본다면, 필터는 시험용 문자열만을 제거할 가능성이 있어 조직에서는 보안수준을 잘못 이해할 수 있다.


왜냐하면 다른 XSS 문자열은 여전히 동작하여 위험이 존재할 수 있기 때문이다. 그래서 XSS에 대해서는 단순히 몇개 시험용 문자열을 시험하는 것보다 조직에서 특정 무료 XSS 스캐닝 도구를 실행해 위험한 문자열을 필터링하는지 시험하는 것이 좋다.


필자가 처음으로 시험 보고서에 취약점 치료 확인을 위한 권고사항을 추가하자, 일부 침투 시험 회사에서 항의했다. 이렇게 하면 보고서 양과 비용이 증가한다는 것이었다. 하지만 이러한 정보를 추가하는 것은 권고사항별로 몇 분이 더 소요되며, 템플릿화 할 수 있다. 이 말은 보고서는 약 10% 더 증가하지만 목표 시스템에 대한 가치는 훨씬 더 증가한다는 얘기다.


# Tip 5. 공격 영향 및 가능성을 기준으로 발견사항의 우선순위를 정하라.

침투시험 보고서 대부분은 각각의 발견사항에 대해서 높음/중간/낮음(HML 방식)으로 우선순위를 정한다. 이 방법은 의사결정하는 사람 또는 기술 인력들에게 어떤 취약점이 더 위험하기 때문에 가장 먼저 치료해야 하는지에 대한 좋은 정보가 될 수 있다.


하지만 많은 조직에서 위험이 높은 카테고리에 우선순위를 정할 때 필요한 단계별 수준을 보여주지 못한다. 그래서 공격 영향 및 공격 가능성을 이용해서 위험을 분류할 것을 추천한다. 이 방법은 위험요소를 좀더 정확하게 이해하고, 영향이 크고 공격을 받을 가능성이 큰 취약점에 좀더 많은 노력을 집중할 수 있다.


물론 FIRST에서 개발한 공통취약점점수화시스템(CVSS)과 같이 발견된 취약점에 위험수준을 할당하는 훨씬 더 복잡한 방법들이 있다. CVSS는 취약점을 상세하게 분석할 때는 최고지만, 일반적인 침투시험에 적용하는데 비용이 많이 든다. 필자는 여기서 영향과 가능성을 이용해서 HML과 CVSS 중간정도로 취약점을 분류했다.


취약점 보고서 가운데 요약 보고서에 조직의 상대적 중요성에 따른 보안문제를 그래픽을 통해 요약하면 유용하다. HML 발견사항에 대해서는 대부분의 침투시험 전문가는 단순히 높음/중간/낮음 취약점을 보여주는 막대 형태의 차트를 복사한다. 그러나 이는 그림 3에서 보는 것과 같이 정보를 충분하게 전달하지 못한다.

그림 3. 전통적인 HML 모델을 사용한 막대모양 차트


단순히 막대모양 차트를 넘어서 우리 팀은 그림 4와 같이 다차원 그래프를 사용해서 영향 및 공격 성공가능성에 기초해 발견된 취약점을 그래픽 형태로 요약했다. 여기서 X축에는 공격성공 가능성을 넣고, Y축에서는 영향을 표시했다. 그리고 1~5까지 점수화했다.


각 취약점에 대해서 서로 만나는 값의 숫자의 크기를 원으로 표시했다. 원이 큰 것은 침투시험에서 발견사항이 많다는 것을 의미한다. 이 결과 여러 고객들로부터 이런 차트가 좀 더 의미 있는 결과를 보여준다는 피드백을 받았다. 의사결정권자들도 이러한 그래프를 통해 좀 더 빨리 결과를 이해하고, 치료를 위해 자원을 할당할 수 있다고 밝혔다.

그림 4. 영향과 공격 성공가능성 매트릭스


단순하고 반복적인 침투시험의 악순환 끊어야

여기서 설명한 치료법은 여러분들이 기술적으로 완벽하게 수행할 수 있다는 가정 하에 설명했다. 하지만 계속해서 노력할 필요가 있다. 그리고 좀 더 깔끔한 결과를 얻기 위해서 여기서 제시한 방법을 이용하면 작업결과에 대한 사업적인 가치를 극대화 할 수 있다.


우리는 침투시험 전문가에게 좀 더 가치 있는 것을 제공하기 위해 다양한 방법에 대해서 설명했다. 모든 독자들이 여기에서 제시한 방법을 따라 하기를 기대하지 않는다. 하지만 적어도 1~2개는 시도해 보아서 자신이 한 작업에 대한 사업적인 가치를 높이기를 바란다. 보안산업에서 침투시험을 가치 있게 만드는 것은 단순하고 반복적인 침투시험의 악순환을 끊는 일이다.

필자는---------------------------------------------------------

브라이스 갤브레이스(Bryce Galbraith), SANS 공인강사


브라이스는 전 세계 ISP 및 포춘 500대 기업에서 보안업무를 수행한 바 있다. 특히, 파운스톤의 유명한 침투시험 팀원이었으며, 파운스톤의 첨단 해킹 실전코스 시리즈의 선임강사 및 코스 개발자였다. 브라이스는 윤리적 해킹 및 대응방안에 대해서 전 세계 유명회사, 금융회사 및 정부기관 수천여 명의 IT 전문가를 대상으로 강의했다.

브라이스는 올해 ‘SANS Korea 2012(www.itlkorea.kr/sans/sanskorea2012.php)’에서 SEC 560 네트워크 침투시험 및 윤리적 해킹(www.itlkorea.kr/sans/sec560.php, 11월 5~10일), 그리고 SEC 580 기업 침투시험을 위한 메타스플로잇 쿵푸 과정(www.itlkorea.kr/sans/sec580.php, 11월 12~13일)을 강의할 예정이다.

-------------------------------------------------------------

 

And