Започвам тази тема за да хвърлим малко светлина върху тези 2 типа атаки. Тъй като принципите на кракване на пароли с тези техники са супер аналогични избрах да покажа как можете за 5 минути да си напишете bash скрипт, който да кракне парола на популярната програма WinRar.
Защо WinRar? Защото механизма на шифроване му е доста усъвършенстван. За да кодира архива WinRar използва самата парола, като ключ. За разлика от други типове архиви, при този вид архивиране няма друг начин, освен прилагането на сила и то с много мускули :).
Какво трябва да направим за да хакнем подобна парола? Да разберем цикъла по който функционират всичките ремембъри пасс и дрън дрън платени приложения за WinBlowz.
Цикъла е следния:
1. Зареждане на речник с думи или генериране на комбинации от символи.
2. Извличане на всяка дума по отделно от тези списъци и тестване на архива с нея
3. При получаване на положителен резултат изписване на паролата и моментално прекратяване на скрипта
Няма да се впускам в дълги обяснения за всяка команда на bash, която ще използвам, защото всички, команди, които видите ще бъдат описани в урока за bash, който започнахме.
Да започнем с техниката Dictionary atack. При тази техника обикновено се теглят готови списъци с думи от интернет. При нея се разчита, че повечето хора ползват логично-свързани символи, от сорта на abv, abcd, admin, user, potrebitel, ivan, asen, Hasan, Mitko, az и т.н. Как се събират тези речници е друг въпрос. Факт е, че около 20% от потребителите на интернет използват 1000 еднакви думи за пароли (поне такава статистика имаше преди 2-3 години). Значи ако разполагаме с речник с тези 1000 думи ще можем да кракнем личната информация на 20% от потребителите на глобалната мрежа. Стига статистика.
Да видим как ще изградим по-горе описания цикъл с bash под linux (в случая ще ползвам Ubuntu). За целта ще използвам един Rar архив, на който сложих парола rar_archive.rar. Да предположим, че съм изтеглил и един речник с който да бомбандирам архива, всъщност речника си го написах сам, като нарочно добавих паролата в него paroli.txt. Сега ще напиша и няколко реда на bash, които да разбият паролата на архива:
counter=0
IFS='
'
for i in `cat paroli.txt`;
do
unrar t -p"$i" rar_archive.rar > /dev/null 2>&1
stat=$?
if [ $stat -eq 0 ]; then
echo "Parolata e: $i"
echo "Namira se na red $counter v dictionary faila"
exit $stat
fi
let counter+=1
done
echo
echo Count: $counter
exit $stat |
Записваме този файл като rar-hack.sh в същата директория с архива и речника.
За да направим файла изпълним в конзолата трябва да изпълним:
Малко обяснения за скрипта. Реда:
for i in `cat paroli.txt`; |
Зарежда всеки ред от файла paroli.txt и го подава на променливата i. След това тази промелива се тества дали отговаря на паролата, което го правим в:
unrar t -p"$i" rar_archive.rar > /dev/null 2>&1 |
Програмата unrar е разпостранена в много linux дистрибуции, така, че предполагам и при вас и има. Ако погледнем в "unrar --help" ще видим, че командата "t" тества архива, а суича "-p[pass]" вкарва парола при поискване. Идеално, тъкмо за нас :)! Време е да изпълним цялата тая хавица.
Ако искаме да направим бенчмарк на времето за разбиване на паролата можем да изпълним скрипта, като добавим time пред скрипта:
При мен разби паролата за 2 секунди. Но моята машина вече е старичка.
Да видим по-интересната техника с BruteForce. Няма да се спирам на дълги обяснения. В този случай ще заместим речника с един масив в който генерираме последователни комбинации от символи. Нещо като да пуснеш ТОТО 2 със всички възможни комбинации :).
Масива го създавам много лесно, като няма да обхвана цялата латинска азбука, а само символите a,b,c,d,e,f,g и то във всички четирисимволни комбинации между тях, като afcd, aaaa, ffff, fbcd и т.н.:
counter=0
words=({a..g}{a..g}{a..g}{a..g})
for i in "${words[@]}";
do
unrar t -p"$i" rar_archive.rar > /dev/null 2>&1
stat=$?
if [ $stat -eq 0 ]; then
echo "Parolata e: $i"
echo "Namira se na red $counter v dictionary faila"
exit $stat
fi
let counter+=1
done
echo
echo Count: $counter
exit $stat |
Да запишем и този файл като rar-hack-s-masiv.sh . Да видим какво ще стане и като го изпълним, като пак измерим времето:
time ./rar-hack-s-masiv.sh |
Тук скоростта на кракване зависи от това на кое място в комбинациите се намира съвпадението с паролата. Ако имаме четирите символа "zzzz" то при едно подобно трасиране ще ни трябват няколко часа, защото това ще е последната възможна комбинация от латинската азбука с малки букви.
Моята вефта машинка позна паролата за:
Чудесно, но ако паролата е по-сложна, с повече от 4 символа. Е тогава ще ми трябват дни. Възможностите, които имам са да направя скрипта многонишков и така да уплътня максимално процесорното време.
Друго, което трябва да се знае, че не бива да зареждате толкова големи масиви в временната памет, защото така ще зависне машината. По добре е вместо масив да се използват xargs:
echo {a..g}{a..g}{a..g}{a..g} | xargs -n1 |
или нещо от сорта.
Ще ми е интересно някой да ми каже паролата на тоя архив !