
안전하고, 통합된, 강력하며 확장 가능한 Rust Android 분석기
보안, 통합, 강력하고 확장 가능한 Rust Android Analyzer
SUPER는 Windows, MacOS X 및 Linux에서 사용할 수 있는 명령줄 애플리케이션으로, 취약점을 찾기 위해 .apk 파일을 분석합니다. 이를 위해 APK를 압축 해제하고 일련의 규칙을 적용하여 취약점을 탐지합니다.
하지만 왜 새로운 분석기를 만들었을까요? MobSF, Qark, Androbugs…로 충분하지 않을까요? 글쎄요, 우리는 충분하지 않다고 생각합니다. 이들 모두는 우리가 해결하고자 하는 두 가지 주요 문제점이 있습니다. Java 또는 Python으로 작성되었고, 쉽게 확장할 수 없습니다. 이들은 Android 분석에 직접 종사하는 기업이 사용하기 위한 것이 아니며, 그런 기능을 우선시하지 않습니다.
우리의 접근 방식은 다양한 방법으로 이러한 문제를 해결합니다. 먼저 프로그래밍 언어로 Rust를 사용하기로 결정했습니다. Mozilla 재단에서 공개적으로 개발한 이 언어는 정규 표현식, 파일 등과 작업할 수 있는 많은 유틸리티를 제공하며, 가장 중요한 것은 JVM 또는 JIT 컴파일러에 의존하지 않는 안전한 소프트웨어를 만들 수 있게 해줍니다. Rust를 사용하면 스택 오버플로, 세그멘테이션 오류 등이 직접적으로 발생하지 않으며, 이는 보안 중심 애플리케이션에서 합리적입니다. 또한 효율적인 분석을 수행할 수 있는 충분한 성능을 제공하여 대량 자동화 옵션을 제공합니다. 이는 Rust의 제로 비용 추상화 덕분이며, C/C++에만 필적하는 효율성을 제공합니다.
둘째, 소프트웨어를 100% 확장 가능하게 만들기로 결정했습니다. 모든 규칙은 rules.json 파일에 집중되어 있으며, 각 회사나 테스터가 자신에게 필요한 분석을 위해 자체 규칙을 만들 수 있습니다. 또한 모듈식이므로 새로운 개발이 쉽게 새로운 기능을 추가할 수 있습니다. 마지막으로 결과 보고서를 위한 템플릿 시스템을 통해 사용자는 보고서를 개인화할 수 있습니다.
또한 HTML 보고서에서 직접 훌륭한 코드 검토 도구를 제공하여 누구나 생성된 코드를 구문 강조 표시로 검색할 수 있어 더 나은 취약점 분석이 가능합니다.
Windows(8.1+), Linux 및 MacOS X 용 다운로드 페이지에서 일부 바이너리를 출시했습니다. 현재로서는 64비트 패키지만 있습니다. 32비트 시스템에서 SUPER를 사용해야 하는 경우 소스에서 SUPER를 컴파일해야 합니다. 이를 위해서는 rustup.rs을 사용하여 Rust를 설치해야 합니다.
참고: 실행하려면 Java 1.7+가 필요합니다.
SUPER는 사용하기 매우 쉽습니다. 원하는 .apk를 downloads 폴더에 다운로드하고(필요한 경우 해당 폴더 생성) 프로그램 실행 시 이름을 인수로 사용합니다. 실행 후 해당 애플리케이션 이름으로 results 폴더에 자세한 보고서가 나타납니다. 몇 가지 사용 옵션이 있습니다:
USAGE:
super [FLAGS] [OPTIONS] <package>
FLAGS:
--bench Show benchmarks for the analysis
--force If you'd like to force the auditor to do everything from the beginning
-h, --help Prints help information
--html Generates the reults in HTML format
--json Generates the reults in JSON format
--open Open the report in a browser once it is complete
-q, --quiet If you'd like a zen auditor that won't output anything in stdout
-a, --test-all Test all .apk files in the downloads directory
-V, --version Prints version information
-v, --verbose If you'd like the auditor to talk more than necessary
OPTIONS:
--dex2jar <dex2jar> Where to store the jar files
--dist <dist> Folder where distribution files will be extracted
--downloads <downloads> Folder where the downloads are stored
--jd-cmd <jd-cmd> Path to the jd-cmd file
--min-criticality <min_criticality> Set a minimum criticality to analyze (Critical, High, Medium, Low)
--results <results> Folder where to store the results
--rules <rules> Path to a JSON rules file
--template <template> Path to a results template file
-t, --threads <threads> Number of threads to use, by default it will use one thread per logical CPU core
ARGS:
<package> The package string of the application to test
누구든지 SUPER에 기여할 수 있습니다. 진행 방법에 대한 안내는 SUPER 기여 지침을 확인하세요.
이 프로그램은 자유 소프트웨어입니다. 자유 소프트웨어 재단(Free Software Foundation)이 발행한 GNU 일반 공중 사용 허가서(GNU General Public License) 버전 3 또는 (선택에 따라) 이후 버전의 조건에 따라 재배포 및 수정할 수 있습니다.