调试攻击模块

以下各节提供了有关如何调试攻击模块可能遇到的问题的信息。

将Visual Studio附加到正在运行的扫描

攻击模块dll由ScanEngine.exe进程加载。要调试攻击模块,应该在扫描启动后将Visual Studio附加到ScanEngine.exe进程中,代码类型应该设置为“Managed (v4.0) code, Native code”,如下图所示。

注意,可以同时运行多个ScanEngine.exe进程。AppSpider为用户打开的每个扫描配置创建一个ScanEngine.exe进程。建议附加到所有ScanEngine.exe进程,并在调试期间只运行一次扫描。

正如前面提到的,AppSpider运行来自多个线程的攻击,这使得调试模块变得困难,因为多个线程将执行正在调试的代码。为了简化调试,建议以单线程模式运行扫描,这可以在扫描配置文件中设置。这个设置的XPath是/ScanConfig/PerformanceConfig/ singlethreadescan——设置为1。它也可以使用AppSpider GUI的高级选项部分进行设置,如果正在使用的话。有关高级选项的详细信息,请参见AppSpider 6.2用户指南。

从Visual Studio启动新扫描

在许多情况下,附加到正在运行的扫描并不能解决所有的调试需求。例如,如果有多个扫描正在运行,您可能不知道要连接到哪个扫描引擎。另外,由于ScanEngine实例是在扫描启动后创建的,因此您可能没有足够的时间及时附加调试器以调试相关代码。本节描述一种替代方法。

要使用installset调试攻击模块,您始终需要两个进程:ScanEngine.exe(加载攻击模块并执行所有扫描活动)和驱动进程。建议使用NTO Spider命令行工具(C:\Program Files\Rapid7\AppSpider 6\ScanEngine\AppSpiderCMD.exe;您需要选择在安装过程中安装它)来驱动ScanEngine.exe。它只创建一个ScanEngine.exe实例,如果启动新的ScanEngine.exe,它将连接到该实例。您需要更改攻击模块的项目设置以自动启动ScanEngine.exe。这样,当AppSpider命令工具尝试运行扫描时,它将连接到Visual Studio创建的ScanEngine.exe实例,您可以在其中调试攻击类。

建议遵循以下步骤:

  1. 启动AppSpider UI并创建用于调试的扫描配置。

  2. 将Visual Studio攻击模块项目设置:属性->调试->启动外部程序更改为ScanEngine.exe,以便在每次尝试调试时启动新的ScanEngine.exe。由于ScanEngine.exe是COM组件,COM客户端将自动连接到您启动的实例。

  3. 为了能够命中断点,您需要使用模块DLL将AttackModule项目设置输出目录设置为config目录。

  4. 确保没有运行ScanEngine.exe(否则AppSpider命令行工具可能连接到错误的ScanEngine.exe)。

对于每个调试迭代,您需要:

  1. 从Visual Studio启动调试(启动将加载攻击类的新ScanEngine.exe)

  2. 使用命令行工具(AppSpiderCMD.exe)运行扫描,将启动扫描,例如:AppSpiderCMD.exe——config "C: Documents and Settings\docauthor\My Documents\AppSpider\scans\myscan\myscan.scfg".