Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/samyk/webscan
OSINT (Open-Source-Intelligence)AufklärungNetzwerkkartierungInformationsbeschaffung
GitHubsamyk/webscan

webscan

Browser-basierter Netzwerkscanner & lokale IP-Erkennung

Repository anzeigenWebseite
47267vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
webscan — Browser-basierter Netzwerkscanner & lokale IP-Erkennung | Kitploit

webscan

webscan ist ein browserbasierter Netzwerk-IP-Scanner und lokaler IP-Detektor. Er erkennt IPs, die an den Benutzer/das Opfer gebunden sind, indem er auf einem RTP-Datenkanal über WebRTC lauscht und auf den Port über alle Live-IPs zurückloopt, sowie alle Live-IP-Adressen auf gültigen Subnetzen erkennt, indem er auf sofortige Timeouts (zurückgegebene TCP-RST-Pakete) von fetch()-Aufrufen oder versteckten img-Tags überwacht, die auf gültige Subnetze/IPs verweisen. Funktioniert auf Mobilgeräten und Desktops in allen gängigen Browsern und Betriebssystemen. Die Beta-Version ist erweiterbar, um mehrere Techniken hinzuzufügen.

webscan nutzt die Tatsache aus, dass nicht reagierende img-Tag-Sockets geschlossen werden können, um browser- und netzwerkbasierte Ratenbegrenzung zu verhindern, indem das src-Attribut auf eine Nicht-Socket-URI geändert wird (das Entfernen aus dem DOM schließt den Socket ironischerweise nicht), oder durch die Verwendung der signal-Unterstützung von fetch() der AbortController()-Schnittstelle.

webscan live testen
Beta-Version hier

von @SamyKamkar
veröffentlicht am 2020/11/07
weitere lustige Projekte unter samy.pl

webscan funktioniert wie folgt

  1. webscan durchläuft zunächst eine Liste gängiger Gateway-IP-Adressen
  2. für jede IP wird fetch() verwendet, um eine gefälschte HTTP-Verbindung zu http://common.gateway.ip:1337 herzustellen
  3. wenn ein TCP-RST zurückkommt, wird das fetch()-Promise abgelehnt oder der img-tag-onerror ausgelöst, bevor ein Timeout eintritt, was auf eine aktive IP hinweist
  4. um Browser- oder Netzwerk-Ratenbegrenzung zu verhindern, werden nicht reagierende fetch()-Sockets über das AbortController()-Signal geschlossen, während img-Tags die src auf eine Nicht-Socket-URI umleiten, wodurch der Socket geschlossen wird
  5. wenn ein Live-Gateway erkannt wird, werden die Schritte 1-3 für jede IP im Subnetz wiederholt (z. B. 192.168.0.[1-255])
  6. auf dem Browser wird ein WebRTC-Datenkanal geöffnet, der einen zufälligen Port auf dem Opferrechner öffnet
  7. für alle IPs, die im Subnetz als aktiv erkannt werden, wird eine WebRTC-Datenkanalverbindung zu diesem Host hergestellt
  8. wenn der WebRTC-Datenkanal erfolgreich ist, wissen wir, dass wir gerade eine Verbindung zu unserer eigenen lokalen IP hergestellt haben

Implementierung

root@kitploit:~
// wait for scan to finish
let scanResults = await webScanAll()
 
// or get callbacks when ips are found with a promise
let ipsToScan = undefined // scans all pre-defined networks if null
let scanPromise = webScanAll(
  ipsToScan, // array. if undefined, scan major subnet gateways, then scan live subnets. supports wildcards
  {
    rtc: true,   // use webrtc to detect local ips
    logger: l => console.log(l),  // logger callback
    noRedirect: false, // if true, doesn't redirect from http to http - Chrome doesn't scan detect network IPs proprly on https atm
    localCallback:   function(ip) { console.log(`local ip callback: ${ip}`)   },
    subnetCallback:  function(ip) { console.log(`router ip callback: ${ip}`)  },
    networkCallback: function(ip) { console.log(`network ip callback: ${ip}`) },
  }
)

Rückgabewert

root@kitploit:~
scanResults = {
  "local": ["192.168.0.109"], // local ip address
  "network": { // other hosts on the network and how fast they respond
    "192.168.0.1": 97,
    "192.168.0.2": 82,
    "192.168.0.100": 46,
    "192.168.0.109": 0,
    "192.168.0.117": 74,
    "192.168.0.113": 17,
    "192.168.0.112": 21,
    "192.168.0.114": 25,
    "192.168.0.116": 25,
    "192.168.0.115": 25,
    "192.168.0.105": 57,
    "192.168.0.107": 63,
    "192.168.0.103": 64,
    "192.168.0.108": 31
  }
}

Aufgaben

  • iframe verwenden, um Scans in Blöcken durchzuführen
    • wenn der Frame abgerissen wird, nehme ich an, dass dies hilft, die Verbindungen abzubauen
    • wie funktionieren mehrere iframes, die mehrere Blöcke scannen? vielleicht erlaubt uns dies, die Browser-Verbindungsratenbegrenzung zu umgehen
  • Unterstützung sowohl von fetch() als auch von img als Scanner-Kerne (abgeschlossen in beta)
    • Safari
      • Hinweis: img-Tag funktioniert in einigen Browsern wie Safari sehr gut
      • Einschränkung: Das Ändern von .src scheint die Verbindung nicht abzubrechen
      • mögliche Lösung: siehe iframe-Hinweis oben
    • Chrome
      • Einschränkung: Chrome bricht die Verbindung nicht ab, wenn das img aus dem DOM entfernt wird
      • Lösung: Chrome bricht die Verbindung eines img ab, wenn man die .src ändert, das ist großartig!
      • Einschränkung: Das Ändern von img.src auf '#' führt eine weitere Anfrage an dieselbe übergeordnete Seite aus
      • Einschränkung: Das Ändern von img.src auf 'about:' erzeugt eine Warnung in der Konsole, gibt es etwas anderes, das keine Anfrage auslöst?
  • img-Timing als Mechanismus zur Erkennung lokaler IPs verwenden

Getestet auf

  • Chrome 87.0.4280.47 (macOS)
  • Edge 86.0.622.63 (Windows)
  • Firefox 82.0.2 (macOS)
  • Firefox 82.0.2 (Windows 10)
  • Safari 13.1.2 (macOS)
  • mobile Safari (iOS)
  • mobile Chrome (iOS)
Tool herunterladen