보안

"해커에서 침투 테스터로의 변신" 침투 테스트의 기초와 요구 사항

Roger A. Grimes | CSO 2017.11.23
컴퓨터 보안 분야에서 30년 넘게 종사한 필자에게 가장 도전적이면서 재미있는 업무는 '펜 테스트(pen testing)'나 '윤리적 해킹(ethical hacking)'으로도 불리는 침투 테스트(Penetration test)다. 이는 기본적으로 보수를 받고 합법적으로 컴퓨터나 기기에 침투하는 일이다.


Credit: Getty Images Bank

침투 테스트에는 단점이 없다. 현재 구현된 방어 체계를 뚫는다면, 의뢰한 고객에게 해커가 발견하기 전에 취약점을 없앨 기회를 줄 수 있다. 발견된 문제가 없다면 고객은 더 기뻐할 것이다. 화이트 해커조차 뚫을 수 없을 정도로 보안이 튼튼한 제품이라고 선언할 수 있기 때문이다. 한 마디로 '윈-윈'이다. 

해커에서 침투 테스터로 변신하기
이런 윤리적 해킹(침투 테스트)이 항상 쉽다고 말하는 것은 아니다. 아니 확실히 쉽지 않다(그러나 높은 IQ는 필요 없다). 여러 다양한 상황에 극복하기 어려운 도전과제들이 존재한다. 그러나 첨단 기술을 파악하고, 무언가 뚫는 것을 좋아하는 사람이라면 침투 테스트 관련 일이 꿈에 그리던 일이 될 수 있다.

해커들이 합법적인 '윤리적 해커'가 되기 위해 반드시 거쳐야 하는 단계들이 있다. 최소한 침투에 앞서, 권한을 갖고 있는 사람으로부터 서면 승인을 받아야 한다. 전문 침투 테스터에게 가장 중요한 부분은 법을 지키는 것이다. 모든 윤리적 해커가 하는 일에 방향을 제시하는 윤리 강령(Code of ethic)을 따라야 한다. CEH(Certificated Ethical Hacker) 테스트를 만든 EC-카운실(EC-Council)의 윤리강령이 대표적이다.

윤리적 해킹의 단계 1. 범위와 목표 설정
전문 침투 테스터는 서면으로 범위와 목적을 합의해야 한다. 다음은 범위를 설정하기 위해 물어야 할 질문들이다.

- 테스트의 범위에 포함되는 컴퓨터 자산들은 무엇인가?
- 모든 컴퓨터가 포함되는가? 아니면 특정 애플리케이션이나 서비스, 운영체제 플랫폼, 모바일 기기, 클라우드 서비스만 해당되는가?
- 테스트 범위에 웹 서버, SQL 서버, 호스트 운영체제 수준의 모든 컴퓨터 등 특정 컴퓨터 자산만 포함되어 있는가? 아니면 네트워크 장치도 포함되어 있는가?
- 침투 테스트에 자동 취약점 스캐닝이 포함되어 있는가?
- 소셜 엔지니어링을 허락받았는가? 허락받았다면, 어떤 방법을 이용할 수 있는가?
- 침투 테스트가 승인된 날짜는 언제인가?
- (계획에 없는 서비스 정지나 방해를 피하기 위해)침투 테스트가 금지된 요일, 날짜, 시간이 있는가?
- 테스트가 서비스를 방해하지 않기 위해 최선을 다해야 하는가? 아니면 진짜 해커처럼 문제를 초래할 수 있는가? 테스트에 서비스 방해가 포함되어 있는가?
- 침투 테스트가 블랙박스(침투 테스터가 관련 시스템이나 애플리케이션에 대해 모르는 상태에서의 테스트)인가? 아니면 화이트박스(경우에 따라 관련된 소스코드를 포함해 공격 대상 시스템에 대한 내부 지식을 갖고 있는 상태에서의 테스트)인가?
- 컴퓨터 보안 담당자에게 침투 테스트에 대해 통보한 테스트인가? 아니면 해당 담당자의 침투 인지가 테스트 대상인가?
- 전문 해커(레드 팀)가 방어 담당자(블루 팀) 모르게 침투를 시도하는 테스트인가? 아니면 진짜 해커들이 사용하는 방법으로 기존의 탐지 및 방어 체계를 테스트하는 테스트인가?

또한 침투 테스트의 목적, 목표와 관련해서는 다음과 같은 질문을 해야 한다.
- 컴퓨터나 기기에 침투할 수 있다고 보여주는 것이 목적인가?
- '서비스 거부(DoS)'를 목적의 범위로 고려하는가?
- 특정 컴퓨터 액세스나 데이터 침해가 목적의 일부인가? 아니면 특수 액세스 권한 획득만으로 충분한가?
- 테스트를 끝냈을 때 문서에 포함시켜 제시해야 할 내용은 무엇인가? 실패한 해킹 방법, 성공한 해킹 방법을 모두 포함시켜야 하는가? 아니면, 가장 중요한 해킹 방법만 포함시키면 되는가? 얼마나 상세해야 하는가? 모든 키 입력과 마우스 클릭에 대해 정보를 제공해야 하는가? 아니면 요약 정보로 충분한가? 해킹을 비디오나 스크린샷으로 기록해야 하는가?

이렇게 침투 테스트에 앞서, 범위와 목적을 자세히 기술해 합의하는 것이 중요하다.

윤리적 해킹의 단계 2. 적절한 침투 테스트 도구 선택
침투 테스터는 통상 자신이 항상 사용하는 해킹 도구에 대한 기준을 가지고 있다. 그러나 윤리적 해킹 업무의 경우, 그 유형에 따라 다른 도구를 찾거나 선택해야 할 수도 있다. 예를 들어, SQL 서버 공격을 요청받았는 데 관련 경험이 없다면, 여러 다양한 SQL 공격 도구를 조사하고 테스트해야 한다.

대부분의 침투 테스터는 침투 테스트용 리눅스 배포판을 가지고 시작한다. 해킹용 리눅스 배포판은 다양하다. 그러나 현재 전문 침투 테스트가 가장 선호하는 배포판 중 하나는 칼리(Kali) 배포판이다. 대부분의 침투 테스터가 사용하는 해킹 도구는 수천 종에 달한다.

품질과 목적 부합성에 더해, 해킹 도구에서 가장 중요한 부분은 해커를 해킹하는 코드나 악성코드가 포함되어 있지 않아야 한다는 것이다. 무료 도구를 중심으로 인터넷에서 구할 수 있는 해킹 도구의 절대 다수에는 악성코드와 숨겨진 백도어가 존재한다. 가장 많이 사용하고, 인기있는 엔맵(Nmap)과 같은 도구는 통상 믿을 수 있다. 그러나 유능한 침투 테스터는 자신이 직접 도구를 만든다. 다른 사람이 만든 도구를 믿지 않기 때문이다.

윤리적 해킹의 단계 3. 발견: 침투 테스트 대상을 학습
모든 침투 테스터가 침투 테스트 대상에 대한 학습으로 해킹을 시작한다(소셜 엔지니어링 기법은 제외). 발견(Discover) 단계에서는 IP 주소, 운영체제 플랫폼, 애플리케이션, 버전 번호, 패치 상태, 광고된 네트워크 포트, 사용자, 기타 취약점을 알려주는 요소들을 파악해야 한다. 침투 테스터가 단 몇 분 동안 자산을 조사, 잠재적인 취약점을 찾아내는 경우가 적지 않다. 취약점을 발견하지 못한 경우에도, 이 과정에 학습한 정보로 계속 분석을 하고, 공격을 시도할 수 있다.

윤리적 해킹의 단계 4. 취약점 공격 대상에 침투
'침투'를 하라고 윤리적 해커들에게 보수를 지급하는 것이다. 발견 단계에서 획득한 정보로 취약점을 공격하고, 이를 통해 미인가 액세스 권한을 획득한다(또는 서비스 거부 공격). 특정 자산에 침투할 수 없다면, 범위 내 다른 자산에 대한 침투를 시도해야 한다.

필자는 발견(Discover) 단계에서 매번 취약점을 찾아냈다. 방어 담당자에게 취약점을 통보해, 이 담당자가 취약점을 없애기 전 최초 침투 테스트에서 침투 대상 자산을 침투하지 못한 전문 침투 테스터도 본 적이 없다. 물론 때때로 취약점을 발견하지 못해 해킹 목적을 달성하지 못하는 침투 테스터도 있을 것이다.

그러나 발견 단계에서 자신이 해야 할 일을 한다면, 많은 사람이 생각하는 것보다 쉽게 취약점을 발견할 수 있다. 천재만 유능한 침투 테스터, 해커가 될 수 있는 것은 아니다. 참을성과 철저함이 훨씬 더 중요하다.

취약점과 익스플로잇에 따라, 획득한 액세스 권한을 상승시켜야 할 수도 있다. 보통 사용자 권한을 관리자 권한으로 바꿔야 한다는 의미다. 이를 위해 두 번째 취약점 공격이 필요할 수도 있다. 그러나 최초 공격으로 특수(관리자) 권한을 획득하지 못한 경우에 해당되는 이야기이다.

범위에 따라, 취약점 스캐닝 소프트웨어를 사용해 취약점 발견 프로세스를 자동화시킬 수도 있다. 이런 소프트웨어들은 통상 취약점을 찾아내지만, 미인가 액세스 권한을 획득하는 취약점 공격에는 이용할 수 없다.

다음 단계에서 침투 테스터들은 최종 표적에 침투한 경우 합의된 목표 아래 행동을 수행하거나, 취약점 공격에 성공한 컴퓨터를 사용해 최종 표적에 더 가까운 액세스 권한을 획득한다.

침투 테스터와 방어 담당자들은 이를 '수직(horizontal)', 혹은 '수평vertical)' 이동이라 부른다. 공격자가 동일한 시스템 클래스 내부에서 이동을 하는 것, 관련이 없는 다른 시스템으로 이동하는 것을 가리키는 용어다. 때론 시스템 비밀이나 비밀 데이터를 노출시키는 것이 목적이 될 수도 있다. 또는 해킹 성공 과정을 문서로 기록해 제시하는 것이 목적이 될 수도 있다.

윤리적 해킹의 단계 5. 침투 테스트 과정을 문서화
마지막으로 전문 침투 테스터는 사전에 합의된 보고서를 작성해 제출해야 한다. 여기에는 발견 결과와 결론이 포함된다.

침투 테스트는 복잡하고 계속 진화하고 있다
다른 IT 보안 분야와 마찬가지로, 전문 침투 테스트도 성숙해지고 있다. '프로페셔널리즘' 없이 혼자 행동하는 해커들을 찾는 수요가 감소하고 있는 추세다. 기업은 '완성된' 전문 해커를 찾고 있다. 사용하는 방법, 직업 의식, 도구들이 완성되어 있어야 한다.

- 더 나은 툴킷: 침투 테스트 소프트웨어는 과거나 지금이나 윤리적 해커에게 반드시 필요한 툴킷의 일부였다. 그런데 고객들이 정기적으로 이를 운영하는 사례가 많다. 침투 테스트에서 가장 흥미로운 발전상 가운데 하나는 발견에서 취약점 공격까지 공격자처럼 모든 것을 알아서 수행하는 도구들이다.
오픈 소스인 블러드하운드(Bloodhound)가 적절한 예가 될 수 있다. 공격자는 블러드하운드를 사용, 액티브 디렉토리 네트워크에 위치한 여러 컴퓨터의 관계를 시각적으로 파악할 수 있다.
표적과 목적에 대한 정보를 입력하면, 여기에 도달하는 여러 다양한 해킹 경로를 파악할 수 있게 도움을 준다. 여기에는 테스터가 몰랐던 경로도 포함되어 있다. 침투 테스터가 출발 지점과 도착 지점을 입력하면, 블러드하운드와 몇 개의 스크립트가 나머지를 알아서 처리해 준다. A부터 Z까지의 해킹 단계를 알려준다.
또한 사용 침투 테스트 소프트웨어들도 훨씬 더 오래 전부터 이런 정교한 기능을 지원했다

- 천 마디 말보다 한 장의 그림: 과거에는 침투 테스터들이 경영진을 해킹하거나, 이들에게 관련 자료를 제시하는 방법으로 '영업'을 했다. 그러나 지금은 경영진들의 환경에서 해킹 과정을 보여주는 슬라이드, 비디오, 애니메이션을 원한다. 이들은 다른 경영진을 설득할 때는 물론 직원 교육에도 이런 자료를 사용한다.

- 위험 관리: 발견한 취약점을 목록으로 제시하는 것만으로 불충분하다. 이것만으로 자신이 할 일을 다했다고 간주할 수 없다. 전문 침투 테스터들은 IT 관리자와 협력해 가장 큰 위협, 가장 발생 확률이 높은 위협을 규명해야 한다.
침투 테스터는 이제 위험 관리 팀의 일원이다. 취약점을 드러내는 것을 넘어, 이와 관련된 위험을 효율적으로 감소시킬 수 있도록 도움을 줘야 한다. 윤리적 해커들은 경영진과 방어 담당자에게 발생 확률이 높은 문제와 과정을 보여줘야 한다는 것이다. 실제 해커의 해킹과는 동떨어진 1회성 모의 해킹에 그쳐서는 안 된다. 한 마디로, 더 많은 가치를 제공해야 한다.

- 트레이닝과 자격증: 다양한 교육 과정과 자격증 등 전문 침투 테스터가 될 수 있는 방법과 경로가 풍부하다. 교육 과정의 경우, 전문 강사의 지도 아래 첨단 시뮬레이션 랩에서 여러 다양한 해킹 도구를 경험할 수 있다. 관련 학위나 자격증을 취득한 후 침투 테스터가 되는 사례가 많다. 이들은 계속 교육을 받고, 자신이 배운 것을 가르치는 방법으로 사회에 환원을 한다.

물론 누구나 전문 침투 테스터가 될 수 있는 것은 아니다. 몇몇 기술과 플랫폼에 대해 준전문가가 되어야 한다. 또한 정상으로 보이는 것의 취약점을 발견해 침투하고 싶어하는 '욕구'를 갖고 있어야 한다. 이런 욕구를 갖고 있고, 법과 윤리에 기반을 둔 가이드라인을 준수할 수 있다면 전문 화이트 해커가 될 수 있다. editor@itworld.co.kr  

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.