페이지 상단으로 이동

home > 핵심키워드

악성코드의 방식이 진화하고 있습니다. 예전에는 어떤 기업의 서비스 서버를 공격하는 방식으로 악성코드를 이용하거나 아니면 사용자의 금융정보를
빼가기 위해 악성코드를 해커들이 이용했습니다. 물론 요즘에도 피싱이나 스미싱의 방식으로 사용자의 개인정보나 금융정보를 많이 빼가고 있지만
요 몇 년 사이에 랜섬웨어라는 방식으로 사용자에게 피해를 주는 방식이 확산되고 있습니다. 이번 시간에는 랜섬웨어(Ransomware)의 방식과
경로를 살펴보고, 랜섬웨어에 대해서 어떻게 대비를 해야 하는지 알아보겠습니다.


랜섬웨어의 방식과 감염 경로

랜섬웨어(Ransomware)는 ‘유괴, 몸값’ 등의 의미를 지닌 ‘랜섬(Ransom)’이라는 단어에 ‘소프트웨어’의 ‘웨어(ware)’를 결합한 단어로, ‘몸값을 요구하는 소프트웨어’라는 의미의 악성코드입니다. 사용자의 데이터를 인질로 삼아서 돈을 요구하는 악성코드인데 사용자가 만든 데이터, 즉 파일들을 사용하지 못하게 만들고 다시 사용하게 하기 위해서는 해커가 요구하는 돈을 보내줘야 사용할 수 있게 해준다고 해서 ‘랜섬웨어’라고 합니다. 랜섬웨어에서 사용하는 방식은 ‘파일 암호화’ 방식입니다. 보통 파일 암호화는 보안 솔루션에서 허가 받지 않은 사용자로부터 파일을 보호하기 위해서 사용하는 방식인데, 랜섬웨어에서는 오히려 사용자에게서 돈을 갈취하는 방식으로 악용된 나쁜 예라고 보면 됩니다. 파일 암호화 방식을 이용한다고 해서 ‘크립토락커(Cryptolocker)’ 랜섬웨어라고도 합니다.

방식은 간단합니다. 일반적으로 파일이든 아니면 통신의 패킷이든 암호화를 진행하기 위해서는 암호화 알고리즘과 그 알고리즘에서 사용할 키가 필요합니다. 암호화 알고리즘은 보통 2가지로 얘기하는데 대칭키 암호화 알고리즘과 공개키 암호화 알고리즘이 있으며 각 암호화 알고리즘마다 사용하는 키의 방식이 다릅니다. 대칭키 암호화 알고리즘의 경우, 암호화 알고리즘의 고전이라 불리는 DES나 국내에서 만든 SEED, ARIA 등이 있고 요즘은 AES가 거의 표준처럼 많이 쓰이고 있습니다.

AES 암호화 기술

미국의 국립표준국(National Bureau of Standards)은 1975년에 데이터 암호화를 위해 DES(Data Encryption Standard)라는 암호화 표준을 제정하였다. 이 기술은 56bit의 키(key)를 사용하는 대칭키(symmetric-key) 암호화 방법으로, 한동안은 별다른 문제 없이 이용되었다. 그러나 이 기술은 키의 길이가 너무 짧은 데다가 백도어(backdoor)가 포함되어 있어서 특수한 방법을 사용하면 해독할 수 있다는 문제를 지니고 있었다. AES(Advanced Encryption Standard)는 DES 암호화 기술이 가지고 있던 문제를 해결하기 위해 새롭게 개발된 128bit 블록 암호화 방식이다. AES 기술 역시 암호화와 복호화 과정에 같은 키를 이용하는 대칭키 방식을 이용하지만, 128bit의 블록을 128bit, 196bit, 혹은 256bit의 키 길이로 처리할 수 있다는 것이 DES와의 가장 큰 차이점이다.


우리가 가장 많이 이용하는 근거리 무선통신 기술인 와이파이의 경우도 암호화 방식 중의 하나로 AES를 이용하고 있으며, 블루투스의 경우도 3.0 표준까지는 SAFER+ 암호화 기술을 이용하였으나 블루투스 4.0부터는 AES 표준을 이용하고 있다.

[네이버 지식백과] 암호화 기술 (스마트과학관 - 사물인터넷, 국립중앙과학관)



대칭키 암호화 알고리즘의 특징은 암호화를 진행할 때의 암호화 키와 복호화(암호화된 내용을 다시 원상복귀 시키는 작업)를 진행할 때의 복호화 키가 동일하다는 것입니다. 즉, 동일한 키로 암호화와 복호화가 진행됩니다. 공개키 암호화 알고리즘에 비해 속도가 빠르다는 장점이 있지만 암호화 키와 복호화 키가 동일하기 때문에 키가 노출이 되면 무용지물이 된다는 단점이 있습니다. 공개키 암호화 알고리즘은 우리가 보통 RSA(알고리즘 발명자인 Rivest, Shamir, Adelman 세 사람 이름의 첫 글자) 알고리즘이라고 많이 얘기하는 알고리즘입니다.



RSA 알고리즘



1. 송신자 S가 수신자 R에 데이터를 전송할 때 수신자 R의 암호 체계인 (Rp, Rs) 조합을 사용
2. 송신자 S는 공개키 Rp로 원문서 P를 암호화하여 암호문 Rp(P)를 얻을 수 있으며, 이렇게 얻은 암호문을 수신자에게 전송
3. 수신자는 비공개키 Rs로 해독문 P = Rs(Rp(P))를 얻을 수 있음의 가장 큰 차이

[네이버 지식백과] RSA 알고리즘 (데이터 통신과 컴퓨터 네트워크, 한빛아카데미)



공개키 암호화 알고리즘의 특징은 암호화 할 때의 키와 복호화 할 때의 키가 다르다는 것에 있습니다. 공개키 암호화 알고리즘에서 사용하는 키는 2가지인데 공개키와 비밀키로 나뉩니다. 공개키 알고리즘에서 키를 생성하면 비밀키의 2개가 쌍으로 생성되는데 공개키는 누구에게라도 공개가 될 수 있는 키이기 때문에 오픈되어도 무방하지만 비밀키의 경우에는 사용하는 사용자만이 알아야만 하는 키입니다. 보통은 공개키로 암호화하고 비밀키로 그 암호화된 내용을 복호화하는 데 쓰입니다. 공개키 암호화 알고리즘의 경우 이런 특성 때문에 높은 보안성을 지니고 있지만 속도가 느리며 암호화를 할 수 있는 분량에 제한이 있습니다. 그래서 일반적으로는 공개키 암호화 알고리즘과 대칭키 암호화 알고리즘을 섞어서 많이 사용합니다.

랜섬웨어에서 사용하는 암호화 알고리즘은 보통 대칭키 암호화 알고리즘을 많이 사용합니다. AES를 많이 사용하는 편인데 이 때 사용되는 암호화 키는 해당 랜섬웨어를 만든 해커만이 알고 있습니다. 사용자가 모르고 해커만 알고 있기 때문에 사용자는 암호화된 자신의 파일을 사용할 수 없으며 암호화된 파일을 복호화 하기 위해서는 해커가 갖고 있는 키가 필요하고 그 키를 주는데 있어서 해커는 돈을 요구합니다. 그래서 랜섬웨어라고 하는 것입니다.



[그림]랜섬웨어에 감염되었을 때 나오는 메시지의 예시(이미지 출처: SYMANTEC)



랜섬웨어에 감염된 사용자의 PC나 스마트폰, 태블릿과 같은 단말기는 빠른 속도로 해커가 알고 있는 키로 암호화가 되어 사용할 수 없는 상황이 오게 됩니다. 그리고 대부분의 암호화 대상은 MS 오피스 파일(docs, xlsx, pptx 등)이나 이미지 파일(jpg, gif, png 등)들로 사용자가 자주 사용하고 중요하게 사용한다고 생각되는 파일들을 암호화합니다.

일단 랜섬웨어가 실행되는 단말기의 모든 디스크 드라이브를 다 뒤져가며 파일을 찾고 암호화를 빠르게 진행합니다. PC의 경우에는 디스크 드라이브(HDD, SDD, 네트워크 드라이브 등)이며 스마트폰이나 태블릿 등의 스마트 디바이스의 경우에는 내장 메모리와 microSD 메모리 등이 그 대상일 것입니다. 몇몇 랜섬웨어는 확장자는 그대로 두고 안의 파일의 내용만 암호화하는 경우도 있지만 대부분의 랜섬웨어는 해당 파일이 암호화 되었다고 인지시켜주기 위해 확장자를 바꿉니다. 그리고 사용자의 메일로, 아니면 해당 파일을 사용하려고 할 때 메시지 박스로 해당 파일이 암호화되었고 사용하고 싶다면 어느 계좌로 돈을 보내라고 메시지를 보냅니다. 예전에는 해외 계좌를 많이 이용했는데 요즘은 비트코인을 보내달라는 요구가 많다고 합니다.


[그림]랜섬웨어 ‘크립트엑스엑스엑스’의 비트코인 입금 안내창 한글버전(출처: 조선일보)



랜섬웨어의 감염 경로는 다양합니다. 일단 스팸메일을 통한 감염이 있을 수 있습니다. 메일 안에 랜섬웨어 파일을 첨부해 두거나 랜섬웨어 파일을 다운로드 받을 수 있는 링크를 삽입하고 해당 파일을 실행시키게 유도하여 랜섬웨어에 감염시키는 것입니다. 두번째로는 토렌트와 같은 파일 공유, 혹은 다운로드 등을 통해서 감염되는 경우입니다. 많은 사람들이 감염되는 경로 중에 하나가 토렌트로 어떤 소프트웨어의 크랙 파일(해당 소프트웨어의 암호를 해제시키는 등)을 구하려고 토렌트를 여기저기 돌아다니면서 다운로드 받아서 실행하다가 감염되는 것인데 이는 랜섬웨어 뿐만이 아니라 다른 악성코드 감염도 비슷하게 진행됩니다. 랜섬웨어의 경우 파일 암호화를 진행해야 하기 때문에 실행파일 개념으로 동작하며 의심이 가는 파일은 아예 실행을 시키지 않는 것이 랜섬웨어에 걸리지 않는 대비책이라고 해야 할 것입니다.

또 요즘에는 홈페이지에 랜섬웨어 코드를 심어두고 해당 홈페이지에 들어갈 때 랜섬웨어를 동작시키는 방법도 나오고 있습니다. 보통 웹서비스의 구성요소 중 자바 스크립트나 플래시 등을 이용해서 배너나 여러 가지 작업들을 하는데 그 자바 스크립트나 플래시의 취약점을 이용하여 랜섬웨어를 구동시키는 것입니다. 많이 사용하는 방식이 플래시의 취약점을 이용하는 방식인데 플래시의 스크립트에 랜섬웨어를 다운로드 시킨 이후에 그 파일을 실행시키도록 함으로 사용자가 실행을 하지도 않았는데 랜섬웨어에 감염시키게 하는 방식입니다. 이 경우에는 의심 가는 사이트의 접근을 처음부터 막는 방법과 최신 보안 업데이트를 지속적으로 유지하는 방법 외는 대비책이 없는 것이 사실입니다.



랜섬웨어의 대비책

  • 랜섬웨어의 감염경로는 일반 악성코드의 감염경로와 비슷하기 때문에 이 부분만 조심하면 어느 정도는 대비를 할 수 있는 것이 사실입니다. 앞서 언급한 스팸메일과 토렌트를 통한 악성코드 실행을 막는 것이 가장 급선무입니다. 스팸메일의 경우에는 사용하는 메일 시스템에 따라서 어느 정도 필터링을 해주는 경우도 있습니다. 하지만 스팸메일을 보내는 해커가 만약 사용자가 아는 지인의 메일 주소로 사용자와 어느 정도 연관이 있는 정보를 기반으로 비슷하게 메일 내용을 꾸며서 스팸메일을 보낸다면 쉽게 구별할 수는 없을 것입니다.

    일단 첨부파일에 실행파일(그것이 압축되어서 왔다고 하더라도)이 들어있다면 일단 의심부터 하고 해당 메일을 보낸 사람(만약 아예 모르는 사람에게서 온 메일에 첨부파일이 실행파일로 존재한다면 그것은 볼 것도 없이 무시하고 지워버리는 것이 상책입니다)에게 의도를 먼저 물어보는 것이 악성코드 감염으로부터 벗어나는 가장 확실한 방법일 것입니다. 두 번째로 토렌트와 기타 파일 공유 사이트로부터 다운로드 받은 프로그램에 대한 실행 부분인데 일반적으로 정식적인 절차가 아닌 비공인 방식에 의해 뭔가를 실행하는 프로그램이라면 가급적 실행하지 않는 것이 상책입니다.

    크랙 파일이나 키젠(KeyGen, 소프트웨어에서 설치 시 사용하는 키를 생성해주는 프로그램)의 경우에는 많은 경우에 크랙이나 키젠의 역할보다는 악성코드 역할을 더 많이 하기 때문에 실행시키지 않는 것이 상책이며, 테스트를 위해서 필요한 경우라면 VMWare나 VirtualBox 등의 가상화 프로그램을 이용하여 별도의 윈도우 OS를 올려서 그 위에서 실행시켜보는 방법도 좋습니다.
    물론 가상머신으로 돌릴 경우에는 호스트로 사용되는 원래의 시스템과 아무런 연결성이 있어서는 안됩니다. 랜섬웨어의 경우 자신이 실행되는 머신에 연결되어 있는 모든 디스크(HDD, SDD, 네트워크 드라이브)나 메모리를 다 뒤져가며 파일을 암호화하기 때문에 아무리 가상머신이라고 하더라도 만약 가상머신에서 원래의 시스템에 뭔가 디스크로 연결되어 있는 것이 있다면 그 연결을 통해서 피해를 입을 수 있습니다.

또 하나의 방법은 대비책이라기 보다는 만약 감염이 되었을 때 대처할 수 있는 방법일 수도 있는데 별도의 파일의 백업본을 만들어두는 것입니다. 물론 그 백업본은 랜섬웨어가 접근할 수 없는 공간에 있어야 합니다. 많이 사용하는 방식이 클라우드 스토리지를 이용하는 방식인데 여기서 주의해야 할 부분은 절대로 폴더 동기화나 네트워크 드라이브 방식으로 파일을 열람할 수 있는 드롭박스나 원드라이브, N드라이브와 같은 클라우드 스토리지 서비스는 의미가 없다는 것입니다. 드롭박스나 원드라이브의 경우 폴더를 지정하고 그 폴더와 클라우드 공간을 동기화시키는 방식인데, 지정된 폴더의 파일이 만약 랜섬웨어로 인해 암호화가 되어 있다면 그 함호화가 된 상태로 클라우드에 저장되기 때문에 무의미해집니다. 클라우드 스토리지를 이용하는 경우에는 폴더 동기화 방식이 아닌 별도의 어플리케이션을 이용하여 저장하는 방식을 사용해야 합니다.
클라우드 스토리지 방식을 쓰지 않는다면 지속적으로 DVD나 블루레이 등의 매체로 백업을 받아두는 방법이 있습니다. 물론 백업을 받을 때에는 랜섬웨어 감염되기 전의 데이터야만 합니다. 아니면 USB HDD 등의 외부 스토리지에 지속적으로 백업을 받아두는 방식도 있습니다. 즉, 어떤 방법이든 랜섬웨어가 감염되기 전의 파일들을 어딘가에는 별도로 저장해둬야 한다는 것입니다. 그래야 랜섬웨어가 감염된다 하더라도 다시 복원하여 피해를 최소화할 수 있습니다.

클라우드 스토리지에 저장하는 이유도 랜섬웨어 감염되었을 때 해당 파일을 빨리 복원시키는 소스로 사용하기 위해서입니다. 물론 백업한 이후와 랜섬웨어에 감염되기 전까지의 데이터, 즉 백업 이후에 만들어진 데이터에 대한 손실은 어쩔 수 없이 사용자가 감수해야 할 몫입니다.
지속적으로 윈도우를 포함한 자신이 사용하는 OS 및 안티 바이러스 솔루션의 상태를 최신으로 만드는 것이 중요합니다. 보안 업데이트는 지속적으로 진행해줘야 하며 안티 바이러스의 상태도 최신 버전으로 유지시키는 것이 중요합니다. 웹페이지를 해킹해서 랜섬웨어를 심어서 감염시키는 경우에는 대부분이 OS 취약점이나 플래시, 혹은 웹 브라우저의 취약점을 이용하는데 해당 취약점을 개선한 버전의 OS나 솔루션을 사용한다면 충분히 막을 수 있습니다.


(자료출처 : KT경제경영연구소 - ‘랜섬웨어의 방식과 대비책’)