드림핵 수강 후기: 개발자가 3개월 만에 POC CTF 5위 한 공부 비결
대부분의 개발자는 해킹을 보안팀의 영역이라고 생각하죠.
“이미 개발 잘 하고 있는데, 보안은 다른 영역 아닐까?”
“바쁜 업무 중에 시간 내서 다른 공부를 할 수 있을까?”
하지만 이번 인터뷰의 주인공은 정반대의 이야기를 들려줍니다.
개발 경험이 있다면 해킹 공부는 오히려 더 빠르고 효과적일 수 있다고 말이죠.
본격적으로 해킹 공부를 시작한 지 3개월도 안 돼서, POC CTF 본선에서 5위를 차지한 티오리한국 arat의 이야기를 통해, 개발자가 해킹을 배우면 어떤 이점이 있는지 확인해 보세요!
고객과의 소통을 위해 해킹을 배우다
간단한 자기소개 부탁드려요.
안녕하세요. 티오리한국에서 AI 해커 Xint의 Solution Architect로 일하고 있는 arat 이정빈입니다. 드림핵과 CTF에서는 Tara라는 닉네임으로 활동하고 있어요.
Web3 보안 컨설팅을 하는 ChainLight 팀과 Xint 팀에서 웹 개발 업무를 하다가, 현재는 Xint 도입을 설계·제안하고, 도입 과정에서 생기는 기술적인 이슈를 함께 고민하며 고객사와 프로덕트 팀 사이를 연결하는 업무를 하고 있어요.
개발은 어떻게 시작했나요?
2022년 7월에 부트 캠프에서 처음 개발을 배우기 시작했어요. 대부분의 프로젝트 요구사항이 Linux/Unix 환경에서 C, C++ 언어로 개발하는 것이었어요. 라이브러리 함수 대신 시스템 콜을 사용하거나, 직접 구현해서 쓰는 등 라이브러리 의존도를 최소화한 시스템 프로그래밍 프로젝트를 주로 진행했습니다.
예를 들면 printf 같은 함수를 직접 구현하거나, 셸(Shell)을 만들어 보고, 라이브러리 함수들을 어셈블리어로 구현해 보기도 했어요. 자연스럽게 시스템 개발 쪽 경험을 많이 쌓았습니다.
이후에는 직접 웹 개발을 공부해 평소 만들어보고 싶었던 게임 관련 정보 제공 사이트를 직접 만들고 운영했어요. MAU 10만 정도까지 성장했고, 지금도 꾸준히 운영되고 있어요.
이 경험을 계기로 제품을 만드는 일에 재미를 느끼게 되었고, 티오리에 합류하게 되었습니다.
그러면, 해킹 공부는 어떻게 시작했나요?
처음 해킹을 시작한 이유는 단순했어요. 보안 회사에 다니고 있고, 회사에서 운영하는 보안 교육 플랫폼도 있으니, 한번 해볼까? 하는 호기심이었죠.
본격적으로 해킹을 공부한 건 Solution Architect로 일하게 된 이후예요.
고객사 특성에 맞춰 Xint 도입을 설계·제안하면서 정보보호팀, 레드팀, 펜테스터 등 다양한 분들과 소통하다 보니 그분들이 실제로 어떻게 생각하고 요구하는지를 제가 직접 이해할 필요가 있다고 느꼈어요.
직접 해킹을 해봐야 그들의 언어로 이야기할 수 있겠다는 생각이 들어서 해킹 공부를 시작했어요. 실제로 업무에도 많이 도움되고 있어요.
개발자가 해킹을 배우면 좋은 이유
개발과 해킹은 어떤 차이가 있나요?
개발은 어떻게 하면 서비스를 잘 만들고, 안정적으로 돌아가게 할까를 고민하는 일이라면, 해킹은 이 서비스가 어디에서 무너질 수 있을까를 찾는 일이라고 생각해요.
개발자는 요구사항을 만족하는 정상적인 플로우를 설계하지만 해커는 그 정상 플로우에서 벗어나는 비정상적인 플로우를 상상하고 실험하는 것이죠.
공부하는 방식도 차이가 있었는데요.
개발은 서비스를 취약하게 만들지 않게 Best Practice 위주로 공부했다면,
해킹은 개발자가 Best Practice를 지키지 않았을 때, 어떤 공격을 할 수 있고, 어떤 영향이 발생할지 중심으로 공부했어요.
개발자가 해킹을 공부하면 이점이 있나요?
개발 경험이 해킹 공부에 도움을 주는 경우도 있고, 해킹 공부가 개발에 도움을 주는 경우도 있어요.
우선 개발 경험이 있을 때, 해킹을 공부하면,
해킹 공부를 더 수월하게 할 수 있어요.
개발과 해킹 모두 서비스, 프레임워크, 언어에 대한 이해가 필요해요. 개발자로서 기존 팀원이 개발한 서비스나 코드를 보고 이해하며 유지 보수하던 경험이 해킹 공부할 때 처음 보는 코드를 파악하는 데에 큰 도움이 되었어요. 또, 다양한 프레임워크와 언어를 경험해 본 것이 다양한 공격 기법을 떠올리는 데에도 큰 도움이 되었습니다.디버깅 경험이 취약점을 발견하는 데에 도움이 돼요.
개발을 하며 이슈를 디버깅하는 과정이 해킹과 크게 다르지 않다고 느꼈어요. 결국 문제가 일어날 만한 지점을 찾는 방식은 똑같아요. 개발자는 이미 발생한 문제의 원인을 분석하고, 해킹할 때는 문제를 일으킬 수 있는 지점을 찾는 것이죠.
블랙박스 문제(코드가 안 보이는 문제)를 풀 때도 개발자라면 이 기능을 어떻게 구현했을까 상상할 수 있어서 더 유리하다고 생각해요. 이미 비슷한 기능을 구현해 본 경험이 있으니까요.
반대로, 해킹 공부가 개발할 때 주는 이점은 더 안전한 코드를 작성할 수 있어요.
개발을 공부할 때는 Best Practice 위주로 공부하다 보니, 막상 제대로 작성하지 않았을 때는 어떤 부분이 취약해지는지, 어떤 영향이 있을지 잘 몰랐어요. 바쁠 때는 ‘이 정도는 안 지켜도 괜찮지 않을까?’ 같은 생각을 하기도 했고, 실제로 지키지 않은 경우도 있었죠.
지금은 아무리 바쁘더라도 꼭 지켜야 하는 것들을 알게 되어서, 더 안전한 서비스를 개발할 수 있게 되었어요. 해킹 공부를 하면서 과거에 진행했던 토이 프로젝트에서 제가 작성한 코드가 취약했다는 사실도 뒤늦게 알게 됐어요. (다행히 실제로 운영하는 서비스는 아니었어요.)
드림핵으로 시작한 해킹 공부 루틴
여러 학습 플랫폼 중 드림핵을 선택한 이유는 무엇이었나요?
회사에서 모의해킹을 하시는 분들도 드림핵으로 공부했다고 하는 분들이 많았어요. 자연스레 처음 보안 공부를 시작할 때부터 드림핵이 기본 선택지가 되었던 것 같아요.
드림핵에서 어떤 방식으로 공부했나요?
일단 개발 지식, 특히 시스템 개발 지식이 있어서 Wargame(워게임: 실습 문제)부터 먼저 풀었어요. 그러다 막히는 지점이 나오면 그때 관련 강의를 보며 이론을 채우는 형식으로 공부했습니다.
처음 입문했을 때는 분야를 가리지 않고 새싹 문제들을 모두 풀며 기초를 다졌어요. 해킹 문제는 이런 느낌이구나, 어떻게 풀어야 하는구나 하는 감을 잡을 수 있었죠.
본격적으로 해킹 공부를 하면서 7, 8레벨처럼 고레벨 워게임에도 도전했어요. 지금은 웹 모의해킹 제품인 Xint와 관련된 일을 하다 보니 심심할 때마다 웹 해킹 문제도 풀곤 합니다.
실력 향상에 가장 큰 도움이 된 콘텐츠는 무엇인가요?
워게임과 CTF라고 생각해요. 물론 모르는 지식을 익힐 때 강의를 수강하는 것도 좋지만, 수능 준비할 때 문제집을 풀며 연습하다 모의고사를 보는 것처럼 워게임으로 여러 취약점과 공격 기법을 익히고 매달 열리는 드림핵 CTF로 꾸준히 대회 환경에서 공부한 경험 역시 도움이 되었어요. 물론 저는 티오리 소속이기 때문에 상품은 받지 못하지만요.(웃음)
특히 LINE CTF에서 Yare yare라는 문제가 나왔는데요. 의사난수 예측, PHP 서버 취약점, 로직 버그가 결합된 문제였어요. 드림핵에서 의사 난수 예측 문제와 PHP 서버 취약점 문제를 풀어본 경험 덕분에 대회에서도 문제에 알맞은 공격 기법을 바로 떠올릴 수 있었습니다.
기존에 가지고 있던 개발 지식과 드림핵에서 익힌 해킹 감각이 대회에서 자연스럽게 연결되는 경험이었어요.
3개월 만에 POC CTF 본선 5위 달성
POC CTF 5위 축하드려요! 대회는 어떠셨나요?
기존에 해킹 대회를 많이 참여하진 않았어요. LINE CTF, 일렉콘, 그리고 이번 POC CTF에 참여했는데, 제한된 시간 안에 새로운 문제를 빨리 이해하고 해결해야 한다는 압박감이 워게임 풀 때와 가장 다르고 어렵게 느껴졌어요.
특히 웹 해킹 문제가 전부 블랙박스여서 더 당황스러웠어요.
저는 화이트박스(코드가 공개되어 있는 문제) 웹 해킹에 자신있고, 블랙박스는 경험이 거의 없었거든요. 웹 문제를 2개밖에 못 풀었지만 다른 분야에서 점수를 얻어 개인전 5위라는 결과를 얻을 수 있었습니다!
사실 예선도 49등으로 간신히 통과했기 때문에 큰 기대 없이 경험을 쌓자는 마음으로 참가했는데 좋은 결과를 얻어서 많이 놀랐어요. 그동안 드림핵으로 공부했던 시간이 결실을 맺은 것 같아서 뿌듯하기도 했습니다.
단기간에 좋은 성과를 낼 수 있었던 비결은 무엇인가요?
시스템 프로그래밍과 웹 개발 경험이 해킹을 이해하는 데 큰 도움이 되었어요.
사실 시스템 해킹과 시스템 프로그래밍에서 필요한 지식은 거의 비슷하거든요. 덕분에 포너블이나 리버싱 문제를 풀 때 C, C++, 어셈블리어 같은 언어를 읽는 것도 어렵지 않았어요.
웹 개발 경험 역시 다양한 언어와 프레임워크를 사용해 본 경험이 웹 해킹을 이해하는 데 많은 도움이 되었습니다.
해킹 공부를 시작하려는 개발자분들에게
보안 공부가 거창하게, 어렵게 느껴질 수 있지만,
위에서 얘기한 것처럼 이미 언어나 프레임워크에 익숙한 개발자라면 훨씬 더 빠르게 적응할 수 있을 거예요.
드림핵으로 시작한다면 체계적인 강의와 다양한 난이도의 문제가 준비되어 있으니, 개발 경험을 해킹 실력으로 자연스럽게 연결할 수 있을 겁니다.
개발자 Arat의 이야기는 개발 지식이 해킹 공부에 큰 강점이 될 수 있음을 보여줍니다. 본격적으로 해킹 공부를 시작한 지 3개월도 안 돼 국제 해킹 대회에서 5위를 차지한 그의 비결은 개발 경험을 바탕으로 한 꾸준한 연습이었어요.
모두가 다 다른 출발선에서 시작하죠.
하지만 개발 경험이 있다면 더 빠르고 효과적으로 시작할 수 있습니다.
개발 지식에 해킹 실력을 더하고 싶다면?
남들보다 수월하게 해커로 성장하고 싶다면?