Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Проверка принадлежности IP-адреса заданному диапазону

19.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проверка вхождения IP в заданный диапазон может применяться во многих ситуациях. Например бан всей подсетки злоумышленника, принудительное ограничение скорости для зарубежного трафика, переадресация на различные разделы сайта в зависимости от провайдера пользователя и т.д. Я использую такие функции:
  1. // ------------------------------------------------------------
  2. // Проверка вхождения IP в заданный диапазон
  3. // На входе:
  4. // $ip - массив октетов проверяемого IP
  5. // $ip_start - массив октетов начала интервала
  6. // $ip_end - массив октетов конца интервала
  7. // В интервалах допускаются маски '*'
  8. // На выходе: TRUE или FALSE, входит IP или нет в диапазон
  9. // ------------------------------------------------------------
  10. function chk_ips($ip,$ip_start,$ip_end) {
  11.   for ($i=0$i<4$i++) {
  12.     if ($ip_start[$i]=='*') { $ip_start[$i]='0'; }
  13.     if ($ip_end[$i]=='*') { $ip_end[$i]='255'; }
  14.   }
  15.   $ip_num=ip2long(join('.',$ip));
  16.   if ($ip_num>=ip2long(join('.',$ip_start)) 
  17.       && $ip_num<=ip2long(join('.',$ip_end))) {
  18.     // IP входит в интервал
  19.     return true;
  20.   }
  21.   else {
  22.     // IP не входит в интервал
  23.     return false;
  24.   }
  25. }
Функция универсальная, позволяет обрабатывать одиночные IP-адреса, точно заданные диапазоны и диапазоны с маской "*" в любом октете. Дополнительных проверок на корректность диапазонов не производится.

Читать статью целиком »
Просмотров: 17404 | Комментариев: 1

Абсолютная защита

16.10.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Каждый день появлятся все больше вредоносных программ, нацеленных на кражу паролей и другой приватной информации. Противодействие брони и снаряда идет с переменным успехом, талантливые программисты антивирусных лабораторий создают все более мощные средства обнаружения заразы, в это же время не менее талантливые представители андеграунда придумывают новые способы их обхода. Нет никакой уверенности, что обновление антивирусной базы скачается раньше, чем в системе окажется троян. Однако можно противопоставить им практически абсолютную защиту. Принцип ее основан на том, что все вредоносные программы ищут своих жертв по заранее известным параметрам: прописанные в реестре пути установки, фиксированные имена и расширения файлов с паролями. Ни в одной вредоносной программе не будет использоваться сложный алгоритм эвристики или поиска по содержимому, так как это увеличит размер троянов на порядки и затруднит их незаметное распространение.

Рассмотрим этот метод защиты на примере некоторых популярных программ: интернет-пейджера Miranda IM, файлового менеджера Total Commander и почтового клиента The Bat!. Я пользуюсь именно этими программами, для других вам придется искать решения самостоятельно. В качестве имитации вредоносной программы будет использоваться утилита для восстановления забытых паролей Multi Password Recovery. Программа MPR выбрана не случайно, ее автор в прошлом занимался разработкой самого известного трояна Pinch и в Multi Password Recovery используются те же самые алгоритмы для получения паролей, что и в Pinch. Некоторые антивирусные программы определяют MPR как вирус, но по указанной ссылке гарантированно никакой заразы нет.
Запускаем MPR и видим как на ладони все логины и пароли от почтовых ящиков The Bat!, ваших красивых асечных номерков Miranda и FTP-серверов из Total Commander. Даже не сомневайтесь, это же самое "увидит" и троянская программа.

Читать статью целиком »
Просмотров: 10899 | Комментариев: 19

Защита PHP-скриптов от анализа и модификации

06.10.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Все программные продукты для защиты PHP-скриптов подразделяются на две категории: требующие установки на сервер дополнительных модулей и работающие с обычной конфигурацией web-серверов. Первые более надежны в плане безопасности, так как переводят PHP-скрипты из текстового вида в специальный байт-код, но требуют доступа к серверу с правами администратора. Вторые могут работать практически на всех хостингах с поддержкой PHP, в том числе и бесплатных, но не представляют большой сложности для взлома. В отдельную подгруппу можно выделить обфускаторы исходного кода, не использующие шифрование или сжатие.

Защиты на уровне сервера:

Zend Encoder / Zend SafeGuard Suite - наиболее популярная коммерческая защита, модули для поддержки Zend обычно установлены на всех платных хостингах. Zend предоставляет привязку скриптов к доменам и ip, установку времени триальной работы скриптов и мощную обфускацию. Поддерживаются все операционные системы. В публичном доступе имеется несколько вариантов утилит для снятия Zend'а, все они представляют собой модифицированный PHP 4-й и 5-й версии. Старые версии Zend'а снимаются без проблем, в последних возникают сложности из-за обфускации исходного кода.

NuSphere NuCoder. Новая, активно развивающаяся коммерческая защита. На уровне собственных API предоставляет взаимодействие с защищаемыми скриптами, поддерживаются операционные системы Windows и Linux. Вследствие малой распространенности не устанавливается на обычных виртуальных хостингах, но вполне может быть установлена пользователями на выделенных серверах. Публичных декодеров нет.

SourceGuardian for PHP. Коммерческая защита, практически не встречается, на виртуальных хостингах не устанавливается. Позволяет устанавливать триальный срок работы скриптов с проверкой даты по внешним серверам точного времени, делать привязку защищаемых скриптов к серверам, ip-адресу, MAC-адресу сетевой карты, причем эти данные используются для расшифровки. Поддерживаются все операционные системы. Публичных декодеров нет.

Читать статью целиком »
Просмотров: 41098 | Комментариев: 36

Взлом паролей учетных записей Windows

22.09.2008 | Категория: Темная сторона Силы | Автор: ManHunter
В этой статье я расскажу о программных продуктах, предназначенных для взлома паролей учетных записей операционной системы Windows. Официально этот процесс называется "восстановление забытых или утраченных паролей", но название сути не меняет. Взлом может выполняться при загрузке со специального компакт-диска или дискеты, а также путем подбора пароля на уже запущенной системе. Первый способ наиболее предпочтителен, так как самый надежный и быстрый, но для его реализации в компьютере должен быть собственно сам CD- или FDD-привод, возможность загрузки с внешних устройств раньше чем с HDD или открытый доступ в BIOS для изменения порядка загрузки. Вход в BIOS может быть закрыт паролем. На большинстве стационарных компьютеров пароли на BIOS сбрасываются отключением на несколько секунд аккумулятора CMOS или замыканием специального джампера на материнской плате. В ноутбуках настройки могут храниться на энергонезависимой Flash-памяти, в этом случае придется признать, что фокус не удался.
Второй способ требует доступа к работающей системе чтобы извлечь необходимые данные из системных файлов, а потом длительного времени для расшифровки паролей. В двух словах, наиболее удачное решение для этих целей на сегодняшний день - программа SAMInside, больше на этом способе останавливаться не будем.
Разберем подробно все существующие программы для взлома паролей учетных записей при загрузке с компакт-дисков или дискет, а также порядок работы с ними.
Сразу предупреждаю, что если использовалось шифрование файловой системы, то после сброса пароля зашифрованные файлы могут стать недоступны! Используйте указанные программы на свой риск и только в самых крайних случаях!

Читать статью целиком »
Просмотров: 146443 | Комментариев: 78

Повышение привилегий процесса

09.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Любой процесс в системе выполняется с правами какого-то пользователя или самой системы. Привилегии – это права процесса на совершение каких-либо действий по отношению ко всей системе, и при выполнении каких-либо привилегированных операций система проверяет, обладает ли пользователь соответствующей привилегией. Например, выключение и перезагрузка компьютера компьютера относятся как раз к таким операциям, и без повышения привилегий функция ExitWindowsEx завершится с ошибкой. Готовых решений на FASM найти не удалось, пришлось портировать из языков высокого уровня.
  1. ; Сегмент данных
  2. section '.data' data readable writeable
  3.  
  4. ; Определяем константы
  5. TOKEN_ADJUST_PRIVILEGES = 20h
  6. TOKEN_QUERY             = 8h
  7. SE_PRIVILEGE_ENABLED    = 2h
  8.  
  9. ; Определяем необходимые структуры, потому что в FASM'е их нет
  10. struct LUID
  11.   lowPart  dd ?
  12.   HighPart dd ?
  13. ends
  14.  
  15. struct LUID_AND_ATTRIBUTES
  16.   pLuid       LUID
  17.   Attributes  dd ?
  18. ends
  19.  
  20. struct _TOKEN_PRIVILEGES
  21.   PrivilegeCount   dd ?
  22.   Privileges       LUID_AND_ATTRIBUTES
  23. ends
  24.  
  25. TTokenHd dd ?
  26.  
  27. udtLUID  LUID
  28. ; Важно! Структура _TOKEN_PRIVILEGES должна быть выровнена на границу 4 байт!
  29. align 4
  30. tkp     _TOKEN_PRIVILEGES
  31.  
  32. SE_SHUTDOWN_NAME db 'SeShutdownPrivilege',0
  33.  
  34. ; Сегмент кода
  35. section '.code' code readable executable
  36.  
  37.     invoke    GetCurrentProcess
  38.  
  39.     ; Открыть маркер доступа (access token), ассоциирующийся с процессом
  40.     invoke    OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,TTokenHd
  41.     or        eax,eax
  42.     jz        loc_exit  ; Ошибка
  43.  
  44.     ; Получить текущее значение привилегии на выключение и
  45.     ; перезагрузку системы
  46.     invoke    LookupPrivilegeValue, NULL, SE_SHUTDOWN_NAME, udtLUID
  47.     or        eax,eax
  48.     jz        loc_exit  ; Ошибка
  49.  
  50.     ; Заполнить структуры
  51.     mov       [tkp.PrivilegeCount],1
  52.     mov       [tkp.Privileges.Attributes],SE_PRIVILEGE_ENABLED
  53.     mov       eax,[udtLUID.lowPart]
  54.     mov       [tkp.Privileges.pLuid.lowPart],eax
  55.     mov       eax,[udtLUID.HighPart]
  56.     mov       [tkp.Privileges.pLuid.HighPart],eax
  57.     invoke    AdjustTokenPrivileges,[TTokenHd],0,tkp,0,0,0
  58.  
  59.     ; Здесь будет код, требующий повышенных привилегий, 
  60.     ; например выключение компьютера
  61.     invoke    ExitWindowsEx,EWX_POWEROFF,NULL
  62.     ...
  63.  
  64.     ; Выход
  65. loc_exit:
  66.     invoke    ExitProcess,0
Выключение рассмотрено как наиболее часто встречающаяся задача, более подробное описание использованных структур и функций вы можете найти на сайте Microsoft Developer Network.

Просмотров: 8512 | Комментариев: 7

01 02 03 04 05 06 07 08 09 10 11 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 3 (0.0063 сек.) / Память: 4.5 Mb
Наверх