Установка ловушек в Windows
Сегодня мы поговорим об установке hook’ов (ловушек) в Windows. Hook – это механизм перехвата сообщений, путем установки специальной функции на верх стека hook-функций системы. Без установки таких ловушек практически невозможно обойтись при написании различных средств удаленного администрирования, шпионов и других программ в той или иной степени осуществляющих контроль за пользователем, использующем ОС Windows. Hook’и бывают глобальные (на всю систему) и локальные (на какой-либо поток).
Установить в систему hook можно при помощи функции SetWindowsHookEx(), со следующим заголовком:
HHOOK SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD
dwThreadId);
Если ты плохо воспринимаешь Си-шный код, на Delphi заголовок выглядит так:
SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId:
DWORD): HHOOK;
Функция SetWindowsHookEx() в случае установки hook’a возвращает его дескриптор, в случае ошибки возвращает 0.
Разберем подробней все входящие параметры этой функции:
1. idHook – константа, определяет типа устанавливаемого hook’а. Может принимать одно из ниже перечисленных значений:
WH_CALLWNDPROC – Следит за сообщениями до отправки в оконную функцию и вызывается, когда процедуре окна посылается сообщение. Ловушка срабатывает при каждом вызове функции SendMessage.
WH_CALLWNDPROCRET – Контролирует сообщения после их отправки в оконную функцию.
WH_CBT – Вызывается перед обработкой большинства сообщений окон, мыши и клавиатуры (созданием окон, активация окон, уничтожением окон, сменой размера окон, перед установкой фокуса и.т.п.)
WH_DEBUG – Вызывается перед любой другой ловушкой. Полезно для отладки hook’ов.
WH_GETMESSAGE – Вызывается, когда из очереди приложения считывается сообщение.
WH_HARDWARE – Вызывается, когда из очереди приложения считывается сообщение установленного на компьютере оборудования.
WH_JOURNALPLAYBACK – Вызывается, когда из очереди системы считывается сообщение. Применяется для добавления в очередь системных событий.
WH_JOURNALRECORD – Вызывается, когда из очереди системы запрашивается какое-нибудь событие. Применяется для регистрации системных событий.
WH_KEYBOARD – Вызывается, когда из очереди приложения считывается сообщения WM_Keydown или WM_Keyup. Одна из самых распространенных ловушек -).
WH_MOUSE – Вызывается, когда из очереди приложения считывается сообщение мыши.
WH_MSGFILTER – Вызывается, когда сообщение должно быть обработано диалоговым окном приложения, меню или окном приложения.
WH_SHELL – Вызывается, когда создаются и разрушаются окна верхнего уровня или когда приложению-оболочке требуется стать активным.
2. lpfn – указатель на саму hook функцию. Ее заголовок:
function HOOKFUNCTION(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT
stdcall;
Значения входящих параметров зависят от типа hook’a. Если ставится глобальный hook, эта функция должна обязательно находиться в dll.
3. hmod – принимает значение hInstance или дескриптор DLL (в глобальных ловушках).
4. dwThreadId – идентифицирует поток, в который вставляется ловушка. В глобальных hook’ах этот параметр должен быть равен 0.
Для удаления установленной ловушки существует функция UnhookWindowsHookEx(). В качестве параметра нужно использовать указатель (дескриптор) на hook функцию (значение, которое возвращает функция SetWindowsHookEx()).
Ну вот и все, с основами ты ознакомлен. Теперь напишем маленькую шуточную программу, ставящую hook на считывания сообщений мыши (WH_MOUSE). Сделаем так, чтобы при нажатии на правую кнопку мыши скрывалась кнопка “Пуск”, при нажатии на левую – появлялась, среднею – изменялся заголовок активного окна. Сама hook функция будет находиться в dll. Кроме того, в dll будут находиться две процедуры – sethook() и removehook(), соответственно устанавливающие и удаляющие ловушку.
Привожу код dll библиотеки:
uses
windows,messages;
var
H : THandle;
< Экспорт процедур установки и удаления hook'a >
exports
sethook index 1 name ‘sethook’,
removehook index 2 name ‘removehook’;
end.
В самой программе ловушка будет устанавливаться вызовом из dll процедуры sethook, удаляться – вызовом процедуры removehook. Пример установки и удаления hook’а, а также исходник dll библиотеки есть в прилагающемся архиве.
Это ловушка! Как мы расставляли ханипоты и кто в них попался
Если ты хоть раз админил сервер, то точно знаешь: авторизацию по паролю нужно отключить или серьезно ограничить — белым списком, VPN-шлюзом или еще как‑то. Мы решили проверить, что будет, если этого не сделать, и сейчас покажем, что получится.
warning
Вся информация предоставлена исключительно в ознакомительных целях. Автор и редакция не несут ответственности за любой возможный вред, причиненный с использованием сведений из этой статьи.
Встать под атаку и посмотреть, что будет, — это лучший способ изучить, как работают хакеры. Это мы и сделали — купили несколько серверов в разных подсетях и засели в засаде. Первый же неосторожный бот попался всего через семь секунд, а меньше чем через сутки мы засекли больше 12 тысяч гостей на одном только SSH. Немудрено, что рано или поздно учетные данные ко многим серверам подбираются, сами серверы продолжают черное дело своих создателей, а в свободное время частенько копают биткойны.
Мы рассмотрим атаки по нескольким протоколам: SSH — как наиболее популярный, Telnet, распространенный в мире IoT, и FTP, куда ломятся, чтобы залить шелл для дальнейшей атаки или заразить исполняемые файлы. На один только SSH за время теста к нам постучались 986 437 раз.
Для чего используют чужие машины
Со взломанного «умного» устройства можно атаковать остальную сеть, проводить DDoS, майнить криптовалюты, слать спам и заниматься более изощренными вещами вроде DNS poisoning или перехвата трафика.
Часто злоумышленники поднимают на захваченных машинах прокси‑серверы. Это ходовой в теневой части интернета товар, даже при беглом поиске мы нашли несколько десятков предложений. При этом обычно прокси продаются по подписке, а не разово.
Средний ценник за 100 штук — порядка 25 долларов, но российские прокси ценятся куда дешевле — около 12 долларов. За элитные прокси в одни руки хотят по 3-4 доллара за IP, при этом расходятся они все равно как горячие пирожки. Видимо, для постоянных клиентов предусмотрены скидки, не заявленные публично.
Подготовка
Мы установили ханипоты на два сервера. Первый изначально для этого исследования не предназначался, так что часть статистики с него не включает пароли. На втором сервере сразу были ханипоты.
В какой‑то момент стандартный SSH мы перенесли на порт 404 («404 SSH Service Not Found», ага) на обоих серверах, а штатный 22-й порт занял ханипот. Но ни один бот его после этого не нашел. Как видишь, заезженная рекомендация переносить SSH на неожиданные порты имеет смысл, особенно когда 22-й порт открыт, но не подает виду, что нужный сервис есть где‑то еще.
Выборка в итоге получилась небольшая, поэтому мы расширили статистику, проанализировав логи со взломанных ботов.
Где брать ханипоты
Вот сами ханипоты, которые мы использовали для разных протоколов. Естественно, существует множество других решений, в том числе коммерческих, но их перечисление и сравнение — тема для отдельной статьи.
telnetlogger
Простой Telnet-логгер, в лог пишет просто пары логин‑пароль. IP-адреса тоже записываются, но в соседний файл и без связи с конкретной парой логин‑пароль, что неудобно. Завелся сразу и лишних настроек не требует.
SSH Honeypot
Записывает в лог IP, логин и пароль. Каждая запись помечается временной меткой, чего в Telnet-логгере нет. Информацию о времени можно использовать, чтобы строить продвинутые графики, вроде зависимости интенсивности атак от времени суток или дня недели, но делать это мы не будем — нас в данном случае интересует сам факт атаки и используемые техники.
Первые попытки перебора появились уже через семь секунд после активации ханипота.
[ Sun Jan 10 22: 40: 41 2021] ssh-honeypot 0. 1. 0 by Daniel Roberson started on port 22. PID 4010913
[ Sun Jan 10 22: 40: 49 2021] 196. *. *. 166 supervisor qwer1234
[ Sun Jan 10 22: 41: 16 2021] 59. *. *. 186 vyatta 123
[ Sun Jan 10 22: 41: 38 2021] 207. *. *. 45 root muiemulta
honeypot-ftp
Этим протоколом интересовались меньше всего. Возможно, это связано с тем, что ханипот для FTP на популярных языках нам найти не удалось, так что использовали что нашли. Этот ханипот даже при не очень детальном рассмотрении «светит» тем, что написан на Twisted и тем самым отпугивает некоторые ботнеты и не самых тупых атакующих.
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Михаил Артюхин
Этому городу нужен новый герой, прошлого арестовали 😉
Honeypot: ловушка для хакера №1
Honeypot – этот казалось бы детский термин
(горшочек с медом) уже давно широко
используется
в мире компьютерной безопасности. Что же
это за система, которую используют
админы для ловли хакеров? Сейчас я
постараюсь разложить все по полочкам и
рассказать тебе о меде, горшках и чуть-чуть
о хакерах.
Что такое honeypot?
Идея скрытых ловушек или сладкого для
хакер места на самом деле не нова. Идея
зародилась, если я не ошибаюсь, еще 1990 году.
Общее и устоявшееся определение honeypot – “это
ресурс, задача которого отдаться хакеру,
цель которого принять тест, атаку и быть
взломанным”. Это означает, что создавая
honeypot мы ожидаем от него регистрации начала атаки и
взлома . В глобальном смысле это инструмент,
который каждый волен применять по своему.
Это может быть эмулятор другой системы или
приложения, некая “темница с засадой”, или просто
стандартная система. Как бы вы не построили
свой горшочек, главная его задача –
подвергнутся нападению и рассказать вам в
подробностях об этом. Как инструмент ваш
honeypot может выполнять и разные задачи:
определять начало атаки, собирать
информацию или рассказывать вам
интересную информацию о действиях хакера (принято
разделение – на производственные ловушки и
исследовательские: первые занимаются
защитой сетей, вторые для сбора информации).
Как работает honeypot? На пальцах это выглядит
очень просто – стоит себе машина (ресурс,
скажем более обще), которая фактически
ничего не делает. Следовательно любое
внешнее взаимодействие с горшком – вероятно
хакерская активность. Тем и хорош honeypot:
- Он собирает малое количество информации,
но ее значение велико. Вместо того, что бы
копаться в 5.000 предупреждениях и 10 Гб
логах не проще ли разбирать их 30 и всего 1
Мб? Данные, которые предоставляет ловушка,
гораздо легче анализировать! - Как уже было сказано выше фактически
honeypot не имеет никакой авторизованной
активности, то есть он фактически ничего
не делает (представь, допустим, веб-сервер,
который не имеет имени и никому не
известен, количество заходящих на него
людей стремится к 0), потому все, кто на
него ломится – потенциальные взломщики.
Количество ложных сигналов сводится к
тому же 0. - Все потому же не требуется для такой
системы мощной машины или каких то
навороченных систем управления.
Определились у ловушек, конечно, и
недостатки: во-первых это так называемый
ограниченный вид, ведь горшочек
регистрирует только направленные
непосредственно на него атаки, а во-вторых
просто напросто выставление на всеобщее
обозрение нового ресурса – всегда
небезопасно, если у вас нет достаточных
знаний и квалификации хакер может победить
вас в вашей же ловушке.
С чего начать?
Естественно, как и всюду в мире, лучшего и
универсального honeypot-а не существует. В
каждом конкретном случае надо выбирать
себе программу исходя из намечаемых целей.
Лучшим для начинающих всеми признается
honeypot BackOfficer
Friendly – чрезвычайно простая, бесплатная
программа для Windows. Она ограничена в
возможностях, но общую концепцию этого
веселья вы поймете. Для *nix систем
существует Honeyd,
OpenSource решение, о котором много раз писали
даже в русском Интернете. Honeyd по своему
уникальная вещь – может эмулировать более
400 различных операционных систем и
тысячи компьютеров одновременно. Причем он
не только эмулирует ОС на уровне приложений,
но и на уровне IP стека, чего никто из
конкурентов делать не в состоянии.
Ну вот пожалуй на сегодня и все, во второй
части я постараюсь рассказать о Honeynet,
некоторых других программах.
Honeypot Farm, Honeypot, Хонейпот, ловушка для хакера, основы Honeypot, защита сети, программы-ловушки
При подготовке материала использовались источники:
https://xakep.ru/2002/07/29/15919/
https://xakep.ru/2021/02/26/honeypots-catched/
https://xakep.ru/2003/04/24/18282/