Colorkrew에서는 고객에게 다양한 서비스를 제공합니다. 이 서비스들은 반드시 안전해야 합니다. DevOps 엔지니어로서 저는 악의적인 행위자들이 다양한 시스템에 무단 접근을 시도하는 방법과 보안 태세를 높이기 위해 접근 제한 방법을 익히고 최신 상태로 파악해야 합니다. 오늘은 제가 재미있고 가치 있다고 생각하는 사이버보안 지식을 쌓기 위해 사용하는 몇 가지 방법을 공유하고자 합니다.
제가 사이버 보안 지식을 쌓을 수 있는 한 가지 방법은 전 세계 어디선가 거의 매주 주말마다 개최되는 '깃발 뺏기(Capture The Flags)'에 참여하는 것입니다. 이 대회는 다양한 취약점을 이용해 대회 웹사이트에 제출한 '플래그'에 접근해 점수를 얻는 대회입니다. 가장 많은 점수를 받은 사람이나 팀이 대회에서 승리합니다. 이 대회는 시스템의 허점을 찾아내고 익히는 재미있고 교육적인 방법입니다. 언젠가 우리 사무실에서 사이버보안 지식을 재미있고 도전하는 대회에 참여할 수 있는 행사를 주최하고 싶습니다.
이 지식을 얻는 또 다른 재미있는 방법은 오랫동안 좋아했지만 제대로 사용해본 적이 없었던 웹사이트를 직접 만져보는 것입니다. 최근에 Colorkrew가 구독을 지원해주면서 Hack The Box라는 이름이 되었습니다.
Colorkrew에서는 엔지니어들이 엔지니어링 및 학습 지원 예산을 받습니다. 우리는 이 예산을 자유롭게 사용하여 표준 장비 외에도 업무 지식과 장비를 향상시킬 수 있습니다. 이는 우리가 계속 배우고 직장에서 사용하고 싶은 도구에 접근할 수 있도록 하려는 그들의 약속입니다. 저는 사이버 보안 지식을 향상시키기 위해 이 웹사이트 구독에 예산을 쓰기로 결정했습니다.
Hack The Box는 취약점을 악용해 기계('박스')에 루트 접근 권한을 얻도록 도전하는 교육 플랫폼입니다. 아직 이 웹사이트를 완전히 사용해보진 않았지만, 가장 쉽고 해킹당한 박스인 "Lame"을 어떻게 극복했는지 조금 공유하고 싶습니다.

이 기계는 특별히 해킹하기 어려운 기계는 아니지만, 웹사이트가 제공하는 것을 소개하기에 훌륭합니다.
다음으로 넘어가기 전에 미리 말씀드리자면, 저는 이 시스템에 익숙해지는 중이라 스크립트 키디 방식을 사용할 예정입니다. 하지만 언젠가는 시스템에 접근할 때 Metasploit에 덜 의존할 수 있게 되길 바랍니다.
이 상자를 통과할 때 가이드 모드를 사용할 예정입니다. 이 모드는 과정 중에 도전 과제를 제공하여 혼자 이 기계에 접근할 때 무엇을 찾아야 하는지 교육합니다.
상자를 켜고 첫 번째 작업을 시작한다

"원격 호스트에서 'nmap' 상위 1000개 TCP 포트 중 몇 개가 열려 있나요?"
저는 HTB(Hack The Box)에서 제공한 컴퓨터에 로그인해서 'nmap'이라는 도구를 사용해 Target IP 주소 "10.129.177.49"를 사용합니다
'nmap'은 다양한 원격 호스트의 포트를 스캔하고 그 포트 뒤에서 실행되는 서비스를 발견하는 데 사용되는 도구입니다.
이 명령어를 실행할 때 몇 가지 매개변수를 제공합니다
- '-sV'는 포트 뒤에서 실행 중인 서비스 버전을 찾기 위한 시도입니다
- '--top-ports 1000'을 사용하여 시스템에서 가장 인기 있는 1000개 포트와 NMAP을 실행하기 위해
- '--min-rate 1000'을 사용하여 nmap이 초당 최소 1000개의 패킷을 전송하도록 하여 처리 속도를 높이기 위해
그 명령을 대상에 적용해 4개의 열린 서비스를 찾았습니다

그래서 4개를 작업에 넘기고 제출한 뒤 다음 작업으로 넘어갑니다

"VSFTPd의 어떤 버전이 별로인 버전인가요?"
'nmap' 스캔 출력을 다시 보니 2.3.4 버전이라 제출하고 넘어갔습니다

"VSFTPd 버전 2.3.4에는 유명한 백도어가 있고, 이를 악용하는 Metasploit 모듈이 있습니다. 그 익스플로잇이 여기서도 작동하나요?"
먼저 온라인에서 이 익스플로잇이 무엇인지 찾아보니 "CVE-2011-2523"이라는 글을 찾았습니다. 이 CVE는 VSFTPd 서비스에 6200/tcp 백도어 포트를 열어 기계에 접근할 수 있게 하는 취약점이 있다는 것을 알려줍니다.
기계에서 metasploit를 실행하고 이 모듈을 찾아 사용하려고 합니다


이 모듈을 사용해 원격 컴퓨터에 연결할 수 없어서 작업에서 "아니오"라고 대답했습니다.

"라마에서 어떤 버전의 삼바가 실행 중인가요? 숫자는 "-데비안"은 포함하지 않고 제공하세요."
HTB 사용 온보딩 과정에서, "Starting Point"라고 부르는 시작 과정을 거치라고 요청합니다. 이 과정에서 삼바 인스턴스에 연결하는 방법에 대해 조금 배웠습니다. 이 지식을 활용해 앞서 진행한 'nmap' 스캔에서 볼 수 있는 삼바 인스턴스에 연결했습니다.
'smbclient –L 10.129.177.49' 명령어를 실행하는데, '-L'은 서버에서 이용 가능한 모든 서비스를 나열합니다. 명령어는 비밀번호를 요구하지만, 저는 그냥 엔터를 누르고 넘어갑니다

여기서 버전 번호 3.0.20-Debian이 보이므로, 이를 HTB에 넘기고 다음 작업으로 넘어갑니다

"2007 CVE는 'smb.conf'에서 'username map script' 옵션이 활성화된 상태에서 'SamrChangePassword' 함수를 포함한 셸 메타문자를 통해 원격 코드 실행을 허용합니다."
여기서 "Samba 3.0.20 CVE"를 구글링했더니 CVE-2007-2447 이라는 설명이 작업과 같아서 답변으로 제출하고 다음 작업으로 넘어갔습니다.

"CVE-2007-2447을 익스플로잇하면 어떤 사용자로 쉘을 반환하나요?"
이 취약점에 대해 더 배우기 위해 개념이나 증명을 찾아보다가 이 글을 발견했습니다 https://amriunix.com/posts/cve-2007-2447-samba-usermap-script/
원격 호스트에서 명령을 실행할 수 있는 페이로드가 포함된 사용자 이름을 전달할 수 있다는 것을 알게 되었습니다. 하지만 저는 수동으로 이 작업을 시도하지 않고 우선 Metasploit을 사용하려고 합니다. 먼저 그 도구를 배우고 싶기 때문입니다.
사용하고 싶은 모듈을 찾아서 연결하려고 했지만 실패하는 것 같습니다.

여러 번 고민하고 Metasploit에 대해 조금 더 배우면서, 페이로드를 설정하고 구성해야 한다는 것을 알게 되었고(때로는 기본 페이로드도 괜찮습니다), RHOST 오타를 RHOSTS로 고치고, 어떤 로컬 주소 포트와 IP 핸들러를 사용해야 하는지 고쳐야 합니다.
이 설정을 통해 머신에 접근할 수 있고, 'whoami'를 실행해 제가 어떤 사용자인지 확인할 수 있습니다. 그게 바로 'root'입니다.

루트 계정으로 컴퓨터에 접근하면, 기본 리눅스 명령어로 호스트에 대해 마키스에 플래그를 출력하고 루트 홈 디렉터리를 출력해 박스를 성공적으로 마무리하는 등 마지막 두 작업을 쉽게 마무리할 수 있습니다.

와후

저는 항상 사이버보안에 관심이 많았고, 가끔씩 직접 해보는 것이 재미있다고 생각합니다. 비록 매우 피상적이지만, 소프트웨어를 최신 상태로 유지하고 자신을 보호하지 않으면 얼마나 취약해질 수 있는지를 보여줍니다. 예를 들어, 이 과제 초반에 VSFTPd를 악용하지 못한 진짜 이유는 'Lame' 방화벽 때문에 6200의 백도어 포트에 접근하지 못했기 때문입니다. 이는 제대로 구성된 방화벽과 업데이트된 소프트웨어가 얼마나 중요한지 보여주었고, 이는 제 업무에 매우 중요합니다.
이 글이 재미있게 따라가셨길 바라며, 직접 박스를 사용해 보시고 사이버보안에 대해 계속 즐겁게 배우세요!