들어가며
최근 학교 동기의 부탁으로 예맨에서 열리는 전기통신 관련 컨퍼런스(SITEX 2021)에서 대학생들을 대상으로 오펜시브 시큐리티에 대해 설명하는 프리젠테이션을 진행했다 (프리젠테이션 / 영상). 프리젠테이션을 만들다보니 우리나라에도 이와 비슷한 정보글이 하나쯤 있으면 좋을 것 같아 우리나라 버전으로도 블로그 글을 작성해본다. 1학년 때 “해킹 직업” “실제 해킹 업무” 등을 구글링 해보면서 이리저리 방황했던 시기가 있었는데 (2015, 2016년도면 오펜시브 시큐리티 개념이 국내에 별로 없었을 때다), 그런 의문들을 해소해줄 글을 작성해보고 싶었다.
요약
이 글에서는 학생과 비-보안 IT 현직자분들을 대상으로 오펜시브 시큐리티의 개념과 업계에서 제공하는 서비스 종류에 대해서 알아본다.
유의할 점
이 글의 내용은 미국 보안 업계를 기준으로 쓰여졌다. 안타깝게도 내가 우리나라 업계에서는 아직 일해본 경험이 없기 때문에 그렇다. 아무리 사람 사는 곳 비슷하다고 하더라도 나라가 다르기에 다른 점들 또한 존재할 것이다. 이 점을 유의해주시기 바란다.
오펜시브 시큐리티 - 개념
오펜시브 시큐리티란 공격자의 관점에서 현 보안 상태를 점검하고 평가하는 개념이다. 정보보안을 떠나 원래 보안이라고 한다면 방어자의 입장에서 특정 타겟을 지켜내는 업무를 진행한다. 군인은 나라를 지키고, 보안 요원은 VIP를 지키고, 정보보안은 IT인프라, 데이터, 그리고 사람을 지켜낸다.
하지만 지켜내는 보안만으로는 완벽한 보안을 기대할 수 없다. 손자병법에서도 적을 알고 나를 알면 백번 싸워도 위태로울 일이 없다고 하지 않았는가 (지피지기면 백전불태). 공격자들이 어떤 전략, 전술, 절차들을 이용해 어떻게 공격하는지에 대해 제대로 알고 있어야 더 효과적인 보안을 만들 수 있다. 이는 군인들이 KCTC로 모의 훈련을 하고, 보안 요원들이 서로 스파링을 하고, 축구 선수팀들이 연습경기를 뛰는 것과도 비슷한 개념이다.
공격자의 관점에서 타겟을 실제로 공격해보고 취약점을 찾아내 보고를 하는 것이 오펜시브 시큐리티의 핵심 개념이다. 이 핵심 개념들은 취약점 진단, 모의해킹, 취약점 연구, 그리고 레드팀 등의 서비스 형태로 업계에서 제공되고 있다. 이 서비스들을 제공하는 회사들과 실제로 서비스를 실행하는 현직자들은 어떤 일을 하는지에 대해 알아보자.
오펜시브 시큐리티 - 서비스 종류
취약점 진단 (Vulnerability Assessment / VA)
취약점 진단은 자동화 툴을 이용해 넓은 스코프의 타겟들을 상대로 취약점 찾아낸다. 타겟은 대부분 외부 파라미터(인터넷에 연결되어 타겟)다. 실무자는 타겟에 맞는 자동화된 툴을 준비한 뒤, 툴에 관련된 설정을 한 후, 툴을 실행시키면 된다.
물론 단순히 스캐너만 실행시킨다고 일이 끝나는 것은 아니다. 스캐너의 거짓 양성 결과와 거짓 음성 결과를 판단한 뒤, 수동으로 취약점 공격을 진행해야하는 경우도 있다. 또한, 단순한 외부 파라미터 및 웹앱이 아니라 OT, SCADA, IoT 등의 특별한 타겟들 상대로 진단을 실행하는 경우에는 스캐너 설정 및 페이로드 설정에 많은 시간을 할애 해야한다. 수력발전소 댐의 PLC 네트워크를 진단 할 때 Nessus 기본 설정으로 진단 시작했다가 난리가 날수도 있으니까 말이다 (실화인지 아닌지는..).
미국 업계에서는 취약점 진단만 전문적으로 하는 직종이 존재하지 않는다. 예를 들어, 인디드나 링크드인에서 Senior Vulnerability Assessment Operator 와 같은 직종은 없다 (2021년 기준). 물론 검색하면 나오는데, 잡 타이틀로 VA를 달고 계신 분들은 대부분 취약점 연구 및 모의해킹을 하시는 분들이다. 자신의 업으로 스캐너를 돌리는 사람은 2021년 기준으로 업계에서 찾아보기 힘들다. VA의 경우 모의해킹, 블루팀, 취약점 분석을 한다면 기본적으로 하는 업무 중 하나다.
취약점 진단 - 솔루션 개발
취약점 진단 자체는 툴 설정 후 실행이기 때문에 누구나 어느정도의 트레이닝을 받으면 할 수 있다. 하지만 취약점 진단의 핵심은 바로 솔루션 및 스캐너들을 개발하는 보안 솔루션 개발쪽이다. 취약점 진단 솔루션들은 지난 몇년간 엄청난 발전을 이뤄냈다. 몇년 전 거짓 양성 결과만 늘어놓던 단순한 스캐너들은 점점 업계에서 사라지고 있다. 2021년 기준 취약점 진단 솔루션들은 소프트웨어 엔지니어링의 정수를 모아놓은 거대한 프로젝트들이 되었다. AI 도입, 제 3자 XDR 등의 솔루션과의 연계, 실시간 CVE 탐색 및 PoC 불러오기, 취약점 발견 시 자동 패치, 리포트 생성 등, 솔루션들이 많이 똑똑해지고 있다.
그리고 이런 똑똑한 솔루션들을 만드는 데에는 있는 똑똑한 보안 솔루션 개발팀이 필요하다. 취약점 진단 솔루션 뿐만 아니라 보안 솔루션들은 대체로 깊은 소프트웨어 공학 지식이 필요한 분야다. 따라서 보안과 개발쪽에 둘 다 관심이 있고 프로그래밍을 즐겨 하는 사람이라면 솔루션 개발쪽이 잘 맞을 수도 있다.
모의해킹 / 모의침투테스트 (Penetration Testing)
모의해킹은 공격자의 관점으로 특정 대상 A를 공격하고, 취약점을 발견한 뒤, 보고를 하는 형식의 서비스다. 업계에서 가장 많이 제공되는 모의해킹은 웹/모바일, 외부, 내부, 클라우드, 그리고 소셜 엔지니어링이 있다. 하지만 그 외에도 메인프레임, 자동차, Wireless, 하드웨어, IoT, OT 등의 모의해킹 또한 존재한다. 모의해킹 종류는 딱히 정해진 것이 없으며, 사실상 어떤 타겟을 대상으로든 모의해킹을 실시할 수 있다.
모의해킹 컨설턴트의 경우 대부분 2~3가지의 모의해킹을 한다. 자신이 주력으로 하는 분야가 1가지, 부수적으로 1~2가지를 진행한다. 예를 들어 나 같은 경우 주력으로 내부 모의해킹을 하지만, 적어도 기본적인 웹과 외부 모의해킹 또한 할 수 있다. 회사의 입장에서도 각 종류마다 컨설턴트를 채용하기엔 인건비가 많이 드니 한명이 다양한 모의해킹을 하는 경우가 많다.
웹/모바일 모의해킹 (Web/Mobile Application Testing)
업계에서 가장 수요가 많은 모의해킹 분야 중 하나다. 워낙 웹 어플리케이션과 모바일 어플리케이션들의 숫자가 폭발적으로 늘어났기 때문에 관련된 모의해킹 수요도 늘어났다. 1~2주 동안 하나의 웹/모바일 어플리케이션을 대상으로 모의해킹을 진행한다. 기본적으로 OWASP Top 10 취약점을 기반으로 진행하지만, 각 나라나 업계마다 특수한 컴플라이언스, 가이드, 취약점 리스트가 있다면 적용시키기도 한다.
최근 들어서는 Single-Page Application, 클라우드 기반 서버리스 어플리케이션, API 테스트, 웹 소켓, 웹 어셈블리 등 다양한 웹 관련 기반 기술들을 모의해킹 하기도 한다. 워낙 웹 관련 기술들이 빨리 변화하고, IT 업계가 발전함에 따라 많은 기술 스택들이 나왔기 때문에 이에 발맞춰 컨설턴트들 또한 많은 공부를 해야한다.
웹/모바일 모의해킹에서 가장 중요한 지식 중 하나는 바로 개발 지식과 경험이다. 해킹을 잘하기 위해서는 잘 만들줄 알아야한다는 개념은 웹/모바일 모의해킹에서는 더 뚜렷하게 나타난다. 실제로 우리 회사에서도 실력이 좋은 웹/모바일 컨설턴트 분들은 개발 경험을 3~5년 정도 갖고 계신 분들이다. 물론 개발 경험이 아예 없거나 조금 있어도 모의해킹을 엄청 잘하시는 분들도 있지만, 대체적으로 봤을 때 그렇다는 것이다.
외부 모의해킹 (External Network Penetration Testing)
외부 모의해킹은 인터넷에 연결된 고객사의 리소스들을 찾아 이에대한 모의해킹을 진행한다. 이 리소스들은 서버 뿐만 아니라 어플리케이션, 검색 엔진에 인덱싱 된 파일/문서, PaaS, SaaS, 도메인, OSINT (공개출처정보), 다크웹 정보, 깃허브 리포, 면웹 데이터 덤프 등이다. 이처럼 인터넷에 연결된 리소스를 보호하는 것을 영어권에서는 파라미터 보안 (Perimeter Security, 경계 보안) 이라고도 불린다.
한 15년 전만 해도 파라미터 보안에 큰 신경을 쓰지 않았기 때문에 별의별 위험한 것들이 인터넷에 연결되어 있었다. 공공기관, 심지어는 정보기관이나 군 관련 기관들이 FTP Anonymous 를 허용한다거나, SSH 기본 계정 (root:password, ubuntu:password) 로그인이 가능하다거나, 국가 중요 인프라 기관의 점프 박스를 다이렉트로 인터넷에 RDP/VNC를 연결 시켜 놓는다던가, 모바일 어플리케이션의 파이어베이스 데이터베이스가 노출되어 있었다던가 등등.. “고등학생이 XYZ 정보기관을 해킹했다” 와 같은 뉴스가 나오던 것도 파라미터 보안에 아무도 신경을 안쓰고 있었을 때다.
그 이후로 더 많은 회사와 기관들이 파라미터 보안에 신경쓰면서 외부 모의해킹에 대한 수요도 높아졌다. 요즘 외부 모의해킹을 진행하면 다행히 예전만큼 무시무시한 취약점들이 발견되지는 않는다. 하지만 요새 재택근무, PaaS 와 SaaS의 무분별한 사용 (각 팀마다 다 다르게 네이버 클라우드, dropbox, box, 구글 드라이브를 사용하는 회사, 분명히 있을것이다), IoT의 도입의 이후로 파라미터라는 개념 자체가 흐릿해지면서 외부 모의해킹에 대한 수요도 다시 높아지고 있다.
외부 모의해킹 진행시 컨설턴트는 외부 공격자의 관점에서 다양한 툴들을 이용해 고객사의 파라미터 리소스를 파악한 뒤 모의해킹을 진행한다. 워낙 공격 표면이 넓고 다양하기 때문에 일일히 수동으로 진행할 수는 없다. 따라서 자동화된 취약점 진단을 통해 중요 타겟을 파악한 후, 수동 모의해킹을 진행하는 경우가 많다.
내부 모의해킹 (Internal Network Penetration Testing)
외부 모의해킹이 인터넷에 존재하는 공격자의 관점에서 파라미터 보안을 공격한다면, 내부 모의해킹은 그 반대다. 고객사의 온-프레미스 내부망 네트워크와 관련된 모의해킹을 진행한다. 컨설턴트들은 직접 고객사 건물에 들어가 테스트를 진행하기도 하지만, 코로나 시대 이후로는 원격으로 VPN 접근 후 내부 모의해킹을 진행하는 일이 더 많아졌다.
“내부망까지 뚫렸으면 게임 오버 아닌가?” 라고도 생각할 수 있지만, 다중 계층 보안의 개념에 따라 내부망까지 침투한 공격자가 정말 중요한 데이터 (PII, PCI, PHI - 개인정보, 카드정보, 개인건강정보 등)에 접근할 수 있는지 등에 대해서 알아보기 위해 내부 모의해킹을 진행한다.
몇 년 전부터 랜섬웨어가 급증하기 시작하면서 랜섬웨어와 관련된 시나리오 기반의 모의해킹을 진행하기도 한다. 예를 들어 회계팀의 김인턴이 피싱 이메일에 당했을 때, 공격자는 회계팀 네트워크의 김인턴 계정으로 어디까지 공격을 진행할 수 있을까? 와 같은 시나리오를 바탕으로 내부 모의해킹을 진행하는 것이다. 이런 경우 컨설턴트는 회계팀 서브넷에서 액티브 디렉토리에서 가장 낮은 권한을 가진 계정을 하나 만들어서 어디까지 내부망을 장악할 수 있는지 공격을 시도해본다.
대부분의 회사가 마이크로소프트사의 액티브 디렉토리 (Active Directory)를 사용하기 때문에 내부 모의해킹 시 액티브 디렉토리 및 하이브리드 액티브 디렉토리 (Azure-AD) 를 중점적으로 테스트한다. 당연히 액티브 디렉토리에 연결되어 있지 않은 서버들도 테스트한다.
서버/워크스테이션 외에도 내부망 엔드포인트에 설치된 EDR 솔루션 및 내부망 네트워크 보안 솔루션들의 효율성을 테스트 해보기도 한다. 망 분리가 되어있는 경우 망 분리, 데이터 이동, 그리고 횡적이동이 확실히 불가능한지를 테스트한다.
소셜 엔지니어링 (Social Engineering)
앞서 소개한 서비스들이 사람이 아닌 대상을 테스트 한다면, 소셜 엔지니어링은 사람을 테스트한다. 피싱 이메일, 보이스 피싱, 스미싱 등의 공격을 이용해 고객사 직원들의 사이버 보안 인식을 시험한다. 실제로 고객사를 물리적으로 방문해 진행하는 경우도 있고, 원격으로 전화통화나 피싱 이메일 등으로 진행하는 경우도 있다.
대상은 다양하다. VIP급 임원, 안내데스크, 사내 헬프데스크, 중요 인물 등이다. 간단한 OSINT로 대상에 관련된 정보를 수집한 뒤, 그 정보를 가공해 공격자가 원하는 일 (계정 정보 탈취, 특정 일 수행, 비밀번호 초기화 등)을 대상이 수행하는지를 테스트해본다. 사람을 시험하는게 주 목적이지만, 이메일 게이트웨이의 피싱 이메일 대처, 네트워크 보안 솔루션의 피싱 사이트 대처, EDR 솔루션의 페이로드 탐지 및 삭제 등을 시험하기도 한다.
클라우드 모의해킹 (Cloud Penetration Testing)
클라우드 모의해킹은 사용자 인증과 인가, 클라우드 설정, 인프라/웹 배포, VPC 망 분리등에 대한 테스트를 진행하는 서비스다. 최근 왠만한 회사들은 다 클라우드를 도입하고 있기 때문에 수요가 많이 높아졌다. AWS/GCP/Azure 관련 모의해킹을 진행하며 클라우드 설정이 잘 되어있는가, 클라우드 VPC가 망분리가 잘 되어 있는가 등을 파악한다. 더 나아가서는 쿠버네티스, 도커 스웜, 엔시블/테라폼과 같은 데브옵스 기술들을 클라우드 인프라에 배포할 때 안전하게 잘 배포되고 있는지 등을 파악하기도 한다.
취약점 연구 (Vulnerability Research)
취약점 연구는 특정 대상에 대해 오랜 기간동안 심층적으로 취약점들을 발견해내는 서비스다. 어플리케이션 뿐만 아니라 프로토콜, 프로토콜의 적용 (implementation) 까지 테스트 한다. 예를 들자면 안드로이드 OS의 블루투스 LE 프로토콜 적용이 안전하게 이뤄졌는가, 관련된 라이브러리들이 안전한가, 관련 라이브러리로 만들어진 블루투스 LE 안드로이드 어플리케이션이 안전한가 등을 심층적으로 연구한다.
취약점 진단, 모의해킹이 짧게 1~3주 동안 이뤄지는 반면 취약점 연구는 긴 시간동안 진행된다. 또한, 화이트 박스 형태로 소스코드가 주어지고, 소스코드 리뷰를 하는 경우도 많다. 소스코드 리뷰, 퍼징, 리버스 엔지니어링 등의 로우-레벨 실력이 많이 필요한 분야다. 또한 특정 도메인 지식이 필요한 경우도 있다. 예를 들어 OS 취약점 연구라면 운영체제에 관련된 지식이 많아야할 것이고, 네트워크 프로토콜 취약점 연구라면 다양한 네트워크 프로토콜에 관련된 지식이 많아야한다.
취약점 연구 서비스는 요청하는 고객사도, 서비스를 제공하는 회사도 워낙 비밀스러운 경우가 많다.
레드팀 (Red Team(ing))
레드팀의 경우에는 따로 블로그 글을 작성했으니 이를 참고하면 된다(https://blog.sunggwanchoi.com/kor-what-is-red-team-in-infosec/).
오펜시브 시큐리티는 생겨난지 얼마 안된 개념이자 업계지만, 다양한 서비스들이 빠르게 생겨났다. 오펜시브 시큐리티에 관심이 있는 학생들도 어떤 서비스들이 제공되고 있는지, 내가 관심있는 서비스는 어떤 건지에 대해 한번쯤 생각해보는게 좋을 것이다. 이 글이 그 궁금증을 해소하는데 조금이라도 도움이 되었으면 한다.
Happy Hacking!