X

난독화 (Obfuscation)

I. 소프트웨어 보안 위한 난독화의 필요성

필요성 설명
불법 복제 방지 – 역공학 이용 시리얼 키 및 암/복호화 비교 루틴 우회 방지위해 난독화 통한 복제 방지
해킹 방지 – S/W 취약점 탐지, 취약점 이용 S/W 제공 기능 우회 및 악성코드 제작 사전 방지
소프트웨어 경량화 – 자바 등 소스 코드의 용량 인한 응답 속도 저하 해결 위해 난독화 통한 S/W 경량화

II. 역공학 분석 방지 목적 난독화

가. 난독화(Obfuscation)의 개념

  • 역공학 이용한 S/W 행위 분석자에게 소스 레벨의 분석을 어렵게 만들기 위한 코드 변형 기법
  • T(P)가 프로그램 P에 대한 변환이라 가정 시 T(P)와 P의 동작이 동일 시 T는 난독화 변환

나. 난독화 개념도 및 핵심 절차

절차 설명
분석 작업 – 입력 소스 코드로부터 어휘와 구문 분석 수행
기법 선택 – 분석 결과를 기반으로 특성에 맞는 기법 선택
코드 난독화 수행 – 소스 코드 수정 없이 난독화 설정 값에 따라 해당 로직을 조합하여 난독화 수행

 

III. 난독화 위한 기술 분류와 비교 설명

가. 난독화 위한 기술 분류

난독화 기술 설명
Layout Formatting Change – 배열 등에 담아 둔 String 등 이용, 포맷 변환으로 코드 분석 난해
Remove Comments – String형식 주석문 제거, Reversing 분석 어렵게 만드는 방법
Scramble Identifiers – 변수, 식별자 등 이름 변경, Rever-sing 분석 어렵게 만드는 방버
Data Storage – 변수를 자르거나 정적 변수를 함수 호출 형식으로 변경
Aggregation – 자료 순서 변환, 하나의 클래스를 분리하는 방법
Control Computation – 여러 개의 Loop를 나누거나 합치는 방식
Ordering – Loop Count를 역순으로 사용
Aggregation – Procedure Inline or Outline 이용 제어 흐름 순서 해석 어렵게 함
Preventive Targeted – 알려진 역난독화 방법에 대해 역난독화 프로그램끼리 충돌
Inherent – 역난독화 프로그램에 가짜 데이터 반환하는 방법
  • 사용자의 실행 속도를 함께 고려하며 보안과 사용성의 Trade-off 관계를 S/W 성격에 맞게 적용 필요

나. 난독화 기술 비교

구분 Layout Data Control Preventive
특징 – 세부적 요소 변화, 제거
– 복원 성공 시에도 프로그램 상당 부분 훼손
– 프로그램 처리 변수의 변환
– 데이터 저장 변수 합치거나 읽기 어렵게 변경
– 프로그램 문장 단위 조절
– 프로시저 등 변경으로 인한 불명확성을 증대
– 역난독화에 대한 대응
– 역난독화 프로그램이 구체화된 경우 사용 가능
장점 – 성능 저하 미존재 – 자료의 보호 – 로직의 보호 – 능동적 역공학 방해
단점 – 로직 보호 불가 – 성능의 저하 – 성능 저하 – 성능 저하
사례 변경 전:
Get Payroll()
변경 후:
a()
변경 전:
t=”Net”;
변경 후:
t[1]=’N’;
t[2]=’e’;
t[3]=’t’;
변경 전:
for(i=0;i<100;i++)
변경 후:
for(i=100;i>0;i++)
– Hardware breakpoint Detection
– Detecting breakpoint by CRC

 

IV. 주요 난독화 기법

주요 기법 설명
Split Obfuscation – 가장 간단한 난독화 방법으로 코드를 다수 스트링 변수로 잘게 쪼갠 후 재조립
인코딩 함수 – ASCII 문자로 변환 수행
HEX Code – 주요 코드를 hex, asci, base64 코드로 변환
Replace 함수 – 코드/변수에 복잡한 쓰레기 문자 삽입하여 replace를 이용하여 사용하는 기법
생성자 난독화 – 생성자를 통해 문자열 처리하여 문자 없이 코드 작성 방법
Dehydrating a stringTechnique – 아스키코드로 0x20과 0x09인 스페이스와 수평 탭을 이용하여 코드 보이지 않는 기법

 

Categories: 보안
도리:

View Comments (1)