Files
Mobile-Security-Framework-M…/mobsf/templates/static_analysis/ios_binary_analysis.html
T
Ajin Abraham 29df4f2f03 Runtime Exec Tampering Detection, iOS Dynamic REST APIs, Datatables Export (#2339)
* Runtime Executable Tampering Detection

* Add security.py

* Code QA Performance

* Code QA Runtime EXEC tampering detection

* Corellium API QA + Domain support

* REST API Docs + Datatables export
2024-02-09 18:42:00 -08:00

1863 lines
74 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "base/base_layout.html" %}
{% load static %}
{% block sidebar_option %}
sidebar-mini
{% endblock %}
{% block extra_css %}
<!-- DataTables -->
<link href="{% static "datatables/css/datatables.combined.min.css" %}" rel="stylesheet">
<link href="{% static "adminlte/plugins/sweetalert2/sweetalert2.min.css" %}" rel="stylesheet">
<style type="text/css" media="print">
@page { size: landscape; }
@media print {
.btn, #scan_options {
display: none;
}
}
</style>
<style>
#app_icon{
width: 64px;
height: 64px;
}
#pre-wrap {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
</style>
{% endblock %}
{% block sidebar %}
<!-- Main Sidebar Container -->
<!-- Sidebar -->
<div class="sidebar">
<!-- Sidebar user panel (optional) -->
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
<div class="info">
<a href="#" class="d-block">Static Analyzer</a>
</div>
</div>
<!-- Sidebar Menu -->
<nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column nav-child-indent" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item">
<a href="#information" class="nav-link">
<i class="nav-icon fas fa-info-circle"></i>
<p>
Information
</p>
</a>
</li>
<li class="nav-item">
<a href="#scan_options" class="nav-link">
<i class="nav-icon fas fa-cog"></i>
<p>
Scan Options
</p>
</a>
</li>
{% if app_type not in 'Dylib,A' %}
<li class="nav-item">
<a href="#url_schemes" class="nav-link">
<i class="nav-icon fas fa-hashtag"></i>
<p>
URL Schemes
</p>
</a>
</li>
<li class="nav-item">
<a href="#permissions" class="nav-link">
<i class="nav-icon fas fa-list"></i>
<p>
Permissions
</p>
</a>
</li>
{% endif %}
<li class="nav-item has-treeview">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-shield-alt"></i>
<p>
Security Analysis
<i class="fas fa-angle-left right"></i>
</p>
</a>
<ul class="nav nav-treeview">
{% if app_type not in 'Dylib,A' %}
<li class="nav-item">
<a href="#transport_security" class="nav-link">
<i class="nav-icon fas fa-lock"></i>
<p>
Transport Security
</p>
</a>
</li>
{% endif %}
<li class="nav-item">
<a href="#binary_code_analysis" class="nav-link">
<i class="fa fa-code nav-icon"></i>
<p>
Binary Code Analysis
</p>
</a>
</li>
{% if app_type not in 'Dylib,A' %}
<li class="nav-item">
<a href="#binary_analysis" class="nav-link">
<i class="nav-icon fa fa-braille"></i>
<p>
Binary Analysis
</p>
</a>
</li>
{% endif %}
{% if app_type not in 'A' %}
<li class="nav-item">
<a href="#dylib_analysis" class="nav-link">
<i class="nav-icon fas fa-flag"></i>
<p>Dylib & Framework Analysis</p>
</a>
</li>
{% endif %}
{% if app_type in 'A' %}
<li class="nav-item">
<a href="#a_analysis" class="nav-link">
<i class="nav-icon fas fa-flag"></i>
<p>Static Library Analysis</p>
</a>
</li>
{% endif %}
{% if app_type not in 'Dylib,A' %}
<li class="nav-item">
<a href="#file_analysis" class="nav-link">
<i class="nav-icon fa fa-file"></i>
<p>
File Analysis
</p>
</a>
</li>
{% endif %}
</ul>
</li>
<li class="nav-item has-treeview">
<a href="#" class="nav-link">
<i class="nav-icon fa fa-bug"></i>
<p>
Malware Analysis
<i class="fas fa-angle-left right"></i>
</p>
</a>
<ul class="nav nav-treeview">
{% if virus_total %}
<li class="nav-item">
<a href="#virus_total" class="nav-link">
<i class="nav-icon fas fa-spider"></i>
<p>
VirusTotal
</p>
</a>
</li>
{% endif %}
<li class="nav-item">
<a href="#serverlocations" class="nav-link">
<i class="fas fa-globe-asia nav-icon"></i>
<p>Server Locations</p>
</a>
</li>
<li class="nav-item">
<a href="#malware_check" class="nav-link">
<i class="fab fa-searchengin nav-icon"></i>
<p>Domain Malware Check</p>
</a>
</li>
</ul>
</li>
<li class="nav-item has-treeview">
<a href="#" class="nav-link">
<i class="nav-icon fa fa-plus"></i>
<p>
Reconnaissance
<i class="fas fa-angle-left right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#urls" class="nav-link">
<i class="fas fa-globe nav-icon"></i>
<p>URLs</p>
</a>
</li>
<li class="nav-item">
<a href="#firebase" class="nav-link">
<i class="fas fa-database nav-icon"></i>
<p>Firebase DB</p>
</a>
</li>
<li class="nav-item">
<a href="#emails" class="nav-link">
<i class="fas fa-envelope nav-icon"></i>
<p>Emails</p>
</a>
</li>
<li class="nav-item">
<a href="#trackers" class="nav-link">
<i class="fas fa-user-secret nav-icon"></i>
<p>Trackers</p>
</a>
</li>
<li class="nav-item">
<a href="#secrets" class="nav-link">
<i class="fas fa-key nav-icon"></i>
<p>Hardcoded Secrets</p>
</a>
</li>
<li class="nav-item">
<a href="#strings" class="nav-link">
<i class="fas fa-font nav-icon"></i>
<p>Strings</p>
</a>
</li>
</ul>
</li>
{% if app_type in 'Dylib,A' %}
<li class="nav-item">
<a href="#symbols" class="nav-link">
<i class="fa fa-th nav-icon"></i>
<p>Symbols</p>
</a>
</li>
{% endif %}
{% if app_type not in 'Dylib,A' %}
<li class="nav-item">
<a href="#libraries" class="nav-link">
<i class="fab fa-buffer nav-icon"></i>
<p>Libraries</p>
</a>
</li>
<li class="nav-item">
<a href="#files" class="nav-link">
<i class="nav-icon far fa-copy"></i>
<p>
Files
</p>
</a>
</li>
{% endif %}
<li class="nav-item">
<a href="{% url "pdf" checksum=md5 %}" class="nav-link">
<i class="nav-icon fas fa-file-pdf"></i>
<p>
PDF Report
</p>
</a>
</li>
<li class="nav-item">
<a href="javascript:window.print()" class="nav-link">
<i class="nav-icon fa fa-print"></i>
<p>
Print Report
</p>
</a>
</li>
</ul>
</nav>
<!-- /.sidebar-menu -->
</div>
<!-- /.sidebar -->
{% endblock %}
{% block content %}
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
<!--
<div class="container-fluid">
<div class="row mb-2">
<div id="mobsf_header" align="center">
</div>
</div>
</div>-->
</div>
<!-- /.content-header -->
<!-- Main content -->
<a id="information" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h5 class="card-title"></h5>
<div class="row">
<div class="col-2">
<p><strong><i class="fas fa-check-double"></i> APP SCORES</strong></p>
{% if app_type not in 'Dylib,A' %}
<img id="app_icon" src="{% if not appstore_details.error %}{{appstore_details.icon}}{% elif icon_path %}/download/{{ icon_path }}{% else %}{% static 'img/no_icon.png' %}{% endif %}"/>
<p>
{% if average_cvss %}
<span class="badge bg-info">Average CVSS</span> <strong>{{ average_cvss }} </strong><br/>
{% endif %}
<span class="badge bg-{% if appsec.security_score < 40 %}danger{% elif appsec.security_score == 100 %}success{% else %}warning{% endif %}">Security Score</span> <strong>{{ appsec.security_score }}/100 </strong><br/>
{% endif %}
{% if trackers.detected_trackers > 0 %}
<span class="badge bg-warning">Trackers Detection</span> <strong>{{ trackers.detected_trackers }}/{{ trackers.total_trackers }}</strong><br/>
{% else %}
<span class="badge bg-success">Trackers Detection</span> <strong>{{ trackers.detected_trackers }}/{{ trackers.total_trackers }}</strong><br/>
{% endif %}
{% if virus_total and virus_total.items|length > 9 %}
{% if virus_total.positives > 0 %}
<span class="badge bg-danger">VirusTotal Detection</span> <strong>{{ virus_total.positives }}/{{ virus_total.total }}</strong><br/>
{% else %}
<span class="badge bg-success">VirusTotal Detection</span> <strong>{{ virus_total.positives }}/{{ virus_total.total }}</strong><br/>
{% endif %}
{% endif %}
</p>
{% if app_type not in 'Dylib,A' %}
<p> <a href="{% url 'appsec_dashboard' checksum=md5 %}" class="btn btn-outline-primary btn-sm" role="button"><i class="fas fa-user-shield"></i> MobSF Scorecard</a></p>
{% endif %}
</div>
<div class="col-4">
<p><strong><i class="fas fa-box-open"></i> FILE INFORMATION </strong></p>
<span class="badge bg-primary">File Name</span>
{{ file_name }}<br/>
<span class="badge bg-primary">Size</span>
{{ size }}<br/>
<span class="badge bg-primary">MD5</span>
{{ md5 }}<br/>
<span class="badge bg-primary">SHA1</span>
{{ sha1 }}<br/>
<span class="badge bg-primary">SHA256</span>
{{ sha256 }}<br/>
</div>
{% if app_type not in 'Dylib,A' %}
<div class="col-3">
<p><strong><i class="fas fa-info"></i> APP INFORMATION </strong></p>
<span class="badge bg-primary">App Name</span>
{{ app_name }}<br/>
<span class="badge bg-primary">App Type</span>
{{ app_type }}<br/>
<span class="badge bg-primary">Identifier</span>
{{ bundle_id }}<br/>
<span class="badge bg-primary">SDK Name</span>
{{ sdk_name }}<br/>
<span class="badge bg-primary">Version</span>
{{ app_version }}
<span class="badge bg-primary">Build</span>
{{ build }}
<span class="badge bg-primary">Platform Version</span>
{{ platform }}
<span class="badge bg-primary">Min OS Version</span>
{{ min_os_version }} <br/>
<span class="badge bg-primary">Supported Platforms</span>
{% for pl in bundle_supported_platforms %}
{{pl}},
{% endfor %}
</div>
{% endif %}
<div class="col-3">
<p><strong><i class="fas fa-ad"></i> BINARY INFORMATION </strong></p>
<span class="badge bg-primary">Arch</span>
{{ binary_info.arch }}<br/>
<span class="badge bg-primary">Sub Arch</span>
{{ binary_info.subarch }}<br/>
<span class="badge bg-primary">Bit</span>
{{ binary_info.bit }}
<span class="badge bg-primary">Endian</span>
{{ binary_info.endian }}<br/>
</div>
</div>
</div>
</div>
</div>
{% if app_type not in 'Dylib,A' %}
<!-- App Store -->
{% if not appstore_details.error %}
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fab fa-app-store-ios"></i> APP STORE INFORMATION</strong>
</p>
<span class="badge bg-info">Title</span>
{{ appstore_details.title }} <br/>
<span class="badge bg-info">Score</span>
{{ appstore_details.score}}
<span class="badge bg-info">Features</span>
{% for fea in appstore_details.features %}
{{ fea }},
{% endfor %}
<span class="badge bg-info">Price</span>
{{ appstore_details.price }}
<span class="badge bg-info">Category</span>
{% for cat in appstore_details.category %}
{{ cat }},
{% endfor %}
<span class="badge bg-info">App Store URL</span>
<a target="_blank" href="{{ appstore_details.itunes_url }}" rel="noopener noreferrer">{{ appstore_details.app_id }} </a>
<br/>
<span class="badge bg-info">Developer</span>
{{appstore_details.developer}},
<span class="badge bg-info">Developer ID</span>
{{appstore_details.developer_id}} <br/>
<span class="badge bg-info">Developer Website</span>
{{appstore_details.developer_website }} <br/>
<span class="badge bg-info">Developer URL</span>
{{appstore_details.developer_url}} <br/>
<span class="badge bg-info">Supported Devices</span>
{% for dev in appstore_details.supported_devices %}
{{ dev }},
{% endfor %}
<br/>
<span class="badge bg-info">Description</span>
<pre id="pre-wrap">{{ appstore_details.description }}</pre>
</div>
</div><!-- /.card -->
</div>
{% endif %}
{% endif %}
<!-- /.col -->
<!-- row and container-->
</div>
</div>
</section>
<!-- =========================end information==================================== -->
<a id="scan_options" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-cog"></i> SCAN OPTIONS</strong>
</p>
<a role="button" class="btn btn-info" href="{% url 'static_analyzer_ios' checksum=md5 %}?rescan=1" ><i class="fa fa-sync"></i> Rescan</a>
<a id="supbtn" onclick="list_suppressions()" role="button" class="btn btn-primary" data-target="#sup_list" data-toggle="modal" href="#"><i class="fa fa-list"></i> Manage Suppressions</a>
</p>
</div>
</div><!-- /.card -->
</div>
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-file-code"></i> DECOMPILED ASSETS</strong>
</p>
<p>
{% if app_type not in 'Dylib,A' %}
<a role="button" class="btn btn-primary" data-target="#mplist" data-toggle="modal" href="#"><i class="fa fa-list"></i> View Info.plist</a>
{% endif %}
{% if app_type not in 'Dylib,A' %}
<a target="_blank" href="{% url 'view_file_ios' %}?file=classdump.txt&amp;md5={{ md5 }}&amp;type=ios" class="btn btn-warning" role="button"><i class="fa fa-code"></i> View Class Dump</a>
{% endif %}
<a href="{% url 'generate_downloads' %}?hash={{ md5 }}&amp;file_type={% if app_type in 'Dylib' %}dylib{% elif app_type in 'A' %}a{% else %}ipa{% endif %}" class="btn btn-warning"> <i class="fa fa-download"></i> Download {% if app_type in 'Dylib' %}DYLIB{% elif app_type in 'A' %}A{% else %}IPA{% endif %}</a>
</p>
</div>
</div>
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end scan options================================== -->
{% if app_type not in 'Dylib,A' %}
<a id="url_schemes" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-hashtag"></i> CUSTOM URL SCHEMES</strong>
<p>
{% if bundle_url_types|length > 0 %}
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>URL NAME</th>
<th>SCHEMES</th>
</tr>
</thead>
<tbody>
{% for scheme in bundle_url_types %}
<tr>
<td>
{{scheme | key:"CFBundleURLName" }}
{% if scheme|key:"CFBundleTypeRole" %}
<br>
{{scheme | key:"CFBundleTypeRole" }}
{% endif %}
</td>
<td>
{% if scheme|key:"CFBundleURLSchemes" %}
{% for ul in scheme.CFBundleURLSchemes %}
{{ul}} <br/>
{% endfor %}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<p>
No URL Schemes found.
</p>
{% endif %}
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end url schemes ================================== -->
<a id="permissions" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-list"></i> APPLICATION PERMISSIONS</strong>
<p>
{% if permissions %}
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>PERMISSIONS</th>
<th>STATUS</th>
<th>INFO</th>
<th>REASON IN MANIFEST</th>
</tr>
</thead>
<tbody>
{% for perm, desc in permissions.items %}
<tr>
<td>
{{ perm }}
</td>
<td>
{% if desc.status == 'dangerous' %}
<span class="badge bg-danger">dangerous</span>
{% else %}
<span class="badge bg-info">normal</span>
{% endif %}
</td>
<td>
{{ desc.info}}
</td>
<td>
{{ desc.description }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<p>
No Permissions required.
</p>
{% endif %}
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end permission ================================== -->
<a id="transport_security" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-lock"></i> APP TRANSPORT SECURITY (ATS)</strong>
</p>
<div class="table-responsive">
{% if ats_analysis and 'ats_summary' in ats_analysis and ats_analysis.ats_summary|length > 0 %}
<div class="row">
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-danger">HIGH</span>
<h5 class="description-header">{{ ats_analysis.ats_summary.high }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-warning"></i> WARNING</span>
<h5 class="description-header">{{ ats_analysis.ats_summary.warning }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-info">INFO</span>
<h5 class="description-header">{{ ats_analysis.ats_summary.info }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block">
<span class="text-success">SECURE</span>
<h5 class="description-header">{{ ats_analysis.ats_summary.secure }}</h5>
</div>
</div>
</div>
{% endif %}
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>NO</th>
<th>ISSUE</th>
<th>SEVERITY</th>
<th>DESCRIPTION</th>
</tr>
</thead>
<tbody>
{% if ats_analysis and 'ats_findings' in ats_analysis %}
{% for findings in ats_analysis.ats_findings %}
<tr>
<td>{{ forloop.counter }}</td>
<td>
{{findings.issue}}
<td>
{% if findings.severity == "high" %}
<span class="badge bg-danger"> high </span>
{% elif findings.severity == "secure" %}
<span class="badge bg-success"> secure</span>
{% elif findings.severity == "warning" %}
<span class="badge bg-warning"> warning</span>
{% elif findings.severity == "info" %}
<span class="badge bg-info"> info</span>
{% endif %}
</td>
<td>
{{findings.description}}
</td>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end transport security ================================== -->
{% endif %}
<a id="binary_code_analysis" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-code"></i> {% if app_type not in 'Dylib,A' %}IPA {% endif %}BINARY CODE ANALYSIS</strong>
</p>
<div class="table-responsive">
{% if binary_analysis and 'summary' in binary_analysis and binary_analysis.summary|length > 0 %}
<div class="row">
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-danger">HIGH</span>
<h5 class="description-header">{{ binary_analysis.summary.high }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-warning"></i> WARNING</span>
<h5 class="description-header">{{ binary_analysis.summary.warning }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-info">INFO</span>
<h5 class="description-header">{{ binary_analysis.summary.info }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block border-right">
<span class="text-success">SECURE</span>
<h5 class="description-header">{{ binary_analysis.summary.secure }}</h5>
</div>
</div>
<div class="col-sm-2 col-6">
<div class="description-block">
<span class="text-disabled">SUPPRESSED</span>
<h5 class="description-header">{{ binary_analysis.summary.suppressed }}</h5>
</div>
</div>
</div>
{% endif %}
<table id="table_code" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>NO</th>
<th>ISSUE</th>
<th>SEVERITY</th>
<th>STANDARDS</th>
<th>DESCRIPTION</th>
<th>OPTIONS</th>
</tr>
</thead>
<tbody>
{% if binary_analysis and 'findings' in binary_analysis %}
{% for issue, details in binary_analysis.findings.items %}
<tr>
<td>{{ forloop.counter }}</td>
<td>
{{ issue }}
</td>
<td>
{% if details|key:"severity" == 'info' %}
<span class='badge bg-info'>info</span>
{% elif details|key:"severity" == 'good' %}
<span class='badge bg-success'>secure</span>
{% elif details|key:"severity" == 'high' %}
<span class='badge bg-danger'>high</span>
{% elif details|key:"severity" == 'warning' %}
<span class='badge bg-warning'>warning</span>
{% endif %}
</td>
<td>
{% if average_cvss %}
<strong>CVSS V2:</strong>
{{ details|key:"cvss" }}
{% if details|key:"cvss" > 6 %}
(high)
{% elif details|key:"cvss" == 0 %}
(info)
{% elif details|key:"cvss" >= 4 %}
(medium)
{% elif details|key:"cvss" < 4 %}
(low)
{% endif %}
</br>
{% endif %}
{% if details|key:"cwe" %} <strong>CWE: </strong>{{ details|key:"cwe" }}{% endif %}
{% if details|key:"owasp-mobile" %}</br> <strong>OWASP Top 10: </strong>{{ details|key:"owasp-mobile" }}{% endif %}
{% if details|key:"masvs" %}</br> <strong>OWASP MASVS: </strong>{{ details|key:"masvs" }}{% endif %}
</td>
<td>
{{ details|key:"detailed_desc" }}
</td>
<td>
<div class="dropdown show">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-eye-slash"></i>
</a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<a style="cursor:pointer;" class="dropdown-item" onclick="suppress('{{issue | escapejs }}', false, $(this.closest('tr')))">Suppress the rule <b>{{ issue }}</b> in <b>{{bundle_id}}</b></a>
</div>
</div>
</td>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end binary code analysis ================================== -->
{% if app_type not in 'Dylib,A' %}
<a id="binary_analysis" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-braille"></i> IPA BINARY ANALYSIS</strong>
</p>
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>PROTECTION</th>
<th>STATUS</th>
<th>SEVERITY</th>
<th>DESCRIPTION</th>
</tr>
</thead>
<tbody>
{% if not macho_analysis %}
Binary Analysis Failed.
{% else %}
<tr>
<td><b>NX</b></td>
<td>{{macho_analysis.nx.has_nx}}</td>
<td><span class="badge bg-{% if macho_analysis.nx.severity == 'high' %}danger{% elif macho_analysis.nx.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.nx.severity}}</span></td>
<td>{{macho_analysis.nx.description}}</td>
</tr>
<tr>
<td><b>PIE</b></td>
<td>{{macho_analysis.pie.has_pie}}</td>
<td><span class="badge bg-{% if macho_analysis.pie.severity == 'high' %}danger{% elif macho_analysis.pie.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.pie.severity}}</span></td>
<td>{{macho_analysis.pie.description}}</td>
</tr>
<tr>
<td><b>STACK CANARY</b></td>
<td>{{macho_analysis.stack_canary.has_canary}}</td>
<td><span class="badge bg-{% if macho_analysis.stack_canary.severity == 'high' %}danger{% elif macho_analysis.stack_canary.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.stack_canary.severity}}</span></td>
<td>{{macho_analysis.stack_canary.description}}</td>
</tr>
<tr>
<td><b>ARC</b></td>
<td>{{macho_analysis.arc.has_arc}}</td>
<td><span class="badge bg-{% if macho_analysis.arc.severity == 'high' %}danger{% elif macho_analysis.arc.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.arc.severity}}</span></td>
<td>{{macho_analysis.arc.description}}</td>
</tr>
<tr>
<td><b>RPATH</b></td>
<td>{{macho_analysis.rpath.has_rpath}}</td>
<td><span class="badge bg-{% if macho_analysis.rpath.severity == 'high' %}danger{% elif macho_analysis.rpath.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.rpath.severity}}</span></td>
<td>{{macho_analysis.rpath.description}}</td>
</tr>
<tr>
<td><b>CODE SIGNATURE</b></td>
<td>{{macho_analysis.code_signature.has_code_signature}}</td>
<td><span class="badge bg-{% if macho_analysis.code_signature.severity == 'high' %}danger{% elif macho_analysis.code_signature.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.code_signature.severity}}</span></td>
<td>{{macho_analysis.code_signature.description}}</td>
</tr>
<tr>
<td><b>ENCRYPTED</b></td>
<td>{{macho_analysis.encrypted.is_encrypted}}</td>
<td><span class="badge bg-{% if macho_analysis.encrypted.severity == 'high' %}danger{% elif macho_analysis.encrypted.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.encrypted.severity}}</span></td>
<td>{{macho_analysis.encrypted.description}}</td>
</tr>
<tr>
<td><b>SYMBOLS STRIPPED</b></td>
<td>{{macho_analysis.symbol.is_stripped}}</td>
<td><span class="badge bg-{% if macho_analysis.symbol.severity == 'high' %}danger{% elif macho_analysis.symbol.severity == 'warning' %}warning{% else %}info{% endif %}">{{macho_analysis.symbol.severity}}</span></td>
<td>{{macho_analysis.symbol.description}}</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end binary analysis ================================== -->
{% endif %}
{% if app_type not in 'A' %}
<a id="dylib_analysis" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-flag"></i> DYNAMIC LIBRARY & FRAMEWORK BINARY ANALYSIS</strong>
</p>
<div class="table-responsive">
<table id="table_dylib" class="table table-bordered table-hover table-striped">
<thead>
<tr>
{% if app_type not in 'Dylib' %}
<th>NO</th>
<th>DYLIB/FRAMEWORK</th>
{% endif %}
<th>NX</th>
<th>STACK CANARY</th>
<th>ARC</th>
<th>RPATH</th>
<th>CODE SIGNATURE</th>
<th>ENCRYPTED</th>
<th>SYMBOLS STRIPPED</th>
</tr>
</thead>
<tbody>
{% if not dylib_analysis and not framework_analysis %}
No Dylibs/Frameworks found.
{% endif %}
{% for dy in dylib_analysis %}
<tr>
{% if app_type not in 'Dylib' %}
<td>{{ forloop.counter }}</td>
<td>{{dy.name | relative_path}}</br>
<a class="btn btn-primary btn-xs" href="{% url 'scan_library' checksum=md5 %}?library={{ dy.name }}" target="_blank" rel="noopener noreferrer"><i class="fa fa-search"></i> Analyze</a>
</td>
{% endif %}
<td><b>{{dy.nx.has_nx}}</b>
<br/>
<span class="badge bg-{% if dy.nx.severity == 'high' %}danger{% elif dy.nx.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.nx.severity}}</span>
<br/>{{dy.nx.description}}</td>
<td><b>{{dy.stack_canary.has_canary}}</b>
<br/>
<span class="badge bg-{% if dy.stack_canary.severity == 'high' %}danger{% elif dy.stack_canary.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.stack_canary.severity}}</span>
<br/>{{dy.stack_canary.description}}</td>
<td><b>{{dy.arc.has_arc}}</b>
<br/>
<span class="badge bg-{% if dy.arc.severity == 'high' %}danger{% elif dy.arc.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.arc.severity}}</span>
<br/>{{dy.arc.description}}</td>
<td><b>{{dy.rpath.has_rpath}}</b>
<br/>
<span class="badge bg-{% if dy.rpath.severity == 'high' %}danger{% elif dy.rpath.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.rpath.severity}}</span>
<br/>{{dy.rpath.description}}</td>
<td><b>{{dy.code_signature.has_code_signature}}</b>
<br/>
<span class="badge bg-{% if dy.code_signature.severity == 'high' %}danger{% elif dy.code_signature.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.code_signature.severity}}</span>
<br/>{{dy.code_signature.description}}</td>
<td><b>{{dy.encrypted.is_encrypted}}</b>
<br/>
<span class="badge bg-{% if dy.encrypted.severity == 'high' %}danger{% elif dy.encrypted.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.encrypted.severity}}</span>
<br/>{{dy.encrypted.description}}</td>
<td><b>{{dy.symbol.is_stripped}}</b>
<br/>
<span class="badge bg-{% if dy.symbol.severity == 'high' %}danger{% elif dy.symbol.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.symbol.severity}}</span>
<br/>{{dy.symbol.description}}</td>
</tr>
{% endfor %}
{% for frm in framework_analysis %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{frm.name | relative_path}}</br>
<a class="btn btn-primary btn-xs" href="{% url 'scan_library' checksum=md5 %}?library={{ frm.name }}" target="_blank" rel="noopener noreferrer"><i class="fa fa-search"></i> Analyze</a>
</td>
<td><b>{{frm.nx.has_nx}}</b>
<br/>
<span class="badge bg-{% if frm.nx.severity == 'high' %}danger{% elif frm.nx.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.nx.severity}}</span>
<br/>{{frm.nx.description}}</td>
<td><b>{{frm.stack_canary.has_canary}}</b>
<br/>
<span class="badge bg-{% if frm.stack_canary.severity == 'high' %}danger{% elif frm.stack_canary.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.stack_canary.severity}}</span>
<br/>{{frm.stack_canary.description}}</td>
<td><b>{{frm.arc.has_arc}}</b>
<br/>
<span class="badge bg-{% if frm.arc.severity == 'high' %}danger{% elif frm.arc.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.arc.severity}}</span>
<br/>{{frm.arc.description}}</td>
<td><b>{{frm.rpath.has_rpath}}</b>
<br/>
<span class="badge bg-{% if frm.rpath.severity == 'high' %}danger{% elif frm.rpath.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.rpath.severity}}</span>
<br/>{{frm.rpath.description}}</td>
<td><b>{{frm.code_signature.has_code_signature}}</b>
<br/>
<span class="badge bg-{% if frm.code_signature.severity == 'high' %}danger{% elif frm.code_signature.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.code_signature.severity}}</span>
<br/>{{frm.code_signature.description}}</td>
<td><b>{{frm.encrypted.is_encrypted}}</b>
<br/>
<span class="badge bg-{% if frm.encrypted.severity == 'high' %}danger{% elif frm.encrypted.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.encrypted.severity}}</span>
<br/>{{frm.encrypted.description}}</td>
<td><b>{{frm.symbol.is_stripped}}</b>
<br/>
<span class="badge bg-{% if frm.symbol.severity == 'high' %}danger{% elif frm.symbol.severity == 'warning' %}warning{% else %}info{% endif %}">{{frm.symbol.severity}}</span>
<br/>{{frm.symbol.description}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end dylib analysis ================================== -->
{% endif %}
<!--static library-->
{% if app_type in 'A' %}
<a id="a_analysis" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-flag"></i> STATIC LIBRARY BINARY ANALYSIS</strong>
</p>
<div class="table-responsive">
{% if binary_info.arch == 'MachO' %}
<table id="table_macho_static" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>NO</th>
<th>STATIC OBJECT</th>
<th>NX</th>
<th>STACK CANARY</th>
<th>ARC</th>
<th>RPATH</th>
<th>SYMBOLS STRIPPED</th>
</tr>
</thead>
<tbody>
{% if not dylib_analysis %}
No Static Objects found.
{% endif %}
{% for dy in dylib_analysis %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{dy.name}}</td>
<td><b>{{dy.nx.has_nx}}</b>
<br/>
<span class="badge bg-{% if dy.nx.severity == 'high' %}danger{% elif dy.nx.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.nx.severity}}</span>
<br/>{{dy.nx.description}}</td>
<td><b>{{dy.stack_canary.has_canary}}</b>
<br/>
<span class="badge bg-{% if dy.stack_canary.severity == 'high' %}danger{% elif dy.stack_canary.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.stack_canary.severity}}</span>
<br/>{{dy.stack_canary.description}}</td>
<td><b>{{dy.arc.has_arc}}</b>
<br/>
<span class="badge bg-{% if dy.arc.severity == 'high' %}danger{% elif dy.arc.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.arc.severity}}</span>
<br/>{{dy.arc.description}}</td>
<td><b>{{dy.rpath.has_rpath}}</b>
<br/>
<span class="badge bg-{% if dy.rpath.severity == 'high' %}danger{% elif dy.rpath.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.rpath.severity}}</span>
<br/>{{dy.rpath.description}}</td>
<td><b>{{dy.symbol.is_stripped}}</b>
<br/>
<span class="badge bg-{% if dy.symbol.severity == 'high' %}danger{% elif dy.symbol.severity == 'warning' %}warning{% else %}info{% endif %}">{{dy.symbol.severity}}</span>
<br/>{{dy.symbol.description}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<table id="table_elf_static" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>NO</th>
<th>SHARED OBJECT</th>
<th>NX</th>
<th>STACK CANARY</th>
<th>RPATH</th>
<th>RUNPATH</th>
<th>FORTIFY</th>
<th>SYMBOLS STRIPPED</th>
</tr>
</thead>
<tbody>
{% if not dylib_analysis %}
No Static Objects found.
{% endif %}
{% for so in dylib_analysis %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{so.name}}</td>
<td><b>{{so.nx.is_nx}}</b>
<br/>
<span class="badge bg-{% if so.nx.severity == 'high' %}danger{% elif so.nx.severity == 'warning' %}warning{% else %}info{% endif %}">{{so.nx.severity}}</span>
<br/>{{so.nx.description}}</td>
<td><b>{{so.stack_canary.has_canary}}</b>
<br/>
<span class="badge bg-{% if so.stack_canary.severity == 'high' %}danger{% elif so.stack_canary.severity == 'warning' %}warning{% else %}info{% endif %}">{{so.stack_canary.severity}}</span>
<br/>{{so.stack_canary.description}}</td>
<td><b>{{so.rpath.rpath}}</b>
<br/>
<span class="badge bg-{% if so.rpath.severity == 'high' %}danger{% elif so.rpath.severity == 'warning' %}warning{% else %}info{% endif %}">{{so.rpath.severity}}</span>
<br/>{{so.rpath.description}}</td>
<td><b>{{so.runpath.runpath}}</b>
<br/>
<span class="badge bg-{% if so.runpath.severity == 'high' %}danger{% elif so.runpath.severity == 'warning' %}warning{% else %}info{% endif %}">{{so.runpath.severity}}</span>
<br/>{{so.runpath.description}}</td>
<td><b>{{so.fortify.is_fortified}}</b>
<br/>
<span class="badge bg-{% if so.fortify.severity == 'high' %}danger{% elif so.fortify.severity == 'warning' %}warning{% else %}info{% endif %}">{{so.fortify.severity}}</span>
<br/>{{so.fortify.description}}</td>
<td><b>{{so.symbol.is_stripped}}</b>
<br/>
<span class="badge bg-{% if so.symbol.severity == 'high' %}danger{% elif so.symbol.severity == 'warning' %}warning{% else %}info{% endif %}">{{so.symbol.severity}}</span>
<br/>{{so.symbol.description}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end a analysis ================================== -->
{% endif %}
<!-- end static library-->
{% if app_type not in 'Dylib,A' %}
<a id="file_analysis" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-file"></i> FILE ANALYSIS</strong>
</p>
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>NO</th>
<th>ISSUE</th>
<th>FILES</th>
</tr>
</thead>
<tbody>
{% for item in file_analysis %}
<tr>
<td>{{ forloop.counter }}</td>
<td>
{{ item.issue }}
</td>
<td>
{% for file in item.files %}
{% if file.type %}
<a href="{% url 'view_file_ios' %}?file={{file.file_path}}&amp;type={{file.type}}&amp;md5={{file.hash}}">{{ file.file_path }}</a>
{% else %}
{{ file.file_path }}
{% endif %}
<br/>
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end file analysis ================================== -->
{% endif %}
{% if virus_total %}
<a id="virus_total" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-spider"></i> VIRUSTOTAL SCAN</strong>
</p>
<div class="table-responsive">
{% if virus_total.items|length < 9 %} {% comment %} Basic check to determine if the response is a msg or a result {% endcomment %}
<p align="left">&nbsp;&nbsp;<strong>{{ virus_total.verbose_msg }}</strong></p>
{% else %}
<p align="left">&nbsp;&nbsp;<strong> {{ virus_total.positives }} / {{ virus_total.total }}&nbsp; AVs found this file Malicious! </strong> &nbsp;&nbsp;<a href="{{ virus_total.permalink }}" target="_blank" rel="noopener"><i class="fas fa-th-list"></i> Full Report</a></p>
{% if virus_total.positives > 0 %}
<table id="table_vt" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>AV</th>
<th>DETECTION</th>
</tr>
</thead>
<tbody>
{% for av_name,av_result in virus_total.scans.items %}
{% if av_result.detected == True %}
<tr>
<td>
{{ av_name }}
</td>
<td>
<span class="badge bg-danger">{{ av_result.result }}</span>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% endif %}{% comment %} if results.positive > 0 {% endcomment %}
{% endif %}{% comment %} if this is the upload msg or a result {% endcomment %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
{% endif %}
<!-- ===========================end virus total ================================== -->
<style>
#chartdiv {
width: 100%;
height: 500px;
overflow: hidden;
}
</style>
<a id="serverlocations" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-globe-asia"></i> SERVER LOCATIONS</strong>
</p>
<div class="table-responsive">
<div id="chartdiv"></div>
</div>
<div class="table-responsive">
{% if domains %}
<p></br>This app may communicate with the following OFAC sanctioned list of countries.</p>
<table id="table_ofac" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>DOMAIN</th>
<th>COUNTRY/REGION</th>
</tr>
</thead>
<tbody>
{% for domain, details in domains.items %}
{% if details|key:"ofac" == True %}
<tr><td>{{domain}}</td>
<td>
<strong>IP: </strong>{{details|key:"geolocation"|key:"ip"}} <br/>
<strong>Country: </strong>{{details|key:"geolocation"|key:"country_long"}} <br/>
<strong>Region: </strong>{{details|key:"geolocation"|key:"region"}} <br/>
<strong>City: </strong>{{details|key:"geolocation"|key:"city"}} <br/>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end server locations ================================== -->
<a id="malware_check" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fab fa-searchengin"></i> DOMAIN MALWARE CHECK</strong>
</p>
<div class="table-responsive">
{% if domains %}
<table id="table_malware" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>DOMAIN</th>
<th>STATUS</th>
<th>GEOLOCATION</th>
</tr>
</thead>
<tbody>
{% for domain, details in domains.items %}
<tr><td>{{domain}}</td><td>
{% if details|key:"bad" == "yes" %}
<span class="badge bg-danger">malware</span><br/>
<pre>
<strong>URL: </strong>{{details|key:"domain_or_url"}}
<strong>IP: </strong><span class="badge bg-danger">{{details|key:"ip"}}</span>
<strong>Description: </strong>{{details|key:"desc"}}
</pre>
{% else %}
<span class="badge bg-success">ok</span><br/>
{% endif %}
</td>
<td>
{% if details|key:"geolocation" %}
<strong>IP: </strong>{{details|key:"geolocation"|key:"ip"}} <br/>
<strong>Country: </strong>{{details|key:"geolocation"|key:"country_long"}} <br/>
<strong>Region: </strong>{{details|key:"geolocation"|key:"region"}} <br/>
<strong>City: </strong>{{details|key:"geolocation"|key:"city"}} <br/>
<strong>Latitude: </strong>{{details|key:"geolocation"|key:"latitude"}} <br/>
<strong>Longitude: </strong>{{details|key:"geolocation"|key:"longitude"}} <br/>
<strong>View: <a target="_blank" href="http://maps.google.com/maps?q={{details|key:"geolocation"|key:"latitude"}},{{details|key:"geolocation"|key:"longitude"}}">Google Map</a>
{% else %}
No Geolocation information available.
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end domain malware check ================================== -->
<a id="urls" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-globe"></i> URLS</strong>
</p>
<div class="table-responsive">
{% if urls %}
<table id="table_urls" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>URL</th>
<th>FILE</th>
</tr>
</thead>
<tbody>
{% for urldict in urls %}
<tr>
<td>
{% for u in urldict|key:"urls" %}
{{ u }} <br/>
{% endfor %}
</td>
<td>
<a href="{% url 'view_file_ios' %}?file={{urldict|key:"path"}}&amp;md5={{ md5}}&amp;type=ipa">{{urldict|key:"path"}}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end urls ================================== -->
<a id="firebase" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-database"></i> FIREBASE DATABASE</strong>
</p>
<div class="table-responsive">
{% if firebase_urls %}
<table id="table_firebase" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>FIREBASE URL</th>
<th>DETAILS</th>
</tr>
</thead>
<tbody>
{% for item in firebase_urls %}
<tr>
<td>
{{ item.url }}
</td>
<td>
{% if item.open %}
<span class="badge bg-danger">high</span><br/>Firebase Database is exposed publicly.
{% else %}
<span class="badge bg-primary">info</span><br/>App talks to a Firebase database.
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end firebase db ================================== -->
<a id="emails" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-envelope"></i> EMAILS</strong>
</p>
<div class="table-responsive">
{% if emails %}
<table id="table_emails" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>EMAIL</th>
<th>FILE</th>
</tr>
</thead>
<tbody>
{% for email_dict in emails %}
<tr>
<td>
{% for e in email_dict|key:"emails" %}
{{ e }} <br/>
{% endfor %}
</td>
<td>
<a href="{% url 'view_file_ios' %}?file={{email_dict|key:"path"}}&amp;md5={{ md5}}&amp;type=ipa">{{email_dict|key:"path"}}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end emails ================================== -->
<a id="trackers" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-user-secret"></i> TRACKERS</strong>
</p>
<div class="table-responsive">
{% if trackers %}
<table id="table_trackers" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>TRACKER NAME</th>
<th>CATEGORIES</th>
<th>URL</th>
</tr>
</thead>
<tbody>
{% for trk in trackers|key:"trackers" %}
<tr>
<td>
{{trk.name}}
</td>
<td>
{{trk.categories}}
</td>
<td>
<a target="_blank" href="{{trk.url}}" rel="noopener noreferrer">{{trk.url}}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</div>
</section>
<!-- ===========================end trackers ================================== -->
<a id="secrets" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-key"></i> POSSIBLE HARDCODED SECRETS</strong>
</p>
<div class="list-group">
<p>
{% for val in secrets %}
{{ val }}<br/>
{% endfor %}
</p>
</div>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</section>
<!-- ===========================end secrets ================================== -->
<a id="strings" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fas fa-font"></i> STRINGS</strong>
</p>
<div class="list-group">
{% for string in strings %}
{{string}} <br>
{% endfor %}
</div>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</section>
<!-- ===========================end strings ================================== -->
{% if app_type in 'Dylib,A' %}
<a id="symbols" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fa fa-th"></i> SYMBOLS</strong>
</p>
<div class="list-group">
<p>
{% for val in file_analysis %}
{{ val }}<br/>
{% endfor %}
</p>
</div>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</section>
<!-- ===========================end symbols (only for dylibs) ================================== -->
{% endif %}
{% if app_type not in 'Dylib,A' %}
<a id="libraries" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="fab fa-buffer"></i> LIBRARIES</strong>
</p>
<div class="list-group">
<p>
{% for lib in libraries %}
{{ lib }}
<br/>
{% endfor %}
</p>
</div>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</section>
<!-- ===========================end libraries ================================== -->
<a id="files" class="anchor"></a>
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<p>
<strong><i class="far fa-copy"></i> FILES</strong>
</p>
<div class="list-group">
<p>
{% for file in files %}
{{ file}} <br/>
{% endfor %}
</p>
</div>
</div>
</div>
</div><!-- /.card -->
</div>
<!-- end row -->
</div>
</section>
<!-- ===========================end files ================================== -->
{% endif %}
<!-- end of contents -->
</div>
{% if app_type not in 'Dylib,A' %}
<!-- Modal -->
<div class="modal" id="mplist" tabindex="-1" role="dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Info.plist</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<pre><code>
{{ info_plist }}
</code></pre>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
{% endif %}
<!--Modals-->
<div class="modal" id="sup_list" tabindex="-1" role="dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Suppression Rules</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<table id="sup_table" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Suppression Type</th>
<th>By Rule ID</th>
<th>By Files</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
{% endblock %}
<!--end new UI-->
{% block extra_scripts %}
<!-- DataTables -->
<script src="{% static "datatables/js/pdfmake.min.js" %}"></script>
<script src="{% static "datatables/js/vfs_fonts.js" %}"></script>
<script src="{% static "datatables/js/datatables.combined.min.js" %}"></script>
<script src="{% static "others/js/datatables_init.js" %}"></script>
<script src="{% static "amcharts/core.js" %}"></script>
<script src="{% static "amcharts/maps.js" %}"></script>
<script src="{% static "amcharts/worldIndiaLow.js" %}"></script>
<script src="{% static "amcharts/animated.js" %}"></script>
<script src="{% static "adminlte/plugins/sweetalert2/sweetalert2.min.js" %}"></script>
<script>
var list_suppressions_url = '{% url 'list_suppressions' %}';
var suppress_by_files_url = '{% url 'suppress_by_files' %}';
var suppress_by_rule_url = '{% url 'suppress_by_rule' %}';
var delete_suppression_url = '{% url 'delete_suppression' %}';
</script>
<script src="{% static "others/js/suppression.js" %}"></script>
<script>
// Remove rescan parameter
window.history.replaceState({}, '', window.location.pathname);
// Globals
const csrf = '{{ csrf_token }}'
const pkg = '{{ bundle_id }}'
const hash = '{{ md5 }}'
// Navbar Active
$(".nav-link").on("click", function() {
$(".nav-link").removeClass("active");
$(this).addClass("active");
});
</script>
<script>
// Themes begin
am4core.useTheme(am4themes_animated);
// Themes end
// Create map instance
var chart = am4core.create("chartdiv", am4maps.MapChart);
// Set map definition
chart.geodata = am4geodata_worldIndiaLow;
// Set projection
chart.projection = new am4maps.projections.Miller();
// Create map polygon series
var polygonSeries = chart.series.push(new am4maps.MapPolygonSeries());
// Exclude Antartica
polygonSeries.exclude = ["AQ"];
// Make map load polygon (like country names) data from GeoJSON
polygonSeries.useGeodata = true;
// Configure series
var polygonTemplate = polygonSeries.mapPolygons.template;
polygonTemplate.tooltipText = "{name}";
polygonTemplate.polygon.fillOpacity = 0.6;
// Create hover state and set alternative fill color
var hs = polygonTemplate.states.create("hover");
hs.properties.fill = chart.colors.getIndex(0);
// Add image series
var imageSeries = chart.series.push(new am4maps.MapImageSeries());
imageSeries.mapImages.template.propertyFields.longitude = "longitude";
imageSeries.mapImages.template.propertyFields.latitude = "latitude";
imageSeries.mapImages.template.tooltipText = "{title}";
imageSeries.mapImages.template.propertyFields.url = "url";
var circle = imageSeries.mapImages.template.createChild(am4core.Circle);
circle.radius = 3;
circle.propertyFields.fill = "color";
var circle2 = imageSeries.mapImages.template.createChild(am4core.Circle);
circle2.radius = 3;
circle2.propertyFields.fill = "color";
circle2.events.on("inited", function(event){
animateBullet(event.target);
})
function animateBullet(circle) {
var animation = circle.animate([{ property: "scale", from: 1, to: 5 }, { property: "opacity", from: 1, to: 0 }], 1000, am4core.ease.circleOut);
animation.events.on("animationended", function(event){
animateBullet(event.target.object);
})
}
var colorSet = new am4core.ColorSet();
imageSeries.data = [
{% if domains %}
{% for domain, details in domains.items %}
{% if details|key:"geolocation" %}
{
'title': '{{details|key:"geolocation"|key:"country_long"}}/{{details|key:"geolocation"|key:"region"}}',
'latitude': {{details|key:"geolocation"|key:"latitude"}},
'longitude': {{details|key:"geolocation"|key:"longitude"}},
'color':colorSet.next()
},
{% endif %}
{% endfor %}
{% endif %}
];
</script>
{% endblock %}