|
해킹과 관련된 이론서들을 읽고 배웠지만 실제로 활용해본 적은 없지만 이 책의 경우는 해킹툴을 직접 사용하여서 해커와 침투테스터들이 어떤 방식으로 공격하는지 자세하면서도 친절하게 설명하여 있다. 명령어 한 줄 한줄 어떻게 쓰는지 까지도 설명해 줄로 친절하였다. 고급기법들은 없지만 해커들이 어떤 식으로 해킹을 하는지를 큰 관점으로 바라볼 수 있게 도와주었다. 해킹을 총 6단계로 나누어 탐색, 스캐닝,공격 , 웹기반 공격, 백도어와 루트킷에 대한 접근 유지, 침투 테스트 마무리로 분류하여 챕터 하나씩 기술하여서 각 과정에 해커들은 무엇을 하려 하고 그것을 위해서 툴을 어떻게 쓰는지 또한 보여주었다. 엄청난 두께로 자랑하며 깊이 있는 내용의 책은 아니지만 해킹을 해보지 않았거나 낯설은 사람들에게는 해킹이 무엇인지 배울 수 있는 매우 좋은 책이다. 특히 해킹을 하기 위해 사용되는 다양한 툴을 알게 되고 또한 사용법까지 같이 배우게 되어서 좋다. |
|
처음 이 책을 보았을 때, 다른 해킹이나 보안 관련 서적에 비해서 페이지 수가 적다는 사실에 의아해 했다. "페이지 수가 221페이지 밖에 안 되다니.. 이상한 걸..." 하지만, 책을 읽고 난 후, '해킹이나 침투테스트의 특정 분야에 대한 상세 지식이나 경험을 전달하는 것보다는, 이 분야의 전반적인 큰 그림을 보여주고자'하는 저자의 의도가 반영된 것을 알게 되었다.
이 책에서 가장 마음에 드는 것은 실습환경에 대한 설명이다. 해킹이나 보안관련해서 제다이(jedi)가 되고자 하는 순수한 열망에서 시작했던 많은 사람들이, 한 순간의 실수나 잘 몰라서 어둠의 포스인 시스(sith)의 길로 빠지지 않도록, 어떻게 실습을 해야 하는지 방법을 설명하고 윤리적 해킹을 강조하고 있다.
디지털 포렌식 관련 현직 경찰/검사님들이 강의를 들었을 때, 어린 마음에 다른 사람을 놀라게 해주고 싶은 단순한 장난이나 자신의 컴퓨터 실력을 자랑하기 위해서 해킹을 하다가, 법의 엄정한 심판을 받아야만 하는 안타까운 사연들이 많다는 것을 알았다. 이렇게 되지 않도록 하기 위해서는, 실습은 책에서 제시한 바와 같이, 네트워크를 차단시키고 가상화툴을 이용하는 것이 바람직할 것이다. 침투 테스트용 배포판인 백트랙 리눅스에 설치되어 있는 수백 개의 보안 및 해킹관련 툴의 사용에 주의에 주의를 해야할 것이다.
이 책은 침투테스트를 수행하기 위한 체계적인 방법론을 설명하고 있다. 침투테스트를 하기 위하여 무작정 공격을 할 것이 아니라, 탐색(정보수집), 스캐닝(포트/취약점), 공격, 접근권한유지의 4단계를 기반으로 체계적인 활동을 수행하는 것이 바람직하다고 설명하고 있다. 또한, 침투테스트를 종료한 경우에 보고서를 어떻게 작성하는 것이 유용한지 작성요령까지 설명하고 있다.
2장에서는 공격 가능한 대상을 찾기위한 정보를 수집하는 탐색에 대해서 설명하고 있다. 구글을 이용한 간접적(Passive) 해킹, 이메일 검색, DNS에서 정보 추출, 심지어 사회공학기법까지 설명하고 있다. ( 회사주변에서 USB를 주웠다고 좋아할 일은 아닌것 같다. 출처가 불분명한 USB를 자신의 PC에 연결하는 것은 보안이나 해킹관점에서 보면 굉장히 위험한 일이라고 한다. )
3장에서는 포트와 취약점 스캐닝에 대해서 설명하고 있다. 여기에 설명하는 포트스캐닝(Port Scanning)은, 시스템을 개발할 때 현재 시스템에 대해서 조사할 경우에도 사용될 수도 있다. 즉, 문서화가 잘 되어 있지도 않고, 관리자가 수시로 바뀌는 경우에는 특정 서버에 어떠한 서비스가 구동되고 있는지 알아내는 방법으로 포트스캐닝과 같은 작업이 필요한 것이다.
또한, 취약점 스캐닝을 위하여 네서스(nessus)를 사용하는 방법에 대해서 설명하고 있다. 해킹에도 사용할 수 있지만, 회사내에서 개인 PC나 서버에 최신 패치가 적용되었는지 확인하는 용도로 사용하는 것도 유용할 것 같다.
4장에서는 실제로 공격을 수행하는 방법에 대해서 설명하고 있다. 메두사(medusa)를 이용하여 원격에서 비밀번호를 무차별 대입하는 시도는, 대부분의 서버가 로그인 실패가 제한된 횟수를 초과한 경우에 계정을 잠그기 때문에 어려움이 있지만, 의외로 메두사를 이용하여 원격 컴퓨터의 접근 권한을 획득하는 사례가 적지 않다고 한다.
그리고 저자가 가장 좋아하는 메타스플로잇(Metasploit)에 대하여 설명하고 있다. 메타스플로잇은 오픈소스 공격 프레임워크로 공격코드와 페이로드(payload, 소프트웨어설치/계정생성/백도어 설치 등의 작업을 하는 코드)를 선택하여 목표를 공격할 수 있게 한다. 즉, 네서스의 취약점 분석결과를 이용하여 공격코드를 search한 후, 어떠한 행동을 할 것인지 payload에서 선택한 후, 공격한다는 것이다. 이 내용을 보면 최신 보안 패치를 설치하지 않으면 얼마나 쉽게 내 컴퓨터가 해킹당할 수 있는지 놀라울 뿐이다.
다음으로 비밀번호 크래킹을 위한 존 더 리퍼(john the ripper)란 프로그램을 설명하면서, 비밀번호를 암호화할 때 최신의 NTLM을 사용하지 않고 과거의 LM(Lan Manager) 해시 알고리즘을 사용하는 경우, 전체 네트워크가 위험해 질 수 있으므로 해당 소프트웨어를 업그레이드가 필요하다고 설명하고 있다. 또한, 비밀번호를 재설정하는 chntpw툴을 설명하고 있는데, 윤리적으로 활용한다면... 자신의 pc의 admin 비밀번호를 잃어 버렸을 때 활용할 수 있을 것 같다. ^^
네트워크 트래픽을 엿보기위한 마코프(Macof), 와이어샤크(Wireshartk), 패스트 트랙(Fast-Track) 등 다양한 툴들에 대해서 설명하고 있다. 이중에서 와이어샤크(Wireshark)는 해킹뿐만 아니라 실제 업무에서도 많이 활용된다. 특정한 장비들 사이에 문제가 발생하는 경우, 또는 대외기관과 통신하기 위한 경우에 패킷을 정상적으로 주고받았는지 확인하는 용도로도 활용되기도 한다.
5장에서는 웹기반 공격에 대해서 이야기하고 있다. 웹취약점을 스캐닝하기 위한 NIKTO, WebSecurity 툴을 설명하고, 웹사이트의 링크와 관련된 파일을 모아서 의도하지 않은 노출된 문서를 파악하는 스파이더링(Spidering)을 위한 WebScarab 툴(프록시 서버로 요청패키 조작도 가능)을 설명하고, 코드 삽입(Code Injection)의 의미와 전형적인 SQL Injection의 위험을 설명하고 있다. 마지막으로 서버가 아닌 클라이언트를 공격하여 세션에 포함된 중요한 정보를 탈취하는 크로스 사이트 스크립팅(Cross Site Scripting)에 대해서 설명하고 있다.
6장에서는 공격이 성공한 경우에 공격자가 언제든지 다시 돌아오기 위한 백도어를 설치하는 방법에 대해서 설명하고 있다. 이를 위하여 넷캣(netcat)을 활용하는 방법, 넷캣의 암호화 통신을 위한 CRYPTCAT을 설명하고, 고전적인 백도어 툴인 넷버스(Netbus)에 대해서 설명하고 있다.(또 하나의 고전적인 백도어인 백 오리피스는 간단히 언급만되고 있다.)
이러한 백도어를 숨기기 위한 루트킷(Rootkit) 중에서 해커 디펜더(Hacker Defender, 해커를 막는다는 것이 아니라 해커를 보호한다는 뜻인듯...)툴에 대해서 상세히 예를 들어 설명하고 있다. 루트킷를 활용하면 작업관리자 등을 통하여 백도어 프로세스를 탐지하기가 힘들게 된다는 것이다.
지금까지 저자는 대부분 공격적인 측면에서 이야기하였는데, 이 장에서는 방어를 위한 방법에 대해서 간단히 설명하고 있다. 즉, 인터넷에 기입하는 정보에 주의해야하고, 방화벽을 설정하고, 보안 패치를 수시로 적용하고, 바이러스 백신 설치하고, 침입탐지시스템을(이건... 좀..) 사용하라는 것이다. 참고로 루트킷을 탐지하기 위해서는 Rootkit Reveals, Blacklight와 같은 툴을 사용할 수 있다고 알려주고 있다.
7장에서는 침투 테스트보고서를 작성하는 방법에 대해서 설명하고 있다. 이러한 보고서는 '누가 보느냐'를 기준으로 요약, 상세결과, 증거자료로 구분하여 작성하는 것이 바람직하고, 자존심보다는 고객의 요구사항(고객의 보안)이 중요하다는 것을 인식해야 한다고 설명하고 있다. 뿐만아니라, 이 책은 단순히 도입서 정도이므로 좀더 공부를 하고자 할 경우에 어떠한 내용을 추가로 공부해야 하는지, 어떤 커뮤니티에 참여해서 활동하는 것이 바람직한 지에 대해서도 설명하고 있다.
이 책에서 아쉬운 점이라면, 후반부에 오타가 보인다는 것이다. 131페이지의 가계라던지, 136페이지 패일오픈보다는 페일오픈이 더 맞을 것 같고, 165페이지의 해석형(interpreted) 프로그래밍 이라는 용어보다는 인터프리터형 이라는 용어가 더 많이 쓰이지 않나 생각해 본다. 또한 166~167페이지에서 SQL에 관해서 설명할 때 row를 열이라고 해석하고 있는데... 행이라는 용어가 맞는 것으로 알고 있다. 다음 판에서 수정을 기대해 본다.
일부 오타가 존재하지만, 다양한 해킹기법을 파악하고 보안의 취약점을 대비하는 정보를 제공한다는 측면에서, 이 책은 해킹/침투테스트/보안을 공부하려는 사람들의 입문서로 적절하다고 생각한다.
마지막으로, 해킹을 공부하는 사람들이, 해킹의 강력한 마력에 빠져 아나킨처럼 다스베이더가 되지 않기를 바라는 마음이 간절하다. |