Bandit은 대표적인 Wargame 중 하나로, player가 SSH라는 프로토콜을 이용하여 Bandit이라는 시스템에 접속할 수 있다. Bandit 내부에 존재하는 bandit0부터 bandit34까지의 계정을 활용하여 시스템에 로그인 할 수 있다. 여기서 주어진 임무는, 앞서 언급된 계정의 패스워드를 찾아내는 것이 목적이다.
Bandit의 소개 페이지에는, "aimed at absolute beginners"를 강조하고 있다. 즉, Linux 및 SSH 개념에 대해 백지인 상태에서 '입문'하기에는 좋으나, 특정 level 이상으로 올라갈수록 풀이 속도가 더디어진다. 그렇기에 Bandit 자체에서 제공하는 'Commands you may need to solve this level'를 활용하여 구글링을 통해 학습하거나, 처음부터 Linux 입문 강의와 병행한다면 보다 수월하게 진행할 수 있다.
Bandit을 시작하기에 앞서, 무료로 제공되는 PuTTy를 다운로드 해야 한다. PuTTy에서는 SSH, TELNET, SERIAL, RLOGIN 프로토콜을 사용하여 원격지에 위치한 서버나 다른 PC 등에 접속할 수 있다.
PuTTY 다운로드 후 실행하면 PuTTY Configuration 팝업이 실행된다. 실행 한 뒤에는 Session 카테고리에서 Host Name (or IP address) 입력란에 도메인이나 IP를 입력한다. Port, Connection type 또한 서버 설정에 맞게 지정해주도록 한다.
Host : bandit.labs.overthewire.org
Port : 2220
원하는 이름으로 지정한 뒤, Save 하면 재접속 시 별도의 설정을 하지 않아도 Load 해서 사용할 수 있다. PuTTY Configuration에서 정상적으로 접속이 이루어지면, PSFTP로 연결된다.
앞서 언급한 Host와 Port를 입력하게 되면, PSFTP 창에 'login as'라고 뜬다. 이때부터는 우리가 흔히 웹 사이트에서 로그인할 때를 떠올리면 된다. 'login as'에는 username을 입력하고, 이후에 뜨는 'password'에는 말 그대로 해당 계정의 패스워드를 입력한다.
Level 0는 튜토리얼과 동일하게 진행됨으로, Level Goal이 무엇인지에 대해 안내해준다. username은 현재 진행하고 있는 level의 숫자를 따라간다. 예를 들어, 현재 Level 7에서 Level 8으로 넘어가는 단계를 진행하고 있다면, username은 Bandit7이 되는 것이다.
Bandit Level 0 username : bandit0
Bandit Level 0 password : bandit0
Level 0에서는 password가 별도의 문제 없이 주어지지만, Level 1부터는 password가 숨겨져 있다. 'Commands you may need to solve this level'에 주어지는 Linux 명령어들을 적극적으로 활용하여 해당 Level의 계정에 맞는 password를 찾아내는 것이 목적이다.
아래에 적힌 Tip은 처음 Bandit을 접했을 때 유용한 것들을 간단하게 적어보았다.
Bandit에서 요구하는 password들을 상당히 길며, 복잡하다. 또한 우리가 웹 사이트에 접속할 때 로그인을 하듯이, Bandit에서도 동일하게 새로운 Level에 접속할 때는 username마다 각기 다른 password가 필요하다. 참고로 password는 함부로 노출되어서는 안 되는 부분이기 때문에, 육안으로 노출되어 있지 않다.
앞서 언급한 특성을 활용하여 보다 효율적으로 Bandit을 풀어내기 위해서는 MEMO를 적극적으로 활용하는 것이 현명하다. 복잡한 password를 복사하여 별도의 공간에 차곡차곡 적어두도록 한다. 또한 password를 적을 때에는 현재 Level이나 username을 함께 적어두어, 특정 Level에 손쉽게 접속할 수 있도록 한다.
MEMO를 위해서는 찾아낸 password를 복사 및 붙여넣기 해야 하는데, 우리가 흔히 사용하는 Ctrl C, Ctrl V는 먹히지 않는다. PSFTP에서는 별도의 방법을 사용하니 애먹지 말고 미리 알아두는 것이 편리하다.
Ctrl C : 찾아낸 password를 마우스로 드래그한 뒤, 드래그한 내용을 마우스로 클릭하면 복사 완료.
Ctrl V : 앞서 복사한 내용을 붙여넣기 할 때는, 원하는 커맨드 라인에 마우스 커서를 두고 "우클릭"하면 붙여넣기 완료.
PuTTY 접속 후 상단에 위치한 제목표시줄을 우클릭하면 메뉴가 확장되며, 해당 메뉴의 속성(p)으로 이동하면 각종 터미널 옵션을 이용할 수 있다. 터미널 옵션에는 색, 레이아웃, 글꼴 등을 사용자에 맞게 설정할 수 있다.
Bandit 사이트에는 매 Level마다 제공되는 일종의 가이드가 존재한다. 'Level Goal' 하단에 나와있는 'Commands you may need to solve this level'에는 해당 level에서 필요한 Linux 명령어가 적혀있다. 별도의 Linux 지식 없이 Bandit을 시작했다면, 적힌 명령어들은 마치 외계어처럼 보일 수 있다. 해당 명령어들을 Google에 검색하여 사용법을 익힌 뒤 활용하면 된다.
또한 특정 level에서는 추가 학습을 권고하는 경우도 존재한다. 이러한 추가 학습은 'Helpful Reading Material'에 나와있으니, 이를 참고하여 공부하는 것도 필요하다. 때에 따라서는 사이트나 간단한 커리큘럼을 적어두곤 한다.
간단하게 Bandit Tutorials를 적어보았다. 해킹 공부를 할 때는 보다 효율적인 Bottom-Up 방식으로 공부를 하는 것이 좋겠지만, 단순히 흥미를 위해서 Top-Down 방식으로 무작정 Wargame에 입문하였다. 어느 정도 Bandit에 익숙해지고 나서는, '최소한의 배경지식이 있었다면 유연하게 풀이 할 수 있었겠구나' 하는 생각이 들었다. 결국 시행착오를 겪으면서, Bottom-UP과 Top-Down 이 두 가지의 방식을 혼용해서 사용하는 게 가장 이상적인 공부 방법이지 않나 싶다.
코딩 & 해킹 공부가 아니더라도, 반드시 배운 내용을 시각화 및 체계화 하는 과정은 필수라고 생각한다. 그렇기에 많은 분들이 공책이나 vlog에 공부 기록을 남기는 것도 그 이유에서일 것이다. 마찬가지로, Bandit은 더더욱 level를 거칠 때마다 사용했던 Linux 명령어와 각종 이론들, 그리고 풀이 방법과 password를 적어두는 것이 좋다. 단기간에 Bandit를 깨는 것이 목표라면 forgetting curve를 고려할 필요는 없겠지만, 대부분은 Bandit를 꾸준히 깨는 것보다 더 중요한 우선 순위들이 존재할 것이다. 😂
나 또한 velog에 Bandit Level를 될 수 있는 한 기록해 보고자 한다. Top-Down 방식으로 시작했기 때문에, 전문성은 비교적 떨어지지만 시행착오를 통한 학습에서도 얻을 점은 있다. (반면교사도 나름 '교사'다.) 성격상 체계적인 기록을 안 하면 불편해 하는 스타일이기에, 시간 내서 Linux 입문 강의를 통해 필요한 지식들을 학습할 예정이다.