
Snoopy: 분산 추적 및 데이터 가로채기 프레임워크
| || | | || || || || | | |
| _____|| |_| || _ || _ || _ || |_| |
| |_____ | || | | || | | || |_| || |
|_____ || _ || |_| || |_| || ___||_ _|
_____| || | | || || || | | |
|_______||_| |__||_______||_______||___| |___|
V0.1
"에이미, 기술은 본질적으로 선하거나 악하지 않아. 그것은 어떻게 사용되느냐의 문제지. 마치 죽음의 광선처럼."
- 프로페서 판스워스
Snoopy에 오신 것을 환영합니다; 분산 추적 및 프로파일링 프레임워크입니다. Snoopy는 아직 개발 중이므로, 언제든지 제안이나 수정 사항을 제출해 주세요. 이 문서는 기본적인 사용법을 설명합니다. 더 자세한 배경을 이해하려면 다음을 참조하세요:
클라이언트 측 소프트웨어는 "드론"이라고 부르는 장치에서 실행됩니다. 드론은 WiFi 인터페이스(인젝션 드라이버 지원)와 외부 인터넷 연결이 있는 모든 Linux 기반 장치가 될 수 있습니다. Snoopy는 Nokia N900과 BackTrack을 실행하는 노트북에서 테스트되었습니다. 드론은 다음 두 가지 작업을 수행합니다:
수집된 프로브 요청(예: Bob의 iPhone이 BTHomeHub-4123을 찾는 경우)은 정기적으로 Snoopy 서버에 업로드됩니다. 가짜 AP에 연결된 모든 장치는 Snoopy 서버를 통해 인터넷에 연결됩니다.
서버는 모든 프로브 요청을 데이터베이스에 저장하고, Wigle을 사용하여 GPS 좌표를 결정하며, Google Maps를 사용하여 도로명 주소(및 스트리트 뷰 사진)를 확인합니다. 즉, 집 네트워크를 프로빙하는 경우 집 사진을 얻을 수 있습니다.
각 드론은 OpenVPN을 통해 서버에 연결되며, 자체 서브넷을 가집니다. 연결된 클라이언트는 드론에서 IP 주소를 받고, 해당 드론을 통해 트래픽을 라우팅합니다. 따라서 서버에서 클라이언트 IP 주소(따라서 MAC 주소)를 인터넷 활동과 매칭할 수 있습니다.
서버에서는 다음과 같은 작업이 수행됩니다:
네트워크 다이어그램은 다음과 같습니다:
Client1 Drone1 Snoopy Server
+----------+ +-----------------------+ +-----------------------+
| wlan0-|<---WiFi--->|-at0 | | eth0|<-squid-sslstrip-mitmproxy->Internet
| | | | 10.2.0.1 | | 11.22.33.44| |
| dhclient | | | | | | Traffic inspection
| | | | tap0-|<-openvpn----->|-tap0 | Social media analysis
+----------+ | | 192.168.42.2 | +--/| 192.168.42.1 |
10.2.0.2 | +-----------------------+ | +-----------------------+
| |
| | route 10.2.0.0 via 192.168.42.2
| | route 10.3.0.0 via 192.168.42.3
Client2 | |
+----------+ | |
| wlan0-|<---+ |
| | |
| dhclient | |
| | |
+----------+ |
10.2.0.3 |
|
|
|
Client3 Drone2 |
+----------+ +-----------------------+ |
| wlan0-|<---WiFi--->|-at0 | |
| | | | 10.3.0.1 | |
| dhclient | | | | |
| | | | tap0-|<-openvpn--+
+----------+ | | 192.168.42.3 |
10.3.0.2 | +-----------------------+
|
|
|
Client4 |
+----------+ |
| wlan0-|<---+
| |
| dhclient |
| |
+----------+
10.3.0.3
Walter가 Snoopy용 웹 인터페이스를 작성했습니다. http://your-snoopy-server.com:5000/ 에서 접근할 수 있습니다.
수집된 데이터를 그래픽으로 탐색할 수 있는 여러 Maltego 변환이 있습니다(자세한 내용은 아래 참조).
설치 ================ 서버 설치는 간단합니다. Ubuntu 12.04 LTS 32비트의 기본 설치에서만 테스트되었습니다. 여러 서버 구성 요소가 변경되므로, 가능하면 기본 설치 상태에서 설치 스크립트를 실행하고 해당 상자에 다른 것은 거의 실행하지 않는 것이 좋습니다. 의심스러우면 install.sh 파일을 확인하고 수동으로 변경하십시오. 그렇지 않으면 설치 프로그램(./install.sh)을 실행하기만 하면 됩니다.
사용법 ======== 설치가 완료되면 'snoopy'를 입력하여 서버 메뉴를 로드할 수 있을 것입니다. 그렇지 않은 경우(또는 의심스러운 경우) 설치 단계에서 생성된 사용자의 홈 디렉토리로 이동하십시오. 'snoopy/server/' 디렉토리 내에 'snoopy.sh' 파일이 있으며, 이를 실행할 수 있습니다. 아래는 메뉴입니다:
+---------------------------------------------------------------+
| Welcome to Snoopy V0.1 |
| SERVER SIDE |
| |
| SensePost Information Security |
| [email protected] / www.sensepost.com |
+---------------------------------------------------------------+
Date: Thu Nov 1 16:37:08 CET 2012
Snoopy Server Status: Stopped
Connected Drones: 0
Wigle User: setYourWigleAccount
Would you like to:
[1] (Re)Start Snoopy server components
[2] Stop Snoopy server components
[3] Manage drone configuration packs
[4] Configure server options
[5] Set web traffic injection string
[6] Observe logs
[X] Exit
[?] Help
드론 팩 생성 메뉴의 [3] 옵션을 사용하면 드론 장치용 클라이언트 측 '팩'을 만들 수 있습니다. 각 드론은 고유한 OpenVPN 및 SSH 키, DHCP 범위, 라우팅 테이블을 받습니다. 각 드론 장치에 대한 다운로드 URL이 제공됩니다. 서버와 드론의 시간이 올바르게 설정되어 있는지 확인하십시오. 그렇지 않으면 VPN 연결이 설정되지 않습니다.
드론에 Snoopy 설치 및 실행 최대 100개의 드론을 사용할 수 있습니다(더 필요하면 소스 코드를 확인하거나 이메일을 보내주세요. 실제 제한은 없습니다). 설치는 이전 단계에서 구성 팩을 다운로드하고 관련 설정 스크립트를 실행하는 것으로 구성됩니다. Nokia N900의 경우 바탕 화면에 아이콘이 배치됩니다. 예:
haxor@drone001# wget http://snoopy-server.com/secretdir/drone001.tar.gz
haxor@drone001# tar xzvf drone001.tar.gz
haxor@drone001# cd snoopy && ./setup_n900.sh
SSID 위치 조회 www.wigle.net에 계정을 생성하고 '서버 옵션 구성'을 통해 자격 증명을 설정하십시오.
웹 인터페이스 http://your-snoopy-server:5000/ 에서 웹 인터페이스에 접근할 수 있습니다. 데이터를 탐색하고 표시하기 위해 자체 플러그인을 작성할 수 있습니다. Walter가 쉽게 만들었습니다(이 문서의 부록 참조).
Maltego로 데이터 탐색 Snoopy 서버 메뉴에서 '서버 옵션 구성' > 'Maltego'로 이동하십시오. 여기에서 Snoopy 엔티티, 머신 및 변환 URL을 다운로드할 수 있는 URL을 볼 수 있습니다. Maltego 변환을 사용하려면 다음이 필요합니다.
각 Snoopy 엔티티에는 다른 변환을 적용할 수 있습니다. 시작하려면 'Snoopy' 엔티티를 그래프로 드래그하세요. 엔티티 속성에서 시작 또는 종료 날짜를 지정하지 않으면 기본적으로 지난 5분 동안의 결과를 가져옵니다(이 값은 서버 구성 메뉴에서 변경 가능).