OverTheWire: Bandit Network Connection (Level 15 → Level 16)

Fordsec·2023년 4월 4일

  1. Level 15 -> Level 16으로 넘어가는 문제이다.

문제를 읽어보면 이전 문제는 30000번 포트에 데이터를 전달 했다면, 이번에는 30001번 포트에 데이터를 전달 하면 된다.

그런데, SSL 암호화 통신을 사용해서 데이터를 보내라고 한다.

  1. SSL에 대해서 알려주고자 한다.

지난번 문제에서는 nc라는걸 이용해서 데이터를 보냈었다.

nc는 기본적으로 TCP통신을 하게된다.

TCP 통신은 프로토콜중 하나이다.

데이터를 그대로 문자 그대로 보내는 특징이 있다.

예를들어서 certa라는 글자를 던졌다. 그러면 이 네트워크에 certa라는 글자가 그대로 전송이 되는 것이다.

그런데 생각을 해보면, 만약에 nc를 써서 로그인 같은걸 했을때, 아이디 certa와 비밀번호 1234를 쓰고 로그인을 했다고 가정을 하면, 요 데이터가 글자 그대로 네트워크를 타서 서버까지 날라간다.

만약 그 중간 공격자가 네트워크 장비에서 보고있었다면? 어떤 상황이 될까? 그러면 공격자는 지나가는 데이터들을 쭉 보다가 certa이고, 비밀번호가 1234야? 아하 아이디와 비밀번호가 노출이 되는 문제가 생긴다.

그래서 nc를 쓰면, 데이터가 암호화가 되지 않는다.

그래서 TCP를 한단계 위에서 암호화 하는 프로토콜이 있는데, 그게 바로 SSL이라는 것이다.

요즘말로는 TLS라고 하는데, 요 SSL/TLS가 무엇이냐? 똑같이 certa와 1234를 보내긴 할건데, 이거를 암호화 해서 보내는 방식이다.

지난번 문제는 그냥 nc로 데이터를 보냈다면, 이번에는 암호화 연결을 할 수 있는지, 이거를 묻는 문제이다.

이 암호화를 하기 위해서는 여러가지 도구를 쓸 수 있지만, openssl이라는 툴을 사용할 수 있다.

모의해킹 실습할때, openssl라는 도구를 종종 사용하게 된다.

  1. openssl를 사용하는 방법, 연결하는 방법을 먼저 설명하고자 한다.

openssl 하고, s_client 라고 써주게 되면, 이제 이 클라이언트로 동작을 하겠다. 라는 것이다. 그니까 내가 어딘가에 연결을 하겠다. 요말을 하는 것이다.

그리고 뒤에 -connect 옵션을 붙여준다. (openssl로 들어갈거야 라는 의미) 그리고 뒤에 주소를 적어줘야 한다.

지금 같은 경우는 bandit 15에서, 지금 들어와 있는 상태에서, 이 시스템에 다시 로그인 할거니까 localhost를 적어주면 된다. localhost는 자기 자신을 상징하는 주소이다.

그리고 뒤에는 :(콜론)을 적어준다음에, 포트번호를 적어주면 된다. 문제에서 30001이었기에 해당 값으로 적어주었다.

이렇게 입력을 하면 암호화 연결을 체결한다. 라고 볼 수 있다.

  1. 사진에 보면 SSL와 TLS가 나오는데 요즘 말로는 TLS이다.

암호화 연결을 한 것이다. 암호키를 서로 주고 받은 다음에, 이제 우리 암호화 통신 할거야 라고 이야기를 끝내둔 상태이다.

이제 여기에서 데이터를 쓰면 지난번 문제와는 다르게 데이터가 암호화 돼서 날라가게 된다.

  1. 아무거나 입력하면 지난번 문제에서 설명한 것 처럼 뜬다.

  1. 현재 비밀번호를 쓰면, 지난번 문제처럼 다음으로 가는 비밀번호가 나온다.

  1. 이번문제는 openssl를 통해 해결을 하였다.

https://youtube.com/@Certa6

제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)

Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.

profile
Penetration Tester | ROK NIS 2025 APEX | ROKAF CERT

0개의 댓글