본문 바로가기

Security Indicator/Guide for guru

해커의 길 I

해커의 길 그리고 나의 길 - 바로 뒤의 글에 언급된 해커의 길 I 탄입니다. 98년에 썼으니 무려 8년가량 된글이네요..

원본: www.nmrc.org

위의 URL 에 언급된 내용이지만 내용이 귀담아 들어야 할 내용이 있기에 이렇게 요약을 해봅니다

.
( 원문의 내용을 축약하고 간단히 하려고 했기에 의미가 손상되었을 수도 있습니다.)

=
[ 이 글은 수많은 사람들에게 똑같은 것을 말하기에 지쳐서 쓰는 글이라기 보다는 흥미있는 정보

를 지니고 있어서 쓰는 것이다. 만약 한명의 사람이 궁금해 하는 것을 묻는다면
거기에는 아마도 10여명의 묻지 못하는 사람들이 있을 것이라 생각된다. 그런 이유에서 이글을 쓴

다.]

이 문서는 지속적으로 갱신이 될 것이다.

최근에 다양한 주제에 대해서 묻거나 추천하는 프로그래밍 언어는 무엇이고 당신이 생각하기엔 어

떤 책을 먼저 보면 좋겠느냐 그리고 일반적으로 보안 부분에서 최고가 되기 위해서는 어떻게 하여

야 하는지와 그 위치에 도달하기 위해서 얻어야 하는 지식에 대해서 수많은 요청을 받고 있다
. 여기에서 나는 모두를 위해 그것에 대해서 털어 놓는다.

-----------------------------
어디서 시작하는가?
-----------------------------
이점에 대해서 나는 상당히 다른 의견을 제시한다. 만약 당신이 처음 시작 하는것이라면 당신에게

Technotronic,Bugtraq,Packetstorm,Rootshell , 등 의 소스를 보지 말 것을 제안한다.

그곳에서 시작하지 말라. ( 물론 그곳들은 좋은 사이트이고 내가 말한 것이 그곳을 당신이 방문해

서는 안된다는 것을 의미하지는 않는다. :=)

이유는 간단하다: 만약 당신이 아는 보안에 대한 생각이 최신 exploits을 아는것이라고 생각한다

면 당신은 많은 것을 알지못하는 당신 자신을 발견하게 될 것이다. 어떤 것이 서버권한을 얻고

얻지 못하고 하는것에 대해 아는 것은 좋은 것이다 그러나 그것이 지식의 굳건한 기초를 쌓는 것

을 제공하지는 못할 것이다. 당신이 RDS 가 최신의 에러요소를 지니
고 있다는 것을 안다고 할 때 당신은 어떤식으로 다운로드를 받고 스크립트를 실행시키는지를 알

고 그것을 패치 하는법을 만약 안다고 한다면 ; 지금으로부터 3개월 뒤면 그 패치는 널리 퍼져

있을 것이고 그 주제는 낡은 것이 될 것이다. -- 지금 당신이 가지고 있는 지식에서 무엇이 좋

은것인가? 잠시 생각해 보자. 얼마나 많은 주제에 대해서 당신은 이해를
했는가?

익스플로잇에 대한 당신의 지식인가 아니면 익스플로잇 자체인가?

상당수의 사람들이 만약 최신 exploits을 안다면 그들은 보안을 안다고 생각한다. 그러나
절대 !절대! 로 아니다. 당신이 exploits을 아는 것은 보안과는 다른 것이다.

Example: 당신이 phf,showcode.asp, Count.cgi , 그리고 test-cgi. 에 대하여 안다고 할 때
당신은 일반적으로 무엇이 CGI를 위험요소로 만드는지 아는가? 당신은 안전한 CGI의 코
딩을 어떻게 하는지 아는가? CGI 기반으로 작성된 다른 것에서 어떻게 피해를 줄 수 있는
지 당신은 아는가? 또는 PHF,showcode.asp , Count.cgi , test-cgi 등도 당신이 아는것과 다
른것인가?

그래서 나는 익스플로잇으로 시작 하지 말 것을 제안한다. 익스플로잇이 존재한다는 것을
무시하라 ( 물론 내가 어떤 의미로 말을 하는지는 당신도 알꺼다.) . 초보적인 사용자로 시
작하기 위해서 당신에게 필요한 것은 무엇이 있겠는가.


===============================

Becoming a User
===============================

만약 당신이 Web 해킹을 하려 한다면 당신은 web을 어떻게 이용하는지 알고 있는가?
좋다. 당신은 넷스케이프와 익스플로러를 이용할 수 있고... 또 URL을 타이프 할 수 있으
며 .html 파일이 웹페이지 파일인 것을 안다. 당신은 파워유저가 되기 위해서는 이과 같
은 과정을 거쳐야만 한다. .asp 와 .cgi 가 동적인 것은 분명하다. .php 는 또 무엇인가?
redirect thing 은 또 무엇인가?. cookies? SSL ? 이 모든 것 들은 normal user 가 마주 치
는 것들이다. EXPLOITS 없이 다만 정상적으로 이용하라. 기초적인 것들을 무시하면 당
신은 엘리트가 될 수 없다. 절대 공짜란 없는 법이다.

유닉스를 해킹하기 위해서는 최소한 로그인과 로그아웃 그리고 쉘 명령어를 이용 할 수 있
어야 되며 mail, ftp , web, 등의 애플리케이션 실행 시킬 수 있어야 한다. 당신은 기초를 아
는 것이 필요하다 그래야 관리자가 될 수 있을 것이다.

==============================

Becoming an admin
=============================

지금 당신은 사용자의 영역을 넘어서 조금 더 복잡한 사용에 익숙 해져야 한다.
좀 더 명확하게 말하자면 웹서버가 될 것이다. 서버의 타입은 무엇인가? 각각의 차이점은
무엇인가? 어떤식으로 당신은 그것을 구분 할 수 있을 것인가?
정답은 그것들이 어떤 식으로 작동하는 지와 무엇을 하는지를 알아야 한다. HTTP 가 무
엇인지 아는가? HTTP1.0 과 HTTP1.1 의 차이점은 무엇인가? 어떻게 HTTP 1.1 가상 호
스팅이 작동하는 지를 안다면 웹서버의 설치에 도움을 줄 것이다. 좀 더 깊이 들어가 보
자.

운영체제에 대해서. NT를 구분 할 수 없다면 어떻게 해킹을 할 것인가? 당신은 아마도 관
리자 패스워드를 크랙 하려 할 것이다. 어떤 식으로 rdisk를 실행시키고 사용자명과 패스워
드 등등의 관리 조차 하지 못하면서 말이다. 이제 당신은 관리자에서 power-admin 으로
격상 되어야함을 느낀다. .. 당신은 이제 GUI환경에서 사용자추가를 할 수 있다. GUI를 이
용하여 추가하는 방법이외에는 방법은 없는가? 커맨드 라인은 무엇을 말하는가? 어쨋든
이 모든 실행 파일들이 당신의 system32 디렉토리 내에 있는가? 이것들은 도대체 무엇을
하는가? 왜 usernetctl 이 suid를 필요로 하는지 아는가? 단지 usernetctl 이 필요한가?
좀 더 깊어져라. 좀더..

친밀하게 되라 이것이 핵심이다. 대충 알아서 되는 것은 없다. 당신이 찾아 낼 수 있을 만큼
을 알아 내라 그리고 초 절정고수 (guru ) 가 되라.~~

==============================

당신은 모든 것을 알수는 없다.
==============================
위의 말은 진실이다.. 할수 있다고 생각하지 마라. 만약 당신이 할수 있다고 생각한다면 당
신은 스스로를 어리석게 만들고 당신의 지식을 얇게 만들어 버릴 것이다. 당신이 무엇을 필
요로 하고 흥미가 있는지를 골라내고 더 배우라.

사용자가 되고 관리자가 되고 .. 초절정 고수가 되고..그리고... 사실상의 그 주제와 관련된
부분에 있어서는 오직 당신 이외에는 없는 넘버 1이 되어라.
웹을 사용하는 것과 CGI를 어떻게 쓰는지를 배울 필요는 없다. 기초에 충실하라.. HTTP를
알라. 웹서버가 어떤 식으로 작동하는지에 대해서 알고 어디에서 관찰하는지를 알아라.
이것이 동작하지 않을 때 에는 무엇이 그 원인 인가를 깨달아야 한다.

당신의 관심 분야에 대해서 친숙하게 알아 갈수록 자연스럽게 어떤 식으로 exploit을 하
는지를 알게 될것이다.

간단하지 않은가?.. 만약 당신이 모든 입력과 출력에 대해서 안다면 , 보안은 이 입력과
출력의 범주에 속한다. 최신의 exploits 에 속하는 것 물론 과거의 것과 미래의 exploits 은
보안에 포함 되지 않는다. 당신이 초절정 고수가 되어가는 과정에서 당신은 알려지지 않은
작은 사실들을 발견 할 수도 있다. .. 대단 하지 않은가?.. 이것이 exploits 이다. 조작을 하
기 전에 당신이 본 것과 어떻게 그것이 작동하는지에 대한 이해가 필요 하다.

자.. 가서 CGI 가 실제로 무엇인지, 어떻게 HTTP 에 영향을 미치는지, 어떻게 웹서버가 그
것을 실행하는지에 대해서 배우라.. 그러면 당신은 무엇을 하는지 이해 할수 있을 것이다.

들어서 아는 것과..이해하는 것의 차이는 명확하다!!!!

==========원문 끝==========


>사견 첨가

해킹을 하기 위해선.. exploit 이전에 HTTP 가 무엇인지 TCP/IP 가 어떤식으로 작동 되는
지에 대한 이해가 우선 되어야 한다. 해킹이 목적이 되어선 결코 배울 수가 없을 정도로 따
분하고 지루할 수 있지만 이 과정을 넘어야.. 당신은 당신이 하려는 것이 무엇인지 알 수 있
을 것이다.

기초가 없이는 종속 될 뿐이다.

HTTP, TCP/IP 등의 기초적이고 지루한 이론 에 충실 하지 못하기에 거의 대부분의 해킹
기법과 exploits 이 외국에서 나오는 지도 모른다. 어쩌면 우리에게 OS를 만든 역사가 없
다는 것이 시스템 프로그래머의 사장과 그 이론의 구체화와 전파에 지장을 주었을 것이다.
이제 리눅스라는 걸출한 영물이 하나 우리에게로 던져 주었다.
이제 우리는 무엇을 할것인가?..
우리손으로 OS를 조작 할 수 있게 되었다. 그런데도.. 외국에서 만든 익스플로잇이나 돌리
면서 잔머리 굴리기를 언제까지 할것인가?.. 진정한 해킹이란.. 툴이나 기존에 완성된것이라
기 보단.. 창의적인 작업이다... 바로 이것이 무기이자 경쟁력이 되는 세상이다.
우리에게는 창의 성이 없다. 다만 응용만이 있을 뿐이다. 기초가 없는 응용은 발전에 한계를
가진다. 창조 하지 못하면 곧 죽음이 되는 시대가 올 것이다. 그러나 우리는 기초를 보려
하지 않는다. 단순히 가장 빠른 exploits을 적용해 가며 으쓱하는게 자랑인가?..
어느 서버를 해킹해서 어떻게 했다.. 이게 자랑인가?.. 물론 자랑일수 있다. 그러나 그것이
다는 아니다. 기초를 무시해서 망가진 것을 우리는 수도 없이 봐왔다. 삼풍, 성수, 정치,경
제 ... 이 모든 것을 목격한 우린 다르다고 말을 하지만.. 알고 보면.. 판만 바뀌었다 뿐이지
똑같지 않은가?.. . 바뀐 세대들이여.. 그대들이 말하고자 하는 것은 무엇인가?..
깊이 이해 하려 하지 않고 흐름을 쫓기 좋아 하지만.. 그래선 언제나 쫓아 가기만 할뿐이다.
생각을 바꾸면 우리 길을 만들 수 있다...우리 윗세대가 우리에게 밥굶지 않는 생활을 만들
어 주기 위해 그렇게 고생을 하였다면 이제 우리는 다음세대에게 어떤 모습으로 비춰 질것
인가?..또 어떤길을 갈 것인가?.. 우리가 우리의 길을 갈 수 있다면 그것 부터가 최초의 길
이 아니겠는가?.... 마음을 편안히 가져라.!!.. 당장 오늘 결판이 나는 것은 아니다. 오늘 나온
exploits을 알지 못한다 하여 불안해 하지 마라.. 해킹 기법이라면 무조건 익혀야 된다는 생
각을 버려라.. 기초를 알면.. 화려함으로 포장된 이면을 볼 수 있다... 알고 보면.. 아무 것도
아닌 것이다.!!!

개인적인 경험을 말하자면

나는 프로그래머다.. 지금 8년째 공부를 하고 있으며 그 중에서도 5년 이상의 기간을 C 언
어 라는것만 집착했다... 고집스럽게도 이해하기 전에는 넘어 가지 않으려 했다... 처음엔 답
답하고 아무리 해도 끝이 보이지 않던 것들이.. 바닥으로 바닥으로 계속 파헤치다 보니 컴퓨
터 구조 까지 공부하게 되었다. 그리고 다시 C 언어를 공부했다.. 그래도 모르겠더군..
솔직히 머리가 나빠도 이 정도로 나쁠수 있을까 하는 의심 조차 들었었다. 그런 시간을 인
내하며 끝없이 바닥에서 다시 시작 하고 또 시작 했다. 컴맹으로 시작해서 2년의 시간이 지
날때쯤에야 머리속에서 프로그램을 컴파일 시키고 문제가 생길 수 있는 부분을 예상 할 수
가 있게 되었다. 그리고 군대에서.... 컴 퓨터를 접할 수 없었던 나는 머리속으로 생각 하고
또 생각 하게 되었다. 어느 순간 모든 것이 명확해 지더군.. 수백번도 더 보았던 구절이 명
확하게 이해가 되고 내 나름대로의 방식을 가질 수 있게 되었다... 그 때에도 수많은 화려
한 언어들이 명멸하고 이름을 날렸지만 불행인지 다행인지.. 고집스럽게 그거 하나에만 매달
렸었다... 그리고 지금.. 한달의 기간이면 하나의 언어를 내 식대로 다를 수 있게 되었다. 또
그렇게 사용하고 있다. 어차피 한정된 자원을 이용하는 것은 마찬가지이기에 겉으로 드러나
는 화려함 보다는 내부의 자원을 이용하는 것을 보는 것이다.. 그러면 사용할 수 있는 방법
이나 책에 나와 있지 않은 방법. 매뉴얼에 언급되어 있지 않은 새로운 것들을 활용 하고 가
공 할 수 있는 상태가 되었다.. 이제 나는 GURU 의 길로 간다.... 내가 남긴 글이 당신들에
게 도움이 되기를 바라며.. 절대 조급하지 말기를 바란다.. 해킹이란 것은 오히려 프로그래밍
보다 유행주기가 훨씬 짧다.. 그러기에 더더욱 보이는 현상에 집착하지 마라... 기초를 알면
모든 것은 자연히 이해가 된다... 오늘 애써 익힌 소스일지언정 며칠 아니 몇시간이 지나면
써먹을 수 없을지도 모른다.~~.. 당신은 한순간의 자만을 위해 당신의 귀중한 시간과 인생을
낭비할 것인가?... ..

기초를 익혀라..

그것이 진정한 해커의 길이다.!!

창의력으로 승부하는 진정한 해커의 길이다.!!

winsnort@hotmail.com : 바다란
- 지난 98년 쯤에 썼던 글입니다.