566078958
|
Главная » Криптография и шифрование
|
|
|
|
Руководство прилагается в первую очередь для новичков. JTR - программа
для восстановления паролей для UNIX/Win95/NT/DOS систем, но в народе как
то повелось использовать JTR в основном для взлома *nix паролей (для чего
он и предназначался в ранних версиях). На NT, большинство юзает l0pht,
а на pwl, PWL-tool. Прежде чем начнем разбираться с самим JTR, давайте
остановимся на самих паролях в *nix системах.
Немного о паролях. В Linux пароли
шифруются в алгоритме "DES", также есть такая фишка как "salt", это 2е любые
буквы, которые являются ключом к паролю, другими словами, с помощью "salt" и
шифруется пароль. Подробнее об этом написано в статье "пароли в UNIXе" (почитать
можно на http://www.hack-crack.com)./ Просто не хочу повторяться, да и тема у нас сейчас другая. Пароли в большинстве
случаев хранятся в следующих файлах:
/etc/passwd
/etc/shadow
Хотя могут и лежать в каком-нибудь /etc/shadow.old или /etc/passwd.tmp
. Сделав листинг директории /etc/, сразу можно все понять. Просто иногда
хитрые админы меняют названия файлов. passwd файл, это как раз то что нам
надо, но в большинстве случаев пароли хранятся в shadow (в тени), в этом
случае в passwd видим следующую ситуацию:
root:*:0:0:System
Administrator:/root:/bin/csh
rfindd:*:66:1:Rfind Daemon and
Fsdump:/var/rfindd:/bin/sh
…
Внимание! Это на самом деле fake, и никаких паролей здесь нет! А то бывали
кадры, которые мне говорили, что типа пароли почему то JTR не берет. А
вот если видим такую ситуацию:
root:9IDv/CqdFuqWo:0:0:System
Administrator:/root:/bin/csh
john:653MWdpUGN3BM:66:1:John Nikolsen, 2-nd
west:/home/john:/bin/sh
То можно заметить, что данный пример более похож
на правду. Давайте разберемся на примере с пользователем "john":
john:653MWdpUGN3BM:66:1:John Nikolsen, 2-nd west:/home/john:/bin/sh
1. john - имя пользователя.
2. 653MWdpUGN3BM - пароль зашифрованный
в DES.
3. 66:1 - номер пользователя в системе : номер рабочей группы (у root
всегда 0:0).
4. John Nikolsen, 2-nd west - информация о пользователе (обычно
Имя, Фамилия…).
5. /home/john - Домашний каталог.
6. /bin/csh - shell.
Теперь ты свободно можешь разобрать passwd файл. Но сразу хотелось бы отметить,
что на файл в котором находятся пароли в DES (будь то shadow или passwd),
права в большинстве случаев дают r-------- или r--r-----, это значит, что
права на чтения есть у root'а и зарегистрированных пользователей (во втором
случае r--r-----). Так что, через какой-нибудь htmlscript, вряд ли удастся
просмотреть, но все таки иногда везет, и получается просмотреть все содержимое.
В Free BSD пароли хранятся в файле /etc/master.passwd , а в остальном технология
такая же как и в LINUX, хотя используется более стойкий алгоритм шифрования
MD5. В Open BSD, для шифрования используется алгоритм Blowfish. Ну а теперь
о самом JTR и как его заюзать.
Подготовка.
Вопреки о том, что файлом с паролями является чем то жутким и не понятным,
можно сказать, что пароли можно засунуть в обычный txt файл. Главное чтобы
конструкция была правильная (см. выше). И так, у вас есть что-нибудь типа
этого:
root:6xp8Tw7//32x2:0:0:root:/:/bin/bash
michael:Mrd4OyzXJi/.o:500:500::/home/g.giraud:/bin/bash
nick:lreHgxVKYfqiU:501:501::/home/pages_web:/bin/bash
melisa:sDci0pnsqhhE6:502:502::/home/informix:/bin/bash
johnsonX9gnmqBDSQ/o:506:/home/pages_web:/bin/bash
dacosta:rGTGPVqn/AhuU:507:/home/pages_web:/bin/bash …
Сохраняем все это дело в каком-нибудь файле типа passwd.txt, или просто
passwd. Этот файл как раз и будет то, что надо сунуть JTR. Далее переходим
в папку с JTR, и находим там файл john.exe, в эту же папку ложем наш passwd
файл. Далее идем в "DOS Prompt" ("Режим DOS", не просто
по john.exe щелкаем 2 раза, а именно идем в "Режим DOS", далее
командой:
cd c:jtr
заходим в папку где лежит JTR. Теперь можно запускать JTR. Запускаться
все может в разных режимах и с разными параметрами о которых я сейчас и
постараюсь рассказать. Данные примеры рассматриваются для пользователей
с системами win95/95/NT, для *nix в принципе все опции и параметры идентичны.
Режимы.
1. Самый простой способ, это запустить JTR в режиме "Brute force":
john passwd (Я в дальнейшем буду использовать passwd как имя файла с паролями,
но как я уже и сказал, имя и формат файла может быть практически любым)
Данный способ является самым простым, и не очень эффективным, так как JTR
начинает перебирать все символы от фонаря, что конечно очень долго… хотя
многое зависит от мощности вашего компьютера и от сложности пароля. Пароль
типа "dk9LDs)p1" еще твои правнуки будут доламывать.
2. Перебор по словарю: john -w:wordlist passwd где wordfile - имя файла со словарем. Также можно
и так: john -w:wordlist -rules passwd -rules, включает правила синтаксиса
для словаря. С вариантом по словарю, пароли подбираются на много быстрее
чем в варианте с "Brute force". По-моему, самый лучший и эффективный
способ.
3. incremental mode john -i passwd Авторы JTR говорят, что это самый сильный способ перебора,
95 символов. А вот таким способом: john -i:alpha passwd JTR перепробует
26 символов, от "a", до "zzzzzzzz". Если с wordlist
не получилось, советую запускать данный способ.
4. single mode
(одиночный режим). john -single passwd Рекомендуется начать перебирать пароль с данной опцией.
Намного быстрее чем wordlist mode, но рассчитан на хиленькие пароли. При
переборе нескольких файлов с данной опцией, возможно подобрать пароли быстрее
чем просто 1 passwd файл.
Опции. Теперь
я перечислю пару полезных опции для JTR. Опции можно запускать в любых
режимах:-w, -i, -single.
1. Перебор для конкретного пользователя:
john -w:wordlist -rules -users:0 passwd Перебирает пароль к конкретному
пользователю (в нашем случае root). Что бы указать пользователя, надо после
":" указать UID (номер пользователя в системе).
2. Смотрим подобранные
пароли.
john -show passwd Показывает уже подобранные пароли, в указанном файле.
3. Разбиваем файл на куски.
john -w:wordlist -salts:5 passwd
john -w:wordlist -salts:-5 passwd
Иногда бывает полезно (если есть 2
компьютера). Число "5" это количество "salts" (паролей). JTR будет отчитывать с
самого верху. В первом примере (на 1ом компе), берется первые 5 пользователей,
во втором примере "-5" (на 2ом компе), перебираются все, кроме 5и первых.
4. Люблю shells.
john -w:wordlist -rules -shells:sh,csh,tcsh,bash passwd В данном случае,
будут перебираться только те пользователи, которые имеют указанные в вышеприведенном
примере shell'ы.
5. Несколько passwd файлов. Если у вас есть
несколько файлов с паролями в DES, то их можно всех вместе поставить на
расшифровку данным способом:
john -single passwd passwd1 passwd2
Количество файлов по-моему не ограничено. Способ с несколькими файлами,
работает на всех режимах и опциях, просто укажите имена файлов в конце
(как в примере).
6. Unshadow files.
unshadow passwd shadow Если у вас пароли в shadow, то данной командой, их можно восстановить (требует shadow файл).
Ну вот ты и научился юзать JTR . В данной статье были описаны
практически все самые полезные примеры, которым можно найти применение.
За более подробной информацией на Английском, можно обратиться к
документации прилагаемой к JTR. Удачного крека.
|
Скрины:
Дата: 16.01.2010
Добавил: xakep1983
Комментарии: (0)
|
| |
|
|
|
|
|
|
|
Компиляция John The Ripper v1.6.31
О чем это:
Как правильно скомпилировать John The Ripper v1.6.31 (далее - JTR) для
win32-платформы.
Для чего все это :
на форуме появились отзывы что эта версия более быстрая чем старая чуть
ли не в 2 раза. и рекомендация скомпилировать ее, т.к. она существует только
в виде исходников. я подумал, что это просто издевательство над теми, кто
вообще ни разу не компилил юникс-приложения под виндоуз. поэтому помучавшись
сам (неделю-другую) решил поделиться что из этого может получиться.
что нам потребуется
1-
John the Ripper 1.6.31-dev (sources only) - http://www.openwall.com/john/john-1.6.31-dev.tar.gz2- Cygwin for Windows - http://www.cygwin.com/setup.exe
Установка Cygwin и запуск
что это такое? как написано на офф-сайте: The Cygwin tools are ports of
the popular GNU development tools for Microsoft Windows. They run thanks
to the Cygwin library which provides
the UNIX system calls and environment these programs expect. другими словами
- это как раз то что нам нужно для того чтобы скомпилировать исходники
JTR. Подходит для всех Windows 95/98/ME/NT/2000/XP. итак, скачиваем setup.exe
и запускаем его.
выбираем
последовательно:
"Install from Internet";
root-директорию: c:cygwin;
Зеркало, с которого будет качаться дистрибутив и ждем пока появится выбор
компонентов. Оставляем все дефолтные и добавляем те, которые нам нужны
для компиляции. вот с самими компонентами, которые нужны выходит накладка,
т.к. я точно не знаю, какие нужны а какие не нужны для компиляции. поэтому
просто перечислю, что у меня установлено:
Base - default
Devel -
binutils, gcc, make, mingw-runtime
Doc - default
Editors - default
Interpreters - default
Libs - libiconv2, libintl1-2, libncurses5-6,
libpopt0, mingw-runtime, ncurses, tempcap, w32api
Shells - default
Text
- default
Utils - cygutils
Далее нажимаем Next и программа скачивает все на винт. после все скачанное
инсталируется, помещаем ярлык на рабочий стол и ву-а-ля, можно запускать.
Процесс компиляции
запускаем cygwin
с рабочего стола. смотрим, где мы находимся
$pwd
/home/user
user - это то имя пользователя, которое вводится при логине виндоуз. На
самом деле это путь c:cygwinhomeuser теперь копируем исходники джона
в эту директорию как они есть, т.е. doc/, run/, src/ через Проводник. Идем
в консоли cygwin в директорию src/ (cd src) и даем команду
$make
To build John the Ripper, type:
make SYSTEM
where
SYSTEM can be one of the following:
(список систем)
из этого списка
нас интересуют только
win32-cygwin-x86-any Win32, Cygwin, x86
win32-cygwin-x86-mmx Win32, Cygwin, x86 with MMX
Поэтому набираем команду
$make win32-cygwin-x86-mmx
И пошел процесс компиляции. Если все прошло без ошибок, то будет написано,
что созданы exe-файлы в директории run/ можно поздравить себя с победой
и глотнуть чего-нибудь бодрящего но это еще не все. для работы файла john.exe
требуется еще cygwin1.dll Берем его отсюда: c:cygwinbin и переписываем
к джону. Вот теперь все. можно смело запускать. Кстати, dll от старой версии
джона не будет работать с новым.
Что имеем в результате: а в результате получаем новую версию JTR почти
что в 2 раза быстрее старой! По-моему это стоит, чтобы немного помучиться.
|
Скрины:
Дата: 16.01.2010
Добавил: xakep1983
Комментарии: (0)
|
| |
|
|
|
|
|
|
|
1. Сам JohnTheRipper. Лучше взять последнюю версию 1.6.31 с http://www.openwall.com/john/ Откомпилировать ее с помощью CYGWin для Win32 платформы или DjGPP для
DOS. Практика показала что новая версия работает быстрее "классики"
1.6
2. Хороший компьютер, а лучше несколько. Речь идет минимум о 800МГц. К
примеру, PentiumIII 500 перебирает все комбинации из прописных букв длиной
7-8 символов в течении 150 дней. И все еще никак не переберет =) Athlon'ы,
кстати, демонстриуют великолепные результаты.
3. Хороший wordlist и инструмент для его преобразования. У меня это Perl.
Он может сделать все что нам необходимо.
Теперь немного теории. Перебрать все варианты паролей в приемлимое время
практически невозможно. Значит, надо найти наибольшее число паролей за
минимальное время. Я хочу донести до вас свой опыт как это сделать наиболее
оптимально и получить в итоге примерно такой результат.
31667 passwords cracked, 5652 left
Часть первая. Single
Первый и самый быстрый способ перебора это john -single pass.txt
И тому есть несколько причин. Самая веская это та, что john при
переборе использует в качестве словаря логины. И их очень мало по
сравнению с количеством слов в вордлисте. Значит к ним можно применить
более сложные и ресурсоемкие правила. С них то мы и начнем. Для этого
нам потребуется отредактировать файл настроек john.ini
Найдем секцию : [List.Rules:Single]
Откорректируем некоторые правила по отношении к оригинальному конфигу.
Было Стало
<*l$[1-9!0a-z"-/:-@[-`{-~] <*l$[0-9a-z]
<*(?ac$[1-9!0a-z"-/:-@[-`{-~] <*(?ac$[0-90a-z]
<*lr$[1-9!]
<*lr$[0-9]
<*/?au$[1-9!] <*/?au$[0-9]
l^[1a-z2-90A-Z"-/:-@[-`{-~] l^[1a-z0-9A-Z]
<-!?Alp^[240-9]
<-!?Alp^[0-9]
>3(?a[lc]i[12]. удалить
<-l^!$! удалить
.....
удалить
<-l^"$" удалить
После строчки
# Uncomment the following lines if you're really crazy раскомментировать
"тяжелые" правила. Теперь можно добавить несколько новых правил.
1.Правила
вращения(сдвига)
}
]
]}
]]
]]}
]]]
]]]}
]]]]
#Сдвиги, более 7 имеет смысл делать только при наличии логинов длинее 8
символов
]]]]}
]]]]]
]]]]]}
]]]]]]
]]]]]]}
{
[
[{
[[
[[{
[[[
[[[{
[[[[
[[[[{
[[[[[
[[[[[{
[[[[[[
[[[[[[{
2.Правила замены
Выглядят как
sAB
sAC
sAD
sAE
..
sZX
sZY
sab
sac
..
szx
szy
s01
s02
..
s97
s98
s90
sa0
s0a
sa1
s1a
..
sz8
s8z
sz9
s9z
sA0
s0A
sA1
s1A
..
sZ9
s9Z
Вот нам и понадобился перл для создания таких правил. Хотя это можно сделать
и на другом языке программирования.
open(F,'>single');
for($a=ord('A');$a<=ord('Z');$a++)
{
for($a1=ord('A');$a1<=ord('Z');$a1++)
{
if($a ne $a1)
{
print F "s",chr($a),chr($a1),"n";
}
}
}
for($a=ord('a');$a<=ord('z');$a++)
{
for($a1=ord('a');$a1<=ord('z');$a1++)
{
if($a ne $a1)
{
print F "s",chr($a),chr($a1),"n";
}
}
}
for($a=ord('0');$a<=ord('9');$a++)
{
for($a1=ord('0');$a1<=ord('9');$a1++)
{
if($a ne $a1)
{
print F "s",chr($a),chr($a1),"n";
}
}
}
for($i=ord('a');$i<=ord('z');$i++)
{
for($j=0;$j<10;$j++)
{
print F "s",chr($i),$j,"n";
print F "s",$j,chr($i),"n";
}
}
for($i=ord('A');$i<=ord('Z');$i++)
{
for($j=0;$j<10;$j++)
{
print F "s",chr($i),$j,"n";
print F
"s",$j,chr($i),"n";
}
}
close F;
Теперь, вставим получившийся файл в секцию [List.Rules:Single] и запустим john -single pass.txt
Еще причина почему надо запускать режим single самым первым заключается
в том, что другие методы отбросят найденные логины и они не смогут участвовать
в сложных переборах
Часть вторая MyVeryBigWordList
Прежде чем приступить к john -w:wordlist.txt pass.txt надо создать сам
wordlist.txt. Причем, лучше всего собрать все доступные вам ворд и комбо-листы
и сделать из них один вордлист без дубликатов. Наверняка для этого можно
использовать какие-то программы, но я опять все делаю на перле. Вот пример,
как объединить два листа в один ворд-лист без дублей.
open(F,"list1.lst";
while
(defined($a=<F> ))
{
chomp($a);
$k{$a}=1;
}
close F;
open(F,"list2.lst";
while
(defined($a=<F> ))
{
chomp($a);
$k{$a}=2;
}
close F;
open(F,">full.lst";
foreach (sort keys(%k))
{
print F $_,"n";
}
close F;
К примеру, у меня вордлист содержит ~770.000 слов и занимает около 7Мб.
Теперь можно смело запускать john -w:wordlist.txt pass.txt и ждать результатов.
Если режим single у меня отработал за 2 минуты, то режим wordlist уже около
2-х часов. Правда это сильно зависит от количества salt'ов, но об этом
позже.
|
Скрины:
Дата: 16.01.2010
Добавил: xakep1983
Комментарии: (0)
|
| |
|
|
|
|
|
|
|
|
Первый вид контроля над доступом, наиболее распространенный, основан на обладании специфической информацией. Это означает, что правом доступа обладают лишь те лица, которые способны продемонстрировать свое знание определенного секрета, обычно пароля. Львиную долю работы хакера состав- ляет именно поиск этого пароля. В этой главе и рассказывается обо всем, что вам необходимо знать о паролях: как они работают, где хранятся, и как их можно "взломать". пароли Самый простой и дешевый путь зашиты любого типа компьютерной системы сводится к старому, испытанному способу: применению пароля. Даже те компьютеры, которые вовсе не нуждаются в средствах зашиты, зачастую снабжаются паролем просто потому, что пароль дает ощущение психологичес- кого комфорта и его использование не требует особенно много времени, сил и места в памяти. Более того, в системах, уже защищенных другими средствами - магнитными картами или иными программными методами, типа шифрования, нередко удваивают или утраивают заши-ту содержимого, прибе- гая к системе паролей. Таким образом, практически все установки компьютеров включают в себя пароли того или иного вида. Пароли, как правило, рассматриваются в качестве ключей для входа в систему, но они используются и для других целей: блокирование записи на дисковод, в командах на шифрование данных или на разархива-цию файлов - короче, во всех тех случаях, когда требуется твердая уверенность в том, что соответствующие действия будут производиться только законными вла- дельцами или пользователями программного обеспечения. Пароли подразделяются на семь основных групп: - пароли, устанавливаемые пользователем; - пароли, генерируемые системой; - случайные коды доступа, генерируемые системой; - полуслова; - ключевые фразы; - интерактивные последовательности типа "вопрос - ответ"; - "строгие" пароли. Если вы решились на взлом, вам, прежде всего, необходимо вычислить, какой из этих семи видов паролей используется в данной системе. Первый является наиболее распространенным - обычно пользователи, дви- жимые мелким тщеславием, просят придумать себе личный пароль. Случайные пароли и коды, устанавливаемые системой, могут быть нес- кольких разновидностей. Системное программное обеспечение может приме- нить полностью случайную последовательность символов - случайную вплоть до регистров, цифр, пунктуациии длины; или же в генерирующих процедурах могут быть использованы ограничения. Например, каждый код доступа согла- суется с заранее подготовленным шаблоном (вроде oabc-12345-efghn, где буквы и цифры, на заданных позициях, генерируются случайным образом). Создаваемые компьютером пароли могут также случайным образом извлекаться из списка обычных или ничего не значащих слов, созданных авторами прог- раммы, которые образуют пароли вроде onah.foopn, или ocar- back-treen. Полуслова частично создаются пользователем, а частично - каким-либо слу- чайным процессом. Это значит, что если даже пользователь придумает легко угадываемый пароль, например, "секрет", компьютер дополнит его какой-ни- будь неразберихой, образовав более сложный пароль типа "секрет,5гh11". Ключевые фразы хороши тем, что они длинные и их трудно угадать, зато легко запомнить. Фразы могут быть осмысленными, типа "we were troubled by that", или не иметь смысла - "fished up our nose". Ключевые фразы применяются в тех организациях, где менеджер слегка помешан на защите. Следует заметить, что в программировании постепенно намечается тенденция к переходу на более широкое применение ключевых фраз. К концепции ключевых фраз близка концепция кодового акронима, который эксперты по защите оценивают как короткую, но идеально безопасную форму пароля. В акрониме пользователь берет легко запоминающееся предложение, фразу, строчку из стихотворения и т. п., и использует первые буквы каж- дого слова в качестве пароля. Например, акронимами двух приведенных выше фраз являются "wwtbt" и "fuon". Как видите, подобные нововведения в тео- рии паролей значительно затрудняют занятия электронным шпионажем. Шестой тип паролей - интерактивные последовательности "вопрос - от- вет", предлагают пользователю ответить на несколько вопросов, как прави- ло, личного плана: "Девичья фамилия вашей супруги?", "Ваш любимый цвет?", и т. д. В компьютере хранятся ответы на множество таких вопро- сов. При входе пользователя в систему компьютер сравнивает полученные ответы с "правильными". Сеансы вопросов и ответов могут оказаться лако- мым кусочком для хакера, который хорошо знаком с пользователем, под чьим именем он пытается войти в систему. Системы с использованием вопросов - ответов склонны к тому же прерывать работу пользователя каждые десять минут, предлагая отвечать на вопросы, дабы подтвердить его право пользо- ваться системой. Это очень раздражает, особенно если пользователь погру- жен в интересную игру. Ныне такие пароли почти не используются. Когда их придумали, идея казалась неплохой, но раздражающий фактор прерывания привел к тому, что данный метод практически исчез из обихода. "Строгие" пароли обычно используются совместно с каким-нибудь внешним электронным или механическим устройством - "цербером". В этом случае компьютер обычно с простодушным коварством предлагает несколько вариан- тов приглашений, а бе-долага-пользователь должен дать на них подходящие ответы. Этот вид паролей часто встречается в системах с одноразовыми ко- дами, а также в параноидаль-ных организациях. Одноразовые коды - это пароли, которые срабатывают только один раз. К ним иногда прибегают, создавая временную копию для гостей, чтобы проде- монстрировать потенциальным клиентам возможности системы. Они также по- рой применяются при первом вхождении пользователя в систему. Во время первого сеанса пользователь вводит свой собственный пароль и в дальней- шем входит в систему лишь через него. Одноразовые коды могут также при- меняться в системе, когда действительный пользователь входит в нее в первый раз; затем пользователю следует поменять свой пароль на более секретный персональный код. В случаях, когда системой пользуется группа людей, но при этом нельзя нарушать секретность, прибегают к списку одно- разовых кодов. Тот или иной пользователь вводит код, соотвествуюший вре- мени, дате или дню недели. Может быть, вам повезет и вы найдете такой список в одном из своих походов за мусором. Коды, конечно, вам уже не пригодятся, но зато вы уразумеете принцип зашиты данной системы. пороли, устанавливаемые пользователем Большинство паролей относятся к типу "выбери сам". Большинство совре- менных программ запрашивают не слишком короткий пароль, чтобы систему было "труднее взломать". Обычно пароль содержит не менее четырех-пяти букв. Существуют также и другие меры, призванные не позволить пользова- телю создать неудачный пароль. Например, система может настаивать на том, чтобы пароль включал в себя строчные и заглавные буквы вперемешку с цифрами; заведомо очевидные пароли, например, "компьютер", ею отвергаются. В разных операционных системах существует немало программ, которые просматривают файлы, содержащие пароли, анализируют пароли пользователей и определяют, насколько они секретны. Неподходящие пароли заменяются. Вам необходимо досконально познакомиться с такими программами. Тогда вы будете иметь представление о том, какая из этих программ используется в избранной вами системе, и какие пароли данная программа не пропускает. Не считая гениев и безнадежных тупиц, все люди, когда надо принимать быстрые решения, мыслят и действуют примерно одинаково. Людям требуется время, чтобы начать мыслить творчески. Начальные предположения и первые умозаключения в определенных группах людей оказываются одинаковыми. Ког- да человек впервые загружает компьютер, и тот запрашивает у него пароль, этот пароль окажется вариантом одной из общих и актуальных для всех тем - особенно если у пользователя не хватает времени или он находится в незнакомом месте. Представьте себе состояние человека, когда его просят придумать собственный секретный пароль. Возможно, каждая минута промед- ления оборачивается все новыми центами и долларами, либо его окружает группа технических работников, которые обучают этого человека работе с системой. Как бы то ни было, стоит запросу появиться на экране, и чело- века посещает мысль о том, что надо немедленно что-то предпринимать. Лю- ди выдают первое, что приходит им в голову. А в голову приходит то, что они видят или слышат в данный момент, либо то, что собираются сделать сразу же после загрузки. Пароли создаются впопыхах, а последующая замена такого пароля на более надежный происходит достаточно редко. Таким образом, многие пароли извлекаются из мыслей, которые плавают на поверхности сознания - мыслей о работе, семье, возможных событиях, имуществе, обору- довании, увлечениях и интересах. Если вам удастся угадать или узнать од- ну из подобных характеристик полноправного системного пользователя, ве- роятность того, что вы угадаете верный пароль, значительно возрастет. Возьмите каталоги компаний, занимающихся изготовлением наклеек-посте- ров, юмористических фотографий и прочей ерунды, которой пестрят стены офисов. Сколько раз вам уже приходилось видеть растиражированную фразу "Вам необязательно быть кретином, чтобы работать здесь... Но стать им не помешает!". Могу дать гарантию, что словечко "кретин" с этого плаката используется в качестве пароля ежедневно. Не забывайте также о возрасте и образе жизни среднестатистического пользователя, под которого вы собираетесь маскироваться, чтобы войти и совершить взлом. В офисе какой-либо солидной корпорации, скорее всего, не приклеят постер с обнаженной натурой, но вот в студенческом городке это вполне возможно - там стоит опробовать пароли типа "playmate", "victoria", "body" или "month". Самый простой способ раздобыть пароль - самому войти в систему в ка- честве пользователя, или подсказать пароль пользователю, входящему в систему впервые. Можно разыграть перед новичком роль компьютерного гуру - рассказать ему об основах этого дела, обойдя молчанием аспект секрет- ности, и ... Читать дальше »
|
Скрины:
Дата: 18.12.2009
Добавил: Васько
Комментарии: (0)
|
| |
|
|
|
|
|
|
|
Данный алгоритм является алгоритмом вычисления "хэш" функции (message digest). В качестве входных данных он принимает сообщение (поток данных) произвольной длины, и вычисляет 128-битный хэш. Нахождение двух различных входных строк, которые производили бы одинаковый MD5 хэш, или нахождение исходной строки по существующему хэш, представляется почти невозмжным (точнее, этим можно заняться имея огромные вычислительные ресурсы, плюс достаточный запас времени). MD5 алгоритм используется в приложениях криптографии и электронно-цифровых подписей для генерации ключа шифрования. Алгоритм разработан, что бы быть достаточно быстрым на 32-битных системах и не требовать больших объемов памяти. MD5 является чуть более медленным, чем MD4, но является более устойчивым к криптографическим атакам. Далее под "словом" будет подразумеваться количество информации в 32 бита, а под "байтом" - 8 бит. Последовательность бит интерпретируется в естественной форме - как последовательность байт, где каждая группа из 8 бит является отдельным байтом, причём старший бит байта идет первым. Аналогично представляется последовательность байт, как последовательность слов, только младший байт идет первым. Предпологается, что в качестве входного потока имеется поток данных N бит. N - неотрицательное целое (возможно 0), не обязательно кратное 8. Для вычисления MD5 хэш функции неоходимо выполнить следующие 5 шагов. Шаг 1: выравнивание потока. Входной поток выравнивается так, что бы его длина стала конгруэнтной (сравнимой) с 448 по модулю 512. Выравнивание происходит следующим образом: к потоку добавляется один бит '1', а затем биты '0' до тех пор, пока длина потока не будет сравнима с 448 по модулю 512. Выравнивание происходит всегда, даже если длина потока была уже сравнима с 448 по модулю 512. Таким образом к потоку добавляется минимум 1 бит, максимум - 512. Шаг 2: добавление длины. 64 битное представление длины входного потока (длины потока до выравниваия) добавляется к результату предидущего шага. Если длина потока превосходит 2^64, то добавляются младшие 64 бит. Эти биты добавляются как 2 32-битных слова, младшее слово добавляется первым. Таким образом на этом шаге длина потока становится кратной 512 битам или 16 32-битным словам. Далее будем рассматривать входной поток как массив M[0 ... N-1] слов длиной N. Шаг 3: инициализация MD буфера. Буфер из 4 слов {A, B, C, D} используется для вычисления хэш функции, который инициализируется в следующие значения: A = 0x67452301 B = 0xEFCDAB89 C = 0x98BADCFE D = 0x10325476 Шаг 4: обработка потока блоками по 16 слов. Определим четыре вспомогательные функции, каждая из которых принимает три параметра размеров в слово и производит результат - слово. F(x, y, z) = (x & y) | (~x & z) G(x, y, z) = (x & z) | (y & ~z) H(x, y, z) = x ^ y ^ z I(x, y, z) = y ^ (x | ~z) Напомним, что & - побитовое И, | - побитовое ИЛИ, ^ - побитовое исключающее ИЛИ, ~ - побитовое отрицание. Функция F для каждого бита дает следующий результат: если X, то Y, иначе Z. На этом шаге также используется таблица T[1..64], которая построена с помощью функции синуса: T<i> = int(4294967296 * abs(sin(i))), где int() - целая часть. Например: T[1] = int(4294967296 * abs(sin(i))) = int(3614090360,282...) = 3614090360. Также следует определить операцию x <<< y, как циклический сдвиг x влево на y бит. Теперь рассмотрим сам алгоритм вычисления MD5 хэш функции. // обработать входной поток блоками по 16 слов for i = 0 to N/16 - 1 do { // копировать блок i в X for j = 0 to 15 do X[j] = M[i * 16 + j] // Сохранить значения A, B, C, D AA = A BB = B CC = C DD = D // проход 1 // пусть [abcd k s i] обозначает операцию // a = b + ((a + F(b, c, d) + X[k] + T<i>) <<< s) // исполнить 16 следующих операций [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] // проход 2 // пусть [abcd k s i] обозначает операцию // a = b + ((a + G(b, c, d) + X[k] + T<i>) <<< s) // исполнить 16 следующих операций [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] // проход 3 // пусть [abcd k s i] обозначает операцию // a = b + ((a + H(b, c, d) + X[k] + T<i>) <<< s) // исполнить 16 следующих операций [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] // проход 4 // пусть [abcd k s i] обозначает операцию // a = b + ((a + I(b, c, d) + X[k] + T<i>) <<< s) // исполнить 16 следующих операций [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] A += AA B += BB C += CC D += DD } Шаг 5: вывод MD5. Результат вычисления (хэш) представлен четырьмя 32 битными словами - A, B, C, D (младшим записывается A, старшим - D). 128-битный MD5 хэш готов ! Примеры: "a" - cc175b9c0f1b6a831c399e269772661 "abc" - 90150983cd24fb0d6963f7d28e17f72 "abrakadabra" - bda3bfdfa868d04f403838f5776f25e "123456789012345678901234567890123456789012345678901234567890123456 78901234567890" - 57edf4a22be3c955ac49da2e217b67a Подробнее об алгоритме MD5 можно прочитать в RFC1321.
|
Скрины:
Дата: 18.12.2009
Добавил: Васько
Комментарии: (0)
|
| |
|
|
|
|
|
|
|
Алгоритм SHA-1 (Secure Hash Algorithm) используется в алгоритмах электронно-цифровых подписей (DSA - Digital Signature Algorithm). Для сообщения (потока данных) длиной меньше 2^64 бита, данный алгоритм вычисляет 160-битный хэш. Полученный хэш используется для генерации "подписи" к сообщению, а также для ее проверки. Любые изменения в исходном сообщении приведут к измению хэша с очень большой вероятностью. SHA-1 разрабатывался с целью иметь следующие свойства: не представляется возможным с использованием комьютера найти исходное сообщение, зная хэш, или найти два различных сообщения дающее одинаковый хэш. В данном алгоритме под "словом" понимается количество информации в 32 бита, "байт" - 8 бит. Целое число в промежутке от 0 до 2^32 - 1 включительно может быть представлено как слово, в котором старший байт записан первым, младший - последним. Целое z (0 <= z < 2^64) представляется в виде z = (2^32)x + y, где x и y - целые в промежутке от 0 до 2^32 - 1. Таким образом, z можно представить парой слов x и y. Блок из 512 бит может быть представлен последовательностью из 16 слов. В алгоритме используются следуюсчие опреации: x & y - побитовое "И" x | y - побитовое "ИЛИ" x ^ y - побитовое "исключающее ИЛИ" ~x - побитовое отрицание x <<< y - циклический сдвиг x влево на y бит x + y = (x + y) mod 2^32, т.е. рассматриваются младшие 32 бита результат Выравнивание сообщения. Длина сообщения принимается как количество бит во входном потоке (возможно пустое сообщение длиной 0 бит). Цель выравнивания: сделать длину сообщения кратной 512, т.к. алгоритм SHA-1 обрабатывает входной поток блоками по 512 бит. Выравнивание проиходит следующим образом: добавляется один бит '1' (a), затем следуют биты '0' (b), после чего записывается длина сообщения до выравнивания ©. В результате получаем длину потока равную n*512. Пример: допустим входной поток бит имел следующий вид: 01100001 01100010 01100011 01100100 01100101 (40 бит) после шага (a) cообщение принимает вид: 01100001 01100010 01100011 01100100 01100101 1 (41 бит) на шаге (b) добавляются 407 '0', что в шестнадцатиричном виде выглядит так: 61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 на шаге © добавляем длину до выравнивания: 40 - 00000000 00000028 (hex); и получаем выравненное сообщение: 61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 Далее будем рассматривать входной поток как массив M[0 ... N-1] слов длиной N. Логические функции. SHA-1 использует последовательность логических функций f(0), f(1), ... , f(79), каждая из которых принимает 3 32-битных слова и вычисляет результат - слово. Функция f(t; B, C, D) определена следующим видом: f(t; B, C, D) = (B & C) | (~B & D) 0 <= t <= 19 f(t; B, C, D) = B ^ C ^ D 20 <= t <= 39 f(t; B, C, D) = (B & C) | (B & D) | (C & D) 40 <= t <= 59 f(t; B, C, D) = B ^ C ^ D 60 <= t <= 79 Константы. В данном алгоритме используется последовательность константных слов K(0), K(1), ... , K(79): K(t) = 5A827999 0 <= t <= 19 K(t) = 6ED9EBA1 20 <= t <= 39 K(t) = 8F1BBCDC 40 <= t <= 59 K(t) = CA62C1D6 60 <= t <= 79 Вычисление. Для вычисления SHA-1 хэш функции используется буфер из 5 слов {H0, H1, H2, H3, H4}, который перед началом вычислений инициализируется следующими значениями: H0 = 67452301 H1 = EFCDAB89 H2 = 98BADCFE H3 = 10325476 H4 = C3D2E1F0 Для каждого блока M<i> выполняются следующие вычисления (MASK = 0x0F): a. разложить M<i> на 16 слов W[0], ... , W[15], где W[0] - крайнее слева слово в M<i> b. сохранить H0, H1, H2, H3, H4 A = H0, B = H1, C = H2, D = H3, E = H4 c. for t = 0 to 79 do { s = t & MASK; if (t >= 16) W[s] = (W[(s + 13) & MASK] ^ W[(s + 8) & MASK] ^ W[(s + 2) & MASK] ^ w[s]) <<< 1; temp = (A <<< 5) + f(t; B, C, D) + E + W[s] + K(t); E = D; D = C; C = B <<< 30; B = A; A = temp; } d. H0 += A; H1 += B; H2 += C; H3 += D; H4 += E; Вывод SHA-1. Результат вычислений записывается пятью словами в порядке H0, H1, H2, H3, H4. Вычисленный хэш имеет длину 160 бит. Примеры: "a" - 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 "abc" - a9993e36476816aba3e25717850c26c9cd0d89d "abrakadabra" - 79fb86e161e6bee2f1474099c4bee8247926999 Подробнее об алгоритме MD5 можно прочитать в FIPS180-1.
|
Скрины:
Дата: 18.12.2009
Добавил: Васько
Комментарии: (0)
|
| |
|
|
|
|
|
|
Рассылка
|