• Партнер

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

    Сисадминский пранк может быть направлен в три почти противоположных по значению и последствиям стороны:

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

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

    3. Сотрудники офиса. Жертвой пранка может стать и весь офисный планктон вместе взятый. Имея полный контроль над файрволами, маршрутизаторами и прокси-серверами, ты сможешь здорово себя повеселить, однако когда дело дойдет до разбирательства, возможны и особо горькие последствия, начиная от увольнения без рекомендаций и заканчивая рукоприкладством с кровопролитием (в понедельник утром людей лучше не злить).

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

     

    Дуракам здесь не место

    Разобравшись с теорией, переходим к практике, а конкретно к первой части статьи, в которой жертвами становятся незадачливые кулхацкеры. Начнем с самого простого и распространенного трюка — подмены баннеров сетевых сервисов. В качестве защиты от атак это работает плохо, зато, если с фантазией все в порядке, можно хорошенько поиздеваться над несмышлеными «взломщиками».
    Итак, попробуем исправить приветственное сообщение, выдаваемое наиболее распространенными сервисами, а конкретно: ftpd, smtpd и httpd, dns. Конечно, далеко не все админы используют в своих системах стандартные сервисы, одни предпочитают ProFTPd, другие, например, vsftpd, поэтому мы остановимся на самых распространенных и популярных вариантах:

    • ProFTPd. Открываем конфигурационный файл /etc/proftpd.conf и присваиваем значение "Welcome to Micro-FTPd 0.23 (OS/2 3.3)" опции ServerName.
    • vsftpd. Открываем файл /etc/ vsftpd/vsftpd.conf и добавляем в него следующую строку: "ftpd_ banner=Welcome to OnixFTPD (version: 22.1, OS: 386BSD 4.3)".
    • LigHTTPd. Открываем /etc/ lighttpd.conf и изменяем значение опции server.tag на "MicrosoftIIS/3.3.3.3.3".
    • Sendmail. Открываем макрос /etc/ mail/sendmail.mc и добавляем в него следующую строку: define(`confSMTP_LOGIN_MSG’, `exchange.srv.local Microsoft MAIL Service, Version: 6.0.3790.1830 ready’)dnl

    Сохраняем и генерируем конфигурационный файл:

    # cd /etc/mail
    # m4 sendmail.mc > sendmail.cf

    * Postfix. Открываем /etc/postfix/ main.cf, ищем опцию smtpf_banner и заменяем ее значение на строку "VAX HTTPD 3.31-beta (MS-DOS 5.3, gcc 1.1)"
    * Bind. Конфиг /etc/bind/named.conf, строка:
    options {
    version "8.2.2";
    };

    Напомню: версия BIND 8.2.2 примечательна тем, что содержит серьезные уязвимости, позволяющие злоумышленнику отравить кэш DNS-сервера, провести DoS-атаку и даже получить привилегии root. Хорошая наживка для киддисов.

    Для изменения баннеров некоторых сервисов придется править исходники, например, баннер Apache исправляется с помощью редактирования заголовочного файла include/ap_release.h (строка #define AP_SERVER_BASEPRODUCT "Apache"). Хорошие результаты дает также использование различных «заглушек», которые прикидываются настоящими сервисами, на самом деле ими не являясь. Они получили широкое распространения в разного вида honeypot-системах, но могут применяться и для организации качественного пранка.

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

    $ vi fake-smtpd.pl
    #!/usr/bin/perl
    use Socket;
    $port=25;
    $hostname="host.com";
    $banner="220 host.com ESMTP Sendmail 8.6.1/8.5.0\n\r";
    $fail="500 Command unrecognized:";
    [ skipped… ]
    ($af,$port,$inetaddr)=unpack($sockaddr,$addr);
    @inetaddr=unpack('C4',$inetaddr);
    ($i1,$i2,$i3,$i4)=@inetaddr;
    $ipaddr="$i1.$i2.$i3.$i4";
    print "connected from $ipaddr\n";
    print NS $banner;
    while(<NS>) {
    if (/EHLO/i) {
    print NS "Hello $ipaddr. nice to meet you\n\r";
    } else {
    print NS "$fail $_\r";
    print "tried $_";
    }
    }
    print "$ipaddr disconnected\n";
    }

    Ты можешь сказать, что это глупая и бесполезная штука, но только представь, каких мук будет стоит взлом скрипта. Сервер не обрабатывает команд, поэтому незадачливому «хакеру» будет стоит больших усилий определить, почему это происходит. А как он будет перебирать все имеющиеся эксплойты, печально осознавая, что ни один из них не подходит… А если в код добавить возможность ответа на команды или встроить полноценный чат-бот? В общем, огромный простор для экспериментов.

    Если на машине функционирует только один сервис (например HTTPd), то можно пойти еще дальше и сделать так, чтобы инициация подключения к любому порту автоматически перенаправлялась на порт этого сервиса. Nmap и любые другие сканеры портов просто сойдут с ума: список открытых портов будет включать в себя все возможные варианты, слушающие сервисы будут вести себя совсем не так, как предполагается (TCP вместо UDP, странная строка ответа и т.д.) Естественно, незадачливого новичка такое положение дел надолго ввергнет в шок.

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

    # iptables -P INPUT DROP
    # iptables -A PREROUTING -t nat -p tcp ! --dport 80 \
    -j REDIRECT --to-port 80
    # iptables -A INPUT -p tcp --syn --dport 80 \
    -m connlimit ! --connlimit-above 10 -j ACCEPT

    Второе правило перенаправляет весь трафик к портам, отличным от 80го, на 80-ый же порт. Третье правило ограничивает количество одновременных соединений до 10. Нужно это просто для того, чтобы web-сервер не смог попасть в состояние DoS.

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

    Открываем файл .htaccess и добавляем в него следующие правила:

    RewriteEngine on
    RewriteCond %{HTTP_REFERER}
    ^http://www\.evil\.net [NC]
    RewriteRule .* http://www.google.
    com [R]

    Во второй строке происходит проверка переменной HTTP_REFERER и поиск в ней регулярного выражения, соответствующего любой странице сайта www.evil.net ([NC] — это «no case»: URL может быть написан в любом регистре символов). Если проверка дает положительный результат, все тролли уходят на страницу, адрес которой указан в третье строке (в примере это google.com, однако лучше найти более подходящую контексту страницу).

    Теперь поговорим о тех, кто любит воровать. За последнее время сети Wi-Fi получили очень широкое распространение, свободные точки доступа теперь можно найти даже в небольших городах, Wi-Fi модули устанавливаются в нетбуки и сотовые телефоны, весь мир поголовно переходит на сотовую связь четвертого поколения.

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

    Следующий прием был впервые опубликован на странице www.ex-parrot.com/pete/upside-down-ternet.html, и на русский язык его название можно перевести как «перевернутый тырнет». Суть заключается в следующем: настраиваем сервер так, чтобы «чужие» клиенты попадали в отдельную подсеть, все пакеты из которой будут перенаправлены на внутренний прокси, коверкающий их содержимое. Ниже мы рассмотрим, как такое проделать.

    Настроим DHCP-сервер, раздающий адреса клиентам беспроводной сети. Чтобы схема заработала, мы должны поместить воров в отдельную подсеть. Делается это с помощью следующего набора правил файла dhcpd.conf:

    # vi /etc/dhcpd.conf
    ### Стандартные настройки
    ddns-updates off;
    ddns-update-style interim;
    authoritative;
    shared-network local {
    ### Наша "настоящая" подсеть
    subnet *.*.*.* netmask
    255.255.255.0 {
    range *.*.*.* *.*.*.*;
    option routers *.*.*.*;
    option subnet-mask
    255.255.255.0;
    option domain-name "mydomain.ru";
    option domain-name-servers *.*.*.*;
    deny unknown-clients;
    ### Перечисляем легальных клиентов
    host client1 {
    ### MAC-адрес клиента и его
    IP-адрес
    hardware ethernet
    *:*:*:*:*:*;
    fixed-address *.*.*.*;
    }
    }
    ### Подсеть, открытая всем, пакеты,
    пришедшие из нее,
    ### будут направлены на наш проксисервер
    subnet 192.168.0.0 netmask
    255.255.255.0 {
    range 192.168.0.2
    192.168.0.10;
    option routers 192.168.0.1;
    option subnet-mask
    255.255.255.0;
    option domain-name-servers
    192.168.0.1;
    allow unknown-clients;
    }
    }

    Перезагружаем dhcpd:

    $ sudo service dhcpd restart

    Теперь настроим squid, который будет заниматься обработкой HTTP-трафика, пришедшего от нелегальных пользователей:

    $ sudo apt-get install squid

    Открываем конфигурационный файл /etc/ squid/squid.conf и делаем несколько исправлений (не удаляя содержимое):

    # vi /etc/squid/squid.conf
    ### Открываем доступ всем клиентам нашей доступной для всех подсети
    acl localnet src 192.168.0.0/24
    http_access allow localnet
    ### Делаем прокси невидимым
    http_port 3128 transparent
    ### Пропускаем трафик через скрипт
    url_rewrite_program /usr/local/bin/
    flip.pl

    Создаем скрипт flip.pl, который будет извращаться над трафиком:

    # vi /usr/local/bin/flip.pl
    #!/usr/bin/perl
    $|=1;
    $count = 0;
    $pid = $$;
    while (<>) {
    chomp $_;
    if ($_ =~ /(.*\.jpg)/i) {
    $url = $1;
    system("/usr/bin/wget", "-q", "-O","/
    var/www/images/$pid-$count.jpg", "$url");
    system("/usr/bin/mogrify", "-flip","/
    var/www/images/$pid-$count.jpg");
    print "http://127.0.0.1/images/$pid-$count.jpg\n";
    }
    elsif ($_ =~ /(.*\.gif)/i) {
    $url = $1;
    system("/usr/bin/wget", "-q", "-O","/
    var/www/images/$pid-$count.gif", "$url");
    system("/usr/bin/mogrify", "-flip","/
    var/www/images/$pid-$count.gif");
    print "http://127.0.0.1/images/$pid$count.gif\n";
    }
    else {
    print "$_\n";;
    }
    $count++;
    }

    Даем скрипту права на исполнение:

    $ sudo chmod +x /usr/local/bin/flip.pl

    Просим squid перечитать конфиг:

    $ sudo service squid reload

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

    $ sudo apt-get install apache2

    Создаем каталог для хранения изображений:

    $ sudo mkdir /var/www/images
    $ sudo chown www-data:www-data /var/www/images
    $ sudo chmod 755 /var/www/images

    Чтобы веб-сервер смог получить к ним доступ, добавляем пользователя www-data в группу proxy (изображения будут добавлены скриптом от имени этого пользователя и группы):

    $ sudo usermod -aG proxy www-data

    Перезапускаем веб-сервер:

    $ sudo service apache2 restart

    Наконец, настраиваем перенаправление трафика с помощью iptables:

    $ sudo iptables -t nat -A POSTROUTING \
    -j MASQUERADE
    $ sudo iptables -t nat -A PREROUTING -p tcp \
    --dport 80 -j REDIRECT --to-port 3128

    Это все. Теперь HTTP-трафик, пришедший от клиентов открытой подсети, будет перенаправлен в squid и обработан нашим скриптом, который делает ни что иное, как переворачивание всех изображений веб-страницы, сохранение их в локальном каталоге /var/www/images с последующей отдачей вместо оригиналов с помощью локального веб-сервера. На скриншотах отчетливо видно, как будет выглядеть веб-страница в окне браузера похитителей интернет-трафика.

     

    Веселим детишек

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

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

    $ sudo adduser filter

    Создаем каталог, где будет происходить обработка корреспонденции:

    $ sudo mkdir /var/spool/filter
    $ sudo chown filter:filter /var/spool/filter

    Настраиваем передачу почты через нашего агента. Для этого добавляем приведенную ниже строку в файл /etc/postfix/master.cf.

    filter unix - n n - 10 pipe flags=Rq user=filter argv=/usr/local/bin/mail-filter.sh

    Создаем скрипт mail-filter.sh и наполняем его содержимым:

    # vi /usr/local/bin/mail-filter.sh
    #!/bin/sh
    ### Стандартные пути
    INSPECT_DIR=/var/spool/filter
    SENDMAIL="/usr/sbin/sendmail -i"
    ### Коды возврата
    EX_TEMPFAIL=75
    EX_UNAVAILABLE=69
    ### После обработки убираем мусор
    trap "rm -f in.$$" 0 1 2 3 15
    ### Переходим в каталог фильтра
    cd $INSPECT_DIR || exit $EX_TEMPFAIL;
    ### Сохраняем сообщение в файл
    cat > in.$$ || exit $EX_TEMPFAIL;
    ### Добавляем к нему нашу подпись
    echo "---\nБольшой брат следит за тобой..." > in.$$
    ### Отдаем письмо sendmail'у
    $SENDMAIL "$@" < in.$$
    exit $?

    Даем пользователям права на исполнение скрипта:

    $ sudo chmod +x /usr/local/bin/mail-filter.sh

    Перезагружаем конфиг и наслаждаемся результатом:

    $ sudo service postfix reload

    Сервер smtpd будет принимать почту из сети и передавать ее нашему фильтру через агента доставки pipe (то есть просто передавая тело сообщения на вход). С помощью команды echo фильтр добавит в письмо наше сообщение («Большой брат следит за тобой...») и отдаст его sendmail. Таким образом получится двойная очередь (postfix - скрипт postfix).

    Можно подготовить целую серию шуток, например отдачу одного и того же IP-адреса в ответ на любые DNS-запросы, тогда набирая в адресной строке браузера про извольный адрес, юзер будет всегда попадать на какой-нибудь www.bibigon.com. Ты можешь сделать скриншот главной страницы google.com, вставить его в пустую html-страницу, повесить ее на локальном веб-сервере и сделать перенаправление всех запросов к 80-му порту на свой веб-сервер, так что пользователи будут всегда попадать на google.
    com и не смогут воспользоваться его услугами. Так же можно поизвращаться с настройкой Samba и CUPS, чтобы перед отправкой на принтер любой документ сопровождался твоей подписью и многое, многое другое.

     

    Заключение

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

     

    Info

    Способов глумления над коллегами существует уйма, начиная от подмены стандартного приглашения bash и заканчивая забиванием логов различным мусором. Большинство этих приемов уже были описаны в статье «Пощады не будет!» (][_11_2009), поэтому сегодня эта тема не затрагивается.

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии