{ Взлом через изменение текстовых файлов }

 
   
Вступление.

Сегодня мы поупражняемся в Perl, и помимо этого реализуем один интересный тип атаки на клиентские машинки (в некоторых случаях эта атака применялась, чему я был свидетелем, и для взлома серверов).

Что же мы будем делать? Для начала - обратим внимание на некоторые интересные модули perl, которые идут в стандартном дистрибутиве от ActiveState. Эти модули интересны тем что все они относятся к Win32 платформам, и лежат в папочке site\Win32 дистрибутива. Беглый взгляд на эти сокровища заставляют меня довольно потирать ручки… Хе-хе - тут есть где развернуться для любого и благородного и злого умысла. Но так как волею судеб, я склонен считать себя более блэкхэтом, нежели уайтхэтом, то мои мысли сперва работают в направлении злого умысла…. Да простят мне читатели эти слова.

Ну да ладно - шутки в сторону. Итак что мы тут имеем:

  • Модуль: Win32::Clipboard - замечательная штука для перехвата данных из клипборда, изменения этих данных и отслеживания изменений. Причем - это относится не только к простым текстовым данным, но и к скриншотам, к скопированным в буфер изображениям, и к скопированным файлам (хотя в нашей статье он не рассматривается, я просто хотел бы обратить на него ваше внимание).
  • Модуль Win32::TieRegistry - позволяет удобно работать с реестром Windows.
  • Модуль Win32::Process::Info - не входит в стандартный дистрибутив, но чрезвычайно полезен - позволяет работать с таблицей процессов. В этой папке есть еще немало интересных модулей, но о них в другой раз.
Сразу хочу оговориться, что описанные алгоритмы будут реализованы на Perl не из-за удобства этого языка (а в данном случае из-за размера получаемых бинарников - скорее неудобства), а для технического описания алгоритмов, чтобы не казаться вам голословным. И чтобы доказать что это возможно и не очень обременительно.

"Фишка".

Вся фишка заключается в одном единственном файлике в виндах - это известный многим hosts, располагающийся по адресу: C:\WINDOWS\system32\drivers\etc. Фишка в том, что ОС определяет соответствие доменного имени и IP-адреса в первую очередь именно по этому файлу, а уже потом для нее имеет значение ответ с DNS-серверов. Страшная сила этот файлик оказывается… Какое мощное оружие можно реализовать на его основе. Не потребуется обход фаэрволов, так как они сами пропустят пакетики в нужную нам сторону, с согласия пользователя!!! Думаете - это все выдумки? Напрасно… Я знаю одну контору, которую поломали, поломали их сервер через который они ходили в Интернет, и на этом сервере прописали в этом файлике свой прокси-сервер, и весь трафик потек через их сервер… Ну надо сказать что организация конечно была абсолютно безалаберной по отношению к собственной безопасности и к профессионализму администратора, который на них когда-то работал… Но это все присказка. Мы не будем вдаваться в схему атаки на данную контору, а подумаем, как нам самим использовать данные знания на свое благо.

Тестовая среда.

Для реализации и проверки нашей схемы, которую я опишу ниже, мы будем отталкиваться от следующих исходных данных: Есть копьютер в сети, который имеет полный доступ в инернет (прямое подключение), на данном компьютере стоит фаэрволл (допустим Outpost с включенным контролем компонентов), за этим компутером сидит юзер Вася, глубоко уважающий себя и свои фотки скаченные с порносайта, с украденным платным акаунтом, а также хранящий в тайне свою переписку в девочкой Катей, живущей этажом ниже. Помимо секурного Outpost'a, мальчик Вася держит всю переписку с девочкой Катей в суперпрограмме The Bat! Но об этом мы пока незнаем…

Задача.

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

Реализация. Шаг первый.

Итак. Мы располагаем довольно расплывчатыми данными о Васе, но тем не менее знаем на что его можно заманить. Отправляем ему наш первый троянчик (он же последний, но о его функциональности я буду рассказывать постепенно), под видом картинки с интересным содержанием. Вася, не смотря на всю свою осторожность - запустил наше предложение :)… Запустил он его не опасаясь, в основном из-за настроенного OutPost'a (как уже упоминалось с включенным контролем компонентов), и из-за антивируса своего KAV'a :))… Ну а теперь перейдем к технической стороне дела.

Для реализации нашего плана нам нужно сделать всего-то несколько манипуляций в системе Васи.
Во первых, - прописать в настройки IE использование прокси-сервера, в нашем случае - evilhack.com, на порту 3128.
Во-вторых, - прописать в файл hosts IP адрес для нашего evilhack.com (при этом если такой хост и существует - то ходить он будет на наш - лжехост). Здесь стоит отметить тот факт, что таким образом можно запустить лжесайт какого-нить известного магазина, и продублировав его дизайн - дурачить незадачливого пользователя(-лей), нагло обворовывая его… Но у нас более мирные цели :).
В-третьих, - выяснить на какой хост конектится Вася для получения почты.
В-четвертых - прописать хост почтового сервиса в файл hosts, но подменив IP-адрес на наш сервер. При этом IP адрес для почтовика и для прокси-сервера может быть один и тот же - резолвится они будут оба на один и тот же IP :)

Вот в общем-то и все… пока что…
Приступим.

Почти все свои настройки IE хранит в реестре… Это не может не радовать, так как Outpost не отреагирует на эти изменения никак… Поэтому для того чтобы прописать нужные нам данные - достаточно изменить всего лишь два параметра в реестре в ветке: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
Это параметр:

ProxyEnable, который надо установить в 1 и
ProxyServer, со значением вида: "evilhack.com:3128"
Сделать это можно разными способами, и через .reg файл, и с помощью утилиты reg, но мы это реализуем через perl-скрипт, ибо нефиг :. Причем наш скрипт сразу же изменит и файл hosts, прописав все что нам нужно.

Походу дела мы также можем проверим что за программа юзается Васей для проверки почты по дефолту - это также можно прочитать из реестра - параметр HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command укажет нам на программу.
Хотя по идее нам не очень пригодится данная находка (но вам возможно пригодиться - если рассчитывать на какой-нибудь экзотический мейл-клиент). Мы же пойдем следующим путем: будем отслеживать таблицу процессов, и как только в ней появится процесс thebat, начнем мониторить сетевые соединения на порты 25 и 110. Это нам облегчит задачу в смысле того - что не придется все время наблюдать за сетевыми соединениями, но придется наблюдать за процессами. Хотя наблюдение за процессами нам позволит точнее определить хост почтового сервиса, к которому осуществляется подключение почтовой программы по умолчанию. Но вдруг хитрый Вася, использует свою почтовую программу, не делая ее умолчальной?? Полагаю, что нам не стоит сильно парится, а просто мы будем следить в списке процессов за 3-мя наиболее распространенными почтовиками, это - The Bat!, MS Outlook и Outlook Express.

Вуаля, скрипт готов. Всего 4 функции, и компьютер затроянен. Outpost не сказал ни слова… Вася коннектится к нашему серверу и оставляет там все свои данные. Мы же в свою очередь можем редиректить его на настоящий хост, и так довольно долго держать Васю в неведении :. То есть можно просматривать весь трафик юзера незаметно для последнего.
Ну а теперь вкратце о минусах этого метода:

  • Пользователь может заметить замедление доступа в Интернет (если наш сервер будет иметь слабый канал)
  • Пользователь может сам частенько использовать прокси-сервера и заметит прописанный проксик.
  • Пользователь может прописать в настройках почтовой программы не dns-имя сервера почты, а его IP-адрес (что бывает редко - но бывает).
Стоит отметить, относительно 2-го пункта, что через изменение реестра можно заблокировать пользователю возможность менять настройки прокси-сервера….
    Файлы к статье:
  • proc.pl
 
  PoizOn