Netzwerküberwachung: Wlan-Sicherheit

Hallo zusammen,

in einem vorhergehenden Blogbeitrag haben wir bereits kurz über das Thema WLAN-Sicherheit gesprochen. Das Problem bei unseren sehr kreativ-einsetzbaren WLan-Modulen ist, dass sich diese ziemlich leicht missbrauchen lassen. Da wir niemanden auf "dumme Gedanken" bringen wollen haben wir dieses Thema in der Vergangenheit bewusst übersprungen. Wir wollen keine neue Generation Skript-Kiddys heranziehen die Unternehmensnetzwerke penetrieren. Wir wünschen uns von unseren Kunden, dass sie sich mit den jeweiligen, für sie geltenden Gesetze auseinandersetzen und diese auch beachten. Die Störung öffentlicher Infrastruktur beispielsweise ist eine gemeingefährliche Straftat welche mit bis zu 5 Jahren Freiheitsstrafe geahndet wird, in schweren Fällen auch bis zu 10 Jahren, auch der Versuch ist bereits strafbar! Wir verfolgen nicht das Ziel durch die Veröffentlichung von Sicherheitslücken Unternehmen zum Handeln zu zwingen.

Wir zeigen Ihnen heute lediglich, wie Sie einen möglichen Weg ein WLan zu manipulieren erkennen, um dementsprechend tätig werden zu können.

Kommt es bei Ihnen vor, dass Ihre WLan-Verbindung aus unerklärlichen Gründen abbrechen und Sie sich nicht mehr mit Ihrem Netzwerk verbinden können? So etwas kommt ab und an aufgrund vieler möglichen Störeinflüsse vor. Passiert das jedoch ständig und andauern vor liegt der Verdacht nahe das dahinter Absicht steckt. Wir stellen Ihnen heute Code zur Verfügung, dies mithilfe eines NodeMCU zu erkennen.

Für alle sachkundigen unter Ihnen: Deauth-Frame-Detektor aufgrund fehlender 802.11w Implementierung, spielt sich komplett auf Layer 2 ab. 

Blinkt die LED des NodeMCU findet in Ihrer Umgebung ein Angriff statt!

Wir brauchen:

  • NodeMCU mit ESP8266 z.B. v2/v3/d1
  • LED (BuildInLED ist ausreichend)

Selbstverständlich können Sie diesen Sketch für die Erkennung anderer, für Sie interessanten Pakete anpassen.

Hier der Code:

 

#include <ESP8266WiFi.h>


extern "C" {
  #include "user_interface.h"
}

//===== SETTINGS =====//
#define channel 1 //the channel it should scan on (1-14)
#define channelHopping true //scan on all channels
#define maxChannel 13 //US = 11, EU = 13, Japan = 14
#define ledPin 2 //led pin ( 2 = built-in LED)
#define inverted true // invert HIGH/LOW for the LED
#define packetRate 3 //min. packets before it gets recognized as an attack

#define scanTime 500 //scan time per channel in ms


unsigned long c = 0;
unsigned long prevTime = 0;
unsigned long curTime = 0;
int curChannel = channel;

void sniffer(uint8_t *buf, uint16_t len) {
  //if(len>27){
    //from.set(buf[16],buf[17],buf[18],buf[19],buf[20],buf[21]);
    //to.set(buf[22],buf[23],buf[24],buf[25],buf[26],buf[27]);

    if(buf[12] == 0xA0 || buf[12] == 0xC0){
      
      c++;
    }
    
  //}
}

void setup() {
  Serial.begin(115200);

  wifi_set_opmode(STATION_MODE);
  wifi_promiscuous_enable(0);
  WiFi.disconnect();
  wifi_set_promiscuous_rx_cb(sniffer);
  wifi_set_channel(curChannel);
  wifi_promiscuous_enable(1);

  pinMode(ledPin, OUTPUT);
  
  Serial.println("starting!");

}

void loop() {
  curTime = millis();
  
  if(curTime - prevTime >= scanTime){
    prevTime = curTime;
    Serial.println((String)c);
    
    if(c >= packetRate){
      if(inverted) digitalWrite(ledPin, LOW);
      else digitalWrite(ledPin, HIGH);
    }else{
      if(inverted) digitalWrite(ledPin, HIGH);
      else digitalWrite(ledPin, LOW);
    }
    
    c = 0;
    if(channelHopping){
      curChannel++;
      if(curChannel > maxChannel) curChannel = 1;
      wifi_set_channel(curChannel);
    }
  }

}

 

Wir hoffen dies ist nützlich für Sie und verabschieden uns bis zum nächsten Beitrag :)

Moritz Spranger
Team AZ-Delivery

Letzter Artikel ESP32: Beide I²C-Schnittstellen verwenden
Neuer Artikel Ethernet-Shield als Fileserver

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe