목록Dot-Gabi/Hacker School Trainer (10)
학사 나부랭이
해킹에는 Remote 해킹과 local 해킹이 있는데 remote 해킹은 대상 서버에 아이디를 가지고 있지 않을때, 아이디를 얻고자 시도하는 것이고 local 해킹은 서버에 일반 계정을 가지고 있을때, root 권한을 얻고자 시도하는 것이에요. SetUID UserID를 변경한다는 뜻인데 설명하자면 일시적으로 자신의 ID를 변경하는 것이에요. 예를 들어 plachina가 passwd 명령으로 비밀번호를 변경하면 root만이 조작 할 수 있는 shadow가 변경되죠. 이 passwd 파일에 루트 권한의 SetUID가 걸려있어서 일반 user가 passwd를 실행하는 동안 잠시 root로 변경된거예요. 정리하자면 SetUID는 파일에 걸리고 그 파일을 실행하면 user의 아이디가 변경되며 그 실행이 끝나면 ..
이번에는 전에 나왔던 권한에 대해 알아보는 시간이에요. Permission Denied는 사용자의 권한으로는 접근할 수 없는 파일이나 폴더를 접근하고자 할 때 만나게 되는 메시지예요. 사용자의 종류 User: 사용자 자신이에요. 사용자가 purachino라는 아이디로 로그인하면 purachino가 되고 platina라는 아이디로 로그인하면 platina가 되죠. Group: 모든 User는 하나 이상의 group에 속하게 되는데요. 변경하지 않는 이상 자신의 user과 같은 이름의 그룹에 속해있어요. Others: User와 Group을 제외한 다른 사람들을 의미해요. Root: 절대적인 권한을 갖는 사용자예요. 어떤 Permission deny도 당하지 않죠. 이 권한을 억지로 얻으려고 하는 것이 해킹..
이번에는 파일을 만들고 컴파일하고 실행하는 방법을 배울 거예요. cat cat > filename을 명령하고 원하는 내용을 다 적었으면 ctrl + d로 종료하면 filename이라는 파일이 생성돼요. 여기서 >는 리다이렉션으로서 왼쪽에서 출력된 것을 오른쪽(test.txt)의 입력으로 보내겠다는 뜻이에요. 그리고 리다이렉션을 두 번 사용하면 추가적으로 입력할 수 있어요. 소스파일을 만들고 싶으면 확장자명을 txt대신 c로 저장하면 돼요. 컴파일과 실행 gcc -o filename.exe filename.c가 컴파일시킨 부분이며 아무런 에러가 없는 걸 봐서 성공적으로 컴파일이 되었네요. 프로그램을 실행하는 건 "절대 경로/프로그램명"처럼 해도 되지만 현재 위치에 있는 프로그램을 실행시키려면 "./프로그램..
학교 프린터 서버 구축한다고 신경을 못 썼네요. 시간 나면 서버 구축한 거도 올려야겠어요. 이번에는 리눅스로 파일을 압축하고 해제하는 방법을 알아보는 시간이에요. tar 파일을 합치거나 합쳐진 파일을 해제하기 위해서 사용하는 명령어이에요. 여기에는 cvf targetfile1 targetfile2 ... 옵션을 줘서 파일을 합칠 수 있고 xvf targetfile 옵션으로 해제할 수 있어요. c(Create): 새로운 파일을 만드는 옵션이에요. x(eXtract): 합쳐진 파일을 해제하는 옵션이에요. v(View): 합치거나 해제하는 과정을 출력하는 옵션이에요. f(File): 파일로서 백업 하겠다는 옵션이에요. tar는 압축하지 않고 단순히 합치기만 하는 프로그램이라 용량이 줄어드는 일은 없어요. 대신..
이번에는 지난 시간에 본 passwd 파일을 분석할 거예요. 먼저 cat /etc/passwd로 passwd 파일의 내용을 볼 수 있어요. 그럼 엄청나게 많은 문자열이 출력되는데 그중 첫째 줄만 가져와볼까요? ⓐ 서버에 로그인할 때 사용되는 계정이에요. ⓑ 리눅스 버전 5.0까지는 암호화된 패스워드가 있었으나 크래커들의 해독 시도로 더 어렵게 암호화하고... 서로 소모전만 계속하다가 x라는 문자 하나만 남기고 패스워드는 /etc/shadow라는 파일에 넣어버려 관리자 권한을 가지지 않으면 볼 수 조차 없도록 했어요. 이 방식이 탁월한 크랙을 피하는 방법이라 리눅스 6.0 이후 계속 사용되고 있어요. ⓒ, ⓓ 컴퓨터가 알아보기 쉽게 사용자 계정과 그룹을 숫자로 표현한 거예요. ⓔ 사용자의 이름이에요. ⓕ ..
이번에는 서버의 정보를 수집하는 방법을 배워요. 어떤 프로그램이 설치되었는지, 서버의 주인은 뭘 하고 있는지,. 어떤 OS로 서버를 만들었는지 등의 정보를 수집하게 될 거예요. whoami 자신이 누구인지 알려주는 명령어예요. id whoami 보다 더 많은 정보가 나와요. /etc/passwd passwd 파일에는 이 서버에 접속한 사람들의 계정이 들어가 있어요. uname -a 커널의 버전을 알려주는 명령어인데요, 이 버전에 따라 리눅스의 성능도 달라요. 같은 레드헷 6.0 리눅스더라도 커널 버전이 높다면 속도와 안정성이 좋아요. 이 커널만 가지고도 많은 서버의 root 권한을 획득할 수 있어요. /etc/*release 서버의 OS가 어떤 버전인지 알려줘요. 이게 뭘 실행하라는 건지 궁금해져서 한 ..
이번에는 디렉토리와 파일에 대해 배울 거예요. 먼저 디렉토리 같은 경우에는 bin(BINaries): ls, rm 등 필수적인 리눅스 실행 파일이 들어가 있어요. boot: 부팅 관련 파일과 리눅스의 심장인 커널이 들어있어요. dev(DEVice files): 하드웨어에 관한 정보가 파일 형태로 저장되어 있어요. etc: passwd, shadow, 리눅스 설정 파일 등 많은 중요한 파일이 들어있어요. home: 일반 사용자의 디렉토리가 있어요. guest, trainer1~10, level1~20이 있죠. lib(LIBraries): 많은 라이브러리 파일이 들어있어요. mnt(MouNT): mount 명령을 사용해 마운트 시킨 CD-rom, 플로피 디스켓 등이 들어가요. proc(PROCess): 프로..
이번에 배울 내용은 터미널과 네트워크에 관한 명령이에요. trainer에서 진행되는 일부 프로그램이 리눅스의 기능이 아니라 프로그래밍된 파일이라 그런지 여기서부터 옥에 티 같은 게 나타나요. 예전에 돗가비 초반 과제도 선배들이 이렇게 만들어준 프로그램을 리버싱 하기 같은 거였는데... w 현재 서버에 어떤 사람들이 접속하고 있는지 확인하는 명령어예요. USER: 어떤 ID로 로그인 했는지 보여줘요. 저희는 trainer3이라는 ID로 로그인되어 있네요. TTY: 콘솔로 접속했는지 터미널로 접속했는지 보여줘요. tty는 콘솔, pts는 터미널이고 그 뒤의 숫자는 몇 번째 터미널로 접속했는지 보여줘요. 동시에 텔넷에 접속하면 순서대로 pts/0, pts/1, pts/2의 PTS를 받아요. FROM: 접속한 ..