최근들어 실행압축이라는 것을 이용하여, 컴퓨터 바이러스나, 웜등이 변형되는 하나의 방식으로 자리를 잡고 있어 커다란 문제로 대두되고 있는 것이 현실입니다.
그래서 실행압축이란 어떤 것인지 좀더 자세하게 알려드리는 시간을 가져보도록 하겠습니다.
그 동안 실행압축에 대하여 자세하게 알려드리지 않은 이유는 이 내용이 알려지면 오히려 실행압축을 이용한 부작용이 발생할 것을 우려했기 때문입니다.
하지만 이제는 일반인분들도 컴퓨터 사용시 많이 접하는 용어가 되었고, 예방이나 사전지식 측면에서 모르는 것보다 아는것이 더 중요할 것이라는 판단하에 정보제공을 하게되었습니다.
파일의 압축은 크게 일반압축과 실행압축으로 나뉠 수 있습니다.
일반압축(Archive / ZIP / Self-extracting archive)은 여러분이 많이 알고 계신 WinZIP 이나 WinRAR, 국내에서 제작되어진 Alzip(알집) 등을 말하며, 파일을 각 해당 압축 프로그램 포맷 형태로 다양한 일반 파일을 압축하여 하나의 압축파일로 바꾸어 용량을 줄여주는 것을 의미합니다.
최근에는 일반 압축 프로그램의 종류도 매우 다양하고 기능도 계속 발전하고 있습니다.
다시 말해서 일반 압축이란 한 개 또는 여러 개의 다양한 파일(폴더)을 ZIP 이나 RAR, ALZIP 등의 확장자를 이용하여 하나의 파일 포맷형태로 크기를 줄여주고 압축된 하나의 파일로 바꾸어 주고 것을 말합니다.
정리하면 여러 개의 파일을 하나의 파일로 묶어주고 용량을 줄여주는 것이지요.
※ 일반압축 = EXE, HWP 등 다양한 파일 여러개 -> 한개의 압축 형태(ZIP, RAR, ALZIP 등)
물론 각 압축된 확장자 ZIP 이나 RAR, ALZIP 형태를 다시 실행파일인 EXE 인 자동 압축해제 형태로 변경해 줄 수 있는데, 이것은 사용자 컴퓨터에 해당 일반 압축프로그램이 설치되어 있지 않을 경우에도 사용자가 실행을 하여 압축을 해제할 수 있도록 도와주는 방식이며, 실행압축과는 의미가 다르므로 용어를 혼동하시면 안됩니다.
자동 압축해제 방식은 일종의 프로그램 셋업형식의 방식으로도 사용되고 있는 압축해제 방식이기도 합니다.
일반압축은 컴퓨터 바이러스나 웜등이 변형하는 방식이라기 보다는 유포를 하는데 사용하는 방식중에 하나이기도 합니다.
압축파일 형태로는 내부에 포함된 컴퓨터 바이러스나 웜등이 직접 실행되어 감염될 수 는 없지만 마치 다른 파일인 것처럼 압축되어 유포되는 사례가 많아서 일반 압축프로그램에 포함된 각종 악성프로그램을 진단해 내는 것도 감염 사전 예방차원에서 중요한 백신 기능중에 하나로 자리를 잡고 있습니다.
예를 들면 Bagle 웜 변형등이 ZIP 이나 RAR 등의 압축형태로 이메일 첨부파일을 이용하여 유포되고 있는 한 종류이며, 특정 컴퓨터 사용자 시스템에 감염되고 이메일 주소를 수집한 후 다른 이메일로 웜파일을 전송될 때 스스로를 압축하여 보낸다는 것입니다.
자 그러면 본격적으로 컴퓨터 바이러스나 웜등의 악성코드가 변형기법으로 사용하고 있는 실행압축에 대하여 알아보겠습니다.
실행압축(Pack / Compress)은 일반압축처럼 다양한 파일을 하나로 묶어주는 것이 아니고, 하나의 실행파일 그대로를 다양한 실행압축 프로그램을 이용하여 하나의 실행파일 형태 그대로 유지하면서 용량을 줄여 주는 압축방식입니다.
정리하면 실행파일 EXE 를 실행압축하여도 확장자는 그대로 EXE 이며, 해당파일 한개의 용량만 줄이고 하나의 파일이 그대로 존재하는 것입니다.
※ 실행압축 = 한개 EXE 파일 -> 한개 EXE 파일
실행압축 프로그램의 종류는 매우 다양하며, 버전과 방식도 많이 알려져 있습니다.
또한 특정 컴퓨터 바이러스 제작자들이 만든 실행압축 프로그램도 존재하고 실제 변형에 많이 악용되기도 하였습니다.
그렇기 때문에 수 많은 전 세계 컴퓨터 바이러스 제작자들이 다양한 실행압축을 이용하여 파일크기를 줄이거나 변형하는 방식으로 사용하고 있는 부작용이 생겨나고 있습니다.
그러면 어떻게 실행압축을 이용하여 변형이 이루어지는 것일까요?
쉽게 말씀드리면 백신프로그램 진단방식의 단점을 이용한 방식이라고 말씀드릴 수 있습니다.
백신프로그램의 악성코드 진단방식에는 여러가지가 있는데 그 중에서도 대표적인 코드 특정 위치 문자열 검색방식이라는 것이 사용됩니다.
예를 들어 새로운 컴퓨터 바이러스나 웜등이 발견되면 백신업체 연구원들은 감염파일을 분석하게 됩니다.
분석을 통해서 감염될 때 마다 특정 파일에 고유한 특정 문자열이 포함되는 경우를 확인할 수 있는데, 이럴 때 파일 코드의 특정위치에 존재하는 고유의 문자열을 백신기능에 업데이트하여 포함합니다.
물론 이 방식은 문자열이 공통적으로 특정 위치등에 반드시 존재할 경우에만 사용되는 진단방식이고, 모든 컴퓨터 바이러스나 웜등이 특정위치에 동일한 문자열을 가지는 것은 아니며, 다형성이나 암호화기법을 쓰는 경우 제외될 수 있습니다.
자 그러면 이렇게 하나의 컴퓨터 바이러스가 신고 발견되어 연구원으로 부터 코드분석(역어셈블리, 디버깅, 실제 감염 테스트)등의 절차를 거쳐 백신프로그램 데이터 베이스(DB)에 진단기능으로 업데이트 되어 포함되었다고 봅시다.
그런데 이렇게 발견되었던 하나의 컴퓨터 바이러스나 웜이 실행압축이라는 프로그램으로 인하여 실행압축이 이루어지면 내부에 있던 코드 문자열들이 변경되면서 파일 크기가 줄어들게 되는데, 바로 이 과정에서 백신프로그램이 진단하고자 했던 특정위치에 존재했던 문자열들이 사라지게 되고 백신프로그램이 진단을 했던 악성코드를 진단하지 못하게 되는 것입니다.
따라서 실질적으로 동일한 컴퓨터 바이러스나 웜도 실행압축이 이루어지면 특정 위치 문자열 검색방식에서는 절대로 진단을 못하게 되는 부작용이 발생하게 됩니다.
실행압축이 이처럼 바이러스 제작자들로 부터 악용이 되는 사례가 많아지자 국내외 대표적인 백신업체들도 다양한 실행압축 해제기능을 자사의 백신프로그램에 추가하고 있는 실정이지만 아직도 이 기능을 포함하지 않은 제품들이 있어 문제가 되고 있기도 합니다.
실행압축을 지원하는 백신과 지원하지 못하는 백신은 그 차이가 분명하며, 업데이트 해야 하는 양이 달라지게 되기 때문입니다.
이미 특정 바이러스가 하나 발견되어 특정 두 백신 업체의 백신 프로그램에 포함되었다고 가정할 때, 한곳은 실행압축을 지원하고 한곳은 실행압축을 지원하지 못할 경우의 예를 들어보겠습니다.
실행압축을 지원하는 곳은 따로 업데이트를 하지 않아도 기존 백신의 검색기능으로 실행압축을 해제하여 진단하기 대문에 바뀐 코드를 진단해 낼 수 있습니다.
하지만 실행압축을 지원하지 못하는 경우, 코드를 분석하고 새로 변경된 특정 위치의 문자열을 새로 DB에 포함시켜야 하는 과정을 거쳐야 하고, 새로운 변형 컴퓨터 바이러스등이 탄생하게 되는 것입니다.
새로 코드 분석이 이루어지는 시간과 업데이트를 하는데 이루어지는 시간, 진단시 사용되는 백신프로그램 데이터 베이스의 용량증가등 부작용이 많으며, 실행압축으로 인한 사전 예방과 조기차단이 안된다는 문제점을 가지고 있습니다.
다양한 실행압축을 통해 변형된 컴퓨터 바이러스의 경우 실행압축을 해제 하는 기능이 없으면 새로운 변형으로 백신 업데이트를 하게 되는 것입니다.
이처럼 백신프로그램의 다양한 실행압축 해제 기능은 컴퓨터 사용자로 하여금 부쩍 늘어나고 있는 실행압축을 통한 변형을 사전예방하거나 차단하는데 매우 중요한 역할을 담당하고 있는것이며, 백신업체쪽에도 추가 변형 분석이나 진단 기능 DB 업데이트를 하는 부담을 줄여주게 되는 것입니다.
또한 컴퓨터 사용자가 오해하고 있는 부분도 일부 해소가 되는 부분이 있는데, 실행압축을 지원하지 못하는 특정 백신업체에서는 새로운 실행압축 변형 웜을 새로운 웜으로 업데이트에 추가하고 홈페이지등에 공지를 합니다.
하지만 실행압축을 지원하는 특정 백신업체는 따로 추가하여 발표할 이유가 없지요.
업데이트를 하지 않아도 이미 예방/진단/치료가 가능한 상태일 테니깐요.
백신프로그램을 사용하는 개인이나 기업은 자신이 사용하고 있는 백신 제품이 실시간으로 새로운 악성프로그램을 예방하고 치료해 주기를 원합니다.
그런데 실행압축을 지원하지 못하는 백신업체는 홈페이지에 새로운 웜을 업데이트 했다고 공지했는데, 자신이 쓰는 실행압축 지원 백신제품은 홈페이지에 별 다른 얘기가 없을 때 오해를 할 수 있습니다.
보통 기업의 전산과 보안등을 담당하고 계신 분들은 해당 회사가 쓰고 있는 백신 제품이 새로운 악성프로그램을 대응하지 못하는 것 아닌가 하는 오해와 걱정을 하게 되는 판단을 내릴 수 있는 부분이기도 합니다.
그렇기 때문에 백신프로그램의 다양한 실행압축 지원은 없어서는 안될 중요한 기능으로 부각되고 있는 것입니다.
실행압축의 종류에 대해서 말씀드려 보겠습니다.
▶ UPX - the Ultimate Packer for eXecutables
대표적인 실행압축 프로그램인 UPX 는 Markus F.X.J. Oberhumer 와 Laszlo Molnar 가 만들었으며 꾸준히 소스와 함께 버전이 업데이트되고 있고, 가장 많이 알려진 프로그램입니다.
이 실행압축 프로그램은 1996년부터 제작되었으며, 꾸준히 버전업을 하고 있고, 오픈소스에 무료로 사용이 가능합니다.
2004년 6월 29일에 UPX 1.25 버전이 발표되기도 했고, 최근에 발견된 Bagle 웜이 바로 UPX 1.25 버전으로 실행압축되어 유포되었습니다.
실행압축 프로그램이 악성프로그램의 변형에 악용되고 있지만 실제로 일반압축 프로그램처럼 실행 압축프로그램도 좋은 목적으로 제작된 프로그램입니다.
홈페이지 -> http://upx.sourceforge.net
▶ ASPack -> Alexey Solodovnikov Pack
ASPack 은 Alexey Solodovnikov 가 만든 것으로 현재는 ASPACK SOFTWARE 라는 홈페이지에서 실행압축 프로그램으로 판매가 되고 있는 제품이기도 합니다.
홈페이지 -> http://www.aspack.com/downloads.html
▶ FSG - Fast Small Good
FSG는 2002년 1월 14일에 dulek 와 bart 라는 아이디를 쓰는 사람에 의해 1.0 버전이 제작되었습니다.
2002년 11월 15일에 발표되었던 1.33 버전이 최근까지 가장 많이 사용되었지만 2004년 5월 24일에 bart 에 의해 2.0 버전이 발표되었습니다.
bart 는 Joergen Ibsen 의 실행압축 라이브러리 APLIB 0.26b를 사용하여 PeX 0.99 버전을 만들었기도 합니다.
Joergen Ibsen 의 홈페이지는 아래와 같습니다.
http://apack.cjb.net
http://www.ibsensoftware.com
홈페이지 -> http://www.xtreeme.prv.pl
▶ tElock -> tHe EGOiSTE lock
2000년 부터 2001년까지 TMG(The Millenium Group) 그룹의 tE!라는 닉네임을 쓰는 사람이 만든것으로 이 실행압축은 전문 컴퓨터 바이러스 제작자인 Benny 와 GriYo 등이 제작에 도움을 준것으로 알려져 있는 프로그램입니다.
2001년 10월 25일에 발표된 0.98 버전이 가장 많이 사용되었으며, 0.99 버전도 존재합니다.
이것역시 Joergen Ibsen 의 실행압축 라이브러리 APLIB 0.26b를 사용하여 만들어졌습니다.
tE!라는 닉네임을 쓰며 tHE EGOiSTE 닉네임 약자입니다.
▶ PECompact -> Portable Executable Compress/Pack/Protect
Jeremy Collake 이 만든 실행압축 프로그램
홈페이지 -> http://www.collakesoftware.com
▶ WWPack32 -> Warezak Wierzbicki Pack 32Bit
폴란드의 Piotr Warezak 와 Rafal Wierzbicki 가 공동으로 만든 제품으로 자신들의 이름 앞 이니셜 W 를 프로그램 이름에 사용하였습니다.
홈페이지 -> http://www.webmedia.pl/wwpack32
▶ PE-SHiELD
ANAKiN [DaVinci] 라는 사람이 만든 것으로 실행압축보다는 PE(Portable Executable)코드를 암호화하는 것으로 알려져 있습니다.
이외에도 아래와 같이 매우 다양한 (실행)압축 프로그램이 실제 악성코드 변형에 사용되고 있습니다.
CryptFF, DBPE, PornoPack, Stxe, PE_Patch.AvSpoof, Bat2Exe.BDTmp, Batlite, ExeStealth, JDPack, PECRC, PE_Patch.Elka, Pex, Pingvin, Mmpo, Embedded CAB, Morphine, Eagle, PE-Crypt.Negn, Bat2Exe, PCPEC, FlySFX, Exe2Dll, Teso, PE-Crypt.UC, Polyene, PE-Crypt.UC, PEBundle, CryptFF, DBPE, BitArts.Fusion, PE_Patch.Aklay, TapTrap, CryptZ, PE-Crypt.Moo, PE-Pack, RarSFX, XCR, ZipSFX, DoomPack, NDrop, PECrc32, DebugScript, PE_Patch.Ardurik, PE-Crypt.Wonk, PE_Patch.Upolyx, MEW, PE_Patch.ZiPack, ZiPack, CryptFF.b, MEW 등
출처 : 20silvers님의 블로그