이번에는 해커스쿨에서 배포하는 워게임인 FTZ를 풀어보도록 하겠습니다. FTZ는 여러 가지 기법을 무료로 트레이닝할 수 있도록 도와주는 서버입니다.
FTZ는 구글링을 통해 다운로드할 수 있으며 FTZ를 사용하기 위해 VMware과 putty를 다운로드하시면 됩니다. 혹시 모르기에 따로 링크는 하지 않도록 하겠습니다.
다운로드한 FTZ를 파일을 VMware로 열면 아래와 같은 화면을 확인하실 수 있으며 엔터를 눌러 red hat리눅스를 접속하면 됩니다.
리눅스에 들어가면 ftz login이라 표시되어 있는 화면이 보이실 텐데 아이디는 root로 로그인하시면 됩니다.
비밀번호는 hackerschool을 입력하시고 엔터를 클릭하면 되는데 패스워드는 안 보이는 것이 정상이니 여러 번 누를 필요 없이 한 번만 제대로 입력하시면 로그인이 될 것입니다.
로그인이 완료되면 #표시가 뜨며 #뒤에 ifconfig명령을 입력하여 addr의 숫자를 확인합니다.
이제 윈도우에 와서 준비해둔 putty를 실행시킵니다.
putty를 실행시키면 아래와 같이 나오는데 Host Name부분에 리눅스 서버에서 확인했던 ip주소를 입력합니다.
한글이 깨질 수 있는데 아래 그림의 메뉴에 들어가 Remote character set부분을 Use font encoding으로 변경해주면 됩니다. 여기까지 설정하고 Open을 눌러 접속을 시도하여도 되지만 접속을 같은 IP로 계속하여야 되기에 Session으로 돌아가 Save를 한 후 Open을 하는 것이 좋습니다.
접속을 하면 아래와 같이 login as: 라는 곳에 커서가 위치해있을 텐데 trainer1을 입력한 후, password가 나오면 아이디와 같은 trainer1을 입력하여 로그인을 합니다. trainer은 trainer1~trainer10까지 존재합니다.
Trainer1
이제부터 화면에 출력되는 내용을 확인하며 명령어와 개념들을 학습하면 됩니다.
앞에 대괄호로 묶여있는 문자의 내용은 trainer1@ftz trainer1 → 접속 ID@서버 현재 위치(현재 폴더)를 표시해주는 것입니다.
리눅스는 대소문자를 구분하기에 명령어를 입력할 때 대소문자를 구분해주어야 합니다. 기본적인 명령어로 디렉터리에 있는 내용을 확인하는 명령어가 있는데 ls라는 명령어입니다.
ls는 -a옵션을 주어 숨겨진 내용을 확인할 수 있고, -l의 옵션을 주어 자세한 내용을 출력하도록 설정할 수 있습니다.
ls명령에 -l옵션을 사용하면 -rw-rw-r-- 부분이 보일 텐데 이 부분은 맨 앞부분이 -라 파일이라는 것을 알 수 있고, d라면 디렉터리를 알 수 있습니다.
또한, 사용자 이름과 날짜 사이의 숫자는 파일의 용량을 나타내는 것입니다.
이제 trainer1은 마무리가 되었습니다. 마지막 퀴즈를 풀고 나면 trainer2의 password를 알려줄 것입니다.
모든 퀴즈를 풀고 나면 trainer1 과정을 수료하였습니다라는 안내가 출력되며 trainer2의 비밀번호를 알려줍니다.
Trainer2
로그인을 완료하면 trainer2를 실습할 수 있습니다.
위의 pwd명령을 그대로 입력하여 실행하도록 하여 봅니다. 그러면 현재 경로가 출력되는 것을 볼 수 있으며 이는 현재 위치해있는 디렉터리 명입니다.
이제 현재 경로에서 한 단계 위로 상위 디렉터리로 이동하는 명령을 배울 것입니다. 명령은 cd .. 을 통해 이동할 수 있고 하위 디렉터리에 이동하기 위해 cd 디렉터리 명을 입력하는 것을 확인하실 수 있을 것입니다.
위의 방법은 상대 경로라는 방법을 이용한 것이고 절대 경로의 방법으로 이동할 수 있는데 절대 경로는 [/디렉터리 명/디렉터리 명/]과 같이 경로 전체를 이용하여 이동하는 방법을 말합니다.
디렉터리 생성, 삭제에 대해 출력이 된 것을 확인할 수 있습니다. 새로운 디렉터리를 만들기 위해서는 mkdir 명령어를 사용하여 원하는 디렉터리 이름을 설정하여 생성하면 됩니다. 반대로 지우기 위해서는 [rmdir 지우고자 하는 디렉터리 명]을 입력하면 됩니다.
파일의 복사, 삭제, 이동 명령을 확인할 것입니다. 복사는 cp명령을 이용하여 [cp 복사 원본 복사 사본]으로 명령어를 입력할 수 있고, [rm 삭제 대상]을 입력하면 삭제를 원하는 파일을 삭제 가능합니다. 그리고 [mv 이동 대상 이동위치]로 파일을 이동하는 명령어를 확인하실 수 있는데 mv는 파일의 이름을 변경할 때도 사용됩니다.
Trainer3
trainer3은 콘솔과 터미널에 대해 정리되어 있습니다.
먼저 w명령에 대해 설명하고 있는데 w명령은 현재 자신이 접속해 있는 곳에 어떤 사용자들이 접속되어 있는지 확인해주는 명령입니다. 여기서 사용자가 콘솔로 접속하였는지, 터미널로 접속하였는지 확인할 수 있습니다.
finger명령을 통해 사용자 계정 정보를 확인할 수 있습니다. 자신이 접속해 있는 터미널을 확인하는 것은 tty명령을 입력하면 확인할 수 있습니다.
접속돼있는 다른 사용자들과 대화를 하기 위해 write명령을 사용합니다. w명령을 이용해 접속되어 있는 사용자들을 확인할 수 있습니다.
Trainer4
이번 trainer에서는 역할을 가지고 있는 디렉터리에 대해 설명하고 있습니다.
위의 디렉터리는 중요한 디렉터리로 특정 기능을 저장하고 실행하도록 존재하고 있습니다. 이제 해당 디렉터리를 보았으니 밑의 문제를 풀어보겠습니다.
문제를 모두 풀어보았는데 많은 디렉터리를 활용하는 것을 확인할 수 있었습니다. 이제 trainer4를 수료하였으니 trainer5에 접속하도록 해보겠습니다.
Trainer5
이번에는 자신이 접속한 서버를 확인하는 명령을 알아보겠습니다.
먼저 내가 접속한 사용자가 누구인지 확인하여야 하는데 whoami 명령을 이용하거나 더 자세한 정보를 위해 id 명령을 이용하면 됩니다.
서버에 등록된 사용자를 확인하고자 하면 /etc/passwd 파일을 cat명령으로 확인해보면 됩니다. 그 후, 리눅스의 버전을 확인하기 위해 uname -a 명령을 통해 커널 버전을 확인합니다. 커널 버전이 낮으면 취약점이 공개되어 있어 공개된 취약점을 통해 공격당하기 쉽습니다.
서버에 설치된 운영체제 버전을 확인할 수 있는데 /etc/*release를 cat명령을 확인할 수 있으며 cpu정보는 /proc/cpuinfo에 저장되어 있습니다. 또한 설치된 패키지의 정보는 rpm -qa를 통해 확인할 수 있습니다.
trainer6
패스워드를 분석하는 것으로 /etc/passwd 내용에 두 번째 필드에 암호화된 패스워드가 있었지만 따로 파일을 만들어 관리하게 되었는데 /etc/shadow라는 파일입니다.
shadow파일에 사용자들의 패스워드들이 암호화되어 저장되어 있는 것을 확인할 수 있습니다.
Trainer7
파일 합치는 명령어 tar에 대해 학습하는 내용입니다. 아래는 tar명령어의 옵션 사용법이며 tar은 압축이 아니고 합치는 것이라는 것을 유의해야 합니다.
gzip명령을 통해 압축이 가능합니다. tar은 압축이 아니라 합치는 것이기에 용량의 압축이 일어나지 않습니다. 여기서 tar명령의 옵션을 통해 gzip으로 압축이 가능한 것을 알아두어야 합니다.
용량을 압축하여 저장하는 명령어가 필요한데 그것이 gzip입니다. gzip명령은 아래와 같습니다.
아래는 tar과 gzip의 비교입니다.
Trainer8
이번에는 파일을 만드는 것에 대해 학습하는 것입니다.
cat > 파일 이름.txt를 입력하면 기존의 파일 내용은 사라지고 새로운 내용이 파일에 저장됩니다.
>는 리다이렉션으로 입력한 것을 모니터가 아닌 파일로 보내버린 것입니다.
>>를 통해 새로운 내용이 아니라 원래 내용 뒤에 새로운 내용을 추가하는 형태로 저장될 수 있습니다.
해당 파일을 c언어로 입력하여 gcc 하는 방법도 소개되어 있습니다.
Trainer9
이번에는 권한에 대해 알아보는 학습 구간입니다.
파일과 디렉터리에는 권한이 존재하며 rwx라는 것을 통해 읽기, 쓰기, 실행 권한을 관리하도록 되어 있습니다.
Trainer10
마지막 trainer인 학습이며 root 권한으로 실행되는 파일에 대해 정리되어 있습니다.
SetUID라는 것을 통해 일반 사용자는 root 권한을 빌려와 파일을 실행시키는데 이를 이용하여 관리자 권한을 탈취하는 것을 말합니다.
SetUID가 설정된 파일을 찾기 위해서는 아래와 같이 [find / -perm -4000]의 명령을 통해 가능합니다. 여기서 perm는 권한이라는 뜻을 가진 옵션입니다.
이제 trainer과정이 완료되었습니다.
감사합니다.
'TeamH4C_ProjectH4C > 워게임' 카테고리의 다른 글
[TeamH4C_PWNABLE] 시스템 해킹_연습문제6 (2) | 2021.04.11 |
---|---|
[TeamH4C_PWNABLE] 시스템 해킹_연습문제1-4 (0) | 2021.04.04 |
[TeamH4C_FTZ] Level1 ~ Level5 (0) | 2021.03.28 |
[TeamH4C_HackCTF] 시스템 해킹_기초문제 (0) | 2021.03.21 |
[TeamH4C_dreamhack] 시스템 해킹_기초문제 (0) | 2021.03.21 |