관리 메뉴


Kinesis´s Open Document

해킹보안 : 랜섬웨어 목적 및 원리 이해하기 #02 본문

기획 시리즈/보안 : 공격원리 이해하기

해킹보안 : 랜섬웨어 목적 및 원리 이해하기 #02

Kinesis 2016. 7. 5. 15:00


# 랜섬웨어(Ransomware)

랜섬웨어의 원리를 이용한 공격은 새로 등장한 방법은 아니다. 그저 공격 가능성이 언급되어 오며 가상시나리오로 테스트 목적으로 만들어지던 것이 실질적인 공격으로 가시화 되어 나타난 것에 불과하다.


대부분의 사람들이 알고 있듯 모든 물질은 어떠한 용도로 쓰이느냐에 따라 약이 되거나 독이 되기도 하는데, 랜섬웨어는 본디 정보를 보호한다는 유익한 용도로 마련된 기술을 독이 되는 기술로 사용한 대표적인 예라고 할 수 있다.



# 공격 원리 및 흐름

랜섬웨어의 공격의 세부적인 흐름이나 특징은 만든이에 따라 달라질 수 있으나 대체적으로는 다음의 흐름을 따라 이루어진다고 할 수 있다.




감염단계와 협상단계를 제외하면 크게 파일검색, 파일암호화, 파일이동, 메시지출력으로 요약이 가능한데, 암호화 부분에서는 고정키 암호화와 다이나믹키 암호화 처리 방식에 대해 알아볼 필요가 있다. 특히 다이나믹키 암호화 방식으로 만들어질 경우에는 암호화키 생성과 보관 방법에 따라 피해 복구 가능성에 큰 변화가 발생하므로 간략하게 살펴보도록 한다.


이제, 각 흐름별 세부 사항과 이슈에 대해 살펴보자.


# 1. 공격대상 파일 검색

감염이 되었다고 가정할 때 랜섬웨어가 가장 처음 하게 되는 것은 공격 대상이 되는 파일을 검색하는 것이다. 공격자의 입장에서 피해자가 복원을 위해 요금을 지불하겠다는 의도를 성공적으로 발생시키기 위해서는 중요한 정보를 포함할 수 있는 파일을 최대한 많이 암호화시켜버리는 것이다. 이런 작업을 위해서는 먼저 암호화 시킬 대상 파일을 검색하는 것이 선행이 되어야 한다.



예제화면에서 보이는 바와 같이 랜섬웨어는 내부적으로 시스템에 저장되어있는 파일목록을 검색하여 암호화를 수행할 대상파일을 별도로 선별한 뒤 암호화를 수행하게 된다.


실습파일 : RansomEx_FileSearch.zip


직접 간단한 실습을 통해 확인해 볼 수 있도록 예제 프로그램을 포함하여 두었으니 직접 확인하고자 하는 경우에는 위에 첨부한 파일을 다운로드 받아 실행해보도록 한다. 예제 실습을 위한 목적으로 만들어진 파일이므로 파일이 위치한 디렉터리의 파일만 출력되도록 하였다. 실습 파일이 존재하는 디렉터리 안에 텍스트파일, 이미지파일, 오피스파일을 넣고 실행하여 어떠한 파일이 공격 대상 목록이 되는지 확인해보자. (공격을 수행하는 파일은 아니니 안심해도 좋고 의심이 된다면 복호화 프로그램을 설치해 내용을 확인해보면 된다)


# 2. 파일 암호화

암호화 처리를 할 파일 대상을 선별하고 나면 랜섬웨어는 본격적으로 데이터를 볼모로 잡기 위한 암호화 작업을 수행하게 된다. 이때 사용되는 암호화 알고리즘은 자체 제작된 알고리즘일 수도 있고, 이미 익숙히 널리 이용되는 암호화 알고리즘일 수도 있다. 기본적으로 양방향 암호화는 암호화를 하기 위한 키와 복호화를 하기 위한 키가 동일하게 사용된다.


공격자 입장에서 가장 단순하게 만들 수 있는 방법은 모든 대상 파일에 대해 동일한 암호화 알고리즘을 사용해 처리하는 방법이다. 이 경우에는 암호화 및 복호화를 위한 키도 단 1개 뿐 이여서 여러 가지 조치를 하지 않아도 되지만 문제는 이 경우 공격자가 만든 프로그램이 단시간 내에 분석이 되어버리면 피해자는 자신이 아닌 다른 사람에 의해 자료를 복원할 가능성이 높아지므로 수익으로 연결이 이루어지지 않을 가능성이 높다. 이 경우는 다음에 나올 고정키 암호화 부분 설명하도록 한다.


공격자는 자신의 공격이 좀 더 효율적으로 성공하여 자신이 아닌 제3자는 잘 풀어낼 수 없도록 해야 좀 더 수익창출의 가능성이 높아질 것이기 때문에 수고로움을 감수하고 좀 더 복잡한 암호화 처리를 고려하게 된다. 1대의 컴퓨터 안에서 다양한 암호화키를 만들어 암호화 처리가 이루어지도록 하는 것이다. 이는 다음에 나올 다이나믹키 암호화 부분에서 설명하도록 한다.


#  2.1. 고정키 암호화

고정키 암호화 방식은 가장 단순한 방식으로 사실상 테스트 또는 교육용 목적에서 만들어진 랜섬웨어가 아닌 이상에는 찾아보기 힘들며 랜섬웨어 자체 또는 처리과정에서 각 파일이나 환경에 변화하지 않는 고정된 단일키로 암호화가 수행된다. 예를 들어 다음의 예제 프로그램을 실행해 일부 파일이 암호화가 되었다고 가정해보자. (마찬가지로 피해를 입히기 위해 만들어진 아니니 안심해도 좋다. 파일이 위치한 폴더만 대상으로 삼으며, 원본은 삭제하지 않고 암호화된 파일은 별도로 생성하도록 하였다.)


실습파일 : RansomEx_EncryptFixKey.zip



위의 예제 화면에서 볼 수 있듯 앞서의 대상 파일로 검색되었던 파일들이 _enc 라는 파일명이 추가되어 생성된 문자열을 확인해 볼 수 있다. 그리고 사용자는 _enc 라는 글자가 추가된 파일을 열게 되었을 때 해당 파일은 이미 암호화 처리가 이루어진 뒤의 파일로 다음의 화면과 같이 손상된 파일이라는 메시지를 확인하게 된다. 



이 과정에서 공격자는 상대방의 자료를 암호화하여 인질로 잡는다는 1차적인 목표를 달성하게 된다. 그러나 이것만으로는 안정적인 공격과 협상의 자리를 이끌어낼 수 없기 때문에 공격자는 고정키 암호화를 사용하지 않는다. 만약 고정키 암호화 방식으로 만든 랜섬웨어를 배포하여 안주한 공격자가 있다면 초급 해커일 가능성이 높거나 초급 수준의 해커라고 부를 수 있다.


이유는 고정키 방식은 암호화 알고리즘이나 키가 노출되면 비용을 지불할 이유를 상실해 버리기 때문이다. 악성코드 역시 하나의 프로그램이자 소프트웨어로서 디컴파일 또는 디어셈블리등 리버스엔지니어링에 의해 분석될 수 있다. 다른 말로 하면 공격자 입장에 있었던 공격자가 리버스엔지니어링이 가능한 전문가에게는 수비의 입장으로 전환되고 분석가가 해커를 위협하는 공격자가 되기 때문이다. 그리고 고정키 암호화를 사용하는 것이 확인되면 분석가는 해당 악성코드에 피해를 복구하는 방법을 마련할 수도 있다.



위의 사진은 디컴파일러를 이용해 실습을 위해 제공한 "EncryptFixKey.exe" 파일을 역분석해 본 화면이다. 실습을 위해 비교적 역분석이 간단한 C# 으로 작성된 프로그램이라 원본코드에 가깝게 분석된 모습을 확인할 수 있는데, AES256 암호화 방식으로 암호화가 되었고, 암호화를 위한 키로 "This's examples." 이라는 문자열을 사용하는 것을 확인해볼 수 있다. 이제 AES256에 사용된 값들을 바탕으로 분석가는 복호화를 시켜주는 프로그램을 만들 수 있고, 해당 프로그램으로 피해를 복구할 수 있게 되며 피해자는 공격자에게 비용을 지불하지 않더라도 같은 프로그램에 의해 피해를 받은 경우에는 피해를 복구할 수 있다.


 2.2. 다이나믹키 암호화

다이나믹키 암호화는 말 그대로 암호화를 위한 키가 다이나믹하게 변화하는 방식을 의미하는데 시스템의 환경이나 파일명, 속성 등을 고려해 그때그때 다른 암호화키를 만들어 사용하는 방법이다.


  1) 암호화키 생성

다만, 앞서 말했듯이 공격자는 보수를 받고 데이터를 복원해 주며 정상적으로 데이터를 복원해주었다는 사례가 많아지면 다른 피해자가 그나마 신뢰를 하여 복원해 달라는 협상의 요청이 발생할 가능성이 크기 때문에 복원의 필요성을 무시할 수 없다. 따라서 공격자는 피해입은 파일을 복원하기 위한 정보를 어딘가에 보관해야 한다.


이때, 네트워크를 통한 암호화키를 전송하는 경우가 아니라면 보통은 암호화키를 보관한 별도의 키 목록 파일을 생성하거나 암호화된 파일 어딘가의 위치에 숨겨놓는 경우가 많다. 만약 이러한 특성으로 개발된 랜섬웨어라면 피해자는 다행히도 피해를 복구할 수 있는 가능성이 높아지는 반면 공격자는 자신을 거치지 않고 문제가 해결될 가능성이 높아진다.


이때쯤 되면 공격자는 딜레마가 생긴다. 랜섬웨어에 감염된 PC에 암호화 및 복호화를 위한 키를 남겨둘 것인가 없애버리고 자신이 모두 가지고 있을 것인가에 대한 여부다. 공격자의 입장에서 피해를 입은 PC에 암호화 및 복호화처리에 필요한 키를 보관하게 되면 누군가가 자신의 랜섬웨어를 분석하여 복원 프로그램을 만들 수 있을 가능성이 높다. 따라서 이를 방지하기 위해 특정한 서버를 구성하고 해당 서버에 암호화키를 전송해버리고 감염된 PC에 키를 보관하지 않으면 분석을 통해 복원 프로그램이 만들어지는 것은 어느 정도 예방할 수 있는데 반대로 자신이 구축한 서버가 공격당할 여지가 생긴다. 즉 공격자의 입장에서 자신이 공격을 받을 수 있는 입장을 만들어버리는 것과 같기 때문에 공격자는 어떠한 선택을 해야 할 지 망설이게 된다.


  2) 암호화키 서버 전달

그러나 만약 공격자가 자기 자신이 공격당할 가능성에도 불구하고 자신이 공격당할 가능성에 대해 어떠한 대안을 마련하여 별도의 서버에 감염된 파일을 복원하기 위한 암호화키를 수집하고 감염된 PC에는 남겨두지 않는다면 피해를 복원할 수 있는 가능성은 매우 낮아진다.


암호화를 위한 키의 생성은 앞의 과정과 유사하되, 좀 더 강화될 경우도 무시할 수 없기 때문에 이 경우 분석가가 사용되는 알고리즘이나 특정조건 등을 분석했다 하더라도 복원을 위한 키를 가지고 있지 못하기에 피해를 입은 파일을 복구 할 수 없는 상황이 초래될 수 있다. 이 경우 피해자는 복원을 위해 전문가에 맡기더라도 데이터를 복원할 수 있을지 장담할 수 없다.


만약, 이러한 상황이 발생했고 비용 지불을 통해 복원을 시도한다고 가정했을 때도 이슈는 존재한다. 만약 피해자가 감염된 PC에서 공격자가 마련해 놓은 서버로 암호화키가 정상적으로 전달이 되었는지에 대한 여부다.


암호화 처리에 있어 처리 흐름과 순서는 중요한 연관성을 갖는데, 만약 공격자가 복원의 안전성을 우선하여 네트워크가 연결되어 있는지 검증하고 연결되지 않은 경우에는 암호화를 시행하지 않도록 한 경우, 네트워크가 연결되지 않은 PC에서는 피해가 발생하지 않을 수 있다. 그러나 공격자의 입장에서 이것은 바람직하지 않다고 판단하여 네트워크 연결 여부와는 관계없이 일단 암호화하고 암호화키 전송의 성공여부와는 무관하게 다른 파일들의 암호화가 시행된다면 네트워크의 불안정 또는 단절 및 암호화키 전송실패 시 해당 이슈가 발생된 파일들을 복원할 가능성은 요원해진다. 최악의 상황인 비용을 지불하더라도 공격자조차 복원을 시도할 수 없는 상황의 발생이라는 이슈다.


# 3. 파일 이동

어느 정도 파일의 암호화에 성공했다고 판단이 되면 공격자는 이제 피해자에게 공격당했다는 사실을 알리기 위한 사전작업을 해야 할 필요가 있다. 지금까지 처리된 공격은 공격대상이 있는 폴더에서 암호화 처리를 수행한 것이기 때문에 피해자는 자신이 공격을 당했다는 사실을 알 수 없어 문제를 해결해야 한다는 필요성을 느끼지 못하는 상태이기 때문이다.


이에 공격자는 피해자에게 공격당했다는 사실을 알리면서 동시에 피해자가 보유하고 있는 많은 중요자료들이 손상되어 복원을 해야 할 필요성이 있다고 가시적으로 보여주는 과정이 필요한데 이것이 바로 바탕화면 위치에 파일을 이동시키는 이유다. 실제로 많은 랜섬웨어가 감염시킨 파일들을 바탕화면으로 옮기는 양상을 보이는데 그러한 행동의 배경사유가 바로 여기에 있다.


# 4. 감염 안내 및 복구 방법 메시지 출력

피해자가 바탕화면에 옮겨진 파일들을 발견하고 가시적으로 이상하다는 증상을 확인하게 되면 자신의 자료가 정상적으로 열리거나 확인되지 않는다는 사실에 당황하게 된다. 이때 공격자는 피해자에게 안내메시지를 통해서 어떠한 상황이 발생했는지 알려준다. 요지는 당신의 자료는 내가 암호화 하였으니 중요한 자료가 있어 복원을 하고 싶거든 금전적인 비용을 지불하라는 메시지다.


보통 추적을 피하기위해 비트코인 등으로 지불을 하도록 유도하는데 이것에 대한 내용은 생략하도록 한다.


# 피해 복구(자료 복원) 원리 이해하기(최종)

☞ 3부에서(마무리)


# 기타

랜섬웨어 원리 글이 마이크로소프트웨어 389(2017.07)호에 실렸습니다.


Comments