먼저 웹해킹입니다. 웹해킹은 리버싱, 포너블에 비해 진입장벽이 낮습니다. 입문하기 위한 진입장벽이 낮을뿐이지 분야 자체가 쉽다는건 아닙니다. 아무런 베이스가 없으신 분들은 먼저 생활코딩에서 html, css, js, php, mysql이 5가지 언어를 배우시고 로그인, 회원가입, 글쓰기 기능이 있는 간단한 게시판 사이트를 만들어보시고 웹해킹에 입문하시는걸 추천드립니다. 웹해킹은 개발지식이 실력에 비례되는 분야입니다. 따라서 웹사이트를 많이 만들어보시는것을 추천합니다.
웹개발 베이스가 잡혀있다면
드림핵(https://dreamhack.io) 에 가셔서 웹해킹 기초 기법들을 습득하시고 강의에 나온 기법들을 사용하는 워게임 문제들을 풀어보세요. 드림핵은 티오리에서 만든 보안 교육 플랫폼으로 최근에 생겼습니다. 웹해킹 외에도 리버싱, 포너블, 암호학까지 커리큘럼이 짜여있고 질좋은 워게임 문제들도 많으며 CTF도 개최하니까 입문자분들 뿐만 아니라 중, 상급자 분들께도 강력추천하는 플랫폼입니다.
웹케알(https://webhacking.kr) 드림핵으로 어느정도 기초가 다져지셨으면 웹케알 워게임을 풀어보시는것을 추천합니다. sql injection과 같은 대중적인 기법들 외에도 다양한 기법들을 접할 수 있습니다. 이 워게임을 대부분 푸셨다면 웹해킹을 앞으로 어떻게 공부해나갈것인지 감이 잡히실겁니다.
LOS(https://los.rubiya.kr/) SQL Injection의 다양한 형태들을 실습할 수 있는 워게임입니다. SQL Injection밖에 다루지 않는다는점이 단점이지만 해킹을 할때 필수적으로 필요한 창의력, 사고력을 기를 수 있습니다.
웹 해킹 & 보안 완벽 가이드(https://yes24.com/Product/Goods/14275829) 웹해킹 책으로는 이 책이 유명합니다. 웹해킹을 주 분야로 하시는 제 지인도 이 책을 감명깊게 보셨다고 합니다. 한번 읽어보는것을 추천합니다.
다음은 포너블입니다. 포너블은 제가 웹해킹을 조금 하다가 눈을 돌려서 현재 주력으로 공부하고 있는 분야입니다.
포너블을 입문하기 위해서는 C언어 활용 능력과 약간의 어셈블리어 해석능력, 약간의 리버싱 지식이 선행되어야 원활하게 진행하실 수 있습니다. 파이썬은 반필수입니다. 파이썬을 제대로 공부하지 않더라도 pwntools라는 모듈만 활용할 수 있으면 포너블 공부에 지장은 없습니다. 저도 파이썬은 제대로 공부하지 않고 기초적인 if문, for문 들여쓰기 이런것들만 흩어보고 필요한 기능들은 그때그때 찾아보는 편입니다. 앞에서 언급한 베이스 지식이 없으신 분들께는 포너블 입문을 추천하지 않습니다.
베이스 지식이 있으시면
드림핵(https://dreamhack.io) 마찬가지로 드림핵을 추천합니다. 드림핵이 해킹 입문하기 가장 좋은 사이트라고 말하고 싶습니다. 다양한 분야가 있지만 포너블 중점적인것 같습니다. 커리큘럼도 포너블이 다른 분야에 비하여 자세하고 알차게 짜여져있고 워게임 문제들도 포너블의 비중이 높습니다. 웹해킹 문제도 포너블만큼 많긴 합니다.
라젠카(https://lazenca.net) 매우 훌륭한 사이트입니다. 왼쪽에 보시면 메뉴가 있는데 TechNode탭을 펼쳐보시면 강의가 쫘라락 나옵니다. 드림핵 커리큘럼에서 나오지 않은 많은 기법들이 소개되고 있고 한글화까지 되어있습니다.
HackCTF(https://ctf.j0n9hyun.xyz/) 포너블 문제가 매우 많습니다. 한국 워게임 사이트입니다. 이곳에서 다양한 유형의 문제들을 연습할 수 있습니다. 개인적으로는 입문자에게 매우 좋은 워게임 사이트라고 생각됩니다. 어려운 난이도의 문제도 존재하지만 쉬운 난이도의 문제도 많기 때문입니다.
사실 포너블 관련 워게임 사이트를 구글링해보면 pwnable.kr이나 pwnable.tw같은 사이트들을 많이 추천합니다. 하지만 저는 입문자에게 이 워게임 사이트들을 추천하지 않습니다. 처음 한두문제 빼고는 어느정도 포너블 관련 경험이 있으신분들 위주의 문제입니다. 따라서 입문자 분들이 푸시기에는 적절하지 않습니다. 처음 포너블을 입문하시면 위에서 말했다시피 드림핵에서 포너블 강좌를 보시고 해당 강좌 내용을 실습할 수 있는 워게임 문제를 푸시면서 입문을 하시면 됩니다.
또 포너블 입문 관련해서 구글링을 해보시면 해커스쿨 LOB나 FTZ얘기가 많이 나옵니다. 하지만 저는 개인적으로 해커스쿨은 한물 갔다고 생각합니다. 저 또한 해커스쿨의 LOB나 FTZ를 거치지 않았습니다. 개인적인 생각으로는 드림핵 포너블 커리큘럼이 훨씬 낫다고 생각합니다.
마지막으로 리버싱입니다. 포너블과 마찬가지로 리버싱을 입문하기 위해서는 C언어 활용능력이 요구됩니다. 파이썬은 알아두면 편하지만 몰라도 입문하는데 큰 어려움은 없습니다. 중간에 하다가 필요하다 싶을때 찾아보시면 됩니다. 어셈블리어는 mov, push, pop과 같은 기본적인 명령어 개념만 흩어보시고 나머지는 분석하면서 습득하셔도 무방합니다.
리버싱은 드림핵보다는 책을 추천합니다. 리버싱의 정석이라고 불리는 유명한 책들이 몇개 있습니다.
리버싱 입문(http://yes24.com/Product/Goods/27628413) 처음 입문하실경우 이 책을 추천합니다. 리버싱의 기초를 잡고가기에 좋은 입문서입니다.
리버싱 핵심 원리(http://yes24.com/Product/Goods/7529742) 흔히 나뭇잎책이라 불리는 유명한 책입니다. 리버싱 입문 관련해서 질문하면 거의 대부분 이 책을 추천받습니다. 리버싱의 기초가 잡히셨다면 이 책을 정독하시는것을 추천드립니다.
리버스 엔지니어링 바이블(http://yes24.com/Product/Goods/15150824) 사실 나뭇잎책까지 보시고 내용을 익히셨으면 리버싱을 어떻게 공부해야하는지 감이 오셨을겁니다. 그래도 이 책을 통해 더욱 실력자로 성장하실 수 있습니다. 지식 얻어서 나쁠건 없으니 한번 보시는것을 추천드립니다.
코드엔진(https://codeengn.com/) 앞에서 소개한 책을 보고 실습해보면서 어느정도 베이스가 다져지면 워게임 문제들을 풀어보면서 경험과 실력을 늘려보세요. 코드엔진에는 난이도별로 다양한 문제들이 분포하고 있습니다.
립케알(http://reversing.kr/) 후반부로 갈수록 어려워지는 워게임 사이트입니다. 실력을 갈고닦기 매우 좋습니다.
CTF일정은 아래 사이트에서 보실 수 있습니다.