시작하기 전에 보안 위협 모델링이라는 개념 자체가 생소한 사람들이 많을 것으로 생각된다. 보안 사고를 사전에 예방하고 징후를 미리 탐지하는 보안 관제, 모의해킹 등의 일을 수행할 때 좀 더 체계적이고 전문적인 밑그림을 그리고 시작하는 경우가 드물기 때문이다.
이 책은 학문적이면서도 비즈니스에 적용할 수 있는 보안 위협의 구체적이고 실질적인 내용을 제공한다. 위협 모델링은 제품, 소프트웨어, 네트워크, 또는 환경에 대한 보안 위험과 공격 수행 방식을 확인하는 데 도움이 된다. 이는 완화해야 하는 위협과 해당 위협을 확인하는 데 목적을 두고 있다.
위협 모델링 전략을 수립하려면 소프트웨어 모델링을 통해 소프트웨어 정보를 수집한다. 정보를 수집할 때 고려해야 할 사항은 대상의 환경, 범위, 구성 요소, 종속성, 사용 사례에 따른 시나리오 등이 있다.
모델링은 소프트웨어를 구성하고 있는 컴포넌트의 전체적인 모습을 이해해 전체적인 보안성에 영향을 미치는지 확인하는 과정이다.
이 책에서는 STRIDE라는 위협의 유형을 소개한다.
STRIDE는 스푸핑, 조작, 정보 노출, 권한 상승 등 대표적인 위협의 앞 글자를 합쳐 만든 단어다. stride는 실제로 다른 뜻을 가진 단어지만, 여기서 말하는 STRIDE는 위협 모델링을 위한 진전을 의미하려고 했던 것이 아닐까 하는 생각이 든다.
이 책에서는 공격 트리라는 새로운 모델링 방법을 소개한다.
먼저 수행한 모델링 작업과 외부 엔티티에 대해 얼마나 취약할 수 있는지 판단을 위한작업을 수행하고, 여러 가지 공격 유형별로 위협 수준을 평가해 보안 대응책을 제시함으로써 효율적인 위험 관리 정책을 수립하게 된다. 위협을 구분하고 식별하는 것은 이를 완화시킬 수 있을 때 비로소 가치가 있다고 할 수 있다. 위협을 완화시킬 수 있는 정책, 프로세스, 관리, 방어 기재 등 여러 요소를 살펴본다. 물론 위협에 대응하기 위해 전혀 비용이 들지 않을 수는 없다. 비용을 최소화하고 위협에 대한 검증을 최대한 이끌어낼 수 있는 노력이 필요하다.
이 책에서는 활용할 수 있는 위협 모델링을 위한 도구를 소개한다.
웹, 클라우드, 계정 식별, 인적 요인, 암호화에 대한 위협을 상세히 소개하고, 기업에 위협 모델링을 적용시키는 과정을 소개하고, 성공적인 컨설팅을 위한 문서화, 구현 및 테스트 과정은 소프트웨어 아키텍처를 구상할 때 도움이 될 뿐만 아니라 비즈니스에 위협 모델링을 적용하는 데 도움이 된다.
매년 수많은 보안 사고가 일어나고 그중 대단히 위중한 사고는 모두에게 커다란 손실을 가져오기도 한다. 이를 사전에 대비하기 위해 많은 비용과 시간을 들이고 있다.
하지만 이를 소홀히 하거나 부족한 이해로 인한 사고를 지켜보는 것은 안타까운 일이 아닐 수 없다. 모든 보안 사고를 막을 수 없다고 하더라도 위협 모델링을 통해 보안 사고를 최소화시킬 수 있지 않을까? 많은 고민과 연구를 통해 시스템의 보안을 평가하고 위협을 완화하는 데 도움이 되길 바란다.
리눅스와 보안은 IT 분야에서 (비록 뭐하나 잘하고 있지는 못하지만) 지금의 내가 있게 해준 주요 키워드라고 할 수 있다. 처음 리눅스를 접한 1990년 초만 하더라도, 리눅스는 운영체제를 공부하는 사람에게 기껏해야 그저 고가의 유닉스 클론(내지는 흉내 내는 것)이나 공부를 위한 교보재 정도로만 여겨졌을 뿐(적어도 내겐 그랬다.), 지금과 같이 전 세계적으로 이용되며 기존의 유닉스를 비롯한 여러 상용 운영체제와 어깨를 나란히 하고 심지어 그것들을 뛰어넘어 대체하게 되리라고는 꿈에도 상상할 수 없는 일이었다. (전 세계의 수많은 오픈소스 개발자들에게 영광을!) 그러다 보니, 어쩌면 불가피하게도 악의적인 공격자(더 이상 '해커'라는 단어를 나쁜 의미로만 사용하지는 말자.)에게는 아주 매력적이고도 흥미로운 목표로 더욱 뚜렷하게 인식되고 있다.
이 책은 이와 같이 수많은 오픈소스의 대표격으로 높은 신뢰와 인기를 얻고 있는 리눅스 운영체제를 목표로 하는 보안 사고의 대응 실무에 필요한 기법을 다루고 있다. 1장에서는 리눅스 시스템 포렌식에 필요한, 다양한 환경에서 악성코드를 수집하는 기법을 설명하고, 2장에서는 리눅스의 메모리 포렌식을 집중적으로 다루며, 3장에서는 리눅스 시스템을 부검하는 방법에 대해 설명했다. 4장에서는 이러한 작업을 진행함에 있어서 반드시 고려해야 하는 법적인 고려사항과 관련 자료를 언급하고, 5장에서는 6장에서 진행할 정적, 동적 분석 방법에 필요한 프로파일링 기법과 도구를 설명한다. 마지막으로 6장에서는 정적, 동적 분석 방법을 통한 의심스러운 프로그램의 분석에 대해 설명한다. 이렇듯, 이 책은 리눅스 시스템의 포렌식에 필요한 포괄적이며 실무적인 기법과 필요한 도구를 설명함으로써 실무자들에게 필요한 실질적인 지식과 이해를 제공하는 것을 목표로 한다.
이러한 심도 있고 어려운 주제에 관한 책을, 지금껏 실무를 담당하며 경험을 쌓아온 우리 역자들이 모여 공동으로 번역을 진행했다. 여러 명의 역자가 6개의 장을 나눠 번역을 진행한 만큼 문체와 어감을 통일시키는 것이 중요했고, 그만큼 많은 노력을 기울였다. 문학 전공과는 거리가 먼 우리들이 영어 문장을 우리 말과 글에 어울리게, 그리고 문맥에 맞게 우리말로 번역하기란 결코 쉬운 일이 아니었지만, 최대한 자연스러운 문장으로 옮기고자 노력했다. 무엇보다, 이 책은 전문 기술서이기 때문에, 원 저자의 의도와 설명하려는 기술적인 내용에 오류나 오해가 없도록 번역에 최선을 다했다는 점을 이 책의 역자로서 다시 한 번 강조하고 싶다.
컴퓨터와 인터넷은 아주 빠르게 우리의 삶에 들어와 세상을 변화시켰다. 정부, 기업, 개인 모두가 컴퓨터와 인터넷을 통해 은행에 가지 않고도 은행 업무를 볼 수 있게 됐고 쇼핑이나 영화 감상과 같이 다양한 활동을 할 수 있게 됐다. 인터넷이 없었던 시절에는 어떻게 살아왔는지 궁금할 정도다. 기술이 점점 더 발전하면서 최근에는 스마트폰, 태블릿 PC의 등장으로 인터넷에 접근하기가 더욱 용이해졌고, 더 많은 사람이 인터넷을 통해 방대한 양의 정보를 공유하고 활용한다.
이렇게 삶을 풍요롭게 만든 인터넷에는 엄청나게 많은 정보가 담겨 있다. 자연스럽게 이러한 정보를 얻고자 인터넷의 속을 들여다보고 싶어하는 사람들이 나타났다. 단순한 호기심일 수도 있고, 지적 탐구일 수도 있고, 삶을 풍요롭게 할 목적일 수도 있고, 나쁜 목적으로 피해를 입히려고 하는 것일 수도 있다. 여기서 다시 한번 생각해 볼 것은 '누구나 쉽게 인터넷을 해킹할 수 있는 것일까? 해킹을 한다면 어떻게 하는 것일까? 그리고 해킹을 통해 무엇을 얻을 수 있는 것일까?'라는 점이다. 이런 궁금증을 해결하려고 이 책을 선택했다면 어느 정도 성공했다고 할 수 있겠다.
하지만 이 책의 진짜 목적은 단순히 공격을 하고 정보를 얻는 데 있는 것이 아니라 해커의 공격 방법을 이해하고 그것을 어떻게 막을 수 있을지 알아보면서 성공적인 모의해킹을 수행해 더 안전한 인터넷 환경을 만드는 데 있다. 칼리 리눅스가 제공하는 다양한 툴을 사용해 서버, 클라이언트, 네트워크, 인증, 웹 측면에서 공격은 어떻게 이뤄지며 그에 따르는 방어 대책을 알아보자.
모의해킹에 성공하면 모의해킹 수행 보고서를 제대로 작성할 수 있다. 어느 곳에서도 잘 소개하고 있지 않는 모의해킹 수행 보고서는 실제 업무에서 어떻게 모의해킹을 어떻게 시작하고 진행하는지에 관한 표준과, 잘 작성한 수행보고서의 표준을 제시한다. 이 책을 통해 웹 모의해킹에 성공하는 한편으로 훌륭한 수행보고서도 작성할 수 있길 바란다.