─ Şefik Efe Altınoluk의 IoT 통합 완전 자동 무선 피싱 시스템 ─
법적 허가가 없는 사용자/시스템에서는 이 소프트웨어를 사용하지 마십시오. 사전 상호 동의 없이 대상을 공격하기 위해 Wi-Phi
를 사용하는 것은 불법입니다. 모든 해당 지역, 주 및 연방법을 준수하는 것은 최종 사용자의 책임입니다. 나는 이 소프트웨어, 문서 및 이 저장소의 모든 항목으로 인해 발생한 오용이나 손상에 대해 책임을 지지 않으며 책임을 지지 않습니다.
(#4 참조) Wi-Phi
악의적으로 사용될 수 있으므로 소스 코드의 대부분을 공유하지 않습니다. 전체 작업 코드가 필요한 비즈니스/학술/교육 사례에 대해서는 LinkedIn에서 저에게 연락하세요.
이 프로젝트는 Gnu General Public License 버전 3.0에 따라 라이센스가 부여되었습니다.
자세한 내용은 라이센스를 참조하세요.
Wi-Phi
는 무선 IoT
(사물 인터넷) 보드에 완전히 통합된 자동 phishing
system
입니다.
기능이 풍부한 고급 Wifi Pineapple
처럼 생각할 수 있습니다.
Wi-Phi
다음 소프트웨어 중 하나 이상을 실행하는 사용자를 피싱할 수 있습니다.
Wi-Phi
의 주요 구성 요소는 다음과 같습니다.
MicroPython
펌웨어를 지원하는 IoT 보드입니다. 저는 ESP32
기반의 Deneyap Kart
사용합니다.esp32-20220117-v1.18.bin
ESP32 IoT 장치를 얻습니다.
ESP32를 컴퓨터에 연결하고 ESP32가 연결된 직렬 포트를 가져옵니다.
COMx
입니다./dev/ttyUSBx
또는 /dev/tty/USBx
입니다.그런 다음 GNU/Linux에 대해 다음 명령을 실행하십시오.
[efe@lhost ~] $ git clone https://github.com/f4T1H21/Wi-Phi.git && cd Wi-Phi
[efe@lhost Wi-Phi] $ pip3 install -r requirements.txt
[efe@lhost Wi-Phi] $ sudo ./setup.sh < serial_port >
이제 소프트웨어가 작동할 것입니다. Google Free Wi-Fi
라는 Wi-Fi 네트워크가 표시되는지 확인하세요.
ESP32를 전원 공급 장치에 연결할 때마다 프로젝트는 부팅 단계 후에 자동으로 실행됩니다.
다른 것은 중요하지 않습니다.
모든 소프트웨어는 MicroPython에서 구현되고 ESP32에서 실행됩니다.
ESP32는 무선 AP(액세스 포인트)가 됩니다. 3개의 독립 소켓(OSI 레이어 4에서)을 실행합니다.
DNS
서버용 53/UDP
HTTP
서버용 80/TCP
Credential Store
서버용 2121/TCP
모든 바인딩은 게이트웨이(AP)의 IP 주소인 210.210.210.1
에서 수행됩니다.
제가 이러한 IP 클래스를 선택한 이유는 어떤 이유에서인지 삼성 기기는 짧은 IP 주소를 캡티브 포털로 간주하지 않기 때문입니다. 그것은 나에게 문제였습니다.
주요 아이디어는 HTTP 서버에서 정적 피싱 웹사이트를 제공하고 이를 Wi-Fi를 통해 연결된 모든 공급업체의 장치(스테이션)에 대한 captive portal
로 만드는 것입니다.
Static site
DNS
, HTTP
및 CS
서버TCP
및 UDP
소켓Gateway
LAN
Wireless AP
, Wi-Fi
아래에는 Wi-Phi
작동하는 잘 설계된 시나리오가 나와 있습니다.
이 역시 제가 직접 할당한 사례 연구입니다. 그럼 사건 속으로 들어가 볼까요...
대부분의 장치 공급업체는 공급업체별 종속 포털 탐지 서버의 특정 엔드포인트에 HTTP 요청을 보내고 특정 HTTP 응답이 Wi-Fi 네트워크에 종속 포털이 있는지 여부를 이해할 것으로 기대합니다.
아래 표는 Wi-Fi 네트워크에 캡티브 포털이 존재한다고 가정하기 위해 다양한 장치 공급업체가 응답해야 할 사항을 보여줍니다.
참고 : Mozilla는 '장치 공급업체'에 대한 예외입니다. Firefox(브라우저)는 자체 포로 포털 탐지 서버에 따라 스스로 결정을 내릴 수 있습니다.
302 Found
상태 코드가 있는 응답에는 브라우저(클라이언트)를 올바르게 리디렉션하기 위해 Location:
헤더도 있어야 합니다.
장치 공급업체 | 엔드포인트 | 상태 코드 | 응답 본문 |
---|---|---|---|
마이크로소프트(윈도우) | www.msftconnecttest.com/ncsi.txt | 200 OK | Microsoft NCSI |
마이크로소프트(윈도우) | www.msftconnecttest.com/connecttest.txt | 200 OK | Microsoft Connect Test |
마이크로소프트(윈도우) | www.msftconnecttest.com/redirect | 302 Found | |
구글(안드로이드) | connectivitycheck.gstatic.com/gen_204 | 302 Found | |
구글(안드로이드) | connectivitycheck.gstatic.com/generate_204 | 302 Found | |
구글(안드로이드) | clients3.google.com/generate_204 | 302 Found | |
샤오미 | connect.rom.miui.com/gen_204 | 302 Found | |
샤오미 | connect.rom.miui.com/generate_204 | 302 Found | |
애플(IOS/맥OS) | captive.apple.com/hotspot-detect.html | 302 Found | |
모질라(파이어폭스) | detectportal.firefox.com/canonical.html | 302 Found | |
모질라(파이어폭스) | detectportal.firefox.com/success.txt | 302 Found |
위 엔드포인트에 수행된 http 요청에 응답하려면 이러한 요청을 ESP32의 HTTP 서버로 전송해야 합니다. 이를 달성하기 위해 ESP32는 자체 IP 주소에 대한 특정 도메인 조회에 응답해야 합니다.
google.com
의 IP 주소는 210.210.210.1
이 되어야 합니다.따라서 ESP32에서 실행되는 도메인 이름 시스템 서버가 필요합니다. 이러한 관점에서 보면 이 시나리오는 DNS 하이재킹 공격과 유사해 보입니다.
저는 Google이 전 세계적으로 가장 인기 있고 신뢰받는 기술 회사라고 생각합니다. 그래서 지메일의 기존 로그인 페이지와 거의 동일하게 보이는 정적 피싱 페이지를 준비했습니다. 또한 Wi-Fi 네트워크를 Google Free Wi-Fi
로 명명했습니다.
장면이 계속되면서 브라우저(클라이언트)를 정적 로그인 페이지로 리디렉션한 후 사용자는 자신의 자격 증명을 입력하고 다음 버튼을 누르게 됩니다. 그리고 자격 증명은 로컬 파일에 저장됩니다. 그러면 사용자는 다음에 ESP32를 재부팅할 때까지 IP가 금지됩니다. 그렇지 않으면 로컬 데이터베이스가 더미/잘못된 자격 증명으로 인해 엉망이 될 수 있습니다. 이 모든 작업이 끝나면 클라이언트는 정적 사이트의 /
디렉터리로 리디렉션됩니다.
IP 금지 클라이언트가 HTTP 서버의 리소스에 액세스하려고 할 때마다 HTTP 요청의 방법, 헤드, 본문 등에 관계없이 동일한 HTML 파일 hacklendin.html
이 제공됩니다.
반면, Wi-Fi에 연결된 상태에서 2121/tcp
에 연결하고 하드코딩된 비밀번호로 인증하면 로컬 자격 증명 저장소를 원격으로 볼 수 있습니다.
Wi-Phi
는 기능이 풍부한 시스템입니다. Wi-Fi
, HTTP
및 DNS
서비스에서 생성된 자세한 로그를 실시간으로 볼 수 있습니다. 이러한 로그는 스토리지를 절약하기 위해 로컬로 저장되지 않습니다.
자세한 로그를 보려면,
boot.py
의 내용을 main.py
라는 로컬 파일에 복사합니다.boot.py
삭제합니다.main.py
실행하세요. ESP32에서 파일 작업 및 소프트웨어 실행을 위해 ampy
도구를 사용할 수 있습니다.
Google Free Wi-Fi
에 동시에 연결된 다양한 공급업체의 여러 독립 장치가 있는 경우를 살펴보겠습니다.
IOS 장치가 종속 포털을 발견하면 사용자에게 메시지를 표시하지 않고 자동으로 종속 포털 페이지를 실행합니다.
삼성 기기에는 알림만 표시됩니다. 따라서 여기서 사용자는 Sign in to the network
하거나 화면 상단의 알림을 클릭해야 합니다.
Xiaomi 장치에도 알림이 표시됩니다. 또한 사용자에게 다시 메시지를 표시하지 않고 자동으로 캡티브 포털 페이지를 여는 경우도 있습니다.
Firefox에서는 응용 프로그램 창 상단에 메시지가 나타납니다. Open network login page
클릭하면 새 탭에 캡티브 포털 페이지가 열립니다.
그리고 (IOS처럼) 사용자가 결정하는 것조차 허용하지 않는 또 다른 사람입니다. 항상 자동으로 캡티브 포털 페이지를 엽니다.
앞서 설명했듯이,
학습하고, 배운 내용을 실제 생활에 구현하고, 버그를 수정하고, 이 문서를 작성하는 전체 기간은 저에게 매우 즐거웠습니다! 이러한 지식을 윤리적으로 활용하시길 바랍니다! 추가 질문 및 비즈니스/학술/교육 관련 사례가 있으면 저에게 연락하세요.
지저귀다
링크드인
해커원
상자를 해킹하세요
─ 작성자: Şefik Efe Altınoluk ─