후킹 : 특정 함수 코드를 가로채서 원하는 행위를 한 뒤 원래의 코드로 돌려주는 기법
안드로이드(ARM)에서는 어떠한 방식으로 후킹이 작동되는가?
리눅스 기반이므로 리눅스에서 사용되던 후킹 기술과 유사.
1. PLT (Procedure Linkage Table) hook : a 가져오라했는데 b 가져오게 하는거 (동적 링킹을 사용할 때)
2.GOT (Global Offset Table) hook : PLT랑 비슷한데, 쟤( PLT )는 테이블을 변경하는거고, 얘는 아예 쌩으로 바꾸는거.
3.Inline Hook (Trampoline Hook): 코드 내의 특정 지점에 훅을 설치하여, 해당 지점의 실행 흐름을 변경하는 기술
4.Method Swizzling (Method Hooking): 런타임에 특정 메소드의 구현을 변경.
(주로 Java Reflection 또는 Kotlin의 동적 기능을 활용)
예를 들어, Android 앱에서 onCreate 같은 특정 메소드의 동작을 후킹하여 추가적인 로직을 수행할 수 있음
5.Code Injection: 소스 코드에 직접 코드를 추가. 걍 메소드 후킹이랑 거의 비슷.
6. 대망의 Dynamic Binary Instrumentation (DBI) :
- 런타임에 apk의 bin코드에 삽입되어 동작하는 도구를 이용하여 apk의 행동을 모니터링하고 변경.
- Frida와 같은 도구가 이 카테고리에 속하며, 이를 사용해 apk 의 함수 호출을 가로채거나, 변수 값을 변경하고, 새로운 로직을 삽입할 수 있음.
< DBI과정 >
DBI를 수행할 대상 프로그램을 선택합니다.
DBI 도구 (예: Frida, DynamoRIO)를 준비합니다.
Instrumentation:
프로그램의 실행 중에 DBI 도구를 사용하여 바이너리 코드에 동적으로 코드 조각을 삽입합니다.
이 코드 조각은 특정 함수 호출을 감시하거나, 변수의 값 변화를 추적할 수 있습니다.
실행 및 모니터링:
수정된 프로그램을 실행하면서, 삽입된 코드가 특정 조건이나 이벤트에 반응하여 추가적인 작업을 수행합니다.
이를 통해 프로그램의 내부 동작을 실시간으로 모니터링하고 분석할 수 있습니다.
분석 및 대응:
DBI를 통해 수집된 데이터를 분석하여 프로그램의 동작을 이해하거나, 보안 취약점을 찾아냅니다.
'개발 과 보안 > 암호학의 모든것' 카테고리의 다른 글
※번외 RSA에 대한 가능한 공격들 (0) | 2023.12.13 |
---|---|
RSA 비대칭 암호 (0) | 2023.12.13 |
차분분석(Differential Cryptanalysis) (1) | 2023.10.24 |
Shannon의 합성암호 개념 (1) | 2023.10.19 |
현대 대칭키 암호_구성요소[ 순환 이동 & Swap ] (0) | 2023.10.19 |