Как защитить свой ботнет

GreenLine

Professional
Messages
170
Reputation
18
Reaction score
28
Points
28
Статья: Как защитить свой ботнет
Материал рассчитан на новичков.

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

1) Взломщики ботнетов

Не секрет, что большинство продуктов на рынке spyware, содержат различные уязвимости как в гейтах, так и в админках. Поэтому лакомый кусочек для хакера, является оставленные дефлотовые настройки (стандартные пароли, названия скриптов).
Особенно, если вы пользуетесь нелицензионным spyware и скачали его с паблик форума(скорее всего, в нем будут бекдоры), либо купили продукт у третьих лиц.
Избегайте стандартных названий папок и скриптов, таких как config.php, admin.php, gate.php, /cp/, /citadel/ и т.п
Обычно ваш хост подвергается поиску сканером директорий, а в него как раз загружены такие стандартные названия. Не забывайте удалять файлы типа test.php, info.php с phpinfo() информацией, а также скрипты установок в директориях /install/, install.php
Рекомендация №1: Всегда ставьте на важные скрипты (админка, гейт, директория с троем) нестандартные имена типа /j25zdAF/ и j2nwdgasFSf.php
Второй момент, недавно был произведена идентификация владельцов ботнета Koobface, а все благодаря глупому человеческому фактору, ребята просто забыли удалить публичную статистику посещений Webalizer с веб-сервера, а ведь на этом погорело не один десяток хостов.
Потому что если сервер настраивали на скорую руку, ставили туда стандартную панель управления типа cPanel, с большой вероятностью к каждому новому добавленому домену через панель, имеется открытая статистика логов, доступная с веюа. В ней видно все: пути обращения, IP-адреса, время, геолокация и т.п
Рекомендация 2: Убедитесь что на вашем сервере отсутствует статистика посещений Webalizer, а также логи доступа Apache: error_log & access_log в веб-директории (а лучше убирать их полностью).

Если вы следовали данным рекомендациям, это еще не значит что вы защищены от взлома, поскольку ваш ехе-файл, скорее всего содержит необходимые пути до гейта и конфигов, значит их можно вытащить любим сниффером трафика, например Proxifier или HTTP Debugger Pro.
Предположим, что какой-нибудь блоггер опубликует ваши пути до веб-файлов, это представляет из себя особую опасность, поскольку существуют целые группы умельцев, которые следят за свежими блог-постами, в надежде сорвать куш и захватить ваших ботов горячими.
Здесь играет на руку такой фактор, как наличие уязвимостей в гейтах, очень часто бывало так, что атакующий инфицирует себя ехе-файлом, прикидывается ботом и дешифровывая конфиг, понимая что и куда идет: он может запросто залить php-шелл через upload отчетов (сертификаты, видео, рез-тат граббинга) в директорию, если здесь есть баг или выставлены неправильно права. Даже если у вас стоит фильтрация на расширение загружаемых файлов, он может закачать к примеру cert.crt с кодом php-шелла и через уязвимость класса local include php и перехватить доступ на ваш сервер.
Рекомендация 3: Не ставьте chmod 777,666 и другие виды "доступных" прав просто так направо и налево, если вам нужно установить админку, поставили - установили - вернули права. Всегда возвращайте права у файлов назад на 644, у директорий на 755.
Любые доступные права, позволяют атакующему в случае проникновения, записать бекдоры в такие файлы и папки
Следущий очень важный момент: в любом качественном продукте, содержится возможность указания резервных доменов, на случай недоступности основного. Если ваш софт не обладает достаточным шифрованием конфига, его можно расшифровать любыми средствами, например ZeusDecrypter'ом для Zeus.
Там будет весь список этих доменов, многие наши коллеги, указывают в качестве резервных хостов незарегистрированные доменные имена. Атакующий быстренько DDoS'ит ваш основной хост и регистрирует резервный домен, переманивая всех ваших ботов на свой хост.
Рекомендация 4: Всегда выставляйте пишующие права доступа только на нужные файлы, после установки скриптов возвращайте их назад. Никогда не указывайте в качестве резервных зон незарегистрированные доменные имена.
Еще большую опасность представляют сторонние скрипты и админки инжектов, устанавливаемые на этот хост. Админку продукта тщательно проверяют разработчики, а вот с инжектами все обстоит иначе, кодеры обычно заинтересованы больше в работоспособности инжекта, и поэтому вопросы безопасности отправляются на второй план. Например, часто инжекты содержат возможность заливки сертификата холдера на ваш хост, убедитесь что скрипт достаточно защищен от закачивания посторонних файлов. Или же, один раз, я был свидетелем как бекдор содержался в безобидном скрипте отправки данных на Jabber (Библиотека XMPP PHP), потому что скачивался он с какого-то хак форума.
Рекомендация 5: Не ставьте скрипты инжектов/лоадера/эксплойтов на тот же хост и аккаунт в системе, что и ваш ботнет, разграничвайте права доступа. Скачивайте библиотеки с официальных сайтов разработчиков. Создавайте много аккаунтов на сервере, для каждого определяйте свои задачи.
На очереди остаются скачиваемые крякнутые версии троев и модифицированых админок с паблик форумов, бывает так, что авторами публикаций движет не желание поделиться чем-то с народом, а жажда наживы, при этом игра идет на халяве как обычно. Скорее всего, такие скрипты содержат скрытые бекдоры, которые отсылают авторам данные вашей админки и предоставляют открытый доступ туда через скрытые функции. Такие бекдоры обычно прячут в функции base64_encode() и eval(), но все варианты не предусмотришь, поэтому без знаний в области программирования, вряд ли вы сможете найти такое место.
Рекомендация 6: Покупайте только лицензионные продукты у авторов, не ведитесь на халяву и низкую цену у третьих лиц. От этого проиграете только вы сами, единственное для чего может потребоваться использование таких версий - это для личного ознакомления, но никак не для использования с целью получения профита.
Встречались и такие случаи, когда человек обращается к какой-нибудь малоизвестной личности за услугами криптовки ехе-файлов, и в результате получает свой файл, но с сюрпризом: к основному файлу был приджойнен дополнительный ехе-файл, который грузил дополнительно подмену выдачи криптера.
Рекомендация 7: Пользуйтесь услугами зарекомендовавших себя людей в сфере криптовки файлов.

2) Вирусные аналитики и реверсеры

Как нам известно, любые антивирусные конторы зарабатывают благодаря нам, поэтому наши пути обречены на вечную инь-янь
Это может быть сделано как автоматическим путем (пример таких коллекторов: threatexpert.com), так и вручную (например, блог xylibox.blogspot.com)
Любая компания имеет Malware Research отдел, которая анализирует интересные зверьки и вытаскивает из них как можно больше информации.
Получают образцы они различными путями, их очень много, поэтому стоит заострить внимание лишь на основных.
Когда вы устанавливаете антивирус или фаерволл, при установке запрашивается "Принять частие в ESET Community" (например).
Это и есть коллекторы антивирусных компаний, куда поступают все образцы подозрительных файлов. Это может быть как осознанно, когда пользователь самостоятельно отправляет подозрительных ехе-файл, либо сам антивирус выявляет подозрительные файлы и отправляет их автоматически.
Также, по сети часто блуждают honeypot'ы (Задача Honeypot — подвергнуться атаке или несанкционированному исследованию, что впоследствии позволит изучить стратегию злоумышленника и определить перечень средств, с помощью которых могут быть нанесены удары по реально существующим объектам безопасности. Реализация Honeypot может представлять собой как специальный выделенный сервер, так и один сетевой сервис, задача которого — привлечь внимание взломщиков.)
Чаще всего, honeypot маскируется под уязвимого пользователя и блуждает в поисках ифреймов на сайтах, чтобы найти эксплойт и произвести детальный анализ что он грузит и какие эксплойты в нем содержатся.
Важно заблокировать список различных аналитических контор, а также коллекторов honeypot, которые угрожают попаданию вашего ехе-файла в различные трекеры с подробной информацией.
Причем, если делать это через стандартную блокировку hosts, вы только спалите ваш билд проактивной защитой антивируса. Проверьте, есть ли продвинутые DNS-перехваты в вашем трое. Подготовьте большой список подобных контор для блокировки.
Рекомендация 8: Не распространяйте по e-mail рассылкам напрямую ваш ехе-файл, используйте лоадеры с большими таймаутами (от 1 часа до 2 дней) до скачивания основного файла и промежуточные хосты между вашим ботнетом и ехе-файлом. Иначе риск попадания в коллекторы очень велик, TOP3 канала размножения по палевности: 1. e-mail рассылки; 2. torrents. 3. саморазмножение(флешки, дозапись секций в ехе-файлы). Старайтесь прибегать к этим способам распространения, если вы уверены в продуманности схематичности вашей инфраструктуры. Не вешайте на 1 IP-адрес много доменов(например домен с лоадером и троем).
Рекомендация 9: Чем чаще вы криптуете файл, тем больше вы чувствуете себя рыбой в воде. Не экономьте на крипте. Автоматизируйте рутиную работу автоматическими скриптами криптовки, интегрироваными с API различных сервисов.

3) Трекеры

С появлением таких ресурсов как abuse.ch, каждый день может стать последним в жизни вашего ботнета и какого-то количества ваших нервов.
Вопрос волнующий всех: что делать? как спрятать свой трой от трекера?
Давайте для начала определимся, чем мешают нам эти трекеры. Если вы попали в трекер, то жить вашему ботнету осталось немного, потому что количество и качество абуз поступающих от различных компаний, таких как SpamHaus, RSA.. превышает все полномочия абузоустойчивых хостингов. Придется менять домен или IP-адрес, или перехитрить всю систему....
Если мы внимательно посмотрим, что же включают в себя отчеты в трекеры, то увидим что обычно там пишут пути до:
a) ехе файл билда
б) конфиг-файл
в) урл-гейт
г) возможно админка

Информация, скорее всего, выдирается автоматическим путем из подопытного образца.
Самый простой, но в тоже время эффективный способ избежать попадания, это использовать дополнительную защиту, которая будет избегать прямых ссылок до файлов. Основывать структуру нужно на нескольких ступенях:
1) Промежуточный скрипт-авторизации, который отличает настоящих ботов от прямых заходов (проверка HTTP_REFERER, BOT_ID, авторизационных ключей, вшитых в билдер) и решает отдавать файлы или нет.
2) Поскольку у нас идет прямое взаимодействие с гейтом, неплохо бы сделать промежуточный скрипт, который можно вшить в билд вместо гейта и использовать как звено между реальным гейтом и промежуткочным хостом. Иначе говоря, это будет скрипт проброса данных на реальный гейт.
3) Использовать нестандартное шифрование клиент-сервер.
Таким образом, если мы даже попадаем в трекер, наш реальный хост остается в недосягаемости, поскольку будет палиться промежуточный узел, которым может выступать любой ftp-аккаунт.
В идеале, чтобы запутать трекер, можно выдавать совершенно посторонний конфиг + ехе файл, который уведет следы совершенно на другой сервер.
Рекомендация 10: Всегда делайте несколько билдов, на разные промежуточные хосты. Если упадет 1 - будут жить все остальные. Распределяйте риски правильно. Убедитесь, что ваш софт способен правильно реагировать на трекеры.

4) Блогеры

Подобных персон интересуют внутренности вашего ботнета: что вы грузите, как вы грузите и для чего все это. Обычно, они публикуют исследования по внутренностям, но их интерес непосредственно в статистике, а значит они хотят пробраться в админку любой ценой. Как защитить вашу админку за 5 минут и пойдет дальше речь.
Благодаря тому, что ваш веб-сервер поддерживает файлы .htaccess(файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д.), вы без труда сможете гибко защитить вашу админку от взломщиков, поставив дополнительную авторизацию на вход, либо ограничив доступ по IP-адресу.
Начнем с простого, поставим дополнительную авторизацию на скрипт веб-админки вашего троя. Для этого зайдем в папку с веб-админкой и создадим там файл с именем ".htaccess" и впишем туда следущее:

Code:
<Files adminka.php>
AuthName "Login Zone"
AuthType Basic
AuthUserFile /unix/put/do/saita/.htpasswd
require valid-user
</Files>

adminka.php - название скрипта вашей админки.
AuthUserFile /unix/put/do/saita/.htpasswd - здесь вписываем путь до будущего файла, НЕ КЛАДИТЕ ЕГО в папку public_html, пусть он лежит чуть выше этой папки.
Путь до сайта можно узнать, создав файл infogetphp.php с содержимым: <? phpinfo(); ?>
Теперь создадим файл .htpasswd в директории, которую мы указали выше в AuthUserFile, для этого зайдем по адресу http://www.htaccesstools.com/htpasswd-generator/
и впишем там желаемые логин-пароль. Получим что-то вроде "aa:$apr1$KGVmuy2N$z.bjadhDH7Nz7eZGuL5CD/" эту строчку мы и сохраняем в файле .htpasswd (без кавычек).
Все, авторизация поставлена. Теперь у нас 2 пароля, чтобы зайти в админку: если даже атакующий, благодаря SQL-инъекции,получил пароль из админки, то вторая авторизация будет для него большой преградой.

Если ты хочешь, чтобы веб-админка открывалась только с 1 IP-адреса (разумеется, это должен быть IP VPN'A или Socks'a), то вписываем такое содержание файла .htaccess:

Code:
Order Deny,Allow
Deny from all
Allow from 111.111.111.111

111.111.111.111 - твой IP-aдрес.

0ef7d2927ca9.png

Рис 1. Дополнительная авторизация при входе в админку.

Также, если у вас имеются директории, куда идет загружаемый контент с ботов (результаты видеограббинга, сертификатов и т.п) зайдем в эту директорию и создадим там файл .htaccess
К примеру, в зевсе, это папка _reports (необходимо также ее обязательно переименовать при установке!))
Впишем туда следущее:

Code:
php_flag engine 0

Эта директива в файле отключает выполнение любых php скриптов в директории, поэтому если вам уже закачали какой-то шелл, это будет уже не так страшно.

Если вы хотите запретить прямой доступ из веба к какой-нибудь папке, создайте .htaccess в нужной директории с таким содержанием:

Code:
Order Deny, Allow
Deny from All

5) Волшебная таблетка

За всю практику работы с троями и абузами, нами был найден один самый эффективный и малозатратный способ, который позволяет избежать попадания в трекеры, минимизировать абузы до круглой цифры 0 и в целом спать спокойно. Этот способ называется GeoIP-фильтеринг.
Что он из себя представляет? Тут как обычно все самое гениальное - просто! Предположим что вы работаете по великой стране Зимбабве и вам интересны только боты с этого уголка нашей планеты, такие мусорные страны как Китай, Уругвай и прочие страны Африки нам не нужны и являются пустым балластом. Теперь, задумайтесь... Если включить какой-то механизм на сервере, который бы пускал только IP-диапазон адресов только с Зимбабве, а остальным странам выдавал ошибку 404/левые конфиги или же редиректил на другие хосты, выиграли бы вы в этой позиции? Еще как! Чем меньше страна, по которой вы работаете - тем меньше абуз будет, если вообще будут таковые. Если же вы работаете в недрах сердца капитализма, то имеет смысл допускать только определенные штаты.
Мой небольшой совет: нагуглите адреса офисов многих AV-контор и смело блокируйте эти города
Теперь по поводу технической реализации, здесь можно внедрять механизм на нескольких уровнях по выбору.
1) Уровень скриптов: делаем проверку по GeoIP модулю (от MaxMind например) и решаем выдавать что-то от сервера или нет.
2) Уровень DNS: самый мощный фактор, здесь нужна тонкая настройка BIND-демона на сервере.
3) Уровень веб-сервера: Идеальная связка мне попадалась на глаза это apache + nginx (с GeoIP модулем). Все настройки идут в nginx.conf, где вы указываете нужные страны, которые допускать, а которым выдавать ошибку 404.
Для установки нам потребуется Nginx (на примере CentOS 5.7), GeoIP и репозиторий, из которого мы все это будем ставить. Я использовал epel. Добавляем репозиторий:

Цитата
Code:
1# wget [url]http://download.fedora.redhat.com/pub/epel...-5-4.noarch.rpm[/url]
2# rpm -ihv epel-release-5-4.noarch.rpm

Устанавливаем Nginx и GeoIP:

Code:
3# yum install nginx GeoIP

На всякий случай, обновим базы данных GeoIP:

Code:
4# cd /usr/share/GeoIP
5# wget [url]http://geolite.maxmind.com/download/geoip/...ry/GeoIP.dat.gz[/url]
6# gunzip GeoIP.dat.gz
7# wget [url]http://geolite.maxmind.com/download/geoip/...LiteCity.dat.gz[/url]
8# gunzip GeoLiteCity.dat.gz

В конфигурационном файле Nginx, /etc/nginx/nginx.conf в секцию http добавим код:


Code:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $bad_country {
    default 1;
    include geo/good_countries;
}

Мы подключили файл GeoIP.dat и определили переменную $bad_country, указав так же файл, good_countries в котором будем указывать страны, доступ из которых разрешен. Далее, в интересующий нас location, например / добавим условие блокировки пользователя:

Code:
location / {
      proxy_pass [url]http://192.168.1.1:8080;[/url]
      proxy_redirect [url]http://website.com:8080/[/url] /;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      if ($bad_country){
              return 404;
      }
}
Где 192.168.1.1 - это IP Вашего сайта. Наполняем файл geo/good_countries. Поскольку мы используем переменную $geoip_country_code, то коды стран должны быть представлены в виде двухбуквенных аббревиатур. Например, для Великобритании код будет UK. В файле good_countries список стран должен быть соответствующим образом оформлен:
RU 0;
UA 0;
US 0;

d60a5ee76e97.png

Рис2. Пример nginx.conf с модулем GeoIP.

Ноль и точка с запятой обязательны. Готовый файл good_countries Вы можете скачать здесь# sendspace.com/file/zomj2f.
Полный список кодов стран доступен на сайте разработчиков GeoIP MaxMind.

После изменения настроек nginx, не забываем перезагружать nginx:
# /etc/init.d/nginx reload

Вот и все. Просто удалите неугодную страну из файла good_countries или добавьте в него нужную страну, чтобы разрешить доступ.


Если вы не понимаете как это проделать на вашем сервере, или же сомневаетесь что справитесь, то не экономьте на администратировании вашего сервера! Наймите грамотного специалиста сис.админа, желательно в специализацию которого входит отказоустойчивость и высоконагружаемые проекты. Стоимость таких месячных услуг по администратированию в среднем составляет $100-$300, привлекайте грамотных специалистов в ваши проекты, они могут быть полезны в любую минуту.


И еще несколько советов на последок:
1) Не указвайте одни и те же e-mail адреса и персональную информацию при регистрации доменов. Будет легко нагуглить все ваши домены по 1 емейлу или адресу. Используйте сервисы типа www.fakenamegenerator.com
2) Не пользуйтесь паблик-сервисами проверки файлов на антивирусы, например virustotal.com. Все образцы отправляются сразу же в AV-конторы.
3) Никогда ничего не создавайте с root-привелегий, пользуйтесь выделеными лимитироваными аккаунтами в системе на сервере. Используйте ftp, вместо ssh.
4) Если вас все же взломали, полностью удаляйте аккаунт в системе и заново создавайте с чистого листа. Если есть подозрения на взлом целого сервера - форматируйте ОС и заново ставьте, rootkit-hunter'ы вряд ли вам помогут. Также, ищите посторонние скрипты и файлы в местах, где имеются "доступные" права (chmod 777, 666) и удаляйте их, после чего закрывайте права на запись и анализируйте access_log веб-сервера.

Желаем всем продуктивной и безопасной работы!
В следущих выпусках статей, мы рассмотрим оптимизацию и быстродействие ботнета, а также основы автоматизации ряда рутиных процессов.


Автор: AquaBox © 2012 Citadel Software
Источник: http://exploit.in/forum/index.php?showtopic=56066
 
Last edited:

winner13

RIPPER
Messages
136
Reputation
35
Reaction score
87
Points
28
Поделюсь секретом.

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

Без зазоров совести гуляем по парникам, масс ресурсам в надежде подхватить что нить. Елси долго мучатся что нибудь получится. Обновляем антивирус и лезем в карантин или проверяем авторан, всегда найдется другая малварина. Криптоанализ(ну это кому данно, а кому и нет) или просто по хттппанализер, смотрим расположение админки, дальше всё по накатанному пути. Чекаем на паблиг бэки, если нету, сомотрим ВДС или хостинг, если хостинг(многие кстати экономят реально на ВДС по своему опыту знаю),то реверс ДНС и лезем через соседние ресурсы, или же чекаем на баги самого ресурса расположения админки. Если ВДС, тут мороки больше но в целом версия ВДС, смотрим что есть и опять по накатанному пути.

Вывод. Похер под каким линком лежит админка главное чтобы на безбажном ВДС, с безбажными скриптами.
 

    vovan0986

    Points: 0
    He's cool man! Очень помог мне разобраться с ботами.

Raccoon

BANNED
Messages
4
Reputation
0
Reaction score
0
Points
1
Please note, if you want to make a deal with this user, that it is blocked.
Офигенная статья много что намотал на ус. Спасибо.
 
Top