1 Articles, Search for '보안 전문가'

  1. 2008/09/11 해킹을 공부하고 싶어하는 분들께. (1)
Research2008/09/11 12:49
해킹이라는 것이 구체적으로 무엇일까요? 이글을 보고 계시는 분들 중 몇몇은 영화속에 나오는 3D 화면이 떠오르실 것이고, 몇몇 분은 컴퓨터앞에 앉아서 키보드를 미친듯이 두들기다가 "좋아, 뚫었어!" 라고 외치는 한 해커가 떠오르실지도 모르겠습니다. 해킹 이라는 것은 이런것이 아닙니다. 해킹이라는 것은 어떤 시스템의 구조를 정확히 파악하고 시스템의 동작을 잘못된 방향으로 돌려 내가 특수한 권한을 갖도록 만드는 것입니다.

어려우시죠? 예를 들어, 어떤 프로그램에 "100 GETROOT" 라고 입력하면 내 계좌에서 100원을 출금하여 GETROOT라는 사용자에게 100원을 이체하는 기능이 있다고 합시다. 아마 다음과 같이 프로그래밍 되어 있을 것입니다.

내 계좌 총액 = 내 계좌 총액 - 입력된 금액;
전달할 사용자 금액 = 전달할 사용자 금액 + 입력된 금액;

여러분이 해커라면 이렇게 프로그램의 내부 구조를 예측하고, 수없이 많은 테스트를 거쳐서 내 가정을 증명할 수 있어야 합니다. 아무런 문제가 없어보이는 이 시스템을 해커들은 어떻게 공략할까요? 내 ID가 GETROOT 라고 가정하고 다음과 같은 입력이 들어간다면 어떻게 될까요?

[ -10000 GETROOT ]

단지 마이너스 만원을 입력하는 것 만으로 [GETROOT 계좌 총액 = GETROOT 계좌 총액 - -10000]이 되므로 GETROOT 계좌에 10000원이 입금되고(- - 연산은 + 로 연산되므로), 다시 아래 연산에 의해 [GETROOT 계좌 총액 = GETROOT 계좌 총액 + 10000] 이 되어 계좌는 저 입력으로 20000원이 그냥 올라갈 것입니다. 실제로 이런 단순한 입력이 과거 모 네트워크 게임에서 통했었습니다. 하지만 이렇게 간단히 해결되는 것은 거의 없고 대부분 복잡한 프로그래밍과 리버스 엔지니어링 등이 필요합니다.

위 예를 보면, "1단계:시스템의 동작 방식을 예측", "2단계:시스템 공략 방식을 가정", "3단계:가정의 증명 과 실험" 과정을 거칩니다. 그럼 해커가 되려면 어떻게 해야 할까요? 이 3단계에서 모두 뛰어난 컴퓨터 유저가 되어야 합니다. 어떤 운영체제에서 동작하는지, 어떤 프로토콜로 통신하는지, 어떤 암호화 방식을 사용하는지, 어떻게 프로그래밍 되어 있을지 등  컴퓨터의 전반적인 많은 것을 정확하게 알고 있어야 시스템의 동작 방식을 예측할 수 있겠죠? 2단계, 시스템 공략 방식을 가정하는것은 끊임없는 훈련을 통해 감각을 키워야만 할 수 있습니다. 끊임없는 훈련은 어떻게 하냐고요? 앞에서 선배들이 미리 가정하고, 연구하고, 결과들을 내놓은 아주 좋은 자료가 인터넷에 널려있습니다. WWW.PHRACK.ORG에 있는 글만 모두 봐도 이 훈련에 충분할 것이라 생각합니다. 3단계 가정의 증명과 실험을 하려면, 프로그램을 개발하거나 SQL문을 짜거나 스크립드문을 만들거나 하는 과정이 필요할 것입니다. 위 예에서 마이너스의 입력을 클라이언트가 막고 있다면, 클라이언트를 뜯어서 다시 만들 수 있어야겠죠. 자바로 만들어진 클라이언트면 자바를 알아야겠고, C로 만들어져있으면 C를 알아야겠죠?

위 3단계 과정을 통해 가정 할 수 있는것은, 웹 프로그래밍을 할 줄 알고, 웹 시스템의 구조를 알면, 웹을 해킹할 수 있을것이다 라는 것입니다. 사실이냐구요? 예, 정확하게 사실입니다. 그럼 리눅스의 관리자 권한을 획득하려면 어떻게 해야 할까요? 예, 리눅스의 동작 방식과 그 구조 등을 알아야합니다. 리눅스의 동작 방식과 구조를 어떻게 공부할까요? 운영체제 책을 보면 됩니다. 이렇게 하나하나 공부하면서 컴퓨터 전문가가 되면 자연스럽게 해커가 될 수 있습니다.

여러분, 해킹이라는것은 RPG 게임처럼 책을 줍는다고 기술이 배워지는것이 아닙니다. 물론 득템을 하는 분야도, 사부가 같이 다니면서 몬스터를 때려잡는 것도 아닙니다. 단지 컴퓨터에 전문가가 되고, 항상 시스템 문제점을 찾고, 그 문제점을 해결하는 과정에서 해커가 될 수 있는 것입니다.  여러분도 컴퓨터 전문가가 될 방법은 아실것입니다. 컴퓨터 전문가가 곧 해커입니다. 그러므로 컴퓨터 전문가가 되는 방법이 해커가 되는 방법과 정확히 일치합니다.

초등학생, 중학생, 고등학생 여러분들께 추가로 몇가지 더 말씀드리겠습니다.

위 에서 말한 것들은 어디서, 누가 제일 잘 가르쳐줄까요? 대학교의 컴퓨터 학과입니다. 컴퓨터 학과에서는 운영체제, 프로그래밍, 네트워크, 컴퓨터 구조 등 모든것을 가르쳐줍니다. 그럼 대학을 졸업한 사람들이 왜 다 해커가 못되는것이냐구요? 2단계:시스템 공략방식을 가정하고 3단계 가정을 증명하고 실험하는 훈련을 쌓지 않았기 때문입니다. 이들은 다른 분야, 즉 프로그래머나 시스템 엔지니어가 되려고 이런 훈련을 쌓지 않았기 때문입니다. (또는 나가리 대학생활을 보냈을수도 있구요) 대학교 수업을 열심히 들으면서, 시스템에 대한 문제점을 항상 고민하고, 증명하다보면 어느새 해커가되어있을것입니다. 저 4년짜리 커리큘럼을 혼자 공부하시겠다구요? 천재가 아닌 이상, 4년보다 훨씬 긴 시간을 필요로 할 것입니다. 주위에 대학을 경험하지 않고 보안을 하는 친구들이 많이 있는데요, 그들은 "보통사람보다 훨씬 좋은 머리"를 가지고 있거나 "알고보니 아주 얕은 지식을 가지고 있는" 해커 입니다.  대부분은 후자죠. 대학때 필수적으로 가르쳐주는 운영체제나 네트워크 등을 모르고 해커라니요. 이들은 단순히 다른 사람들의 기술을 배낄 뿐 입니다. 건축을 예로 들자면, 설계 하는 사람과 돌을 나르는 사람 둘다 건물을 짖기 위해 노력하는 사람들이지만 둘은 다르지 않습니까?

여러분 대학을 안가고 해킹 공부를 해서 최고가 되겠다는 허황된 생각은 버리셨으면 좋겠습니다. 대학만큼 컴퓨터 시스템을 잘 가르쳐주는곳이 없습니다. 그리고 여러분이 기대하시는 것 처럼 뛰어난 해커가 되면 대기업에서 스카웃해간다 모 이런거, 없습니다. 십년전에는 확실히 있었습니다. 하지만 지금은 없습니다. 단순히 시스템을 공략만 할 줄 아는 해커는 사회에서 필요로 하지 않습니다. 그 문제점을 정확하게 해결할 수 있고, 또 그런 시스템을 설계하고, 만들고 구축할 수 있는 생산성 있는 해커만들 사회에서 필요로 합니다. 그러려면 대학 생활을 해보아야 합니다. 부디, 지금은 학교 공부를 충실하게 하고 대학에 가서 많은 공부를 해봤으면 좋겠습니다. 잘못해서 대학에 안가고 해킹 공부한다고 도전하다가, 나중에 취업도 안되고 개고생만 합니다. 실제로 전 중 2때부터 여러분과 같은 생각으로 컴퓨터에 미쳐 살았었는데요, 대학과 대학원을 다니면서 훨씬 깊고 넓은 지식을 습득할 수 있었습니다. 저도 대학교 안가도 해킹으로 성공할 수 있을 것이라는 막연한 생각을 가지고 있었지만, 지금와서 생각해보면 대학과 대학원을 오지 않았다면 지금쯤 바보가 되어있을것 같다는 생각이 들어서 아찔합니다.

아무쪼록 정식적인 절차를 밟으면서 뛰어난 해커가 되시길 바랍니다.
Posted by Getroot

Leave your greetings.

  1. 레몬맛인간

    좋은 말씀 감사드립니다 ^^

    혹시 (중학생이) 대학교 컴퓨터학과의 강의를 다운받아 보면 도움이 될까요?

    2010/06/06 00:30 [ Permalink : Modify/Delete : Reply ]