공부방/보안소식

은닉형 악성코드, 대체 뭐길래?

박영길 2014. 12. 22. 09:14

은닉형 악성코드, 대체 뭐길래?


    최근 은닉형 악성코드가 화제다.
    대표적인 은닉형 악성코드로 '레진(regin), 다이어(dyre)' 등이 알려져 있다.
    언론 보도에 따르면 레진은 2008년부터 각국 정부, 기업, 기관 등을 용도로 악용됐으며
    이 사실이 최근 들어 알려졌다고 한다.
    또한 다이어의 경우 우크라이나에서 발견되었으며
    웹사이트의 비밀번호, 이용자의 은행계좌 정보 등을 빼돌리는 것으로 밝혀졌다.
    일부에서는 이 은닉형 악성코드를 이란 원전 공격에 사용된
    '스턱스넷'과 견줄만한 파괴력을 가진 악성코드로 소개하기도 한다.
    이 글에서는 은닉형 악성코드란 무엇이며,
    이들이 주로 사용하는 은닉 기능과 방법에 대해서 살펴보자.

    끊이지 않는 은닉형 악성코드

    은닉형 악성코드란 보안을 위해 암호화하는 데이터에 숨어드는 악성코드를 말한다.
    악성코드가 은닉 기능을 이용하는 것은 어제오늘의 일이 아니다.
    악성코드는 기본적으로 시스템을 감염시킨 후
    지속적으로 남아서 악의적인 기능을 하고자 한다.
    그러다 보니 악성코드 제작자는
    사용자나 백신 프로그램 및 기타 보안 시스템에 발견되지 않도록
    그 기술을 점점 정교하게 악용하고,
    이에 따라 현재의 다양하고 교묘한 은닉 기능들이 발견되고 있는 것이다.

    그 동안 악성코드들이 사용해 왔던 은닉 기능 중에서는
    홈페이지에 몰래 삽입되는 경우와 루트킷 파일을 이용하는 방법 등이 있다.
    그리고 최근에 이메일의 첨부 파일을 통해 확산된 악성코드가
    사용한 메모리 패치를 통한 은폐 기능도 있다.
    지금부터 이러한 은닉 기능과 방법에 대해 자세히 소개하고자 한다.

    'iframe'을 활용한 URL 은닉 기법

    악성코드가 은닉 기능 중에 가장 꾸준하게 발견되고 있는 것이
    'iframe'을 활용한 URL 은닉 기법이다.
    홈페이지를 통한 악성코드 유포는 다양한 방법으로 꾸준히 발생하고 있다.
    그 중에서 가장 쉽게 확인할 수 있는 기능은 [그림 1]의 붉게 표시한 부분을 보면 알 수 있다.
    해당 페이지는 평범한 '청소년 해양수련원'의 메인 '.html' 파일이지만 상단에 'iframe'이 추가됐다.
    해당 내용에는 특정 다운로드 경로를 확인할 수 있으며 설정 값은 'width=0 height=0'이다.
    이 경우 사용자는 해당 파일이 설치됐는지 인지하지 못한다.
    즉, 홈페이지에 접속하면 '청소년 해양수련원' 페이지가 평소와 같이 보이지만
    백그라운드에서는 다른 파일이 설치되고 있고 이는 은닉되어 보이지 않는다.


    [그림 1] 홈페이지 '.html' 소스코드에 삽입된 'iframe'

    루트킷을 활용한 감염 파일 은폐

    [그림 2]는 '후킹(Hooking)' 기법을 통해 'userinit.exe' 파일의 접근을 막고 있다.
    후킹은 쉽게 말해 가로채는 기능으로,
    PC 내부에서 진행되는 정상적인 과정 중간에서 특정 부분을 가로채고
    자신이 원하는 동작을 실행시키면서 전체적인 흐름을 바꾼다.
    [그림 2]는 'Patcher' 악성코드에 의해 윈도의 정상 파일인 'userinit.exe'가 감염되고
    루트킷 파일인 'Driver'가 생성된다.
    이 루트킷은 'IoCompleteRequest'라는
    윈도의 내부 API(Application Programming Interface)를 가로챔으로써
    'userinit.exe' 파일에 대한 접근을 차단하고 은폐시킨다.
    이 경우 사용자가 기본적인 프로그램에서 해당 파일에 접근하려고 할 때 방해를 받는다.


    [그림 2] 루트킷에 의해 보호되는 'userinit.exe'

    메모리 패치를 통한 악성코드 은폐

    이메일을 통해 악성코드를 유포하는 방법도
    홈페이지에서 유포하는 것과 마찬가지로 꾸준히 발생하고 있다.
    최근 발견된 악성코드 중에는 실질적인 동작인 C&C 서버 통신 및 정보유출 기능은
    파일이 아닌 정상 'svchost.exe' 서비스 프로세스의 메모리 영역에 삽입돼 동작하고 있었다.
    이 경우 실제 파일로 존재하는 것이 아니어서 단순히 진단 후 삭제할 수 없고
    메모리 영역을 살펴본 후 치료해야 한다.
    감염 여부를 발견하기 어렵고 치료가 불가능할 수 있다.
    특히 해당 파일은 분석 시 실제 코드를 은닉하기 위해
    다양한 암호화, 압축, 안티-VM, 안티 디버깅(Debugging) 기법 등이 이용된 것으로 확인됐다.


    [그림 3] 프로세스(photo.exe, svchost.exe)에 메모리 패치 과정

    이외에도 최근 시만텍에서 공유한 정보 유출형 악성코드인 '레진'은
    위에서 설명한 메모리 패치와 같이 다양한 코드 및 파일 은닉 기능을 사용했다.
    크게 5단계로 정교화돼 있고 그 기법 역시
    안티포렌식(Anti-Forensics), EVFS(Encrypted Virtual File System), RC5 등
    보통의 악성코드에서는 볼 수 없는 복잡성을 띄고 있다.
    지난 2010년
    특정 시스템을 공격하고 코드 전개가 전문화되고 복잡했던 '스턱스넷(Stuxnet)'과 비교되지만
    내부 기법이나 목적에는 차이가 있다.

    추가로 뱅킹 악성코드인 '다이어(Dyre)'는 코드나 파일 은닉이 아니라
    주요 웹사이트에서 개인정보 보호를 위해 SSL(Secure Socket Layer) 암호화를 하는데,
    이를 활용해 암호화된 트래픽에 공격코드를 은폐시킨다.
    이 경우 보안 솔루션 등과 같은 장비에서는 트래픽에 대한 가시성을 확보하지 못하면
    정상 SSL 트래픽과 악성 트래픽을 구분할 수 없는 취약점을 갖는다.
    이에 비해 파일에 대한 기본적인 동작들이 일반적인 악성코드 중 웜(Warm)류와 유사한 점이 많아
    백신에서 쉽게 탐지할 수 있다.

    이처럼 악성코드는
    사용자, 악성코드 분석가, 백신제품, 기타 보안 솔루션 등으로부터 자신을 은닉하기 위해
    계속해서 다양한 방법을 시도하고 있으며 앞으로도 이러한 기법은 더욱 고도화될 것으로 보인다.
    따라서 개인은 불확실한 사이트 접속은 자제하고
    파일에 대한 접근이나 다운 및 실행에도 주의해야 한다.
    백신제품을 항상 최신 상태로 유지하고
    기업 및 기관에서는 각각의 환경에 맞는 보안 환경 구축이 요구된다.