Heim  >  Artikel  >  Backend-Entwicklung  >  Tutorial zur Verwendung des Python-nmap-Netzwerk-Scan- und Sniffing-Toolkits

Tutorial zur Verwendung des Python-nmap-Netzwerk-Scan- und Sniffing-Toolkits

巴扎黑
巴扎黑Original
2017-08-16 13:16:171816Durchsuche

nmap-Konzept

NMap, auch bekannt als Network Mapper, war ursprünglich ein Netzwerk-Scan- und Sniffing-Toolkit unter Linux.

nmap ist eine Software zum Scannen von Netzwerkverbindungen, mit der offene Netzwerkverbindungen von Computern im Internet gescannt werden. Ermitteln Sie, welche Dienste auf welchen Verbindungen ausgeführt werden, und ermitteln Sie, welches Betriebssystem auf dem Computer ausgeführt wird (dies wird auch als Fingerabdruck bezeichnet). Es ist eine der unverzichtbaren Softwareprogramme für Netzwerkadministratoren und wird zur Bewertung der Netzwerksystemsicherheit verwendet.

Wie die meisten Tools zur Netzwerksicherheit ist auch nmap ein beliebtes Tool vieler Hacker und Hacker (auch als Script-Kiddies bekannt). Systemadministratoren können nmap verwenden, um die unbefugte Nutzung von Servern in der Arbeitsumgebung zu erkennen, Hacker verwenden nmap jedoch, um die Netzwerkeinstellungen von Zielcomputern zu sammeln, um Angriffe zu planen.

Nmap wird oft mit Nessus verwechselt, einer Software zur Bewertung von Systemschwachstellen. Nmap verwendet Stealth-Methoden, um die Überwachung von Einbruchmeldesystemen zu vermeiden und den täglichen Betrieb des Zielsystems nicht zu beeinträchtigen.

Nmap wurde zusammen mit der 32-Bit-Sicherheitslücke zur zyklischen Redundanzprüfung von SSH1 von Trinity verwendet, um in das Energiemanagementsystem des Kraftwerks in The Matrix einzudringen.

nmap-Funktion

Es gibt drei grundlegende Funktionen: Die eine besteht darin, zu erkennen, ob eine Gruppe von Hosts online ist; die zweite besteht darin, den bereitgestellten Host-Port zu scannen Netzwerkdienste; und es kann auch das vom Host verwendete Betriebssystem ableiten. Mit Nmap können LANs mit nur zwei Knoten bis hin zu Netzwerken mit mehr als 500 Knoten gescannt werden. Mit Nmap können Benutzer außerdem Scantechniken anpassen. Normalerweise kann ein einfacher Ping-Vorgang mit dem ICMP-Protokoll allgemeine Anforderungen erfüllen; er kann auch den UDP- oder TCP-Port bis hin zum vom Host verwendeten Betriebssystem tiefgreifend erkennen und alle Erkennungsergebnisse in verschiedenen Formaten zur weiteren Verwendung aufzeichnen Analyse. Analyseoperationen.

Führen Sie einen Ping-Scan durch und drucken Sie die Hosts aus, die auf den Scan geantwortet haben, ohne weitere Tests (z. B. Port-Scan oder Betriebssystemerkennung):

nmap -sP 192.168.1.0/24

Nur ​​Hosts im angegebenen Netzwerk auflisten Jeder Host sendet keine Pakete an den Zielhost:

nmap -sL 192.168.1.0/24

Um die offenen Ports des Zielhosts zu erkennen, können Sie eine durch Kommas getrennte Portliste angeben (z. B. -PS22, 23, 25, 80):

nmap -PS 192.168.1.234

Verwenden Sie UDP-Ping, um den Host zu erkennen:

nmap -PU 192.168.1.0/24

Verwenden Sie die am häufigsten verwendete Scan-Option: SYN-Scan, auch bekannt als halboffener Scan, der dies tut Öffnen Sie keine vollständige TCP-Verbindung. Die Ausführung erfolgt sehr schnell:

nmap -sS 192.168.1.0/24

nmap-Installation

Dieser Artikel verwendet Linux Ubuntu 16.04 als Beispiel und verwendet schließlich hauptsächlich Python zum Betrieb

1. Installieren Sie zuerst nmap

sudo apt-get install nmap

2. Installieren Sie dann python-nmap

sudo pip install python-nmap

Importieren Sie nach der Installation nmap in Python und testen Sie es zur Überprüfung ob es erfolgreich ist

com@pythontab:~# python
Python 2.7.12 (default, Dec  3 2016, 10:42:27) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nmap

Python-Operation nmap

1. Erstellen Sie eine PortScanner-Instanz und scannen Sie dann die Ports 20- 443 der IP 114.114.114.114.

Das Rückgabeformat ist wie folgt:
import nmap
nm = nmap.PortScanner()
ret = nm.scan('114.114.114.114','20')
print ret

{
    'nmap': {
        'scanstats': {'uphosts': '1', 'timestr': 'Tue Oct 25 11:30:47 2016', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.11'},
        'scaninfo': {'tcp': {'services': '20', 'method': 'connect'}}, 
        'command_line': 'nmap -oX - -p 20 -sV 115.239.210.26'
     },
    'scan': {
        '115.239.210.26': {
            'status': {'state': 'up', 'reason': 'syn-ack'},
            'hostnames': [{'type': '', 'name': ''}],
            'vendor': {}, 
            'addresses': {'ipv4': '115.239.210.26'},
            'tcp': {20: {'product': '', 'state': 'filtered', 'version': '', 'name': 'ftp-data', 'conf': '3', 'extrainfo': '', 'reason': 'no-response', 'cpe': ''}
            }
        }
    }
}

2. Integrierte Methode:

Sie können auch einfach ausdrucken Informationen

Sehen Sie sich an, wie viele Hosts es gibt
import nmap  
nm = nmap.PortScanner() 
print nm.scaninfo()
# {u'tcp': {'services': u'20-443', 'method': u'syn'}}
print nm.command_line() 
# u'nmap -oX - -p 20-443 -sV 114.114.114.114'

[u'114.114.114.114']
print nm.all_hosts()

Sehen Sie sich die detaillierten Informationen dieses Hosts an

Alle im Host enthaltenen Protokolle anzeigen
nm['114.114.114.114']

Überprüfen Sie, welche Ports des Hosts das TCP-Protokoll bereitstellen
nm['114.114.114.114'].all_protocols()

Überprüfen Sie, ob der Port das TCP-Protokoll bereitstellt
nm['114.114.114.114']['tcp']
nm['114.114.114.114']['tcp'].keys()

Sie können die Parameter der NMAP-Ausführung auch so festlegen
nm['114.114.114.114'].has_tcp(21)

Das obige ist der detaillierte Inhalt vonTutorial zur Verwendung des Python-nmap-Netzwerk-Scan- und Sniffing-Toolkits. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn