1. 유닉스(Unix)의 해킹아래와 같이 소주제로 나누어서 설명합니다.(1) 유닉스에 대하여......(2) 본격적인 유닉스 해킹(1) 유닉스에 대하여......지금부터 여러분들에게 해킹에 있어서 필수적인 유닉스에 대해서 설명하겠다. 그렇다면 유닉스가 왜 해킹에 있어서 필수 적일까?내가 한참 걸음마 단계일때 이것의 이유를 제시하는 사이트는 그 어디에도 찾아볼수 없었다. 단지 유닉스는 해야 된다는 말 뿐이었다.하지만 여러분들은 그 가장 중요한 이유를 알아야 한다.우리가 흔히 뉴스나 아니면 신문지상이나 아니면 잡지에서 보게 되는 것은 누가 어디로 침입해서 시스템을 망가뜨렸다. 혹은 예금을자신의 구좌로 빼돌렸다. 하는 식일 것이다. 그러므로 우리가 침입하기를 원하는 시스템은 대부분 유닉스에 바탕을 두고 있다.거기에 침입하는 경로는 물론이거니와 설사 우리가 들어 갔다해도 명령어를 모르는데 무엇을 하겠는가 .....이제는 유닉스의 필요성을 이해 할수 있으리라 생각한다.간단히 유닉스란 운영체제이다. 여러분의 pc에는 운영체제로서 windows가 있을 것이다. 그리구 좀 오래 됐다면 dos일 것이구....그렇다면 운영체제가 뭔지는 대강 짐작할수 있으리라 본다. 더이상의 자세한 설명은 여러분을 우섭게 보는 것 같은 죄송스러운마음에 하지 않기로 하겠다.그런데 유닉스는 일반pc에는 사용하지 않고 보통 workstation급에서 사용하는데 이것은 여러 사람이 사용하는 컴퓨터로 생각하면쉬울것이다. 속도를 빠르게 하기위해 여러분들의 pc에 들어 있는것 같은 cpu가 여러개 병렬로 연결되어 있다.이런 cpu가 10개가 연결되어 있다면 속도가 대략 10배는 빨라진다는 결론이다.하지만 요즘은 pc도 워낙 속도가 빨라져 workstation과 그렇게 크게 차이가 나지 않는다.93년도에 내가 대학교 입학했을 당시 공대 터미널실이라는 곳이 있었는데 이곳은 전산센터의 workstation(이하 "웍"이라 하겠다)이 연결되어 있어 약 30개의 컴퓨터가 모니터와 키보드만이 있었다.처음엔 어리 둥절 ' - ' 'rw-' 'r--' 'r--' 이렇게 나누어 보면 쉬울것이다.가장 처음의 ' - ' 는 화일 인지 디렉토리 인지를 나타낸다(다른 의미들도 있지만 뒤에서 설명하겠다.). 위의 세번째 줄에는 'd'라고 되어있는 것을 볼수 있다.이것은 디렉토리를 의미하는 것이고 그냥 '-'라고 되어 있는 것은 화일을 나타내는 것이다.그러니까 위의 예제에서 첫번째 두번째는 화일이고 세번째는 디렉토리이다.다음 두번째 표현에서 'rw-' 는 사용자 즉 그 화일이나 디렉토리의 소유주의 권한을 나타낸다. 그러니까 소유주는 읽기와 쓰기를 할수 있다는 것이다.그리고 세번째는 그룹의 권한을 나타낸다. 그러니까 어떤 사람과 내가 같은 그룹이면 내가 그 사람의 화일 혹은 디렉토리를 이용할때 이부분이적용되는 것이다. 위의 예제에서는 ' r-- ' 이므로 그 화일을 읽을 수 밖에 없는 것이다.다음 네번째는 다른 사용자의 권한을 나타낸다. 서로 아무런 관계도 없는 사람이 그 화일을 이용할때 적용되는 부분이다.이해를 돕기 위해 종합적으로 설명 하겠다.위의 예제에서 첫번째 화일은 소유주만이 읽기, 쓰기를 할수 있고 그룹사용자와 다른이들은 읽기만을 할수 있다.두번째 화일도 역시 첫번째와 마찬가지 이다.세번째 디렉토리는 소유주는 읽고 쓰고 실행까지 할수 있고, 그룹 사용자와 다른이들은 읽고 실행만 할수 있다.디렉토리에서 실행이라는 의미는 그 하위 디렉토리나 혹은 그속에 포함된 화일들을 본다는 의미이다.그러므로 디렉토리에서 x가 없으면 아예 디렉토리를 들여다 볼수가 없다.화일들의 경우에는 실행화일이 아닌 일반적인 문서 화일들 같은 경우 그냥 보기만 하는 거니까 실행이라는 자체가 필요가 없는 것이다.그리고 위의 사실들을 종합해 보자 .유닉스에서 슈퍼유저 즉 시스템을 관리하는 이는 모든 화일과 디렉토리에 대한 접근 권한을 가질수 있다.그러므로 우리가 어찌 어찌 해서 모든 화일이나 디렉토리를 다른 사용자에 대해서 rwx로 만들면 해킹이 가능해지는 것이다.그러면 이제부터 본격적으로 유닉스에 대한 공부를 시 모두 지움) = ^u; eof ( 입력의 끝 ) = ^d;start ( stop되어 있는 화면을 계속 실행) = ^q; stop (한 화면에 표시할수가 없어 화면이 계속 넘어갈때 정지시킴) = ^s;susp (추후 수행하기위하여 프로세서를 일지 정지시킴)= ^z; rprnt (그 줄을 다시 출력함) = ^r;flush (대기중인 입력을 무시하고 그 줄을 다시 출력함)= ^o; werase (마지막 단어를 지움)= ^w; lnext (다음 문자를 특수 문자로 처리하지 않음)= ^v;이와 같은 내용들이 단축키로서 해결된다. 참고로 ^c 는 control 키와 c 키를 같이 누르는 것이다.1.2.1 Control - C프로그램의 수행시 작업이 완료되기 이전에 그 프로그램을 중단시킨다.1.2.2 Control-S / Control-Q프로세서의 출력이 화면에서 너무 빠르게 진행될경우 Control - S 를 누르면 화면이 정지된다. Control - Q를 누르면 나머지 화면이 계속 출력된다.1.2.3. Control-D예를 들어 어떤 문장을 편집할때 즉 유닉스의 경우 그냥 프롬프트 상에서 문장을 만들수가 있다.예) $ cat > love ......... cat 는 문장을 만들때의 명령어 이구 > 은 love라는 화일을 만든다는 것이다._ ......... 그러면 커서만 깜박인다. 이제부터 원하는 문장을 치면 된다.I love you ......... 원하는 문장을 이와 같이 치고 ^D를 누르면 love라는 화일이 하나 만들어 지는 것이다.^D$ ......... 문장이 종결되면 다시 프롬프트가 뜬다.참고로 유닉스 시스템에서는 확장자의 개념이 없다. 윈도우즈나 도스의 경우 실행화일은 확장자가 .com .exe .bat 등과 같이 사용되고 그림화일인 경우.gif . jpg 등과 같이 되는데 유닉스는 뒤에 확장자가 붙어도 그만 안붙어도 그만인 것이다. 그러니까 그림화일은 어떤 것이다. 하는 특별한 개념이 없다.1.3 패스워드 설정자신의 패스워드를 변경하기를 원하는 경우예d상위디렉토리로의 한단계 이동은 cd (한칸 띄우고) .. 이고최상위 디렉토리로의 이동은 cd(역시 한칸 띄우고) / 이다.1.12 화일의 삭제 : rm-i 옵션은 화일 삭제전에 사용자의 승낙을 얻는 것-r 옵션은 서브디렉토리를 포함한 모든 내용을 삭제1.13 화일의 소유권앞에서 화일의 소유권에 대해 언급한 바가 있다 여기서는 화일의 소유권을 변경하는 방법을 알아본다.chgrp : 화일 그룹 바꾸기$ chgrp [원하는 그룹] [화일명] ......... 사용방법은 이러하다chmod : 화일의 사용권한을 마음대로 변경할수 있다.예) $ ls -l ......... 화일과 디렉토리 목록을 보는 명령총 10-rw-r--r-- 1 sexyguy users 72 7월 1일 10:59 2-rw-r--r-- 1 sexyguy users 138 7월 1일 11:00 3-rw-r--r-- 1 sexyguy users 15 10월 12일 13:24 ds-rw-r--r-- 1 sexyguy users 11 10월 12일 11:25 her2 ......... 화일소유주만 읽고 쓸수있고 나머지는 읽기만 가능drwxr-xr-x 4 sexyguy users 512 10월 10일 17:31 www$ chmod 777 her2 ......... 모드 변경$ ls -l총 10-rw-r--r-- 1 sexyguy users 72 7월 1일 10:59 2-rw-r--r-- 1 sexyguy users 138 7월 1일 11:00 3-rw-r--r-- 1 sexyguy users 15 10월 12일 13:24 ds-rwxrwxrwx 1 sexyguy users 11 10월 12일 11:25 her2 ......... 화일소유주가 아니더라도 누구나 읽고 쓰고 실행가능drwxr-xr-x 4 sexyguy users 512 10월 10일 17:31 www위의 예제에서 chmod다음에 777이라는 것이 있다. 이것이 이 부분의 핵심이므로 잘 보기 바란다.그 화일의 앞 부분을 일단 네 등분 한다. 그러면기 위해 번번히 해킹을 시도한다면 증거를 언젠가 남기기 마련이고 '꼬리가 길어져서' 결국은 잡히기 마련이다. 자신만이 사용할 수있는 내부 버그(트로이 목마)를 남겨놓고 가는 것이 침입때 증 거를 남기지 않는 좋은 방법이기 때문에 해커들은 이를 애용하고 있다.해킹의 이해를 돕기위한 유닉스 상의 기초상식이제부터 나오는 내용들은 해킹을 이해하기 위한 유닉스상의 기초 지식이다.패스워드는 어떻게 관리되는가?보통 도용한 ID를 이용해 다른 시스템이나 ID의 소유주가 사용하고 있는 시스템의 관리자(root, Super user)의 자격을 얻어내기 위한 발판으로 삼는 경우가 있다.그러므로 자신의 도용당한 ID 때문에 피해를 본 쪽에서 조사를 한다면 자신이 하지도 않은 일 에 의심을 사게 될 수도 있게 되는 것이다.또한 ID를 도용당하면 자신만의 피해로 끝나는 일이 아닌 시스템의 피해까지도 야기할 수 있기 때문에 패스워드를 검증하는 절 차를 두어 패스워드를 모르는 외부인은사용하지 못하도록 막고 있는 것이다.하지만 이 패스워드를 사용하고 있다 하더라도 문제는 있다. 만일 다른사람도 충분히 추측해낼 수 있는 것으로 패스워드를 정했 다면 다른 사람이 마음만 먹으면자신의 ID를 사용할 수 있으므로 무용지물이 되는 것이다. 그래서 자신의 패스워드를 관리하는 것에 대해 말해볼까 한다.유닉스 시스템은 각 유저들의 패스워드 및 기타 정보를 /etc/passwd에 보관하고있다. vi나 cat을 이용해 이 파일을 살펴보자.( 단, 보는 방법이 어떤 시스템을 쓰느냐에따라 다르다. 위의 것은 일반적인 경우이고 위에 나온 NIS 시스템은 NFS 시스템과 함께 같이 뒤에서 설명하고자 한다.)NIS 시스템을 이용하는 경우: cat /etc/passwd나 ypcat passwd를 한다.NetInfo 시스템을 이용하는 경우: nidump passwd / 를 한다.예시로 몇줄만 들어보자.root:##root:0:0:Supervisor:/:/bin/cshdaemon:##daemon:1:1::/:uucp:##u