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

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

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), поэтому сегодня эта тема не затрагивается.

Check Also

DDoS на Bluetooth. Разбираем трюк, который поможет отключить чужую колонку

На свете существует не так много вещей, которые бесят практически всех без исключения. Это…

Оставить мнение