

boko.py는 macOS용 애플리케이션 스캐너로, 애플리케이션 실행 파일에서 잠재적인 dylib 하이재킹 및 취약한 dylib 취약점을 검색하고 식별하며, 애플리케이션이 사용할 수 있는 스크립트 중 백도어 삽입 가능성이 있는 것도 함께 찾아냅니다. 또한 이 도구는 흥미로운 파일을 찾아서 수동으로 파일 시스템을 탐색하지 않고도 나열해줍니다. 활성 발견 기능을 사용하면 실행 파일이 dylib 하이재킹에 취약한지 더 이상 추측할 필요가 없습니다!
이 도구를 만든 이유는 Dylib Hijack Scanner가 발견한 데이터를 더 세밀하게 제어하고 싶었기 때문입니다. 대부분의 공개 스캐너는 취약한 dylib의 첫 번째 사례를 발견하면 나머지 rpath를 확장하지 않고 멈춥니다. 때때로 첫 번째 결과가 SIP로 보호된 영역 내의 존재하지 않는 파일로 확장되기도 하기 때문에, 나머지 확장 경로도 모두 얻고 싶었습니다. 이 때문에 오탐(false positive)이 발생하므로 도구는 각 항목에 확신도 필드를 할당합니다.
| 확신도 | 설명 |
|---|---|
| 확실(Definite) | 취약점이 100% 악용 가능함 |
| 높음(High) | 취약점이 주 실행 파일과 관련되고 rpath가 로드 순서에서 두 번째인 경우, 취약점이 악용될 가능성이 높음 |
| 가능성(Potential) | 이는 dylib 및 백도어 가능 스크립트에 할당되며, 확인할 가치가 있으나 악용 가능하지 않을 수 있음 |
| 낮음(Low) | 늦은 로드 순서로 인해 악용 가능성이 낮지만, 정보는 힘입니다 |
이 도구의 핵심은 Patrick Wardle(@synack)의 DylibHijack에 있는 scan.py를 기반으로 합니다.
boko 사용 방법 및 자신의 목적으로 클래스로 사용하는 방법에 대한 자세한 내용은 Wiki를 확인하세요.
boko.py [-h] (-r | -i | -p /path/to/app) (-A | -P | -b) [-oS outputfile | -oC outputfile | -oA outputfile] [-s] [-v]
활성 모드(-A)는 -p 플래그와 함께 특정 프로그램을 선택하여 사용하는 것이 좋습니다. 또한, 확실한 취약점만 찾는 경우가 아니라면 -v를 -oS 또는 -oA와 함께 사용하는 것이 좋습니다.
경고:
-i와 (-A 또는 -b) 플래그를 함께 사용하여 이 도구를 실행하는 것은 매우 권장되지 않습니다. 이 조합은 시스템의 모든 실행 파일을 한 번에 3초씩 열게 됩니다. 이로 인해 시스템이 충돌하거나 느려져도 저는 책임을 지지 않습니다. 또한 시스템에 휴면 상태의 악성코드가 있다면 이 도구가 실행시킬 수 있습니다. Xcode가 설치된 경우 /Applications 전체 디렉토리를 스캔하지 않는 것을 권장합니다. 시간이 매우 오래 걸리기 때문입니다.
python -m pip install psutil| 인수 | 설명 |
|---|
| -h, --help | 이 도움말 메시지를 표시하고 종료 |
| -r, --running | 현재 실행 중인 프로세스 확인 |
| -i, --installed | 설치된 모든 애플리케이션 확인 |
| -p /file.app | 특정 애플리케이션 확인 (예: /Application/Safari.app) |
| -A, --active | 발견된 실행 파일 바이너리를 실행하여 하이재킹 가능한 dylib를 능동적으로 식별 |
| -P, --passive | 파일 헤더만 보고 검사 수행 (기본값) |
| -b, --both | 두 가지 취약점 테스트 방법 모두 수행 |
| -oS outputfile | 표준 출력을 .log 파일로 출력 |
| -oC outputfile | 결과를 .csv 파일로 출력 |
| -oA outputfile | 결과를 .csv 파일과 표준 로그로 출력 |
| -s, --sipdisabled | 시스템에서 SIP가 비활성화된 경우 사용하여 일반적으로 읽기 전용인 경로를 검색 |
| -v, --verbose | 스크립트 실행 중 모든 결과를 상세 모드로 출력, 이 옵션이 없으면 확실(Definite) 확신도 취약점만 콘솔에 표시 |