본 포스팅은 구글 프로젝트 제로의 멤버인 Ivan Fratric이 'So you want to work in security?'라는 제목으로 정보보안 직종에 종사하고 싶은 후배들에게 조언한 블로그 포스팅을 번역한 포스팅입니다.


번역 상에 오역이 있을 수 있으므로, 원문도 같이 첨부합니다.


원문 링크 : http://ifsec.blogspot.kr/2018/02/so-you-want-to-work-in-security-and-for.html?m=1


그래서 보안쪽 일을 하고 싶다고?


많은 사람들(내 구글 직장동료인 Parisa와 Michal을 포함해서)이 이미 이 주제에 대해 좋은 포스팅들을 많이 썻고 나도 그 포스팅들을 읽어보는 것을 추천한다. 내생각에는 내가 이제부터 할 말들은 걔내들이 이미 말한것들과 많이 겹치겠지만, 사람들이 이러한 주제로 나한태 물어볼때마다 채팅으로 치고, 앞서 말한 사람들의 포스팅들 링크를 던져주는 것 보다는 내가 직접 내 의견을 담은 내 포스팅을 쓰는게 낫다고 생각해서 쓰게 되었다.


일단, 나는 응용 보안을 하고, 취약점 연구부터 보안 리뷰, 버그헌팅, 해킹 등 너가 perspective라고 부르는 것들을 한다. 그리고 이쪽 보안바닥에 다른 커리어도 있는데, 보안개발이나 악성코드 분석, 인프라 보안과 기타 내가 잘 모르는 분야들, 내가 잘 몰라서 조언해주기 어려운 분야들도 있다.


그래서 내가 누구이고, 너가 내가 하는말을 왜 믿어야하냐? 음, 일단 나는 너가 내 말을 무조건 믿어야한다고 생각하지 않는다. 왜냐면 각각의 사람들은 각각의 경험이 있고 각각의 사람들이 걸어온 길은 다 다르니깐. 하지만 아마 너가 이쪽에 관심이 있을수 있으니 설명하자면, 나는 지금 구글 프로젝트 제로의 멤버이고, 구글 보안팀에서 일했었다. 그리고 너가 아마 이 블로그의 옛날 글들을 잘 뒤적거렸을 경우 발견할 수 있는 몇개의 보안툴들을 직접 만들었다.(근데 좀 업데이트가 안되서, 확인해보려면 GPZ 블로그의 가장 최신 포스팅을 봐라.) 그러면 너는 내가 10년넘개 보안관련 일들을 했다는것을 알 수 있을거다.


근데  나는 원래 이쪽바닥이랑은 좀 다른 전공지식을 갖고있는데, 내가 아는 보안하는 인간들은 정말 다양한 전공 출신이다. 예를 들어 나는 다양하게 학술적 기반을 갖고 있다.(전산학 박사, 그리고 대학에서 오랜기간 일했다) 하지만 내가 전산학 박사를 땃다는 것은 내가 같이 일하는 동료들 사이에서는 좀 특이한 케이스이고, 보안을 하기 위해서 이러한 조건이 필요한 것도 아니다. 이건 물론 학위를 따지 말라는 소리는 아니며, 내 전산학 지식이 나중에 내 기술 기반을 쌓아올리는데 많은 도움이 됬다고도 생각한다. 하지만 너가 이미 선택했거나 가지고 있는 학벌과는 관계없이, 이 보안 바닥에 종사하는 사람들이 공통적으로 가지고 있는 특징이 있는데, 이 특징에서 내가 주는 첫번째 팁이 있다.


너만의 일을 해라

내가 이쪽 바닥에서 알고있는 대부분의 사람들은, 보안은 일이기 이전에 취미로 시작했다. 당연히 너가 보안에 갓 입문하려고 할때, 너한태 어떻게 입문하는지도 알려주지 않고 "너 만의 일을 해라"라고 말하는건 별로 도움이 안되겠지. 계속 읽어봐라, 왜냐면 나중에 답이 나오니까. 하지만 명심해라(너를 기죽일려고하는게 아니라, 나중에 대처법도 알려줄거다)



지금을 보지마라, 하지만 10년전에 입문하는건 지금 입문하는 것 보다 훨신 어려웠다.


모든 사람들이 인정하진 않겠지만, 보안은 시간이 지날수록 매우 크게 발달되었다. 물론, 니가 적당히 잘 파보면 10년전의 기술이 여전히 동작하는 하드웨어와 소프트웨어들을 찾을 수 있을것이다. 하지만 예를들어 웹브라우저를 봐라. 내가 맨 처음 윈도우 익스플로잇을(힙 오버플로) 했을때, 마이크로소프트가 Safe Unlinking 기술을 도입해서 잘 알려진 힙 익스플로잇 테크닉들을 막아버렸을때 기죽었었다. 10년 뒤에 브라우저에서 익스를 하는 사람은 Safe Unlinking과 스택 쿠키 뿐만 아니라, SafeSEH/SEHOP, DEP, ASLR, CFG, ACG와 샌드박스 등에 대해 잘 알고 그걸 우회해야 한다. 그리고 이런것은 웹 브라우저에만 적용되는 것이 아니다. 만약에 너가 10년전의 웹 어플리케이션 프레임워크와 지금의 것과 비교를 한다면 보안 부분에서 매우 큰 차이가 있다는 것을 알 것이다.


겁내지마라, 윗 단락에서 나온 단어들은 너에게 아무런 의미가 없다(아직까진)


그래서 어떻게 저렇게 빨리 발전하는 방어기법들과 싸울것인가?


학습자료들을 이용해라


일반적으로 진입장벽이 계속 높아지고 있지만, 팩트는 공부할 자료들도 이전보다 매우 많아졌다는 것이다.


그렇다고 안심할 순 없는게, 너가 나가서 스스로 공부할 수 있는 능력이 있어야 한다. 그 누구도 너의 손을 잡고 하나하나 알려주는 멘토가 되주지 않을 것이다(Sith에게 견습생으로 있을 수 있지만, 해커들이 그런식으로 일하는 경우는 거의 없다). 만약에 너가 잘 짜여진 커리큘럼을 따라가는 것을 좋아한다면(대부분의 공부를 그런식으로 한다면) 너는 보안을 하기는 힘들것이다.


너가 괜찮은 공부 자료를 구하기 전에, 너는 괜찮은 질문들을 던져야 한다. "해킹하는법"과 같은 단어로 구글링을 하면 지금까지 봐왔던 거지같은 결과만 나올 것이다. 대신 더 괜찮은 질문들을 해야 한다. 다음과 같은,


내가 관심있는 하드웨어/소프트웨어가 어떻게 동작하는가? 어떤 기술이 기반이 되는가? 내가 볼 수 있는 소스코드가 있는가? 튜토리얼? 서적?



내가 대상으로 하는 하드웨어/소프트웨어를 누군가가 공격시도한 적이 있는가? 그들이 write-up을 올려놓았는가? 익스플로잇을 올렸는가? 컨퍼런스 발표자료가 있는가? 내가 정말로 그사람들이 한 것들을 이해하는가?



따라서 누군가 실제로 만든 소프트웨어나 하드웨어가 어떻게 작동하는지 이해하려면 기술적으로 정통해야 합니다. 코드를 작성하는 것과 읽는 것은 정확히 같은 능력이 아닙니다. 만약 당신이 코딩을 쉽게쉽게 할 수 없다면 보안 공부를 깊게 하기 전에 이것부터 먼저 해야 합니다.



두번째 포인트를 잊지 마시오. 나는 예전에도 기술적으로 아는 것이 꽤나 많았지만, 내가 실제로 사람들이 공개한 취약점 연구와 익스플로잇들을 보기 시작하기 전에는 보안에 대한 내 이해도가 낮았다.



그리고 조언을 하나 더 하자면, 너가 모르는 무언가를 맞닥드렸을때 절때 포기하지 마라. 특히 너가 공부를 시작하고 다양한 자료들을 읽을때, 너가 모르는 무언가를 만날 경우가 매우 많을 것이다. 그 내용을 이해하지 않고 넘어가는 것은 쉬운 방법이지만, 한편으론느 잘못된 방법이기도 하다. 너가 모르는 무언가를 맞닥드렸을때, 모른다고 어렵다고 하기보다는 새로운 것을 배울 수 있는 단서가 된다고 생각해라.



내가 아무도 너의 손을 잡고 이끌어주지 않는다고 썻긴 했지만, 이 말이 너가 질문을 하지 말아야한다는 것은 아니다. 너는 편하게 생각해야 한다. 사람들은 너의 일을 대신해주지 않겠지만, 너가 멘붕에 빠졌을때 적절한 방향으로 가도록 도와줄 것이다.

+ Recent posts