...

Программа ловушка что это

Установка ловушек в 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 и тем самым отпу­гива­ет некото­рые бот­неты и не самых тупых ата­кующих.

Сканирование ханипота Nmap

Присоединяйся к сообществу «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/