게시일: 2015. 11. 17 오후 3:20:51
http://www.boannews.com/media/view.asp?idx=48518&page=1&kind=1&search=title&find=
리눅스 랜섬웨어 제작자의 RSA 퍼블릭 키로 복호화하는 과정 없이 AES키 복구
[보안뉴스 김경애] 최근 리눅스 서버를 노린 리눅스 랜섬웨어(Linux Ransomware)가 등장해 이용자들을 긴장시키고 있다. 랜섬웨어의 파일 이름은 Linux.Encoder.1이며 피해자에게 1비트코인, 약 380불에 달하는 돈을 요구하는 것으로 알려졌다.
이와 관련해서 비트디펜더(BitDefender)는 방어 툴을 개발해 배포에 나섰으며, 알약 블로그에서도 이를 해당 게시판에 올렸다.
비트디펜더에 따르면 리눅스 랜섬웨어(Linux Ransomware)의 AES키는 희생양의 로컬 컴퓨터에서 생성된다며 키와 초기화 벡터(IV)가 어떻게 생성되는지 Linux.Encoder.1의 샘플을 리버스 엔지니어링해 확인했다고 밝혔다.
이들은 시큐어 랜덤 키 및 초기화 벡터를 생성하는 것보다 암호화 당시 libc rand() 함수의 시드인 현 시스템의 타임스탬프를 이용해 이 두 가지 정보(랜덤 키, 초기화 벡터)를 추측해 내는 편이 낫다고 분석했다.
따라서 파일의 타임스탬프를 통해 정보를 쉽게 얻어낼 수 있었으며, 설계상의 결점으로 인해 리눅스 랜섬웨어 제작자의 RSA 퍼블릭 키로 복호화하는 과정 없이 AES키를 복구해낼 수 있게 됐다는 설명이다.
Linux.Encoder.1 랜섬웨어에 의해 암호화된 데이터를 복호화하는 방법
1. http://labs.bitdefender.com/2015/11/linux-ransomware-debut-fails-on-predictable-encryption-key/ 에서 스크립트를 다운로드한다.
(암호화가 시스템에 영향을 미쳤을 가능성이 있기 때문에, 라이브 CD를 통해 시스템을 부팅 하거나 다른 머신에 해당 파티션을 마운트해야 할 수 있다.)
2. mount /dev/[encrypted_partition]를 이용하여 암호화 된 파티션을 마운트한다.
3. /mnt# sort_files.sh encrypted_partition > sorted_list 커맨드를 이용하여 암호화된 파일의 리스트를 생성한다.
4. head 커맨드를 이용하여 첫 번째 파일을 얻어낸다.
: /mnt# head -1 sorted_list
5. 복호화 유틸리티를 실행하여 암호화 시드를 얻어낸다.
: /mnt# python decrypter.py –f [first_file]
6. 해당 시드를 이용하여 모든 파일들을 복호화한다.
: /mnt# python /tmp/new/decrypter.py -s [timestamp] -l sorted_list
[김경애 기자(boan3@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>
RSA :977년 론 리베스트(Ron Rivest)와 아디 셰미르(Adi Shamir), 레오나르드 아델만(Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증시스템이다. 3명의 이름 가운데 첫 글자를 모아 붙인 용어이다. 마이크로소프트 윈도, 넷스케이프 브라우저를 비롯해 로터스 등 수백 개의 소프트웨어와 연동이 가능하며, 국제표준화기구(ISO)를 비롯하여, ITU·ANSI·IEEE 등 여러 국제기구에 암호표준으로 제안되어 있다. 소유권은 RSA시큐러티(Security)가 가지고 있다.
이 알고리즘은 두 개의 큰 소수(보통 140자리 이상의 수)를 이용한다. 이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 개인키로 인터넷에서 사용하는 정보(특히 전자우편)를 암호화하고 복호화할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다.
개인키의 암호를 해독하려면 슈퍼컴퓨터로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용되고 있다. 그러나 계산량이 많은 것이 단점으로 꼽힌다. 비트 수에 따라 다르나 펜티엄급 컴퓨터에서 공개키와 개인키를 만들려면 짧게는 20여 초, 길게는 몇 분까지 기다려야 한다. 복호화에도 많은 계산량이 요구되고 있어 휴대용 단말기에서는 사용하기 어렵다. 그러나 이런 문제를 해결하기 위해 최근에 타원곡선 알고리즘이 등장하기도 했다.
[네이버 지식백과] RSA [Rivest Shamir Adleman] (두산백과)
AES : AES는 미국의 연방 표준 알고리즘으로서 20년이 넘게 사용되어 온 DES(Data Encryption Standard)를 대신할 차세대 표준 알고리즘이다.DES는 1972년에 미국 상무성 산하 NIST (National Institute of Standards and Technology)의 전신인 NBS(National Bureau of Standards)에서 컴퓨터 데이터를 보호할 목적으로 표준 알고리즘을 공모하여 IBM사가 개발한 암호 알고리즘이다. DES는 연방 표준으로 제정된 후에 5년마다 안정성을 인정받으면서 표준으로 존속되어 왔으나, 1997년 이후 안정성에 대한 논란이 대두되자 NIST가 DES를 대체할 차세대 표준 암호 알고리즘 제정을 위한 프로젝트로 추진한 것이 AES이다. AES 알고리즘이 채택되면 현재 사용되고 있는 DES를 대신하게 되고, 로열티 없이도 사용할 수 있게 된다.
[네이버 지식백과] AES (매일경제, 매경닷컴)
의견 : 해당 스크립트를 아직 열어보지 못해서 어떤 원리인지는 구체적으로는 아직 잘 모르겠지만, 랜섬웨어가 파일을 암호화 하는 원리가 밝혀졌다면 리눅스 이외의 환경에서도 조만간 파일의 복구방법이 발견되리라 생각한다.