APT(Advanced Persistent Threat), 지능형 지속 위협 공격이 사회적 이슈로 부각되면서 악성코드로 인한 보안 위협은 모든 보안 전문가에게 공통적인 숙제가 되었다. 악성코드를 이용한 공격은 과거부터 끊임없이 존재하였지만, 이제는 일반을 대상으로 하는 것이 아니라 명확한 공격 목적과 대상을 가진 악성코드가 주류를 이루고 있다. 이런 환경의 변화는 보안 담당자가 상용 보안 제품의 지원에만 의지할 수 없게 만들었다. 상용 제품은 다수에게 발생할 수 있는 보안 위협을 더 중시하기 때문에 한 조직에 특화된 악성코드는 탐지나 대응이 쉽지 않다. 따라서 보안 담당자나 보안 전문가로서 기본적으로 악성코드에 대한 이해와 분석 능력을 지녀야 한다.
『실전 악성코드와 멀웨어 분석』은 역자진이 예전에 번역한 『악성코드 분석가의 비법서』와는 동일한 주제를 다른 방식으로 풀이한 책이다. 일부 겹치는 내용이 있기는 하지만, 다른 관점에서 예제와 더불어 포괄적인 주제를 기본에 충실하게 빠짐없이 다룬다. 특히 장별로 저자가 작성한 샘플 악성코드를 직접 테스트하고 상세한 설명을 통해 해당 주제를 이해할 수 있게 구성돼 있다. 악성코드 분석에 대한 기초가 부족한 독자의 경우에도 책의 내용을 따라가면서 이해할 수 있다.
이 책은 기본에서 시작해 고급까지 모든 내용을 포괄함으로써 악성코드 분석에 관심을 가진 초심자와 더불어 이미 현업에서 악성코드를 분석 중이거나 보안 관련 업무로 인해 악성코드 분석에 대한 실습이 필요한 모두에게 적합한 책이다. 실습 예제가 포함돼 있기 때문에 교육 기관에서 학습서로 활용하기에도 부족함이 없는 내용을 포함하고 있다. 총 6 부로 구분돼 있는 책의 내용을 독자의 목적에 따라 습득한다면 빠른 시간 안에 원하는 목적의 정보와 지식을 습득할 수 있으며, 실습을 통해 숙달할 수 있을 것이라고 생각한다.
악성코드는 사람의 악의가 사라지지 않는 한 사라지지 않고 계속 존재할 것이고, 컴퓨터 기술이 발전할 수 있도록 더욱 교묘해지고 발전할 것이다. 이 책에서 악의적인 코드 또는 악성 코드로 표현했지만, 사실 코드에는 어떤 마음이나 선악이 존재하지 않는다. 악성코드 제작자가 가진 의도대로 수행되는 명령이 존재할 뿐이다. 악성코드 분석은 이런 측면에서 제작자의 심리를 읽을 수도 있고 비록 나쁜 행위이긴 하지만, 그의 재치를 알아가는 작업이기도 하다. 보안 모듈을 우회하고 몰래 숨는 응용력에 감탄하기도 하고, 부처님 손바닥 안에서 노는 손오공 같은 제작자의 우매함에 실소가 나오기도 한다.
앞서 번역한 『악성코드 분석가의 비법서』(2012)는 악성코드를 분석할 때 즉시 참고할 수 있는 실전 참고서이고, 『실전 악성코드와 멀웨어 분석』(2013)은 분석 방법, 악성코드의 기능, 안티리버싱을 다루고 있어 이 책과 유사한 점이 있으나 상세한 내용은 다르다. 이 책의 장점은 앞의 책들보다 이후에 출간돼 좀 더 새로운 내용을 담고 있다는 점, 다른 관점의 설명으로 이해의 수준을 높인다는 점, 저자의 경험과 지식이 잘 묻어난다는 점이다. 이 책은 악성코드 분석을 정의하고 두 가지 분석 방법으로 구분한 후 악성코드 분석에 기초가 되는 디스어셈블리 기초와 IDA 사용법, 디버깅을 설명한다. 그리고 악성코드가 가진 다양한 기능과 그 정체성(인젝션과 후킹), 은닉 기술, 은닉 기술을 탐지하는 메모리 포렌식을 다룬다.
이 책은 모험가에게 지도는 탐험 지역 전체를 훑을 수 있는 정보의 원천이자 원하는 목적지에 도달하게 하는 안내서다. 이 책 또한 모의침투 테스트에 입문한 이에게 좋은 안내서이자 활용서다. 모의침투 테스트를 위해 다양한 도구 집합과 활용법에 대해 알고자 하는 이에게, 간편하게는 바로 적용할 수 있는 도구 사용법을 제공하며, 주요 도구의 종류와 활용법을 전체적으로 이해시킴으로써 모의침투 테스트 프로젝트 본연의 목적에 집중할 수 있게 해준다.
칼리 리눅스는 모의침투 도구를 집약한 라이브시디(LiveCD)의 통합 버전인 백트랙(Backtrack)의 후속 배포판으로서, 약 7년 동안 제기되어온 백트랙의 커널 문제와 복잡해진 의존성 관계를 끊고 새롭게 시작하기 위해 탄생되었다. 칼리 리눅스는 ARM 기반의 호환성을 포함하고, 우분투 기반에서 데비안 기반으로 변화했으며, FHSFilesystem Hierarchy System을 가졌고, 파일시스템 계층 구조 표준을 준수했다. 이로 인해 호환성과 사용성이 더욱 강화됐다.
이제까지 악성코드 관련 실용서를 소개하던 범주에서 벗어나 모의침투 관련 개괄서를 소개하는 것이 어떨까 하는 생각에 이 책의 번역을 맡았다. 이 책은 그림과 따라하기 형태의 구성을 취하고 있어 초보자들도 쉽게 따라할 수 있는 수준이다. 허나 이 점 때문에 중급자 이상에게는 아쉬움이 있을 수 있다. 그렇지만 앞서 이야기했듯이 칼리 리눅스(또는 백트랙)를 처음 접하는 독자에게는 이런 류의 도구 집합에 대한 폭넓은 이해를 줄 수 있을 것이라고 기대한다.
더 나아가서는 모의침투 전체 과정에서 도구를 취사 선택해서 사용하는 데 그치지 않고 근본 원리와 이 책에 포함되지 않은 도구나 내용까지도 적극적으로 학습하여 초급자에서 중급자로 거듭날 수 있기를 바란다.
이 책은 인터프리터 프로그래밍 언어인 펄을 이용해 해킹에 필요한 도구를 제작하고 활용하는 방법을 제시하는 실용서다. 무엇보다 그 근본에는 모의해킹 과정을 위한 필수 지식이 자리잡고 있어 도구를 개발하는 과정을 통해 유무선 네트워크의 기본 지식과 각종 해킹 기법 등의 기본 원리를 이해할 수 있다.
모의해킹에 필요한 각종 도구를 직접 개발하거나 부족한 도구의 기능을 보완하던 과거와 달리, 현재는 손쉽게 정보를 수집하거나 공격을 자동화하는 도구들이 주변에 널려 있다. 이런 도구 덕분에 손쉽게 해킹할 수 있는 환경이 갖춰져 인력 측면에서는 양적으로 성장했으나, 질적인 측면에서는 배움을 바탕으로 한 걸음 더 나아갈 수 있는 인력이 여전히 한정적인 것 같아 안타까운 측면이 크다. 남보다 앞서 가기 위해서는 도구에 의존하기보다 스스로 구현할 수 있는 능력을 갖춰야 한다. 이를 위해 최소한 한 가지 이상의 인터프리터 언어 정도는 습득하고 있어야 한다.
펄은 개인적으로 전문 보안 업체에서 모의 침투 테스터로 10여 년 동안 활동하던 시기에 애용하던 프로그래밍 언어로, 빠른 구현과 개선이 가능한 인터프리터 언어의 장점은 모의해킹의 성과로 충분히 증명되었다. 특히, 펄의 정규표현식 처리 능력은 다른 언어가 따라올 수 없을 정도로 뛰어나다. 이 책에는 담기지 않았으나 펄의 이식성(리눅스, 윈도우 등) 역시 펄을 모의해킹 과정에서 쓸 수밖에 없는 이유 중의 하나다.
이 책을 감수하면서 과거 펄로 웹 백도어(webshell) 탐지기를 만들던 때가 떠올랐다. 이 책의 내용 역시 프로그래밍 언어에 초점을 두기보다 한 단계씩 원하는 결과를 얻어가는 과정을 설명하고 있어 모의해킹 또는 보안 시스템 등을 구현하고자 하는 독자에게 많은 도움이 될 것이라고 생각한다. 펄이란 프로그래밍 언어가 낯설다고 하더라도 이 책의 내용을 바탕으로 충분히 본인이 원하는 도구를 개발하고 업무 효율성을 높일 수 있을 것이다. 배움의 단계에 있는 초보자와 익숙함에서 벗어나 한 걸음 더 나아가고자 하는 분께 이 책을 권한다.