Trainer 1
id: trainer1
pwd: welcome
(1) ls
- 기초적인 프롬프트에 대한 설명
- 접속 id@서버 현재위치 / trainer@ftz trainer1
- ls: 현재 경로에 있는 파일 및 디렉토리 출력
- ls -l: 현재 경로에 있는 파일 및 디렉토리의 자세한 내용 출력
* - (파일) / d(디렉토리) / 날짜 앞의 숫자는 파일의 용량
- ls -a: 현재 경로의 숨겨진 파일이나 디렉토리를 출력
- ls -al: 현재 경로의 숨겨진 파일이나 디렉토리의 자세한 내용 출력
* 숨겨진 파일명은 가장 앞부분에 "."이 들어감
Trainer 2
id: trainer2
pwd: linuxer
(1) pwd 명령어: 현재 경로를 출력
(2) cd 명령어
- cd: 디렉토리를 변경/이동 ( change dirextory )
- cd .. : 상위 디렉토리로 이동
- cd 디렉토리명: 입력한 하위 디렉토리로 이동
- cd / : 최상위 디렉토리로 이동
(3) mkdir 명령어: 새로운 디렉토리를 생성 (make directory)
(4) rmdir 명령어: 입력한 디렉토리를 삭제 (remove directory)
(5) cp 명령어: 파일을 복사 ( copy, cp 복사원본 복사사본)
(6) rm 명령어: 파일을 삭제 ( remove)
(7) mv 명령어: 파일 이름 변경 (move, mv 복사원본 복사 사본)
Trainer 3
id: trainer3
pwd: computer
(1) w 명령어: 서버에 어떤 사람들이 접속해 있는지 확인
(2) finger -l 명령어: 해당 사용자에 대해 보다 많은 정보를 출력
(3) tty 명령어: 자신의 터미널 확인
(4) ifconfig 명령어: 현재 접속한 서버의 ip를 출력
(5) write 명령어: 해당 번호 사용하는 사용자에게 쪽지 보내기 ( write ID /dev/pts/pts번호 )
(6) wall 명령어: 현재 접속한 모든 사용자들에게 쪽지 보내기 (wall 보낼내용)
Trainer 4
id: trainer4
pwd: mungguta
(1) 각 디렉토리의 역할
- bin: 필수적인 리눅스 실행 파일의 집합 (ex. ls, rm)
- boot: 리눅스 부팅 관련 파일들과 커널이 들어있음
- dev: 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장
- etc: 패스워드 파일, 쉐도우 파일, 리눅스 설정 파일 등 중요한 파일이 저장
- home: 일반 사용자들의 디렉토리 저장
- lib: 라이브러리 파일 저장
- mut: mount 명령을 사용하여 마운트 시킨 시디룸, 플로피 디스켓 등을 저장
- proc: 프로세스들이 파일 형태로 저장
- root: 일반 사용자와 달리 루트의 홈 디렉토리를 별도로 저장
- sbin: 기본 명령을 제외한 시스템 관리용 실행파일 저장
- tmp: 임시로 파일을 저장, 권한에 상관없이 누구나 파일 실행 가능
- usr: 다양한 응용 프로그램들이 설치
(2) 주요 파일 내용
- /etc/passwd: 사용자들에 대한 간단한 정보 저장
- /etc/shadow: 사용자들의 패스워드 저장, 아무나 접근 못함
- /etc/services: 서버가 어떤 서비스를 하는 중인지를 보여줌
- /etc/issue.net: 처음 접속될 때 나오는 화면
- /etc/motd: 로그인 후에 나오는 메세지
- ~/public_html: 각 사용자들의 홈페이지 파일 저장, 해킹 성공시 보통 'hacked by ---' 남김
Trainer 5
id: trainer5
pwd: goodluck
(1) 정보수집
- whoami: 자신이 누구인지
- id: 보다 자세한 자신의 정보
- /etc/passwd 파일: 모든 사용자들의 정보를 저장
- uname -a 명령어: 서버의 커널 버전을 알아봄
- root 권한: 리눅스나 유닉스에서 파일을 관리하는 절대적인 관리자 권한
- /etc/*release: 서버에 설치된 OS 버전을 확인할 수 있는 파일
- rpm -qa: 패키지의 정보를 얻는 명령어
- /proc/cpuinfo: 해당 서버의 cpu 정보를 수집할 수 있는 파일
Trainer 6
id: trainer6
pwd: coffee
(1) 패스워드 파일 분석 방법
- cat 파일이름: 파일의 속내용을 화면으로 뿌려주는 역할
-/etc/passwd: 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
(2) /etc/passwd 분석
- root: 서버에 로그인할 때 사용되는 아이디(계정)
- x: 암호화 되어있는 패스워드, /etc/shadow에 있음 (아무나 열 수 없음)
- 0: 현재 접속자가 root임을 표기
- 0: 해당 사용자가 속해있는 그룹
- Admin: 사용자의 이름을 표기
- /root: 해당 사용자가 로그인에 성공 했을 때 기본으로 위치하는 디렉토리
- /bin/bash: 사용자가 처음 로그인 했을 때 실행되게 할 프로그램
Trainer 7
id: trainer7
pwd: to the top
리눅스는 서버의 용도로 사용되기 때문에 수시로 새로운 데이터들이 업데이트 됨
백업: 하드에 들어있는 데이터를 똑같이 다른 곳으로 복사하여 안전하게 보관하는 것
(1) tar
- 합치기: tar cvf 합칠파일 합칠파일들
- 해제하기: tar xvf 해제할파일
- c: 새로운 파일을 만드는 옵션, create
- x: 압축을 해제시키는 옵션, extract
- v: 압축이 되거나 풀리는 과정을 출력하는 옵션, view
- f: 파일로서 백업을 하겠다는 옵션, file
- 여러개의 파일을 하나로 합칠 수 있으나 용량이 줄어드는 것은 아님
(2) gzip
- gzip 파일이름: 선택된 파일을 압축
- gzip -d 파일이름: 선택된 파일을 압축 해제
(3) 확장자
- tar: tar 프로그램으로 압축된 것으로 실제 압축이 아닌 하나로 뭉친 것
- gz: gzip 프로그램을 사용하여 압축된 파일
- tar.gz: tar 프로그램을 사용해 합친 후, gzip으로 압축한 파일
- tgz = tar.gz
Trainer 8
id: trainer8
pwd: player
(1) 새로운 파일 생성
(2) 파일 실행
Trainer 9
id: trainer9
pwd: programming
(1) 권한 Permission
- 유저: 자기 자신을 의미
- 그룹: 모든 유저는 하나 이상의 그룹에 속함. 임의 변경 없을 시 자신의 유저네임과 동일한 그룹
- 아더: 유저와 드룹을 제외한 모든 다른 사람
- 루트: 절대적인 권한을 가지는 사용자
(2) id 명령어 풀이
-id (User ID) gid(Group ID) groups(현재 자신이 속해있는그룹)
(3) 파일의 권한 정보 분석
- rwx rwx rwx: 유저의 권한 / 그룹의 권한 / 아더의 권한
- r(읽기권한): 파일의 내용을 읽는 권한 cat 명령어 사용이 가능한가
- w(쓰기권한): 수정권한, cat이나 편집기를 사용해 내용을 추가, 변경할 수 있는가
- x(실행권한): 윈도우와 달리 이를 확인해야 실행이 가능한지 알 수 있음
- trainer 9: 유저가 누구인지 나타냄
- trainer 10: 그룹이 무엇인지 나타냄
Trainer 10
id: trainer10
pwd: best!
(1) 해킹
- Remote 해킹: 자신이 해킹하고자 하는 서버에 아이디 없을 때 아이디 얻고자 함
- Local 해킹: 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때 root 얻고자 함
- 관리자 권한 획득 = 해킹 성공
(2) SetUID
- 일시적으로 자신의 ID를 변경하는 것
- 쉐도우 파일은 root만 변경할 수 있는데 패스워드를 사용자가 변경할 때 사용되는 방법
- passwd파일 이외에도 수십개의 파일에 걸려있음
(3) Buffer Over Flow
- joe 파일은 root 권한으로 SetUID가 걸려있음
- 이는 문서편집 시 사용하는 파일로 joe filename을 입력하면 파일 편집 화면 출력
- 1000자가 넘으면 프로그램이 제대로 실행되지 않으므로 이를 이용한 오버플로우 기법
- 1000자가 넘어 에러나는 순간에 /bin/bash 파일을 실행하도록 조작 -> root 권한의 쉘 획득
- "C 언어"로 구현이 가능함
(4) SetUID가 걸린 파일인가?
- s: setUID를 의미 x를 포함하는 실행권한
- /usr/bin/psswd 파일은 root에게 읽기와 실행이 있고, root 그룹에게는 실행만, 이외에게도 실행 권한이 있음
- root에게 setUID가 걸려있기 때문에 어느 사용자도 이 파일 실행시에 root 권한을 가지게 됨
- / 에서부터, 적어도 serUID가 걸린 모든 파일을 찾아라
- 4000 앞 -(적어도), -perm (권한을 찾겠다) 4(SetUID), 000(rwx)
- -perm: 권한이 일치하는 파일 찾기 ex. find / -perm 4755
- -name: 이름과 일치하는 파일 찾기 ex.find / -name cat
- -user 유저와 일치하는 파일 찾기 ex.find / -user mmung2
- -group 그룹과 일치하는 파일 찾기 ex.find / -group guta