Systemhacking/FTZ

[FTZ] trainer6 ~ trainer10

レ(゚∀゚)ヘ=3 2021. 3. 25. 02:06
728x90

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 명령어로 내용 출력
  • 프로그램 소스 파일
    프로그램 소스 : 컴퓨터 언어로 입력한 파일 ( 텍스트 파일 중 하나 ) 
    컴파일 과정을 통해 실행이 가능하도록 만들어야 사용 가능

 

<텍스트 파일 생성>

  1.  쉘 프롬포트에서 cat > 파일이름.txt 입력해서 생성
    ' > ' : 리다이렉션 ( 왼쪽에서 출력되는 것을 받아 오른쪽의 입력으로 보냄 )
    파일 뒤에 내용 추가 : cat >> 파일이름.txt
  2.  내용 작성
  3.  Ctrl + D

 

<프로그램 소스 파일 생성, 컴파일, 실행>

  1. cat > 파일이름.c 입력해서 생성
  2. 프로그램 소스 작성
  3. gcc -o 프로그램이름 소스파일이름 입력하여 프로그램 소스 파일 컴파일
  4. 파일의 절대경로를 모두 입력해서 실행
    절대경로 : 최상위 디렉토리인 루트 ( / ) 에서부터 시작되는 경로 ( 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를 이용한 해킹 기법 중 버퍼 오버플로우>

  1.  루트 권한으로 SetUID걸려있음 
  2.  작성자가 정해진 특정 용량 이상 작성
  3.  그럴 경우 에러가 나는데, 그 순간 /bin/bash 파일 실행하도록 조작
  4.  루트 권한의 쉘 획득함

 

<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