워게임/Bandit (Linux Wargame)

[OverTheWire:Bandit] Level 0 → Level 1

crypsec 2023. 11. 10. 20:40
반응형

Bandit Level 0

 
ssh를 활용하여 게임(level 0)에 로그인하는 것이 목표입니다. 이때 ssh라는 명령어를 이용하겠습니다.

SSH란?

SSH는 "Secure Shell"의 약어로, 네트워크를 통해 다른 컴퓨터에 안전하게 접속하기 위한 프로토콜 및 프로그램입니다.
SSH를 사용하면 데이터가 암호화되어 전송되므로, 보안적으로 뛰어난 방법으로 원격으로 다른 컴퓨터에 접속할 수 있습니다.
 
SSH를 사용하여 다른 컴퓨터에 접속하려면 다음 단계를 따르면 됩니다.

  1. SSH 클라이언트 설치: 먼저 SSH 클라이언트 프로그램을 설치해야 합니다. 대부분의 리눅스 및 macOS 시스템에는 기본적으로 SSH 클라이언트가 설치되어 있습니다. Windows에서는 PuTTY 또는 OpenSSH 등의 SSH 클라이언트를 설치해야 합니다.
  2. 접속 명령어 입력: 터미널 또는 명령 프롬프트에서 SSH 명령어를 사용하여 원격 컴퓨터에 접속합니다. 일반적인 형식은 다음과 같습니다:여기서 username은 원격 컴퓨터의 사용자 이름이고, hostname은 원격 컴퓨터의 주소나 호스트 이름입니다.
    $ ssh username@hostname
  3. 예를 들어, user라는 사용자로 example.com이라는 호스트에 접속하려면 다음과 같이 입력합니다.
    $ ssh user@example.com
  4. 비밀번호 또는 키 입력: 접속하려는 원격 컴퓨터가 비밀번호로 보호되어 있다면, 비밀번호를 입력하게 됩니다.

해설

문제에서 주어진 조건은 다음과 같습니다.
 
컴퓨터의 사용자 이름( 계정명 ): bandit0
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: bandit0
 
저는 Windows 11에서 진행하였습니다. 따라서 cmd 또는 Windows PoewrShell을 사용하였습니다.
 
ssh 명령어를 입력하면 다음과 같이 떠야 합니다. 아니라면 ssh 설치가 필요합니다.

 
이제 문제 풀이를 위해 ssh 통신으로 level 0 접속을 시도하겠습니다.

PS> ssh bandit0@bandit.labs.overthewire.org -p 2220

 
접속에 성공했다면 아래와 같은 화면이 뜨고 password를 입력하라고 뜹니다. password는 이미 bandit0라고 알려줬었습니다. password를 입력할 때 비밀을 보호하기 위해 입력할 때 아무런 입력값도 보이지 않습니다. 그러니 당황하지 말고 bandit0를 입력하고 Enter를 눌러주세요!
 

접속이 성공하면 다음과 같은 화면이 떠야 합니다.

그런데 이러면 level 0에 접속하는 것은 성공했으나 level 1으로 가기 위한 방법은 모릅니다. 그 방법은 또 문제로 주어지게 됩니다.


Bandit Level 0 → Level 1

 
문제를 설명하자면 방금 접속한 level 0에 readme라는 파일 안에 Level 1으로 접속할 수 있는 password를 저장해 두었다고 합니다.
 
먼저 ls 명령어에 대해 알아보도록 하겠습니다.
 
"ls"는 "list"의 약자로, 리눅스와 유닉스 기반의 운영체제에서 사용되는 명령어입니다. 이 명령어는 현재 디렉터리 내의 파일 및 디렉터리 목록을 나열하는데 사용됩니다. "ls" 명령어를 실행하면 현재 작업 중인 디렉토리에 있는 파일과 디렉토리의 이름이 화면에 출력됩니다.
 
기본적으로 "ls" 명령어는 간단한 파일 및 디렉토리 목록을 보여줍니다. 그러나 다양한 옵션을 사용하여 보다 자세한 정보나 다양한 형식으로 파일을 나열할 수 있습니다. 예를 들어, "ls -l" 옵션을 사용하면 파일의 상세 정보(사이즈, 소유자, 권한 등)를 포함하여 나열할 수 있습니다.
 
다음과 같이 입력해 보겠습니다.

$ ls -al

 
그럼 맨 아래에 readme라는 파일이 있는 것이 보입니다. 지금은 이 정도만 알아도 되지만 조금만 주의 깊게 보면 bandit1과 bandit0이 보입니다. 저희가 처음에 ssh로 접속할 때 계정명이 bandit0였습니다. 이에 대한 상세 설명은 접어두겠습니다.

더보기


"ls -al"은 "ls" 명령어의 옵션 중 하나로, 현재 디렉터리 내의 모든 파일과 디렉터리를 상세한 정보와 함께 나열합니다. 여기서 각 파일 및 디렉터리의 상세 정보는 다음과 같이 나타납니다

 

  1. 파일/디렉터리의 권한 (permissions)
  2. 링크 수 (number of links)
  3. 소유자 (owner)
  4. 그룹 (group)
  5. 파일 크기 (size)
  6. 수정 시간 (modification time)
  7. 파일 또는 디렉토리의 이름

예를 들어, 아래는 "ls -al" 명령어를 실행한 결과의 예시입니다:

$ ls -al
total 16
drwxr-xr-x  3 user1  group1  4096 Jan  1 12:34 .
drwxr-xr-x 11 user1  group1  4096 Jan  1 12:34 ..
-rw-r--r--  1 user1  group1   512 Jan  1 12:35 file1.txt
-rw-r--r--  1 user1  group1   256 Jan  1 12:36 file2.txt
drwxr-xr-x  2 user1  group1  4096 Jan  1 12:37 dir1

위의 예시에서 첫 번째 줄의 "total 16"은 현재 디렉토리 내의 모든 파일 및 디렉토리의 크기의 합을 나타냅니다. 그리고 각 행은 파일 또는 디렉토리의 상세 정보를 보여줍니다.

 
이제 cat 명령어를 사용해 내용을 읽어 보겠습니다.

level1 패스워드

사실 level 1에 접속하기 위한 계정명은 bandit1입니다. 그리고 패스워드는 NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL 입니다. 앞의 패스워드는 2023년 11월 기준이며, 패스워드는 시간이 지나 바뀔 수 있다는 점 명심하셔야 합니다. 단, 문제에 특별한 언급이 없었다면 호스트(접속해야 할 주소): bandit.labs.overthewire.org와 포트 번호: 2220는 변하지 않았다고 생각하면 됩니다.
 
이제 bandit1(level 1)으로 가기 위한 정보는 다 모았기 때문에 bandit0에서 탈출하겠습니다.  exit 명령어를 입력하면 ssh 연결이 끊기게 됩니다.

$ exit

추가적인 지식으로 less라는 명령어가 있는데 이 명령어를 사용 가능하다면 내용이 매우 긴 텍스트 파일을 읽을 때 매우 편리하니 추가적으로 기억해 주시면 좋을 것 같습니다. 아래와 같이 사용하고 키보드의 space 키와 B 키로 위 아래로 스크롤 가능합니다. 

$ less readme

 

less 실행 결과

 
다음 편에는 level1에 접속하고 level 1에서 level 2로 가기 위한 패스워드를 찾는 과정을 올리겠습니다.

반응형