
Hooker는 Android 애플리케이션의 동적 분석을 위한 오픈소스 프로젝트입니다. 이 프로젝트는 대상 애플리케이션에서 발생하는 모든 API 호출을 자동으로 가로채고 수정하는 데 사용할 수 있는 다양한 도구와 애플리케이션을 제공합니다.
Hooker는 안드로이드 애플리케이션의 동적 분석을 위한 오픈소스 프로젝트입니다. 이 프로젝트는 대상 애플리케이션이 수행하는 모든 API 호출을 자동으로 가로채고 수정하는 데 사용할 수 있는 다양한 도구와 애플리케이션을 제공합니다.
Android Substrate 프레임워크를 활용하여 이러한 호출을 가로채고 모든 컨텍스트 정보(매개변수, 반환 값 등)를 집계합니다. 수집된 정보는 ElasticSearch 또는 JSON 파일에 저장할 수 있습니다.
또한 애플리케이션 집합이 수행하는 모든 API 호출을 수집하는 분석 실행을 자동화하는 Python 스크립트 세트도 제공됩니다.
Android-Hooker는 Substrate 프레임워크에 의존하는 개념 증명입니다. 즉, 장치에 Substrate가 올바르게 설치되지 않으면 Hooker가 작동할 수 없습니다. 현재까지 저자는 Android 4.1 및 4.2 버전의 장치에 Substrate를 성공적으로 설치했습니다. 더 높은 버전에서 Substrate를 설치하는 방법을 알고 계시다면 [email protected]로 이메일을 보내주시면 프로젝트에 통합해 드리겠습니다.
Hooker는 여러 모듈로 구성됩니다:
저자는 Debian 64비트 시스템을 사용하여 Hooker를 개발했으며, 이에 따라 잘못된 경로나 매개변수로 인해 다른 시스템에서 제대로 실행되지 않을 수 있습니다. 이러한 비호환성을 식별하는 데 도움을 주시면 감사하겠습니다. 사용 중 오류가 발생하면 버그 트래커에 이슈를 보고해 주세요.
Hooker를 사용하려면 다음이 설치된 서버가 하나 이상 필요합니다:
이 단계는 ElasticSearch 설치와 관련됩니다. ElasticSearch 온라인 문서를 다운로드하고 따라주세요: http://www.elasticsearch.org/overview/elkdownloads/. 단일 호스트에 elasticsearch를 설치하거나 elasticsearch 노드 클러스터를 배포할 수 있습니다.
Android 번들은 여기에서 다운로드할 수 있습니다. Hooker 설치 스크립트를 사용하려면 다음을 수행해야 합니다:
ANDROID_HOME 환경 변수를 설정했는지 확인: $ export ANDROID_HOME=/path/to/your/sdk/folder
SDK 관리자에서 SDK API를 다운로드합니다.
필요한 모든 종속성을 빌드하고 설치하는 데 도움이 되는 설치 스크립트가 제공됩니다. 이 스크립트를 사용하려면 다음 종속성이 있는지 확인하세요:
# openjdk-7-jdk, ant, python-setuptools (just apt install them)
모든 준비가 완료되면 Hooker 루트 디렉토리에서 설치 스크립트를 실행하세요:
$ ./install.sh
$ $ANDROID_HOME/tools/android list targetcd tools/emulatorCreator && python HookerInstaller.py -s SDK_PATH -a Hooker_test -t ANDROID_TARGET -d AVD_DIRECTORYMenu > System Settings > Security > Screen lock > None에뮬레이터 준비 방법 동영상은 여기에서 확인할 수 있습니다.
elasticsearch 호스트가 android 에뮬레이터와 다른 호스트에 있는 경우 네트워크를 통해 트래픽을 리디렉션해야 합니다. 이를 위해 socat을 사용할 수 있습니다:
$ socat -s -v TCP4-LISTEN:9200,fork,ignoreeof,reuseaddr TCP4:192.168.98.11:9200,ignoreeof
OpenGLES 에뮬레이션 관련 오류(Could not load OpenGLES emulation library)가 발생하면 ldconfig를 편집해야 합니다(루트 권한):
# echo "/path/to/your/sdk/tools/lib" > /etc/ld.so.conf.d/android.conf
# ldconfig
특정 애플리케이션을 분석하기 위해 수동 실험을 실행하는 방법에 대한 데모는 이 동영상을 확인하세요.
실제 장치에서 Hooker를 사용하려면 먼저 전용 README를 읽어주세요.
hooker_xp/sampleManualAnalysis.conf 파일을 복사하세요.hooker_xp/sampleAutomaticAnalysis.conf 파일을 복사하세요.*RealDevice* 구성 파일 중 하나를 복사하세요.Hooker는 이벤트 저장에 ElasticSearch를 사용하고, 이를 분석하기 위한 프론트엔드로 Kibana를 사용합니다. 애플리케이션 분석을 돕기 위해 tools/kibana-dashboard 디렉토리에 Kibana 대시보드 예제를 제공했습니다. 이를 사용하려면 먼저 실험을 실행한 후 kibana-export.json 파일을 가져와야 합니다. 대시보드를 가져오려면 URL http://localhost:5601로 이동하여:
Settings -> Objects로 이동,Import 클릭,Python 실험 스크립트는 hooker_xp 디렉토리에 있습니다:
$ cd hooker_xp && python hooker_xp.py -c yourAnalysisConfigurationFile.conf
Python 로그에 진행 상황이 표시됩니다.
이 작업을 개선하는 데 도움을 주시면 기쁠 것입니다. GitHub 기능을 사용하여 버그 수정 및 개선 사항을 제공해 주세요.
Hooker 프로젝트는 Georges Bossert와 Dimitri Kirchner가 시작했습니다. 두 사람 모두 프랑스 IT 보안 회사인 AMOSSYS에서 근무하고 있습니다 http://www.amossys.fr.
이 소프트웨어는 GPLv3 라이선스에 따라 사용이 허가됩니다. 전체 라이선스 텍스트는 최상위 배포 디렉토리의 LICENSE 파일을 참조하세요.