Trainer6 ( 패스워드 파일 분석 방법 )
(비밀번호 : welcome)
<명령어>
- cat : 리눅스 기본 명령
cat 파일이름 : 파일의 속내용을 화면으로 뿌려줌 - root : x : 0 : 0 : Admin : /root : /bin/bash
' : ' : 필드를 구분해주는 문자
root | x | 0 | 0 | Admin | /root | /bin/bash |
로그인 시 사용되는 아이디 ( 계정 ) |
패스워드가 있었지만 보안상의 이유로 x만 보여줌 | 해당 사용자 | 사용자가 속해 있는 그룹 | 사용자의 이름 | 로그인 성공 시 기본으로 위치하게 되는 디렉토리 | 처음 로그인 시 실행하게 될 프로그램 |
두 번째 필드
원래는 패스워드를 나타냈지만 보안상의 이유로 패스워드를 없애고 'x' 문자만 보여줌
두 번째 필드에 있떤 패스워드만 모아서 /etc/shadow파일을 생성함
/etc/shadow는 관리자 권한을 가진 사용자만 볼 수 있음
세 번째 필드
특정 이름을 사용해서 접속을 하면 컴퓨터는 해당 이름의 패스워드 파일을 열어보고 해당 사용자를 숫자로 판단함
ex ) root라는 아이디를 사용하면 현재 접속하는 사용자는 ' 0 '이라는 사람이고 현재 ' 0 '이라는 그룹에 속해있다. 라고 판단하게 됨
<단어>
- 패스워드 파일 : 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
사용자들의 모든 정보를 저장해 놓은 중요한 파일
Trainer7 ( 리눅스 환경에서 파일들을 압축하고 해제하는 방법 )
( 패스워드 : to the top )
리눅스에서 데이터 손실을 방지하기 위해 "백업" 필수 -> 백업을 할 때 압축 명령어 사용
<명령어>
- tar ( 파일 압축이 아닌 합침 -> 용량 늘어남 --> 속도면에서 이점 )
파일 합치기 : tar cvf 합칠파일 합칠파일
해제하기 : tar xvf 해제할파일
<옵션>
c - Create : 새로운 파일 만드는 옵션
x - eXtract : 압축을 해제시키는 옵션
v - View : 압축이 되거나 풀리는 과정을 출력하는 옵션
f - File : 파일로서 백업을 하는 옵션 - gzip ( 한 번에 한 개의 파일만 압축 가능 )
gzip 파일이름 : 선택된 파일을 압축
gzip -d 파일이름 : 선택된 파일을 해제
<압축/해제 과정>
- 압축하기
많은 파일 -> tar 프로그램 사용하여 1개로 만듦 -> gzip 프로그램 이용하여 하나의 파일 압축 - 해제하기
gzip -d 명령으로 tar로 만듦 -> tar xvf 명령으로 해제 ( 파일 복구 ) -> 처음 파일들 생성
<압축파일의 확장자>
- tar : tar 프로그램으로 압축된 파일 ( 사실 압축이 아닌 여러 파일이 하나로 뭉쳐진 파일 )
- gz : gzip 프로그램을 사용하여 압축된 파일
- tar.gz ( = tgz ) : tar 프로그램으로 파일 합친 후 gzip 프로그램을 사용하여 압축한 파일
<단어>
- 백업한다 : 하드에 들어있는 데이터 ( 디렉토리, 파일, 개인정보, 게시물 등 )를 똑같이 다른 곳으로 복사하여 안전하게 보관하는 것
Trainer8 ( 새로운 파일을 만들고 컴파일하고 실행하는 방법 )
( 패스워드 : player )
<파일의 종류>
- 일반 텍스트 파일 : 글자로만 이루어진 파일
cat 명령어로 내용 출력 - 프로그램 소스 파일
프로그램 소스 : 컴퓨터 언어로 입력한 파일 ( 텍스트 파일 중 하나 )
컴파일 과정을 통해 실행이 가능하도록 만들어야 사용 가능
<텍스트 파일 생성>
- 쉘 프롬포트에서 cat > 파일이름.txt 입력해서 생성
' > ' : 리다이렉션 ( 왼쪽에서 출력되는 것을 받아 오른쪽의 입력으로 보냄 )
파일 뒤에 내용 추가 : cat >> 파일이름.txt - 내용 작성
- Ctrl + D
<프로그램 소스 파일 생성, 컴파일, 실행>
- cat > 파일이름.c 입력해서 생성
- 프로그램 소스 작성
- gcc -o 프로그램이름 소스파일이름 입력하여 프로그램 소스 파일 컴파일
- 파일의 절대경로를 모두 입력해서 실행
절대경로 : 최상위 디렉토리인 루트 ( / ) 에서부터 시작되는 경로 ( pwd로 확인 가능 )
상대경로 : 자신이 위치한 디렉토리를 기준으로 경로를 따지는 것
절대경로를 모두 입력하는 대신 현재 디렉토리를 의미하는 ' . '만 작성하고 뒤에 파일 이름을 적어도 실행 가능
Trainer9 ( 리눅스의 권한 )
( 패스워드 : programming)
리눅스는 각 사용자마다 특별한 권한을 부여하며 그 권한 안에서만 파일들을 제어할 수 있도록 설정되어 있음
<사용자>
- user : 자기 자신
- group : 모든 user는 하나 이상의 group에 속함 ( 주로 user name과 동일한 이름의 그룹에 속함 )
- other : user와 group을 제외한 모든 사람
- root : 절대적인 권한을 가지는 사용자, 모든 파일들을 제어 가능
<id 명령어 분석>
- uid : User Id 약자
- gid : Group Id 약자
- groups : 현재 속한 그룹
<파일 권한 정보 분석>
- -rwxrwxrwx : rwx / rwx / rwx --> user의 권한 / group의 권한 / other의 권한
- r : 읽기 권한 / w : 쓰기 권한 / x : 실행 권한
읽기 권한 : cat 명령어 사용 가능
쓰기 권한 : 수정 권한, cat >> 사용 가능, 편집기 사용 가능
실행 권한 : 실행 가능성을 볼 수 있는 권한
Trainer10 ( SetUID )
( 패스워드 : best!)
해킹에는 Remote 해킹과 Local 해킹이 있다.
Remote 해킹 : 해킹하고자 하는 서버에 아이디가 없을 때 아이디를 얻기 위해 시도하는 것
Local 해킹 : 해킹하고자 하는 서버에 일반 계정이 있을 때 root를 얻기 위해 시도하는 것
<SetUID>
- 일시적으로 자신의 ID를 변경하는 것
Set ( 변경하다 ) + UID ( User Id ) = ID를 변경한다.
<SetUID를 이용한 해킹 기법 중 버퍼 오버플로우>
- 루트 권한으로 SetUID걸려있음
- 작성자가 정해진 특정 용량 이상 작성
- 그럴 경우 에러가 나는데, 그 순간 /bin/bash 파일 실행하도록 조작
- 루트 권한의 쉘 획득함
<SetUID>
- ls -al 했을 때 -r-s--x--x와 같이 ' s '가 나오면 SetUID임
- ' s ' 가 ' x '(실행권한)을 포함하고 있음
- 서버에서 SetUID가 걸린 파일 찾는 법 : find / -perm -4000
find / -perm -4000 : / 에서부터 적어도 SetUID가 걸린 모든 파일을 찾아라
( ' - ' : 적어도 / ' -perm ' : 권한을 찾겠다 / ' 4 ' : SetUID / ' 000 ' : rwx 모두 )
find 명령 옵션
-perm : 권한과 일치하는 파일을 찾는다
-name : 이름과 일치하는 파일을 찾는다
-user : user와 일치하는 파일을 찾는다
-group : group과 일치하는 파일을 찾는다
'Systemhacking > FTZ' 카테고리의 다른 글
[FTZ] level4 (0) | 2021.03.30 |
---|---|
[FTZ] level3 (0) | 2021.03.25 |
[FTZ] level2 (0) | 2021.03.25 |
[FTZ] level 1 (0) | 2021.03.25 |
[FTZ] trainer 1 ~ trainer 5 (0) | 2021.03.18 |