티스토리 뷰
오랜만에 하는 워게임이네요.
한 달 이내에 완성하는게 목표입니다.
우선 오늘 내용 시작할게요
Problem
The password for the next level is the stored in /etc/bandit_pass/bandit14 and can only be read
by user bandit14. For this level, you don't get the next password, but you get a private SSh key that
can be used to log into the next level. Note : localhost is a hostname that refers to the machine you are working on.
=> /etc/bandit_pass/bandit14 에 다음 레벨로 가는 비밀번호가 저장되어있다.
오직 user가 bandit14인 경우 위 파일을 읽을 수 있다.
비번을 구할 필요는 없지만, 다음 레벨에 로그인하기 위한 private SSH key를 구해야 함.
내 hostname 은 localhost 다.
이번 레벨은 문제부터 생소한 것들 천지네요.
우선 SSH가 무엇인가?
정도만 알아보고, 문제 해설을 해보겠습니다.
Concept
우선 킹갓 나무위키 선생님의 설명을 보세요.
Secure Shell - 나무위키 (namu.wiki)
이제 제 공부를 위해 요약해서 정리할게요.
우선 SSH는 프로토콜입니다.
정확히 SSH는 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜입니다.
Solution
우선 bandit13에 로그인을 했습니다.
그리고 ls 명령어를 통해 어떤 파일이 존재하는지 확인했구요.
sshkey.private이라는 파일이 존재하길래, 어떤 파일인지 궁금해서
file이라는 명령어를 통해 sshkey.private이라는 파일의 타입을 알아보았습니다.
PEM : Privacy Enhanced Mail. 암호화 키, 인증서 등의 데이터를 저장하고 전송하기 위한 파일 형식.
프라이버시 강화 메일 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
RSA : public key cryptosystem. 공개키 암호화 방식의 알고리즘 중 하나
내 생각에 PEM RSA private key 라는 형식은
개인키 공개키를 저장한 형태라는 것 같다.
sshkey.private을 cat을 이용해 열어보자.
위와 같은 형식이 나오는데,
BEGIN RSA PRIVATE KEY 와 END RSA PRIVATE KEY 라는 문구가 보이죠?
저 사이에 있는 것들이 암호화된 내용입니다.(일반적으로 Base64로 인코딩 되어있다고 함.)
리눅스 SSH KEY 접속 방법 - 네피리티 (nepirity.com)
위 블로그의 내용을 보면
"Linux 등의 POSIX 환경의 운영체제에서는 별도의 접속 프로그램 없이, key 파일을 이용하여
SSH 서버에 접속 할 수 있다" 고 하며, 접속하는 방법을 알려줍니다.
저희는 그 방법을 이용해서 이번 문제를 해결할거에요!
이 사진에서 몇가지 설명하고 가겠습니다.
위 블로그 내용과 함께 생각해보면
sshkey.private이 id_rsa라는 PEM형태의 Key 파일입니다.
bandit14는 Username이고
localhost는 서버를 지칭하고 있다고 생각하시면 될 것 같네요.
그리고 ssh 명령어에서 i 옵션은 공개키 인증을 위한 개인키가 읽히는 파일을 선택하는 것입니다.
즉, 저희에게 sshkey.private이 개인키라는 뜻이죠.
그리고 문제에서 주어진 위치를 이용해서 파일열어보니 비밀번호가 있네요.
위 내용을 공부하면서 참조한 블로그 등의 사이트들이 많은데요.
아직 제 머리속에 정리가 잘 되지않아서 기록하지 않은 부분들은 링크를 남겨두고,
이후 따로 빼서 깊게 다뤄보겠습니다.
특히 이 SSH부분은 워게임에서 말고 실제로 사용하는 방법에 대해서도
워게임이 끝난 후에 공부해보고 포스팅하겠습니다!!
[리눅스 명령어] ssh (tistory.com) (ssh명령어 옵션)
기술 여행자 (ArsViator): ssh 사용시 암호 대신 SSH key로 인증하기
openssl 로 RSA 공개키, 개인키 만들기 : 네이버 블로그 (naver.com)
호스트 : 네트워크에 연결되어 있는 컴퓨터들
프로토콜 : 통신규약. 컴퓨터 내부 혹은 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
Base64 : ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식
인코딩 : 문자 -> 코드 ( 암호화 )
디코딩 : 코드 -> 문자 ( 해독 )