Cryptera is a security tool to detect fake banking APKs. Built with HTML, CSS (frontend) and JavaScript (backend), it analyzes metadata, permissions, certificates, and uses ML predictions to flag suspicious apps. Designed for easy use, it helps protect users from malicious mobile banking threats.
- APK Analysis: Deep analysis of Android APK files including manifest parsing, certificate extraction, and DEX file analysis
- Banking App Detection: Specialized detection for fake banking applications using pattern matching and behavioral analysis
- Security Scanning: Comprehensive security analysis including permission analysis, string analysis, and obfuscation detection
- Threat Intelligence: Integration with VirusTotal and MalwareBazaar for real-time threat intelligence
- Machine Learning Detection: AI-powered malware detection capabilities
- RESTful API: Easy-to-use REST API for programmatic access
- Web Interface: User-friendly web interface for manual APK uploads and analysis
- Backend: Node.js, Express.js
- Database: MongoDB (optional)
- Security: Helmet, CORS, Rate Limiting
- File Processing: Multer, yauzl, xml2js
- Threat Intelligence: VirusTotal API, MalwareBazaar API
- Logging: Winston
- Frontend: HTML5, CSS3, JavaScript
- Node.js (version 16.0.0 or higher)
- npm (Node Package Manager)
- Optional: MongoDB for storing scan results
- Optional: Android SDK Build Tools for advanced APK parsing
-
. Clone the repository
git clone https://github.com/AnushaHardaha/APK-Detector.git cd APK-Detector -
Install dependencies
npm install
-
Configure environment variables
cp .env.example .env
Edit the
.envfile with your API keys and configuration. -
Create required directories
mkdir -p uploads logs data
Copy .env.example to .env and configure the following variables:
VIRUSTOTAL_API_KEY: Your VirusTotal API key (optional but recommended)MALWAREBAZAAR_API_KEY: Your MalwareBazaar API key (optional but recommended)ABUSEIPDB_API_KEY: Your AbuseIPDB API key (optional)PORT: Server port (default: 3000)NODE_ENV: Environment (development/production)
-
VirusTotal API Key
- Visit VirusTotal
- Create an account and get your API key
- Add it to your
.envfile
-
MalwareBazaar API Key
- Visit abuse.ch Authentication Portal
- Create an account and get your API key
- Add it to your
.envfile
npm run devnpm startnpm install -g pm2
pm2 start server.js --name cybershield
pm2 startup
pm2 savePOST /api/scan-apk
Content-Type: multipart/form-data
Body:
- apk: APK file (max 220MB)Response:
{
"success": true,
"scanId": "uuid-here",
"result": {
"riskLevel": "high|medium|low|minimal|critical",
"isFake": true,
"confidence": 85,
"threats": ["Banking app impersonation detected"],
"recommendations": ["DO NOT INSTALL - This appears to be a fake banking application"],
"summary": "DANGER: This APK appears to be a fake banking application..."
}
}GET /api/healthResponse:
{
"status": "healthy",
"timestamp": "2025-08-27T10:30:00.000Z",
"services": {
"threatIntel": "initialized"
}
}# Scan an APK file
curl -X POST -F "apk=@sample.apk" http://localhost:3000/api/scan-apk
# Check server health
curl http://localhost:3000/api/health- Start the server
- Open your browser and navigate to the frontend HTML file
- Upload an APK file
- View the analysis results
cybershield/
└── backend/
├── services/ # Core service modules
│ ├── apkAnalyzer.js # APK analysis logic
│ ├── securityScanner.js # Security scanning logic
│ ├── threatIntelligence.js # Threat intelligence integration
│ └── database.js # Database operations
├── uploads/ # Temporary file storage
├── logs/ # Application logs
├── data/ # Static data files
├── server.js # Main server file
├── package.json # Dependencies and scripts
└── README.md # This file
npm run dev # Start in development mode with nodemon
npm start # Start in production mode
npm test # Run tests
npm run scan # Run standalone APK scanner- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- 10 requests per minute per IP address
- Configurable rate limits for different endpoints
- Strict APK file validation
- File size limits (max 220MB)
- MIME type checking
- Helmet.js for security headers
- CORS configuration
- Input validation and sanitization
This project is licensed under the MIT License - see the LICENSE file for details.
- VirusTotal for threat intelligence API
- MalwareBazaar for malware sample database
- Android security research community
- National Cryptera Hackathon 2025
For support and questions, please open an issue on GitHub or contact the development team.