
mobileAudit v3.2.0
Android APK에 대한 SAST 및 악성코드 분석을 수행하는 Django 애플리케이션
모바일 감사

MobileAudit - Android 모바일 APK를 위한 SAST 및 악성코드 분석
Android APK 내에서 정적 분석을 수행하고 악성 콘텐츠를 탐지하는 Django 웹 애플리케이션입니다. 이 프로젝트는 앱 메타데이터를 추출하고, 소스 코드의 취약점을 스캔하며, 결과(SAST 발견 사항, 모범 사례, 인증서 정보, 문자열, 데이터베이스, 파일, VirusTotal 등)를 탐색 가능한 대시보드와 API로 통합합니다.
DeepWiki 문서: https://deepwiki.com/mpast/mobileAudit

각 스캔에는 다음 정보가 포함됩니다:
- APK 정보 및 분석: 애플리케이션 정보, 보안 정보, 구성 요소, 인증서 정보, 문자열, 데이터베이스, 파일
- CWE 및 Mobile Top 10 매핑으로 분류된 SAST 발견 사항
- 토글 가능한 규칙이 있는 패턴 엔진
- MalwareDB 및 Maltrail에 대한 악성 도메인 검사
- VirusTotal (API v3) 조회 및 선택적 업로드 (기본적으로 비활성화됨)
- 발견 사항 내보내기를 위한 DefectDojo 통합 (API v2) (선택 사항)
- Swagger 및 ReDoc을 포함한 API, 토큰 기반 인증
- 스캔 보고서를 PDF로 내보내기
- 오탐지 분류를 통해 발견 사항 편집 가능

쉬운 접근을 위해 스캔 페이지 왼쪽에 사이드바가 있습니다:

구성 요소

- db: PostgreSQL 3.11.5
- nginx: Nginx 1.23.3
- rabbitmq: RabbitMQ 3.11.5
- worker: Celery 5.2.2
- web: Mobile Audit 앱 (Django 3.2.16)
Docker 기본 이미지
이미지는 python buster를 기반으로 합니다. Docker Hub 이미지 링크
| 이미지 | 태그 | 기반 |
|---|---|---|
| mpast/mobile_audit | 3.0.0 | python:3.9.16-buster |
| mpast/mobile_audit | 2.2.1 | python:3.9.7-buster |
| mpast/mobile_audit | 1.3.8 | python:3.9.4-buster |
| mpast/mobile_audit | 1.0.0 | python:3.9.0-buster |
주요 기능
- 손쉽고 재현 가능한 배포를 위해 Docker에서 실행
- 상세 APK 정보 추출 및 표시
- CWE 및 Mobile Top 10 위험에 매핑되는 SAST 규칙
- 악성코드 지표 탐지 (MalwareDB / Maltrail)
- VirusTotal 및 DefectDojo 통합 지점 (선택 사항)
- 스캔 결과를 PDF로 내보내기
- 사용자 인증, 관리 및 토큰 기반 API
- Swagger 및 ReDoc 문서
- 프로덕션을 위한 TLS 지원 Nginx 구성
계획 / 희망 목록
- LDAP 통합
- Markdown / CSV로 내보내기
- 동적 페이지 다시 로드 개선 (진행 중)
패턴
- 이 앱은 APK 내에서 잠재적인 취약점과 악성 스니펫을 탐지하는 규칙/패턴 엔진을 포함합니다.
- 패턴은 구성 가능하며
/patternsUI에서 활성화/비활성화할 수 있습니다. - 참고: 일부 하드코딩된 패턴은 apkleaks 프로젝트에서 파생되었습니다: https://github.com/dwisiswant0/apkleaks

모델
애플리케이션은 스캔 정보의 각 엔터티에 대한 모델을 생성하여 각 APK에 대한 최상의 결론을 도출하기 위해 관계를 만들 수 있습니다.

전체 모델 스키마를 보려면 models로 이동하세요.
설치
Docker-compose 사용:
제공된 docker-compose.yml 파일을 사용하면 개발 환경에서 로컬로 앱을 실행할 수 있습니다.
로컬 이미지를 빌드하고 로컬 Application Dockerfile에 변경 사항이 있는 경우 다음 명령으로 이미지를 빌드할 수 있습니다:
docker-compose build
그런 다음 컨테이너를 시작하려면 다음을 실행하세요:
docker-compose up
선택 사항: 분리 모드로 실행 (로그를 보지 않음)
docker-compose up -d
애플리케이션이 시작되면 http://localhost:8888/로 이동하여 대시보드에 액세스하여 테스트할 수 있습니다.

또한 docker-compose.prod.yaml을 사용하는 TLS 버전이 포트 443에서 실행됩니다.
사용하려면 다음을 실행하세요
docker-compose -f docker-compose.prod.yaml up
그런 다음 https://localhost/로 이동하여 대시보드에 액세스하여 테스트할 수 있습니다.
자세한 내용은 TLS를 참조하세요.
컨테이너를 중지하고 제거하려면 다음을 실행하세요
docker-compose down
API v1
Swagger 및 ReDoc을 사용한 REST API 통합.
사용법
- 인증 및 토큰 획득을 위한 엔드포인트:
/api/v1/auth-token/

- 인증된 후 모든 요청에 헤더 사용:
Authorization: Token <ApiKey>
Swagger

ReDoc

엔드포인트
/swagger.json에서 API 사양의 JSON 보기/swagger.yaml에서 API 사양의 YAML 보기/swagger/에서 API 사양의 swagger-ui 보기/redoc/에서 API 사양의 ReDoc 보기
TLS
사전 요구 사항
- 인증서를
nginx/ssl에 추가 - 자체 서명 인증서를 생성하려면:
openssl req -x509 -nodes -days 1 -newkey rsa:4096 -subj "/C=ES/ST=Madrid/L=Madrid/O=Example/OU=IT/CN=localhost" -keyout nginx/ssl/nginx.key -out nginx/ssl/nginx.crt
Nginx 구성
- TLS - 포트 443:
nginx/app_tls.conf - 표준 - 포트 8888:
nginx/app.conf
Docker 구성
기본적으로 docker-compose.yml에는 8888 포트를 사용하는 구성의 볼륨이 있습니다.
- ./nginx/app.conf:/etc/nginx/conf.d/app.conf
프로덕션 환경에서는 포트 443을 사용하는 docker-compose.prod.yaml을 사용하세요.
- ./nginx/app_tls.conf:/etc/nginx/conf.d/app_tls.conf
환경 변수
모든 환경 변수는 .env 파일에 있으며, 필요한 모든 변수가 포함된 .env.example이 있습니다. 또한 app/config/settings.py에 수집되어 있습니다.
로컬 개발을 위한 권장 최소 .env 조정
- SECRET_KEY, DB 자격 증명 및 관리자 사용자 자격 증명을 설정합니다.
- 유효한 API 키와 사용 가능한 서비스가 없으면 VirusTotal / DefectDojo를 비활성화된 상태로 두십시오.
기여
기여하고 싶다면 기여를 참조하세요.