Bandit

리눅스 ssh key 접속 / RSA 공개키 암호화 | Bandit Level 13 -> Level 14

developerYoung 2023. 9. 1. 22:59
반응형

문제

Level 13. The password for the next level is 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/bamdit_pass/bandit14 에 패스워드가 저장되어있지만, bandit14만 읽기 권한이 있다.

이 단계에선 다음 패스워드를 못얻지만, private SSH key를 통해 다음 단계에 로그인을 할 수 있다!

 

이 두가지 정보를 통해서 문제를 풀기 전에 사전지식 몇가지를 알아보도록 하자!

 

리눅스 ssh 접속 명령

ssh는 Secure Shell의 약자로 보안적으로 좀 더 안전하게 사용할 수 있는 네트워크 프로토콜입니다.

ssh를 통해 우리는 네트워크 상의 다른 컴퓨터에 로그인할 수 있어 서버에 접속 시 자주 사용하는 접속 방식이다.

ssh사용법

ssh [옵션] [사용자]@[원격지 ip]

ssh 옵션 종류

  • default : 사용자 이름으로 접속 요청
  • -p : 원격 호스트의 연결포트 설정
  • -i : private 키 읽어 올 아이덴티티 파일 설정

예시

  • ssh username@111.111.111.111
  • ssh username@111.111.111.111 -p 8888
  • ssh username@111.111.111.111 -i key_file
반응형

 

RSA 접속 (공개키 암호화)

리눅스에서 SSH 접속을 할 때, 가장 기본적인 접속 방법은 id와 password를 통해 서버에 접속하는게 일반적이지만 보안상의 문제로 비밀번호를 노출하지 않고 접속하는 방법을 사용한다.

그 중에 RSA 인증 방식을 통해 공개키(Public Key)와 개인키(Private Key)를 통해 접속하는 방법이 있다.

 

공개키는 방식은 이러하다. 

  1. 메세지를 공개키를 통해 평문을 암호화를 한다.
  2. 암호문을 개인키를 가지고 있는 사람에게 보낸다.
  3. 개인키를 통해 암호문을 복호화하여 메세지를 읽는다.

개인키를 탈취당하지 않는다면, 암호화된 메세지가 유출되더라도 읽을 수 없게 됩니다.

 

서버에 저장된 개인키를 클라이언트에서 서버로 요청을 보내어 SSH를 통해 접속할 수 있습니다.

 

풀이

먼저 /etc/bandit_pass/bandit14 파일에 bandit14의 패스워드가 있는 것을 알 수 있습니다.

그렇기때문에 해당 파일을 읽을 수 있는지, 한 번 확인하는게 우선이 되겠죠?

이렇게 Permission denied 를 당하는건 해당 파일을 읽을 권한이 없기 때문입니다.

 

그리고 ls -la /etc/bandit_pass 명령어를 통해 어떤 권한을 가지면, 해당 파일을 읽을 수 있는지 확인해보면 bandit14 계정만 읽을 수 있는 것을 확인할 수 있어요.

 

마지막으로 ls -la 명령어로 현재 계정 폴더에 무슨 파일이 있는지 확인해봅시다.

bandit13 폴더 파일

아무래도 sshkey.private과 그 안에 RSA PRIVATE KEY가 힌트가 되겠지요?!

 

그러면 우리는 어떻게 문제를 접근해야하냐! 주어진 힌트를 통해 다음과 같이 풀 생각을 할 수 있어야합니다.

  1. private SSH Key의 힌트를 통해 ssh 접속을 할 수 있는 문제구나!
  2. RSA 인증 방식으로 private key 가 생성되었구나!
  3. localhost라는 호스트네임으로 접속할 수 있겠구나!

자 그러면 위에서 배운 사전 지식으로 여러분은 어떻게 문제를 푸시겠나요?

 

먼저 생각하고 아래를 확인해보세요!

 

생각하셨나요?! 그러면 답을 확인해봅시다.

ssh-i sshkey.private bandit14@localhost -p 2220

위에서 배운대로 우리는 bandit14 계정의 localhost 라는 hostname으로 2220 포트에 접속을 하면 됩니다.

또한 접속할 땐, 우리가 아는 RSA private key를 함께 주어 비밀번호없이도 key 인증 방식을 통해 접속할 수 있게 됩니다.

 

이제 접속을 하셨다면 마지막으로 /etc 아래있는 패스워드를 찾으러 가볼까요?

cat /etc/bandit_pass/bandit14

이렇게 정답을 확인하세요!

 


더보기를 눌러 비밀번호를 확인하세요!

더보기

비밀번호는 다음과 같다.

Level13. fGrHPx402xGC7U7rXKDaxiWFTOiF0ENq

 

반응형