Print This Post Защищаем пароль в TeamViewer

Суббота, 27. Октябрь 2012
Раздел: Assembler, C/C++, Windows, автор:

TeamViewer, как и большинство программных продуктов, обладает опцией сохранения пароля от своего профиля (профиль используется для упорядоченного хранения перечня идентификаторов удаленных компьютеров с реквизитами доступа к ним). При включенной опции сохранения, пароль прозаично сохраняется в реестре по адресу HKCU\Software\TeamViewer\Version* в переменной BuddyLoginPWAES.


Как видно из названия переменной, да и непосредственно из реестра, перед сохранением пароль шифруется, однако это не является проблемой, т.к. ключи шифрования легко получить, а также никто не мешает просто скопировать содержимое переменной из реестра, перенести на другой компьютер и там успешно авторизоваться. Отсюда возникает некоторое опасение, так как всегда существует вероятность запустить очередной password stealer, который всё благополучно утащит.
Попробуем решить эту проблему костыльно-велосипедным способом. Для этого напишем небольшую библиотеку, которая будет перехватывать обращения к реестру и осуществлять дополнительное шифрование пароля, а также лаунчер для тимвьювера, который будет запускать его и заодно подгружать нашу библиотеку.
Читать дальше »

Print This Post Менеджер плагинов для клиента LastFM

Суббота, 29. Сентябрь 2012
Раздел: C/C++, Windows, автор:

В перерыве между состоянием ретроспективной рефлексии и созерцанием километровых постов dx'a немного пришел в себя и решил сделать какой-нибудь пост в блог.

В результате написал небольшую вспомогательную библиотеку, которая позволяет загружать-выгружать "плагины" в клиент LastFM. Если быть точным, то не совсем плагины, а своеобразные надстройки, которые я несколько раз описывал, например, тут и тут.
GUI минималистичен и выглядит следующим образом:

Функционал элементарен. Окно менеджера можно вызвать с помощью нажатия Alt+M. В контекст клиента LastFM библиотеку следует либо грузить инжектором, либо править импорты, либо ещё как-нибудь.

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

Исходный код и скомпилированная версия менеджера: скачать.

Print This Post Утилита для скрытия процессов под Windows

Пятница, 7. Сентябрь 2012
Раздел: Windows, Софт, автор:

Давеча наткнулся на забавный пост на форуме exelab, прочел, вдохновился и написал небольшую утилиту, которая позволяет запускать процессы в скрытом состоянии (т.е. они не видны через типовые диспетчеры задач). По сути просто реализовано взаимодействие с довольно известным драйвером Frost, который обладает данной функциональностью и действительной цифровой подписью, что позволяет использовать его без заморочек на Windows Vista+.

GUI выглядит следующим образом:


Утилита позволяет: загружать указанный драйвер (понятное дело, фрост) и далее взаимодействовать с ним, взаимодействовать с уже установленным драйвером, запускать дочерний процесс в non-elevated режиме (сама утилита требует прав администратора). Проверялось на Windows XP x86 и Windows 7 x86. Можно словить BSOD при попытке выгрузки драйвера, а так вроде работает. Под x64 процессы не скрывает, но думаю это будет доделано.

Скачать: hidden-run
Исходный код: hidden-run-src
GitHub: process-hide-tool

P.S. Фрост в архив не включен, найти его можно в вышеуказанной теме на exelab, либо поставив, например, одну из игр от 4game.

Print This Post Code review #2

Среда, 22. Август 2012
Раздел: Code Review, автор:


d_x умотал в Лас-Вегас просаживать годовой бюджет маленькой африканской страны, а значит, за неимением лучших тем (точнее они есть, но я лентяй), пришло время для очередного ревью. Кстати, товарищи, неужели никто не пишет на C/C++/Asm? В запросах сплошной Perl.
Читать дальше »

Print This Post Как на antigate уйти в минус

Среда, 15. Август 2012
Раздел: $$$, Бред, автор:

Давече нашел очередную полезную недоработку на сервисе Antigate (Антикапча). Практическая ценность заключается в том, что можно взять два аккаунта, например, на одном 20$, а на другом 0$, увести один в минус и получить 40$ на одном, -20$ на другом. Как это делается? Всё очень просто.
Нам понадобится Charles и, собственно, два аккаунта, причем один с положительным балансом.

1. Включаем Charles, убеждаемся, что он перехватывает запросы в используемом нами браузере.
2. Делаем перевод всей суммы с одного аккаунта на другой (будет запрошен код подтверждения с e-mail'a).

3. Подтверждаем перевод.
4. Смотрим запросы в Charles. Ищем подобный запрос:

5. Переводим баланс обратно на первый аккаунт.
6. Выбираем ранее найденный запрос на вкладке Structure в окне Charles, нажимаем правой клавишей мыши и выбираем пункт Repeat Advanced, ставим одинаковое значение в поля Iterations и Concurency, например, 10 (да, да, прямо как много лет тому назад во всяких счастливых фермерах).

7. Нажимаем ОК, немного ждем и наслаждаемся результатом.

Почему и отчего так происходит? Флешмен (если конечно он сам писал сервис) видимо не в курсе того, что надобно использовать транзакции или лочить таблицы... Баг, кстати говоря, далеко не первый на данном сервисе. Аналогичная ситуация наблюдалась при запросе баланса на вывод, а также была возможность уходить в минус без всяких специальных утилит благодаря кривой обработке входных данных (суммы перевода) - просто подставляешь число в виде 0xАF00 или скажем 1e10 и вуаля. Всё это было исправлено впоследствии.

Print This Post Жизненный RFID

Четверг, 26. Июль 2012
Раздел: C/C++, Windows, автор:

Последний месяц выдался не слишком продуктивным, так как приходилось много ездить по разнообразным медицинским учреждениям. На вторую неделю поездок выяснилось, что большинство учреждений используют RFID-карты для разграничения доступа во внутренних помещениях. Таким образом, под конец месяца у меня набралось великое множество таких карт, что было дико неудобно: приехал в очередное место, открыл рюкзак, достал кипу карт и ищешь где именно та, которую тебе дали на прошлой неделе местные сотрудники. Ещё одним негативным моментом этих поездок было время, которое приходилось проводить в транспорте. В итоге я решил избавиться от одного из неудобств, а именно купить программатор и написать программу-менеджер, которая избавит от необходимости таскать с собой кучу карт (все равно ношу в рюкзаке нетбук, а программатор много веса не добавит) и позволит вести базу, по которой можно будет быстро найти карту от нужного помещения для заданного учреждения, записать идентификатор на болванку и воспользоваться им по назначению. Сказано - сделано, вчера, во время очередной серии поездок, написал соответствующую программку, которую далее и рассмотрю подробнее.
Также обозначим формат карт, который, как оказалось, является доминирующим по неведомой мне причине - это EM-4100. Мимоходом, в магазине со всякой электроникой, был куплен программатор китайского производства, к которому прилагались драйвера для USB-UART моста модели CP210x производства Silicon Laboratories и стремный софт с китайским интерфейсом (имеющий в своем арсенале только функции чтения и записи идентификатора карты), который все же пригодился в дальнейшем.
Читать дальше »

Print This Post Пишем простое расширение для Mozilla Firefox

Среда, 27. Июнь 2012
Раздел: HTML/JS, автор:


Mozilla Firefox, как и прочие современные браузеры, поддерживает возможность наращивания функционала с помощью расширений. Множество полезных и не очень расширений доступно на официальном и прочих сайтах, причем многие их ставят, не задумываясь о возможных закладках в них. В качестве примера можно вспомнить не более чем годичной давности случай с расширением, которое добавляло возможность кастомизации личной странички в ВКонтакте, но при этом активно себя рекламировало, рассылая сообщения по друзьям, используя браузер установившего.

Поэтому, а заодно в связи с появившейся свободной минуткой я решил набросать пример простого расширения для Firefox, которое будет перехватывать POST-запросы и отправлять их содержимое на сторонний сайт. Основы процесса подробно описаны, например, здесь и здесь, поэтому часть кода будет приведена без комментариев.
Читать дальше »

Print This Post PHP Generic Eval Unpacker

Четверг, 26. Апрель 2012
Раздел: C/C++, PHP, Windows, автор:

В предыдущей статье dx рассказывал о ручной методике снятия типовой и довольно распространенной защиты PHP-скрипта. Если проанализировать наиболее часто встречающиеся типы защиты (например, в разделе запросов на расшифровку на Античате), то можно заметить, что в большинстве случаев защита построена на максимальном сохранении исходного кода скрипта и использовании функции eval в конечном счете. Снимать такую защиту очень просто, но слегка занудно, поэтому я решил написать примитивную программу, которая осуществляет сие действо автоматически.
Чтобы пост не был унылым, я кратенько опишу, что из себя представляет анпакер. Итак, из-за своей лени я решил использовать php-cli, расширение для php (которое перехватывает eval) и сделать к этому простой GUI. Результирующая программа выглядит следующим образом:


Читать дальше »

Print This Post Прокси-ботнет из роутеров

Пятница, 30. Март 2012
Раздел: C/C++, Linux, PHP, автор:

В 2010 году, в период тестирования SSH Bruteforce'a одним хорошим человеком, я узнал, что на Европейских диапазонах IP-адресов попадается приличное количество SSH-доступов к всевозможным роутерам. Наиболее частыми среди них оказались роутеры с MIPS-процессором и известной кастомной прошивкой DD-WRT.
Казалось бы, особой пользы с них не извлечь, но ещё тогда был предложен вариант использования их в качестве прокси. До тестирования концепции на тот момент руки не дошли, а сегодня я как раз разбирал старые архивы и решил попробовать собрать рабочий пример под подобный роутер. Благо, у меня валяется парочка таких. Стоит отметить, что поднятие прокси-серверов на роутерах также обладает всем известной спецификой, которая заключается в том, что у провайдеров часто используются динамические IP, поэтому, естественно, прокси-сервер должен сообщать свой текущий IP некой веб-админке.
Читать дальше »

Print This Post Добываем трафик c помощью Android Market

Суббота, 3. Март 2012
Раздел: $$$, автор:


Известно, что Android Market является одной из крупнейших площадок по продаже мобильных приложений. В рамках площадки доступен целый ряд полезностей для потребителей, но нас в первую очередь интересует функция отзывов, ведь большинство пользователей перед покупкой или скачиванием того или иного приложения в первую очередь опираются на отзывы и рейтинг, даже если приложение находится в топ-10-20-30...

Если зайти в маркет через обычный браузер, то можно обнаружить, что для того, чтобы оставить отзыв тому или иному приложению, необходимы 2 вещи:
1. За google-аккаунтом должно числиться хотя бы одно Android-устройство
2. Приложение должно быть предварительно куплено/скачано с маркета.
Читать дальше »