2011년 3월 29일 화요일

펀글] "해커"의 개발자로의 삶과 전망

"해커" 개발자로의 삶과 전망
    오정욱(mat@panicsecurity.org)    시큐아이닷컴 과장 

1. Intro


        제가 개발자로서의 생활을 한지도 벌써 7년이 되어 갑니다. 그럼에도 불구하고 아직도 소프트웨어 개발은 어려운 분야이고, 뭔가 확실하게 개념이 잡기 힘든 분야라는 생각이 듭니다. 저는 생물학 전공이었지만 대학교 생활을 하면서 학교 전산실에서 광적으로 컴퓨터 시스템에 빠져 지내면서 전공도 포기하고 개발자로서의 삶을 선택했습니다.    원래 인간의 말과 생각에 대해서 많은 관심을 가지고 있어서, 컴퓨터는 처음에 생각을 정리하기 위한 도구라는 생각으로 접근했지만, 나중에는 결국 컴퓨터 자체에 빠지게 되었습니다. 일종의 본말 전도가 이뤄진 셈입니다. 어쨌든 이렇게 해서 컴퓨터 자체에 빠지게 되었고, 원래 "해커"의 의미에 충실한 사람이 되어 갔습니다. "해커"라는 것은 실력에 대한 용어라기 보다는 "자세"에 관한 용어라는 생각이 듭니다. 아직도 "해커"란 컴퓨터에 대해서 속속들이 알고 싶어 하는 사람이라고 생각하고 있습니다. 이러한 "해커"로서의 자세가 "실력"보다도 중요하다고 생각합니다. "해커"가 실력에 관한 용어라고 생각한다면 스스로 "해커"라고는 절대 말하지 못할 것 같습니다. 

2. 방화벽의 개발


        방화벽의 개념조차도 잘 알려지지 않았던 1996년 여름에 국내 최초의 방화벽의 개발은 우연하게 시작되었습니다. 인터넷이라는 것은 이미 많은 사람들이 사용하기 시작하였고, 보안에 대한 관심이 조금씩 생기기 시작하던 때였습니다.    방화벽의 개발은 파트 타이머로서 일하게 되면서 시작 되었고, 처음에는 그저 작은 프로젝트였습니다. 처음 윈도우즈에서 NDIS를 사용해서 개발하려던 중에 유닉스, 특히 솔라리스로 운영체제를 바꾸기도 하였습니다.    어쨌든 프로젝트 매니지먼트나 코드 관리 등등에 대한 것은 전혀 이뤄지지 않은채 단 한명의 개발자만으로 작업이 이루어졌습니다. 1년 후에는 이미 몇군데 사이트에 제품이 팔려 나가는 형태가 되었습니다.    개발팀에는 메인 개발자 한명에 나머지 3-4명의 개발자들이 존재했습니다. 하지만 새롭게 투입된 개발자들은 모두 학원을 갓 나온 개발자들로서 개발팀 전체의 파워는 그리 강하지 못했습니다. 이러한 상태에서 영업이 이뤄지고 제품 판매가 이뤄지면서 개발팀은 약한 파워에 오버로드가 걸리게 되었고, 결국 자체 분열이 일어 났습니다.    어쨌든 99 11월까지 회사에 다니면서 방화벽을 개발한 기억은 이후에 제대로 된 개발을 해 보고 싶다는 여운을 남기게 되었습니다.     

3. 방황


        이렇게 몸을 혹사시키면서 제대로 된 대우도 받지 못한 경험을 한 이후 개발이라는 것 자체가 진저리가 났지만 병역특례라는 상황 때문에 역시나 개발을 하지 않을 수 없었습니다. 그래서 옮긴 곳이 인트라넷 개발 업체였습니다. 조금 큰 회사이었기에 프로젝트를 수행하면서 개발 방법론 등에 대해서 많은 것을 배울 수 있었습니다. 또한 프로젝트 관리의 중요성에 대해서 배우게 된 중요한 경험이었습니다. 그러나 저의 전문 분야인 보안과는 상관 없는 프로젝트였으므로 경력에는 그렇게 큰 위치를 차지하지 않았습니다.    나중에 들은 소문에 의하면 전에 일했던 방화벽 업체의 사장은 수백억을 주식 판매 대금으로 챙기고 저기 머나먼 나라로 이민을 가버렸다고 합니다. 그러한 소식은 저 같은 개발자들을 허탈하게 만듭니다. 

4. 재도전


        프리랜서로 PC용 보안 제품 개발에 도전하였습니다. 하지만 역시나 제대로 된 프로젝트 관리자를 만나지 못하여 실패하였습니다. 또한 Windows는 저의 전문 분야가 아니어서, 기본 지식을 쌓는 데에만 시간을 모두 허비했습니다.     과연 언제나 되어서 제대로 된 멋진 프로젝트를 하게 될지 조바심이 나기도 하였습니다. 어디에 제대로 된 멋진 프로젝트 관리자가 숨어 있을지 궁금하기도 하였습니다. 좋은 아이템과 좋은 관리자를 만나면 100% 성공일 것이라는 생각이 들기도 하였습니다.     

5. 보안 컨설턴트


        프리랜서로 외주 프로젝트를 수행하던 업체에서 회사를 다운사이징하고 난 이후에 새로운 직장을 찾아야만 했습니다. 그래서 고른 곳이 바로 보안 컨설팅 업체였습니다. 이전에 해킹 대회에서 우승한 경력이 많은 도움이 되었습니다.    어쨌든 보안 컨설턴트로서 모의 침투 분야에 종사하게 되었고, 2001년 말에 시작한 후 2002년 말에 회사를 한번 옮긴후 지금까지 계속 같은 업종에 종사하고 있습니다. 따지고 보면 21세기를 보안 컨설팅과 함께 시작한 셈이네요.    보안 컨설턴트로서의 삶은 개발자의 삶보다는 덜 피곤했습니다. 일의 특성상 누군가 관리해 줄 사람이 필요한 것도 아니고, 스스로 대상 서버에 대한 모의 침투를 시행한 후에 보고서를 써 내면 되는 일이었기 때문에 힘도 많이 들지 않았습니다. 또한 중장기 계획이라는 것이 아예 필요 없이 그때 그때에 수주가 된 사이트에 대한 점검만 행하면 되므로 관리라는 것이 거의 필요 없기도 했습니다.    처음 보안 컨설턴트가 되어서 모의 침투나 하자고 생각한 것은 그 동안 개발자로서 너무 힘들어서 그냥 조금 쉬어 보자는 생각으로 시작한 것입니다. 그렇게 시작한 것이 벌써 2년의 시간이 흘렀고, 이제 서서히 보안 소프트웨어 개발자의 삶을 되찾고 싶다는 생각이 들기도 합니다.    
     

6. 시대의 변화와 보안 기술들


        앞으로 몇년간 가장 활발하게 성장할 분야라고 하면 모바일 컴퓨팅이나 네트워킹, 그리고 홈네트워킹 등이 되지 않을까 싶습니다. 사람들이 유비쿼터스 컴퓨팅이라는 말도 많이 사용하더군요. 저는 이러한 조류를 지칭하는 용어에 대해서는 크게 신경을 쓰지는 않습니다. 핵심은 미래에는 어디에서나 컴퓨팅을 하게 될 것이라는 사실입니다. 아침에 일어 나는 것부터 시작해서 화장실에 가서 샤워하고 볼일을 보거나, 식사를 하고 출퇴근 하는 일, 또한 운송 수단을 타는 일, 회사 건물에 들어 가서 출입 통제 시스템을 거쳐 사무실로 들어가고, 자신의 컴퓨터에 앉아 작업을 시작하는 일 같은 모든 분야에서 컴퓨터 - CPU와 메모리를 가진 기계- 에 의존하고 간섭을 당하게 될 것입니다.    컴퓨터라는 기계는 서로 연결되어서 서로가 메시지를 보내야 할 필요성이 늘어 나는데 이 경우 네트워킹이 필수적입니다. 네트워킹은 유선을 통해서 이뤄질 수도 있겠지만 결국은 무선을 선호하게 될 것입니다.    예를 들어 봅시다. 저는 PDA GPS, 네비게이션 소프트웨어 등을 구매해서 자동차에 카네비게이션 시스템을 구축해서 사용중입니다. PDA 동호회 사이트나 자동차 동호회 사이트를 보면 많은 정보가 존재합니다. 그런데 이렇게 시스템을 장착하고 나면 골치 거리가 바로 선(wire)입니다. 이러한 선은 거추장스럽기도 하고, 실수로 선을 건드려서 기계를 떨어 뜨리기도 합니다. 이러한 상황에서 이러한 선을 없앨 수 있는 기술이 있다면 아마 좋은 반응을 얻을 것입니다. 그래서인지 최근에는 블루투스 기술을 이용한 GPS 시스템을 많이 사용하더군요. GPS를 두는 위치가 자유로우니 위성 수신율도 높고, 선이 줄어 드니 좀 더 깨끗하게 시스템을 구축할 수 있습니다.    예전에 90년 중반쯤에 제가 랜을 처음 만들어 볼 때에는 두꺼운 동축 케이블을 사용했던 기억이 납니다. 또 전산실에서도 동축 케이블을 사용한 방이 있어서, 종종 랜이 다운 되기도 했고, 가끔 습도가 높은 날이면 정전기가 케이블을 따라 흘러 다니기도 했었습니다. 어느 순간 이러한 동축 케이블이 자취를 감추고 얇은 UTP가 그 자리를 차지 하더군요. 아마 몇년 후면 이 UTP는 전산실에나 가야 볼수 있는 물건이 될지 모릅니다. 최근에 출시되는 대부분의 노트북은 무선랜을 내장하고 있습니다. 우연의 일치인지 제가 가진 노트북과 PDA는 모두 무선랜 내장형입니다.    이러한 무선이 주류를 이루게 될 미래에는 무선랜 보안은 큰 이슈입니다. 전파의 특성상 조건에 따라 무선랜 AP(Access Point)의 전파 도달 반경은 수 km에 이르기도 합니다. 또한 안테나등을 사용하여 출력이나 게인을 늘릴 수도 있으므로 물리적으로 무선네트워크로의 접근을 통제할 방법은 거의 없다고 봐야 합니다. 내부에 금속 물질로 도배를 하는 등의 방법을 통해서 전파가 누출을 막을 수 있지만, 그 비용이 만만치 않아서 일반적으로 적용 시키기는 어렵습니다.    이러한 상황에서 무선랜 보안은 국가적으로도 큰 이슈에 속할 것입니다. 앞으로 주요 시설물들이 무선을 통해서 통제되고 거리를 걸으면서 네트워크에 접속해서 집안이나 사무실의 기기들을 조종할 날이 올 것이기 때문입니다.    
        현재 가장 유행하고 있는 "크래킹"이라고 하면 단연 웹디페이싱입니다. 웹을 통한 공격은 근래에 지속으로 보안 이슈가 되고 있습니다. 웹이라는 시스템은 90년대 초반 CERN이라는 연구소에 자료를 공유하기 위한 목적으로 만들어졌습니다. 하지만 그러한 시스템이 공격의 가장 큰 대상이 될 것이라고는 전혀 예상치 못했을 것입니다. 웹의 기본적인 개념은 손쉬운 태깅을 통한 간단한 문서 작성과 하이퍼텍스트(hypertext)에 있을 것입니다. 하지만 점점 웹브라우저나 플러그인 들이 발달하고, 웹어플리케이션 들이 대형화 되며서 웹어플리케이션들 자체에서 많은 보안 문제점들이 노출되게 되었습니다.    대표적인 문제점이 크로스 사이트 스크립팅이나 SQL 끼워넣기(Injection), 파일 업로드 등이 있습니다. 이러한 보안 문제점은 예전의 정통파 해커들에게는 식은죽 먹기나 어린애 장난에 불과한 문제점들입니다. 예를 들어 크로스 사이트 스크립팅이란 게시판이나 에러 메시지를 통해서 공격자가 특정 자바 스크립트 등을 공격대상의 웹브라우저의 DOM에서 실행 시키는 것을 의미합니다. 이러한 공격의 실체를 해커들의 대부들이 본다면 아마 코웃음을 칠 것입니다. 웹브라우저에 "<script>alert(document.cookie)</script>"와 같은 메시지를 입력하고 있는 해커는 예전의 어셈블리를 들여다 보면서 머리속에서 하나씩 명령을 실행해 보던 해커에 비해서 좀 더 신비감이 떨어지는 것이 사실입니다. SQL 끼워넣기나 파일 업로드 등도 이해하기에 그렇게 어렵지 않은 쉬운 보안 취약점입니다.    이러한 웹과 관련된 보안 취약점들은 일종의 인해전술을 사용해서 웹사이트 관리자들을 위협하게 됩니다. 웬만한 규모의 회사의 웹사이트는 적어도 수천개 이상의 어플리케이션 파일들로 이뤄져 있습니다. 이러한 어플리케이션들 중에 상당수가 크로스 사이트 스크립팅이나 SQL 끼워 넣기 등등에 노출 되어 있을 것입니다. 하지만 그러한 어플리케이션을 찾아 내는 것(locating) 자체가 무척이나 고달픈 작업입니다. 모든 어플리케이션을 다 테스트 하는 것은 보통 인간으로서 할 수 있는 일이 아닙니다.    모의 침투를 하면서도 모든 웹어플리케이션을 테스트 하는 것이 아니라 그때 그때에 눈에 띄는 놈들을 테스트하게 됩니다. 이렇게 해서 대부분의 경우 시스템에 침투하는 것이 가능합니다. 단지 수십개의 어플리케이션만 테스트해서 시스템 내부로의 침투가 가능한 정도이니 나머지 어플리케이션에서도 버그들이 가득할 것은 자명한 일입니다.    이러한 웹어플리케이션 보안을 높여줄 만한 보안 소프트웨어의 개발이 절실한 때입니다.    
        1.25 대란 이후 두드러진 것은 웜에 대해서 모두가 실질적인 위협으로 인지하게 되었다는 것입니다. 이전에 웜은 그냥 잡스러운 트래픽 정도로만 생각 했던 것에 비해 지금은 아주 위협적인 트래픽임을 알게 되었습니다. 코드레드와 마찬가지로 이번에도 시장 점유율이 높은 마이크로소프트사의 윈도우즈 시스템을 기반으로 하는 웜이 전세계의 네트워크를 단 몇분만에 마비 시켰습니다.    최근에도 윈도우즈 버그는 끊이 없이 리포팅 되고 있고, 크고 작은 웜들은 계속 만들어 지고 있습니다. 이러한 상황에서 기존의 바이러스 백신이 제 역할을 하고 있는지 의문이 듭니다. 백신은 이미 웜이 감염 되었을 경우에만 효력을 발휘합니다. 하지만 최근의 웜은 일단 감염 된 후 엄청난 트래픽을 발생 시키면 다른 공격 대상을 물색하시 시작합니다. 이러한 이유로 인해서 네트워크에는 아직도 몇년 전의 님다 웜 같은 놈들이 죽지 않고 질긴 생명을 유지하고 있습니다.    기존의 백신은 네트워킹이 활발하지 않던 90년대에나 유효했습니다. 주로 디스켓을 사용하여 프로그램을 복사할 경우에 백신은 아주 효과적인 방책이었습니다. 백신이 파일 시스템을 기반으로 하여 악성 코드를 찾아 내는 시스템이므로 당연한 결과였습니다.    하지만 네트워킹이 발달한 최근에는 소프트웨어 오류나 메일 등을 사용해 사용자에 대한 사회 공학을 통해 주로 웜이 전파 되고 있습니다. 전파의 매체가 네트워크이므로 당연히 네트워크에 기반한 방역 시스템이 존재하여야 합니다. 네트워크는 파일처럼 전체 내용을 마음대로 접근 가능한 매체가 아니라 일종의 스트림처럼 한번 흘러 가면 되잡을 수 없는 매체입니다. 이러한 시스템에 적합한 악성 코드 매칭 알고리즘을 개발하여야 할 것이고, 또한 네트워크를 통해 전파되는 악성 코드를 식별할 수 있는 최적의 시그너쳐 데이타 베이스를 구축해야 할 것입니다.    기존의 방화벽이 단지 주소와 포트를 통한 접근 제어에 집중 했다면 이제는 트래픽의 내용에서도 악성 코드를 찾아서 트래픽을 차단해야 하는 상황에 이르렀다고 볼 수 있습니다.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...