id: checkpoint-firewall-enum

info:
  name: Check Point Firewall - Detect
  author: pussycat0x
  severity: info
  reference:
    - https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/checkpoint_hostname.rb
  metadata:
    verfied: true
    shodan-query: "product:\"Check Point Firewall\""
    max-request: 1
  tags: js,network,firewall,checkpoint,enum,discovery

javascript:
  - pre-condition: |
      isPortOpen(Host,Port);
    code: |
      let packet = bytes.NewBuffer();
      let prob = "\x51\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x0bsecuremote\x00"
      data = packet.Write(prob)
      const c = require("nuclei/net");
      let conn = c.Open('tcp', `${Host}:${Port}`);
      conn.Send(data);
      let resp = conn.RecvFullString();
      let regex = /CN=(.+),O=(.+?)\./i;
      let match = resp.match(regex);
      let fw_hostname = match[1];
      let sc_hostname = match[2];
      let result = (`Firewall Host: ${fw_hostname}, SmartCenter Host: ${sc_hostname}`);
      result

    args:
      Host: "{{Host}}"
      Port: 264

    extractors:
      - type: dsl
        dsl:
          - response
# digest: 4a0a0047304502210087a31fdbe5c31a88b456780f5c5110950ec519ba7a9d8fae0498e0d165310e8e02204f246c85e732a030586d4e5c0502610fc19e75614ef665fc554fd33b2fe06a73:922c64590222798bb761d5b6d8e72950