힌트를 확인해 보자 

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

대충 해석해보면 현재레벨에서는 접근이 불가하니 ssh로 접속하여 해당 디렉토리( /etc/bandit_pass/bandit14  경로로 이동한 후 패스워드를 획득하라는 내용이다. 일단 로그인을 한번 해보았다.

 

뭔가 엄청나게 많은 문자가 보이는데 찾아봐야 할 것들이 RSA Private key와 sshkey.private인데  확인을 해보기로 했다.

 

SSH : 텔넷(Telnet)과 용도는 같지만, 보안이 강화원격 접속 서비스이다.

- SSH를 이용하여 원격 접속하면 서버와 클라이언트 사이에 데이터를 전송할 때 암호화를 하게 된다.

- RSA 등 암호화 기법을 사용하며, 압축 기술 또한 제공하고 있다.

- 리눅스에서는 openssh를 통해 SSH를 이용할 수 있다.

- 포트 번호는 22번이다.

 

RSA 공개키 암호

현재 SSL/TLS에 가장 많이 사용되는 공개키 암호화 알고리즘이다.

전세계 대부분의 인터넷 뱅킹(대한민국 포함)이 이 RSA-2048 암호화를 사용한다.

 

- 공개키는 누구나 아는 키이므로, A가 B에게 보낼 때 B의 공개키로 암호화하여 전송

- 이 때, B의 공개키로 암호화했기에 B의 비밀키로 복호화 가능
- 해커가 탈취해도 정보를 알 수 없음 (대칭키의 키값 교환 문제 해결)
- 해커가 파일 탈취하여 B의 공개키로 이상한 파일을 암호화하여 보낼 위험성 존재

 

그럼 우리가 알 수 있는 것은 개인키를 알고 있으니까 개인키를 이용해서 로그인을 하면 되지 않을까 생각해 볼 수 있다.

힌트에서는 localhost로 로그인을 하라고 했으니까 한번 ssh를 이용해서 로그인을 해보면 될거같다. 

ssh 옵션중에는 -i라는 옵션이있는데 이것은 원격에서 네트워크 상의 컴퓨터에 접속할 수 있다.

ssh 는 강력한 보안을 제공하기에 안전하지 못한, 개방된 네트워크에서도 안전하게 통신할 수 있다.

한번 접속을 해보았다 (지금은 그냥 22포트로 접속을하면 에러가 나오기 때문에 2220으로 접속을 해야한다.)

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

 

yes를 입력하면 정상적으로 로그인이 된다.

로그인을 한 뒤에 힌트에서 말한 패스워드가 저장되어있는 디렉토리로 이동을 해보았다,

 

여기서 bandit14를 실행하면 되는데 먼저 열 수 있는 권한이 있는지 확인해보았다.

 

읽을 수 있는 권한이 있으니까 확인 후에 읽어보면 될 거 같다.

 

패스워드를 알 수 있었다. 

공개키 암호와 ssh 프로토콜을 잘 알아야 풀 수 있는 문제 같다.

+ Recent posts