Posts Tagged ‘Ubuntu’

Kompilera Reaver i Ubuntu 12.04 (och aircrack-ng)

Detta är en snabbguide för hur man bygger Reaver i Ubuntu 12.04

Steg:

  1. ladda ner källkoden
  2. installera bibliotek och de verktyg som behövs
  3. ladda ner och bygg aircrack-ng
  4. kompilera och installera
  5. kör =)

Ladda ner källkoden

Först måste den senaste versionen laddas ner från http://code.google.com/p/reaver-wps/

wget http://reaver-wps.googlecode.com/files/reaver-1.4.tar.gz

Extrahera tarbollen

tar -xzvf reaver-1.4.tar.gz

Installera bibliotek och de verktyg som behövs

Innan du kan bygga Reaver så behöver du installera pcaplib och för att köra Reaver så behövs aircrack-ng (iw).

sudo apt-get install libpcap-dev sqlite3 libsqlite3-dev libpcap0.8-dev

Kompilera och installera

Bygg Reaver

cd reaver-1.4
cd src
./configure
make

Installera Reaver

sudo make install

Ladda ner aircrack-ng och bygg

Sedan Ubuntu 12.04 kan man inte längre ladda ner aircrack-ng från biblioteket men du kan ladda ner det från källan och kompilera själv. Det är bara en liten sak som måste skräddarsys då det inte kan byggas som standard utan att få följande fel:

johan@ubuntu-lab:~/aircrack-ng-1.1$ make
make -C src all
make[1]: Entering directory `/home/johan/aircrack-ng-1.1/src’
make -C osdep
make[2]: Entering directory `/home/johan/aircrack-ng-1.1/src/osdep’
Building for Linux
make[3]: Entering directory `/home/johan/aircrack-ng-1.1/src/osdep’
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -fPIC -I..    -c -o osdep.o osdep.c
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -fPIC -I..    -c -o network.o network.c
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -fPIC -I..    -c -o linux.o linux.c
linux.c: In function ‘is_ndiswrapper’:
linux.c:165:17: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_rate’:
linux.c:334:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_channel’:
linux.c:807:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_freq’:
linux.c:896:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘set_monitor’:
linux.c:1022:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘do_linux_open’:
linux.c:1366:12: error: variable ‘unused_str’ set but not used [-Werror=unused-but-set-variable]
linux.c:1352:15: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘get_battery_state’:
linux.c:1982:35: error: variable ‘current’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make[3]: *** [linux.o] Error 1
make[3]: Leaving directory `/home/johan/aircrack-ng-1.1/src/osdep’
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/johan/aircrack-ng-1.1/src/osdep’
make[1]: *** [osd] Error 2
make[1]: Leaving directory `/home/johan/aircrack-ng-1.1/src’
make: *** [all] Error 2

Så här bygger du aircrack-ng

sudo apt-get install build-essential
sudo apt-get install libssl-dev
wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
tar -zxvf aircrack-ng-1.1.tar.gz
cd aircrack-ng-1.1

Redigera common.mak, t.ex. med vi

vi common.mak

Leta upp följande rad

CFLAGS          ?= -g -W -Wall -Werror -O3

Ta bort “-Werror” så att det ser ut så här

CFLAGS          ?= -g -W -Wall -O3

Spara filen, bygg och installera

make
sudo make install

Kör

Reaver är nu installerat och klart för att användas. Du behöver först sätta wifi-adaptern i monitoreringsläge innan du kan köra och enklast är att använda airmon-ng (del av aircrack-ng) som du precis installerade.

Sätt adaptern i monitoreringsläge, i mitt fall wlan0

sudo airmon-ng start wlan0

Kör Reaver

sudo reaver -i mon0 -b 00:00:00:00:00:00

Ersätt MAC 00:00:00:00:00:00 med MAC-adressen till den AP som du vill knäcka

– Johan Ryberg

Guide: Så här får du Gobi 2000 Wireless modem att fungera under Ubuntu 12.04

Installera 3G-modemet Sierra Wireless, Inc. Gobi 2000 Wireless Modem

Här följer instruktioner för hur man får 3G-modemet Sierra Wireless, Inc. Gobi 2000 Wireless Modem att fungera under Ubuntu 12.04 LTS (Precise Pangolin) inkl. någorlunda stöd för GPS

Denna guide bör fungera till samtliga av följande modeller:

  • Fujitsu CELSIUS H700
  • Fujitsu LIFEBOOK A530 / AH530
  • Fujitsu LIFEBOOK A550 / AH550 (Intel Gfx)
  • Fujitsu LIFEBOOK AH550 (NVidia Gfx)
  • Fujitsu LIFEBOOK E780 (Intel Gfx)
  • Fujitsu LIFEBOOK E780 (NVidia Gfx)
  • Fujitsu LIFEBOOK P3110
  • Fujitsu LIFEBOOK P770
  • Fujitsu LIFEBOOK P8110
  • Fujitsu LIFEBOOK PH530
  • Fujitsu LIFEBOOK S710
  • Fujitsu LIFEBOOK S760
  • Fujitsu LIFEBOOK T4410/ T4310
  • Fujitsu LIFEBOOK T580
  • Fujitsu LIFEBOOK T730
  • Fujitsu LIFEBOOK T900
  • Fujitsu LIFEBOOK TH700
  • Fujitsu LIFEBOOK UH900
  • samt övriga modeller från t.ex. HP, Lenovo och övriga med Sierra Wireless, Inc. Gobi 2000 Wireless Modem

Kontrollera först så att du verkligen har det integrerade modemet i datorn med lsusb

johan@ubuntu-lab:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 1199:9000 Sierra Wireless, Inc. Gobi 2000 Wireless Modem (QDL mode)
Bus 001 Device 004: ID 04f2:b186 Chicony Electronics Co., Ltd
Bus 002 Device 003: ID 08ff:2550 AuthenTec, Inc.
Bus 002 Device 004: ID 1b96:0008 N-Trig
Bus 002 Device 005: ID 1690:0741 Askey Computer Corp. [hex]
Bus 001 Device 005: ID 1234:ffff Unknown

Installera wrappern för Gobi som behövs för att ladda 3G-modemets firmware samt wine som behövs för att extrahera firmwaren från drivrutinens installationspaket för Microsoft Windows XP/Windows 7.

johan@ubuntu-lab:~$ sudo apt-get install gobi-loader wine

Ladda ner drivrutinen från http://support.ts.fujitsu.com/Download/Download.asp?SoftwareGUID=BE060271-9410-4E34-B732-D7D016F9EC27&Filename=FTS_SierraWirelessGobi2000HSUSBMobileBroadband_11180_1053221.zip

Ställ dig i ett terminalfönster där du sparat filen som i ~/Downloads i mitt fall

johan@ubuntu-lab:~$ cd Downloads/

Extrahera arkivet med kommandot unzip FTS_SierraWirelessGobi2000HSUSBMobileBroadband_11180_1053221.zip

johan@ubuntu-lab:~/Downloads$ unzip FTS_SierraWirelessGobi2000HSUSBMobileBroadband_11180_1053221.zip

Ställ dig i den katalog som precis skapades

johan@ubuntu-lab:~/Downloads$ cd 72-VR322-15_1.1.180

Använd wine och kommandot msiexec för att extrahera drivrutinerna från MSI-filen. Filerna kommer att hamna i “virtuella” c: som ligger under ~/.wine/drive_c

johan@ubuntu-lab:~/Downloads/72-VR322-15_1.1.180$ wine msiexec /a GobiInstaller.msi /qb TARGETDIR="c:\temp"

Skapa katalogen /lib/firmware/gobi och kopiera drivrutinerna dit.

johan@ubuntu-lab:~/Downloads/72-VR322-15_1.1.180$ sudo mkdir /lib/firmware/gobi
johan@ubuntu-lab:~/Downloads/72-VR322-15_1.1.180$ sudo cp ~/.wine/drive_c/temp/Images/Sierra/UMTS/* /lib/firmware/gobi/
johan@ubuntu-lab:~/Downloads/72-VR322-15_1.1.180$ sudo cp ~/.wine/drive_c/temp/Images/Sierra/0/UQCN.mbn /lib/firmware/gobi/

Nu är det bara att starta om datorn för att 3G-modemet skall initieras ordentligt och synas i t.ex. network-manager.

GPS

Vissa modeller av Gobi 2000 har inbyggd GPS och den går också att använda men i mitt fall försvinner anslutningen mot 3G-modemet varje gång jag kommunicerar mot GPS:en vilket är ett problem som jag ännu inte löst. Jag tar gärna mot tips om någon har löst detta.

Installera valfri GPS-klient, jag har valt gpsd

johan@ubuntu-lab:~$ sudo apt-get install gpsd gpsd-clients

Konfigurera gpsd

johan@ubuntu-lab:~$ sudo /lib/udev/gpsd.hotplug add /dev/ttyUSB2
johan@ubuntu-lab:~$ sudo dpkg-reconfigure gpsd

Ange /dev/ttyUSB2 som enhet för GPS:en

Starta gpsd

johan@ubuntu-lab:~$ sudo service gpsd start

Tyvärr kommer inte GPS:en att fungera innan man instruerar den att starta vilket sker manuellt genom att skriva följande kommando. Tänk också på att 3G modemet slutar att fungera så fort man kommunicerar över /dev/ttyUSB2

johan@ubuntu-lab:~$ sudo su -
root@ubuntu-lab:~$ echo "\$GPS_START" > /dev/ttyUSB2

För att stoppa GPS:en skriver man följande kommando

johan@ubuntu-lab:~$ sudo su -
root@ubuntu-lab:~$ echo "\$GPS_STOP" > /dev/ttyUSB2

– Johan Ryberg

Konfigurera SSH för ökad säkerhet

Konfigurera SSH för ökad säkerhet

Det finns några steg man bör ta efter att man installerat SSH på ditt system. En kedja är inte starkare än den svagaste länken och gällande SSH är ett svagt lösenord till t.ex. root ett allvarligt hot.

Det vi skall göra är att skapa ett certifikat och stänga av möjligheten att logga in utan certifikat. Vi skall även kontrollera så att root inte får logga in då det är mycket bättre att använda sudo när administratörsrättigheter behövs. Vidare skall vi stänga ner några krypteringsmetoder som inte anses som fullt så säkra samt öppna upp för visuell identifiering av serverns “fingeravtryck”.

Skapa nyckel
Vi väljer att använda en RSA-nyckel på t.ex. 4096 bitar. Öppna ett terminalfönster och skriv in följande: ”’ssh-keygen -t rsa -b 4096”’. 1024 sägs vara tillräckligt säkert men man kan aldrig vara för säker ;-)

johan@johan-laptop:~$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.

Du får sedan upp en fråga var du vill spara din nyckel. Har du redan nycklar i id_dsa bör du ange ett annat namn för filen skrivs över annars. Är du nöjd med förlaget tycker du bara retur

Enter file in which to save the key (/home/johan/.ssh/id_rsa):

Sedan skall du ange lösenord. Tänk på att blanda stora och små bokstäver samt lägga in tecken och siffror. Längden är dock en mycket viktig faktor så gör det hellre längre än kort och komplext. Gärna en liten mening som hjälper dig att komma ihåg lösenordet utantill eller absolut bäst är att använda t.ex. Keepass för att både skapa slumpmässiga lösenord men även spara dem på ett krypterat och säkert sätt.

Enter passphrase (empty for no passphrase): M1tt H3ml1g@ löSe40rD
Enter same passphrase again: M1tt H3ml1g@ löSe40rD
Your identification has been saved in /home/johan/.ssh/id_rsa.

Your public key has been saved in /home/johan/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:x:xx:xx:xx:xx:xx:xx

Installera den publika nyckeln i systemet
Den publika nyckeln skall läggas i ~/.ssh/authorized_keys och det kan finnas fler nycklar än en. Se till att göra radmatning mellan nycklarna.
Om nyckeln skall installeras på samma system kopierar du helt enkelt id_dsa.pub till authorized_keys.

johan@johan-laptop:~$ cd ~/.ssh
johan@johan-laptop:~/.ssh$ cp id_rsa.pub authorized_keys

Skulle det vara en extern maskin kan du använda scp för att kopiera nyckeln, tänk då på att du inte skriver över authorized_keys om det skulle finnas existerande nycklar i filen. För att kopiera (skriva över befintlig fil) gör du följande

johan@johan-laptop:~/.ssh$ scp -p ~/.ssh/authorized_keys 192.168.0.1:.ssh/
johan@192.168.0.1’s password:
authorized_keys 100% 1839 1.2MB/s 00:00

Se även till att ~/.ssh/autorized_keys och ~/.ssh/id_rsa endast har gällande användares rättigheter. Vid problem använd chmod 600 för att åtgärda.

Konfigurera sshd
Nästa steg är att kontrollera inställningarna för sshd. Filen vi skall modifiera heter /etc/ssh/sshd_config
Börja med att skapa en säkerhetskopia av sshd_config

johan@johan-laptop:/$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
Password:

Sedan använder vi lämplig editor för att modifiera sshd_config

johan@johan-laptop:/$ sudo nano /etc/ssh/sshd_config

Följande rader skall ändras:

  • LoginGraceTime 120
  • PermitRootLogin yes
  • Ciphers

 

  • LoginGraceTime 30

LoginGraceTime är antalet sekunder innan man blir utkastad om man inte lyckas med inloggningen. Det är en smaksak men 120 sekunder behöver man normalt sätt inte på sig. Sänk den med fördel. Dock bör du hinna ange ditt lösenord innan tiden går ut.

  • PermitRootLogin no

Root behöver inte kunna logga in via ssh. Du kan använda sudo istället vilket är mycket säkrare.
Vi skall även lägga till en så att man förhindrar möjligheten att logga in med hjälp av användarnamn och lösenord vilket betyder att man tvingas använda certifikat. Lägg till:

  • PasswordAuthentication no
  • Ciphers aes128-ctr,aes256-ctr,arcfour256,arcfour,aes128-cbc,aes256-cbc

Ciphers ändrar vi på grund av en potentiell sårbarhet i vissa krypteringsmetoder, mer information om dessa här:
[1] http://openssh.org/txt/cbc.adv
[2] http://www.cpni.gov.uk/Docs/Vulnerab…visory_SSH.txt
[3] http://www.cs.washington.edu/homes/y…pers/TISSEC04/

Kontrollera även så att följande rader så att standardinställningarna stämmer:

  • Protocol 2
  • UsePrivilegeSeparation yes
  • StrictModes yes
  • RSAAuthentication yes
  • PubkeyAuthentication yes

Spara och avsluta.

Nu skall vi bara starta om sshd så att de nya inställningarna tar.

johan@johan-laptop:~/.ssh$ sudo /etc/init.d/ssh restart
Password:
* Restarting OpenBSD Secure Shell server… [ OK ]

Konfigurera ssh för visuell värdnyckel (Visual Host Key)
När man loggar in mot en viss värd är det inte så lätt att identifiera att det är rätt maskin, någon kan till exempel ha styrt om din DNS till en annan maskin och på så sätt lura dig att logga in i fel maskin för att stjäla kontouppgifter.

För att lösa detta har gänget bakom OpenSSH utvecklat en visuell representation av nyckeln så att det blir mycket lätt att känna igen sitt egna system. För att aktivera VisualHostKey skall man ändra i antingen /etc/ssh/ssh_config vilket gäller alla användare eller ~/.ssh/config för en personlig inställning

Lägg till följande i konfigurationen (“Host * finns redan överst i ssh_config)

Host *
VisualHostKey yes

Byta från standardport 22?

Det innebär ingen direkt ökad säkerhet att ändra port, men man slipper de flesta script-kiddies attacker och maskar när man flyttar sig från standardportar. Detta gäller samtliga tjänster och inte bara ssh. Det man kan skydda sig mot genom “säkerhet via oreda” är att en mask eller script som snabbt scannar nätet efter en ev. 0-day sårbarhet missar systemet vilket är mer tur än skicklighet för om någon verkligen vill in så gör man en mer noggrann kontroll av det system man vill in i. Om man ändå vill byta är det bäst att lägga sig mellan 0 och 1023 då dessa är privilegierade vilket betyder att endast konton med administrativa rättigheter kan starta tjänster och därför slipper man hamna i en riggad tjänst startad av en användare som t.ex. loggar lösenord.

Testa och verifiera
Testa att logga in i systemet. Glöm inte av att du har bytt port. Du måste även ange användarnamn om du inte har samma användarnamn på fjärrdatorn som den lokalt inloggande användare. Detta gör du genom att skriva användarnamn@server.ip

johan@johan-laptop:/$ ssh johan@localhost -p 10022
Host key fingerprint is 66:12:14:8a:31:23:4f:86:13:f2:1c:4d:33:dd:d4:67
+–[ RSA 4096]—-+
| |
| .o |
| . =o .|
| . += E|
| + S . .o|
| . + .. o|
| . o.= |
| +o+ o|
| +=o |
+—————–+
Enter passphrase for key ‘/home/johan/.ssh/id_dsa’:

Nu är du säkert inloggad i ditt system

–Johan Ryberg

Kompilera Reaver i Ubuntu 11.10

Detta är en snabbguide för hur man bygger Reaver i Ubuntu 11.10

Steg:

  1. ladda ner källkoden
  2. installera bibliotek och de verktyg som behövs
  3. kompilera och installera
  4. kör =)

Ladda ner källkoden

Först måste den senaste versionen laddas ner från http://code.google.com/p/reaver-wps/

wget http://reaver-wps.googlecode.com/files/reaver-1.3.tar.gz

Extrahera tarbollen

tar -xzvf reaver-1.3.tar.gz

Installera bibliotek och de verktyg som behövs

Innan du kan bygga Reaver så behöver du installera pcaplib och för att köra Reaver så behövs aircrack-ng.

sudo apt-get install libpcap-dev aircrack-ng sqlite3 libsqlite3-dev

Kompilera och installera

Bygg Reaver

cd reaver-1.3
cd src
./configure
make

Installera Reaver

sudo make install

Kör

Reaver är nu installerat och klart för att användas. Du behöver först sätta wifi-adaptern i monitoreringsläge  innan du kan köra och enklast är att använda airmon-ng (del av aircrack-ng) som du precis installerade.

Sätt adaptern i monitoreringsläge, i mitt fall wlan0

sudo airmon-ng start wlan0

Kör Reaver

sudo reaver -i mon0 -b 00:00:00:00:00:00

Ersätt MAC 00:00:00:00:00:00 med MAC-adressen till den AP som du vill knäcka

– Johan Ryberg

Använd SSH tillsammans med krypterad hemkatalog i Ubuntu

Eftersom man normalt inte tillåter lösenord via SSH utan kräver certifikat så finns det en begränsning i standardinstallationen i Ubuntu som gör det omöjligt att logga in om man har en krypterad hemkatalog. Detta är på grund av att authorized_keys ligger under /home/<användarnamn>/.ssh/ vilket ligger den krypterade hemkatalogen och är därför inte åtkomligt innan man har loggat in. Problemet är just att man inte är inloggad och därför är inte hemkatalogen dekrypterad när sshd behöver läsa filens innehåll för att avgöra om din privata nyckel tillhör den publika nyckeln.

Om man har detta problem borde likande rader i /var/log/auth.log finnas för varje misslyckat inloggningsförsök:

Jan 11 20:55:25 server su[28291]: pam_sm_authenticate: Called
Jan 11 20:55:25 server su[28291]: pam_sm_authenticate: username = [<användarnamn>]
Jan 11 20:55:25 server su[28292]: Passphrase file wrapped
Jan 11 20:55:27 server su[28292]: Error attempting to add filename encryption key to user session keyring; rc = [1]

Lösningen är som tur är väldigt enkel

Skapa först en ny katalog som du döper till /etc/ssh-public-keys/<användarnamn>/

sudo mkdir /etc/ssh-public-keys/johan

Flytta authorized_keys till /etc/ssh-public-keys/<användarnamn>/

sudo mv ~/.ssh/authorized_keys /etc/ssh-public-keys/johan/

Redigera /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Ändra AuthorizedKeysFile till

AuthorizedKeysFile /etc/ssh-public-keys/%u/authorized_keys

Starta sedan om sshd för att förändringen skall ta

sudo service ssh restart

–  Johan Ryberg

Hotet innefrån

Jag är en stor anhängare av öppen källkod, Linux och OpenBSD. Jag älskar öppenheten och alla möjligheter det medför. Det har dock alltid funnits ett orosmoln som jag inte riktigt kan släppa och som inte bara har med öppen källkod att göra men med tanke på den allmänna uppfattningen om att öppen källkod automatiskt är mer granskad och säker så hämtas program från t.ex. Ubuntus programarkiv (repository) utan någon större eftertanke men program som hämtas för Windows ute från diverse hemsidor så ägnas som oftast en större eftertanke och försiktighet innan man väljer att hämta hem programmet.

Det jag ofta känner olust för och som då och då faktiskt händer är att utan utvecklarnas/utgivarens medvetenhet så bakas trojaner och annan skadlig kod in i mjukvaran i fråga och som i vissa fall existerar riktigt lång tid utan att någon reflekterar över det. Detta avfärdas ofta gällande öppen källkod då man anser att det finns så många vakande ögon men hur många granskar källkoden för att sedan kompilera den själv?

Det finns några projekt i närtid som jag dels har i åtanke som t.ex. ProFTPD 1.3.3c som fick en bakdörr injicerad i koden och denna gång tog det bara ett par dagar innan det uppdagades men vad hade hänt om det tog ett par månader? Risken hade då varit överhängande att flera linuxdistributioner hade inkluderat versionen i sina programbibliotek, distribuerat ut skivor, derivator av linuxdistributionerna  kan ha skapats utan någon säkerhetsorganisation bakom som snabbt kunnat åtgärdat problemet, ja – katastrofen hade blivit ett faktum.

Till och med Debian har haft flera problem, senast på grund av att en utvecklare hade slarvat med sina inloggningsuppgifter och på så sätt fick dem intrång i en server. Även om just denna server inte innehåll programbibliotek som användare uppdaterar från så är det ett tecken på hur lätt det kan bli riktigt otrevligt.

Det finns många fler exempel därav Apache, Tor och SquirrelMail är några exempel.

Den stora frågan för oss användare är hur skyddar vi oss? Ofta kan man göra egna kontroller mot t.ex. MD5 men risken är ju att även MD5-summorna har blivit uppdaterade för att passa mot den modifierade koden. Jag tror inte det finns något skydd och man får helt enkelt lägga stor tillit till de personerna som hanterar källkod och programbibliotek men man bör ändå tänka till och ifrågasätta även när man installerar program via Ubuntus programbibliotek.

Ser gärna att jag får kommentarer på detta, vad är era tankar?

–  Johan Ryberg

Return top