Windows Rechner im Netzwerk erkennen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ich möchte gern mein Netzwerk in einem IP-Adressbereich, z.B. 192.168.0.10 bis 192.168.0.50 nach Windows Rechnern durchsuchen, die aktuell mit dem Netzwerk verbunden sind. Ich kenne weder Hostnamen noch IP-Adressen (wegen DHCP).

Wie macht man das am besten?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Eine Möglichkeit wäre, den gesamten Adressbereich zu pingen und jeweils den Return-Code auszuwerten. Vielleicht gibt es aber auch noch eine elegantere Lösung.
Ronnie
User
Beiträge: 73
Registriert: Sonntag 21. März 2004, 17:44

Code: Alles auswählen

nmap 192.168.0.10-50
am besten auf Port 139 und 445 beschränken, den die meisten Windows-Boxen offen haben, wenn keine Firewall läuft.
Achtung: User ist ein Python-Lehrling!
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Die Windows-Firewall ist mittlerweile Standard, viele User haben auch eine andere Firewall.

Gibt es die Möglichkeit, eine Art "ping" zu machen oder sich gleich mittels _winreg auf die Fremd-Registry zu hängen? Also try/except?
Ronnie
User
Beiträge: 73
Registriert: Sonntag 21. März 2004, 17:44

droptix hat geschrieben:Die Windows-Firewall ist mittlerweile Standard, viele User haben auch eine andere Firewall.
Aber nicht in internen Netzen.
droptix hat geschrieben:Gibt es die Möglichkeit, eine Art "ping" zu machen oder sich gleich mittels _winreg auf die Fremd-Registry zu hängen?
Sollten tatsächlich die Rechner mit einer Software-Firewall ausgestattet sein (wozu im internen Betrieb?!), dann: Nein!
Achtung: User ist ein Python-Lehrling!
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Tief in den Erinnerungen war da was mit Ping, TTL und OS, also kurz danach gesucht - und was gefunden. Vielleicht hilft der hier weiter.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ronnie hat geschrieben:
droptix hat geschrieben:Die Windows-Firewall ist mittlerweile Standard, viele User haben auch eine andere Firewall.
Aber nicht in internen Netzen.
Ich sehe das immer wieder, auch auf Arbeit und bei vielen Kunden. Das ist gängige Praxis.
Ronnie hat geschrieben:
droptix hat geschrieben:Gibt es die Möglichkeit, eine Art "ping" zu machen oder sich gleich mittels _winreg auf die Fremd-Registry zu hängen?
Sollten tatsächlich die Rechner mit einer Software-Firewall ausgestattet sein (wozu im internen Betrieb?!), dann: Nein!
Es gibt doch immer eine Lösung, selbst Windows durchsucht sein eigenes Netzwerk nach anderen Rechnern. Allerdings weiß ich nicht, ob dabei Windows-Rechner ausfindig gemacht werden könnten.

Der Link zu TTL & Co. half leider nicht weiter. Was aber ist nmaps?
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Nicht in der Lage eine Suchmaschine zu bedienen?


Whatsoever : Lesen und verstehen : www.nmap.org

Du wirst feststellen das nmap für deine Zwecke die Kanone auf den Spatz ist.

Wieso hilft dir der Response vom Ping nicht weiter? Wenn du innerhalb deines Netzwerkes bleibst (also kein Router dazwischen ist), bekommst du von Computern mit einem OS aus Redmond eine TTL von 128 zurückgeliefert. Wenn das OS eines der Unix-Derivate ist, bekommst du eine TTL von 64. Und jeder Router dazwischen dekrementiert die TTL um 1.
Ronnie
User
Beiträge: 73
Registriert: Sonntag 21. März 2004, 17:44

droptix hat geschrieben:Ich sehe das immer wieder, auch auf Arbeit und bei vielen Kunden. Das ist gängige Praxis.
Bekanntlich können Millionen Fliegen auch nicht irren ...
droptix hat geschrieben:Es gibt doch immer eine Lösung, selbst Windows durchsucht sein eigenes Netzwerk nach anderen Rechnern.
Ja, aber es findet diese nur, wenn sie nicht durch eine Firewall blockiert sind. Natürlich kann eine Firewall verschiedene Regelsätze für interne und externe Zugriffe haben.

Was Querdenker vorschlägt, läuft auf ein Fingerprinting hinaus. Das machen entsprechende Werkzeuge automatisch und gehört zu den Kleinigkeiten die nmap z.B. einfach mal so miterledigt. Aber wie gesagt, nur wenn keine Firewall das Spiel blockiert.

Innerhalb einer Domäne bieten sich nochmal andere und weitergehende Möglichkeiten, z.B. über die Windows PowerShell und WMI (http://de.wikipedia.org/wiki/Windows_Ma ... umentation).
Achtung: User ist ein Python-Lehrling!
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Die Leute im TTL Beitrag diskutieren ob das auch immer hinhaut, daher bin ich verunsichert. Ich probiere das aber mal aus, überredet :-)

An WMI hab ich auch schon gedacht. Das läuft auf dasselbe hinaus wie die Idee mit _winreg (s.o.). Ist das wirklich auf Rechner in derselben Domain beschränkt? Ich brauch das für lose zusammen gewürfelte Arbeitsplätze, die leider nicht alle in derselben Domain sind.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Ich würde mir aus deinem Python-Programm heraus nmap mit dem Argument -O (OS-Detection) und der Angabe für den IP-Range aufrufen, die machen so ziemlich alles was möglich ist, um das herauszufinden. Daran könntest du dich halten. Außerdem gibt es schöne Optionen um eine mit Python sehr einfach zu parsende Ausgabe zurückzubekommen.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ja, das klingt sehr vielversprechend! -> hab's im kleinen Umfeld getestet und scheint ganz gut zu funktionieren. Krieg ich die Rückinfos auch irgendwie strukturiert raus, das sie sich (noch) besser parsen lassen?

Im ersten Schritt möchte ich im Netzwerk alle erreichbaren Windows-Rechner identifizieren. In der kommenden Woche mache ich ein paar Versuche damit. Danach muss ich auf den erkannten Rechnern eine Installation durchführen... da muss ich mir auch noch was einfallen lassen.

Ich gehe davon aus, dass ich Daten nicht per "push" hinschieben und beliebigen Code ausführen kann. Also muss ich die Daten auf einem zentralen Fileserver bereit stellen und abholen lassen.

Aber wie? Vielleicht kann man sich quasi remote mit der entfernten Win32 API verbinden (oder eben _winreg) und darüber Aktionen auslösen. Ich halte euch auf dem Laufenden.

Wenn ihr weitere Ideen dazu habt, gerne her damit!
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

:shock: Was willst du machen? Einfach mal so 'ne Installation, so nebenbei quasi?

Mal ehrlich - da ist es sinnvoller die Software an den einzelnen Arbeitsplätzen selber zu installieren. Insbesondere wenn das ein wilder Zusammenschluß von verschiedensten Rechnern ist, die als einzige Gemeinsamkeit das gleiche Class-C Subnet haben. Deine Probleme kann ich dir jetzt schon sagen: Zugriffsrechte lokal + Netzwerk, Verzeichnisstrukturen, Sicherheitsprogramme (Firewall, Virenscanner, ...).
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Ein Skript auf den Windowsrechnern laufen lassen, welches auf bestimmten Ports horcht, wenn da was ankommt mit PW erst authentifizieren und dann den Befehl bearbeiten
the more they change the more they stay the same
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

droptix hat geschrieben:Ja, das klingt sehr vielversprechend! -> hab's im kleinen Umfeld getestet und scheint ganz gut zu funktionieren. Krieg ich die Rückinfos auch irgendwie strukturiert raus, das sie sich (noch) besser parsen lassen?
Ja siehe Manual, es gibt mehrere Varianten. -oG sollte einfach sein, aber natürlich auch -oX für XML.

Hab gerade gesehen, dass da schon jemand einen Python-Parser für die -oG Option geschrieben hat: http://www.tssci-security.com/projects/nmaparse_py/
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

querdenker hat geschrieben::shock: Was willst du machen? Einfach mal so 'ne Installation, so nebenbei quasi?

Mal ehrlich - da ist es sinnvoller die Software an den einzelnen Arbeitsplätzen selber zu installieren. Insbesondere wenn das ein wilder Zusammenschluß von verschiedensten Rechnern ist, die als einzige Gemeinsamkeit das gleiche Class-C Subnet haben. Deine Probleme kann ich dir jetzt schon sagen: Zugriffsrechte lokal + Netzwerk, Verzeichnisstrukturen, Sicherheitsprogramme (Firewall, Virenscanner, ...).
Das ist bei einigen tausend Rechnern leider nicht machbar. Es ist so: alle Rechner im gleichen Netzwerk, jeder kann jeden anpingen. Es gibt eine Passwort-Regel, also hat jeder Rechner dasselbe Passwort für den lokalen Benutzer "Administrator". Die Benutzer arbeiten mit eingeschränkten Nutzerrechten. Allerdings verwalten viele Sub-Admins ihre eigenen kleinen Rechnereinheiten, der eine nur 5, der andere ein paar hundert... d.h. bei einigen läuft die Windows-Firewall, bei anderen eine Alternative und bei wiederum anderen gar keine. Einige Rechner sind an eine Windows-Domäne angeschlossen, aber eben nicht alle.

Ein bunter Haufen eben, historisch gewachsen.
Dav1d hat geschrieben:Ein Skript auf den Windowsrechnern laufen lassen, welches auf bestimmten Ports horcht, wenn da was ankommt mit PW erst authentifizieren und dann den Befehl bearbeiten
Das ist prinzipiell ein guter Ansatz, aber auch da geht keine manuelle Installation, sondern das sollte ebenfalls remote passieren.

Habe mich weiter mit WMI beschäftigt, das scheint machbar zu sein, wenn die Firewall den Remotedienst durchlässt (netsh.exe firewall set service type=REMOTEADMIN mode=ENABLE scope=ALL). Ich könnte mir vostellen, dass der Oberadmin jedem Sub-Admin befiehlt, diese Firewall-Ausnahme bei seinen Rechnern einzustellen.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Das wäre die einfachste Lösung, du lässt auf allen Rechnern die Remoteunterstützung einschalten, wobei, wenn du sowieso delegieren kannst was auf den Rechnern geschieht (also wenn sowieso ein Admin die Remoteunterstützung einschalten kann) können Sie dann nicht auch dein ausführbares Programm aus dem Intranet laden? Ist weniger umständlich.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Damit hast du nicht ganz unrecht, aber ein eigenes Programm als "Agent" muss man gut absichern, damit kein Missbrauch betrieben wird. Das muss man auch immer erstmal den vielen Sub-Admins klar machen. Eine Öffnung der Firewall ist da schon eher vorstellbar, weil man ohne Windows-Admin-Zugang nichts auf den Rechnern machen kann. Das wird häufig als "ausreichend sicher" anerkannt.
Antworten