Information Security

[Training] 5-10 본문

INTERLUDE/System Hacking

[Training] 5-10

sohexz 2021. 9. 23. 19:45

training 5

whoami <- 자신의 정보

 

id <- 자신의 정보 더 자세히 표시

 

cat /etc/passwd <- 이 서버에 어떤 사람들이 계정을 얻어서 사용하고 있는지

 

리눅스의 커널 버젼이 높을수록 속도도 더욱 빨라지고, 안전성도 높아진다.

** 커널을 이용한 해킹도 많이 있기 때문에 서버에 아이디가 있는 상태에서 정보를 캐낼 때 

    가장 먼저 이 커널 버젼을 봐야 한다

 

unmae -a <- 버전 확인 가능

 

cat /etc/*release <- 이 서버에 설치된 OS 버젼 확인

--> 지금 서버의 버젼은 레드헷 리눅스 9.0

 

rpm -qa <- 패키지의 정보 얻기

 

cat /proc/cpuinfo <- 해당 서버의 cpu 정보 수집

--> 지금 서버 사양은 Inter(R) Celeron(R) CPU 2.40GHz

 


training 6

cat 파일이름  <- 파일의 속내용을 화면으로 뿌려주는 역할

 

패스워드 파일 <- 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일

* 사용자가 어떤 아이디, 어떤 암호를 이용하여 로그린하는지, 어떤 그룹에 속해있는지, 이름은 무엇인지 등 모든 정보 저장

 

 

root : x : 0 : 0 : Admin : /root : /bin/bash

 : <- 필드를 구분해주는 문자

 

1) root

서버에 로그인할 때 사용되는 아이디(계정)

 

2) x

원래는 패스워드가 있는 곳

But, 해커들에게 위험. -> 리눅스 6.0 이후 사용자들의 패스워드만 모아서 /etc/shadow 라는 파일을 만듦.

*쉐도우 파일 관리자 권한이 없으면 볼 수 없음

 

3) 0

root = 0

컴퓨터가 보기 쉽도록 root를 0으로 표시

 

4) 0

해당 사용자가 속해있는 그룹

 

root면 0 : 0

 

5) Admin

사용자의 이름

 

6) /root

사용자가 로그인에 성공했을 때 기본으로 위치하게 되는 디렉토리

 

7) /bin/bash

사용자가 처음 로그인했을 때 실행되게 할 프로그램

 


training 7

지금 있는 파일들

 

tar 사용법

 

tar cvf songs.tar * <- 현재 디렉토리에 있는 모든 파일을 songs 라는 새로운 파일로 합쳐라

 

합쳐졌지만 용량이 너무 크다. 압축은 아님!

tar명령은 파일을 압축하지 않고 합친다. 다시 기존 파일들을 복구할 때 속도가 빠르다.

 

gzip은 한 번에 1개의 파일만 압축할 수 있기 때문에 tar명령을 한 후 그 파일을 압축해준다.

 

gzip 명령 사용법

 

압축 성공

 

압축파일의 확장자

 

gzip -d songs.tar.gz <- songs.tar.gz 압축 해제

 

다시 용랸 늘어남

 

tar xvf songs.tar <- songs.tar 합치기 해체

 

합치기 해제하기 성공

 

 


training 8

 

 

'>'

리다이렉션(방향을 전환한다)

나는 왼쪽에서 출력되는 것을 받아서 오른쪽의 입력으로 보내버리겠다.

 

cat을 활용하여 텍스트를 test.txt 파일로 만들기

 

cat test.txt <- text.txt 내용 확인하기

 

text.txt 파일이 있는 상태로 다시 cat > test.txt 를 입력하게 되면 원래의 파일은 삭제된다.

리다이렉션을 두 번 써서 cat >> test.txt 를 입력하여 원래의 파일을 보존하고 새로운 내용을 추가할 수 있다.

 

test.txt에 추가할 내용 적기

 

test.txt 원래의 파일 보존하면서 새로운 내용 추가 성공

 

cat > program.c <- c언어로 소스 파일 생성하기

 

소스 파일을 컴파일하여 프로그램 만들기

 

program.c 소스파일을 program.exe 프로그램으로 컴파일

* 아무런 에러가 없었다면, 성공적으로 컴파일 된 것!

 

리눅스에서는 그 파일이 있는 절대경로를 모두 입력시켜줘야만 실행이 된다. ( 루트(/)부터 )

 

/home/trainer8/program.exe <- program.exe 프로그램 실행

리눅스에선 '.' 이 "현재 디렉토리" 의미

=> " ./program.exe" 라고 입력하면 절대경로를 쓰지 않아도 된다.

 


training 9

 

리눅스의 사용자 종류

 

id 명령에 대한 정보 분석

 

r : 읽기 권한 

w : 쓰기 권한

x : 실행 권한

 

 

shadow 파일은 root에게 읽기 권한만 남아 있다. 


training 10

 

해킹에는 두 가지가 있다

 

Local 해킹 : 해킹하고자 하는 서버에 일반 계쩡을 가지고 있을 때, 관리자 권한 (root)를 얻고자 시도하는 것

Remote 해킹 : 여러가지가 있다.

무작위로 아이디와 비밀번호를 입력하여 접속하는 방법에서부터, 데몬의 취약점을 공략하여 접속하는 방법. 게시판이나 방명록을 이용하여 접속하는 방법 등

 

 

Local 해킹!

 

SetUID가 걸린 파일을 조작하여 관리자 권한을 얻을 수 있다.

SetUID: "변경하다"라는 뜻, UID: User ID의 약자

=> 일시적으로 자신의 ID를 변경하는 것

 

쉐도우 파일은 오직 루트만이 제어할 수 있지만 자신의 암호를 변경하는 passwd 파일에 루트 권한의 SetUID가 걸려 있어서, 일반 사용자들이 그 passwd 파일을 실행하는 동안에는 루트로 일시적인 아이디 변경이 일어나게 되는 것

 

=> 쉐도우 파일은 구타의 권한이 아닌 루트의 권한으로 변경된 셈

 

 

관리자 권한을 획득하는 기법

레이스컨디션, IFS버그, 링크버그, 버터 오버플로우, 포맷 스트링 어택 등

 

 

passwd 파일에 걸린 SetUID 확인

위 사진에 나온 -r-s--x--x 중 s는 SetUID를 의미한다.

저 부분은 x(실행권한)이 있어야 하는 부분인데 s가 x를 포함하고 있기 때문에 s가 표시되었다.

 

=> /usr/bin/passwd 파일은 root에게 읽기와 실행(s가 x를 포함하기 때문)dl dlTrh, root라는 그룹에게는 실행 권한만 있고, 위를 제외한 사용자들에게도 실행 권한만 있다. 

하지만, root에게 SetUID가 걸려있기 때문에 어느 사용자이던간에 저 파일을 실행할 때는 root의 권한을 갖게 된다.

 

find / -perm -4000 <- 서버 전체에서 SetUID가 걸린 파일 찾기

 

find / -perm -4000

=> / 에서부터, 적어도 SetUID가 걸린 모든 파일을 찾아라

 

4000 앞에 붙은 - 는 "적어도"를 의미

-perm 은 "권한을 찾겠다" 라는 옵션

4 자가 SetUID 의미

000은 rwx 모두를 의미

 

find 명령 옵션

 

 

 

트레이닝 레벨 성공!

level1 level1

 

'INTERLUDE > System Hacking' 카테고리의 다른 글

[FTZ] Level 8  (0) 2021.11.04
[FTZ] Level 5 -7  (0) 2021.11.02
[FTZ] Level 4 - 5  (0) 2021.10.28
[FTZ] Level 1-3  (0) 2021.09.28
[Training] 1-4  (0) 2021.09.16