SEO

[AV 탐지 우회 기법] Polymorphic 및 Metamorphic 기법 (다형성 및 변형 악성코드) 본문

Security/Reversing & Malware

[AV 탐지 우회 기법] Polymorphic 및 Metamorphic 기법 (다형성 및 변형 악성코드)

Crain 2024. 3. 10. 22:05
반응형

Polymorphic(다형성) 악성코드란?

Polymorphic 악성코드는 그 자체로 "다형성"을 띠는 특성을 가집니다. 즉, 이 악성코드는 실행될 때마다 그 형태나 동작을 다르게 만들어 AV 탐지 시스템이 고유한 시그니처를 찾아내기 어렵게 만듭니다. 다형성 악성코드는 주로 코드를 변경하거나 변형하여 AV 시스템의 패턴 기반 탐지를 피하려고 합니다. 주요 기법은 코드 난독화, 동적 암호화 키 사용, 가변 코드 구조, 행동 적응 등이 있습니다.

 

 

Polymorphic 악성코드의 기술

  1. 코드 난독화(Obfuscation)
    코드를 사람이 읽을 수 없도록 만들거나, 컴퓨터가 실행하기 어려운 방식으로 변경하는 기술입니다. 예를 들어, 변수를 무작위로 바꾸거나, 불필요한 명령을 삽입하여 악성코드의 흐름을 복잡하게 만듭니다.
  2. 동적 암호화 키
    악성코드가 실행될 때마다 다른 암호화 키를 사용하여 자신을 암호화합니다. 이 방식은 같은 악성코드라도 실행될 때마다 다르게 보이도록 만들어, 정적 분석을 어렵게 만듭니다.
  3. 가변 코드 구조
    코드의 구조를 실행될 때마다 다르게 변경하여, 시그니처 기반의 탐지를 회피할 수 있습니다. 예를 들어, 순서가 달라지거나 코드의 일부가 동적으로 생성될 수 있습니다.
  4. 행동 적응
    다형성 악성코드는 AV 시스템의 분석 방식에 따라 그 행동을 변경할 수 있습니다. 이를 통해 특정 분석 도구를 감지하고 다른 방식으로 동작하여, 탐지를 피할 수 있습니다.

서브루틴 순열(Subroutine Permutation)

    • 다형성 악성코드는 코드 구조를 변경하기 위해 서브루틴이나 기능의 순서를 바꾸는 기법을 사용합니다.
      예를 들어, 원본 코드에서 특정 함수들이 특정 순서로 실행되던 것이, 다형성 악성코드에서는 그 순서가 바뀔 수 있습니다.

원본 코드

function A() {...}
function B() {...}
function C() {...}

 

다형성 코드

function B() {...}
function C() {...}
function A() {...}

 

레지스터 스와핑(Register Swapping)

레지스터 스와핑은 값을 저장하거나 처리하는 데 사용되는 레지스터를 변경함으로써, 코드의 모양을 변경할 수 있는 기법입니다. 이는 프로그램의 기능에는 영향을 미치지 않으면서, 악성코드의 형태를 다르게 만들어 탐지를 회피합니다.

 

원본 코드

MOV EAX, 1
ADD EBX, EAX

 

다형성 코드

MOV ECX, 1
ADD EBX, ECX

이처럼, 레지스터를 바꾸어도 프로그램의 동작에는 변동이 없기 때문에 AV 시스템은 이를 식별하기 어려워집니다.

 

명령 대체(Instruction Substitution)

다형성 악성코드는 기능을 유지하면서, 특정 명령어를 동등한 다른 명령어로 대체할 수 있습니다. 이는 악성코드의 시그니처를 변경하면서도 동일한 동작을 수행하도록 만듭니다.

 

원본 코드

SUB EAX, 5

 

다형성 코드

ADD EAX, -5

위와 같이, 연산의 종류만 변경하고 동작은 동일하게 만들어, AV 시스템이 기존의 시그니처를 통해 악성코드를 식별하는 것을 방지합니다.

 

 

 

Metamorphic(변형) 악성코드란?

Metamorphic 악성코드는 Polymorphic 악성코드와 유사하게 탐지를 회피하려는 목적을 가지고 있지만, 작동 방식에서 큰 차이가 있습니다. Polymorphic 악성코드는 암호화와 난독화를 통해 코드의 시그니처만 변경하는 반면, Metamorphic 악성코드는 코드의 구조 자체를 변형하여 완전히 다른 코드처럼 보이게 만듭니다. 이 과정에서 암호화 없이도 원본 코드와는 전혀 다른 형태를 가지게 됩니다.

Metamorphic 악성코드는 악성코드 변환 엔진을 사용해 실행될 때마다 코드를 재작성하며, 이로 인해 정적 분석이나 시그니처 기반 탐지가 매우 어려워집니다.

 

코드 삽입 (Code Insertion)

Metamorphic 악성코드는 실행에 영향을 주지 않는 불필요한 코드를 삽입하여, 원본 코드와는 전혀 다른 코드 구조를 만듭니다.

 

원본 코드

int sum = a + b;
return sum;

 

변형 코드

int dummy = 0; 
int sum = a + b;
dummy++;       
return sum;

 

명령어 재배열 (Instruction Reordering)

코드 실행 순서를 변경하여 탐지를 어렵게 만듭니다. 제어 흐름에 영향을 주지 않으면서 명령어를 재배열합니다.

 

원본 코드

MOV EAX, 1
ADD EAX, 2
MOV EBX, EAX

 

변형 코드

ADD EAX, 2
MOV EAX, 1
MOV EBX, EAX

 

명령어 대체 (Instruction Substitution)

Polymorphic 악성코드에서 사용되는 기술과 유사하지만, 더 광범위한 명령어 대체가 이루어집니다. 동일한 동작을 수행하는 명령어를 사용하여 원본 코드와 다르게 보이게 합니다.

 

원본 코드

MOV EAX, 5
ADD EAX, 3

 

변형 코드

MOV EBX, 5
SUB EBX, -3
MOV EAX, EBX

 

코드 블록 분할 및 재배치 (Code Block Splitting & Reordering)

Metamorphic 악성코드는 큰 코드 블록을 분할한 뒤, 이를 다른 순서로 재배치하거나 중간에 다른 코드를 삽입합니다.

 

원본 코드

void calculate() {
    int a = 5;
    int b = 10;
    int sum = a + b;
    print(sum);
}

 

변형 코드

void calculate() {
    int a = 5;
    print(a + 10);
    int b = 10; // 필요 없는 변수
}

 

레지스터 변경 (Register Substitution)

Polymorphic 악성코드처럼 레지스터를 교체하는 기법을 사용합니다. 그러나 Metamorphic 악성코드는 모든 코드 전반에 걸쳐 레지스터를 대체합니다.

 

원본 코드

MOV EAX, 5
ADD EAX, 10

 

변형 코드

MOV ECX, 5
ADD ECX, 10

 

무의미한 코드 생성 (Garbage Code Generation)

악성코드의 전체 크기를 늘리기 위해 무작위로 쓰레기 코드를 생성합니다. 이는 실행에 영향을 주지 않으면서 정적 분석을 방해하는 역할을 합니다.

 

원본 코드

int result = a + b;
return result;

 

변형 코드

int result = a + b;
int x = 0; 
x = x + 1; // 의미 없는 코드
return result;

 

 

Metamorphic(변형) 악성코드와의 차이점

Polymorphic 악성코드와 달리 Metamorphic 악성코드는 코드 자체를 근본적으로 변경하는 방식입니다. Metamorphic 악성코드는 시그니처뿐만 아니라 코드의 구조도 완전히 바꿔버려, 탐지 시스템이 해당 악성코드를 식별하는 것이 거의 불가능하게 만듭니다. 이들은 일반적으로 더 고도화된 방식으로 구현되며, 코드가 실행될 때마다 완전히 새로운 형태로 변형됩니다.

 


 

https://www.sentinelone.com/cybersecurity-101/what-is-polymorphic-malware/

 

What is Polymorphic Malware? | An Easy Guide 101

Explore Polymorphic Malware: its types, mechanics, techniques, and challenges in detection for a comprehensive understanding of this evolving cyber threat.

www.sentinelone.com

https://www.techtarget.com/searchsecurity/definition/metamorphic-and-polymorphic-malware

 

What are metamorphic and polymorphic malware?

Learn how to detect and prevent metamorphic and polymorphic malware, two types of malicious software that change their code as they propagate through a system.

www.techtarget.com

https://gridinsoft.com/blogs/polymorphic-metamorphic-viruses/

 

Difference Between Polymorphic and Metamorphic Viruses

Ever-transforming malware gives hard time to security solutions. Learn the difference between polymorphic and metamorphic viruses here.

gridinsoft.com

https://www.tripwire.com/state-of-security/understanding-how-polymorphic-and-metamorphic-malware-evades-detection-infect

 

Understanding how Polymorphic and Metamorphic malware evades detection to infect systems

This adaptive behavior od polymorphic and metamorphic malware is the main distinctive attribute of these types of malware, which is also why they are harder to detect; it is also why they pose a great threat to systems.

www.tripwire.com

https://www.thesslstore.com/blog/polymorphic-malware-and-metamorphic-malware-what-you-need-to-know/

 

반응형