آردوینو امنیت اینترنت اشیا IOT برد ESP8266 برد ویموس Wemos

تشخیص حملات Deauth به شبکه وای فای با استفاده از برد Wemos

تشخیص حملات Deauth با استفاده از برد Wemos - دیجی اسپارک
نوشته شده توسط CiferTech

در این آموزش با استفاده از برد Wemos که بر پایه ESP8266 می باشد، قصد داریم حملات DEAUTH را تشخیص داده و به کاربر اطلاع دهیم همچنین برای قابل حمل کردن پروژه از یک شیلد باتری نیز استفاده خواهیم کرد، در ادامه توضیحات تکمیلی درباره اینگونه حملات داده خواهد شد. در ادامه این آموزش با مرجع تخصصی ESP8266 به زبان فارسی، دیجی اسپارک همراه باشید.

برد ویموس Wemos D1 mini و شیلد شارژر

 


تراشه ESP8266 وای فای


ماژول های ESP32 و ESP8266 ساخت شرکت Espressif Systems از پر مصرف‌ترین و در دسترس‌ترین تراشه‌های اینترنت اشیا هستند. و همچنین قیمت پایین‌تری نسبت به دیگر تراشه‌های اینترنت اشیا دارند. همچنین برای توسعه کدهای آن می‌توانیم از نرم افزار Arduino استفاده کنیم که دسترسی آسان تری را برای کاربر فراهم می‌کند.

 

برخی از ویژگی‌های ESP8266

  • ماژول شبکه و میکروکنترولر ESP8266 یکی از معروفترین و ارزان ترین و دردسترس ترین تراشه های اینترنت اشیا است.
  • دارا بودن میکروکنترولر قدرتمند به همراه ارتباط شبکه WIFI داخلی،
  • پشتیبانی کامل فول استک TCP/IP
  • و همچنین با ارائه رابط های سخت افزاری کافی گزینه مناسبی برای کاربرد های کوچک و کم مصرف اینترنت اشیا میباشد.
  • این میکروکنترولر در سال ۲۰۱۴ به بازار عرضه گردید.

 


 برد Wemos ویموس


برد Wemos یکی از پرطرافدار ترین برد هایی است که در زمینه iot مورد استفاده قرار میگیرد، یکی از مزیت های این برد نسبت به برد هایی مانند Node MCU اندازه کوچک آن می باشد تراشه وای فای مورد استفاده در این برد ESP8266 می باشد. از دیگر مزیت های این برد وجود شیلد های مختلفی برای این برد می باشد، که انجام هر پروژه ای را برای کاربر بسیار آسان و لذت بخش می کند، شیلد هایی از جمله شیلد باتری، multi sensor ، DHT22 ، رله ، oled تعداد بسیار زیادی شیلد برای این برد توسعه داده شده که در نتیجه تجربه خوبی از iot برای شما به جا خواهد گذاشت.

برد Wemos D1 Mini - دیجی اسپارک

 


شیلد باتری wemos


شیلد باتری به کاربر این امکان را می دهد که پروژه اینترنت اشیا خود را پرتابل کند، به این صورت که به اتصال شیلد به برد Wemos و اتصال باتری از کنکتور مربوط قادر خواهید بود علاوه بر راه اندازه پروژه بصورت پرتابل، باتری مد نظر را شارژ کنید. باتری لیتیومی مناسب برای این شیلد در محدوده ولتاژ ۳٫۳ تا ۴٫۲ می باشد.

شیلد شارژر برد ویموس Wemos D1 mini - دیجی اسپارک

 


حمله Deauthentication


این نوع حملات در استاندارد ۸۰۲٫۱۱ اتفاق می افتند یعنی همان شبکه های بیسیم وای فای، در واقع این حمله به این صورت می باشد که با ارسال پکت(بسته) های de-authentication به تعداد بالا به APs هدف باعث قطع شدن دسترسی دستگاه های متصل به آن می شویم، در واقع ما بدون اتصال به APs هدف این کار را انجام می دهیم و تنها با در دست داشتن اطلاعاتی مانند مک آدرس AP و SSID یا همان اسم وای فای قادر به اجرای این حمله خواهیم بود. حالا سوال اینجاست دلیل انجام این حمله از طرف مهاجم چیست؟! در واقع تمام این پروسه برای کپچر کردن HandShake صورت می گیرد در این مورد فرد با قطع دسترسی شما از شبکه، شما را وادار می کند دوباره اقدام به اتصال بکنید که در نتیجه مهاجم می تواند رویداد رادیوی بین شما و روتور را ثبت کند که در این رویداد اطلاعات مهمی جابجا می شوند و در نتیجه مهاجم می تواند به شبکه وایرلس شما نفوظ کند.

تشخیص حملات Deauth با استفاده از برد Wemos

 


وسایل مورد نیاز


برد توسعه Wemos D1 ویموس

شیلد شارژر باتری ویموس

ال ای دی نئوپیکسل

باتری لیتیوم

 


شماتیک و اتصالات


در این پروژه از یک نئوپیکسل رینگ استفاده می کنیم و پین DI در آن به پایه D2 متصل می گردد.

اتصالات برد ویموس wemos D1 mini به شیلد شارژر باتری و نئوپیکسل

 


کد پروژه تشخیص حملات


ابتدا کتابخانه های زیر را معرفی کرده ایم که یکی برای شناختن برد ESP8266 و دیگری برای راه اندازی نئوپیکسل می باشد.

#include <ESP8266WiFi.h>       
#include <Adafruit_NeoPixel.h>

 

در توابع زیر موارد مورد نیاز را تعریف می کنیم، مانند تعداد ال ای دی های مورد استفاده، بادریت، پین مورد استفاده برای نئوپیکسل و دیگر تنظیمات.

#define LED 4               
#define LED_NUM 8           
#define SERIAL_BAUD 115200  
#define CH_TIME 140        
#define PKT_RATE 5          
#define PKT_TIME 1

 

کد زیر را در برد خود آپلود کنید:

#include <ESP8266WiFi.h>       // For the WiFi Sniffer
#include <Adafruit_NeoPixel.h> // For the Neopixel/WS2812 LED(s)

// include ESP8266 Non-OS SDK functions
extern "C" {
#include "user_interface.h"
}

// ===== SETTINGS ===== //
#define LED 4              /* LED pin */
#define LED_NUM 8          /* Number of LEDs */
#define SERIAL_BAUD 115200 /* Baudrate for serial communication */
#define CH_TIME 140        /* Scan time (in ms) per channel */
#define PKT_RATE 5         /* Min. packets before it gets recognized as an attack */
#define PKT_TIME 1         /* Min. interval (CH_TIME*CH_RANGE) before it gets recognized as an attack */

// Channels to scan on (US=1-11, EU=1-13, JAP=1-14)
const short channels[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13/*,14*/ };

// ===== Runtime variables ===== //
Adafruit_NeoPixel pixels { LED_NUM, LED, NEO_GRB + NEO_KHZ800 }; // Neopixel LEDs
int ch_index { 0 };               // Current index of channel array
int packet_rate { 0 };            // Deauth packet counter (resets with each update)
int attack_counter { 0 };         // Attack counter
unsigned long update_time { 0 };  // Last update time
unsigned long ch_time { 0 };      // Last channel hop time

// ===== Sniffer function ===== //
void sniffer(uint8_t *buf, uint16_t len) {
  if (!buf || len < 28) return; // Drop packets without MAC header

  byte pkt_type = buf[12]; // second half of frame control field
  //byte* addr_a = &buf[16]; // first MAC address
  //byte* addr_b = &buf[22]; // second MAC address

  // If captured packet is a deauthentication or dissassociaten frame
  if (pkt_type == 0xA0 || pkt_type == 0xC0) {
    ++packet_rate;
  }
}

// ===== Attack detection functions ===== //
void attack_started() {

  for (int i = 0; i < LED_NUM; ++i)
    pixels.setPixelColor(i, pixels.Color(0, 120, 120));
  pixels.show();



  Serial.println("ATTACK DETECTED");
}

void attack_stopped() {

  for (int i = 0; i < LED_NUM; i++) {
    pixels.setPixelColor(i, pixels.Color(120, 0, 120));
  }
  pixels.show();

  Serial.println("ATTACK STOPPED");
}

// ===== Setup ===== //
void setup() {
  Serial.begin(SERIAL_BAUD); // Start serial communication

  // Init LEDs
  pixels.begin();
  for (int i = 0; i < LED_NUM; ++i)
    pixels.setPixelColor(i, pixels.Color(0, 100, 0));
  pixels.show();

  WiFi.disconnect();                   // Disconnect from any saved or active WiFi connections
  wifi_set_opmode(STATION_MODE);       // Set device to client/station mode
  wifi_set_promiscuous_rx_cb(sniffer); // Set sniffer function
  wifi_set_channel(channels[0]);        // Set channel
  wifi_promiscuous_enable(true);       // Enable sniffer

  Serial.println("Started \\o/");
}

// ===== Loop ===== //
void loop() {
  unsigned long current_time = millis(); // Get current time (in ms)

  // Update each second (or scan-time-per-channel * channel-range)
  if (current_time - update_time >= (sizeof(channels)*CH_TIME)) {
    update_time = current_time; // Update time variable

    // When detected deauth packets exceed the minimum allowed number
    if (packet_rate >= PKT_RATE) {
      ++attack_counter; // Increment attack counter
    } else {
      if (attack_counter >= PKT_TIME) attack_stopped();
      attack_counter = 0; // Reset attack counter
    }

    // When attack exceeds minimum allowed time
    if (attack_counter == PKT_TIME) {
      attack_started();
    }

    Serial.print("Packets/s: ");
    Serial.println(packet_rate);

    packet_rate = 0; // Reset packet rate
  }

  // Channel hopping
  if (sizeof(channels) > 1 && current_time - ch_time >= CH_TIME) {
    ch_time = current_time; // Update time variable

    // Get next channel
    ch_index = (ch_index + 1) % (sizeof(channels) / sizeof(channels[0]));
    short ch = channels[ch_index];

    // Set channel
    //Serial.print("Set channel to ");
    //Serial.println(ch);
    wifi_set_channel(ch);
  }

}

 


جمع بندی


در نتیجه پس از برقراری اتصالات و آپلود کد رنگ نئوپیکسل ها سبز خواهد و زمانی که که حمله ای صورت بگیرد رنگ نئوپیکسل ها قرمز خواهد شد، در واقع Wemos همواره در حال اسکن کردن ۱۴ کانال موجود می باشد و در صورت هر گونه اختلال به شما اطلاع خواهد داد.

تشخیص حملات به شبکه وای فای با برد wemos D1 mini - دیجی اسپارک

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۲ دیدگاه

  • در اصل اشاره به حملات تحت deauth و موارد مشابه مثل ap clone و دیگر موارد بیشتر مشکلات امنیتی رو برای مردم ایجاد می کنه تا دانش جلو گیری ، ترجیح می دادم توی سایتتون در این باره صحبتی از حملات این چنینی نباشه چون کاربر رو مجاب به یادگیری خود حمله برای تشخیص می کنه. ممنون میشم این پست رو حذف کنین.

    • سانسور کردن، چیزی جز آسیب برای ذهن های جوان در حال یادگیری به همراه نداره، اگر کسی بخواد چنین حمله هایی را یاد بگیره (که هیچ مشکلی هم نداره) در سایت های زیادی آموزش های صفر تا صدی برای این موارد به راحتی پیدا میشه، بجای دور کردن چاقو از فرد باید فرهنگ و ظرفیت ذهن اشخاص را بالا ببریم، وگرنه اسباب آسیب رساندن به دیگران به راحتی پیدا میشه، خیلی خوب میشه ترس از این نداشته باشیم دیگران علم ما رو فرابگیرند چون به این معنا نیست که ما کنار گذاشته بشیم، بلکه باعث میشه تبدیل به یک منبع معتبر بشیم….

    • عجب جواب کوته بینانه ای هست که در این پست مطرح کردید واقعا تاسف میخورم از مورد ذهنی که شما دارید و در حال ایجاد مشکل در مورد یک آموزش که در جهت افزونی اطلاعات برای نس جوان طرح گردیده … تازه اگر نیاز باشد هک و حملات استراق پکت ها صورت بگیرد اولندش سایت های خارج پره از این نوع حملات ۰ تا ۱۰۰ دومندش یک شخص قبل اینکه امانت دار باید باشه اولش باید یه ادم بی اعتماد رو تجربه کنه . نقطه سر خط

  • سلام خسته نباشید می تونی بگید از کجا وایفای مورد نظر را به برد معرفی کنیم؟
    یا همان ssidرو به برد منطقل کنیم

  • سلام ممنون بابت آموزش خوبتان آیا این امکان دارد این محافظت فقط روی یه مودم قرار داد که مثلا اگر مودم خاص را اسکن کند نه لزوما تمام مودم هایی را که در پوشش دستگاه قرار دارند ؟؟؟؟؟؟؟؟

    • این امکان وجود دارد که تنها یک چنل از ۱۴ چنل اسکن شود، اما مشکل از اینجا بوحود می آید که با هر بار ریست کردن مودم موقعیت آن در این ۱۴ چنل تغییر خواهد کرد.

  • من برنامه نویسی و امنیت شبکه های وایرلس چیزی بلد نیستم.
    میشه برای من نوعی بفرماید که این دستگاه چطوری ازش میشه استفاده کرد؟ به کامپیوتر یا به لپتاپ وصل میشه؟؟؟ چون هیچ پورتی برای اتصال به کامپیوتر روی این تراشه نمیبینم.
    ببخشید نمیدونم شاید سوالم خنده دار براتون باشه بذارید به حساب بی اطلاعی بنده….ولی
    این تراشه قابلیت ردگیری اتکر رو داره؟؟ مثل اپ های انالیز وایفای در اندروید که قدرت سیگنال رو نشون میدن؟؟؟ میتونه مک آدرس اتکر رو نشون بده؟

    • با سلام، تنها برای برنامه نویسی برد نیاز به اتصال به سیستم است. به شکلی می‌توان گفت این مورد هم امکان پذیر است با ثبت لاگ های دریافتی بوسیله wireshark اما تست نشده.

  • بله باهاتون موافقم
    باسانسور کردن این مطالب چیزی درست نمی شه خیلی ممنونم از وقتی که برای کاربراتون و ما می زارین و این اطلاعات
    رو در اختیار ما قرار می دین. سپاس فراوان