[소프트웨어 공학] SRE - ①

양현지·2023년 5월 18일
4

소프트웨어공학

목록 보기
2/11
post-thumbnail

0. 개요

SRE (소프트웨어 역공학)
: SW를 decompile/deassemble을 통해 분석하는 과정

1. SRE

= reversing = reverse code engineering

SW를 검증하는 과정에 사용하거나/malware를 분석하는 데에 쓰일 수 있음 (for good)

반면에, 사용 제한을 제거(crack)하거나, SW의 취약점을 분석, 치팅 등 (for bad)
(SRE를 통해 SW의 취약점을 발견하고 공격을 수행)

  • Rever engineer (공격자로 가정) & exe만 가지고 있다고 가정 (no source doe)
    => SW를 이해하고 수정(자신의 목적대로)

2. SRE Tools

from exe(binary) to analysis

1) Disassembler

: binary 파일을 assembly language 변환
but, 정확하지 않을 때도 있음
=> ★ 다시 assemble해서 exe 만드는 것은 현실적으로 불가

Why?
missing point가 존재

2) Debugger

: 단계별 코드 이해하는 데 사용

능력있는 개발자는 디버거의 활용 능력이 뛰어남

★ Debugger는 왜 필요할까?

  • 코드 분석
    1) 정적 분석 : 모든 코드(static한 상태)를 보는 것
    2) 동적 분석 : 실행해보면서 보는 것 (braekpoint찍어가면서, test case 넣어 가면서)

    둘의 목적이 다름, 정적 분석을 통해 모든 소스 코드를 볼 수 없음 + 분기점을 모두 고려하며 분석할 수 없기 때문에 둘은 같이 수행 (둘 다 수행할 수 있어야함)

3) Hex Editor ★

: 16진수 편집기, "binary file 자체를 수정"하여 다시 exe로 fetch 할 수 있음

=> 이러한 Tools를 사용해 SW cracking

3. Use of SRE

1) Skills of SRE

그렇다면 SRE를 위해 어떤 스킬이 필요할까?

  • able to read assembly code
  • Tools 사용법
  • PE(binary file fmt)에 대한 지식
  • ☆인내심☆

2) Simple Usage of SRE

  • idsassembler(IDA pro)와 hex editor를 사용해 역공학 공격을 수행하는 예시를 확인해보자.

① 프로그램을 실행하자 "Serial Number"를 입력받는다
(공격자Trudy는 Serial Number를 모름, 이 input과정을 뚫고자 함)

② IDA Pro를 사용해 disassebmle

  • 어셈블리 코드에 주석으로 "Serial Number"가 존재
    => S123N456 인가보네?

3) Further Usage of SRE

※ 참고 (어셈블리어를 꽤나 까먹어서 복기 차원)

mov eax, 10       ; eax에 10을 저장
mov ebx, 0        ; ebx에 0을 저장

test eax, eax     ; eax와 eax를 AND 연산하여 플래그 레지스터 설정
jz zero_label     ; ZF가 설정되어 있으면 zero_label로 분기

; ZF가 설정되어 있지 않은 경우에 실행되는 코드
mov ebx, 1        ; ebx에 1을 저장

zero_label:
; ZF가 설정되어 있는 경우에 실행되는 코드

① IDA Pro를 사용해 disassebmle

  • test eax, eax
    => eax가 0일때만 '0'을 반환
    => test의 결과가 0일때만 jz가 true가되어 loc_401045만큼 이동

  • 그렇다면 test가 항상 참이 되어 분기하려면?
    test eax, eax 대신
    xor eax, eax로 변경하면 eax 값과 무관하게 '0'을 반환

② hex editor를 통해 변경

③ 어떤 "Serial Number"를 입력해도 참이 되도록 변경!

※ How to Prevent SRE Attack?
SRE - ② 에서 다루도록 한다.

0개의 댓글