Luna 是一款被动式扫描器。由于代码轻量,扫描速度相对较慢,大巧若拙,其实真正的扫描不需要发大量的探测包,也不需要有很快的扫描速率。在Luna中,以单个http请求为单元,针对该请求会适配并调用插件。正是由于该特性,Luna可按http请求包为元素并行启动,如果有提速的需求可以考虑再加入异步

        Luna目前需要加载的第三方python库有两个——colorama和略加改装的httplib。colorama主要用于扫描运行时打印屏幕的高亮显示。httplib主要用于收发http请求,值得介绍的是,httplib代码轻量,易于移植,在引入时首先考虑requests库,但是requests封装过多,不适合直接发送http原始报文。又考虑socket,但是socket较为原始,对于经gzip压缩后的请求解码支持较差,故此采用httplib。

        相对于使用Luna进行大规模漏洞扫描、挖掘漏洞,笔者更希望Luna被作为一款学习和了解http协议的工具。因为我们在使用类似awvs、appscan等商业扫描器时,会较为关注扫描结果,而不是扫描过程。而Luna会将扫描过程剖析出来,让测试人员可以控制每一个扫描环节,就像是在亲手做渗透测试一样

        当然,由于时间和精力问题,Luna仍存在许多需要改进的地方,这里做一个V1.0版本的功能list,和后续需要补充和改进的checklist:

目前已支持的功能有:

  • 扫描后保存cgi列表及参数,存放于luna.db(sqlite)

  • 根据cgi和参数进行去重

  • 预扫描

  • 可扩展插件

  • 可视化扫描报告

后续需要完善的功能有:

  • https支持

  • multipart支持

  • 人工交互介入

  • 速率控制

  • 断点续扫

  • 插件健康度监控

  • 完善日志记录

  • http指纹识别

  • 爬虫

  • 端口探测与信息收集