대학교 학부생으로써 올해 정보보안학과를 졸업하고 지금까지 정보보안과 관련된 공부를 해왔습니다.

자연스레 자격증을 준비하거나 BoB 활동을 통해 CS 지식을 넓히고 다양한 경험을 해보면서 공격자 관점에서 insight를

넓힐 수 있었던 것 같습니다. 해수로는 4년 정도 공부를 해왔는데, 확실히 보안과 관련해서 연구직 혹은 시니어 연구원

으로 성정하기에는 개개인의 성향과 적성이 맞아야 한다는 것을 매번 느낍니다.

그래서 최근 연구 동향을 파악하며 개인적으로 느낀 바를 정리해보며 진로를 고민하는 후배들이 참고할만한 조언을

제공해보고 싶어 회고록을 작성해보게 되었습니다.

뛰어나진 않지만 먼저 공부를 시작한 선배로써 진로 결정에 도움이 되었으면 좋겠습니다. 다른 사람에게 참견할 상황은

아니지만요 ㅎㅎ.. 제 코가 석자랍니다.

 

꾸준하게 공부하기!

학부생으로써 보안 공부를 할 때, 우선 흥미 위주의 공부를 진행했던 것 같습니다. 노력한 대비 산출물이 보이는

프로젝트나 활동들은 더욱 성장하고 싶다는 동기부여 역할도 하니까요. 그러나, 학부생 수준에서 연구원으로

거듭나기 위해서는 다양한 능력과 기술스택이 뒷받침되어야 합니다. 이런 부분에서 탄탄한 CS 지식과 개발 능력은

성장에 부스트 역할을 할 수 있는 좋은 재료라는 생각이 듭니다.

 

보안과 개발은 별개인듯 보이지만 엄연히 보안에서도 개발이 필요한 부분이 있고, 개발을 못한다는 것은 성장하기

위한 발판을 없애버리는 것과 같습니다. 그러므로 공부를 하며 개발을 소홀히 해서는 성장할 수 없습니다. 틈틈히

제작된 오픈 소스를 분석해보며 개발에 대한 감을 기를 수 있도록 노력해야 합니다.

모든 사람들이 그렇듯이 프로그래밍과 관련해 특출난 재능이나 적성이 아닌 한, 프로그래밍 언어를 공부할 때는

지루함을 느끼며 포기와 도전을 반복한다고 합니다. 자료구조, 알고리즘 등 이론적으로 지루한 내용들.. 

막연히 공부할 때는 어디에 사용되는지도 모르지만 다른 사람들이 세워놓은 로드맵을 따라하며 어거지로 공부하는

방법들에는 한계가 있고, 꾸준히 지속할 동기부여도 되지 않습니다. 이러한 부분에서 저는 산출물이 가시적으로

나타나는 활동을 통해 흥미를 유지하며, 흥미가 떨어지는 공부를 병행해 왔습니다. 이러한 공부법이 좋은

접근이라고 장담할 수 없지만 꾸준하게 연구할 수 있는 원동력을 마련한다는 점에서 괜찮은 접근 방법이라고 생각합니다.

짧게 정리하면 탑 다운 방식의 공부법으로 흥미를 유지하되, 바텀 탑 방식으로 CS 지식을 넓혀가는 느낌이라고 보면

될 것 같습니다.

 

 

다양한 관점에서 바라보기!

이전에는 단순히 오디팅, 소프트웨어 테스팅 기술을 통해 분석하고 취약점을 찾았다면 program analysis 학문을 접하고

최근 연구 동향을 파악하며 현업에서 어떻게 활용할 수 있을지 고민해보는 시간을 가졌습니다.

이전과는 다르게 취약점 분석 시에도 자동화 도구 및 새로운 트랜드 기술이 연구되며 개개인의 분석 노하우로도

쓰이는 만큼 단순히 어플리케이션 분석에 그치는 것이 아닌 다양한 접근법을 생각할 수 있도록 관점을 바꾸어야 하지

않을까요? 과연 취약점을 찾을 때 매번 오디팅, 소프트웨어 테스팅으로만 접근해야 할까요?

 

취약점 분석 업무의 예로 오펜시브 시큐리티가 존재합니다. 취약점을 발굴해 찾으면 성공 아니면 실패라는 점에서

오펜시브 시큐리티는 제대로 된 비즈니스 모델이 아닐 수 있습니다. 그래서 오펜시브에 종사하는 사람이라면

비즈니스 모델을 보완할 수 있도록 기술스택을 마련해 다른 비즈니스와 차별화 둘 수 있는 방안을 생각해보아야 합니다.

예를 들어, 단순히 바이너리를 분석하는 사람은 퍼징, static analysis 등 기술 스택을 가진 사람에 비해 소외될

수 밖에 없습니다. 수동으로 취약점에 일일히 접근한다는 것은 기계와 다름이 없으니까요.

그렇다고 정적, 동적 분석 접근법이 만능이라는 소리는 아니랍니다. 단지 해커의 관점에서

attack surface를 식별하고 접근하기 위한 개개인의 노하우와 경험과 더불어 방법론을 이용해 실무에 적용할 수 있다면

차별화된 경쟁력을 마련할 수 있을거란 이야기입니다. 또 그렇게 할 수 있도록 노력해야 합니다.

 

시스템 해킹의 미래?

개인적으로 시스템 해킹에 관심이 많은 만큼 시스템 해킹의 미래에 대해 생각해 봅시다. memory safety 언어인 rust를 예로

들어보면, 많은 제약사항이 존재하지만 C계열 언어에서 발생하는 취약점을 어느정도 방지하잖아요? 외에도 프로그램

컴파일 시 sanitizer와 같은 최적화를 이용한 보안 유틸리티들이 발전해 왔습니다.

브라우저, 커널에서는 다양한 mitigation이 존재하며 연구원들이 익스를 하는데에 어려움을 겪고 있습니다. 컴파일러

기준으로 봤을 때도 보안 기법이 적용되어 사실 상 입문자가 시스템 해킹을 공부하기에는 많은 어려움과 진입장벽이

있을거라 생각이 듭니다. 이런 점에서 '시스템 해킹의 미래가 없다'라고 봐도 과장이 아닐 수 있습니다.

그렇기에 시스템 해킹을 좋아해서 하는 경우가 대다수지만요. 이런 점에서 오펜시브나 모의해킹과 관련해서는

부업과 같은 느낌으로 버그 바운티 제도에 참여하는 것이 좋은 방법일 수 있습니다. 아니면 시스템 해킹과 관련된

연구 주제를 선정해 진행해보는 것도 좋은 방법일 수 있습니다. 오펜시브를 업으로 하는 분들의 경우,

꾸준하게 연구하며 그 분야의 탑이라고 봐도 무방할 정도의 실력을 가지고 있으므로, 어중간한 마음가짐으로 모의해킹

분야에 임하는 것은 좋은 방향이 아닐 수 있다는 생각이 듭니다.

 

생각해보기..

LLVM 프로젝트의 경우 다양한 아키텍처를 컴파일하고 디스어셈블하며 프로그램을 정적으로 분석할 수 있도록

중간 언어(IR) 역할을 합니다. 모바일의 프레임워크에서도 다양한 아키텍처를 호완하기 위해 깊게 들어가면 IR 레벨의

언어가 존재하구요. 브라우저 역시 IR 개념이 존재합니다. V8이 동작하며 Turban을 사용할 때, 최적화 없이 사용 시에도

IR이 필요하구요. 이를 이용하면 어플리케이션을 다른 아키텍처로의 포팅 과정을 거쳐 시너지를 낸다거나 하는 방식으로

접근이 이뤄지고 있습니다. 그러나 이 역시 코드 패턴에 대한 예외가 존재해 인터프리터 혹은

최적화 관점에서 취약점이 존재하기도 합니다. (그래서 브라우저의 JIT 기술에 취약점이 발견되는 것 아닐까요?)

이처럼 연구 동향을 파악하면 다양한 연구 주제를 확인해볼 수 있고, 다른 사람들이 연구한 legacy를 바탕으로 좀 더

나은 결과를 도출하는 데에 성취감을 느낄 수 있습니다. 이처럼 취약점 분석을 목표로 하는 사람이라면 단순히

서비스의 취약점 발굴만이 목표가 아닌 틀을 넓혀 여러 관점에서 보안을 바라볼 수 있도록 노력해야 합니다.

그렇다고 컴퓨터를 붙잡고 IT속에 박혀 살라는 이야기는 아닙니당. ㅎㅎ

 

결론

지금까지 공부해오며 느낀바를 두서없이 정리해보았는데, 읽는 분에게 어떻게 다가올지 잘 모르겠습니다.

그래도 취약점 분석과 관련한 커리어에도 다양한 길이 존재하며 CS 지식을 탄탄히 하고, insight를 넓혀야 한다는 것이

결론입니다. 이상으로 글을 마무리하며 후배들이 보안과 관련해 커리어를 생각할 때 도움이 되었으면 좋겠습니다.

추가적으로 앞으로 개인적인 연구 포스팅은 https://judangs.github.com/ 블로그를 이용해보려 합니다.

해당 블로그가 독학으로 연구하는 분들에게 시야를 넓힐 수 있는 insight를 제공할 수 있었으면 좋겠습니다. 감사합니다.

+ Recent posts