Thursday, March 23, 2017

WiFi Jammer dengan Deauther ESP8266

 kali ini masih seputar hardware hacking ya. Saya akan membahas tentang sebuah device yang mampu melakukan serangan berupa DEAUTHENTICATION pada perangkat wireless. Apa cuma deauth saja? Oh tidak dong. Yok kita simak!


Oke pertama mari kita berkenalan dengan ESP8266.
ESP8266 adalah sebuah modul IoT WiFi yang belakangan ini makin diminati oleh para hardware developer. Selain karena harganya yang sangat terjangkau, modul WiFi serbaguna ini sudah bersifat SoC (System on Chip), sehingga kita bisa melakukan programming langsung ke ESP8266 tanpa memerlukan mikrokontroller tambahan. Modul WiFi ini support 802.11b/g/n dan berjalan pada frekuensi 2,4GHz. Jadi, saya rasa semua penjelasan berikut sudah cukup jelas untuk menjadi sebuah alasan kenapa saya menggunakan device ini.




Kita bisa menyerang jaringan wireless yang juga berjalan pada freq 2,4GHz misalnya saja Hotspot Sekolah/Kampus, WiFi Corner, Warung Kopi/Kafe WiFi. Nah perangkat apa saja yang akan diserang? Tentunya adalah client dari access point korban sendiri, misal : Laptop, Handphone/Smartphone, Repeater, Camera WiFi (Seperti Actioncam dsb), bahkan FPV Drone yang memakai freq serupa!




Jadi apa saja yang diperlukan untuk membuatnya?

1. ESP8266.
Saya memakai NodeMCU ESP8266 Amica dengan chip CP2102, kalian bisa membeli nya di onlineshop seperti Bukalapak/Tokopedia.
https://www.tokopedia.com/hobielektronika/nodemcu-lua-esp8266-wifi-cp2102-iot-arduino

2. Driver.
Pilih salah satu yang sesuai dengan chip yang dipakai oleh ESP8266 nya.
CP2102 : http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
CH340 : http://sparks.gogo.co.nz/ch340.html
PL2303 : https://drive.google.com/open?id=0B7t_g4hdtuILdVBHcW9UMW5GNHM

3. Arduino IDE.
https://www.arduino.cc/en/Main/Software

4. Script esp8266_Deauther.
https://github.com/spacehuhn/esp8266_deauther


Bagaimana cara menggunakanya?
Setelah instalasi sukses, maka yang kita butuhkan hanyalah menyalakan ESP8266 ini dengan cara memberinya arus listrik bisa dengan kabel data yang kemudian terhubung dilaptop, atau powerbank, atau bahkan bisa juga smartphone kalian yang tentunya kalian perlu USB OTG. Kemudian kita bisa connect ke ESP8266 via WiFi yang dibroadcast oleh nya, lalu mengendalikannya lewat browser. Bisa via komputer/laptop dan juga bisa via smartphone.

Cara Instalasi :
Caranya mudah sekali, saya sudah membuat video dokumentasi nya dan kalian bisa mengikutinya. Silahkan langsung saja ditonton.



Bagaimana cara mengatasi serangan deauth?
Sejauh ini sebenernya sih udah ada teknologi yang namanya 802.11w dimana frame yang bertebaran diudara sudah terenkripsi sehingga yah setidaknya masih aman lah dari serangan deauth, paling tidak untuk saat ini (26/02/2017).

UPDATE!!!
Ternyata script dari GitHub sudah diupdate oleh author nya. Tapi tenang, saya masih simpan script yang lama. Silahkan comot.
esp8266_deauther-master.rar [Password : 1121]

Dan ya, sedikit informasi yaitu bahwa ESP8266 ini kurang ampuh jika disuruh untuk mengacaukan signal wifi milik @wifi.id, mungkin karena banyak nya user yang memakai dan banyaknya AP repeater milik @wifi.id hingga melebihi batas kemampuan sikecil esp8266 ini. Namun, yah orang-orang yang berada didekat kalian dengan radius sekitar 1 meter - 6 meter tetap bisa kacau signal wifi nya.

Demikan post ini saya buat hanya sebagai pembelajaran semata. Segala bentuk hal illegal yang dilakukan oleh kalian bukan merupakan tanggung jawab saya.

Oke sekian post saya kali ini, semoga bermanfaat!

Wednesday, March 8, 2017

mengenal nessus


Nessus dibuat oleh Renaud Deraison pada tahun 1998. Nessus adalah salah satu scanner keamanan jaringan yang harus digunakan oleh administrator system. Nessus merupakan sebuah software scanning, yang dapat digunakan untuk meng-audit kemanan sebuah sistem, sepertivulnerability, misconfiguration, security patch yang belum diaplikasikan, default password, dan denial of serviceNessus berfungsi untuk monitoring lalu-lintas jaringan.

Dikarenakan fungsi dari Nessus dapat digunakan untuk mendeteksi adanya kelemahan ataupun cacat dari suatu sistem maka Nessus menjadi salah satu tool andalan ketika melakukan audit keamanan suatu sistem. Sebelum Nessus versi 3, aplikasi ini bersifat open source dan menjadi salah satu primadona di dunia open source. Namun sekarang mulai Nessus versi 3 oleh Teenable Security dijadikan sebagai aplikasi propietary dan closed source

Nessus dapat digunakan untuk melakukan audit sebagai berikut:
  •   credentialed and un-credentialed port scanning.
  •  network based vulnerability scanning.
  • credentialed based patch audits for Windows and most UNIX platforms.
  • redentialed configuration auditing of most Windows and UNIX platforms.
  • robust and comprehensive credentialed security testing of 3rd party applications.
  • custom and embedded web application vulnerability testing.
  • SQL database configuration auditing.
  • software enumeration on Unix and Windows.
  • Testing anti-virus installs for out-of date signatures and configuration errors. 
INSTALASI
Untuk menginstall nessus pada komputer kita, berikut saya berikan contohnya pada Ubuntu 12. Proses penginstalannya sebagai berikut :


2. Install paket file deb dari nessus yang sudah di download

$ sudo dpkg -i Nessus*

3. Setelah selesai, jalankan service nessus nya

$ sudo service nessusd start

4. Pertama kali kita harus membuat user nessus baru untuk nantinya digunakan untuk login di nessus

$ sudo /opt/nessus/sbin/nessus-adduser

5. Nessus ini belum dapat digunakan jika kita belum melakukan register terlebih dahulu, untuk mendapatkan code serialnya silahkan daftar disini : http://www.tenable.com/products/nessus/nessus-homefeed

Setelah mendaftar nanti code akan dikirimkan melalui email.

6. Setelah mendapatkan code nya, maka coba untuk di registerkan nessus nya dengan code tersebut

$ sudo /opt/nessus/bin/nessus-fetch --register

Tunggu hingga proses instalasi dan update selesai.

7. Jika kita akan melakukan update manual dapat menggunakan perintah :

$ sudo /opt/nessus/sbin/nessusd -R

8. Untuk menjalankan nessus di linux kita dapat membuka nessus di alamat ini : https://127.0.0.1:8834/
silahkan login dengan menggunakan user dan password yang sudah dibuat tadi.
Kita dapat login dengan username dan password yang telah kita setting sebelumnya.

9. Untuk memantau PC mana yang ingin kita perhatikan kita harus memasukan IP PC tujuan yang ingin kita monitor
Pada kasus kali ini saya memonitoring PC dengan IP 172.16.30.42 dengan username bastul. Dimana pada pilihan policy kita memilih internal network scan. Setelah itu jalankan scan dan akan terjadi hal seperti dibawah ini:


terlihat bahwa user yang kita scan dalam keadaaan running dan kita tungggu sampai running tersebut menjadi complete,yaitu dari bewarna hijau kewarna biru. Setelah complete kita klik salah satu user dan akan muncul host summary :

detailnya dapat kita klik satu per satu tombol berwarna hijau dan kuning untuk melihat statusnya.




 Dari review diatas, kita dapat melakukan scan network dengan lebih mudah. Untuk itu, Nessus merupakan scanner yang dapat diandalkan. Selain penggunaannya yang jelas, kita juga dapat melakukannya dengan cukup mudah.

Tuesday, March 7, 2017

Kontrol Relay melalui Internet menggunakan arduino dan esp8266

Bagaimana cara mengontrol rangkaian elektronik melalui internet? 
banyak cara yang digunakan untuk mengontrol rangkaian listrik melalui internet, salah satunya ialah dengan menggunakan modul esp8266 dan arduino. 

Alat dan Bahan yang dibutuhkan :
1. Arduino Uno
2. Modul Esp8266
3  Relay
4. kabel secukupnya
5, Android smartphone
6. Aplikasi android====> unduh di sini :Download Aplikasi

langkahnya :
1. Download terlebih dahulu Flash Download Tools dan Firmware ===>Download Firmware
2. Upload Sketch arduino nya di bawah ini

source code arduino :

     int ch_pd = 3;
int io0 = 2;

void setup() {
    pinMode(ch_pd, OUTPUT);
    pinMode(io0, OUTPUT);
    digitalWrite(io0,LOW);
    digitalWrite(ch_pd, LOW);
    delay(1000);
    digitalWrite(ch_pd, HIGH);
}

void loop() {
      //Biarkan Kosong saja  
}



3. susun rangkaian di bawah ini




4.Tancapkan Usb port arduino ke komputer
5. Extact file download tadi dan ikuti tutorial berikut ini 




6. sekarang firmware telah diperbaharui, sekarang ubah wiring diagram arduino menjadi seperti ini



7,kita buat channel di web ThingSpeak.com untuk mendapatkan Api Key dan Channel Id
ikuti tutorialnya di video berikut ini



8.apabila channel telah dibuat, copy paste channel Id dan Api Key tadi ke Notepad
9. setelah itu tambahakan Library Espduino buka software arduino lalu klik
    Sketch > Include Library > Add .ZIP Library...



10.lalu pilih file espduino.Zip yang tadi download, dan klik Open 


11.maka library espduino telah berhasil ditambahkan ke software arduino
12.silahkan copy paste source code di bawah ini ke arduino

esparduino.ino

#include <SoftwareSerial.h>
#include <espduino.h>
#include <rest.h>

SoftwareSerial espPort(10, 11);
ESP esp(&espPort, &Serial, 9);
REST rest(&esp);
boolean wifiConnected = false;

const int relay1 =  2;
const int relay2 =  3;
const int relay3 =  4;
const int relay4 =  5;

boolean data1 = false;
boolean data2 = false;
boolean data3 = false;
boolean data4 = false;
int loop_count = 0;

char response[266];
char buff[64];
String strId,strData,strCode;
String strData_Last1,strData_Last2,strData_Last3,strData_Last4;

void(* resetFunc) (void) = 0;

 void clearBuffer(void) {
       for (int i = 0;i<266;i++ ) {
         response[i]=0;
       }
}

void wifiCb(void* response)
{
  uint32_t status;
  RESPONSE res(response);

  if(res.getArgc() == 1) {
    res.popArgs((uint8_t*)&status, 4);
    if(status == STATION_GOT_IP) {
      Serial.println("TERHUBUNG KE WIFI");
     
      wifiConnected = true;
    } else {
      wifiConnected = false;
    }
    
  }
}

void setup() {
  pinMode(relay1, OUTPUT); 
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  
  digitalWrite(relay1,HIGH);
  digitalWrite(relay2,HIGH);
  digitalWrite(relay3,HIGH);
  digitalWrite(relay4,HIGH);
  
  Serial.begin(9600);
  espPort.begin(19200);
  
  esp.enable();
  delay(500);
  esp.reset();
  delay(500);
  while(!esp.ready());

  Serial.println("ARDUINO: Setup client");
  if(!rest.begin("api.thingspeak.com")) {
    Serial.println("ARDUINO: Gagal Setup client");
    while(1);
  }

  Serial.println("ARDUINO: Menghubungkan dengan Wifi");
  esp.wifiCb.attach(&wifiCb);

  esp.wifiConnect("Andy182 Network","waipigratis");
  Serial.println("ARDUINO: System sudah siap!");
}

void loop() {
loop_start:  
  
  esp.process();  
  if(wifiConnected) {   
    
    char str_field1[6] , str_field2[6] , str_field3[6] , str_field4[6];
           
      sprintf(buff, "/channels/58419/fields/1/last");
      Serial.println(buff);
           
      rest.get((const char*)buff);
      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
                              
            strId = "";
            strData = "";
            strCode = "";  
            getData();                
                 
          if (strData == "1" || strData == "1.0" || strData == "1.00" ){
            digitalWrite(relay1,LOW);
            data1 = true;
          }
           
          if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
            digitalWrite(relay1,HIGH);
            data1 = false;
          }
      }  
     else{  
       hardReset();
       resetFunc();
     }
     
      delay(10000);  
      sprintf(buff, "/channels/58419/fields/2/last");
      Serial.println(buff);
           
      rest.get((const char*)buff);
      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
         
        strId = "";  strData = "";  strCode = "";  
        getData();
      
      
      if (strData == "1" || strData == "1.0" || strData == "1.00"){
        digitalWrite(relay2,LOW);
        data2 = true;        
      }
       
      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
        digitalWrite(relay2,HIGH);
        data2 = false;      
      }     
      } 
      else{  
         hardReset();
         resetFunc(); 
         clearBuffer();  
         goto loop_start;   
       
     }    

      delay(10000);  
      sprintf(buff, "/channels/58419/fields/3/last");
      Serial.println(buff);
           
      rest.get((const char*)buff);
      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
         
        strId = "";  strData = "";  strCode = "";  
        getData();                                                // GET DATA
      
      
      if (strData == "1" || strData == "1.0" || strData == "1.00"){
        digitalWrite(relay3,LOW);
        data3 = true;        
      }
       
      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
        digitalWrite(relay3,HIGH);
        data3 = false;      
      }     
      } 
      else{  
         hardReset();
         resetFunc(); 
         clearBuffer();  
         goto loop_start;   
       
     } 

     delay(10000);  
      sprintf(buff, "/channels/58419/fields/4/last");              // field x last Data
      Serial.println(buff);
           
      rest.get((const char*)buff);
      if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
         
        strId = "";  strData = "";  strCode = "";  
        getData();                                                // GET DATA
      
      
      if (strData == "1" || strData == "1.0" || strData == "1.00"){
        digitalWrite(relay4,LOW);
        data4 = true;        
      }
       
      if (strData == "0" || strData == "-1" || strData == "0.1" || strData == "0.10"){
        digitalWrite(relay4,HIGH);
        data4 = false;      
      }     
      } 
      else{  
         hardReset();
         resetFunc(); 
         clearBuffer();  
         goto loop_start;   
       
     } 
     
      delay(10000);      
      loop_count++;
      Serial.println("LOOP : ");
      Serial.println(loop_count);
      
      if(loop_count == 6 ){
        loop_count = 0;
      
      if(data1) {       
           dtostrf(1, 1, 1, str_field1);     
      }else{
         dtostrf(0.1, 2, 1, str_field1);    
      }
      if(data2) {
           dtostrf(1, 1, 1, str_field2);
      }else{
         dtostrf(0.1, 2, 1, str_field2);   
      }
      if(data3) {
           dtostrf(1, 1, 1, str_field3);
      }else{
         dtostrf(0.1, 2, 1, str_field3);   
      }
      if(data4) {
           dtostrf(1, 1, 1, str_field4);
      }else{
         dtostrf(0.1, 2, 1, str_field4);   
      }
        
          sprintf(buff, "//update?key=65OKK4T6SKM96AVO&field1=%s&field2=%s&field3=%s&field4=%s",str_field1,str_field2,str_field3,str_field4);
          Serial.println(buff);
           
          rest.get((const char*)buff);
          Serial.println("ARDUINO: Mengirim data terbaru");

          if(rest.getResponse(response, 266) == HTTP_STATUS_OK){
            Serial.println("ARDUINO: Berhasil GET Data");
            strId = "";  strData = "";  strCode = "";  
            getData();
          }
      delay(5000);
      }
  }
  
  else{
  }
  
}
  
void getData(){
   int i=0,j=0,k=0; 
     
         for (i = 0; i < 10; i++){         
        
          if((response[i] == '\r') || (response[i] == '\n')) { 
          }
          else{          
             strId += response[i];       
          }
          
          if (response[i] == '\n'){ 
               i++;         
               break;
          }                    
        }
        
        Serial.println("");
        Serial.print("ID : ");
        Serial.print(strId);
           
         for (j = i; j < (i+20); j++){
          
          if((response[j] == '\r') || (response[j] == '\n')) { 
          }
          else{          
             strData += response[j];       
          }
          
          if (response[j] == '\n'){ 
                j++;      
                break;
          }                     
        }
        
        Serial.println("");
        Serial.print("Data : ");
        Serial.print(strData);
         for (k = j; k < (j+10); k++){        
              
          if((response[k] == '\r') || (response[k] == '\n')) { 
          }
          else{          
             strCode += response[k];       
          }
          
          if (response[k] == '\n'){                       
                break;
          }                     
        }
        Serial.println("");
        Serial.print("Code : ");
        Serial.print(strCode);      
        Serial.println("");        
      }
  boolean hardReset() {
  String tmpData;
}


KETERANGAN SKETCH :

1.sketch berikut ini ubah dan sesuaikan dengan SSID dan Password anda
    
    esp.wifiConnect("Andy182 Network","waipigratis");

2.ubah setiap sketch di bawah ini sesuaikan dengan Channel Id thingspeak anda 

sprintf(buff, "/channels/58419/fields/1/last"); // untuk field 1
sprintf(buff, "/channels/58419/fields/2/last"); // untuk field 2
sprintf(buff, "/channels/58419/fields/3/last"); // untuk field 3
sprintf(buff, "/channels/58419/fields/4/last"); // untuk field 4


3. ubah dan sesuaikan dengan Api Key thingspeak anda

sprintf(buff, "//update?key=65OKK4T6SKM96AVO&field1=%s&field2=%s&field3=%s&field4=%s",str_field1,str_field2,str_field3,str_field4);



taraaaaa....selesai sudah tutorialnya semoga berhasil 
silahkan tonton video berikut ini