동적링커를 사용한 삽입

요약
Tags
hook

동적링커를 사용한 삽입

  • 동적 링커의 DYLD_INSERT_LIBRARIES 지시어 사용
  • 동적링커 지시어 사용위해 별도 초기화 함수 추가 필요
notion image

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
  • 코드서명
    • ldid –S injection.dylib
  • 로딩할 동적 의존성 목록에 악성 라이브러리 추가
    • export DYLD_INSERT_LIBRARIES="./injection_dylink.dylib"
 
  • 장치가 언테더링 방식으로 탈옥된 경우라면 재부팅 시마다 인젝션을 수행함.
  • 이게 바로 Mobile Substrate 계층이 하는 일!
 

Mobile Substrate

  • Mobile Substrate는 어떤 모듈이건 스프링보드나 기타 iOS운영체제의 컴포넌트에 접근하여 코드 삽입 가능하게 해주는 프레임워크
  • launchd 매니페스트에 DYLD_INSERT_LIBRARIES 환경변수 추가
    • /Library/MobileStrate/MobileSubstrate.dylib
    • 재부팅 될 때마다 감염된 라이브러리를 로딩
    • 공격자의 페이로드가 매번 앱에 재삽입됨.