quark-engine

Framework d'analyse de malware Android. Détecte les comportements malveillants dans les APK grâce à un système de notation basé sur des indicateurs comportementaux, sans décompilation du code source. Android malware analysis framework. Detects malicious behavior in APKs using a scoring system based on behavioral indicators — no source code decompilation required.

↗ https://github.com/quark-engine/quark-engine

Overview

quark-engine analyzes Android APKs for malicious behavior using a scoring system. Rather than decompiling to source code, it inspects DEX bytecode for behavioral patterns (API call sequences, permissions misuse, data exfiltration) and provides a risk score. Integrates with MobSF and other mobile analysis platforms.

Installation

pip3 install quark-engine

Update rules

quark --update

Basic Analysis

Analyze an APK with all built-in rules

quark -a app.apk -s

Analyze with specific rule file

quark -a app.apk -r /usr/lib/quark-engine/quark/rules/sendLocation.json

Get summary report

quark -a app.apk -s

Full JSON report

quark -a app.apk -s -o report.json

Generate HTML report

quark -a app.apk --generate-html report.html

Rules

List all available rules

quark --list-rules
# Rules cover behaviors like:
# - Sending SMS (common in premium dialers/trojans)
# - Accessing contacts and location
# - Network exfiltration
# - Dynamic code loading
# - Root detection evasion
# - Crypto-ransomware patterns

Run single rule

quark -a app.apk -r /path/to/rule.json

Run rules from directory

quark -a app.apk -d /path/to/rules/

Rule Structure

{
    "crime": "Get SMS messages",
    "permission": ["android.permission.READ_SMS"],
    "api": [
        {
            "class": "Landroid/provider/Telephony$Sms;",
            "method": "getDefaultSmsPackage",
            "descriptor": "(Landroid/content/Context;)Ljava/lang/String;"
        }
    ],
    "score": 4,
    "label": []
}

Behavior Analysis

Check what permissions the app requests

quark -a app.apk --permission

Find hardcoded strings (URLs, keys)

quark -a app.apk --strings

Analyze specific behavior with verbose output

quark -a app.apk -r rule.json -v
# Risk scoring:
# 0-39%  — Low risk
# 40-69% — Moderate risk
# 70-100% — High risk

Integration

# With MobSF (Mobile Security Framework)
# quark-engine integrates as MobSF plugin

# JSON output for pipeline integration
quark -a app.apk -s -o report.json
cat report.json | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('Risk score:', d['crimes']['crime_count'])
"

# Batch analysis
for apk in *.apk; do
    echo "=== $apk ===" >> results.txt
    quark -a "$apk" -s 2>&1 >> results.txt
done

Tips

  • Quark works at the bytecode level — no decompilation needed, works on obfuscated apps
  • Run alongside JADX for a complete picture: quark for behavior, JADX for code review
  • The risk score is a starting point — always verify findings manually
  • Useful for quickly triaging large sets of apps (e.g., from a threat intel feed)
Help / Man page
quark [options]

-a FILE         APK file to analyze
-r FILE         Single rule file
-d DIR          Directory of rule files
-s              Summary report
-o FILE         JSON output file
--generate-html FILE  HTML report
--permission    Show permissions
--strings       Show hardcoded strings
--list-rules    List all available rules
--update        Update rules database
-v              Verbose output

Vue d’ensemble

quark-engine analyse les APK Android à la recherche de comportements malveillants grâce à un système de notation. Plutôt que de décompiler vers le code source, il inspecte le bytecode DEX pour repérer des schémas comportementaux (séquences d’appels API, mauvais usage de permissions, exfiltration de données) et fournit un score de risque. S’intègre avec MobSF et d’autres plateformes d’analyse mobile.

Installation

pip3 install quark-engine

Mettre à jour les règles

quark --update

Analyse basique

# Analyser un APK avec toutes les règles intégrées
quark -a app.apk -s

# Analyser avec un fichier de règles spécifique
quark -a app.apk -r /usr/lib/quark-engine/quark/rules/sendLocation.json

# Obtenir un rapport de synthèse
quark -a app.apk -s

# Rapport JSON complet
quark -a app.apk -s -o report.json

# Générer un rapport HTML
quark -a app.apk --generate-html report.html

Règles

Lister toutes les règles disponibles

quark --list-rules
# Les règles couvrent des comportements comme :
# - Envoi de SMS (courant dans les composeurs premium/trojans)
# - Accès aux contacts et à la localisation
# - Exfiltration réseau
# - Chargement de code dynamique
# - Évasion de détection de root
# - Schémas de crypto-ransomware
# Exécuter une seule règle
quark -a app.apk -r /path/to/rule.json

# Exécuter les règles d'un répertoire
quark -a app.apk -d /path/to/rules/

Structure d’une règle

{
    "crime": "Get SMS messages",
    "permission": ["android.permission.READ_SMS"],
    "api": [
        {
            "class": "Landroid/provider/Telephony$Sms;",
            "method": "getDefaultSmsPackage",
            "descriptor": "(Landroid/content/Context;)Ljava/lang/String;"
        }
    ],
    "score": 4,
    "label": []
}

Analyse comportementale

# Vérifier les permissions demandées par l'app
quark -a app.apk --permission

# Trouver les chaînes en dur (URLs, clés)
quark -a app.apk --strings

# Analyser un comportement spécifique avec sortie verbeuse
quark -a app.apk -r rule.json -v
# Notation de risque :
# 0-39%  : risque faible
# 40-69% : risque modéré
# 70-100% : risque élevé

Intégration

# Avec MobSF (Mobile Security Framework)
# quark-engine s'intègre en tant que plugin MobSF

# Sortie JSON pour intégration dans un pipeline
quark -a app.apk -s -o report.json
cat report.json | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('Risk score:', d['crimes']['crime_count'])
"

# Analyse en lot
for apk in *.apk; do
    echo "=== $apk ===" >> results.txt
    quark -a "$apk" -s 2>&1 >> results.txt
done

Conseils

  • Quark fonctionne au niveau du bytecode : pas besoin de décompilation, fonctionne sur des apps obfusquées
  • À lancer en parallèle de JADX pour une vue complète : quark pour le comportement, JADX pour la revue de code
  • Le score de risque est un point de départ : toujours vérifier les résultats manuellement
  • Utile pour trier rapidement de grands ensembles d’apps (par exemple issus d’un flux de threat intel)
Aide / Page de manuel
quark [options]

-a FILE         APK file to analyze
-r FILE         Single rule file
-d DIR          Directory of rule files
-s              Summary report
-o FILE         JSON output file
--generate-html FILE  HTML report
--permission    Show permissions
--strings       Show hardcoded strings
--list-rules    List all available rules
--update        Update rules database
-v              Verbose output