SNMP 지원 장치에 대한 Nmap 스캔

SNMP 지원 장치에 대한 Nmap 스캔

Nmap은 네트워크에서 SNMP 지원 장치를 검색합니다.

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

snmp-sysdescrnmap이 개체에 특정 항목이 있는 장치 만 반환하도록 만드는 방법을 알아내려고 합니다 .

snmp-sysdescr: "대상 장치 이름"

그게 가능합니까?

답변1

Nmap에는 많은 출력 필터링 옵션이 포함되어 있지 않습니다. --open열린 포트를 포함하는 호스트로 출력을 제한합니다(어느열린 포트). -v0화면에 출력되지 않습니다.

대신 이를 달성하는 가장 좋은 방법은XML 출력구문 분석하기 쉬운 XML 형식으로 스캔을 통해 수집된 모든 정보를 포함하는 스캔 정보(사용 -oX또는 출력 옵션). -oA그런 다음 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 -p 161 ip, nmap -p 162 ip 명령을 사용하여 nmap을 사용할 수 있습니다.

공개 시장에는 호스트나 장치의 포트가 열려 있는 경우 쓰기 가능한 SNMP 정보를 생성할 수 있는 익스플로잇이 있습니다.

포트가 닫히면 취약점이 발생하지 않음

이 정보가 유효하길 바랍니다

관련 정보