발자취

악성코드 03. 데이터 인코딩 본문

3-2/악성코드

악성코드 03. 데이터 인코딩

해린 2023. 9. 18. 18:46

1. Malware 인코딩 사용 목적

1. 일반적인 목적: 네트워크 기반의 통신 암호

2. 내부적인 동작 내용을 감추기 위한 목적

- 명령-제어와 같은 설정 정보를 숨기기 위함

- malware에 의해 사용되는 문자열들을 저장하고, 저장된 문자열들이 필요로 되기 직전에 디코드함

- Malware를 합법적인 툴로 속이기 위함 (악의적인 행위를 위해 사용된 문자열들을 숨김)

 

 

 

2. 간단한 암호기법

1. Casesar Cipher

- 로마시대에 사용됨

- 알파벳 문자들을 오른쪽으로 3개 문자만큼 이동하여 암호화함

 

 

2. 단일 바이트 XOR 인코딩

- 고정된 바이트 키값을 설정하고, 평문의 각각의 바이트값과 설정된 바이트 키값에 대해서 논리적인 XOR 연산을 수행하여 암호화함

- 단순하고 reversible함

   → 평문 XOR 키값 = 결과값

       결과값 XOR 키값 = 평문

 

 

3. 무차별 대입 XOR 인코딩

- 고정된 바이트가 가질 수 있는 256개의 가능한 값을 모두 대입하여 XOR 인코드된 값을 디코드함

 

 

4. NULL 보존 단일 바이트 XOR 인코딩

- 평문 문자가 NULL 또는 키 그 자체인 경우에, 인코딩을 수행되지 않음

- 평문 문자가 NULL이 아니고 키 자체도 아닌 경우에, 인코딩을 수행함

 

 

5. Base64

- 이진 데이터를 ASCII 문자열 포맷으로 나타내는데 사용됨

- E-mail 첨부 인코딩을 위해 개발되었으나, 현재 HTTP, XML에 광범위하게 사용됨

- 이진 데이터를 64개 문자들로 구성된 제한된 문자 셋으로 변환함

- 가장 흔한 문제 셋: MIME의 Base64

    - 최초의 62개 값: A-Z, a-z. 0-9 문자 중에서 사용함

    - 마지막 2개 값: +, / 문자 중에서 사용함

 

 

6. Malware가 간단한 암호기법을 사용하는 이유

- 암호 라이브러리의 큰 용량 때문에 malware는 정적인 라이브러리 연결이 필요함

- 호스트 상에 존재하는 코드에 대한 링크는 이식성을 감소시킴

- 표준 암호 라이브러리는 쉽게 탐지될 가능성이 있음 (AES, RSA같은 애들은 보편화 되어있기 때문)

- 대칭키 암호 알고리즘이 사용된다면, 암호키를 감추는 것이 어려울 수 있음.