동적링커를 사용한 삽입
동적링커를 사용한 삽입
- 동적 링커의
DYLD_INSERT_LIBRARIES
지시어 사용
- 동적링커 지시어 사용위해 별도 초기화 함수 추가 필요
ios 크로스컴파일
- clang -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -c ~/Downloads/injection_dylink.c -o ~/Downloads/injection_dylink.o -fPIC -arch arm64
- ld -dylib -lsystem -o ~/Downloads/injection_dylink.dylib ~/Downloads/injection_dylink.o -syslibroot $(xcrun --sdk iphoneos --show-sdk-path) lobjc
- 로딩할 동적 의존성 목록에 악성 라이브러리 추가
- export
DYLD_INSERT_LIBRARIES
="./injection_dylink.dylib"
- 장치가 언테더링 방식으로 탈옥된 경우라면 재부팅 시마다 인젝션을 수행함.
- 이게 바로 Mobile Substrate 계층이 하는 일!
Mobile Substrate
- Mobile Substrate는 어떤 모듈이건 스프링보드나 기타 iOS운영체제의 컴포넌트에 접근하여 코드 삽입 가능하게 해주는 프레임워크
- launchd 매니페스트에 DYLD_INSERT_LIBRARIES 환경변수 추가
- /Library/MobileStrate/MobileSubstrate.dylib
- 재부팅 될 때마다 감염된 라이브러리를 로딩
- 공격자의 페이로드가 매번 앱에 재삽입됨.