로드맵 썸네일

가볍게 시작하는 취미로 해킹

장용하

모의해킹
리버싱
시스템 해킹
입문 강의 아이콘

입문 대상

9개 강의

로드맵 참여중인 유저 프로필 사진
로드맵 참여중인 유저 프로필 사진

1,202명 참여중

로드맵 코스

여러분은 해킹이 무엇이라고 생각하시나요?

 

관련하여, 이야기를 하나 들려드리겠습니다.

 

 

개발자가 생각한 프로그램

 
  
 
 
 
 

실제 완성된 프로그램

 
 
 
 
 
 

버  그

소프트웨어의 버그는 평생 개발자를 따라다니며 괴롭힙니다. 그리고 시간이 흐르면 한 가지를 깨닫게 됩니다. 무슨 짓을 해도 버그로부터 도망칠 수 없다는 사실을 말입니다.

버그 때문에 막혀버리면 "왜 안 되지???"를 고민하고, 반대로 잘 되더라도 "이게 왜 되지???"를 심각하게 고민하며 오늘도 개발자는 버그와의 인연을 이어가고 있습니다. 이러한 현상은 컴퓨터 역사가 시작된 이래로 바뀐 적이 없으며 미래에도 계속될 것입니다.

안타깝게도 운명입니다. 개발자가 아무리 똑똑해도, 개발사가 아무리 탄탄해도 다 소용없습니다. 사람이 하는 일이라면 완벽에 가까울 수는 있어도 완벽이란 있을 수 없기 때문입니다. 그러므로 버그는 일정 비율로 꾸준히 발생할 수밖에 없는데 이는 자연스러운 현상입니다.
 
 
 
 
 

보스급 버그

이러한 버그에는 급(Level, 수준)이 존재합니다. 이중에는 보스급 버그도 있는데, 우리는 이것을 "보안 취약점(이하 취약점)"이라고 부릅니다. 이것은 악성 행위를 촉발할 수 있으며, 이 때문에 누군가는 정신적/물리적/금전적 피해를 입을 수도 있습니다.

현대 사회에서 취약점으로 인한 피해는 단순히 개인정보 유출 수준이 아닙니다. 차량이 오작동하고, 의료 사고를 일으키며, 전력 공급과 공장 가동이 중단될 수 있습니다.

프로그램 출시 후, 2~3년 동안 아무도 모르게 잠복해있는 취약점은 무수히 많습니다. 9년 동안 알려지지 않았던 취약점(Dirty cow)도 있었고, 37년 만에 해결된 취약점(오픈 BSD head 버그)도 있었습니다.

현재도 확인된 지 20년 된 취약점(MS 로그인 취약점 이슈)이지만 개발사에서도 방치하는 취약점도 있습니다. 그런데 그 개발사가 윈도우를 개발한 마이크로소프트라면 어떤 생각이 드시나요? 과연 십만 명이 넘는 직원 중 이 문제를 해결할 수 있는 인원이 단 한 명도 없어서 그랬을까요?

결론적으로, 아무리 뛰어나도 세상 모든 취약점에 대처할 수는 없습니다. 취약점의 존재 여부를 미리 알 수 없거니와, 식별하더라도 이에 대응하고 관리하는 것은 또 다른 영역이기 때문입니다.
 
 
 
 
 

디지털 오일

근미래에 고갈될 예정이라던 원유는 세계적으로 점점 더 그 매장량이 증가하고 있습니다. 얼마 전 미국에서는 텍사스에서 대규모 유전을 발견하였는데, 이에 따라 미국이 곧 미국을 침공할 예정이라는 유머가 돌 정도였습니다.

관련하여 취약점은 원유와 닮은 면이 있습니다. 세계 원유 매장량이 점점 증가하듯, 취약점 보고 횟수도 증가하고 있기 때문입니다. 위 자료는 연도별 취약점 보고 개수인데, 17년에 약 2만여 개가 발견되었고, 18, 19년에는 각각 2만 2천 개가량이 발견된 것으로 보고되는 등 꾸준히 증가 추세에 있습니다.

발견 시 정제하여 판매하면 돈이 된다는 점도 닮았습니다. 세계의 다양한 플랫폼에서, 취약점은 등급에 따라 적게는 수십 달러에서부터, 많게는 건당 200만 달러까지 그 가치가 평가되고 있습니다.

또한 원유 매장량이 증가하는 일반적인 경우는 3가지가 있는데, 이는 취약점에도 그대로 적용됩니다.

첫 번째는, 새 유전을 발견하는 경우입니다.
  → 알려진 취약점이 묻은 채로 개발된, 새 프로그램을 발견하는 경우입니다. 프로그램은 컴퓨터 언어를 하루만 교육받더라도 특별한 제약 없이 개발할 수 있는 특징이 있습니다. 하지만 매년 꾸준히 쏟아지는 취약점에 대한 대책을 프로그램 개발 시 모두 반영하는 것은 현실적으로 불가능합니다.

두 번째는, 기술의 발전으로 기존의 유전에서 생산량이 향상되는 경우입니다.
  → 해킹 기술의 발전으로 기존의 프로그램에서 새로운 취약점을 발견하는 경우입니다. 너무나 안정적이어서 패치가 필요 없다고 생각되던 프로그램에서도 취약점이 발견되는 사례는 적지 않습니다.

마지막은, 기술의 발전으로 원유를 채굴할 수 있는 자원(물질)의 범위가 확대되는 경우입니다.
  → 해킹 기술이 발전함에 따라 취약점을 발견할 수 있는 자원(프로그램)의 범위가 확대되는 경우입니다. 이는 "그런 (사소해 보이는) 곳에서도 취약점이 발견된다고?"라고 생각될 수 있는 영역입니다.

하지만 다른 부분도 존재합니다. 원유 탐사 및 채굴은 조직적인 규모로 접근해야 하는 반면, 취약점 발견의 경우, 첨단 IT 기술을 기반으로 긱(gig) 경제가 확대됨에 따라 개인으로도 활동할 수 있는 환경이 점점 확대되고 있다는 점입니다.
 
 
 
 
 

그러면,

Q. 그러면, 취약점 발견은 어떻게 할 수 있을까요?
A. 취약점 발견을 위한 장비(툴)가 필요하며 관련 능력을 계발해야 합니다.

하지만 장비와 능력을 따로 떨어뜨려 생각할 필요는 없습니다. 실제와 유사한 가상 환경에서 취약점을 발견하는 트레이닝을 진행하면서 툴을 사용해보고 관련 능력도 기를 수 있습니다.

하지만 이를 위한 자료가 부족한 것이 현실입니다. 기초부터 튼튼하게 해야 한다고 말하는 각종 교육에서는, "C 언어 등을 먼저 시작해야 한다."고 이야기하면서 목표의 주변을 지속 맴돌게 합니다. 이는 시간이 지날수록 진이 빠지는 접근 방식이며, 목적지까지 시간이 많이 소요되므로 적합성을 판단하는데 매우 불리합니다. 막상 해봤는데 성향과 맞지 않으면 기회비용에 따른 실망감도 클 것입니다.

기초라고 언급되는 것들은 대부분 허상입니다. 사람들은 자기가 아는 것은 "기초이며 상식"이라고 말하며 모르는 것은 화를 내며 숨기거나 "잘못된 것"이라고 말합니다. 단순히 익숙하지 않을 뿐이지만 그렇게 하는 것이 아니라고 자신 있게 주장합니다.

그러나 실제로 어디부터 시작해야 한다는 정해진 순서 같은 것은 없습니다. 무엇부터 시작하더라도 어차피 모르는 것은 끊임없이 눈앞에 나타날 것입니다. 때로는 순서가 바뀌었다는 생각이 들 수도 있습니다. 하지만 그것이 틀렸다는 것을 의미하는 것은 아닙니다. 주변을 맴돌며 힘을 빼는 것보다는 어떻게든 유리하기 때문입니다.

그러므로 더는 교육 커리큘럼에 목메시지 않기를 희망합니다. 순서가 바뀌었다면 순서가 바뀐 대로도 의미가 있고, 어렵다면 그중에서도 할 수 있는 부분이 분명 있습니다. 중요한 점은, 넘을 수 없는 벽을 만났을 때의 마음가짐입니다. 지금 할 수 없는 것은 어쩔 수 없지만, 앞으로도 불가능할 것인지는 지금의 마음에 달려 있습니다.

우리는 지금까지, 이런 저런 이유로 불가능하다는 생각에 대해 너무 관대했습니다. 그러나 시간이 지나고 생각해보면, 많은 경우 변명일 뿐이었다는 사실을 스스로는 알고 있습니다. 이제 더 이상은 안 되는 이유들을 찾아가며 스스로를 괴롭히지 않으시길 희망합니다. "안타만 꾸준히 쳐도 결국 승리한다."는 말이 있듯이, 수용하는 자세로 임하다 보면 어느 날 길은 열릴 것입니다. 그렇게 결국 이루어낼 것입니다. 이 여정을 함께하시지 않겠습니까?

관련하여, "취미로 해킹" 시리즈는 취약점 발견 트레이닝 목적으로 제작된 콘텐츠입니다. 가상 환경을 기반으로, 툴 사용법 및 관련 능력을 폭넓게 계발하는 것에 도움이 되도록 구성하였습니다. 취약점 발견의 첫걸음을 떼실 수 있으며, 현재 가용한 콘텐츠는 아래와 같습니다.
 
※ 참고 사항
1. 상호 연관성 고려 시, "권장" 순서는 취미로 해킹 #2 → #1 → #3 → #4 → #5 입니다.
2. 카페에는 정기적으로 상기 콘텐츠 관련된 학습 보조 자료가 제공됩니다.
3. 심화된 프로그래밍 능력이 필요하신 경우, "생활코딩! 파이썬(링크)"을 추천드립니다.
 

로드맵 코스

로드맵에 포함된 강의 썸네일
정보보안 및 개인정보보호 특강
정보보안 및 개인정보보호 역량 강화에 도움이 될 수 있는 무료 특강입니다. 기업 내 수많은 서버들이 어떻게 일시에 랜섬웨어에 감염되었고 결국 법인 매각까지 하게 되었었는지, 적이 군 내부망에 어떻게 침투하여 기밀을 탈취했는지, 간단하지만 준수하지 않아 최대 수천만 원의 행정처분을 받아야 했던 사례들, 그리고 이런 스캔들을 예방하려면 어떻게 해야하는지에 대한 내용을 담았습니다.

무료

로드맵에 포함된 강의 썸네일
취미로 해킹#2(해커의 컴퓨팅)
이번 "취미로 해킹#2"에서는 해커가 컴퓨터 사용간 행하는 몇 가지 기술적 방식과, 지금 당장 해킹할 수 있는 방법 및 이에 대한 방어책을 담는 것에 중점을 두었습니다.
 
알지 못했던 현상을 이해하고 사용하게 됨으로써, 일상의 크고 작은 부분에서 청량감을 느낄 수 있으실 것입니다. 사이버 공간에서 이전보다 많은 자유를 누리시게 될 것입니다.
 
해커의 입장에서 접근하였으며, 관심이 없다면 전공자 및 관련 업계 종사자도 모를 법한 내용들도 포함되어있습니다.

33,000

로드맵에 포함된 강의 썸네일
취미로 해킹#1(OverTheWire - Bandit)
해킹의 매력을 경험해보세요. 검은 화면에서 알 수 없는 linux 명령어들을 입력하는 사람을 보고 매력을 느낀 적은 있지만, 어디서부터 어떻게 해야 할지 몰라 막연한 마음이었다면 이 강좌를 통해 도움을 받으실 수 있습니다. 리눅스의 기초 명령어 몇 가지만 미리 학습해오시면 그 다음은 제가 알려 드리겠습니다. 

자체 제작 및 출간한 교재를 활용하여, 리눅스 시스템을 대상으로 33번의 권한 탈취를 함께 실습해 봄으로써 검은 화면의 매력을 경험하실 수 있습니다.

33,000

로드맵에 포함된 강의 썸네일
취미로 해킹#3(WebGoat)
웹 해킹의 클래식 워게임인 WebGoat 콘텐츠를 다루며, 처음부터 끝까지 모든 레슨과 챌린지를 완역 및 풀이하였습니다.

SQL Injection, XXE, 인증 우회, JWT, XSS, IDOR, 접근통제, 역직렬화, CSRF, 취약 컴포넌트, 패스워드 초기화, HTML 템퍼링 등에 관한 이론과 실습이 포함되어 있습니다.

실습 환경 구축부터 시작하여 챌린지 풀이에 필요한 모든 툴과 데이터도 제공합니다.

55,000

로드맵에 포함된 강의 썸네일
취미로 해킹#4(Nebula)
시스템 해킹 기술을 학습할 수 있는 워게임인 Nebula를 공략하며, 처음부터 끝까지 실습 환경 구축을 포함하여 모든 챌린지를 클리어 하게됩니다. 

이 과정에서, 정규표현식, 고아 프로세스, 라이브러리 탐색 순서 9가지 등 각 챌린지에서 요구되는 컴퓨팅 지식도 습득할 수 있습니다.

33,000

로드맵에 포함된 강의 썸네일
취미로 해킹#5(DIMICTF)
해킹 대회의 참가 방법을 잘 모르거나, 참가하더라도 피드백이 없기에 배우는 게 없다는 생각이 들거나, 풀이 방법을 운 좋게 획득하더라도 생소한 외국어나 불친절한 내용으로 인하여 흥미가 떨어졌었다면 이 강좌가 도움이 되어 드리겠습니다.

55,000

로드맵 코스 9