
Frida 기반의 웹 GUI를 갖춘 런타임 모바일 애플리케이션 분석 툴킷, Python으로 작성됨.
/ | \ ____ __ __ ______ ____
/ ~ \/ _ \| | \/ ___// __ \
\ Y ( <_> ) | /\___ \ ___/
\___|_ / \____/|____//____ >\___ >
\/ House \/ \/
동적 모바일 분석 도구
연락처: [email protected]
House: Frida 기반, Python으로 작성된 웹 GUI를 갖춘 런타임 모바일 애플리케이션 분석 툴킷입니다. 동적 함수 후킹 및 인터셉팅을 구현하여 모바일 애플리케이션 평가를 돕고, Frida 스크립트 작성을 최대한 간단하게 만드는 것을 목표로 합니다.
git clone https://github.com/nccgroup/house
cd house
pip3 install -r requirements.txt
pip3 install pipenv
pipenv --python=/usr/bin/python3 install
pipenv --python=/usr/bin/python3 shell
python3 app.py <PORT>
# or:
mkvirtualenv --python=/usr/local/bin/python3 house
workon house
pip install -r requirements.txt
python app.py <PORT>
# or: (only for Mac OS)
git clone https://github.com/nccgroup/house
cd house
pip3 install -r requirements.txt
pip3 install pipenv
pipenv --python=/usr/local/bin/python3 install
pipenv --python=/usr/local/bin/python3 shell
python3 app.py <PORT>
기본적으로 House는 http://127.0.0.1:8000에 바인딩됩니다.
House 기능의 개요를 보려면 사용자 매뉴얼을 방문하여 자세한 내용을 확인하세요.


Note: /dex/jar 함수 후킹을 위해 Frida 버전을 >= 12.8.3으로 업데이트하세요.
이 섹션에서는 House의 기본 사용법을 설명하기 위한 작은 예제를 제공합니다. 데모 케이스는 작은 테스트 안드로이드 애플리케이션 com.ha0k3.overloads을 대상으로 수행됩니다.
Android 기기가 USB를 통해 연결되어 있고 Frida 서버가 기기에서 실행 중인지 확인하세요. 다음 명령어를 사용하여 Frida 서버가 성공적으로 실행되었는지 확인합니다: frida-ps -U.
app.py를 실행하여 House 애플리케이션을 시작합니다: python app.py <PORT>.
브라우저를 열고 http://127.0.0.1:PORT로 이동합니다.
페이지에 기기 정보가 표시되는지 확인하고, 표시되지 않으면 Refresh 버튼을 클릭하거나 애플리케이션과 Frida 서버를 다시 시작하세요.


sideload를 지원합니다. 현재 Stetho 사이드 로딩을 지원하며, UI, 저장소 등을 더 쉽게 검사할 수 있습니다.





스크립트 렌더링 및 함수 추적

동적으로 로드된 dex/jar 파일의 함수 후킹

미니 스크립트 옵션

히스토리 스크립트 관리

House를 통해 연구원들은 대상 함수에 전달되는 인수를 동적으로 변경하고 전달할 수 있습니다.

때때로 House는 인수 정보를 완벽하게 파싱하지 못할 수 있습니다. 예를 들어, 인수에 특수 유형이 있을 수 있습니다. 예제 앱에서는 사용자 정의 객체를 인수로 받는 isLit 함수를 구현했습니다. 이러한 상황을 해결하기 위해 House는 간단한 "REPL"을 제공합니다. 보안 연구원들은 REPL에 Frida 스크립트를 동적으로 입력하고 함수 동작을 수정할 수 있습니다.

House는 테스트를 더 쉽게 하기 위해 여러 REPL 함수를 제공합니다:
inspectObject(obj)는 java.lang.reflect를 사용하여 객체 내의 필드 정보를 검사합니다.setRetval(ret)는 매개변수를 받아 원래 반환값의 생성자를 사용하여 올바른 반환 유형으로 캐스팅하려고 시도합니다.getStackTrace()는 스택 트레이스를 출력합니다.
Note: 생성자 메서드 후킹/인터셉트의 경우 메서드 이름으로 $init을 입력하세요.
House를 작동시키려면 다음이 필요합니다:
또한 Frida 서버와 House 모두 다시 시작해 보세요. 그래도 작동하지 않으면 이슈를 제출해 주세요.
여러 USB 기기가 연결된 경우 자주 발생합니다. 대상 애플리케이션을 다시 시작해 보세요.
House는 Frida 버전 12.8.6을 사용하여 테스트되었습니다. 다른 버전에서는 문제가 있을 수 있습니다. 또한 frida-python이 frida-server 버전과 일치하는지 확인하세요. 그래도 작동하지 않으면 생성된 Frida 스크립트를 수동으로 실행하여 작동하는지 확인해 보세요.
House에 영감을 준 다음 오픈 소스 프로젝트에 특별히 감사드립니다:
House에 대해 더 궁금한 점이 있거나 확장에 도움을 주고 싶다면 언제든지 연락주세요:
또는 이메일을 보내주세요: Hao Ke