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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pbscan — 사용자 공간 TCP/IP 스택 사용으로 인한 더 빠르고 효율적인 상태 비저장 SYN 스캐너 및 배너 그래버 | Kitploit
도구/GitHubGitHub/gvb84/pbscan
ReconnaissanceNetwork MappingPort ScanningInformation GatheringNetwork Security
GitHubgvb84/pbscan

pbscan

사용자 공간 TCP/IP 스택 사용으로 인한 더 빠르고 효율적인 상태 비저장 SYN 스캐너 및 배너 그래버

저장소 보기
170368년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

요약

polarbearscan은 더 빠르고 효율적인 배너 그래빙(banner grabbing) 및 포트 스캐닝을 위한 시도입니다. 두 가지 다른 아이디어를 결합하여 여러분의 관심과 시간을 조금이라도 가치 있게 만들기를 희망합니다.

첫 번째 아이디어는 암호학적으로 보호된 쿠키를 사용하여 들어오는 ACK를 분석하는 무상태 SYN 스캐닝을 사용하는 것입니다. 저자의 지식으로는 이 기술은 Dan Kaminsky가 scanrand에서 개척한 것입니다. Scanrand 자체는 Paketto Keiretsu(스캐닝 유틸리티 모음)의 일부였으며, 2001-2002년경에 출시되었습니다. 이 코드의 미러는 Packet Storm [1]에서 찾을 수 있습니다.

두 번째 아이디어는 패치된 사용자 공간 TCP/IP 스택을 사용하여, 스캐너가 SYN 및 ACK 플래그가 모두 설정된 암호학적으로 검증된 패킷을 수신하자마자 상태를 즉시 복원할 수 있도록 하는 것입니다. 여기서 polarbearscan이 사용하는 사용자 공간 스택은 libuinet [2]입니다. 다른 사용자 공간 TCP/IP 스택과 달리 이 스택은 FreeBSD의 TCP/IP 스택을 단순히 포팅한 것이므로 매우 성숙되었습니다.

libuinet 스택을 패치함으로써 소켓을 구성하고 적절한 ACK로 응답하여 표준 TCP 3-way 핸드셰이크를 완료할 수 있습니다. 이렇게 하면 완전히 기능하는 TCP 연결이 즉시 설정됩니다. 이는 다른 스캐너(nmap 등)와는 대조적입니다. 다른 스캐너는 TCP 포트가 열려 있음을 확인한 후, 배너 그래빙이나 버전 스캐닝 같은 작업을 수행하기 위해 커널을 통해 전체 TCP 연결을 수행해야 합니다. 전체 TCP 연결은 완전히 새로운 TCP 3-way 핸드셰이크가 수행되도록 합니다. 이는 호스트 간에 교환된 초기 두 패킷에 의해 구축된 암시적 상태를 완전히 폐기합니다. 이를 피함으로써 대역폭 사용량을 줄이고 포트가 열려 있음을 감지한 즉시 연결할 수 있습니다. 이 연결은 배너 그래빙 모드에서 데이터를 수신하며 대기하거나 HTTP 요청을 보낼 수 있습니다.

참고: 현재 스캐너는 IPv4 기반 스캐닝만 지원하며, 이더넷 유선 또는 무선 인터페이스에서만 제대로 작동합니다. 가까운 시일 내에 IPv6나 다른 인터페이스를 지원할 계획은 없습니다.

설치

코드 컴파일은 매우 간단합니다. 필요한 종속성을 다운로드하려면 인터넷 연결이 작동해야 하고 git이 설치되어 있어야 합니다. 그 외에도 표준 개발 유틸리티(gcc, make, patch), 라이브러리 개발 버전(pthread, pcap, OpenSSL)이 필요합니다. 데비안 기반 배포판에서는 DEPENDENCIES 파일에 나열된 모든 패키지를 설치하면 됩니다. 그런 다음 'make'를 입력하면 git을 사용하여 외부 종속성을 체크아웃하고 전체 스캐너를 빌드할 수 있습니다. 이 바이너리는 /usr/bin이나 /usr/local/bin 등에 복사할 수 있습니다.

컴파일이 실패하면 저자에게 이메일을 보내고(연락처는 아래 참조) 오류 출력, 커널 버전, libc 버전 및 문제 재현 및 수정에 도움이 될 만한 다른 정보를 포함해 주시기 바랍니다. 도움을 주시면 감사하겠습니다.

사용법

도구 실행은 매우 간단합니다. 루트 권한이 필요합니다. -h 옵션은 간략한 사용 정보와 설명된 옵션을 보여줍니다. 대부분의 경우 수행할 스캔 유형, 스캔할 포트 목록 및 대상 IP 또는 IP 범위를 지정하는 것 이상은 필요하지 않습니다. IP 범위에는 CIDR 표기법이 지원됩니다.

-s<인수>로 지정되는 네 가지 스캔 유형이 있습니다.

-sB: 표준 배너 그래빙을 수행합니다. 스캐너는 데이터를 보내지 않고 단순히 데이터를 수신하여 첫 번째 개행(newline) 또는 캐리지 리턴(carriage return)까지 표시합니다.

-sH: 이 모드는 성공적으로 설정된 모든 연결에 "GET / HTTP/1.1" 요청을 보냅니다. HTTP 서버를 신속하게 식별하는 데 매우 유용합니다.

-sT: TLS 스캐닝 모드는 제로 옵션과 제로 알고리즘이 지정된 TLS1.0 NULL 프로브를 보냅니다. 그러나 수신 측에 유효한 TLS 서버가 있으면 유효한 TLS 오류 응답인지 구문 분석하여 표시합니다.

-sC: 파일에서 페이로드를 로드하고(-d로 지정) 성공적으로 설정된 모든 소켓에 이 페이로드를 보내는 사용자 정의 스캔입니다. 매우 특정한 프로토콜을 신속하게 프로브하는 데 유용할 수 있습니다.

-p: 스캔할 TCP 포트 목록으로, 포트 범위 또는 단일 포트를 쉼표로 구분하여 지정할 수 있습니다. 예: -p22,80,8080-9000,143은 포트 22, 80, 143 및 8080~9000 범위를 스캔합니다.

-b <제한>: 나가는 프로브에 적용할 대역폭 제한입니다. 소켓을 통해 주고받는 데이터에는 적용되지 않으며, 실제로 보내는 SYN 프로브에만 적용됩니다. 예: -b300k, -b67m, -b500b는 각각 300kbps, 76mbps, 500bps의 대역폭 제한을 의미합니다.

-d <파일명>: 사용자 정의 스캔에 사용할 페이로드가 포함된 파일의 파일 이름입니다. 전체 파일은 최대 128kB까지 전송되며, 대부분의 용도에 충분합니다.

-t<타임아웃>: 스캐너가 모든 프로브를 보낸 후에도 여전히 연결된 소켓을 통해 데이터를 수신하기 위해 대기할 시간(초)을 지정합니다. 연결된 소켓이 없으면 더 이상 할 작업이 없는 즉시 종료됩니다. 그렇지 않으면 이 시간까지 대기합니다.

-x: 도구가 수신된 출력을 항상 16진수 표기법으로 덤프하도록 강제합니다. 그렇지 않으면 인쇄할 수 없는 문자가 발견된 경우에만 16진수 표기법으로 데이터를 덤프합니다.

-v: 일부 자세한 출력을 지정합니다. 디버깅에만 주로 유용합니다.

-i <인터페이스>: 소스 IP 선택 및 pcap 백엔드 설정에 사용할 인터페이스입니다. 표준적으로 하나의 제대로 구성된 NIC가 있는 일반 시스템에서는 필요하지 않지만, 여러 NIC가 있는 경우 필요할 수 있습니다.

-r <시드>: 사용할 RNG의 난수 시드입니다. 디버깅 및 도구가 정확히 동일한 패킷 시퀀스를 생성하도록 하는 데 주로 유용합니다. 인수는 정수이며 16진수 및 10진수 표기법으로 지정할 수 있습니다.

-T : SYN 프로브에 사용할 기본 IP TTL 값을 재정의합니다. 실제로는 필요하지 않지만 완전성을 위해 포함되었습니다.

-W : SYN 프로브에 사용할 기본 TCP 윈도우 크기 값을 재정의합니다. 실제로는 필요하지 않지만 완전성을 위해 포함되었습니다.

-I : SYN 프로브에 사용할 기본 IP ID 값을 재정의합니다. 실제로는 필요하지 않지만 완전성을 위해 포함되었습니다.

-n: 이 옵션은 작업 내용을 알고 있는 경우에만 사용해야 합니다. 도구가 나가는 모든 RST 패킷을 차단하는 방화벽 규칙을 설정하지 않도록 합니다. 이 옵션을 사용하면 스캐너가 포크(fork)되지 않으며, 이 규칙을 수동으로 설정해야 하는 책임이 있습니다. 그렇지 않으면 커널이 수신된 모든 SYNACK 패킷에 대해 RST 패킷을 다시 보내 도구가 작동하지 않습니다. Linux에서 설정되는 규칙은 다음과 같습니다.

root@kitploit:~
 $ /sbin/iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP

-o: 이 옵션은 I/O 리디렉션을 수행하지 않으므로 uinet 내부의 더 많은 출력을 볼 수 있습니다. 완전성 또는 디버깅 시나리오를 위해 추가되었으며, 그 외에는 그다지 유용하지 않습니다.

-h: 사용 정보입니다.

도구 사용 예시. /24 범위의 포트 22에 대한 배너 그래빙을 수행하려면 다음과 같이 사용합니다.

root@kitploit:~
 ./pbscan -sB -p22 x.x.x.x/24

단일 IP에 대해 여러 일반 HTTP 포트를 HTTP 스캔하고 출력을 16진수 모드로 보려면 다음과 같이 사용합니다.

root@kitploit:~
 ./pbscan -sH -x -p80,8080-9000 x.x.x.x

스캔 중 표준 입력에서 키를 누르면 식별된 열린 포트 수, 수신된 유효한 TCP ACK 수, 현재 활성 연결 수, 전체 SYN 프로브 중 이미 전송된 비율과 같은 일부 통계가 출력됩니다. 출력은 다음과 같습니다.

root@kitploit:~
 sent: 1.97% (of 254), open: 0, active: 2, acks: 2

저자

이 도구는 Vincent Berg가 작성했습니다. 이메일([email protected])로 연락하거나 웹사이트(http://santarago.org)를 방문하여 이 스캐너의 업데이트된 릴리스/뉴스를 확인하십시오.

감사의 말

테스트, 이식, 버그 보고에 도움을 준 여러 사람들에게 깊은 감사를 드립니다. Ehab, Joseph, Alejandro, Julian, Diego에게 감사드립니다.

참고 문헌

[1] http://packetstormsecurity.com/files/30489/paketto-1.10.tar.gz.html

[2] http://wanproxy.org/libuinet.shtml

도구 다운로드