반응형
1. SW보안 취약점 분석 기술, 소프트웨어 역공학
가. 소프트웨어 역공학의 의미
- 디어셈블러, 디컴파일러를 이용하여 바이너리로부터 원시 코드를 생성함
- 소프트웨어 실행 파일을 분석하여 소프트웨어 특성과 유용한 정보를 찾아냄
나. 역공학 방지 기술 코드 난독화
- 역공학을 통한 보안 취약점 공격에 대한 방지 기술로서 코드를 복잡하게 만들어 원시 코드를 알아보기 힘들게 하는 기술
- 프로그램의 의미를 유지하면서 배치, 논리, 자료, 구조 등을 변화시켜 역공 학자나 분석도구의 분석을 어렵게 하는 기술
2. 코드 난독화의 종류와 기술
가. 코드 난독화의 종류 (Layout obfuscation)
구분 | 종류 | 설명 |
기법에 따른 종류 |
배치 난독화 (Layout Obfuscation) |
실행 파일에 포함되어 있는 문자열의 내용을 바꾸는 기법 예) 자바 클래스의 경우 메소드 이름과 필드의 이름을 바꿈 |
자료 난독화 (Data Obfuscation) |
프로그램 내부의 자료 구조를 바꾸거나 자료를 암호화하는 방식 이용 | |
제어 난독화 (Control Obfuscation) |
제어 흐름을 바꾸는 것을 통해 디컴파일과 같은 역공학을 어렵게 함 | |
방지 난독화 (Preventive Obfuscation) |
역공학 도구로 사용될 수 있는 디컴파일러나 디버거 또는 분석 도구를 무력화 하는 방방법 | |
대상에 따른 종류 |
소스 코드 난독화 | C, C++, JAVA 등의 프로그램 소스 코드를 알아보기 힘든 형태로 바꾸는 기술 |
바이너리 난독화 | 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술 |
나. 주요기술
항목 | 설명 |
심볼 정보 제거 | 배치 난독화 기법으로 주로 활용, 메소드와 변수 이름을 바꾸어 의미 파악 |
코드 암호화 | 코드를 암호키와 해독키에 의해 암호화, 해독키를 H/W에 숨기는 방법 고안됨 |
제어 흐름 변환 | 계산 변환, 집합 변환, 순서 변환 활용 됨 |
순서 섞기 | 명령어의 순서를 바꾸어 코드 난독화 |
다. 소프트웨어 역공학과 코드 난독화의 모순관계
- 공격하고 방어하는 모순의 관계
3. 소프트웨어 역공학과 코드 난독화의 현황
- 소프트웨어 취약점을 이용한 사이버 공격이 증가함에 따라 secure coding 난독화를 통한 소프트웨어 분석 방어 필요
- 악성코드의 경우 코드 난독화와 패킹을 통한 보호가 증가하고 있음
- 역공하을 이용하여 윈도처럼 소스코드가 공개되지 않은 OS나 애플리케이션의 보안 버그를 찾는데 활용
- 역공학 방지 방법으로는 실행파일의 암호화, 위조 역 어셈블, 자가수정코드 사용 등 있음
- 바이러스 연구에서 시작된 난독화는 SW의 코드를 보호하기 위한 기술로 진화중
반응형
'TechNote > 소프트웨어 공학(SW)' 카테고리의 다른 글
013. 관점 지향 프로그래밍 (Aspect Oriented Programming) (0) | 2022.10.01 |
---|---|
012. 객체 지향 (0) | 2022.10.01 |
010. 3R (Reverse Engineering, Re Engineering, Re Use) (0) | 2022.10.01 |
009. 모듈화 (0) | 2022.10.01 |
008. 소프트웨어 유지보수 (0) | 2022.09.30 |
댓글