Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
passer — 서버, 클라이언트, 이름 및 그 이상을 식별하는 파이썬 스니퍼인 패시브 서비스 로케이터 | Kitploit
도구/GitHubGitHub/activecm/passer
Defensive ToolsPacket Sniffing & AnalysisReconnaissanceNetwork MappingNetwork ForensicsInformation GatheringNetwork SecurityFingerprint SpoofingDNS Analysis
GitHubactivecm/passer

passer

서버, 클라이언트, 이름 및 그 이상을 식별하는 파이썬 스니퍼인 패시브 서비스 로케이터

26653168개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

passer

수동 서비스 로케이터, 서버, 클라이언트, 이름 등을 식별하는 파이썬 스니퍼

소개

수동 서비스 스니퍼인 passer를 시작하기 위한 간단한 메모입니다. 스니핑에 대한 권한을 얻는 것은 귀하의 책임입니다.

Passer는 실시간 패킷 캡처 또는 pcap 파일에서 작동할 수 있습니다(명령줄 매개변수, 아래 예제 참조). 이는 라이브 서비스와 클라이언트, LAN 상의 이더넷 카드, DNS 항목, 운영 체제, 라우터를 모두 수동적으로 보고합니다!

Windows를 사용 중이거나 지원 파일에 대한 경로가 여러 이유로 제 경로와 일치하지 않는 경우, 해당 위치를 알려주시면 스크립트를 업데이트하겠습니다.

설치

요구 사항

  • Python >=2.4 및 <3.0
  • Python 라이브러리 (requirements.txt 참조)
    • ipaddress
    • pytz
    • scapy>=2.4.0

선택 사항 (권장)

  • nmap
    • 이더넷 제조업체 및 서비스 문자열용
  • ettercap, wireshark, 및/또는 arp-scan
    • 더 많은 이더넷 제조업체용
  • p0f 버전 2
    • OS 지문 파일용

Ubuntu/Debian 및 deb 기반 배포판

# Install system dependencies
sudo apt-get install arp-scan ettercap-text-only nmap wireshark 
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py

Redhat/CentOS/Fedora 및 rpm 기반 배포판

# Install system dependencies
sudo yum install arp-scan ettercap nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py

Windows (미완성)

scapy를 설치하려면 설치 가이드를 참조하세요.

Docker

Passer는 Docker 이미지로도 패키징되어 제공됩니다. 아직 Docker가 설치되어 있지 않다면, Linux에 Docker를 설치하는 빠르고 간단한 방법은 다음과 같습니다:

curl -fsSL https://get.docker.com | sh -

그렇지 않으면, 사용 중인 운영 체제에 맞는 설치 지침을 따르십시오.

대부분의 용도에서는 이 저장소에 포함된 passer 스크립트를 권장합니다. 이 스크립트는 모든 Docker 관련

wget https://raw.githubusercontent.com/activecm/passer/master/passer
chmod +x passer

그런 다음 아래 예시 중 어느 것에서든 사용하듯이 이 스크립트를 사용할 수 있습니다. 예를 들어:

./passer -i eth0
# The equivalent without using the included script would be:
docker run --rm --name=passer -i --init --net=host --cap-add=net_raw activecm/passer -i eth0

패서 실행을 중지하려면:

docker stop passer

예제

root로 라이브 스니핑

/path/to/passer.py

모든 네트워크 인터페이스에서 스니핑하여 모든 출력 줄을 콘솔로 전송합니다.

비루트 사용자로 실시간 스니핑

sudo /path/to/passer.py

또는

su - -c '/path/to/passer.py'

루트 권한으로 실시간 스니핑하되, 하나의 인터페이스에서만 수행

/path/to/passer.py -i IfaceName

route를 실행하면 사용할 수 있는 활성 인터페이스가 표시됩니다.

❕ -i는 -r과 호환되지 않습니다.

pcap 파일에서 패킷 읽기; root 권한 필요 없음

/path/to/passer.py -r /path/to/packets.pcap

❕ -r는 -i와 호환되지 않습니다.

stdin으로 원시 pcap 데이터 받기

cat packetdata.pcap | ./passer.py -r /proc/self/fd/0
zcat packetdata.pcap.gz | ./passer.py -r /proc/self/fd/0
bzcat packetdata.pcap.bz2 | ./passer.py -r /proc/self/fd/0
tcpdump -i eth0 -qtnp -w - | ./passer.py -r /proc/self/fd/0
# etc...

이를 통해 패킷을 pcap 파일로 저장할 수 있는 모든 도구로 패킷을 캡처하고, 나중에 다른 시스템에서 passer로 처리할 수 있습니다.

나중에 처리할 수 있도록 출력 줄을 텍스트 파일로 저장

/path/to/passer.py -l /path/to/networkinfo.txt

경고 및 기타 디버깅 정보 억제

/path/to/passer.py 2>/dev/null

도움말 화면 표시

/path/to/passer.py -h

"이상한"/처리되지 않은 패킷을 pcap 파일로 저장

/path/to/passer.py -u /path/to/oddpackets.pcap

이것은 일반적으로 개발 과정을 위한 것입니다. 이 파일에 저장되는 패킷은 서명이 작성되어야 하는 패킷입니다. 이상한 패킷의 기여, 서비스 설명, 그리고 프로그램에 대한 패치를 감사히 받아들입니다.

BPF 필터를 적용하여 처리할 패킷 제한하기

이것은 명령줄 끝에 BPF 필터를 작은따옴표로 감싸서 배치하는 것만큼 간단해야 합니다. 버전 1.16 기준으로, 기반 라이브러리는 제공된 필터를 성공적으로 사용하지 못하는 것으로 보이지만, 우회 방법이 있습니다. tcpdump를 사용하여 필터링을 수행하고, 위에서처럼 축소된 패킷 집합을 stdin을 통해 passer에 전달하십시오:

tcpdump -r packets.pcap -w - 'icmp or arp' | ./passer.py -r /proc/self/fd/0

패킷을 미리 캡처하거나 실시간 스니핑할 때 사용할 필터 제안은 아래의 "샘플 필터" 섹션을 참조하십시오.

문제 해결

socket.error: (1, 'Operation not permitted')

비root 사용자로 라이브 스니핑을 시도하고 계신 것 같습니다. root로 로그인하거나, sudo/su를 사용하거나, pcap 파일로 작업하세요.

passer가 충돌하거나 시스템에서 작동하지 않는 경우, 오류 메시지(있는 경우)와 운영 체제에 대한 세부 정보를 포함한 이슈를 생성해 주세요.

출력 형식

Passer의 출력은 stdout으로 전달되며, 명령줄 매개변수 -l /path/to/logfile을 지정하면 해당 파일에도 기록됩니다. 형식은 다음과 같습니다:

TypeIPAddrProtoStateOptional description (may be empty)
'IP'IPaddr'IP'dead or livep0f OS description
'MA'IPaddr'Ethernet'MacAddrManufDescription
'TC'IPaddr'TCP_'Portclosed or openclient description
'TS'IPaddr'TCP_'Portclosed or listeningserver description
'UC'IPaddr'UDP_'Portopen or closedudp client port description
'US'IPaddr'UDP_'Portopen or closedudp server port description
'DN'IPaddr'A' or 'PTR'hostnamepossible extra info
'RO'IPaddr'TTLEx'routerpossible extra info
  • 열 1: 레코드 유형을 나타내는 2글자 코드
  • 열 2: 특성화되는 IP 주소.
  • 열 3: 관련된 프로토콜, 또는 "이것을 어떻게 알 수 있는가?"
  • 열 4: 설명되는 객체의 상태
  • 열 5: 객체에 대한 추가 정보

각 줄은 스프레드시트나 SQL 가져오기에 쉽게 로드할 수 있도록 쉼표로 구분됩니다. 어떤 필드에도 쉼표가 포함되어서는 안 됩니다. 샘플 출력 파일은 http://www.stearns.org/passer/passer-sample-log.txt 에 있습니다.

다음은 이러한 줄에서 원하는 데이터를 얻는 방법에 대한 몇 가지 예입니다:

  1. 중복 줄 제거:
cat /var/tmp/passer-log | sort -u | less
  1. 중복된 줄을 제거하고 특정 IP에 대한 모든 레코드를 함께 그룹화합니다:
cat /var/tmp/passer-log | sort -t, -k2 -u | less
  1. DNS 및 라우터 레코드만 가져오기:
cat /var/tmp/passer-log | sort -u | egrep '(^DN|^RO)' | less
  1. 특정 IP 주소에 대한 모든 레코드 확인:
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.0\.17,' | less
  1. 특정 네트워크에 대한 모든 레코드 확인:
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.' | less
  1. TCP 포트 25에서 수신 대기 중인 모든 머신(smtp 서버) 확인:
cat /var/tmp/passer-log | sort -u | grep ',TCP_25,listening,' | less
  1. 닫힌 포트는 표시하지 않음:
cat /var/tmp/passer-log | sort -u | grep -v ',closed,' | less
  1. 오직 닫힌 포트만 표시:
cat /var/tmp/passer-log | sort -u | grep ',closed,' | less
  1. "google.com" 도메인의 모든 DNS 레코드 표시:
cat /var/tmp/passer-log | sort -u | grep -i 'google\.com\.,' | less
  1. 모든 DNS 주소 레코드를 가져와 hosts 형식의 파일을 생성합니다:
/path/to/make-hosts /var/tmp/passer-log | /path/to/mergehosts.pl >/var/tmp/passer-hosts

"make-hosts"와 merge-hosts는 http://www.stearns.org/passer/make-hosts 에 있는 별도의 셸 및 perl 스크립트입니다.

이것은 시작에 불과합니다! 관심 있는 항목을 추출하는 여러분이 즐겨 쓰는 방법을 보내주시면 추가하고 여러분의 공을 인정해 드리겠습니다.

BPF 필터

개별 레코드 유형은 원시 데이터를 제공하기 위해 특정 유형의 패킷이 필요합니다. 이를 포함하거나 제외하려면 함께 제공되는 필터를 사용하십시오.

'IP', IPaddr, 'IP', dead or live, p0f OS description

이것은 TCP SYN 패킷이 필요합니다:

'tcp[13] & 0x12 = 0x02'

'MA', IPaddr, 'Ethernet', MacAddr, ManufDescription

이들은 arp 응답에서 비롯됩니다(*1):

'arp'

'TC', IPaddr, 'TCP_'Port, closed or open, client description

이들은 TCP SYN/ACK, FIN, RST(*2)가 필요합니다:

'tcp[13] & 0x07 != 0'

'TS', IPaddr, 'TCP_'Port, closed 또는 listening, server description

포트가 열려 있는지 닫혀 있는지 확인하려면 TCP SYN, SYN/ACK, RST가 필요합니다:

'tcp[13] & 0x06 != 0'

서버 설명 문자열을 만들기 위해서는 네트워크상 트래픽의 대부분을 차지하는 ACK 패킷도 확인해야 합니다:

'tcp[13] & 0x17 = 0x10'

TCP 트래픽 전체를 원한다면 그냥 다음을 실행하세요:

'tcp'

'UC', IPaddr, 'UDP_'Port, open or closed, udp client port description

모든 UDP 포트와 ICMP 포트 도달 불가 메시지를 그냥 넘겨주는 것이 가장 간단합니다:

'udp or icmp[0:2] = 0x0303'

'US', IPaddr, 'UDP_'Port, open or closed, udp server port description

위와 동일:

'udp or icmp[0:2] = 0x0303'

'DN', IPaddr, A,AAAA,PTR,CNAME hostname, possible extra info

UDP 또는 TCP 포트 53 (*3):

'udp src port 53 or tcp src port 53'

'RO', IPaddr, 'TTLEx', router, possible extra info

라우터는 TTL 초과(Time-To-Live-Exceeded) 또는 도달 불가 메시지를 전송하기 때문에 식별합니다:

'icmp[0:2] = 0x0B00 or icmp[0] = 0x03'

*1 이것은 arp 요청도 잡지만, 이는 무시된다.

*2 필터는 기술적으로 SYN도 포함하지만, 이는 소량의 추가 데이터에 불과하다

*3 버전 1.16 기준으로, UDP 포트 53 응답만 추출된다.

샘플 BPF 필터

도구 다운로드