해킹에는 두 가지가 있습니다. Local 해킹과 Remote 해킹입니다.
 Local 해킹은 해킹하고자 하는 서버에 루트( root ) 권한이 아닌 일반 계정을 가지고 있을 때, root 권한을 얻으려고 시도 하는 것을 말합니다.
 반면 Remot 해킹은 자신이 해킹하고자 하는 서버에 아이디가 없을 때, 아이디를 얻고자 시도하는 것을 말합니다. 

 이 중에서 가장 중요하다고 할 수 있는 것이 Local 해킹입니다. root 권한을 얻은 순간 여러분은 해당 시스템을 손에 넣은 것이 됩니다. 즉, 해킹이란 정상적인 방법이 아닌 방법으로 root 권한을 얻는 것을 말합니다. 


SetUID 라는 개념이 여기에서 등장합니다. 지난번 트레이닝의 마지막에 물음표를 남겼었습니다. 분명 비밀번호를 관리하는 shadow라는 파일은 root 계정에게만 읽기 권한이 있었습니다. 하지만 만일 내가 내 비밀번호를 바꾸려고 시도 할 때 어떤 일이 발생 할 까요? 권한이 root에게만 있기 때문에 root가 아닌 나는 나의 비밀번호를 바꿀 수 없게 됩니다. 하지만 실제 시스템에서는 내가 내 비밀번호를 바꿀 수가 있습니다. 어떻게 된 일까요?

 여기에서 SetUID의 필요성이 나타납니다. SetUID는 일시적으로 자신의 ID를 바꾸는 것을 의미합니다. shadow에 접근하기 위해서 일시적으로 UID를 root로 바꾸는 것을 허용해야 합니다. 이를 이용해서 해킹을 시도 할 수 있습니다.

 이런 SetUID가 없다면 root는 매우 바빠져야 할 것입니다. 패스워드를 바꾸고자 하는 유저가 많을 때, SetUID를 사용하지 않다면 root는 매번 해당 유저의 패스워드를 바꿔줘야 하는 일이 발생합니다. 이러한 SetUID는 shadow 파일에만 걸리는 것이 아닙니다. 리눅스의 여러 파일들이 이런 SetUID를 가지고 있습니다. 일반 유저가 이러한 파일을 다루면서 잠시 SetUID를 빌리고 어떠한 버그를 이용해서 SetUID를 유지, 즉 root권한을 획득하게 되면 시스템은 여러분의 것이 됩니다. 
 이런 버그에는 "버퍼오버플로우", "포맷 스트링 어택", "링크 버그" 등이 있다고 합니다. 


 그럼 수 많은 리눅스 파일중에 SetUID가 걸려있는 파일은 어떻게 찾을까요?

$ ls -al /usr/bin/passwd

위 명령어를 입력해보면, /usr/bin/passwd 에 대한 권한 정보들이 나옵니다. 그 중에 익숙하지 않은 것이 있습니다. 바로 "S"라는 글자입니다. 바로 이 녀석이 SetUID를 의미하는 문자입니다. s가 유저의 실행부분에 걸려있기 때문에 다음과 같이 해석 할 수 있습니다.  "모든 유저는 이 파일을 실행 할 때, SetUID를 이용해서 root의 권한을 얻게 된다. "


$ find / -perm -4000

위 명령어의 의미는 "/" 폴더의 하위 폴더에서 -perm 퍼미션에 SetUID가 있는 파일을 찾아라" 라는 뜻입니다. 

-perm 퍼미션과 일치하는 파일을 찾는다.
-name 이름과 일치하는 파일을 찾는다.
-user 유저와 일치하는 파일을 찾는다.
-group 그룹과 일치하는 파일을 찾는다.

 
이런 것들을 이용해서 여러분은 root권한을 얻으려고 노력할 것입니다. 이제 과정은 없습니다. 여러분이 배우는 하나하나가 여러분의 해킹 기술에 피와 살이 될 것입니다. 해커의 세계에 오신것을 환영합니다. 앞으로 레벨을 높여서 엘리트 해커가 되어 봅시다. !!


네이버 지식인을 돌아다니다가 해커를 검색했더니 해커의 스킬레벨 분류라는 글이 눈에 띄었습니다.  


 해커도 실력에 따라서 그 등급이 매겨지는 모양입니다. 하긴 인터넷 게임이나 커뮤니티를 돌아다니면 해킹을 하겠다고 협박을 하는 귀여운 아이들이 많이 보이기는 하니까, 해커의 범주를 어느정도 정해 놓는 것도 흥미로운 일이긴 하겠네요.

 레벨은 낮은 순서대로 하도록 하겠습니다. 먼저 소개하는 스킬레벨일 수록 저급 능력을 가진 해커( 뭐 해커라고 하기에도 뭐한 레벨도 있습니다만 ) 입니다. 아 출처는 네이버 지식인 『아하 그렇구나!』입니다.


~Cookiecat at Computer~
~Cookiecat at Computer~ by ~Sage~ 저작자 표시비영리변경 금지

1) 레이머

해커는 되고 싶지만 경험도 기술도 없는 이들이다. 어떤 상황에서도 이들을 해커라고 불러서는 안된다. 크래커라 불러야 한다. 이들은 네트워크와 운영체제 관련해 기술적인 지식이 없다. 이들이 컴퓨터를 사용하는 유일한 목적은 게임과 IRC 채팅. 와레즈 사이트를 찾거나 크레디트카드 사기 등이다. 신문 잡지 등의 대중매체를 통해 해커에 익히 들은바 있는 이들은 스스로를 엘리트로 착각하는 그릇된 우월감에 빠져있다. 트로이 소프트웨어, 누킹, DoS 툴만 있으면 크래킹을 할수 있다는 생각에 트로이 목마나 GUI 운영체제용 해킹툴을 다운받는다. 이들의 우월감은 해커가 되고싶어하는 같은 부류, 같은 상황, 같은 수준의 다른 이들에게 영향을 준다. 이들이 말은 IRC 인터넷 커뮤니케이션 공간을 통해 전파되고 사이클은 반복된다. 이들중 대다수가 엘리트 레벨로 오르기 위한 기술적 능력이 부족하다. 몇년동안 공부하고 교육받고 컴퓨터를 사용해도 마찬가지로, 디벨로프트 키디 수준에 머물다가 은퇴한다.


Information Superhighway
Information Superhighway by nickwheeleroz (on holiday) 저작자 표시비영리동일조건 변경허락

2) 스크립트 키디

디벨로프트 키디와 레이머의 중간격으로 스크립트 키디는 양쪽의 특징을 모두 갖고있다. 이들은 해커라는 타이틀을 절대 얻지 못한다. 네워킹이나 운영체제에 관한 약간의 테크니컬한 지식이 고작인 이들은 GUI 운영체제 바깥 세상으로 나와본 적이 없다. 이들은 컴퓨터 지식을 와레즈에 사용한다. 이들에게 있어 해킹은 보통 알려진 트로이 목마를 사용해 평범한 인터넷 사용자를 공격하고 괴롭히는 것이다. 스크립트 키디와 레이머의 차이점은 나이와 약간의 지식이다. 이들은 대부분 학생으로 컴퓨터 수업시간에 선생님이 모르는 것이 있으면 이들에게 물어본다. 때문에 이들보다 낮은 레벨의 학생들은 이들을 엘리트 레벨로 착각하고 우러러보게 된다.


Stowaway Keyboard Equipped Newton
Stowaway Keyboard Equipped Newton by splorp 저작자 표시비영리변경 금지

3) 디벨로프트 키디

어린 연령대의 이들은 보통 십대 후반의 학생들로 구성된다. 이들은 해킹 기법에 관한 책들을 많이 읽었고, 기법을 어디에 사용할 것인지 알고있다. 익스플로이트가 먹혀들만한 취약점을 발견할때까지 여러번 시도해 일단 시스템 침투에 성공하는 경우 보통은 (의식적이든 무의식적이든) 이성을 잃고 시스템을 파괴한다. 그리고 나서 그들의 행위를 동네방네 자랑하며 떠들고 다닌다. 이들중에는 해커라는 타이틀을 얻는 이도 일부 있지만 대부분은 크래커라 불린다. 보안상 취약점을 새로 발견하거나, 최근 발견된 취약점을 주어진 상황에 맞게 바꿀만한 실력이 이들에게는 없다. 필요한 경우 서비스와 지식을 동원할 수는 있지만 네트위킹의 기초가 없고 GUI 운영체제를 제외한 다른 수준높은 운영체제에 대한 기본지식이 없다. 유닉스를 방금 시작했거나 기초만 알고 있는 경우가 대부분이다. 이들은 추적방지법을 알지 못한다. 보통 집에서 훔친 다이얼업 어카운트를 이용해서 크래킹을 한다. 네트워크 침투에 성공하면 사방에 자랑하고 다닌다. 레벨은 크레디트카드 사기, 와레즈(불법 복제 소프트웨어를 지칭하는 용어) 해적판, 누킹, DoS 같은 심각한 컴퓨터 범죄에 연관되어 있다. 법의 심판을 받는 것은 당연한 일이다. 일단 구속되면 사회가 자신의 죄를 어떻게 평가하고, 얼마나 엄격한 응징을 내리는지를 깨닫게 된다. 보통은 형을 살고 크래킹을 그만둔다.


$100-ish Laptop mockup and A-TEST motherboard
$100-ish Laptop mockup and A-TEST motherboard by curiouslee 저작자 표시

4) 세미 엘리트

이들의 연령층은 위의 엘리트 해커에 비해 조금 낮은 편이다. 컴퓨터에 대한 포괄적인 지식이 있고, 운영체체 시스템을 이해하고 있으며, 운영체체에 존재하는 특정한 취약점을 알고, 취약점을 공격할 있는 익스플로이트를 코딩할 정도의 최소한의 지식으로 무장되어 있다. 언론에 보도되는 해킹 사건은 대부분 부류의 해커에 의한 것이다. 이들은 스스로의 재능을 내보이고 싶어하기 때문에 엘리트 해커들의 눈총을 받는다. 엘리트 해커들의 입장에서 보면 이건 어리석은 짓이기 때문이다. 이들의 기술은 엘리트 레벨이 되기에는 부족하다. 크래킹 엄청난 양의 로그와 자취를 남겨 시스템 관리자들에게 종종 덜미를 잡혀 검거된다.



sleep is the enemy
sleep is the enemy by striatic 저작자 표시

5) 엘리트

3133t, 31337, 3
337 로도 알려져 있음. 보안산업의 최전선에 위치한 이들의 능력은 한계가 없다. 다른 업종에 비해 나이가 들수록 원숙한 레벨을 유지하는 것이 특징이다. 이들은 운영체제의 안팎을 죄다 꿰뚫어보고 있다. 프로그래밍은 기본이다. 타고난 재능의 뛰어난 실력자들이다. 보안의 특성상 이들중 보안업계에 종사하는 이는 극소수에 불과하며, 데이타 입력이나 헬프데스크 등에서 일하는 이는 더러 있다. 지식에 대한 끝없는 목마름과 호기심은 이들에게 있어 성공과 실패를 판가름하는 요인이다. " 코드는 루트가 아닌 일반사용자로 실행하면 세그먼트 오류를 일으킬까" 이런 류의 의문점이 들면 해결책을 찾을때까지 노력하고 노력한다. 엘리트 해커는 알고있는 지식을 적용시켜 자기의 마음에 들때까지 고치고, 고치는 방법으로 환경을 개선한다. 운영체제나 소프트웨어에서 취약점을 발견하면 앉은 자리에서 취약점의 근원과 원인을 추적하며, 때로는 가능한 해결책도 발견해 낸다. 고도의 테크닉과 노련함은 잡히지 않기 위해 필수로 갖추어야 조건. 엘리트 해커는 시스템 안팎을 흔적도 없이 해킹한다. 기술은 해킹을 당했다는 사실조차 알아채지 못할 정도로 신기에 가깝다. 이들이 해킹을 하는 이유는 단순하다. 자신이 시스템에 침투했다가 조용히 떠날수 있다는 것을 증명하려는 것뿐. 그러므로 추적당할 있는 데이타만 지우고 나머지 다른 데이타에는 손을 대지 않는다. 이들은 마음만 먹으면 네트워크 전체를 다운시킬수도 있고, 시스템에 침투해 복구 불가능하게 만들수 있는 실력의 소유자이들다. 그러나 이들은 그렇게 하지 않는다. 왜냐면 엘리트이기 때문이다.


 나중에 크래커 vs 크래커 라는 주제로 다른 포스팅을 한번 할텐데요. 해커레벨이 어떻고, 크래커와 다르고 어떻고를 떠나서 한 시스템에 허락받지 않고 침투하는 건 똑같지 않을까요? 다만 의도가 White하냐 Black하냐에 따라서 분류를 하는것일 뿐이겠지요.
 해커가 되기위해서는 범법의 경계를 아슬아슬하게 넘나 들어야만 하는 것 같습니다.


+ Recent posts