쎈찍 ‘헤일스톰 프로토콜 모델러’
상태바
쎈찍 ‘헤일스톰 프로토콜 모델러’
  • Network Computing
  • 승인 2003.08.20 00:00
  • 댓글 0
이 기사를 공유합니다

오류 투입기 이용으로 어떤 테스트도 ‘뚝딱’
2만5천 달러 가격이 부담 … IT·보안에 대한 전문 지식 필요
네트워크 지원 애플리케이션에 침입하는 방법에 대해 알고는 있지만, 이것을 실험해볼 방법이 없는가? 소켓 호출에 관한 책을 들여다보고 C로 처음부터 무언가를 코딩하고 싶지는 않을 것이다. PERL::Net 라이브러리에서 모호한 어떤 한계를 발견했다면 절반쯤 온 셈이다. 완벽한 개방형 소스 패킷 생성 툴키트를 찾았다 하더라도 실제 작업, 즉 예를 들어 회사의 공중 웹 서버의 호스트 레벨 보안 감사를 마치는 일 등에 의해 이 프로젝트가 중단될 수도 있다. 이런 사람들을 위해 추천하고 싶은 툴이 바로 쎈찍(Cenzic)의 헤일스톰 프로토콜 모델러(Hailstorm Protocol Modeler)다.

원시적인 툴을 이용해 네트워크 보안 테스팅 트래픽을 만들어내는 게 너무도 당연한 사람이라면, 헤일스톰 프로토콜 모델러(Hailstorm Protocol Modeler)를 이용해 테스팅 툴을 재빨리 만들어낼 수 있다. 이 제품은 유명한 해커이자 보안 전문가인 그렉 호글런드가 공동 설립한 쎈찍(Cenzic)사의 대표적인 제품이다(여기서 해커는 매우 똑똑한 프로그래머라는 긍정적 의미로 쓴 말이다).

센찍의 프로토콜 모델러는 네트워크 지원 소프트웨어의 버그를 찾아내 주며, 이 소프트웨어가 인텔이나 썬 솔라리스와 같은 적절한 컴퓨팅 플랫폼에서 돌아가고 있든 아니면 라우터나 부하조절기, 혹은 VPN 컨센트레이트와 같은 전문 하드웨어 플랫폼에서 돌아가고 있든 상관하지 않는다. 실세계에서와 마찬가지로 듣는 IP(listening IP)가 있는 장비나 시스템은 무엇이든 타깃이 될 수 있다.

프로토콜 모델러는 오류 투입(fault-injection) 컴포넌트를 이용해 네트워크 계층 공격을 신속하게 개발할 수 있게 해준다. 상용 제품(즉 주변 방화벽의 IP 기반 관리 인터페이스)의 폐쇄 소스 ‘블랙박스’ 테스팅이건 개발 중인 내부 웹 애플리케이션의 테스팅이건 공격의 목표는 기반 소프트웨어의 취약성을 밝혀내는 것이다. 사전 구축된 오류 투입기가 테스팅 필요를 해결해주지 못한다 하더라도 자기만의 오류 투입기를 만들 수가 있기 때문에(많은 수고가 따르지만) 프로토콜 모델러는 사실상 어떤 종류의 테스트든 할 수 있는 능력이 있다.

GUI 툴을 사용하는 간단한 유형의 네트워크 트래픽을 복제할 수 있고 PERL과 같은 API를 사용해 보다 복잡한 작업을 수행할 수도 있다.

테스트 방법

헤일스톰 프로토콜 모델러의 필요조건은 매우 기본적이다. 즉 강력하지만 킬러는 아닌 최소한 하나의 NIC이 있는 윈도 기계만 있으면 된다. 우리는 문제에 부딪칠 경우를 대비해 우리가 한 것처럼 표준의 지원이 잘 되는 하드웨어(이 NIC을 포함하는 것)를 사용할 것을 권장하는 바다. 이것은 하드웨어 문제에 신속하게 대처할 수 있게 해줄 것이다.

세그먼팅된 테스트 네트워크가 기존에 없다면 프로토콜 모델러가 패킷을 던져 넣기 전에 이를 하나 만들 필요가 있다. 이 제품을 생산 네트워크에 배치할 생각은 애시당초 금물이다. 프로그램이 그 세그먼트에 연결되었다는 간단한 언급만으로도 기간 애플리케이션이 중단될 수 있기 때문이다. 대부분의 프로토콜 모델러 테스트는 OS, 네트워크 장비 및 애플리케이션에 심각한 런타임 오류를 만들어내도록 설계됐을 뿐 아니라, 가끔씩 운영자가 의도한 것과 약간 다르게 무언가를 하기도 한다.

다행히도 네오햅시스 랩에는 생산 네트워크 외의 테스트 네트워크도 있었기에 우리는 프로토콜 모델러 호스트(컴팩 1850R 펜티엄 III 기계에 실린)를 시스코시스템즈 2900 시리즈 스위치에 꽂았다. POP, SMTP, DNS 및 HTTP 등 다양한 서비스를 운영하는 몇 개의 리눅스 및 마이크로소프트 윈도 2000 호스트가 타깃 애플리케이션들을 제공했다. 완전한 사양의 매니지드 스위치에서 가동시키는 한 가지 이점은 트래픽을 모니터링하는 스팬 포트를 구성할 수 있는 옵션이며, 또 다른 옵션으로는 허브로 프로토콜 모델러를 연결하는 게 있다.

어느 쪽이든 프로토콜 모델러의 대역 외 모니터링을 위해 선호하는 스니퍼를 연결하고 싶을 것이며, 우리의 경우는 ‘이더리얼(Ethereal)’과 그 CLI 기반 자매품을 사용했다. 런타임 로깅은 프로그레스의 모니터링뿐만 아니라 실행되는 트랜잭션을 파악하기에도 충분치가 못하다.

마법사들의 활약

시카고 네오햅시스 파트너 랩에서 처음 프로토콜 모델러를 가동시켰을 때, 우리는 이 제품의 마법사를 이용해 평범한 보안 테스팅 과정을 통과했다. 한 마법사는 SQL 공개 취약점을 찾느라 웹사이트를 돌아다니면서 성공적인 명령어 투입 공격을 위해 사이트간에 버그와 기회를 스크립팅했다. 불행히도 우리가 이 스크립트를 적용시켰던 작은 테스트 웹사이트(본사 인트라넷 서버의 베타 버전)에서조차도 프로토콜 모델러는 멈추었다. 센찍은 이 중단 원인을 코드의 최신 버전에 침투한 버그 탓으로 돌렸으나 이로인해 사용자 상호작동이 더 적은 사이트가 보다 소화해내기 쉬운 타깃임이 입증되었다.

또 다른 마법사는 방화벽을 테스트했다. 기본적으로 이것은 프로토콜 모델러를 멋진 포트 스캐너로 바꾸어주는데, 이것은 이런 유연한 툴에게는 시시한 편에 속한다.

마법사들은 비록 애플리케이션의 컴포넌트들에게 사용자를 소개시켜준다는 매우 유용한 목적을 지원하긴 하지만 금새 한계를 드러냈다. 하지만 이런 안내자가 없다면 복잡한 인터페이스 가운데서 길을 잃게 될 것이며, 이것은 암담하고 영양가 없는 경험이 될 가능성이 많다.

프로토콜 모델러의 네트워크 리코더(Network Recorder)는 보다 집중화된 테스팅 방안을 제공한다. 보고 버튼을 누르면 테스트 중인 애플리케이션이 당신이 조사하고자 하는 네트워크 트랜잭션을 실행하게 될 것이다. 이것은 SMTP나 IMAP와 같이 잘 알려진 표준 기반 애플리케이션이 될 수도 있고, 이 경우 패킷들은 적절한 필드로 디코딩될 것이다. 혹은 전용 애플리케이션일 수도 있는데 여기서는 캡처된 트래픽에 자동으로 오버레이되는 포맷이 없을 것이다. 이 경우 사용자는 트랜잭션을 스크롤링하고 무슨 일이 일어나고 있는지를 해석해 보아야 한다.

마지막으로 이것은 웹 애플리케이션이 될 수도 있는데, 이 경우에는 프로토콜 모델러가 HTTP 기반 취약점 조사를 위한 추가 지원뿐만 아니라, 애플리케이션을 통과하고 리코더용 데이터를 수집하기 위한 브라우저 인터페이스까지 제공한다. 일단 데이터가 캡처되면, 이것은 보고 복제하고 오류 투입기에서 불러올 수 있으며, 취약점을 찾기 위한 테스트로 재생될 수도 있다.

다양한 오류 투입기

프로토콜 모델러의 가장 강력한 기능 중 하나는 다양한 오류 투입기들로, 이것은 트랜잭션에서 원하는 컴포넌트들로 끌고 갈 수도 있고(drag into) 프로그램의 프로세서에서 중대한 역할을 한다. 예를 들어, 후방 데이터베이스 질의로 보내지는 사용자 입력을 제공하는 웹 애플리케이션에서 SQL 디스클로저(SQL Disclosure) 오류 투입기를 시도하는 것은 좋은 선택이 될 것이다. 가동을 시키고 나면 트랜잭션은 웹 서버로 하여금 SQL 명령어를 후방 데이터베이스 서버에 곧장 전달하도록 서로 다른 순열을 이용해 반복적으로 되풀이된다.

프로토콜 모델러는 애플리케이션이 이 방식에서 ‘실패’하는지를 지켜본다. 이 예로 계속 가 보면, HTTP 응답에서 확실한 SQL 에러가 돌아오는 것을 목격할 경우 프로토콜 모델러는 이것을 주목하고 사용자에게 보고한다.

프로토콜 모델러는 오류와 취약성의 징후를 모니터링하기 위해 몇 가지 전략을 사용하고 있다. 한 가지는 앞에서도 말했다시피 오류의 전형적인 응답 값(return value)을 주시하는 것이고, 또 하나는 정상 크기의 입력에서 올 때의 정상적인 응답 값을 같은 입력에 버퍼 범람 공격이 성공했을 때의 비정상적인 응답 값을 비교하는 것이다.

오류 투입기는 두 가지 방식으로 적용이 가능하다. 직접적으로 이것을 작업에 투입시키면 프로토콜 모델러는 여기에 대항되는 모든 적절한 단계를 자동으로 계산해준다. 이 같은 총괄적 방식은 사용되는 오류 투입기에 따라 테스트 시간이 엄청나게 길어지는 경우가 많다. 이 대신 오류 투입기를 트랜잭션의 특정 부분(예를 들어 HTTP 포스트 필드 등)에 적용시키는 방법도 있다.

복잡한 창들

프로토콜 모델러의 GUI는 몇 가지 흠 때문에 아주 멋지다고 할 수는 없지만 꽤 괜찮은 편이다. 모든 구성 창들은 마스터 창에 들어 있으며 주변으로 이동할 수 있고 도킹(docking)과 언도킹(undocking)이 가능하다. 그리고 많은 창들이 닫히고 나서 나중에 다시 열릴 수도 있다. 무수한 하부창들과 화면에 퍼져 있는 데이터로 인해 가능한 한 큰 모니터를 바라게 될 것이다. 트랜잭션 에디터 페인(pane)은 지난 번 본지에서 이 툴을 테스트한 이후 업데이트되지 않았으며(약 1년 전의 일), 여전히 사용자로 하여금 원하는 필드를 찾기 위해 먼 거리를 수평으로 스크롤하게 만드는 불편한 인터페이스를 보여주고 있다.

이 회사에서는 다음 버전에서 보다 나은 트랜잭션 에디터를 통합시키겠다고 약속했다. 모니터가 크다고 하더라도 GUI에서 작업하기는 다소 어려운데, 그 이유는 일부 하부창들은 닫히지가 않고 위젯의 크기 조정이 까다로울 수도 있기 때문이다.

보고 기능의 경우, 데이터를 사용자가 선택한 SQL 기반 저장소에 저장함으로써 특정 필요조건을 토대로 한 맞춤 보고 기능이 프로토콜 모델러 외부에서 만들어질 수 있다. 대부분의 테스트용으로 포함돼 있는 보고 기능으로 충분하며, 심지어 여기에는 롤업 그래프와 해설까지 포함돼 있다.

이 버전의 단점들

프로토콜 모델러의 3.06 버전에서는 특히 2만5천달러라는 가격을 생각할 때 용납하기 힘든 몇 가지 흠이 발견되었다. 이 버전을 출시할 때의 QA 사이클은 그리 좋은 인상을 주지 못했다. 센찍에 따르면 3.06에서 이루어진 변화는 모두 성능에 관련된 것이라고 했지만, 개발자들은 분수를 넘어선 것처럼 보였다. 왜냐하면 프로토콜 모델러가 파일 처리를 다 하지 못하고 갑작스레 중단되는 경우가 빈번하게 발생했기 때문이다. 강도가 있는 테스트라면 어떠한 것이든 이 오류의 희생양이 될 것이다. 회사측에서 패치를 내놓았으며 기술팀이 바쁘게 돌아다니긴 했지만, 테스트가 진행되는 동안 센찍은 이런 문제를 고치지 못했다.

앞서 언급했던 웹을 돌아다니는 마법사는 마이크로소프트 비주얼 C++ 예외 상황창이 화면을 덮도록 만들었으며, 중단된 프로토콜 모델러 버전을 남겼다. 다른 장시간 테스트에서도 비슷한 실망을 경험한 바 있다. 예를 들어 웹 서버로 다시 포스팅되고 있는 웹 페이지에서 한 사용자가 입력한 것에 SQL 디스클로저 공격을 감행해 보았다. HTTP 서버에서 로그를 보았으며(사용자는 타깃 애플리케이션에서 보다 가깝게 자신들이 모니터링하고 있다는 사실을 종종 알게 될 것이다), 시도된 질의 유형의 윤곽을 잡을 수 있었다.

8천600개의 공격 질의를 목격하고 난 다음, 프로토콜 모델러는 마침내 중단되었다(센찍은 이 수치로 미루어 오류 투입기가 아마 닫혔을 것이라고 말했다). 불행히도 이 제품은 어떠한 체크포인트 작업도 하지 않기 때문에, 어떤 취약성이 이런 질의들에서 발견되었다 하더라도 찾아낼 수 없었을 것이다.

보다 중요한 사양의 문제는 오류 투입기의 대략적이고 상대적인 런타임에 대한 어떠한 표시도 없는 것이다. 어떤 것들은 테스트 규모에 따라 몇 시간, 혹은 며칠이라도 걸릴 수 있다. ‘이 테스트에는 각기 약 7분간 소요가 되며, 여기에 60회서 총 7시간이 나온다’는 메시지가 있다면 훨씬 더 나을 것이다.

예술적 창의성 필요

프로토콜 모델러 경험은 여러 가지 면에서 텅 빈 7피트짜리 캔버스를 손에 든 총 천연색 물감으로 칠하기 시작하는 것과 같다. 툴을 성공적으로 사용하려면 창의성이 필요하다. 물론 그렇다고 프로토콜 모델러 세계의 피카소가 되라는 것은 아니다. 솔직히, 프로토콜 모델러 환경이 보다 편안해졌을 때는 몇 가지 흥미로운 테스트를 고안하기도 했지만 우리 작업의 상당수는 마법사들을 이용해 숫자로 칠해졌다.

착각하지 말아야 할 것은 이 제품을 사용하기가 쉽지 않다는 사실이다. 툴에 익숙해지고 예비 테스트 네트워크를 어셈블링하기 위해서는 최소 일 주일은 꼬박 걸린다. 이것도 IP 네트워킹 프로토콜(모든 레벨의)에 대한 전문 지식과 보안 취약성 이론 및 실행에 대한 전문 지식을 모두 갖추고 있는 경우에 한해서다.

이 시각 현재, 센찍은 헤일스톰 웹(Hailstorm Web)이란 신제품을 발표했다. 중심 엔진 기술은 헤일스톰 프로토콜 모델러와 같지만 여기에는 또한 조직에서 구조적으로 사용할 수 있도록 포괄적인 워크플로 관리가 포함돼 있다. 보안 전문가와 QA 분석 역할은 애플리케이션 보안 테스팅 작업이 로컬로 배포될 수 있게 해줄 것이다. 예상하는 것처럼 이 제품은 HTTP 기반 애플리케이션에 초점을 두고 있다.

(보고서 카드) 쎈찍 헤일스톰 프로토콜 모델러 최종 평가
설명서20%3
가격20%2
성능/안정성20%2
프로토콜(애플리케이션) 지원폭15%4
보고 기능15%4
설치 및 구성10%5
총 평균
2.95
C
쎈찍 헤일스톰 프로토콜 모델러 사양표
지원되는 OSI 계층2~7
기본 레이어 7 지원FTP, HTTP, ICMP, IIS, ISAPI, IMAP, POP3, SMTP
확장 레이어 7 지원HTTP
오류 투입 다중 계층비트워크, 버퍼범람, 포맷 스트링, 상대경로, 윈도 명령어 투입, 유닉스 명령어 투입, 일반 SQL, 마이크로소프트 SQL, 마이SQL, 포스트그레스, SQL 무효화
HTTP크로스 사이트, 구획문자(delimiter)
플랫폼마이크로소프트 윈도2000(프로 혹은 서버), 윈도 XP
마법사웹 애플리케이션, 네트워크 장비, IDS 서명, 방화벽 테스트, 미허가 액세스 감사, 고아 감사, 로그인 정책 테스트, 패스워드 정책 테스트
가격2만오천 달러

Executive Summary

쎈찍 ‘헤일스톰 프로토콜 모델러’

쎈찍 헤일스톰 프로토콜 모델러의 2만5천 달러라는 가격은 분명 중소규모 조직들로서는 감당하기 힘들 것이다. 그러나 현금이 있다면 잠재 사용자를 보아서 이 기사를 보여주고 반응을 살펴보라. 이들이 애플리케이션에 대해 하고 싶어했던 특정 테스트에 대해 감동하고, 이런 툴이 그들에게 가져다 줄 시간 절약 효과를 놀라워한다면, 데모를 요청하라. 그리고 눈을 깜박이며 얼마나 많은 단계별 마법사가 따라오는지를 알고 싶어한다면 행동을 계속 이어가라.

이제 구입을 결심했다고 하자. 그래도 회사 사무소에 그 정당성을 입증하는 일이 까다로울 수 있다. 툴에 대해 설득시키려면 네트워킹 프로토콜, 공격 방법론, 그리고 보안 프로그래밍 실행 등에 대한 깊은 이해와 함께 수준 높은 분석 작업이 필요하다. 이 보안 닌자가 이러한 어렵고 힘든 이동을 감행할 수 있는 기회는 오직 애플리케이션과(혹은) 네트워크 장비 테스팅 작업이 함께 했을 경우에만 주어진다.

많은 회사들은 이런 테스트를 애플리케이션 블랙박싱, 코드 감사 및 네트워크 장비 오류 테스팅을 전문으로 하는 써드파티 보안 컨설팅 회사에 맡기고 있다. 하지만 시간 여유가 있다면 이런 유형의 작업을 내부적으로 할 수 있는 시간과 권한, 그리고 기술이 있다면, 프로토콜 모델러는 테스트를 수행할 필요가 있을 때마다 보안 전문 업체들에 들어가는 비용에 비해 신속한 절감 효과를 보여줄 것이다.

프로토콜 모델러가 들어맞는 곳?

헤일스톰 프로토콜 모델러와 같은 툴은 많이 들어보진 못했다는 말은, 즉 이 제품이 그만큼 독특하다는 증거다. 비즈니스 관점에서 볼 때 이것은 강점이기도 하고 약점이기도 하다. 한 쪽에서 보면 센찍에는 경쟁할 만한 상용 제품이 없다. 하지만 진공 상태에 있다는 것은 이 제품을 어느 정도 말썽꾸러기로 만들어주기도 한다.

보안 툴 시장은 이미 혼잡해 보안 분석가들의 호감을 차지하기 위한 치열한 경쟁 구도로 접어들었다. 프로토콜 모델러를 전체적인 구도에서 볼 수 있도록 비교적 유사한 몇 가지 보안 툴들을 살펴보기로 하자.

>> 취약성 평가(VA) 스캐너: VA 스캐너는 알려진 공격 유형의 데이터베이스를 통해 실행되며, 알려진 보안 취약성을 찾기 위해 호스트나 네트워크를 탐색한다. 새로운 취약성이 발견되면(예를 들어 몇 가지 새로운 유형의 스크립트 공개에 대해 마이크로소프트 IIS가 용의자로 지목되면), 체크가 만들어져서 서명 목록에 추가된다. 각각은 타깃 호스트에서 차례로 실행되며, 아마도 ‘아파치가 아니라 IIS 서버에 있는 IIS 체크만을 실행하라’는 식으로 호스트 유형 식별에 따라 범위가 좁혀지고 난 후에 각각은 타깃 호스트에서 차례로 실행된다.

대부분의 서명 주도식 안티바이러스 소프트웨어와 마찬가지로, VA로는 알려진 공격에 대해서만 보호가 가능하다. 프로토콜 모델러는 전통적인 VA 서비스를 제공하는 대신 사용자가 사전에 알려지지 않았지만 수상한 보안 취약성에 대해 애플리케이션을 탐색할 수 있게 해준다. 이 버그 사냥은 보다 VA 스캐너를 돌리는 것보다 더 많은 시간과 기술을 요한다. 이런 작업들은 그 목적이 서로 다르기 때문에 이들을 비교하는 것은 두 가지 유형의 툴을 구분할 때외에는 의미가 없다.

VA 툴의 예로는 인터넷 시큐리티 시스템즈(Internet Security Systems)의 인터넷 스캐너(Internet Scanner)와 네서스(Nessus)를 들 수 있다.

>> 웹 애플리케이션 스캐너 : 웹 애플리케이션 스캐너는 전통적인 VA 스캐너의 속성뿐만 아니라 프로토콜 모델러 테스팅 플랫폼과의 유사성까지 갖고 있다. 보통 프록시 기반 아키텍처를 사용하는 이들 스캐너는 자동으로 움직이거나 혹은 웹 애플리케이션을 통한 사용자의 ‘테스트 케이스(test case)’에 의해 작동될 수 있다. 전형적인 비보안 웹 프로그래밍 실행들을 주시하고 수상한 요소들을 점검해봄으로써, 이 툴은 이런 취약성들을 발견 및 평가할 수 있다.

악성 쿠키 탬퍼링이나 숨은 값 공격 등과 같은 애플리케이션 탬퍼링(application tampering)을 이런 툴들로 탐지 및 식별할 수 있다. 프로토콜 모델러도 이런 웹 애플리케이션 버그를 일부 잡을 수 있으며, 단 프로토콜 모델러에 비해 사양과 강도가 어떨지는 제품에 따라 달라질 것이다.

>> 툴키트와 라이브러리 : 마지막 제품 부문은 매우 비상업적인 것으로, 많은 오픈 소스 프로그래밍 라이브러리와 API, 그리고 툴키트들이 네트워크 취약성 테스트 프로세스를 자동화하는 작업을 돕기 위해 나와 있다. 이들을 사용하려면 포함된 프로토콜뿐만 아니라 프로그래밍과 유닉스 전문 기술에 대한 깊은 지식이 필요하다. 이들은 병적으로 피딩을 하는 툴들이 프로그램(여기서는 네트워크 지원 애플리케이션)으로 입력을 만들어내서 오류를 야기하기 때문에 심장이 약한 사람들에게는 권할 게 못 된다.

보안 컨설턴시인 앳스테이크(@Stake)의 스파이크(Spike)라는 툴도 이 범주에 속한다. 프로토콜 모델러는 이런 작업들을 상당 수 소화할 수 있다. 사실 이 제품의 진정한 가치는 그렇지 않으면 이런 다른 종류의 네트워크 툴키트들을 이용해서 조합이 되어야 했을 많은 테스트를 보다 빠르고 효율적으로 더 많이 제공해준다는 데 있다.

■ 헤일스톰 프로토콜 모델러 3.06
■ 가격: 2만5천 달러
■ 센찍, www.cenzic.com


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.