2011년 5월 31일 화요일

해커란 무엇인가

geohot이란 해커 이야기가 요즘 기사화 되었는데, 해커라는 이름이 안좋게만 비춰지는 점이 있다보니 사람들의 시선이 어떨지 궁금하기도 합니다.

그래서 해커라는 이에 대한 이야기를 한번 해 볼까 합니다. 그런데 개인적인 지식에 의존하는 글이라 100% 확실한 내용이라고는 장담 할 수가 없겠네요.


해커의 정의?


우리나라에 일반적으로 알려져 있는 '해커(hacker)'라는 용어는 시스템을 파괴하거나 보안 시스템을 뚫어서 개인정보를 빼내는 등 악질적인 행위를 하는 이들로 알려져 있습니다.

그리고 언론 등에서는 해킹 이슈가 알려질 때 마다 초보적인 해킹 수법 운운하면서 보안이 나쁘다는 식으로 이야기를 많이 하지요.

하지만, 정작 해커의 본질에 대해서는 이야기를 전혀 해 주지 않습니다.

전통적으로 해커라는 말의 의미는 시스템의 본질을 꿰어 보고 그 내용을 바꾸고 개선할 정도로 실력이 뛰어난 이를 의미합니다. 악질적이냐는 여부는 일단 제외하더라도, 일반적인 사람들이라면 꿈에도 못 꿀 정도의 실력을 바탕으로 시스템을 분석하고 마음대로 고쳐버리지요.

망치로 부순다 라는 것이 아니라 망치로 개조한다 라고 생각하면 좋을까요?

국제적인, 특히 오픈소스 계열의 커뮤니티에서 통용되는 '해커'라는 용어는 '실력이 좋은 개발자' 라는 의미와 일맥상통합니다. 리눅스 부터 시작해서 상당수의 오픈소스 개발자들을 해커라고 표현합니다.

초보적인 해킹 수법을 이용하는 해커?


보통 초보적인 수법으로 해킹했다는 이야기는 대체로 남이 만들어 놓은 툴이나 이미 알려진 보안헛점을 이용하는 경우라고 해석이 가능합니다.

이런 경우 툴이나 스크립트를 사용했다는 이유로 이쪽 세계(?)에서의 용어로 '스크립트 키드(script kid)'라 부릅니다. 해커라고 부르지는 않지요. 실력이 없다는 점에서 해커라고 부를 가치도 없다는 말입니다.

하지만 국내 언론에서는 IT계열에서 악질적인 짓을 했다고만 하면 실력에 관계 없이 무조건 해커라고 부릅니다. 좀 안타까운 시선이지요.

악질적인 해커, 크래커


이쪽 세계(?)에서는 해커란 악질적이다 라는 의미를 포함하지 않는다고 이야기 했습니다. 그렇다면 악질적인 해커를 뭐라고 표현할까요?

일반적으로 크래커(cracker)라는 용어를 씁니다. 행위에 어울리는 이름이지 않나요? 시스템을 파괴한다는 의미에서 상당히 잘 어울리는 표현입니다.

화이트 해커?


화이트해커라는 용어가 공식적으로 사용되는지는 모릅니다. 해커라는 말에 부정적인 의미를 담지 않는 입장에서 화이트해커라는 것은 존재할 필요가 없는 용어니깐요. 아마도 국내 언론에 의해 탄생된 용어가 아닐지 생각되기도 합니다.

자 그럼 상식적인 시선에서 화이트 해커란 무엇인가요? 보안 헛점을 이용해 돈벌이를 한다거나 등이 아니라 보안헛점을 개발/관리 측에 알려줘서 문제점을 해결할 수 있도록 도와준다는 해커입니다.

그런데 왜 구분해야 하나요? 이런 일은 보안업체에서 전문적으로 하는데 그렇다면 보안업체는 화이트해커집단인가요? 아닙니다. 보안업체라고 못 박아서 구분하고 있습니다.

그렇다면 프리랜서 보안 컨설턴트가 화이트해커인가요? 무료로 해주면 화이트해커인가요? 혼란스러울 따름입니다.

개인적으로 화이트해커라는 용어는 불필요한 용어라고 생각합니다. 단지, 언론에서 떠드는 해커라는 용어와 구분짓기 위해 존재하는 것 뿐이라고 생각합니다.

해커가 되려면?


좋은 의미에서든, 크래커 적인 나쁜 의미에서든, 진정한 의미의 해커가 되려면 지식과 정보에 있어서는 남들과 차별적이어야 합니다.

보안 헛점을 찾는다는 건 말 처럼 쉬운 표현이 아닙니다. 이 보안 헛점을 찾기 위해 시스템에 침입해야 할 지도 모르고, 시스템에 침입 하더라도 루트쉘을 얻지 못 하면 분석 조차 못 해 볼 수도 있습니다. 분석을 하더라도 최소한 기계어 혹은 어셈블리어에 통달해야 프로세스의 헛점을 파악할 수 있습니다. 어셈블리어 조차도 하드웨어나 종속적인 부분이라 하드웨어의 구조에 관해서 정확하게 알아야 합니다.

보안헛점도 종류가 많습니다. 대표적으로 버퍼 오버플로우(간략히 말해 메모리를 넘치게 조작) 공격을 통해 루트권한으로 돌아가는 프로세스를 다운시켜서 쉘을 얻어나거나, 보안헛점을 이용해 코드를 삽입시키거나 정보를 가로채는 등등 많습니다. 최소한 알려진 방식에 대해서 만이라도 지식이 있어야지요.

또한 가지고 있는 지식과 정보를 이용해 어디서 어떤 공격을 어떻게 시도할 수 있을 것인가 고민하는 것도 설명하기가 힘들 정도로 어렵겠지요.

결국 지식과 응용의 홍수입니다. 그것 뿐이면 좋겠지요. 더 많은 요소도 있을 것입니다. 불행히도 저는 해커가 아니라 잘 몰라요.

하지만, 해커라는 말에는 개발자 라는 말도 포함되어 있습니다. 오픈소스 개발에 기여할 수도 있습니다. 포괄적인 의미에서의 해커가 되는 길은 쉽다라는 말이지요.

'리눅스 커널 해커'라는 말 들어보신 적 계신가요? 오해하지 마세요. 오픈소스로 개발되는 리눅스 커널의 개발자들을 통칭하는 의미입니다.

최근 글

문재인 정부가 경제를 죽인다는 황교안

연일 보수세력의 현 정부 공격이 계속되고 있다. 특히 소득주도성장은 처음부터 끝까지 물고 늘어지고 있는 먹이감(?)으로 보이나보다. 이번 글도 이 내용의 연장선으로, 아래 기사에서 출발한다. "문재인 정권이 자유시장 경제를 망가뜨리고 있...

일주일간 인기글