Nmap 扫描启用 SNMP 的设备

Nmap 扫描启用 SNMP 的设备

Nmap 扫描网络以查找启用 SNMP 的设备:

sudo nmap -sU -p 161 --script default,snmp-sysdescr 26.14.32.120/24

我正在尝试弄清楚如何使 nmap 仅返回snmp-sysdescr对象中具有特定条目的设备:

snmp-sysdescr:“目标设备名称”

那可能吗?

答案1

Nmap 不包含太多输出过滤选项:--open将限制输出到包含开放端口的主机(任何开放端口)。-v0将阻止任何输出到屏幕。

相反,实现这一目标的最佳方法是保存XML输出扫描的信息(使用-oX-oA输出选项),​​其中将以易于解析的 XML 格式包含扫描收集的所有信息。然后您可以使用 XML 解析工具对其进行过滤以包含您想要的信息。

一种命令行 XML 解析器是xmlstarlet。您可以使用此命令仅过滤掉sysdescr包含字符串“example”的目标的 IP 地址:

xmlstarlet sel -t -m "//port/script[@id='snmpsysdescr' and contains(@output,'example')]/../../../address[@addrtype='ipv4']" -v @addr -n output.xml

你也可以这样做恩迪夫,这是与 Nmap 一起分发的工具和 Python 2 库:

#!/usr/bin/env python

import ndiff

def sysdescr_contains (value, host):
  for port in host.ports:
    for script in filter(lambda x: x.id == u"snmp-sysdescr", port.script_results):
      if value in script.output:
        return True
  return False

def usage ():
  print """Look for <substring> in snmp-sysdescr output and print matching hosts.
Usage: {} <filename.xml> <substring>"""

if __name__ == "__main__":
  import sys
  if len(sys.argv) < 3:
    usage()
    exit(1)

  scan = ndiff.Scan()
  scan.load_from_file(sys.argv[1])

  for host in filter(lambda x: sysdescr_contains(sys.argv[2], x), scan.hosts):
    print host.format_name()

大多数常见编程语言都提供其他 Nmap 输出解析库。

答案2

我们可以通过以下命令使用 nmap nmap -p 161 ip, nmap -p 162 ip

如果主机或设备上的端口是开放的,则开放市场中存在可导致可写 SNMP 信息的漏洞利用

如果端口关闭,则不会出现漏洞

我希望这个信息有效

相关内容