본문 바로가기
TechNote/소프트웨어 공학(SW)

011. 소프트웨어 역공학

by 도지웅 2022. 10. 1.
반응형

1. SW보안 취약점 분석 기술, 소프트웨어 역공학

가. 소프트웨어 역공학의 의미

  • 디어셈블러, 디컴파일러를 이용하여 바이너리로부터 원시 코드를 생성함
  • 소프트웨어 실행 파일을 분석하여 소프트웨어 특성과 유용한 정보를 찾아냄

나. 역공학 방지 기술 코드 난독화

  • 역공학을 통한 보안 취약점 공격에 대한 방지 기술로서 코드를 복잡하게 만들어 원시 코드를 알아보기 힘들게 하는 기술
  • 프로그램의 의미를 유지하면서 배치, 논리, 자료, 구조 등을 변화시켜 역공 학자나 분석도구의 분석을 어렵게 하는 기술

2. 코드 난독화의 종류와 기술

가. 코드 난독화의 종류 (Layout obfuscation)

구분 종류 설명
기법에 따른
종류
배치 난독화
(Layout Obfuscation)
실행 파일에 포함되어 있는 문자열의 내용을 바꾸는 기법
예) 자바 클래스의 경우 메소드 이름과 필드의 이름을 바꿈
자료 난독화
(Data Obfuscation)
프로그램 내부의 자료 구조를 바꾸거나 자료를 암호화하는 방식 이용
제어 난독화
(Control Obfuscation)
제어 흐름을 바꾸는 것을 통해 디컴파일과 같은 역공학을 어렵게 함
방지 난독화
(Preventive Obfuscation)
역공학 도구로 사용될 수 있는 디컴파일러나 디버거 또는 분석 도구를 무력화 하는 방방법
대상에 따른
종류
소스 코드 난독화 C, C++, JAVA 등의 프로그램 소스 코드를 알아보기 힘든 형태로 바꾸는 기술
바이너리 난독화 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술

나. 주요기술

항목 설명
심볼 정보 제거 배치 난독화 기법으로 주로 활용, 메소드와 변수 이름을 바꾸어 의미 파악
코드 암호화 코드를 암호키와 해독키에 의해 암호화, 해독키를 H/W에 숨기는 방법 고안됨 
제어 흐름 변환 계산 변환, 집합 변환, 순서 변환 활용 됨
순서 섞기 명령어의 순서를 바꾸어 코드 난독화

다. 소프트웨어 역공학과 코드 난독화의 모순관계

  • 공격하고 방어하는 모순의 관계

3. 소프트웨어 역공학과 코드 난독화의 현황

  • 소프트웨어 취약점을 이용한 사이버 공격이 증가함에 따라 secure coding 난독화를 통한 소프트웨어 분석 방어 필요
  • 악성코드의 경우 코드 난독화와 패킹을 통한 보호가 증가하고 있음
  • 역공하을 이용하여 윈도처럼 소스코드가 공개되지 않은 OS나 애플리케이션의 보안 버그를 찾는데 활용
  • 역공학 방지 방법으로는 실행파일의 암호화, 위조 역 어셈블, 자가수정코드 사용 등 있음
  • 바이러스 연구에서 시작된 난독화는 SW의 코드를 보호하기 위한 기술로 진화중
반응형

댓글