
해킹은 사물을 의도와 다르게 사용하는 예술입니다. 예를 들어, 소프트웨어의 평가판이 곧 만료된다면 컴퓨터의 날짜를 지난주로 바꿔서 연장할 수 있을지도 모릅니다. 그것이 해킹입니다.
해킹은 매우 광범위한 용어이기 때문에 배우는 데 '유일한 정답'은 없습니다. 그래서 이 가이드의 목적은 로드맵이라기보다 방향을 제시하는 것입니다.
추가하거나 개선해야 할 내용이 있다면 이슈를 생성해 주세요.
나는 자신의 뿌리를 아는 것이 중요하다고 믿기 때문에, 기원을 지나치게 분석하지 말고 이야기해 보겠습니다.
1960년대에 전화 네트워크는 통화를 처리하기 위해 일련의 소리를 사용했습니다. 어떤 사람들이 그 모든 것이 어떻게 작동하는지 알아내고, 네트워크에서 사용되던 2600Hz 주파수 소리를 재현하는 데 성공했습니다. 어떻게 했을까요? 시리얼에 공짜로 들어 있던 휘슬을 불어서였습니다. 이런 행위는 phreaking이라고 불렸고, 그런 사람들은 phreaks라고 불렸습니다.
프릭 중 한 명인 Denny Teresi는 인터뷰에서 이렇게 말했습니다:
"단지 전화 회사를 속이기 위한 것이 아니라 기술적 도전이었습니다. 우리가 해낼 수 있을지가 관건이었죠."
그들은 그것이 풀어내기에 매혹적인 문제였고, 풀 수 있는지 확인하고 싶었기 때문에 그렇게 했습니다. 이것이 바로 오늘날까지 이어지는 해킹 문화입니다.
약을 팔고 싶다면 약을 보관할 장소와 고객이 필요한 것을 건네줄 수 있는 것만 있으면 됩니다. 반면에 질병의 치료법을 만들고 싶다면 인체와 모든 것이 어떻게 작동하는지 알아야 합니다. 말이 되죠? 해킹도 마찬가지입니다. 무언가를 해킹하는 데 정말 능숙해지고 그럴 새로운 기술을 만들고 싶다면, 그것이 어떻게 작동하는지 이해해야 합니다.
다른 사람들에게 도움이 될 만한 정보가 있다면 소셜 미디어, 포럼, 블로그를 통해 공유하세요. 여러 면에서 도움이 될 것입니다:
호기심을 갖고, 많이 실험하고, 멋진 것들을 만드세요. 그것이 전부의 핵심이며, 모든 것이 그렇게 시작되었습니다. 다른 사람들이 개발한 기술과 도구만 사용하며 일생을 보낸다면, 이런 멋진 길을 선택한 의미가 무엇일까요?
로드맵에는 좋은 자료들과 함께 여러분이 직접 검색하고 읽어봐야 할 주제들이 포함되어 있습니다. 이것은 단순한 '단계별 가이드'나 자료 모음이 아닙니다.
자료를 읽거나 시청하면서 이해되지 않는 용어를 적어두고, 검색해서 최소 3개의 서로 다른 출처에서 배우세요. 다시 이해되지 않는 용어를 적어두고 이 과정을 계속 반복하세요. 왜 최소 3개의 출처일까요? 한 명의 창작자가 제공하는 정보는 그들이 아는 범위로 제한되기 때문입니다. 3명의 서로 다른 창작자에게서 배우면 다양한 관점에서 주제를 더 잘 이해할 수 있습니다.
이 방법론을 가이드 전체에서 '재귀적 학습(recursive learning)'이라고 부르겠습니다.
해킹에는 리버스 엔지니어링, 웹 해킹, 자동차 해킹 등 많은 분야가 있습니다. 하지만 분야와 관계없이 도움이 되는 몇 가지가 있으니 먼저 이야기해 보겠습니다.
매일 몇 시간씩 사용하게 될 기계에 대한 더 깊은 이해를 얻는 데 도움이 되며, 말로 설명하기 어려운 귀중한 관점을 얻는 데도 도움이 됩니다.
기초만 알면 된다는 점을 기억하세요. "파일을 삭제하면 어떻게 될까? 파일이 장치에 남아 있다면 공간은 어떻게 확보되지? 정말 사라진다면 복구 소프트웨어는 어떻게 복구하지?" 같은 질문을 던지며 호기심을 갖는다면 이 지식은 계속 발전할 테니까요.
자료:
인터넷(그리고 다른 네트워크)이 어떻게 작동하는지 이해하는 것은 필수적입니다. 네트워크는 어디에나 있기 때문입니다.
재귀적 학습을 시작할 주제:
IP address, MAC address, port, client & server, dns, tcp, udp, proxy, tls/ssl, vpn
자료:
프로그램을 실행하든 원격 서버에 접속하든 터미널에서 많은 시간을 보내게 될 것입니다. 어떤 운영체제를 사용해도 되지만, 모든 것을 수정할 수 있기 때문에 Linux 기반 운영체제를 추천합니다. 그것이 해킹의 본질이니까요. Ubuntu는 초보자에게 훌륭한 리눅스 배포판입니다.
특정 소프트웨어가 어떻게 작동하는지 이해하고(해킹이 쉬워짐) 해킹 및 기타 작업을 위한 자신만의 소프트웨어를 만들기 위해서입니다.
프로그래밍 언어는 많지만 Python으로 시작하는 것을 추천합니다. 쉽고 얼굴 감지기부터 웹사이트까지 거의 모든 것을 만들 수 있기 때문입니다.
시작하는 방법에 대한 글을 작성했습니다. 확인해 보세요.
대부분의 사이버 보안 관련 글에서 만나게 될 개념들이 있으며, 대부분의 분야에서 유용하게 쓰입니다.
재귀적 학습을 시작할 주제:
phishing, ddos and dos attack, website crawling, encoding and encryption, password cracking, login bruteforcing, man in the middle attack
모든 기초, 특히 기본 해킹 개념을 살펴보았다면 이미 특정 분야에 관심이 생겼을 수도 있습니다. 아직 없다면, 여기에 사이버 보안 관련 분야를 몇 가지 언급하니 눈에 띄는 분야를 검색해 보세요:
가장 관심이 가는 분야를 찾으면, 하루를 투자해 시작하는 방법과 가장 좋은 자료가 무엇인지 조사해 보세요. 다음 날에는 그냥 시작하고 배우는 것을 멈추지 마세요. 모든 것이 제자리를 찾을 것입니다.
또한, 이런 것들도 해보세요:
과장해서 말하는 건 아니지만, 하루아침에 합법적으로 부자가 될 수 있습니다.
실력이 있나요? 버그 바운티에 참여하거나 Zerodium 같은 플랫폼에 취약점을 제출하세요.
실력과 퀄리티 있는 공개 작업물이 있나요? 프리랜싱을 하거나 취업 지원을 시작하세요.
참고: 이 지침은 기술 분야에서 일하기로 마음먹은 사람들을 위한 것입니다.
학교에 다니고 있다면 과학과 수학을 잘 배우세요. 이 지식은 중요합니다. 근처 대학 입학이 어렵지 않다면 성적에 너무 신경 쓰지 마세요. 남는 시간에는 친구들과 어울리고, 운동하고, 실력을 갈고닦는 데 쓰세요. 처음 2가지는 선택이 아닙니다.
대학에 다니고 있다면 기술에 더 많은 시간을 투자해 실력을 키우세요. 시험에 통과하고 학위를 받기만 하면 됩니다. 취업할 때 성적은 전혀 중요하지 않습니다. 학창 시절에 제가 언급한 3가지를 모두 실천했다면, 이 시점에는 건강하고 사교적이며 유능한 사람이 되어 있을 것입니다. 3가지 중 하나 이상을 이미 망쳤다면 괜찮습니다. 지금 고칠 수 있으니 최대한 빨리 고치세요.
좋아요, 그 결론은 어떻게 내리게 되었나요? 최근 여러 면접에서 그런 피드백을 받았나요? 아니면 같은 분야의 '전문가' 둘이 이야기할 때 한 단어도 이해하지 못하나요?
아니면, 그냥 그렇게 느낄 뿐인가요? 그것은 종종 단지 느낌일 뿐이며, 실제로는 잘하고 있다는 지표입니다. 더닝-크루거 효과(Dunning-Kruger effect)가 이를 잘 설명합니다:
하루를 3부분으로 나누세요:
번아웃은 너무 오래 일하거나 오랫동안 같은 일을 할 때 발생합니다. 매일 새로운 것을 배우고 즐기는 시간을 가지면 번아웃을 피할 수 있습니다.
Haroon Meer의 이 강연이 이 문제를 아주 잘 다룹니다: You and your research. 이것은 Richard W. Hamming 박사가 과학도들에게 한 원래 "You and your research" 강연의 해킹 특화 버전입니다.
창의성, 자기 의심 그리고 놀라운 일 하기에 대한 제 블로그 글도 읽어보세요.
해야 할 중요한 일이 있다는 걸 알면서도 해내지 못하는 단계에 갇혀 있나요? 시작할 동기가 충분하지 않거나, 잠시 후 집중력을 잃거나, 하루 종일 아무것도 하지 않고 나중에 그것에 대해 죄책감을 느끼나요?
최소한의 일을 해냄으로써 일을 끝냈을 때의 기분이 얼마나 좋은지 마음에 알려주세요. 다음 4가지 항목으로 할 일 목록을 만드세요:
다 했나요? 좋아요, 이제 시간을 낭비해도 좋습니다. 그럴 자격이 있으니까요. 이 할 일 목록을 따르면 다음 두 가지 중 하나를 느끼게 될 것입니다:
두 번째라면 '중요한 일들'을 더 작은 작업으로 나누고 그걸로 할 일 목록을 만드세요. 다음은 박사 과정 연구 논문을 쓰고 싶어 하는 친구를 위해 만든 템플릿입니다:

첫 번째 경우처럼 일을 끝낸 후 이미 기분이 좋아지기 시작했다면, 기사 수와 팔굽혀펴기 횟수를 점차 늘리고 활동 목록을 확장하세요. 곧 중요한 일에 도전하고 싶은 마음이 들 것입니다. 앞서 말한 대로 작게 나누고 시작하세요.
기억하세요, 매일 최소 1개의 작업. 절대 0이면 안 됩니다. 그렇지 않으면 아무것도 하지 않던 처음의 상태로 되돌아가게 될 테니까요. 두려워하지 마세요. 오후 11시에 침대에 누워 밈을 보면서 하루 종일 아무것도 하지 않았다면, 팔굽혀펴기 한 번 하고 목록에서 체크하세요.
쉽죠? 지금 시작하세요.