Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
webscan — 브라우저 기반 네트워크 스캐너 & 로컬 IP 탐지 | Kitploit
도구/GitHubGitHub/samyk/webscan
OSINT (Open Source Intelligence)ReconnaissanceNetwork MappingInformation Gathering
GitHubsamyk/webscan

webscan

브라우저 기반 네트워크 스캐너 & 로컬 IP 탐지

저장소 보기웹사이트
472675년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

webscan

webscan은 브라우저 기반 네트워크 IP 스캐너이자 로컬 IP 탐지기입니다. WebRTC를 통해 RTP 데이터 채널에서 수신 대기하고 활성 IP로 포트에 다시 루프백하여 사용자/피해자에게 바인딩된 IP를 탐지하며, 유효한 서브넷의 모든 활성 IP 주소를 fetch() 호출 또는 유효한 서브넷/IP를 가리키는 숨겨진 img 태그로부터의 즉각적인 시간 초과(반환된 TCP RST 패킷)를 모니터링하여 발견합니다. 모바일 및 데스크톱에서 모든 주요 브라우저와 OS에서 작동합니다. 베타 버전은 여러 기술을 추가할 수 있도록 확장 가능합니다.

webscan은 응답하지 않는 img 태그 소켓을 닫아 브라우저 및 네트워크 기반 속도 제한을 방지할 수 있는데, src 속성을 비소켓 URI로 변경하거나(흥미롭게도 DOM에서 제거해도 소켓이 닫히지 않음) AbortController() 인터페이스의 fetch() 신호 지원을 사용하여 이를 수행합니다.

webscan 라이브 체험
베타 버전

@SamyKamkar 제작
2020/11/07 공개
더 재미있는 프로젝트: samy.pl

webscan 작동 방식

  1. 먼저 일반적인 게이트웨이 IP 주소 목록을 순회합니다.
  2. 각 IP에 대해 fetch()를 사용하여 http://common.gateway.ip:1337에 가짜 HTTP 연결을 만듭니다.
  3. TCP RST가 반환되면 fetch() promise가 거부되거나 img 태그 onerror가 시간 초과 전에 트리거되어 활성 IP를 나타냅니다.
  4. 브라우저 또는 네트워크 속도 제한을 방지하기 위해, 응답하지 않는 fetch() 소켓은 AbortController() 신호를 통해 닫히고, img 태그는 src가 비소켓 URI로 리디렉션되어 소켓이 닫힙니다.
  5. 활성 게이트웨이가 감지되면, 1-3단계가 서브넷의 모든 IP에 대해 다시 실행됩니다(예: 192.168.0.[1-255]).
  6. 브라우저에서 WebRTC 데이터 채널이 열리며, 피해자 머신에 임의의 포트가 열립니다.
  7. 서브넷에서 발견된 모든 활성 IP에 대해 WebRTC 데이터 채널 연결이 생성됩니다.
  8. WebRTC 데이터 채널이 성공하면, 우리는 자신의 로컬 IP에 연결을 설정했음을 알게 됩니다.

구현

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}`) },
  }
)

반환값

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
  }
}

할 일

  • iframe을 사용하여 블록 단위로 스캔 수행
    • 프레임이 해체되면 연결이 해제되는 데 도움이 될 것으로 예상
    • 여러 iframe이 여러 블록을 스캔하는 경우 어떻게 작동할까? 브라우저 연결 속도 제한을 우회할 수 있을 수 있음
  • fetch()와 img를 스캐너 코어로 모두 지원 (beta에서 완료)
    • Safari
      • 참고: img 태그는 Safari와 같은 일부 브라우저에서 매우 잘 작동
      • 한계: .src를 변경해도 연결이 중단되지 않는 것으로 보임
      • 잠재적 해결책: 위의 iframe 참고 사항 확인
    • Chrome
      • 한계: Chrome은 img를 DOM에서 제거해도 연결을 중단하지 않음
      • 해결책: Chrome은 img의 .src를 조정하면 연결을 중단함, 좋은 점!
      • 한계: img.src를 '#'로 변경하면 동일한 상위 페이지에 또 다른 요청이 발생
      • 한계: img.src를 'about:'로 변경하면 콘솔에 경고가 표시됨, 요청을 발생시키지 않는 다른 방법은?
  • 로컬 IP 탐지 메커니즘으로 img 타이밍 사용

테스트 완료 대상

  • 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)
  • 모바일 Safari (iOS)
  • 모바일 Chrome (iOS)
도구 다운로드