1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Пишем собственную связку / Часть II

Тема в разделе "Наши статьи", создана пользователем d1dy0u, 28 авг 2016.

  1. TopicStarter Overlay
    d1dy0u

    d1dy0u

    Регистрация:
    26 июл 2016
    Сообщения:
    66
    Симпатии:
    51
    И снова здравствуй, уважаемый радиослушатель!
    Сегодня мы приблизимся ближе к сакральному миру космического пробива и собственных лоадов, запачкаем руки кодом (по локоть!) и немного поговорим о том, как оптимизировать выдачу связки и спрятать ее от злобных ручонок АВ-компаний и просто любопытных ресерчеров.

    Однако, перед тем как начать я хочу прояснить пару моментов, которые возможно будут совсем неочевидными и странными для кого-то из вас, а кому-то и вовсе помешают читать эту статью
    • Пункт первый. Я не учу вас кодингу, и не собираюсь учить. Я не собираюсь обьяснять что делает та или иная строка кода, что такое переменная или цикл. Я покажу вам техники и готовый код, только и всего. Убедительная просьба - не нужно спрашивать А ШТО ТАКОЕ VAR/DIM?
    • Пункт второй. Код намеренно выкладывается под хайдом. Зачем? Во-первых, я не хочу что бы неблагодарные свиньи воровали статьи без копирайта на свои школо-ресурсы. Во-вторых, я не хочу что бы каждый школьник-паралитик своими кривыми дрожащими лапками пытался компилить сплойтики и срал в лс каждому встречному с мольбами о помощи
    • Пункт третий. Я не обязан отвечать на ваши вопросы, писать код за вас, и т.д. Все что я делаю - я делаю по собственной воле, и только тогда, когда мне хочется. Просьбы помочь по-братски, по-понятиям и подайте убогому бога ради прочее, будут игнорироваться
    Но, хватит о наболевшем, давайте приступать к делу! Как я уже говорил, текущая статья будет посвящена плагиндетекту и ротации - столпам, на которых держится ваш пробив. Давайте-ка начнем с плагиндетекта

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

    Простой пользователь интернета, Иван Васильевич, заходит утолить плотскую страсть в поисках ответов на важные вопросы на некий сайт, i4mpwn3d.zz.qq.fr33host.cc, на который злобный хакер Егор Николаевич предварительно залил шелл и напихал фреймов ведущих на связку

    Хитрая связка не сразу выдает пользователю нужный эксплойт, а сначала смотрит - "Хмм, давай-ка поглядим, какой же браузер использует Иван Васильевич" - и тут же падает в обморок, ведь на работе у Ивана Windows XP SP2, старый как мир, и вместо браузера - всеми любимый IE6
    "Оп!" - думает связка, да это же клиент на старую добрую уязвимость MS06-014, также известную как MDAC (которая не смотря на свой почтенный возраст - целых 10 лет, все еще рвет и мечет в сегменте Win XP SP2, Win 2k и прочих мамонтов).

    И связка покорно сообщает другому скрипту - ротатору - "Выдай-ка мне дружок с MDAC'ом пирожок эксплойт для уязвимости MS06-014", и господин ротатор ее просьбу конечно же выполняет - и Иван Васильевич оказывается в цепких лапах злоумышленников.

    [​IMG]
    Пример обсфусцированого plugin detect из реальной связки

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

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

    Самыми актуальными на данный момент являются эксплойты для IE и для Adobe Flash. Именно на них мы и отработаем плагиндетект. Т.к. сейчас мы детектим браузер - начнем с детекта IE.
    Как же определить, что пользователь использует Internet Explorer? Сейчас самым умным из моих читателей сразу пришла в голову шальная мысль - по юзер-агенту, регуляркой искать там упоминания IE или Майкрософта. Но есть такая индейская изба - фигвам называется

    Код:
    Mozilla/5.0 (Windows NT 6.1; WOW64; AS; rv:11.0) like Gecko
    Mozilla/5.0 (compatible; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0
    Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))
    
    Это юзер-агенты разных версий IE, и как можете заметить они АБСОЛЮТНО разные.
    Да, можно составить целый список, и пытаться сверять (а кроме того в ИЕ есть куча нашлепок типа принудительной совместимости, offline-agent и прочей херни, которая тоже меняет юзер-агент) - но кому это нужно, если есть тру-ъ способ :

    **Скрытый текст: Для просмотра скрытого текста Вы должны авторизоваться.**

    Пожалуйста Зарегистрируйтесь или Войдите для того чтоб увидеть текст сообщения!

    Удивлены? Код, который заключен в '/* */' только в браузере Internet Explorer превратится в conditional compilation - AST-обьект, который заменит значение на true (благодаря оператору отрицания - !). В остальных браузерах это будет просто комментарий, и значение останется false.

    Если угодно, подробнее про conditional compilation можно прочесть тут - Please login or register to view links

    [​IMG]
    Интересный метод детекта IE 6-10 из одной из связок

    Теперь, нам нужно определить версию браузера для отправки на ротатор. Вот теперь, можно смело парсить User-Agent - ведь у нас уже есть проблема - как получить версию браузера. Смело добавим еще одно - используем регулярные выражения

    **Скрытый текст: Для просмотра скрытого текста Вы должны авторизоваться.**

    Пожалуйста Зарегистрируйтесь или Войдите для того чтоб увидеть текст сообщения!

    Хочется кричать МОИ ГЛАЗАА? Все правильно, регулярка сработала. Теперь, можем смело отправлять все на ротатор.
    Чтобы не палиться лишним XmlHttpRequest'ом, я предпочитаю такой метод загрузки эксплойта :

    **Скрытый текст: Для просмотра скрытого текста Вы должны авторизоваться.**

    Пожалуйста Зарегистрируйтесь или Войдите для того чтоб увидеть текст сообщения!


    Шаг второй - грамотная выдача эксплойта
    Итак, мы определили версию IE, отправили ее ротатору. А что дальше? Дальше, он должен выдавать сплойты, да и еще желательно так, что бы каждому пользователю только один раз и в соответствии с версией его браузера (в нашем случае - IE), да еще и желательно так, что бы не палиться АВ

    Для начала, можно описать примерно такой json-конфиг для сопоставления эксплойтов и версий :

    Код:
    {
       "6" : "data/ie/mdac.html",
       "10" : "data/ie/vbbof.html",
       "11" : "data/ie/coleoverwrite.html",
    }
    
    Соответственно, положим в папку файлы с эксплойтами, и приступим к выдаче. Поскольку, ротатор мы грузим через фрейм, код выдачи будет примерно такой :

    **Скрытый текст: Для просмотра скрытого текста Вы должны авторизоваться.**

    Пожалуйста Зарегистрируйтесь или Войдите для того чтоб увидеть текст сообщения!

    Но, этот способ весьма примитивен, и дает дикое палево АВ. Есть различные методы обфускации и криптования сплойтов, о которых мы сейчас говорить не будем, рассмотрим только самый базовый трюк на выдаче.
    Например, относительно свежий эксплойт Use-After-Free в MS IE имеет в чистом виде примерно 7 из 36 детектов. Его определяют KIS, ESET и Avira, а этого достаточно что бы испортить всю малину

    [​IMG]
    Детект до обфускации

    Применим к эксплойту простейшую функцию обфускации, вроде такой :

    **Скрытый текст: Для просмотра скрытого текста Вы должны авторизоваться.**

    Пожалуйста Зарегистрируйтесь или Войдите для того чтоб увидеть текст сообщения!


    И получаем уже совсем другую картину (ведь в 2016 никто не умеет анализировать JS на лету, ага) :

    [​IMG]
    Чистенький, как попка

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

    Думайте, переваривайте и ждите следующую статью!
     
    • Like Like x 5
  2. AngryBSOD

    AngryBSOD

    Регистрация:
    6 мар 2015
    Сообщения:
    165
    Симпатии:
    140
    file_get_contents("config.json")
    Думаю, что тут возникают проблемы уже на связке, либо запрещать к нему доступ (.htaccess) либо менять имя на php файл и от туда инклудить настройки
    Есть такая вещь ещё интересная, как navigator в JS
    +ом если отключены JS, можно где if ie5 прописать img которая будет задавать cookies и обрабатывать это все дело на сервере

    Насчет фрейма, можно прописать
    ticktack.style.position = "absolute";
    ticktack.style.top = "-9999px";
    ticktack.style.visibility = "hidden";
    И авы нападать не будут

    Что дополнить про user-agent`s
    Есть 3 RegEx`a, которые все активно используют
    /Trident\/\d{1,2}.\d{1,2}; rv:([0-9]*)/
    /MSIE (.*?);/
    /EDGE (.*?);/

    А вот и атрибуты
    <!--[if IE 6]>
    <![endif]-->
    <!--[if IE 7]>
    <![endif]-->
    <!--[if IE 8]>
    <![endif]-->
    <!--[if IE 9]>
    <![endif]-->
    <!--[if !IE 6]>
    <![endif]-->
    <!--[if lt IE 8]>
    <![endif]-->
     
    • Like Like x 1
  3. TopicStarter Overlay
    d1dy0u

    d1dy0u

    Регистрация:
    26 июл 2016
    Сообщения:
    66
    Симпатии:
    51
    navigator уж черезчур нестандартизирован, в IE<9 особенно

    Please login or register to view links
    Не покрывают 10-11 версию, неудобно.

    с top -9999px с большой вероятностью его вырежет блокировщик рекламы (если есть), да и KIS и ESET ругаются на HTML/Iframe.Redirect.A

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

Поделиться этой страницей

Загрузка...