보안 핵심요소 암호화의 악용 ‘랜섬웨어’
(학주니 이학준) 인터넷이 활성화된 이후 수많은 사람들이 데스크탑이나 노트북과 같은 PC를 통해서, 혹은 스마트폰이나 태블릿PC와 같은 스마트 디바이스를 통해서 인터넷을 사용하고 있습니다. 그리고 수많은 서비스 사업자들이 다양한 인터넷 서비스를 만들어 제공하고 있습니다. 인터넷을 통해서 수많은 생태계들이 조성되고 에코시스템들이 만들어지고 있지요. 그러다보니 이를 악용하여 수많는 블랙해커들이 인터넷 서비스들을 공격하여 변조하고 악성코드를 심어 서비스를 이용하는 사용자들에게 피해를 입히고 있습니다. 지금도 하루에 수백개씩 악성코드들이 생성되고 있으며 이런 악성코드들이 서비스 제공자와 사용자들을 노리고 있습니다. 최근에 얘기가 나오고 있는 랜섬웨어(Ransomware) 역시 이런 악성코드 중에 하나입니다.
랜섬웨어에 감염되었을 떄 나오는 화면
언론에서 랜섬웨어에 대한 얘기를 찾다보면 악성코드에 감염된거 같은데 갑자기 잘 사용하고 있던 파일들이 암호화되어 안열리고 해커의 메시지가 보이는데 어디로 돈을 보내주면 암호화를 풀 수 있는 키를 제공해준다는 이야기를 볼 수 있을 것입니다. 랜섬웨어는 납치된 사람의 몸값을 요구하는 영어 단어인 랜섬(Ransom)과 소프트웨어(Software)의 합성어로 사용자가 자주 사용하는 중요한 파일을 해커가 해커만 알고 있는 키를 이용해 암호화하여 사용자가 사용할 수 없게 만든 이후 사용자에게 돈을 요구하여 해커가 금전적 이득을 취하게 만드는 악성코드입니다. 암호화가 걸려있는 파일은 암호화를 풀지 않고는 어플리케이션을 통해서 읽을 수 없다는 점을 악용한 악성코드라고 보시면 됩니다. 그 동안의 악성코드들은 주로 사용자의 키보드 입력을 가로채서 인터넷뱅킹 등을 사용할 때 입력하는 중요 정보를 가로채거나 해커가 만든 가짜 사이트로 접속하게 만들어서 사용자의 개인 정보를 가로채는 등 중간의 데이터를 변조하거나 경로를 변조하는 방법을 많이 사용했습니다. 하지만 랜섬웨어는 말 그대로 파일을 못쓰게 인질로 잡아놓고 사용자에게 돈을 요구하는 방법을 씁니다. 지금까지의 악성코드 수법과는 조금 컨셉이 다르다고 보면 됩니다. 랜섬웨어, 또는 크립토락커(Cryptolocker) 랜섬웨어, 아니면 그냥 크립토락커라고도 하는데 크립토락커는 실질적으로 파일을 암호화하는 역할을 하는 모듈을 의미합니다. 랜섬웨어의 핵심은 파일을 암호화하는데 있기 때문입니다.
랜섬웨어에 감염되면 사용자의 PC에 저장된 파일들 중 오피스 파일들(MS 오피스 파일들로 워드, 엑셀, 파워포인트 등을 통해서 만들어진 문서들)과 이미지 파일들(jpg, png 등)이 암호화되어서 MS 오피스를 통해서 해당 파일을 열려고 해도 열 수 없고 이미지 뷰어를 통해서 이미지 파일을 열려고 해도 열 수가 없습니다. 암호화가 진행되면 파일의 형식과 내용을 바꾸기 때문에 해당 파일에서 인식할 수 없는 파일로 나오기 때문입니다. 암호화를 진행하기 위해서는 암호화 키가 필요하며 랜섬웨어의 경우 그 랜섬웨어를 만든 해커가 암호화 키를 갖고 있습니다(보통은 무작위로 만들어냅니다. 그래도 그 키를 알아낼 수 있는 방법은 해커들마다 각기 다 보유하고 있다고 알려져 있습니다). 감염된 PC의 사용자는 그 키를 전혀 알 수 없습니다(알고 있다면 키를 이용해 암호화를 풀어버리면 됩니다. 그런데 알 수 없기 때문에 짜증이 나는 것입니다). 해커만이 알 수 있기 때문에 그것을 무기로 사용자들에게 돈을 요구하는 것입니다. 복호화 키를 제공해주겠다는 명목으로 말이죠.
앞서 제목에도 보안의 핵심요소, 암호화라고 했습니다. 일반적으로 암호화 기법은 보안 시스템을 구성하는데 있어서 중요한 요소입니다. 보안 통신이나 파일 보안 등을 만들 때 암호화 기법을 사용합니다. 예를 들어, 사용자가 어떤 웹 서비스에 접속하려고 할 때 그 웹 서비스가 HTTPS와 같은 보안 통신 방식을 제공한다면(대표적으로 페이스북이 HTTPS를 이용합니다) 사용자와 웹 서버 사이에 암호화 및 복호화(암호화된 내용을 푸는 것을 복호화라고 합니다)에 사용할 키를 서로 주고 받습니다. 그러면 웹 서버 쪽에서 데이터를 암호화하여 사용자에게 보내면 사용자는 복호화 키를 이용하여 암호화된 내용을 복호화해서 인식합니다. 또 사용자가 웹 서버로 데이터를 암호화해서 보내면 웹 서버 역시 복호화 키를 이용해서 사용자가 보내온 내용을 해독하여 읽고 처리합니다. 파일 보안의 경우에는 사용자가 자신만이 알고 있는 암호화 키를 이용하여 파일을 암호화 시켜 둡니다. 그러면 사용자 이외의 제 3자가 해당 파일을 가로채더라도 암호화가 되어있기 때문에 복호화 키를 모르는 상황에서는 그 내용을 확인할 수 없습니다. 사용자는 본인이 암호화를 했기 때문에 복호화해서 그 내용을 읽을 수 있지요. 암호화를 진행하는 암호화 알고리즘으로 대칭키 암호화 알고리즘, 공개키 암호화 알고리즘이 있으며 대칭키 암호화 알고리즘 중 가장 많이 사용하는 알고리즘이 AES이고 공개키 암호화 알고리즘에서는 RSA를 가장 많이 사용합니다. 어찌되었던 둘 다 키가 있어야 암호화 및 복호화를 할 수 있습니다.
랜섬웨어에 감염되었을 떄 나오는 화면
랜섬웨어는 이런 보안의 핵심요소인 암호화 기법을 악용한 사례입니다. 보안과 해킹은 어떻게 보면 동전의 양면과 같은 성격이라고 보면 이해가 쉽습니다. 암호화 기법을 보안의 요소로 사용해서 만들어진 솔루션들이 DRM, DLP, 보안 통신, 키보드 보안, 파일 보안 솔루션이라고 보면 이것을 해커가 악용해서 사용한 것이 크립토라커 랜섬웨어라고 보면 됩니다. 랜섬웨어는 사용자의 PC를 다 훓으면서 위에서 언급했던 사용자가 중요하다고 생각하는 파일들(오피스 파일들이나 이미지 파일들)을 해커만이 알고 있는 키를 이용해서 AES나 RSA 알고리즘을 이용해 암호화를 해둡니다. 사용자가 그 키를 모르니 풀 수 없고 해커만이 알고 있으니 그 키를 무기 삼아서 사용자에게 협박하는 것이지요.
랜섬웨어는 앞서 얘기했듯 악성코드로 배포됩니다. 랜섬웨어를 피하기 위해서는 어떻게 보면 악성코드에 감염되지 않는 일반적인 방법을 이용하면 피할 수 있습니다. 대표적으로 웹브라우저는 항상 최신의 버전을 이용하며 OS에서 제공하는 보안 업데이트는 늘 최신의 버전을 유지하는 것, 그리고 안티바이러스(알약이나 V3 등과 같은) 솔루션도 늘 최신의 버전으로 유지하는 것이 중요합니다. 최근 커뮤니티 사이트인 클리앙을 통해서 랜섬웨어가 확산되어 문제가 되었습니다. 랜섬웨어 감염 방식은 클리앙이 제공하는 광고 중 플래시로 된 광고 부분을 해킹하여 악성코드가 실행될 수 있도록 한 것입니다. 플래시의 경우 스크립트로 동작되며 해당 스크립트 중에서 코드 실행 스크립트가 있으면 플래시가 동작함과 동시에 코드 실행 스크립트도 함께 동작하는데 그 코드 실행 스크립트에 랜섬웨어 스크립트가 함께 동작한 것입니다. 그로 인해서 악성코드를 따로 실행하지 않더라도 웹브라우저가 플래시를 보여줄 때 스크립트를 함께 해석하여 구동하여 자동으로 랜섬웨어가 탑재되어 있는 파일을 다운로드 받게 하고 IE에서 실행되는 스크립트(vbscript 방식인데 플래시 스크립트와는 다름)가 랜섬웨어를 동작시켰던 것입니다. 클리앙에서 문제가 되었던 랜섬웨어는 윈도에서 동작하는 인터넷 익스플로러(IE) 7 이하 버전에서 문제가 되었다고 하는데 크롬이나 파이어폭스를 사용했던 사용자나 IE8 이상에서 최신 보안 업데이트를 적용한 사용자들에게는 문제가 되지 않았다고 합니다. 즉, 앞서 얘기했던 것처럼 보안 업데이트를 최신으로 유지하고 웹브라우저의 버전을 최신으로 유지하면서 안티바이러스를 최신으로 유지하면(결론적으로는 뭐든 다 최신으로 유지하면 되네요 ^^) 랜섬웨어의 공포로부터는 어느정도 해방된다고 할 수 있을 듯 싶습니다.
랜섬웨어에 걸렸을 때의 대처법에 대해서 이런저런 이야기가 나오고 있습니다. 랜섬웨어에 걸린 파일들을 복구시키는 프로그램들도 몇몇 존재하고 있는 듯 싶기도 하고요. 하지만 일반적으로는 랜섬웨어에 대한 대처법은 없다고 얘기하는 것이 전문가들의 이야기입니다. 랜섬웨어에 걸린 파일을 복구시키는 프로그램들의 성능에도 의문이 드는 것이 사실이고 또 제대로 동작하지 않는 경우도 수두룩 합니다. 또한 랜섬웨어에 걸린 이후 해커가 요구한 금액을 송금했다고 하더라도 해커가 복호화 키를 안줄 수도 있고(범죄자에게 도덕성을 바라는 것은 무리겠지요) 또 엉뚱한 복호화 키를 던져줄 수도 있습니다. 가장 최선의 방법은 앞서 얘기했던 것처럼 랜섬웨어에 걸리지 않도록 방비를 잘 하는 것입니다.
그래도 만약 랜섬웨어에 걸렸을 경우라면 몇가지 방법을 시도해볼 수는 있습니다. 앞서 얘기했던 랜섬웨어 복구 프로그램을 이용할 수도 있습니다만 그닥 효과는 장담할 수 없습니다. 그리고 만약 윈도의 이전 시점으로 되돌리기 기능을 이용해서 랜섬웨어에 감염되기 이전으로 돌리는 방법도 있습니다만 이것은 사용자가 해당 기능을 켜야(보통 하드디스크의 용량을 많이 잡아먹는다는 이유로, 또 속도 저하를 이유로 이 기능을 꺼놓습니다. 그리고 네트워크 드라이브는 이 기능을 제공하지 않는데 랜섬웨어는 네트워크 드라이브로 잡힌 드라이브까지 싹 뒤져서 암호화를 적용하는 것으로 알려져 있습니다) 가능합니다. 좀 부지런한 사용자들이라면 자신이 사용하는 데이터들을 주기적으로 백업하는 방법도 있습니다. 물론 백업 이후에는 백업 매체를 PC에서 분리시켜야 하겠지만요(랜섬웨어는 백업 매체까지 뒤져서 파일을 암호화 해두는 것으로 알려져 있습니다). 랜섬웨어 감염 전의 백업본을 다시 설치하면 됩니다. SVN이나 CVS와 같은 데이터 버전 관리 솔루션을 이용한다면 랜섬웨어로 감염되기 이전 버전으로 다시 되돌리는 방법도 있습니다. 물론 다 완벽한 방법은 아닙니다. 그리고 마지막 버전과 랜섬웨어 감염 사이에 만들어진 데이터들에 대해서는 복구가 불가능합니다(시간 차이가 있기 때문입니다). 그래도 아주 복구가 안되는 것보다는 이런 방법을 동원해서 어느정도 회복시킨 이후 나머지 부분에 대해서 대책을 강구하는 것이 좀 더 좋겠지요.
랜섬웨어 뿐만이 아니라 대부분의 악성코드가 사용자에게 정신적, 물질적 피해를 줍니다. 이런 피해를 막기 위해서는 얘기했듯 평소 악성코드에 대비하는 법을 실천하는 것이 중요합니다. 의심가는 메일은 열어보지 않고 OS에서 제공하는 보안 업데이트는 늘 최신을 유지하며 자주 사용하는 웹브라우저나 어플리케이션도 최신 버전을 유지하고 안티바이러스 솔루션 역시 최신 버전을 유지하는 것이 필요합니다. 그리고 사용자 스스로가 이상한 부분이나 의심가는 부분에 대해서 능동적으로 판단하고 대처하는 것이 중요하다고 봅니다. 어떤 사고든 원인이 있으니 문제가 생기는 것이고 원인만 제거한다면 문제로 인한 사고는 생기지 않을테니까요.
원문 : 보안의 핵심요소, 암호화의 악용. 랜섬웨어의 공포!