调试攻击模块
以下各节提供了有关如何调试攻击模块可能遇到的问题的信息。
将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实例,您可以在其中调试攻击类。
建议遵循以下步骤:
启动AppSpider UI并创建用于调试的扫描配置。
将Visual Studio攻击模块项目设置:属性->调试->启动外部程序更改为ScanEngine.exe,以便在每次尝试调试时启动新的ScanEngine.exe。由于ScanEngine.exe是COM组件,COM客户端将自动连接到您启动的实例。
为了能够命中断点,您需要使用模块DLL将AttackModule项目设置输出目录设置为config目录。
确保没有运行ScanEngine.exe(否则AppSpider命令行工具可能连接到错误的ScanEngine.exe)。
对于每个调试迭代,您需要:
从Visual Studio启动调试(启动将加载攻击类的新ScanEngine.exe)
使用命令行工具(AppSpiderCMD.exe)运行扫描,将启动扫描,例如:
AppSpiderCMD.exe——config "C: Documents and Settings\docauthor\My Documents\AppSpider\scans\myscan\myscan.scfg".
