September 23,2019

악성코드 분석은 ‘숨바꼭질 게임’

창과 방패의 싸움, 악성코드 VS 탐지 기술

FacebookTwitter

대부분 해킹 대응 방식은 감염 기기에 직접 접근해 악성코드를 제거하는 방식이다. 이러한 이유로, 악성코드 탐지가 중요하다. 그런데 최근 프랑스 경찰청은 악성코드 근원지를 발견해 수많은 악성코드를 제거했다. 덕분에 한 번에 수많은 악성코드를 제거할 수 있었다.

악성코드 제거 방식은 정말로 영리한 방식으로 진행했다. 감염 기기를 일일이 찾아내는 것이 아니라, 악성코드 근원지를 역 감염시키는 방식으로 치료했기 때문이다. 다시 말해, 프랑스 경찰청은 악성코드 근원지를 해킹하여 감염 기기를 파악한 후, 감염 기기에 설치된 레타덥 악성코드를 제거한 것이다.

접근 방법론 측면에서도 굉장히 효율적인 셈이다. 사실 이러한 방식은 프랑스 경찰청이 생각해낸 것은 아니다. 백신 전문 기업 ‘아바스트(Avast)’가 생각해낸 방식이다. 레타덥은 이미 잘 알려진 악성코드이다.

이에 아바스트는 레타덥 악성코드 근원지를 계속 추적해왔다. 참고로 이러한 근원지를 기술적 용어로 ‘명령&통제(C2, Command & Control) 서버’라고 부른다. 악성코드는 C2 서버와 끊임없이 통신하면서 행동하는데, 아바스트는 이러한 통신을 분석해 C2 서버를 찾은 것이다.

아바스트는 C2 서버를 역으로 해킹해 감염 기기를 파악하고, 이러한 기기에 백신을 배포해 레타덥을 제거할 생각을 고안했다. 그리고 이를 프랑스 경찰청에 제안했고, 경찰청이 이를 수행했다.

한 번에 85만 개를 제거한 전략은 굉장히 생소하고 독특한 방식이다. 그렇다 보니, 레타덥이 별 볼 일 없는 악성코드처럼 보일 수 있지만 레타덥은 탐지하기 어려운 악성코드 유형 중 하나이다.

레타덥은 크립토재킹(Cryptojacking) 분야에 속하는 악성코드이다. 참고로 크립토재킹은 정보기기에 몰래 잠입해 비트코인과 같은 암호화폐를 채굴하는 악성코드 유형이다. 감염자에게 직접적으로 미치는 피해는 없다. 단지, 감염 기기의 성능이 낮아질 뿐이다.

크립토재킹 목적은 감염 기기를 이용해 코인을 몰래 채굴하는 것이다. 그러므로 들키지 않는 게 중요하다. 이러한 이유로, 레타덥은 백신에 쉽게 탐지되지 않도록 만들어져 있다. 트렌드마이크로, 아바스트 등 보안 전문 기업의 악성코드 분석 보고에 따르면, 백신이 쉽게 탐지하지 못하도록 악성코드의 소스가 난독화돼 있다. 그리고 스스로 변형된 악성코드를 만들어 백신 탐지를 우회한다.

그뿐만 아니라, 어떤 레타덥은 C2 서버와의 통신 또한 난독화해서 악성 통신 행위를 숨기기도 했다. 익숙하지 않은 시스템 환경에서는 장기간 동작하지 않는 악성코드도 있었다. 감염에 성공하면 기존 파일처럼 보이도록 파일명을 기존 시스템에 있는 파일과 동일하게 바꾸기도 했다.

악성코드는 숨는 것일까?

탐지되지 않기 위해 숨는 악성코드 ⓒ Pixabay

탐지되지 않기 위해 숨는 악성코드 ⓒ Pixabay

이렇게 보니, 레타덥이 백신에 탐지되지 않도록 굉장히 많이 노력했다. 이러한 악성코드를 찾은 백신도 대단하다. 그런데 사이버 보안 분야에서는 이러한 일이 흔하다.

사이버 보안을 거시적으로 보면, 창과 방패의 싸움이다. 해커는 사이버 공격으로 시스템에 침투하려 한다. 반면 보안 담당자는 이러한 시스템을 보호하려 한다. 미시적으로 보면, 숨바꼭질 게임이다.

그런데 여기서 궁금한 게 있다. 악성코드와 보안 시스템은 어떻게 숨바꼭질 관계가 되었을까? 사실 처음부터 그런 관계는 아니었다. 과거에는 보안 시스템이 필요하지 않았다. 기기가 감염되면 증상이 바로 나타냈기 때문이다.

과거 해커는 장난 혹은 과시 목적으로 악성코드를 배포했기 때문이다. 그래서 감염 효과도 즉각적으로 나타났다. 감염자(혹은 피해자)가 알아야지, 해커 본인의 능력을 인정받을 뿐만 아니라 상대방을 놀리는 재미가 있기 때문이다.

이후 해킹이 정치와 경제 목적으로 사용되기 시작했다. 그러면서 해킹 수법이 점차 고도화됐는데, 이러한 수법은 주로 잠입 형태로 바뀌게 됐다. 다시 말해, 주요 시스템까지 몰래 잠입해서 공격하는 방식으로 바뀌게 된 셈이다. 물론, 랜섬웨어처럼 즉각적인 반응이 필요한 악성코드의 경우 예외적으로 잠입 방식을 반드시 사용할 필요는 없다.

상황이 이렇다 보니, 보안 탐지 수준은 더욱더 높아질 수밖에 없다. 악성코드 고윳값(시그너처)을 가지고 악성코드를 탐지하는 ‘정적 분석’이 있는가 하면, 악성코드를 직접 실행해 악성 행위로 판단하는 ‘동적 분석’ 방법도 있다. 최근에는 기계학습(ML) 알고리즘이 더해져서 탐지 수준이 더욱더 높아졌다.

ML 더욱더 꼭꼭 숨는 악성코드

딥락커를 선보인 IBM 연구원 ⓒ Flickr

딥락커를 선보인 IBM 연구원 ⓒ Flickr

여러 방법을 활용해 보안 시스템을 우회한다. 앞서 말했듯이, 탐지를 어렵게 하려고 악성코드의 소스를 암호화 및 난독화한다. C2 통신의 경우도 마찬가지이다. 그리고 어떤 악성코드는 동적 분석 환경이 의심될 때 동작하지 않는다. 보안 시스템에 탐지되면 자동으로 파괴되는 악성코드도 있다. 발각되지 않기 위함이다.

이러한 유형의 대표적인 악성코드로 ‘스턱스넷(Stuxnet)’이 있다. 스턱스넷은 500킬로바이트밖에 안 되는 적은 용량의 악성코드이다. 그런데 이러한 악성코드가 이란의 원자력 발전소를 공격해 1000 개의 원심분리기를 파괴했다. 이로 인해 이란 원자력 발전소 운영은 1년간 중단됐다.

스턱스넷 동작 원리는 상당히 정교하다. 스턱스넷은 오직 특정 기업의 발전소 시스템을 공격하도록 고안돼 있는데, 이는 악성 행위를 충분히 숨길 수 있다. 특정 조건이 주어지지 않는다면, 정상적인 파일처럼 행동하기 때문이다. 그뿐만 아니라, 자동으로 취약점을 찾도록 고안돼 있다. 그래서 특정 시스템 공격에도 특화돼 있었다.

참고로 스턱스넷은 2010년에 처음으로 발견됐고, 9년이라는 시간이 지났음에도  불구하고 스턱스넷만큼 정교한 악성코드는 발견되지 않고 있다. 물론 기술력은 스턱스넷 수준을 능가할 만큼 충분히 발전돼 있다.

하지만 악성코드에 ML를 적용할 경우 상황은 달라진다. 탐지가 더욱 어려워질 수 밖에 없다. 참고로 보안 전문 기업 ‘에셋(eset)’는 1000명의 정보기술(IT) 관련자를 대상으로 ML 활용이 악성코드 탐지에 미치는 영향에 관해 질문했다. 그중 70%가 보안 시스템 탐지를 어렵게 한다고 답했다.

실제로 여러 보안 전문 기업이 ML을 활용한 첨단 악성코드를 선보이고 있다. 조지메이슨 대학 교수 ‘씬 팔카(Sean Palka)’는 메일 보안 시스템(SEG)를 우회하는 악성코드를 소개했다. 백신을 우회하는 악성코드도 블랙핵(Blackhat)이라는 보안 컨퍼런스에 여러 차례 소개된 적이 있다. 작년에는 IBM이 ML을 활용해 보안 탐지를 어렵게 하는 ‘딥락커’라는 악성코드를 선보였다. 해당 악성코드는 평상시에 화상통화 앱처럼 동작한다. 그러나 공격 대상이 영상에 잡히면 랜섬웨어 공격을 가한다.

앞서 말했듯이, 악성코드와 탐지 관계는 숨바꼭질 게임 당사자 같다. 악성코드는 어떻게든 숨으려 하고 그 수준은 놀라울 정도다. 그런데 이를 찾아내는 탐지 기술도 대단하다. 이러한 게임은 해커가 있는 한 계속될 전망이다.

의견달기(0)