Skip to content

Eviden0/PrintRaptor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

关于PrintRaptor

GPT 给起的名字哈

Print(指纹) + Raptor(迅猛,快速识别)

主打一个又快又猛

设计

yaml文件作为配置文件,而非常见的命令行,利用AST去解析表达式匹配对应的规则(这部分AST不太会,可能写的很烂,凑合着用()

思考

YAML字段规范,主要还是参照现有的指纹库吧,将其格式改改也能用~

尽可能的压缩yaml的字段数了,提供该有的东西即可,毕竟web指纹这块一个是看有没有自己独有的判断路径和特征,如果要特别精确的识别一个系统也是比较困难,可能需要人工的经验积累,先有个大概探测吧~

PS: 为啥想采用YAML去解析呢,感觉还是后续方便指纹的添加和管理,再一个是看起来写起来都比较简易直观,后续也方便与nuclei联动!!!

又想起浪师傅的一句话了,没有精准的指纹识别,后续的漏洞打击肯定是没意义的,犹如大炮打蚊子

现有web指纹识别工具感觉已经挺厉害了,带路径扫描的好像还没看到有支持的,我来试试优化优化,刚好展示一下自己的屎山代码能力,好久没写代码了,锻炼锻炼~

举例

初始yaml格式模板如下:

 - name: flagTest # 该指纹的名字
   path: /flag.jsp # 对应的web路径,以根为主
   expression: body="flag{test_flag}" # 匹配关键字,暴露了哈~
   tag: flag测试 # tag 便于后续分类管理

采集的banner信息

 type Banner struct {
     ResponseData *fingerprints.ResponseData //包含header,body,hash,用于指纹匹配
     CompiledRule *fingerprints.CompiledRule //加载的指纹识别规则
     BodyLength   string //包的大小
     Cert         string //tls证书信息
     Title        string //网站标题
     ICP          string //备案信息
     FoundDomain  string //域名信息
     FoundIP      string //ip信息
 }

扫描模式

快速模式: 默认加载根路径的数据包(只发一次),加载多个指纹,只对一个数据包做多个指纹rule的比较

精细模式: 加载特殊路径的指纹,一个指纹对应一个banner去解析,应该写成一个原子操作

使用指北

当前目录下放config.yaml文件,默认通过其加载配置完成初始化

给一份demo示例:

# 添加可自定义的http header
ReqHeader:
  - Content-Type: application/xml
  - Cookie: 'phpsessionid: 123'
# 添加代理
Proxy: <http://localhost:8000>
# 添加超时时间
TimeOut: 1
#  post请求的body,默认base64解码再使用,可以直接打反序列化链哦~
# TODO 后续支持直接从文件加载!
POST: "dXNlcm5hbWU9YWRtaW4mcGFzc3dvcmQ9MTIzNDU2"
# ip文件位置
TargetFilePath: 'F:\\\\Code\\\\Golang\\\\Hacking\\\\PrintRaptor\\\\source\\\\url.txt'
# 指纹文件路径
FingerFilePath: 'F:\\\\Code\\\\Golang\\\\Hacking\\\\PrintRaptor\\\\source\\\\special.yaml'
# 指定模式,默认为快速模式,即不会发送很多包,直接取根路径的一个包就直接进行指纹匹配了
FastMode: false
MongoUri: mongodb://localhost:27017
# 1.写入csv文件 2. 写入mongodb 3.webhook通知, 默认是 1
SaveMode: 2

TODO

  1. 支持并发模式,这个得速度支持了,能大大提升效率(√)
  2. 日志库的编写(这部分也得速度支持了)(x)
  3. 根据rank的分值来显示程度,可以顺带用于简易poc扫描,rank分高一些(√)
  4. 支持json,csv,数据库导出(√)
  5. 添加资产关联?(终极目标之一)
  6. 图形化,看板展示(审美不行~)
  7. 优化指纹库,yakit给的指纹库实在是太烂了,根本用不得…

感谢

  1. https://github.com/0x727/FingerprintHub/tree/v3 也是用yaml语法解析的扫描器
  2. https://github.com/lcvvvv/appfinger/ 浪师傅的kscan模块嘿嘿,学习学习!!!手搓表达式解析,有点意思
  3. https://github.com/chainreactors/templates/tree/master/fingers 参考指纹库

战斗实例

与fofa的联动

image

重点关注这个554783085,对应邮件服务,那么我们去fofa上看看能不能对应上

image 1

速度与激情

最高100的并发协程,CPU已经快吃不住了…

MongoDB 写入

image 2

CSV 文件写入

image 3

About

PrintRaptor,一款Web指纹识别工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages