Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

가상 머신을 손쉽게 3단계로 훔치는 방법

가상 머신을 손쉽게 3단계로 훔치는 방법

Mar 17, 2023

지난주에 Spiceworks의 한 스레드에서 이 회사에 다시 나타나 괴롭힌 악성(비행) sys admin에 대해 이야기했습니다. 저는 여러 스레드를 훑어보았는데, 특히 한 가지가 눈에 띄더군요. “당신들 말투가 꼭 경찰 같군요. 아무도 믿지 않나요? 누군가를 믿으려면, 당신 자신도 믿을 만해야 합니다.”

저는 거의 “그렇게 순진할 수 있다면 좋겠다”는 답글을 달 뻔했습니다. 비관주의자는 아니지만, 그 세계에서 살 수 있었으면 좋겠어요. 저는 경험을 가진 낙관주의자입니다. 그리고 제 경험은 그에 대한 유일하게 가능한 답이 “나는 모두를 신뢰하지만…… 어느 지점까지만”이라는 것임을 말해줍니다.

그럼 IT 보안 게임에서 신뢰가 왜 큰 문제인지 이야기해볼게요. 먼저, 어떤 회사가 해커에게 침투당했고, 신용카드 번호 같은 정보가 도난당했다는 얘기를 너무 많이 듣죠. 솔직히 말해, 이건 정말 심각한 일이고 사람들을 두렵게 만듭니다. 두려움은 신문을 팔아! 우리가 잘 듣지 못하는 건, 어떤 사이트에도 침투하지 않았기 때문에 벌어지는 수천 개의 작은 해킹들입니다. 그럴 필요조차 없었어요. 이미 내부에 있었으니까요.

어느 날, 저는 한 회사에서 일한 적이 있어요. 그들은 소프트웨어를 만들었고, 실력이 정말 뛰어났죠. 저는 주로 그들의 VMware environment 를 제대로 시작하고 가동시키기 위해 합류했습니다. 그들은 제품을 가져다 여러 전기 유틸리티 회사들에 맞게 조금씩 손보곤 했어요. 예전에는 개발자가 그 유틸리티 현장에 가서 소프트웨어를 조정하는 일을 도와줄 때, 노트북을 들고 가고, 경우에 따라서는 여러 개, 많게는 한두십 개까지 하드 드라이브를 챙겨 가곤 했습니다. 그 하드 드라이브에는 운영체제(OS)와 모든 도구, 그리고 그 환경에 필요한 소프트웨어가 들어 있었죠. 유틸리티 회사에 도착하면, 노트북에서 하드 드라이브를 빼서 해당 회사라고 라벨 붙은 드라이브로 끼우고, 그대로 작업을 계속하는 방식이었습니다. 이론적으로는 좋은 아이디어였지만, 실행은 최악이었어요. 드라이브는 자주 잃어버리거나 고장 나기도 했고, 어떤 경우에는 도난당하기도 했습니다. 실제로 제가 드라이브를 전부 돌려받았을 때, 어떤 것들은 소프트웨어와는 전혀 관계없는 것들이었고, 대신 음악, 영화 같은 것들로 가득 차 있더라고요.

그래서 등장한 게 VMware 입니다. 이제 아이디어는 이거죠. 개발 환경을 만들어 주고, 그들을 유틸리티 현장으로 보냅니다. 그리고 VPN을 통해 조정과 테스트를 할 수 있도록, 일을 할 때 필요한 접근만 하면 되게 만드는 거죠. 이것도 좋은 생각이었지만, 가끔은 어쩔 수 없이 하드 드라이브를 들고 나가야 했습니다. 이 경우에는 그냥 그들의 노트북에 VMplayer를 넣어두고, 저는 VM Convertor를 사용해서 VM을 복사해 옮겼습니다. 이렇게 하면 그들은 작업을 할 수 있고, VPN 연결을 걱정할 필요가 없었습니다. 저는 하드 드라이브를 관리했고, 하드 드라이브는 수령 확인(인수증) 대상이 됐죠. 개발자가 현장을 떠날 때, 제가 필요한 VM과 함께 하드 드라이브도 같이 발급(인계)해 줬습니다. 그리고 그들이 돌아오면, 저는 그들을 기다리며 그 자리에 앉아 있었죠.

등장, Donnie (물론 이건 그의 진짜 이름이 아니었습니다 )! 자, 그는 뛰어난 개발자였고, 사람을 끌어당기는 매력을 가진 인물이었죠. 그래서 경고 라벨이 붙った 채 태어나야 했을 것 같은 타입이었습니다. 그의 가장 큰 재능은 “착한 사람”처럼 굴 수 있다는 점이었고, 매력을 풀 볼륨으로 켜서 내뿜을 수 있었어요. 그가 할 수 있는 건 뭐냐면, 가장 말도 안 되는 황당한 아이디어조차 그럴듯하게, 상식적으로 들리게 만드는 일이었습니다.

그는 제가 VM을 넘겨주고 관리한다는 걸 보자, 한 가지 아이디어를 들고 제게 다가왔습니다. “야, Rich. 너 진짜 엄청 바쁜 사람인 거 알아.” 그러고는 한동안, 거의 5분쯤이나 칭찬을 이어가더니 계속 말했죠. “그러니까, 드라이브를 배포하고 VM도 복제하는 권한을 나한테 주면 어때…?”

설마 내가 말하지 않았나 싶은데, 그가 기저귀를 차고 있을 때부터 나는 경찰이었고, 정계에서 요직도 맡았으며, 그리고 나는 아주 정교하게 튜닝된 ‘넌센스 미터’까지 갖게 됐지! 바늘이 끝까지 치솟았고, 작은 목소리가 내가 그를 어떤 데에도 믿지 말라고—내가 그를 던질 수 있을 만큼은 절대 믿지 말라고—경고하고 있었어.

“고맙지만, 아니요.” 라고 나는 말했다.

“하지만……”

“NO의 어느 부분을 이해 못 했어?” 하고 내가 물었다.

그는 약간 성이 난 듯 화가 난 채로 자리를 떠났다.

그는 돌아오지 않았고, 나는 그가 요점을 이해했을 거라고 생각했어요.

가상화 환경을 운영한다면, 해야 할 것 중 하나는 맹금처럼 그 환경을 지켜보는 것입니다. 성능이 어떻게 나오는지 알아야 하고, 그 안에서 어떤 일이 일어나는지, 그리고 성능이 어떻게 작동하는지도 항상 파악해야 합니다. 그래서 저는 늘 제 환경을 가상으로 한 바퀴 둘러보며 점검하곤 해요. 어느 날에는 살펴보다가 스냅샷이 있는 몇 대의 기계를 발견했습니다. “그게 그렇게 큰 일은 아니지”라고 말하실 수도 있죠? 하지만 스냅샷은 아무 데나 그냥 방치해 두면 문제가 될 수 있고, 어떤 경우에는 오히려 예상되는 일이기도 합니다.

그 작동 방식은 이렇습니다. VMware 세계에서는 VM용 이른바 하드 디스크가 실제로는 VMDK 파일이라는 이름의 파일일 뿐입니다(그리고 네, VMDK 파일이 여러 개 있을 수도 있어요). 많은 백업 소프트웨어는 스냅샷을 찍는 방식으로 동작합니다. 이 과정은 VMDK를 우리가 quiescence(조용한 상태)라고 부르는 상태로 만듭니다. 즉, 시스템이 잠잠해지고(quiet) 변경 사항(예: 파일 업로드)이 VMDK 파일에 반영되지 않게 됩니다. 백업이 끝나면 소프트웨어가 스냅샷을 VMDK 파일에 병합(merge)하고, 그 스냅샷은 더 이상 존재하지 않게 됩니다.

그런데 나는, 있어서는 안 될 스냅샷을 보고 있었던 거예요.

그래, 내가 생각했죠. 몇 가지 가능성이 있었습니다. 첫째, 백업 소프트웨어가 뭔가 잘못돼서 제때 뒷정리를 못 한 것. 참고로 백업 소프트웨어가 원인 불명의 실패를 무작위로 일으킨다면, 스냅샷을 다시 VMDK 파일에 병합(merge)하고 있는지 확인해보는 게 좋을 수 있습니다. 둘째 가능성은, 내가 스냅샷을 만들어 놓고는 완전히 잊어버린 경우요. 나는 스냅샷을 만든 기억이 없었지만, 저는 50이 넘었잖아요. 그리고 알다시피、頭は一番先に… . . .

셋째 가능성도 있었지만, 나는 비밀번호 등은 꽤 단단히 관리하고 있었지. 그냥 확인 삼아 스냅샷 로그를 뒤져서, 어디에 하나가 만들어졌는지 찾아보았고는 생각했어. “혹시 내가 뭔가 멍청한 짓을 했나?”

그래서 나는 그 스냅샷을 정리하고, 계속 진행했어.

일주일 뒤에 또 다른 스냅샷이 생겼고, 나는 “대체 뭐야?!” 하고 말았지. 더 깊게 파헤쳐 보니 이번에는 예상치 못한 일이 벌어졌다는 걸 깨달았어. 나는 상사에게 가서 스냅샷을 만든 사람이 그 사람인지 물었지. 물론 아니라고 했어. “루트 비밀번호를 누군가에게 알려준 거야?” 당연히 아니라고 했고.

나는 가서 비밀번호를 바꿨고, 다음 수를 생각했어. 분명 해커가 있는 거야. 어쨌든 비밀번호가 유출된 것 같아서 이번에는 루트 계정용 새 비밀번호를 만들었는데, 말도 안 되게 길고 말도 안 되게 복잡하게 해버렸지. 하지만 경찰로 일했던 내 수년의 경험으로도 알았어. 도둑들은 예전에 성과를 거둔 문을 다시 와서 두드리고 흔들어 본다는 걸.

그리고 누가 이 일을 하는지 추적할 필요도 있었어. 그래서 SNORT를 다운로드해서 직접 SNORT 박스를 하나 만들어 버렸지. SNORT를 한 번도 만져본 적이 없는 분들을 위해 말해두면, 이건 시중에서 손꼽히는 침입 탐지 시스템 중 하나야. 게다가 무료라는 점은 더더욱 좋게 만들어주지.

이제 나는 지켜보며 기다렸다. 그런데, 제대로 잠글 수 있었던 방법은 몇 가지 더 있었지만, 나는 그 사람을 잡고 싶었다. 나는 좀 수상하게 생각했고, 내가 떠올린 건 비밀번호가 예전 방식 그대로로 유출됐다는 거였다. 누군가가 그걸 해커에게 건네준 거지. 내 추측이 맞다면, 그들은 또다시 그럴 거라고 봤다.

일주일 뒤, 나는 한 장이 아니라 두 장의 스냅샷을 확보했다. 그리고 이제 나는 추적하러 나섰다. Snort는 그때의 연결 정보를 뱉어냈고, 나는 성공한 시도와 실패한 시도를 한 IP 주소로 추적했다. 그 정보를 바탕으로 어디 작업대가 그 IP를 임대했는지 찾아내고, 운영자에게 직접 찾아가 봤다. 맞혀봐, 그건 내 친구, Donnie였다.

“좋아,” 나는 예전의 형사 모드로 다시 미끄러져 들어가며 말했다. “왜 그래, Donnie? 네가 지금 하는 짓이 뭐야?’

나는 그에게 증거를 보여 주었고, 그는 말을 시작했다. “네가 듣던 대로 하려 했어. 널 압박에서 빼주고 싶어서…….”

“그럼, 네가 그럴 줄 알지. 그래서 내가 아직도 디스크 드라이브를 나눠주고 있는 동안, 넌 못 나눠주고 있는 거고.” 나는 이미 그의 컴퓨터를 원격으로 확인해 두었고, “VM은 어디 있어?”라고 물었다.

“외장 하드 드라이브에요.” 그가 한 박자 뒤에 답했다. “집에 있어요.”

“왜 하필 집에요?” 내가 물었다.

“서버에 올려놨어요.” 그가 말했다. “그리고 친구들이 가지고 놀게 해주고 있어요!”

얼굴에서 핏기가 쭉 빠져나가는 느낌이 들었다. 소프트웨어며 데이터며 전부 다 독점 기술과 자료 같은 거였다. 그런데 이제 인터넷에 올라가 있다니! “보여줘!”

그는 Firefox를 열고 주소를 입력했다. 그리고 내가 다음으로 본 건, vSphere 클라이언트가 연결된 XP Box가 표시되고 그 목록에 여러 대의 기기가 나열된 웹 페이지였다. 제대로 잠가두지도 않아서, 누구나 누구나 접속할 수 있었던 것이다.

나는 고개를 끄덕였다. 내 최악의 악몽이 눈과 귀앞에서 펼쳐지고 있었다. “가상 머신(VM)은 어떻게 구했어요?”라고 내가 물었다.

그는 잠시 불편한 표정을 짓더니 설명했다. “vSphere 클라이언트로 로그인해서 스냅샷을 만들었어요. 그다음엔 VMX랑 VMDK 파일을 그냥 외장 하드 드라이브에 복사하면 되더라고요. 집에 가져가서 VMPlayer로 열어봤어요!”

“그러니까 우리가 이런 얘기를 하는 건, 당신이 뒷정리를 하지 못했기 때문이야.” 이제는 내가 답을 이미 알고 있는 질문을 물어볼 차례였다. “비밀번호는 어디서 났어?”라고 내가 물었다. “당신이 싫다고 했으니까, 말해주지 말라고 부탁했지.” 그는 주위를 둘러보고는 한숨을 내쉬었다. “내가 하고 싶은 걸 말했더니, 그게 말이 된다고 생각해서 그냥 주더라고.”

“그 ‘그들’이 누구야?”

“회사 사장님이랑 네 상사!”

그쯤 되자 나는 머리를 한 대 치고 고개를 흔든 뒤, 으르렁거리듯 “나랑 같이 가!”라고 소리쳤다.

우리는 사장실로 들어가서 내가 찾아낸 것과, 그의 독점 소프트웨어가 이제 전 세계 누구나 훔칠 수 있게 인터넷에 올라가 버렸다는 사실을 설명했다.

나중에 나는 전부의 전말을 알게 됐다. 그는 현란한 말과 “그럴듯하네, 이거 말이 되잖아” 하는 제스처로 그들을 속였고, 회사는 그대로 믿어버렸다. “우리는 그를 믿었어.” 회사 사장은 한탄했다.

말할 필요도 없이, 그는 그곳에서 오래 일하지 못했다. 경찰이 동행하는 가운데 우리는 그의 웹 서버와 외장 하드 드라이브를 확보했고, 그가 감옥에 가지 않은 것만으로도 이 보안 사고가 많은 사람들에게 너무나도 부끄러운 일이었기 때문이었다.

그 뒤로 상황은 좀 가라앉았다. 돈니에 대해서는, 그가 이제는 IT 업계에조차 있지 않다는 증거를 나는 본 적이 없다. 내가 아는 한, 그는 어딘가에서 중고차를 팔고 행복하게 오래오래 살고 있을지도 모른다.

TOP-7-522X90 (1)

공유하기

더 알아보기

저자 소개

Asset Not Found

Richard Muniz

프리랜서 IT 컨설턴트

Richard는 프리랜서 IT 컨설턴트이자 블로거이며, Saisoft에서 VMware Administration, Citrix XenApp, IT를 위한 재난 계획 및 복구, Comptia Server+를 가르치는 교사입니다.