
일반적인 안드로이드 뱅커 악성코드를 정적으로 언패킹합니다.
Kavanoz (터키어로 항아리)는 일반적인 Android 뱅커 악성코드를 정적으로 언패킹하는 도구입니다. 패킹된 악성코드에서 안드로이드 에뮬레이터를 실행하지 않고 페이로드를 가져오고 싶었던 적이 있나요? 저도 그런 적 없습니다 :) 하지만 어쨌든 도구가 여기 있습니다.

pip install kavanoz
소스에서 설치하려면 저장소를 클론하고 -e 옵션으로 편집 가능(editable) 설치를 하세요. 즉, 프로젝트에서 플러그인을 편집하거나 새로 추가하면 재설치 없이 사용됩니다.
git clone https://github.com/eybisi/kavanoz.git
cd kavanoz
pip install -e .
명령줄에서
kavanoz /tmp/filepath
-vvv 매개변수를 사용하여 상세 로그를 출력할 수 있습니다. (플러그인 디버깅에 유용합니다)
Python 라이브러리로 사용
from kavanoz.core import Kavanoz
from kavanoz import utils
utils.set_log("DEBUG")
k = Kavanoz(apk_path="tests/test_apk/coper.apk")
for plugin_result in k.get_plugin_results():
if plugin_result["status"] == "success":
print("Unpacked")
print(plugin_result)
break
kavanoz를 편집 가능한(-e) 방식으로 설치했는지 확인하세요. 새 플러그인을 추가하려면 loader 폴더에 새 파일을 만드세요. unpack_plugin.py 파일의 Unpacker 클래스를 확장하세요. 구현 내용으로 start_decrypt 함수를 정의하세요.
def start_decrypt(self, apk_object: APK, dexes: "list[DEX]"):
플러그인에서 조기 종료하려면 다음 함수를 추가하세요.
def lazy_check(self,apk_object:APK, dexes: "list[DEX]"):
추출에 성공하면 추출된 파일 경로를 self.decrypted_payload_path에 할당하세요. unpacker 클래스의 헬퍼 함수를 사용할 수 있습니다:
PR을 열기 전에 python -m unittest를 실행하세요. 테스트 apk 파일을 얻으려면 git lfs pull 명령을 사용하세요.
dex.get_class(smali_annotation_of_class)로 클래스를 얻을 수 있습니다.self.apk_object.get_files()로 파일을 얻을 수 있습니다.application = self.apk_object.get_attribute_value("application", "name")을 사용하세요.작업할 수 있는 고유한 샘플을 제공한 apkdetect.com에게 감사드립니다.