mirror of
https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
synced 2026-10-11 22:50:09 +00:00
Merge remote-tracking branch 'MobSF/master'
This commit is contained in:
@@ -22,7 +22,7 @@ MALWARE_DB_DIR = TOOLS_DIR = os.path.join(
|
||||
settings.BASE_DIR, 'MalwareAnalyzer/malwaredb/')
|
||||
|
||||
|
||||
def apkid_analysis(app_dir):
|
||||
def apkid_analysis(app_dir, apk_file):
|
||||
"""APKiD Analysis of DEX file"""
|
||||
if settings.APKID_ENABLED:
|
||||
dex_file = app_dir + 'classes.dex'
|
||||
@@ -79,6 +79,39 @@ def apkid_analysis(app_dir):
|
||||
else:
|
||||
apkid_dict["manipulator"] = ""
|
||||
|
||||
apkid_dict["result"] = ""
|
||||
print("[INFO] APKiD Analysis on apk file")
|
||||
result = apkid.scan(apk_file, 30, True)
|
||||
if "files" in result:
|
||||
apkid_dict["result"] = result["files"][0]["results"]
|
||||
if "apkid_version" in result:
|
||||
apkid_dict["apkid_version"] = result["apkid_version"]
|
||||
|
||||
if "anti_vm" in apkid_dict["result"]:
|
||||
apkid_dict["anti_vm"] = apkid_dict["result"]["anti_vm"]
|
||||
|
||||
if "compiler" in apkid_dict["result"]:
|
||||
apkid_dict["compiler"] = apkid_dict["result"]["compiler"]
|
||||
|
||||
if "packer" in apkid_dict["result"]:
|
||||
apkid_dict["packer"] = apkid_dict["result"]["packer"]
|
||||
|
||||
if "obfuscator" in apkid_dict["result"]:
|
||||
apkid_dict["obfuscator"] = apkid_dict["result"]["obfuscator"]
|
||||
|
||||
if "abnormal" in apkid_dict["result"]:
|
||||
apkid_dict["abnormal"] = apkid_dict["result"]["abnormal"]
|
||||
|
||||
if "anti_disassembly" in apkid_dict["result"]:
|
||||
apkid_dict["anti_disassembly"] = apkid_dict[
|
||||
"result"]["anti_disassembly"]
|
||||
|
||||
if "dropper" in apkid_dict["result"]:
|
||||
apkid_dict["dropper"] = apkid_dict["result"]["dropper"]
|
||||
|
||||
if "manipulator" in apkid_dict["result"]:
|
||||
apkid_dict["manipulator"] = apkid_dict["result"]["manipulator"]
|
||||
|
||||
apkid_dict["result"] = ""
|
||||
return apkid_dict
|
||||
return {}
|
||||
|
||||
+2
-2
@@ -151,11 +151,11 @@ except NameError:
|
||||
Exception('Please create a %s file with random characters \
|
||||
to generate your secret key!' % SECRET_FILE)
|
||||
# Run Once
|
||||
# Windows Setup
|
||||
windows_config_local(MobSF_HOME)
|
||||
utils.make_migrations(BASE_DIR)
|
||||
utils.migrate(BASE_DIR)
|
||||
utils.kali_fix(BASE_DIR)
|
||||
# Windows Setup
|
||||
windows_config_local(MobSF_HOME)
|
||||
|
||||
#=============================================
|
||||
|
||||
|
||||
+85
-21
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import signal
|
||||
import platform
|
||||
import random
|
||||
import subprocess
|
||||
@@ -77,13 +78,14 @@ def printMobSFverison():
|
||||
print("Dist: " + str(platform.dist()))
|
||||
FindJava(True)
|
||||
FindVbox(True)
|
||||
check_basic_env()
|
||||
adb_binary_or32bit_support()
|
||||
check_update()
|
||||
|
||||
|
||||
def check_update():
|
||||
try:
|
||||
print("\n[INFO] Checking for Update.")
|
||||
print("[INFO] Checking for Update.")
|
||||
github_url = "https://raw.githubusercontent.com/MobSF/Mobile-Security-Framework-MobSF/master/MobSF/settings.py"
|
||||
try:
|
||||
proxies, verify = upstream_proxy('https')
|
||||
@@ -232,26 +234,50 @@ def FindVbox(debug=False):
|
||||
if debug:
|
||||
PrintException("[ERROR] Cannot find VirtualBox path.")
|
||||
|
||||
# Maintain JDK Version
|
||||
JAVA_VER = '1.7|1.8|1.9|2.0|2.1|2.2|2.3'
|
||||
|
||||
|
||||
def FindJava(debug=False):
|
||||
""" Find Java """
|
||||
# Maintain JDK Version
|
||||
java_versions = '1.7|1.8|1.9|2.0|2.1|2.2|2.3|8|9'
|
||||
"""
|
||||
This code is needed because some people are not capable
|
||||
of setting java path :-(
|
||||
"""
|
||||
win_java_paths = [
|
||||
"C:/Program Files/Java/",
|
||||
"C:/Program Files (x86)/Java/",
|
||||
"D:/Program Files/Java/",
|
||||
"D:/Program Files (x86)/Java/",
|
||||
"E:/Program Files/Java/",
|
||||
"E:/Program Files (x86)/Java/",
|
||||
"F:/Program Files/Java/",
|
||||
"F:/Program Files (x86)/Java/",
|
||||
"G:/Program Files/Java/",
|
||||
"G:/Program Files (x86)/Java/",
|
||||
"H:/Program Files/Java/",
|
||||
"H:/Program Files (x86)/Java/",
|
||||
"I:/Program Files/Java/",
|
||||
"I:/Program Files (x86)/Java/",
|
||||
]
|
||||
try:
|
||||
err_msg1 = "[ERROR] Oracle JDK 1.7 or above is not found!"
|
||||
if len(settings.JAVA_DIRECTORY) > 0 and isDirExists(settings.JAVA_DIRECTORY):
|
||||
return settings.JAVA_DIRECTORY
|
||||
if platform.system() == "Windows":
|
||||
if isDirExists(settings.JAVA_DIRECTORY):
|
||||
if settings.JAVA_DIRECTORY.endswith("/"):
|
||||
return settings.JAVA_DIRECTORY
|
||||
elif settings.JAVA_DIRECTORY.endswith("\\"):
|
||||
return settings.JAVA_DIRECTORY
|
||||
else:
|
||||
return settings.JAVA_DIRECTORY + "/"
|
||||
elif platform.system() == "Windows":
|
||||
if debug:
|
||||
print("\n[INFO] Finding JDK Location in Windows....")
|
||||
# JDK 7 jdk1.7.0_17/bin/
|
||||
for java_path in ["C:/Program Files/Java/",
|
||||
"C:/Program Files (x86)/Java/"]:
|
||||
for java_path in win_java_paths:
|
||||
if os.path.isdir(java_path):
|
||||
for dirname in os.listdir(java_path):
|
||||
if "jdk" in dirname:
|
||||
win_java_path = java_path + dirname + "/bin/"
|
||||
args = [win_java_path + "java", "--version"]
|
||||
args = [win_java_path + "java", "-version"]
|
||||
dat = RunProcess(args)
|
||||
if "java" in dat:
|
||||
if debug:
|
||||
@@ -262,7 +288,7 @@ def FindJava(debug=False):
|
||||
java_home = os.environ.get(env)
|
||||
if java_home and os.path.isdir(java_home):
|
||||
win_java_path = java_home + "/bin/"
|
||||
args = [win_java_path + "java", "--version"]
|
||||
args = [win_java_path + "java", "-version"]
|
||||
dat = RunProcess(args)
|
||||
if "java" in dat:
|
||||
if debug:
|
||||
@@ -274,31 +300,42 @@ def FindJava(debug=False):
|
||||
return "java"
|
||||
else:
|
||||
if debug:
|
||||
print("\n[INFO] Finding JDK Location in Linux/MAC....")
|
||||
MAC_LINUX_JAVA = "/usr/bin/"
|
||||
args = [MAC_LINUX_JAVA + "java"]
|
||||
print("[INFO] Finding JDK Location in Linux/MAC....")
|
||||
# Check in Environment Variables
|
||||
for env in ["JDK_HOME", "JAVA_HOME"]:
|
||||
java_home = os.environ.get(env)
|
||||
if java_home and os.path.isdir(java_home):
|
||||
lm_java_path = java_home + "/bin/"
|
||||
args = [lm_java_path + "java", "-version"]
|
||||
dat = RunProcess(args)
|
||||
if "oracle" in dat:
|
||||
if debug:
|
||||
print("\n[INFO] Oracle Java is installed!")
|
||||
return lm_java_path
|
||||
mac_linux_java_dir = "/usr/bin/"
|
||||
args = [mac_linux_java_dir + "java"]
|
||||
dat = RunProcess(args)
|
||||
if "oracle" in dat:
|
||||
args = [MAC_LINUX_JAVA + "java", '-version']
|
||||
args = [mac_linux_java_dir + "java", '-version']
|
||||
dat = RunProcess(args)
|
||||
f_line = dat.split("\n")[0]
|
||||
if re.findall(JAVA_VER, f_line):
|
||||
if re.findall(java_versions, f_line):
|
||||
if debug:
|
||||
print("\n[INFO] JDK 1.7 or above is available")
|
||||
return MAC_LINUX_JAVA
|
||||
print("[INFO] JDK 1.7 or above is available")
|
||||
return mac_linux_java_dir
|
||||
else:
|
||||
err_msg = "[ERROR] Please install Oracle JDK 1.7 or above"
|
||||
if debug:
|
||||
print(Color.BOLD + Color.RED + err_msg + Color.END)
|
||||
return ""
|
||||
return "java"
|
||||
else:
|
||||
if debug:
|
||||
print(Color.BOLD + Color.RED + err_msg1 + Color.END)
|
||||
return ""
|
||||
return "java"
|
||||
except:
|
||||
if debug:
|
||||
PrintException("[ERROR] Oracle Java (JDK >=1.7) is not found!")
|
||||
return ""
|
||||
return "java"
|
||||
|
||||
|
||||
def RunProcess(args):
|
||||
@@ -533,3 +570,30 @@ def adb_binary_or32bit_support():
|
||||
print(Color.BOLD + Color.ORANGE + msg + Color.END)
|
||||
else:
|
||||
print(msg)
|
||||
|
||||
|
||||
def check_basic_env():
|
||||
"""Check if we have basic env for MobSF to run"""
|
||||
print("[INFO] MobSF Basic Environment Check")
|
||||
try:
|
||||
import capfuzz
|
||||
except ImportError:
|
||||
PrintException("[ERROR] CapFuzz not installed!")
|
||||
os.kill(os.getpid(), signal.SIGTERM)
|
||||
try:
|
||||
import lxml
|
||||
except ImportError:
|
||||
PrintException("[ERROR] lxml is not installed!")
|
||||
os.kill(os.getpid(), signal.SIGTERM)
|
||||
if platform.system() == "Windows":
|
||||
java = settings.JAVA_PATH + 'java.exe'
|
||||
else:
|
||||
java = settings.JAVA_PATH + 'java'
|
||||
if not isFileExists(java):
|
||||
print("[ERROR] Oracle Java is not available or `JAVA_DIRECTORY` in settings.py is configured incorrectly!")
|
||||
print("JAVA_DIRECTORY=%s" % settings.JAVA_DIRECTORY)
|
||||
print('''Example Configuration:
|
||||
JAVA_DIRECTORY = "C:/Program Files/Java/jdk1.7.0_17/bin/"
|
||||
JAVA_DIRECTORY = "/usr/bin/"
|
||||
''')
|
||||
os.kill(os.getpid(), signal.SIGTERM)
|
||||
|
||||
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
@@ -139,7 +139,7 @@ def jar_2_java(app_dir, tools_dir):
|
||||
):
|
||||
jd_path = settings.CFR_DECOMPILER_BINARY
|
||||
else:
|
||||
jd_path = os.path.join(tools_dir, 'cfr_0_119.jar')
|
||||
jd_path = os.path.join(tools_dir, 'cfr_0_128.jar')
|
||||
args = [settings.JAVA_PATH + 'java', '-jar',
|
||||
jd_path, jar_path, '--outputdir', output]
|
||||
elif settings.DECOMPILER == "procyon":
|
||||
|
||||
@@ -1292,7 +1292,7 @@ def get_manifest_file(app_path, app_dir, tools_dir):
|
||||
if len(settings.APKTOOL_BINARY) > 0 and isFileExists(settings.APKTOOL_BINARY):
|
||||
apktool_path = settings.APKTOOL_BINARY
|
||||
else:
|
||||
apktool_path = os.path.join(tools_dir, 'apktool_2.3.2.jar')
|
||||
apktool_path = os.path.join(tools_dir, 'apktool_2.3.3.jar')
|
||||
output_dir = os.path.join(app_dir, "apktool_out")
|
||||
args = [settings.JAVA_PATH + 'java', '-jar',
|
||||
apktool_path, "--match-original", "-f", "-s", "d", app_path, "-o", output_dir]
|
||||
|
||||
@@ -184,7 +184,7 @@ def static_analyzer(request, api=False):
|
||||
cert_dic = cert_info(
|
||||
app_dic['app_dir'], app_dic['tools_dir'])
|
||||
apkid_results = apkid_analysis(app_dic[
|
||||
'app_dir'])
|
||||
'app_dir'], app_dic['app_path'])
|
||||
dex_2_jar(app_dic['app_path'], app_dic[
|
||||
'app_dir'], app_dic['tools_dir'])
|
||||
dex_2_smali(app_dic['app_dir'], app_dic['tools_dir'])
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
Django==2.0.4
|
||||
Django==2.0.5
|
||||
pdfkit==0.6.1
|
||||
configparser==3.5.0
|
||||
androguard==3.1.2
|
||||
androguard==3.2.0
|
||||
lxml==4.2.1
|
||||
rsa==3.4.2
|
||||
git+https://github.com/MobSF/CapFuzz.git
|
||||
|
||||
Reference in New Issue
Block a user