V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ChiChou
V2EX  ›  Node.js

抓取 TCP 端口 banner,支持 tls

  •  1
     
  •   ChiChou · Apr 19, 2016 · 5901 views
    This topic created in 3672 days ago, the information mentioned may be changed or developed.

    写了一个扫描 banner 的工具,其实就是个极简版的 zgrab 。

    zgrab 每个探针返回的数据 schema 都不一样,而且默认的 JSON 编码对二进制非常不友好,遇上蛋疼的 python 2 不停地报 UnicodeError 。怒而造了个轮子。目前只实现了直接回显(如 Telnet, SSH, 和 FTP ),带 payload (如 http ), tls (如 IMAPS 和 https )的情况,其实可以涵盖绝大多数抓 TCP 服务 banner 的场景了。

    https://github.com/ChiChou/grab.js/blob/master/lib/index.js

    调用:

    const grabber = require('grab.js');
    grabber.grab(ip, port)
      .payload(new Buffer('ping'))
      .run()
      .then(result => { /* 在这里读取 result.banner ,如为 tls 还会返回证书信息 */ })
      .catch(err => { /* 超时、目标不可达等错误 */ })
    

    由于 http 探针需要设置 Host 头,所以接下来打算给 payload 增加字符串模板字段。

    不支持 udp 协议,因为 udp 在 zmap 的探针里自带了 banner 功能。 zgrab 还支持一些工控协议,由于懒癌晚期,加上对我没太大用处,不打算做了。

    与 zmap 组合,运行效果如下(在 Linux 下需要 sudo ):

    5 replies    2016-04-20 18:33:15 +08:00
    ljcarsenal
        1
    ljcarsenal  
       Apr 19, 2016
    话说 node 4.0 支持 arrow function 和 class 语法么
    123s
        2
    123s  
       Apr 19, 2016
    @ljcarsenal 最新版的 4.x 应该是支持的吧
    Phant0m
        3
    Phant0m  
       Apr 19, 2016
    zmap masscan 本身就支持部分端口 banner 的提取,其中就包括 ssh 。。。
    Nightink
        4
    Nightink  
       Apr 19, 2016
    @ljcarsenal 支持的
    ChiChou
        5
    ChiChou  
    OP
       Apr 20, 2016
    @Phant0m 我已经吐槽了 zgrab 的问题才自己写的哦
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3329 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 10:45 · PVG 18:45 · LAX 03:45 · JFK 06:45
    ♥ Do have faith in what you're doing.