카테고리 없음

꿈은 이뤄진다? Stuxnet, 꿈의 악성코드

Mad Min 2016. 6. 4. 09:22

순수과학 분야의 연구자든, 산업계의 엔지니어든 간에 어떤 한 분야의 문제해결에 집중하는 전문가들이면 다들 한번씩 던저 보는 질문일 것이다:


X 라는 문제/사물의 가장 극단적인 형태는 무엇일까? 아니면,

그 문제의 -- 이론적으로만 존재하는 -- 최적의 솔루션은 어떻게 생겼을까? 어떤 결과로 나타날까?


나는 박사 과정의 대부분의 시간을 악성코드 (쉽게 말해 컴퓨터 바이러스) 의 분석과 관련된 연구로 보냈다. 그러다 보니 랩 친구들과 가끔씩 궁극의, 그리고 피해자에게는 최악의, 악성코드는 어떤 방식으로 구성될 것인가에 대한 얘기를 가끔씩 하곤 했다. 실제로 만들어내야 하는 것은 아니고, 그냥 이론적으로만 생각해 보는 것이니 말은 쉽다.


어쨋든, 이상적인 악성코드의 핵심 요구사항은 몇가지가 있다. 감시 시스템에 들키지 않고 목표물까지 조용하게 감염시킬 수 있어야 한다, 일단 감염된 시스템에서 존재를 확실히 감출수 있어야 한다 등등… 하나 하나 열거하고 기술적인 검토하자면 이론상 불가능한 일은 아니다. 하지만, 여러개 기술적인 사항들을 다 만족시키고 궁극적으로 목표를 완수하는 마스터피스를 만들어 내는 일은 쉬운 일이 아니다, 더구나 실세계에서 제대로 동작한다는 증명까지 해야 한다면 말이다.


"그런데 그것이 실제로 일어났습니다." 이 악성코드는 는 2010년 유럽의 작은 보안업체에 의해 처음 보고되었고, 이어 보안업체 시만텍에서 더 분석한 끝에 기술적인 스펙과 공격목표가 확인됐으며 "Stuxnet" 이라 명명되었다. 신문의 국제면과 기술면을 관심있게 보는 사람이면 이 즈음 이란의 핵시설이 사이버 테러를 당했다는 기사를 접했을 것이다. 간단하게 얘기하면 "바이러스처럼 퍼져 나간 악성코드가 이란의 핵처리 시설의 원심분리기를 일부러 오작동 시켜 망가뜨렸다" 는 것이다. 이 사건의 배후로 이스라엘과 미국의 정보기관이 지목됐지만 아무도 공식적으로 인정하지는 않았다. 웃기는 것은, 공식적으로 인정하지 않았지만 당사자들은 그 배후가 맞다는 뉘앙스가 풍기는 발언을 공공연하게 하고 다녔다는 것이다. 법적 책임은 회피하면서도 적성국에 "까불지 말라"는 메시지를 강하게 전달한 것이다.


이와 관련한 정치적인 이슈는 관심 대상이 아니니 제쳐두자. 그런데, "Stuxnet 이 이란의 핵처리 시설 원심분리기를 일부러 오작동 시켜 망가뜨렸다" 라는 이 한문장에 얼마나 많은 기술적 복잡도와 현란함이 숨어 있을까?


첫째, PC를 연쇄적으로 감염시키기 위해 제로데이 취약점 (zero-day vulnerability) 이 무려 4개나 동원되었다. 이것 하나만으로도 이미 보안 전문가들을 경악시키기에 충분했다. 제로데이 취약점은 말그대로, 세상에 취약점이 알려진지 0 일 (zero-day) 가 지났다는 것이고, 다시 말해 취약점이 아직 세상에 공개적으로 알려지지 않았다는 것이다. 이 제로데이가 가지는 가치에 대해서는 비전문가들을 위해 설명을 덧붙여야 하겠다. 해킹에 있어서 사실상 가장 힘든 부분은 목표 시스템에 존재하는 취약점을 처음으로 찾아내는 것이다. 일단 이 취약점이 공개되고 분석되면 이를 공격하는 해킹툴이나 탐지하는 보안 시스템을 만드는 것은 아주 힘든 것은 아니다. 보안 회사나 제조사들이 이런 제로데이 취약점을 수천만원에서 수억원에 달하는 돈을 들여 사들이는 것도 그만한 가치를 가지고 있기 때문이다. 제로데이는 말그대로 아직 이 세상에 존재가 알려지지 않았고, 고로 무엇을 뜻하는가? 세상의 모든 시스템들이 이 취약점에 무방비로 노출돼 있다는 것이다! 좀 더 쉬운 비유를 대자면, 안정적으로 공격코드를 제조할 수 있는 제로데이 취약점 하나를 찾아냈다는 것은 심마니가 산에서 산삼을 하나 찾아서 땡잡았다는 것이 되겠다.


악성코드에서 하나의 제로데이가 사용됐더라도 놀라울텐데, Stuxnet 은 무려 4개나 동원했다. 이는 사실 개인적인 규모에서 해내기 힘든 일이 되겠다. 어떤 대규모 집단에 의해 기획됐다 하더라도 스스로 4개를 모두 찾아 내지는 못했을것이고, 비밀리에 암시장에서 몇개 사들였을 가능성도 있다. 제로데이를 무려 4개나 사용한 이유는 악성코드의 감염능력을 극도로 높이기 위해서 이다. 같은 윈도우즈 PC 라 하더라도 버전이 다르거나 설치된 소프트웨어의 종류에 따라 통할 수 있는 제로데이는 달라지기 때문이다. Stuxnet 은 PC 를 연쇄적으로 감염시켜 이란의 핵시설 PC 에 까지 도달했으며, 이 일차적 목적을 안정적으로 달성하기 위해 4개의 미공개 취약점이 동원된 것이다. 핵시설이 가지는 폐쇄성을 생각해 보자면… 참 대단하다는 말 밖에.


둘째, Stuxnet 은 존재를 최대한 은폐하게 설계됐다. 사실 이것이 일반적으로 악성 코드에 있어 새로운 사실은 아니다. 이미 많은 종류의 악성코드가 기본적으로 루트킷 (rootkit) 을 갖추고 있기 때문이다. 이 루트킷이 기본적으로 하는 일은 컴퓨터 운영체제의 일부분을 변조시켜 사용자나 감시 시스템 (백신 등) 에 악성코드의 존재를 숨기는 것이다. 쉽게 예를 들어, 악성코드가 PC 하드디스크에 "aaa.sys" 라는 파일 이름으로 존재한다면 그 파일만 찾아내는 것으로 쉽게 탐지 할 수 있을 것이다. 그런데, 루트킷에 감염된 운영체제가 하드디스크의 파일들을 검색할 때 aaa.sys 라는 파일의 존재하지 않는 것으로 표시한다면 탐지가 많이 힘들어진다.


Stuxnet 이 루트킷을 사용했다는 점이 특별한 것은 아니다. 그런데, 이 루트킷을 비밀스럽게 설치하기 위해 벌인 짓 또한 혀를 내두르게 한다. 윈도우즈 PC 를 좀 사용한 사용자라면 소프트웨어 "인증서" 라는 말이 낯설지는 않을 것이다. 일반적으로 운영체제의 중심부에 해당하는 "커널" 모듈을 변경하려는 경우 윈도우즈에서는 새 모듈이 공인 인증을 받은 업체가 제조한 것인지 확인하고, 아닌 경우 경고 메시지를 사용자에게 보여준다. (공인인증과 전자 서명과 관련한 부분은 너무 얘기가 많으니 건너뛰고…) 그런데, 앞에서 말한 루트킷도 일종의 커널 모듈 -- 또는 디바이스 드라이버-- 이고, 당연히 불순한 목적으로 제조한 것이니 제대로 된 인증서에 의한 전자서명이 없겠지? 이렇다보니 루트킷을 설치하려는 순간 사용자에게 경고 메시지가 뜨게 되고, 사용자가 OK 를 클릭하지 않으면 설치될 수가 없다. 당연히 조금만 보안 상식이 있는 사용자라면 이를 설치할 수 있게 용인하지 않을 것이다.


그럼, Stuxnet 은 어떻게 루트킷의 전자서명을 위조했을까? 제대로 먹히는 전자서명을 랜덤하게 위조해낸다는 것은 수학적으로 불가능에 가깝다. 그렇다, 이들은 현존하는 디바이스 제조사의 인증서를 훔쳐내서 전자 서명을 만들어 낸 것이다. 이후 분석에 의해, 그 인증서는 대만의 이름만 대면 다 알만한 PC 주변장치 제조사에서 해킹을 통해 훔쳐낸 것이라는 사실이 밝혀졌다. (PC 주변장치는 판매시에 보통 디바이스 드라이버 소프트웨어를 같이 제공하며, 이는 보통 윈도우즈 PC에서 사용자의 편의를 위해 제대로된 전자서명을 같이 포함한다.)


마지막으로, 자, 비밀스럽게 존재를 숨기면서 목표 근처까지 도달하긴 했는데, 이 목표물을 어떻게 박살을 내야 할까? 안타깝게도 최종 목표물은 우리가 지금까지 흔히 본 윈도우즈 PC 가 아니다. 핵시설의 원심분리기를 제어하는 PLC (programmable logic controller) 이다. 기술적으로 보자면 PLC 도 일종의 컴퓨터이고 이를 감염시키고 원하는대로 제어하는 것이 불가능한 것은 아니다. 그런데, 문제는 이란이 당시 핵개발 관련으로 경제제재를 받고 있는 상황이어서, 그 핵시설의 PLC 는 흔히 시장에서 판매되고 있는 것이 아니란 점이다. 만일 해커가 어떤 산업시설, 예를 들어 발전소에 침입해서 발전기를 멈춰 세우고자 한다면, 그 발전소 설비의 PLC 가 어떤 타입인지 알아내서 이를 기술적으로 먼저 분석해야 하는데… 이란 핵시설의 경우 그것이 시장에 알려지지 않은 모델이었다. 그렇다면, 이 정보는 누가 어떻게 알아낸 것일까? 이 역시 국가단위의 정보 기관 레벨이라도 쉽지 않았을 것이다. 미국이라면 아마도? :-)


이렇게 감염된 이란 핵시설의 원심 분리기는 최고 출력과 출력 0 의 세팅을 짧은 시간에 반복적으로 오가며 망가지고 만다. 물론 상당 시간이 지날때까지 시설 관리자들은 문제를 알아채지 못했을 것이다. 왜냐면 PLC 에도 설치된 루트킷이 모든게 정상적으로 작동한다고 모니터에 데이타를 내보내고 있었을 테니까.

 

정치적인 관점으로 따져서 옳다 그르다를 가려 얘기하고 싶지 않지만, 어쨋든 Stuxnet 은 인류가 만들어 낸 최강의 사이버전 공격 무기임에 틀림없고, 지금 이 시간에도 이를 모방한 많은 공격 시도들이 국가들간에 일어나고 있을 것이다.