이 명령을 사용하면 wps 버튼이 눌렸는지 확인할 수 있습니다.
하지만 airodump-ng를 사용하여 이 작업을 수행할 수 있는지 알고 싶습니다.
아무도 그것에 연결되어 있지 않습니다.
이것wifiphisher 유틸리티이 작업을 수행할 수 있는 기성 도구에 대한 정보를 찾을 수 없음에도 불구하고 이 작업을 수행할 수 있다고 주장합니다.
그리고 파이썬 코드가 충분히 명확하지 않아서 어떻게 하는지 모르겠습니다.
이를 수동적으로 수행하는 방법을 찾아 가능한 새로운 공격 벡터에 추가하십시오.
감사해요
답변1
우리는 먼저 확인합니다Wi-Fi 보호 설정 사양
AP는 프로브 응답 메시지를 사용하여 선택한 등록자가 PBC 모드에 있음을 등록자에게 알립니다.
등록자는 자신이 PBC 모드에 있음을 나타내는 장치 비밀 ID가 포함된 프로브 요청을 보내고 PBC 장치 비밀 ID가 포함된 선택된 등록자를 나타내는 프로브 응답을 수신하여 이 검색을 수행합니다.
AP가 PBC 모드를 나타내는 레지스트라로부터 선택된 레지스트라 및 장치 비밀번호 ID를 수신하면 이 정보를 자동으로 삭제해야 하며 도보 시간 이후에는 더 이상 프로브 응답에 포함하지 않아야 합니다. AP는 등록자 버튼을 누를 때까지 활성 PBC 상태를 알리지 않습니다.
그리고 다른 사람에게서WPS 문서 제목은 다음과 같습니다. 무선 LAN PCI 카드 사용자 설명서 V1.1우리는 발견한다
장치 비밀번호 ID: 선택한 등록자가 특정 비밀번호를 사용하거나 식별하려는 방법을 나타냅니다. PBC 모드의 AP는 도보 2분 이내에 0x0004를 표시해야 합니다.
이제 우리는 필요한 정보가 AP의 비콘 프레임에 있다는 것을 이해합니다.
이 정보를 확인하기 위해 원하는 경우 세 가지 도구를 사용할 수 있습니다.
먼저, 버튼을 누르지 않고 AP에서 브로드캐스트하는 프로브와 버튼을 누른 상태에서 AP에서 브로드캐스트하는 프로브의 차이점을 확인합니다.
이렇게 하려면 tcpdump
원하는 장치에서 airodump를 두 번 사용해야 합니다. 한 번은 버튼을 누른 상태에서 한 번은 버튼을 누르지 않은 다음 시도합니다.Wireshark Wiki의 WPS PBC 필터둘의 차이점을 알아보세요
이러한 필터를 사용해 보면 알 수 있듯이
wps.selected_registrar_config_methods.phy_pushbutton
wps.selected_registrar_config_methods.pushbutton
wps.selected_registrar_config_methods
wps.device_password_id
wps 버튼을 누른 상태에서 캡처한 것만 일치합니다.
wps.device_password_id == 0x0004
다른 필터는 오탐지를 유발할 수 있으므로 버튼이 눌렸는지 여부 는 필터만 확실하게 확인할 수 있습니다.
해당 문제에 대한 전문가의 인용문
"wps_selected_registrar" : 01
모든 라우터가 PBC 모드에 있다는 의미는 아니며 일부 라우터도"wps_selected_registrar" : 01
PIN 모드에 있으며 이러한 라우터 중 95% 이상이 Pixie Dust 공격에 취약하다는 의미입니다.
이제 우리는 차이점을 알고 테스트합니다. 시간을 절약하기 위해 두 가지 다른 도구를 사용하여 이 작업을 수행할 수 있습니다.
github에서 이 Python scapy 스크립트를 사용할 수 있습니다.wps2key.py하지만 이 기능은 2.7이 설치된 이전 시스템에서만 작동한다는 점에 유의하세요.
chmod +x wps2key.py
./wps2key.py -i mon0 -v
유명한 도구로 청소하십시오. 최신 버전으로 업데이트되었는지 확인하세요.프레데터 wps-fork-t6x, json 옵션 -j를 사용해야 하는 값을 확인합니다. 또한 json 스키마는 인쇄된 AP의 WPS 구성이 변경되는 시기를 감지하고 다른 줄을 인쇄하므로 매번 변경 사항을 확인하기 위해 종료하고 다시 시작하거나 반복할 필요가 없습니다.
청소 -i wlan0mon -j
여기서도 차이점을 볼 수 있지만 Wash는 Wireshark에서 사용한 다른 모든 요소를 표시하지 않습니다. 우리는 푸시와 비푸시를 구별 wps_device_password_id
하거나 구별해야 합니다.selected_registrar_config_methods
wps_selected_registrar
신뢰할 수 없기 때문에 사용하지 않았습니다.
한 줄을 사용하여 이를 자동화할 수도 있으며 -c
및 -b
옵션을 사용하여 더 빠르게 만듭니다.
timeout 10s wash -i wlan0mon -j -b XX:XX:XX:XX:XX:XX -c 8 | grep -q '"wps_device_password_id" : "0004"' && echo Pushed || echo NotPushed
이 작업은 작은 Python 스크립트 파일을 사용하여 수행할 수도 있습니다.
import subprocess, sys ,os
argv = list(sys.argv)
argv[0] = 'wash'
proc = subprocess.Popen(argv, executable=argv[0], stdout=subprocess.PIPE)
while 1:
line = proc.stdout.readline()
if line == '': break
print line
if '"wps_device_password_id" : "0004"' in line:
proc.terminate()
print("WPS PBC enabled")
break
여기에서 실행해야 합니다.
스크립트를 Washwrapper.py로 저장하고 일반적으로 Wash에 전달하는 모든 인수를 사용하여 Wash하는 대신 실행하십시오. python2washwrapper.py -j -i wlan0mon -c와 같습니다. 6. 필요한 경우 그냥 세척하는 대신 바이너리 위치를 세척하도록 "../src/wash" 경로를 수정합니다. 그렇지 않으면 작동하지 않습니다.
고마워/rover0r이 문제에 대한 스크립트 작성 및 지원 제공
연결하고 싶다면 버튼이 눌려진 것을 발견하면 다음을 사용할 수 있습니다.wpa_cli wps_pbc인쇄 대신 명령을 사용하거나 더 나은 방법을 사용할 수 있습니다.한 번의 기회--pbc 플래그가 새로 추가된 Python 스크립트는 사전 구성 없이 단 한 번의 클릭으로 프로세스를 완료하며, 보너스로 비밀번호도 출력합니다.
Start WPS push button connection: sudo python3 oneshot.py -i wlan0mon --pbc
하지만 파이썬에서 시스템 명령을 실행하려면 os.system("command")을 사용한다는 점을 기억하세요.
마침내, 전체 웹을 검색하고 이에 대해 언급하거나 이야기하는 사이트를 전혀 찾지 못한 후, 나는 이 질문에 직접 대답해야 했습니다.