강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

2. 레벨 1을 향하여

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle01.gif

작이 반입니다. 여러분들은 이제 리눅서이고 유닉서임과 동시에 해킹에 첫 발을 내딛으신 겁니다. 축하합니다. 자 그럼 또 놀아 볼까요?? 앞장에서 로그인 화면까지 띄어 보았습니다. 자 이제 로그인을 해보죠. 아 참 그전에 해커즈랩에서 레벨 0의 문제를 확인하셔야죠. icon04.gif 1. 레벨 0 문제 풀이 ######### # 문제 # ######### 누군가 우리 시스템에 침입하여 백도어를 설치하여 두었다. 당신의 임무는 그 백도어를 악용하여 다음 레벨로 진입하는 것이다. Hint - 디바이스도 아닌 것이 디바이스 드라이버 무리속에... 해커즈랩에 텔넷이나 데이터맨 프로그램으로 접속을 합니다. 로그인 창이 보이죠?? (여기서 로그인이라는 것은 매우 중요합니다. 해킹을 하기 위해서는 그 시스템의 쉘 계정을 가져야 하거든요 로그인 이라고 나오는 것은 여러분들이 그 시스템의 쉘 계정을 가지고 있다는 뜻입니다. 그러니까 쉘이라는 것은 여러분과 컴퓨터 사이를 매개해주면서 여러분들이 내린 명령을 컴퓨터에게 알려 주는 명령해석기라고 생각하시면 됩니다. 참고로 여러분들이 일반 사이트에 회원으로 가입을 한 후 사용하는 로그온과는 다른 개념이며 이것은 여러분들이 그 사이트의 회원으로 데이터 베이스에 저장되어 있다는 뜻이 되는 것입니다.) 로그인 합니다. login:level0 passwd:guest(실제로는 보이지 않습니다. 안되면 여러번 반복하시길...) 엔터 '빵' (어떻게 보면 여러분들은 해킹의 최초 단계인 계정을 얻기 위한 첫번째 레벨을 통과 하신거나 마찬가지입니다. 사실 실질적인 해킹은 공격 대상의 IP와 정보를 모으고 계정을 얻는 것이 첫단계입니다. 이렇게 쉽게 쉘 계정을얻을 수는 없겠죠.*^^*) 야!! 신이 납니다. 처음으로 유닉스 계열의 시스템을 접해 보기 때문에 신나기도 하고 두렵기도 할 것입니다. 그러나 걱정하지 마십시요. 곧 여러분들의 안방처럼 이 안을 휘집고 다닐 것 입니다. 기본적인 명령을 내려봅니다. [level0@drill level0]$ id uid=2000(level0) gid=2000(level0) groups=2000(level0), 9999(hackerzone) 해석)여러분의 유저아이디 그룹아이디가 나옵니다. 계정이 생기게 되면 각 계정마다 고유한 유저 아이디와 그룹아이디가 생기는 데요. 요거는 시스템 어드민 (루트, 슈퍼유저)이 정해 놓은 유저아이디와 그룹아이디 입니다. [level0@drill level0]$ whoami level0 해석)나 누구야?? 당신은 level0입니다. [level0@drill level0]$ ls Mail public_html tmp 해석)level0이라는 디렉토리에는 어떤 파일이 있니?? Mail public_html tmp파일이 있습니다. [level0@drill level0]$ ls -al total 1040 drwxr-xr-x 6 root root 1024 Aug 10 1999 . drwxr-xr-x 33 root root 1024 Jul 11 17:13 . . -rwxr-xr-x 6 root root 1024 Aug 10 1999 Mail *중략* drwxr-xr-x 6 root level0 1024 Jul 10 1999 public_html drwxr-xr-x 6 root level0 1048576 Jul 10 1999 tmp 해석) 더 자세히 보여줘(숨김파일 까지) drwxr-xr-x 6 root level0 1024 Jul 10 1999 public_html - ------- ---- ----- ---- ------------- ----------- | | | | | | | | | | | | | 파일명입니다. | | | | | 생성날짜입니다. | | | | 파일크기입니다. | | | 소유그룹입니다. | | 소유권자입니다. | 파일에 대한 퍼미션입니다. 디렉토리라는 뜻입니다. 파일 퍼미션에 대해서 알아 볼까요??(매우 매우 중요함) 위의 그림에서 보면 drwxr-xr-x라고 되어 있는 데요 요거이 파일 퍼미션을 나타내는 것입니다. 나누어서 생각하면 쉽습니다. -파일 유형 d: 디렉토리라는 뜻 파일은 기냥 - 입니다. 예)-rw--r--r-- -소유권자(root)는 r: 읽기 w: 쓰기 x: 실행(접근권한)권한 부여 -소유그룹은 r: 읽기 -: 없음 x: 실행 -기타(나머지 other)는 r: 읽기 -: 없음 x: 실행 즉 소유권자는 파일을 읽고 쓰고 실행할 수 있고 소유그룹과 나머지는 읽고 쓸수만 있다는 뜻입니다. 그럼 왜 다른 사람들에게는 쓸 수 있는 권한을 주지 않느냐고요? 그렇게 하면 맘 나쁜 사람들이 파일내용을 막 지워요 그럼 문제를 풀어 볼까요?? 해커가 우리 시스템에 백도어를 설치 했데요 그럼 백도어(back door) 부터 알아 봅시다. 백도어는 바로 뒷문이라는 뜻입니다. 일반 계정으로 로그인해서 이 백도어 파일만 실행 시키면 바로 루트(어드민, 슈퍼유저)가 되는 파일을 말합니다. 백도어에는 여러가지가 있는 데요 자세한 것은 여러분들이 더 공부를 하시고요 이렇게만 알아두면 될 것 같습니다. 그럼 어떻게 해서 그 파일을 실행만 시켰는데도 루트가 됐을 까요?? 백도어 파일에는 set uid라는 파일 퍼미션이 걸려 있어서 그렇습니다. 다음 파일을 한 번 보죠 [level0@drill level0]$ ls -al /usr/sbin/passwd 해석)/밑에 usr밑에 sbin밑에 passwd라는 파일의 내용을 자세히 보여줘 -rwsr-x--- 1 root users 요상한 s라는 퍼미션이 보인다. 이것이 바로 set uid라는 것이다. 소유권자는 루트이고 소유그룹은 사용자들이다. 나머지에게는 아무런 권한도 설정되어 있지 않아 구경도 못하는 파일이다. 그럼 set uid란 어떤 권한인가? 그 파일을 소유그룹이 실행했을 시에 파일이 실행되는 동안 소유권자의 권한을 일시적으로 갖게 되는 퍼미션이다. 아주 흥미로운 얘기이다. 해커즈랩의 모든 문제가 여기에서 부터 출발한다. set uid퍼미션이 걸린 파일을 찾아 요리조리 요리하여 바로 다음 레벨의 권한을 획득하고 그 권한으로 패스워드를 확인하고 다음 레벨로 접속하는 것이다. 백도어에 이런 권한을 설정해 놓은 이유를 조금은 아시겠죠 이제 문제로 돌아가서 힌트를 보자 디바이스도 아닌 것이 디바이스 무리에 있다고 했다. 디바이스(장치에 관련된 파일)파일은 /dev에 있다. 또한 디바이스파일은 디렉토리 부분이 c(character)파일 b(block)파일로 되어 있다. (brwxr-xr-x, crwxr-xr-x 요 따위로 되어 있다.) [level0@drill level0]$ cd /dev 해석) cd(change directory) /밑에 dev라는 디렉토리로 옮길래 [level0@drill dev]$ ls -al 엄청나게 많은 파일들이 막 지나간다.(나도 처음에 너무 놀랐다. 고럼 파일을 일일이 어떻게 보지???) [level0@drill dev]$ ls -al | less 파이프(|는 명령어 두 가지 이상을 사용할 때 쓰인다.) less는 출력 내용이 화면을 넘을 때 사용하는 명령으로 스페이스바는 앞화면을 b는 전화면을 나타낸다. drwxr-xr-x 6 root root 1024 Aug 10 1999 . drwxr-xr-x 33 root root 1024 Jul 11 17:13 . . -rwsr-x--- 6 level1 level0 1024 Aug 10 16:21 .hi *생략* 위의 파일 출력 내용을 보자 엥 set uid파일이 있네 거기다가 b나 c파일도 아니다. (디바이스도 아닌 것이 디바이스 무리에) 거기다가 소유권자는 level1이고 소유그룹은 level0(바로 여러분)이다. 일단 엄청나게 의심이 가므로 실행시켜 본다. [level0@drill dev]$ .hi 점(.)의 의미는 알겠죠(해커가 잔머리 굴리느 라고 숨김 파일로 해놓은 거죠) sh: .hi: command not found 에잉 요거이는 또 몬 소리다냐(그럼 요거이가 백도어가 아닌감???) 여러분들이 위와 같이 내리는 명령은 전부 PATH라는 환경변수내에 잡혀 있다. 여러분들이 명령을 내렸을 때 내린 명령이 PATH에 경로명으로 안잡혀있으면 실행이 안되고 위와 같이 "명령어를 발견 못했는 데요"라는 멍청한 말을 한다. 따라서 상대경로든 절대 경로든 경로를 지정해 주고 실행을 시켜줘야 한다. 절대경로: 절대경로는 /(최상위 디렉토리를 기준으로) 경로를 지정해 주는 것을 말한다. 상대경로: 상대경로는 현재 자신이 위치한 디렉토리를 기준으로 경로를 지정해 주는 것을 말한다. 아래 두가지 예로 명령을 내리는 것을 보여 주겠다. [level0@drill dev]$ /root/dev/.hi <--절대 경로 지정 해석)/밑에 root밑에 .hi를 실행해라 [level0@drill dev]$ ./.hi <--상대경로 지정 해석)현재위치(./)에서 .hi를 실행해라 위에서 상대경로를 지정할 때 쓰이는 ./가 나왔다. 이것은 현재 위치를 알려주는 것이다. 또한 ../는 현재 위치에서 상위 디렉토리를 가리킬 때 쓰이는 것이다. [level0@drill dev]$ whoami level1 우와 이렇게 신기할 수가?? 여러분은 현재 .hi를 실행시키고 level1이 되어있다. 축하한다. 이제 level1의 패스워드를 알아낸 다음 level로 진입하자. [level0@drill dev]$ pass 패스워드를 알아내고 해커즈랩 웹사이트에 들어가 문제보기를 클릭하면 level1의 계정과 암호를 넣게 된다. 그러면 축하한다는 메세지와 함께 level1의 문제가 보일것이다. 해답을 얻었다고 레벨이 상승됐다고 기뻐하지 말라 원리를 알아야한다. 공부를 해야한다. 기본적인 명령어를 다시 체크하자. 정답은 여러분들의 내공 상승을 위해서 가르쳐 주지 않는다. 자 이제 level2로 도전을 해보자.

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

이 사이트에서 제공하고 있는 내용은 개인의 경험을 바탕으로 제공되고 있습니다.
그러므로 이용시 예기치 않은 오류가 발생할 수도 있음을 알려드립니다.
여러분이 도움 및 정보를 바라신다면 저에게 메일을 보내 주십시요. 감사합니다.

www.dacker.wo.to copyleft (c) 2000 by park byoung-seo all lefts reserved

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,045 명
  • 현재 강좌수 :  35,861 개
  • 현재 접속자 :  76 명