воскресенье, 25 марта 2012 г.

Управление malware через социальную сеть

r00t@xpen0xff> super_bot -cmd send_spam
Trying executed command...
The host closed connection.

r00t@xpen0xff> man "new method of executed cmd on the BotNet"

---[New method of executed cmd on the BotNet]---------------------------------------------------------------
Управление ботом, ботнетом, или каким-нибудь трояном возможно через социальную сеть.


Возникает вопрос: зачем? Возьмем такую ситуацию, у нас есть бот (машина зараженная трояном), и мы можем её управлять с помощью специальных команд. Самым простым способом получения команд будет создание бэкдора на зараженной машине, и ожидания момента, когда придет заветная команда для бота. Например: команда рассылки спама. Но команды для бота можно посылать через социальную сеть. В данном случае, получение команды будет выглядеть так: подключаемся к странице дяди Васи, и парсим его профиль. В профиле будет команда для бота, мы её считаем и благополучно выполним. Таким способом получения команд пользовался троян "Brazilian Banker", который был нацелен на банки Латинской Америки. После заражения пользователя, он лез в социальную сеть и искал профиль, начинающийся со строки "EIOWJE", далее шла команда в зашифрованном виде. Он её считывал, дешифровал, а потом принимался исполнять. (http://www.xakep.ru/post/54774/?print=true).

В прошлом году (начало 2011 года), был подготовлен доклад M-Trends от Mandiant (http://www.xakep.ru/post/54656/). В нем говорится о подъеме количества продвинутых угроз, которые используют легальные социальные сети и веб-услуги, включая Facebook, Google Chat и MSN, в качестве сетей отдачи указаний и контроля malware. Цитата из доклада:

"В каждом из случаев атакующие эффективно скрывали свой удаленный доступ под нормальным трафиком к популярным Интернет-сайтам, зашифрованным SSL. Эта методика была надежна и при проверки пакетов, и при анализе аномалий в трафике".

Я хочу предложить менее палевный способ, который использовал троян "Brazilian Banker". А именно, максимально скрыть использование аккаунта социальной сети, как плацдарм для управления ботнетом.

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


Как было сказано выше, есть аккаунт в социальной сети (неважно в какой именно), например Василия Пупкина. На его странице, есть статус, профиль и могут быть сообщения. Команды должны быть не в зашифрованном виде, а максимально приближенными к реальным сообщениям нашего виртуального дяди Васи.

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

I'm going the work.
I'm going the bedroom and I sleep.
I love my girl and I write message.

Здесь команды - это последние слова в предложении. Естественно, они могут быть любыми. Слово "work" - означает команду начать работу бота, "sleep" - сделать паузу, "message" - начать спам-рассылку. Будет не очень подозрительно, если дядя Вася так часто меняет свой статус... так делают многие реальные люди =).

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

В сообщениях, можно указывать имена ботов-машин, к которым будут адресованы команды. Например:

Lena do you now sleep?
Max help me write my boss fucking message
Lola are you now work?

Где в начале сообщения указывается имя бота, а в конце его команда. 

Комбинирование команд можно сделать так. В статусе указываем общие команды, например:

I'm going the work,

Запятая говорит о том, что есть продолжение команды в сообщение. Пример сообщения:

Lena do you now sleep?

Итак, общая команда выглядит так: все боты начинают работу, а бот с именем Лена отдыхает, то есть не работает =).

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

The Sex Pistols – Anarchy In The U.K.

Right! now ha, ha

I am an anti-Christ
I am an
anarchist,
Don't know what I want
But I know how to
get it.
I wanna destroy the passer by
'cos I wanna be
anarchy,
Ho dogs body


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

The Prodigy – No Good

You're no good for me, I don't need nobody
Don't need no one, that's no good for me

Берем первую букву нечетного слова, соединяем в едино и получаем названия команд: Ygmn, Dntgm. Что они значат, будут знать только авторы ботнета =). 

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

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

1 комментарий:

  1. Casino: 50 Free Spins | Real Money No Deposit Bonus Codes
    Play the best casino 논산 출장샵 slots without deposit and without spending 보령 출장안마 any money. We've 보령 출장마사지 got the latest no deposit bonus 사천 출장마사지 codes 경상남도 출장마사지 for US players.

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


profile for Anatoliy Nikolaev at Stack Overflow, Q&A for professional and enthusiast programmers