导语:Scrounger是一个模块化工具,主要是去执行移动应用程序安全评估期间所需的日常任务。它能够十分轻易地将主要的移动操作系统(Android和iOS)整合到一个工具中,使用方便,文档记录简单,易于扩展。
Scrounger是一个模块化工具,主要是去执行移动应用程序安全评估期间所需的日常任务。它能够十分轻易地将主要的移动操作系统(Android和iOS)整合到一个工具中,使用方便,文档记录简单,易于扩展。其包含许多构建在强大核心之上的模块。是因为其具有可扩展性,就像Metasploit一样。因此,如果您希望Scrounger执行其他检查,您只需添加一个新模块,然后可以通过Scrounger的交互式控制台或其命令行界面执行。(视频:https://youtu.be/ipjHyTZ-ixk)
此外,它包含Android和iOS模块。因此,Scrounger不是使用多种工具在移动应用程序评估期间为您提供帮助,而是为您提供仅使用一个工具并且只学习一组命令的可能性,这两个命令都适用于操作系统。 Scrounger已经捆绑了几个模块,可以运行这些模块来对移动应用程序执行多项检查。
运行要求
Scrounger的运行有一些要求,例如在主机和某些iOS二进制文件上安装某些软件包。但是,它已经打包了大多数iOS二进制文件,并提供了一个在设备上安装它们的模块。而打包的要求也在Scrounger GitHub页面上被指定了。如果不满足它的先决条件,Scrounger将不会运行某些模块。满足先决条件的所有模块则可以没有任何问题的运行。
另一个主要的要求是要能够是越狱和root的设备。
用法
使用Scrounger有两种主要方式:命令行或交互式控制台。
命令行主要用于执行所有检查或制作任何自动化脚本。另一方面,控制台将用于仅运行一定数量的模块或执行特定操作,例如反编译,重新编译和签名应用程序,提取某些文件等。
命令行选项
使用命令行时,您可以列出可用模块及其参数,列出可用设备,运行完整分析(运行特定类型应用程序的所有模块 – Android或iOS)并运行特定模块,同时传递必要的论点。
以下是在Android应用程序上使用命令行Scrounger运行特定模块的示例。
首先,我们列出我们要运行的模块所需的选项,然后运行它。
控制台示例
控制台是主要的方式。它包含几个强大的选项,还有足够的空间进行进一步改进。控制台已经提供自动完成(包括文件路径自动完成),模块搜索,重用其他模块的结果作为参数,使用之间的命令历史记录以及反向搜索已使用命令的能力。
以下是控制台列出iOS的可用模块的示例。
列出模块时,还将显示模块的功能的简要说明。对于iOS和Android,有两种主要类型的模块,misc和analysis。 misc模块是辅助模块,对应用程序,其文件和/或设备执行多个操作。为了评估是否存在任何安全漏洞,analysis模块则可以分析应用程序文件,应用程序本身或应用程序生成的文件。
首先,我们运行命令选项以显示特定模块所需的参数(就像使用Metasploit时一样)。 Options命令还可以显示全局选项。如果设置了此参数并且使用了具有相同参数的模块,则将自动设置其值。一旦设置了所需的参数,我们再次运行选项以确保正确设置所有内容并使用命令run运行模块。
我们可以看到,Scrounger将通过运行某些模块生成一些输出和结果。然后,这些结果可以被其他模块使用。
我们可以使用命令show results来查看执行其他模块返回的所有存储结果。 print命令可用于显示存储在某个结果上的值,也可用于输出存储在全局或模块参数中的值。如果在另一个模块中运行感兴趣的结果,则可以通过使用result:keyword开头的所需结果设置所需的参数来使用它。设置这些参数时,自动完成功能也会查找已保存的结果表并建议它们。一切都设置好后,我们就可以简单地运行模块了。
设备示例
有几个模块需要与iOS或Android设备进行交互。在命令行或控制台中添加设备非常容易。
在此示例中,使用add_device命令将Android设备添加到控制台(这里也提供自动完成功能:它将尝试获取连接的设备,并将其显示为一个选项)。然后,使用set global命令,我们将设备设置为设备1。使用misc / list_apps命令时,由于已设置全局选项并且存在具有相同名称的模块参数,因此它将自动填充该参数的值。
可扩展性
Scrounger还可以轻松扩展,包括自定义模块,并根据测试者的偏好执行自定义检查(我们欢迎提交的内容包含在Scrounger的未来版本中)。安装Scrounger时,将为您创建所有必需的目录。它在〜/ .scrounger / modules / custom下创建一个自定义模块目录。
在以下示例中,在custom / analysis / ios / false_positive下创建了自定义模块,这意味着此false_positive模块是针对iOS应用程序运行的。
创建自己的模块
创建自定义模块非常简单,只需要三个步骤:根据模块要执行的操作在正确的模块目录下创建文件,创建两个变量元和选项,以及函数运行。
下面是一个例子。
from scrounger.core.module import BaseModule class Module(BaseModule): meta = { "author": "RDC", "description": """Just a Test Analysis module""", "certainty": 100 } options = [ { "name": "output", "description": "local output directory", "required": False, "default": None }, ] def run(self): print("This is a print from the custom module") return { "print": "This will be print by scrounger's console.", "false_positive_result": {"title": "This is a False Positive - just a test", "details": "No details", "severity": "Low", "report": True} }
下次启动scrounger-console时,新创建的文件将自动添加到可用模块列表中。在创建模块时,还需要考虑更多的元素,尤其是analysis模块。另外Scrounger提供了有关所有可用模块的全面文档以及有关如何创建自定义模块的详细说明:https://github.com/nettitude/scrounger/docs
真实案例场景
在典型的移动应用程序评估中,我们将尝试运行尽可能多的模块。为方便起见,有一个模块可以在控制台中运行名为full_analysis的所有模块,在命令行中运行-f选项。
此选项/模块将反编译应用程序并运行所有必需的辅助模块并运行所有其他可用模块。然后它创建一个JSON文件,其中包含返回report = True的每个模块的结果和详细信息。命令行可执行文件还有一个选项( – ),它将读取JSON文件并将所有结果和详细信息打印到控制台。
最后想说的话
Scrounger的未来有很多可能性。下一个要实现的功能包含在Scrounger的GitHub的README的最后一节:https://github.com/nettitude/scrounger。如果你有任何反馈,想法或bug都可以在GitHub上提交。
下载
GitHub:https://github.com/nettitude/scrounger