четверг, 27 августа 2015 г.

Пишем стиллер для SendSey

Меня часто мучают вопросами "как написать стиллер паролей для %имяпрограммы%" и в этой статье я решил рассказать как это сделать на примере простенькой программы. Но учтите, что написать стилер доты или танков будет на много сложнее.




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

Начнём пожалуй с инструментов, т.к. SendSey написан на Delphi, то я заюзал IDR о котором ни раз рассказывал в других статьях ранее, ну и традиционный дебагер OllyDBG.

Загружаем испытуемого в IDR и после анализа ищем место где может храниться логин и пароль, такое место находится быстро:


Ну и в реестре соответственно:


Но вот ведь не задача, пароль зашифрован! Кто то уже поднимает белый флаг т.к. ему показалось что это md5 или самопальный алгоритм криворукого автора под спайсом, но нет, всё куда проще/сложнее:


Я полагаю что ТЗ было примерно такое "Короче надо написать софтину для спама по скайпу, оплата едой, время на разработку 1 вечер и что бы ещё пароль сохраняла и шифровала труалгоритмом". Ну автор решил загуглить труалгоритм шифрования и получил:


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

Теперь настало время написания стилера, писать будем на Delphi 7 (идеально для малвари), по этому создаём новый консольный проект и приступаем к адаптации того сурса под Delphi7. Но зачем? Как известно Delphi 2009 и последующие стали юникодными, а у нас тут прошлый век. А ещё  я использую библиотеку KOL для снижения веса и адаптировать исходник буду под неё. К тому же эти знания помогут вам при написание аналогичного стилера для софта написанном на С# или другом языке.

Для начала я заменил все String на WideString, ULONG на Cardinal и DWORD на LongWord. Осталась пара функций, а именно StrToInt которую я заменил на Hex2Int и IntToStr которую я заменил на Int2Hex. А так же SizeOf(Char) на 2 (юникод же). Всё! Это заняло меньше минуты и мы добились снижения веса с 120 кило (!!!) до 20! Не плохо, правда? Хотя многим этого не понять...



Осталась работа с реестром, в KOL есть пара функций: RegKeyOpenRead и RegKeyGetStr которые вызываются в соответствующем порядке и мы получаем зашифрованный пароль, который в последующем передаём в функцию Decode.


Осталось только написать отправку расшифрованного пароля на гейт и стиллер готов! Отправку можно сделать на сокетах или синапсе, как говорится на вкус и цвет только фломастеры. А ещё можно сделать билдер и кучу других плюшек, но, это уже другая история.

Скачать софтину, стиллер и сурсы можно по ссылке: MEGA

7 комментариев:

  1. Хорошо сделал

    ОтветитьУдалить
  2. что то я не понял. А как на Delphi XE подключить расшифровку ?

    ОтветитьУдалить
    Ответы
    1. Необходимо подключить модуль KOL http://www.kolmck.net/ или переписать под XE что бы работало.

      Удалить
    2. я подключаю этот KOL , а там 100500 ошибок выдает. Я конечно с этими библиотеками не очень дружу , но вот что сделал : Crypt.pas закинул в папку с прожкой , подключил в uses , но единственное на что ругается , это в самой Crypt.pas :
      1. Crypt.pas(78): E2003 Undeclared identifier: 'Int2Hex'
      2. Crypt.pas(78): E2003 Undeclared identifier: 'Hex2int'
      Порыв crypt.pas , я что то не увидел этих двух функций

      Удалить
    3. Читайте внимательно: Осталась пара функций, а именно StrToInt которую я заменил на Hex2Int и IntToStr которую я заменил на Int2Hex.

      Удалить
    4. это я прочитал ))) Эти функции найти в гуглике и вставить ?

      Удалить
  3. Бл , похожу я что то делаю не так ... Под ноч голова не варит .
    Ванс , может замутишь прожку для декода ? Тип вставил туда этот зашифрованный пас , а он тебе дает нормальный

    ОтветитьУдалить