Dexcalibur는 계측 자동화에 중점을 둔 Android 리버스 엔지니어링 플랫폼입니다. 그 특이점은 정적 분석 휴리스틱을 개선하기 위해 동적 분석을 사용하는 것입니다. 동적 계측과 관련된 지루한 작업을 자동화하는 것을 목표로합니다.
무언가를 공유하고 싶습니까, 아니면 도움이 필요합니까? 공식 채팅에 참여하십시오.
TEMERRAM- 응답을 제공하는 가장 빠른 방법
공식 문서는 여기에서 확인할 수 있습니다 (웹 사이트 - 진행중인 작업).
최신 뉴스를 참조하십시오 : http://docs.dexcalibur.org/news.html
DEXCALIBUR 데모 비디오 표시 : 데모 : 1 분 미만에서 61 가지 방법을 연결합니까? 문제가 아닙니다. (YouTube)
기여하다 !
망설이지 마세요! 기여하는 방법에는 여러 가지가 있습니다.
Doc을 설치하십시오
대안 : Docker
adb (및 적절한 경우 안드로이드 에뮬레이터)를 설치하십시오.docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashLinux 및 MacOS의 경우
NPM 설치 : Dexcalibur가 NPM ( -g 옵션)을 사용하여 Globaly를 설치 한 경우 $ dexcalibur 수행하여 Dexcalibur가 터미널에서 시작할 수 있습니다. 그렇지 않으면 $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js 로 시작할 수 있습니다.
소스에서 설치 : dexcalibur 폴더에서 $ dexcalibur 또는 $ node dexcalibur.js 실행하십시오.
Windows의 경우
NPM 설치 : 이벤트 Dexcalibur가 NPM ( -g 옵션) node <NPM_ROOT>/dexcalibur/dexcalibur.js 사용하여 Globaly를 설치하는 경우, Dexcalibur는 터미널에서 터미널에서 시작해야합니다.
소스에서 설치 : dexcalibur 폴더에서 터미널로 내려 가서 명령 node dexcalibur.js 실행하십시오.
이전 버전의 Dexcalibur를 사용하고 있습니까?
새 설치와 동일한 단계를 따르고 작업 공간 경로를 입력해야 할 때 현재 작업 공간 위치를 입력하십시오.
그냥 수행하면 :
$ npm install -g dexcalibur
기존 구성 및 작업 공간이 자동으로 감지됩니다.
다음 스크린 샷은 런타임시 XREFS 의 자동 업데이트를 보여줍니다.
실제로 가장 큰 한계는 Dexcalibur가 기본 기능 (JNI 라이브러리)을 타겟팅하는 후크의 소스 코드를 생성 할 수 없다는 것입니다. 그러나 후크를 편집하여 Frida의 인터셉터를 수동으로 선언 할 수 있습니다.
Dexcalibur가 JNI 라이브러리 또는 JNA와 같은 기본 부분을 분석하기위한 (현재) 기능을 제공하지 않는다고 가정하면 Java 부품과 관련된 기능과 제한 만 발견되었습니다.
분석 정확도는 분석의 초기 단계에서 사용되는 Android API 이미지의 완전성에 달려 있습니다. 즉, Android SDK의 Android.jar 파일에서 생성 된 DEX 파일을 사용하는 경우 Android Java API의 내부 방법, 필드 또는 클래스에 대한 일부 참조가 누락 될 수 있습니다. 예상되는 Android 버전을 실행하는 실제 장치에서 직접 추출한 "boot.oat"파일에서 분석이 시작될 때 더 나은 결과를 얻습니다.
TODO : 텍스트를 작성하십시오
TODO : 텍스트를 작성하십시오
추적 된 행동
"Run Smali (VM)"에 관련된 정적 분석기 액션은 다음 행동을 발견하고 수락 할 수 있지만 다음과 같은 행동을 추적 할 수 있습니다.
실제로, 이러한 유효하지 않은 명령의 핸들러/청취자는 지원되지 않지만 이벤트가 추적 및 렌더링됩니다.
Dexcalibur ir
VM은 분석가가 분석을 수행하는 데 도움이되는 사용자 정의 및 단순화 된 중간 표현 (IR)을 생성합니다.
Callstack 깊이 및 구성의 값에 따라 IR은 호출 된 함수에 실행되거나 명령을 포함하거나 포함 할 수 없습니다. 실행이 시도 블록으로 들어가서 계속 돌아 오지만 캐치를 절대로 절대로 돌리지 않으면 캐치 블록이 렌더링되지 않습니다. 실제로 Dexcalibur IR의 목적은 "실행 된 것"또는 "일부 기호의 값에 따라 실행할 수있는 것"만 VM 컨텍스트로 만 렌더링하는 것입니다.
Dexcalibur IR은 쓸모없는 GOTO 및 불투명 술어를 제거하여 청소 된 바이트 코드를 읽는 데 도움이됩니다. Dexcalibur IR은 2 개의 단순화 레벨로 VM에 의해 생성 될 수 있습니다.
1 레벨 IR, 2 레벨 IR을 신뢰하지 않으면 사용할 수 있습니다.
2 레벨 :
안드로이드 API 모의
TODO
세부
Smali VM은 다음 단계를 따릅니다.
VM은 어떻게 호출-* 명령을 처리합니까?
매니페스트 분석 (제한)
첫 번째 실행 전에 응용 프로그램의 Android 매니페스트가 구문 분석됩니다. 실제로, 그러한 불안한 구성에 대한 변칙은이 수준에서 실제로 감지됩니다.
Android Manifest Parsing의 유일한 목적은 다른 종류의 분석기를 채우는 것입니다.
권한 분석
매니페스트에서 추출한 모든 권한은 대상 Android API 버전의 Android 사양과 비교하여 나열되고 식별되고 비교됩니다.
Dexcalibur는 허가 목적, 최소 Android API 버전에 대한 설명을 제공합니다.
활동 분석
제공자 분석
서비스 분석
수신기 분석
네트워크 모니터링
의도 모니터링
파일 액세스 모니터링
다중 사용자 메뉴를 찾을 수 없습니까? 문제가 아니라 메뉴는 없지만 최소한의 공동 작업이 달성 될 수 있습니다.
Dexcalibur는 웹 서버를 실행합니다. 따라서 여러 사람 이이 웹 서버의 동일한 네트워크에 있고 호스트 방화벽이 잘 구성된 경우 동일한 Dexcalibur 인스턴스에서 작업 할 수있는 여러 사람이 될 수 있습니다.
실제 제한 사항은 다음과 같습니다.
기고자들에게 특별한 감사 :
더 깊이 가기 전에 :
dexcalibur --reinstall 명령을 통해 다시 설치하려고 했습니까? 아니요, 시도해보십시오. 먼저, 글로벌 설정이 <user_directory>/.dexcalibur/ 에 저장되었는지 확인하십시오.
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
다음으로 Dexcalibur Workspace의 구조가 다음과 같습니다 ( /api 폴더의 내용이 다를 수 있음).
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
USB에 연결된 물리적 장치를 사용하는 경우 Developper 모드를 사용하고 USB 디버깅이 활성화되어 있는지 확인하십시오.
가상 장치를 사용하는 경우 /splash.html 로 이동하여 Device Manager 선택하고 Connect over TCP ... 클릭하고 지침을 따르십시오. 장치의 IP 주소를 모르는 경우 Box automatic configuration 확인하여 Dexcalibur를 감지하십시오.
사용하려면 대상 장치를 등록해야합니다. 등록하는 동안 Dexcalibur는 장치 메타 데이터를 수집하고 Frida 서버의 호환 버전을 푸시합니다.
이러한 메타 데이터는 오른쪽 Frida-Server 및 Frida Gadget 대상을 선택하는 데 사용됩니다.
빨간색 느낌표가 있다면 ! 장치 목록에 라인에 나타나면 장치에서 데스크탑이 허용되지 않습니다. 아마 확인해야 할 것입니다
장치가 DeviceManager에 나열되고 online 열이 확인되면 enroll 클릭하십시오.
장치가 DeviceManager에 나열되고 online 열이 확인되면 enroll 클릭하십시오.
Dexcalibur 버전 <v0.7은 자동으로 모방 된 장치를 감지 할 수 없었고 불완전한 ADB 출력 구문 분석으로 인해 사용 할 수 없었습니다.
버전> = v0.7이므로 가상 장치가 실행되면 /splash.html 로 이동하거나 DEXCALIBUR 클릭하여 내비게이션 바로 클릭하십시오. Device Manager 버튼을 왼쪽 메뉴로 클릭하고 배열 상단의 Refresh 버튼을 클릭하십시오.
가상 장치의 ADB ID에서 시작하는 행이 있어야합니다.
먼저 대상 장치로서 등록해야합니다.
Connect over TCP ... TCP 위에 새 장치를 추가하거나 등록 된 장치를 TCP 위에 연결하십시오.
장치가 등록되지 않은 경우 TCP를 통해 등록이 수행됩니다. 어떤 경우에는 TCP에 대한 연결이 USB보다 느려집니다. 따라서 등록에 추가 시간이 걸릴 수 있습니다.
장치가 USB를 통해 등록 된 경우이 장치의 새로운 선호 전송 유형이 TCP가됩니다.
이 저장소에 풀 요청을 작성하거나 문제를 만듭니다.
Dexcalibur-Doc 저장소에서 풀 요청을 작성하십시오.
문서는 여기 (DOC 웹 사이트) 및 여기 (Wiki)에서 사용할 수 있습니다.
![]() |
|---|
| 그들은 모든 제품 <3에 대한 라이센스를 제공했습니다 |
실제로 Dexcalibur에 대한 문서 및 교육 자료는 거의 없습니다. Dexcalibur를 성공적으로 사용하여 CTF 챌린지에서이기거나 취약성을 찾는 경우 경험을 공유하는 것이 좋습니다.