시스템 사고를 시스템 해킹 의도를 꿰기 전에 호출해야 하는 까닭
<성공과 실패를 결정하는 1%의 프로그래밍 원리>라고 2001년도에 쓰인 책을 어느 정도 해킹기술의 이론을 파헤치고 다시 봤다. 기본은 역시 '원리'에 있다는 것을 알았다. 피카소가 추상화파의 대가가 되기 전에 이미 실사에서 최고봉이었다. 그리고 미켈란젤로는 르네상스를 대표하는 화가가 되기 전에 이미 돌덩어리를 조각하는 데 따라오는 자가 없었다고 한다. 해킹의 기술도 컴퓨터의 기본 원리를 누구보다 잘 안다면 생각해낸 기술을 취지만 엮으로 바꿔서 활용하는 데에 불과할 수도 있다. 왜냐하면 기술 자체의 난이도가 중요한 게 아니라, 그 기술의 개념을 자신의 머릿속에서 쉽게 인출할 수 있으면 그것이 곧 어떻게 응용하느냐에 대한 이해도를 꿰차는데도 연결이 되기 때문이다. 곧 실전에서 '시스템적인 사고'로 해킹 기술을 이끌어내거나 방어에 대한 추측이 가능하다는 말이다.
그래서 나름 11회 차 보안 기사 실기를 한 달여 가까이 남겨두고 해킹기술의 기본기에 해당하는 개념에 대한 정리를 해보려 한다. 그전에 사설 좀 달아보면 현직 서울대 교수가 토론 논객으로 또 서울대 출신의 히든챔피언 격의 강소기업의 대표이사가 강연 연사로 나와서 말하는 것을 몇 차례 들을 기회가 있었다. 이들은 출신학과가 경제계통이라서 그런지, 공통적으로 사실이나 통계 혹은 이전에 입증된 가설의 실례 위주의 의견을 내놓는다는 특성이 있었다. 그러니까 이들은 자신이 서울대 출신이라는 나름 대한민국 내에서 품고 있을만한 긍지(소견 논거)로 의견을 당위적으로 내세우거나 가치를 논하는 어조가 예상보다 적었다.
내가 해킹이라는 하나의 영역을 앞으로 본업으로 삼고자 하는 까닭은 앞서 서울대 출신들의 사실 위주의 화법과도 관련이 있다. "해킹이라는 의미는 두 가지가 있는데 하나는 개인의 호기심이나 지적 욕구를 충족시키기 위해 컴퓨터 간의 네트워크를 탐험하는 행위이며, 다른 하나는 다른 컴퓨터 시스템을 파괴할 목적으로 침입하는 행위이다". (조성문 정영훈, 2014) 그중 후자의 의미를 취지로 하는 공격성 해킹 기술의 대우는 부르는 데로 자신의 몸값이 될 수 있기 때문이다. 이 말은 약간은 나의 가치가 이입된 추측성 발언이다. 하지만 기사 보도와 팟캐스트에 따르면 틀린 말도 아니다. 매년 미국 라스베이거스에서는 열리는 '데프콘'이라고 불리는 해킹 대회에서 우승한 한국의 한 청년이 우승 직후, 구글과 삼성의 스카우트 제의에 응하게 되었다고 한다. '전문가 시대는 지났다'라는 현시점에서, 기업을 대상으로 자신의 대우를 처음부터 협상할 수 있는 직업으로는 극소에 해당할 것이다. 프로 게이머 같은 느낌이 들 수도 있겠지만 이 청년은 삼성에서 전자제품의 사물인터넷 보안에 필요한 기술을 선보이고 미국의 구글로 자리를 옮겼다.
일반적인 정보보안 전문가로 활동하더라도 이 분야에 매료를 느낀 이유는 해킹의 기술은 어느 정도 할 수 있다는 어정쩡한 수준으로 명함 내밀기 힘들기 때문이다. 해킹의 수준을 논하는 것은 해커가 방어막을 뚫었냐, 못 뚫었냐라는 두 가지 결과밖에 없다. 물론 기업의 보안전문가는 화이트해커라서 시스템의 취약점을 예상하고 대비했냐, 못했냐로 자신의 직장운이 결정될 수도 있다. 사무실 책상이 침해사고의 책임으로 빠질 수도 있겠지만(외국과 달리 우리나라는 침해사고 터지면 보안담당자부터 자른다고 한다. 하지만, 뚫린 경험을 가진 사람들은 2차, 3차 공격에 대비해 그 원인 분석을 더 철저히 할 수 있었을 거다.), 두 결과를 가지고 자신의 미래를 개척해야 하는 점은 학문에서 수학과 물리와 같이 사실로 입증된 진리가 아니면 모두 가설에 불과하다는 측면과 같다.
마지막으로 내가 가고자 하는 IT 보안의 진로는 "기업의 영업 비밀을 보호하는 차원을 넘어서, 국가에서 정보보호를 법률로써 강제하고 있는데, 나는 앞으로 풍부한 해킹 경험을 쌓아서 이것을 바탕으로 '기업에서 법적 규정을 철저하게 준수하고 있는지 점검하는 정보 보안 업무'를 수행하는 것이다." (조성문; 정영훈, 2014) 그리고 한국의 개발자 현실과 달리 윤리적 해커는 사회에서 존경받는 백발의 전문가가 될 수 있다고 믿기 때문이다. 2~3년 경험해서 전문가가 될 수 있는 분야는 가치가 없다. 돈이 된다 싶으면 너도나도 달려들 수 있기 때문이다. 하지만 해킹은 IT 전 분야에 대한 지식을 바탕으로 취약성을 찾아내고 공격하기 때문에 접근하기 어렵고, 본인도 이미 다른 직종에서의 진입장벽이 만만치 않다는 것을 실감하고 있다. "그럼에도 불구하고 오래 할수록 기술의 깊이가 깊어지며, 사회적 존재 가치도 높아지게 된다면 머리가 하얀 엔지니어가 되는 앞으로 20, 30년이 지나도 백발의 해커가 사회에서 존경받는 세상에서 살고 싶다." (조성문; 정영훈, 2014)
더군다나 본인처럼 자신만의 뚜렷한 철학과 왜 해커가 되려고 하는지에 대한 사명이 확고하다면 분명히 죽기 전에 해커들의 무슨 '~주의'와 같은 이데올로기 격인 헥티비즘*에 한 획을 그을 수 있는 사람이 되지 않을까. 해킹 기술은 알아야 할 지식도 광범위 하지만 한 분야를, 이를테면 리버싱이나 침투 테스트든 한 번에 끝장 보겠다고 덤비면 그 대가로 내주머니에 비트코인이 바로 꽂히거나 쪽빡차는 블록체인의 가상화폐 채굴과는 다르다. 인내심 있고 끈질기게 자신만의 사투로 즐긴다면 내 생각에 나이와 학력(보안 컨설턴트라는 직종은 학벌 내림차순이라고 들었다.)을 떠나서 실력으로, 직급이나 직책이 아닌 기술 수준으로 대접받는 그래서 민낯이 그대로 드러나는 공평한 처우의 분야가 이 해킹이다.
이번 논지에서 말하고자 하는 '시스템 사고'는 무엇일까? 본인이 미국 사이버대학 격인 'UoPeople'에서 이수중인 Computer Science 과정에서 익힌 Python이라는 언어를 통해 개인적으로 진행한 프로그래밍(물론 이전에 자바와 Java script를 통해 객체지향 언어(OOP)와 스크립트 언어를 맛보기도 했다. 인터프리터(한 줄 해석, 한 줄 실행)가 모태인 파이썬이지만 파이썬만큼 보안에서 빠르고 쉽게 자동화 스크립트를 만들어 주는 언어는 없다.) 프로젝트 그리고 KISA에서 주최하는 보안 기사 이론과 실습을 토대로 전반적인 컴퓨터와 네트워크 그리고 컴퓨팅 사고에 대해 환기를 반복적으로 하다 보니 느낀 게 하나 있다. '전부 다 연결되어 있구나.'
이 깨달음 하나면 해킹 기술의 도는 터득한 거 아닌가? 왜냐하면 해커가 알아야 하는 컴퓨터(시스템)와 네트워크 그리고 프로그래밍(웹과 애플리케이션)의 모든 개념이 다 연결(개념적으로든 실제 물리적으로든)되어 있다면 해커가 뚫어야 할 취약점도 결국 다 유기적으로 연결(Eco system)되어 있다는 말이 된다. 아무리 철통 같은 방어막을 구축하더라도 어딘가에는 빌미가 될만한 취약점이 존재할 수밖에 없는 구조가 시스템이라는 말이다. 결국 보안 전문가들이 공통으로 얘기하듯이 수비보다 공격이 행하기 쉽다는 말이 납득이 된다. 레벨을 따져서 쉽다, 어렵다로 나뉘는 게 아니라 투자비용에 비례하는 방어가 어느 한쪽에 쏠리면(기업은 사고 발생 시 피해 및 배상액을 넘어서는 비용보다 많이는 보안에 투자하지 않으므로 사실상 완전체의 보안 시스템은 불가능하다), 즉 한쪽을 강화함으로써 생기는 다른 쪽의 취약성이 드러나는 시스템일 수밖에 없다면 전제의 일부가 뚫리는 건 시간문제이다.
오래 전의 일이지만 초창기에 안철수가 설립한 안랩을 인수하려 했던 미국의 최대 컴퓨터 안티 바이러스 소프트웨어 회사인 시만텍에서 자신들이 개발하는 백신은 애플리케이션 해킹 앞에서는 아무 힘도 못쓴다고 대놓고 얘기할 정도였다. 그래서 보안은 하나를 철통같이 막는다고 모든 침투를 막을 수 있기는커녕 그 하나를 막음으로써 다른 구멍(Unbalanced: 불균형)이 생기는 ‘시스템’처럼 유기적인 구조다. 즉 보이는 문제점을 단순히 이 문제점의 인과관계로 파악한다고 해결되지 않으므로 서로 관련이 없을 것 같은 구성 요소들의 영향도 조합해서 유추할 수 있는 시스템적 사고가 필요한 까닭이 여기에 있다.
"연구자가 우주의 미지의 영역을 탐구하기 시작하면, 그 탐구의 끝은 언제나 연구자 자신의 급소에 다가가 있다.
- 그레고리 베이트슨
해킹의 주타깃인 시스템의 취약점을 아는 게 결국 원하는 것을 얻기 위해 가장 중요한 표적을 겨냥할 수 있다. 하지만 위의 연구자의 격언은 자신의 결점이 결국 연구 소재의 최전선을 향한다는 말이다. 그렇다면 나의 정신 모형(내가 알고 있고 보고 싶은 거만 보려는 편향적 사고의 심상)도 이해하려고 하는 시스템의 일부이므로 시스템의 경계를 설정할 시에 나 자신 스스로도 조화를 이루어야 한다(조셉 오코너, 2016).
<생각의 미래>라는 시스템 사고의 원리를 기술한 책의 주제는 "모든 것이 서로 영향을 주고받는 구성들의 조합으로 파악하는 습관을 들이면 최소 비용 최대 효과를 거둘 수 있다."는 말이었다. 특히 앞으로 내일이 예측 불가능한 시대로 접어들면 이 통합적인 사고력이 대학 논술에서나 필요하지 않다는 거다. 시스템 사고는 이 책 출판 이전에도 공공연히 떠들던 교수들이 많았었다. 하물면 내가 졸업한 대학의 주담당 교수님도 어느 버스 사고의 원인을 일개의 요소가 아니라 시스템이라고 말했던 것이 기억난다. 그 이전에 내가 피트니스 센터에서 코치로 근무할 당시 나조차도 그것이 궁금했었다. 만날 개똥철학으로 나를 괴롭혔던 경희대 국문과 출신의 사장님에게 좀 배우신 어르신이라고 던졌던 질문이 '시스템'과 '메커니즘'의 차이가 뭐냐였다. 그 대답은 기억 안 나나, 왜 허구한 날 일 끝나고 나와 술 마셨는지는 시간이 지나서 시스템적인 사고로 바라보니 결국 그 술값으로 마지막 달 월급을 때운 거였다(그런 비양심적인 인간이 지금은 뭐 하고 있을는지).
그때 내가 추측하기로 스스로 내린 차이점이 시스템은 정적인 체계 그리고 메커니즘은 동적인 체계 정도였다. 시스템 개념을 확장하면, 시스템은 개별 요소 하나하나의 인과관계를 이루어진 체계가 아닌 모든 구성 요소가 서로 연관되어 있기 때문에(유기적 관계) 하나가 특출 나거나 혹은 삐걱거리면 반드시 다른 하나가 본래의 균형을 맞추기 위하여 삐걱거리거나 도출될 수밖에 없는 구조를 가리킨다. 한편 <생각의 미래>라는 책에서 서로 다른 주제로 시스템을 유비 추론한(anology thinking: 이게 시스템 사고의 핵심이고, AI에서 말하는 패턴 인식과 동일하다.) 각 장의 테마 중 적확한 결론을 내준 장이 있었다.
"삶의 질이란 고정된 기준에 의해 결정되는 것이 아니라 자신이 좋아하는 것을 충족시킴으로써 생겨나는 행복을 지속적으로 경험하는데서 결정 난다." (조셉 오코너, 2014)
해킹의 베이스가 되는 모든 소분야(대표적으로 애플리케이션, 웹, 네트워크, 시스템)의 개념을 각개 격파하고 그 개념을 어떻게 적용하는지 응용하는 과정을 연습하고 또 조합할 수 있는 게 본인의 목표이다. 시스템의 취약점을 여러 개념의 조합으로 비정형적인 결과를 내기 위한 접근(악의적이라고 표현하나, 정상적인 결과를 유도하기 위한 것이 아닌)을 수없이 반복해서 시도한 결과, 하나의 전형적인 공격으로 자리매김한다. 해커라는 단어의 이미지가 영화에서나 드라마에서 과장되게 묘사해서 언더그라운드(지하 경제의 한 축을 끼고 있기는 하다)의 사회 부적응자나 범죄자로만 인식하는 경향이 크다. 유명한 해커들 중에는 자신이 정보보안국장인 듯 연기하여 시스템 권한을 획득하였였고, 한국 공무원 시험 점수 조작 사건처럼 공공기관에 몰래 출입해서 컴퓨터 파일을 조작(이것도 '사회공학적 공격'으로 불리는 해킹의 한 종류다.)한 범죄자 유형들이 많기는 하지만 '스노든'*이라고 개인의 인권을 유린한 정부의 개인정보 침해 시스템(프리즘)을 폭로하고 타국으로 망명한 사람이나 혹은 이러한 사회 윤리를 강조하기 위한 은둔형의 대형 해커들이 있기도 하다(현직 IT업계에 종사하는). 결론은 정보보안업계에 종사하는 사람이 아니더라도 누구나 해커로 불릴 수 있다는 말이다.
여하튼 본인이 <생각의 미래>라는 이 책의 주제에 부연하는 제재는 '과거의 나'이다. 책에서 든 한 사례로 당장 회사가 어려워져 몸값이 높은 선임 카피라이터 2명을 해고한 광고회사의 단기적인 처방이 임시방편으로 유용할지 몰라도 근본적인 문제 해결은 못된다는 것을 들었다. 왜냐하면 회사에서 방출한 인원이 경쟁사에 채용이 되어 시장 경쟁에서 장기적으로 적자를 안겼기 때문이다. 즉 단기적인 해결책은 실제로 효과가 없음을 인정하고 당장 근본문제를 찾아서 그 문제를 정면으로 다루는 것이 중요하다고 강조하는데, 그때 필요한 것이 바로 '과거의 나'이다. 왜냐하면 현재에 당면한 모든 문제의 파국은 과거에서부터 진행된 것이기 때문이다. 그럼 그 과거를 정확히 소환시킬 수 있는 '냉철함'이 문제 해결을 정면으로 맞서는 것이며, 그것이 듣기 싫은 목소리일지라도 허울 좋은 주위의 조언과 물질 자본주의의 헤게모니에 빠지지 않기 위해서라도 그 약한 고리를 다시 들춰내서 그것만을 공략해야 한다.
그래서 나의 급소를 아는 게 원하는 것을 얻기 위해 가장 중요한 타깃이 된다. 정리하면 나는 해킹기술을 차근차근 습득하기 위해 나의 가장 약한 연결고리를 먼저 찾아야 한다. 왜냐하면 근본 원인에 바로 대응하기 위해서이고 두 번째는 균형감각을 유지해야 한다. 밸런스를 잃거나 너무 하나에만 쏠리면(오버 밸런스가 좋은 실체로 유일하게 '돈'이 있다.) 스스로 취약성을 키우는 꼴이 된다. 마지막으로 컴퓨터 시뮬레이션으로 정교한 시스템(뭐든지 과정을 머릿속에서 먼저 그려보는 게 실패의 확률이 낮다. 어쨌든 나의 해킹 기술력 습득과정에 있어서는 스스로를 반추하는 터득의 과정) 모형을 만들어서 '피드백 고리'와 '시간 지연(결과 예측)' 추적이 가능토록 한다. "우리의 모형을 시험하고, 정교하게 만들고 다시 시험해보는 것은 매우 유용한 '강화 피드백' 고리다.” (조셉 오코너, 2014)
지금까지 내가 얻은 결과는 무엇인가?
내가 그것에서 배운 점은 무엇인가?
이것이 피드백이고 다음은 내가 완성하려는 시스템 파악의 출발점이 되는 질문으로,
이 문제에 대해 내가 가정하는 것은 무엇인가?
관련된 사람들에 관해 내가 가정하는 것은 무엇인가?
다음 편은 나 스스로가 기대하고, 시스템 사고에서 한 단계 더 나아간 ‘전략적 직관’을 알아보겠다. 이 통찰력을 통해 성공한 역사적 사례를 분석한 책(‘제7의 감각’)의 입증된 이론들을 근거 삼아 해킹 입문으로 성공하기 위한 과정을 이끌어내 보겠다.
*헥티비즘(Hactivism): http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?cmd=print&seq=17436&menu_dist=3
참조
1) 조셉 오코너, 이안 맥더모트(2016). 생각의 미래. 서울: 지식 노마드.
2) 조성문, 정영훈 (2014). 파이썬 해킹 입문: 공격의 언어 파이썬을 이용한 해킹 연습, 서울: 프리렉.