본문 바로가기

Work Log/As Cybersecurity Consultant

[악성코드] 악성코드가 사용하는 기법(Techniques) - Obfuscation (난독화)


악성코드의 지속 매커니즘 (Persistence Mechanism)이 날이 갈수록 진화하고 있습니다. 최근의 Flame 등과 같은 특수 목적의 악성코드의 경우에는 이러한 기법들을 통하여 1년 이상 발견이 안 된 상태로 활동을 하기도 했는데요. 이 중 Obfuscation에 대해서 정리를 해보려고 합니다.



난독화, Obfuscation 은 악성코드의 생존성을 높이기 위해서 사용하는 기법 중 하나로, 프로그램을 이해하기 어렵게 만드는 기법을 말한다. 보다 구체적으로는, 기능적으로는 동일하게 동작하지만, 다른 형태를 가진 파일을 생성하는  방법을 말하는데, 원래는 지적재산권의 보호를 위하여 사용되던 것이 악성코드에서도 사용되기 시작하였다. 결과적으로 난독화를 사용하는 목적은 악성코드를 탐지하는 안티바이러스 프로그램의 탐지를 회피하거나, 악성코드 분석가들이 분석을 하기 어렵게 만들기 위한 것이다. 


이러한 난독화를 사용하는 악성코드를 분류하자면 ENCRYPTED, OLIGOMORPHIC, POLYMORPHIC, METAMORPHIC 으로 분류할 수가 있는데, 각 각은 다음과 같다.


* Encryped Malware 

- 대칭키 암호화 알고리즘을 사용하여 감염 될 때마다 고유한 키를 통하여 암호화 하여, Signature 기반의 프로그램에 의해서 탐지가 되지 않도록 하는 기법

- 일반적으로 코드 섹션을 암호화 하는데, 복호화 하기 위한 모듈이 함께 배포가 되어야 하기 때문에 복호화 모듈의 패턴을 통하여 탐지를 하기도 함

- 알려진 암호 알고리즘이 제한적이고 구현이 어렵기 때문에 기존에 있던 암호화 라이브러리를 사용하기 때문에 탐지 될 수가 있음


* Oligomorphic and Polymorphic Malwares

- 그리스어로 Oligo는 비정상적으로 적거나 작은 것(abnormally few or small)을 의미하고, morphe는 모양 형태(shape or form)를 의미한다. Oligomorphic은 여러 Decryptor를 사용하여 정적인 암호화 방법의 단점을 개선한 기법이긴 하지만 여전히 제한된 수의 Decryptor를 사용하기 때문에 Signature에 의해서 탐지 될 수가 있는 한계가 존재한다.

- Polymorphic의 Poly는 그리스어로 많은 수(many)를 의미한다. 그 뜻처럼 다양한 기법을 사용하여 셀 수 없는 다양한 변종들을 생성하는 기법을 말한다. 보다 구체적으로는 여러 쓰레기 값을 코드에 추가를 해서 그 형태를 변경시키거나 레지스터를 재할당하는 방법을 사용하기도 하는데, Polymorphic을 위한 Mutation Engine을 사용하여 자동화 할 수 있다.





* Metamorphic Malware

-  동일한 제어흐름을 가진 코드이지만 형태는 변경되도록 변형하는 기법을 말하며, 코드섹션 자체를 Dead-Code Insertion, Register Reassignment, Subroutine Reordering, Instruction Substitution, Code Transposition, Code Integration 등의 방법을 사용하여 변형한다.





* 참고문헌

http://blogs.cisco.com/security/a_brief_history_of_malware_obfuscation_part_1_of_2/

ObfuscationThe Hidden Malware O'Kane, P.; Sezer, S.; McLaughlin, K., Security & Privacy, IEEE Volume: 9 , Issue: 5 Digital Object Identifier: 10.1109/MSP.2011.98 Publication Year: 2011 , Page(s): 41 - 47, IEEE JOURNALS & MAGAZINES