Reverse Engineering

공부/보안 2021. 5. 14. 22:21
반응형

Revere Engineering(Backwards, back engineering)

 

Forward Engineering

요구사항분석 -> 설계 -> 구현

요구사항분석 <(요구사항 복구)- 설계 <(설계 복구)- 구현

역공학은 이를 역으로 복구하는 것을 reverse engineering이라 함

  • 오래된 프로그램을 유지보수해야할 때, 분석하여 설계원칙과 요구사항을 알아내야하므로 역공학을 사용하기도 함

 


예시) 안드로이드 컴파일 과정은 Forward Engineering의 일부임

소스코드를 자바로 작성(.java) ->컴파일 -> java Bytecode ->Proguard(최적화, 난독화) -> dex(davik executable)로 변환 -> android runtime에 의해서 기계어로 번역되어 자동

 

.java ->java Bytecode (.class) -> minimized Bytecode -> Dex Bytecode (.dex) -> Machine code

최신 안드로이드에선 Android Runtime 사용(native code 로 동작, 성능상의 이유), kotlin도 사용

안드로이드 역공학

apk = android application package (dex, resource 등 파일이 들어가 있음)

de-complier를 이용하여 dex는 smali (중간 어셈블리 언어)로 바뀌어짐,

asset = resource관련

META-INFO = sign관련

smali to java를 이용하여 smali코드를 java코드로 바꾸어줌

따라서 java 소스코드를 볼 수 있다.


 

 

역공학은 주로 어떤 정보가 이용가능 하지 않을 때(오래전에 만들었거나 소스코드가 공개되지 않을때), 실행코드로부터 놓친 지식이나, 아이디어, 설계 원리를 파악하기 위해 수행한다.

시스템의 일부로 어떤 기능, 어떤 설계원리가 있는지 분석하는 과정이라 할 수 있다.

악성코드 분석가들은 역공학이 필요 => 악성코드는 소스가 공개되어 있지 않기 때문

 

 

 

Software Reverse Engineering

sw뿐만아니라 hw에도 적용될 수 있음

  • 프로그램을 분해해서 그 내부 구조를 파악 하는 것.
  • 기술과 컴퓨터, sw개발에 대한 이해가 필요함
  • code breaking, puzzle solving, programming, logival analysis 필요

 

Binary reverse engineering

  • 소스코드를 사용할 수 없을 때 사용하는 기법
  • reverse code engineering

 

역공학이 필요한 경우

  • 연구목적
  • 취약점을 분석하기 위해
  • 이미 배포되어 사용되는 프로그램들에 패치를 해야 할 때(binary level에서 패치할때 필요함, 보안과 관련잇음)
  • 프로그램 내의 비밀 정보를 획득하기 위해(공격자 관점)
  • 프로토콜을 분석하기 위해 (공격을 위한 정보 탐색)
  • 보호기법을 우회하기 위해 (copy 목적)

 

역공학 응용

1. 보안에 관련해서 사용

  • 악의적인 프로그램의 binary auditing
  • 암호 알고리즘 역공학 => 연구자들이 암호화 제품을 평가해야함(얼만큼 안전한가).
  • Digital Right Management (DRM) - 디지털 컨텐츠 권리 관리, 저작권 관리

(비용을 지불한 만큼만 사용할 수 있게)

(cracker들을 copy protection 기법을 우회하려 함)

 

1.1 악성 프로그램

  • 멀웨어 작성자, 분석가 둘다 역공학함
  • 멀웨어 작성자 => os나 다른 sw의 취약점을 파악하여, 악성코드를 감염(전파)시키려함.

(바이러스는 양성 프로그램에 기성하여 돌아감, 매크로 프로그램을 조작시켜 자신을 전파 시켜야함)

(악성코드는 자기자신을 전파시키기 위해 os나 다른 sw의 취약점을 이용함 ex)Morris Internet Worm)

  • anti-virus 개발자

악성코드를 분해하여 분석하기 위해 => 치료가능

 

1.2 Auditing Program Binaries

소스코드를 사용할 수 없는 경우 & 중요한 프로그램일 경우

중요한 프로그램의 취약점을 찾을 때

ex) bug bounty, 모의 해킹

 

1.3 DRM

불법 복제 방지위해 copy protection 기술을 사용함.

DRM도 그와 유사 (DRM은 적용되는 컨텐츠가 주로 디지털 미디어 컨텐츠임)

공격자들은 DRM기술을 우회하기 위해 역공학을 사용함.

 

2. sw 개발에서

  • sw 품질 향상, 평가하기 위해
  • 유지보수를 위해

 

Tool or Methods

  • disassembler, decompiler => 정적 분석 (실행할 필요 X)

(IDA Pro, JADAX(Dex to Java Decomplier), dex2jar, apktool)

(ILDasm (disassembler for MS Intermediate language, MSIL)

  • Debugger ( 동적 코드 분석 )

(JEB)

  • Hex Editor

binary(실행 파일 분석)

  • PE Analyzer

MS windows는 PE포맷을 사용 (안드로이드는 Dex 사용)

728x90
반응형
블로그 이미지

아상관없어

,