![]() |
Эмуляция ввова как метод обхода OutPost FireWall 4
::Тема: Эмуляция ввова как метод обхода OutPost FireWall 4.
::Зачем: Показать уязвимость персонального фаервола. ::Кому: Новичкам (подробно описаны все действия). Интро Всё началось с того что меня поимели...Да это не делает чести... На системе стоят нод32 + ОутПост…. Ну вот я захотел понять как … Странных файлов антивирем обнаружено не было … Но я нашёл разращенное приложение с списке исключений в Anti-Leak’е… Хотя ничего подобного мной туда не было закинуто…Я понял, что скорее всего это сделано с помощью старого как дуб, но до сих пор рабочего метода эмуляции ввода… Теория В Виндовс существует возможность посылать сообщений от менее привилегированных приложений в более привилегированные . Причём последним очень трудно понять откуда пришло сообщение от пользователя или из программы… Для простоты объяснения метода я не буду рассказывать про внедрение кода для вызывания Anti-Leak защиты в оутпосте. А опишу незаметное добавление приложения в список Доверенных приложений, которым разрешено делать всё, это намного палевнее чем использовать инжект кода или подгрузку длл’ки, так как так это легче спалить. Кто хочет разобраться в инжекте советуб читать статьи на wasme. Для наших экспериментов выставим политику ОутПоста в Режим Обучения. Мы будем перехватывать окно, которое выводится если приложение стучится в сеть. И в нём выбирать “Разрешить всё” и нажимать кнопку “Ok”. В исходнике проги много того что не пригодится в реальном использовании данного метода, но они помогают лучше разобраться и познакомиться с некоторыми функциями Win API. Для начала рассмотрим функции Win API которые нам понадобятся : ::function FindWindow(lpClassName, lpWindowName: PChar): HWND; lpClassName – тип окна … ставим в nil lpWindowName – название окна которое ищем… Я эксперементировал с MIRC.EXE – поетому в исходнике стоит именно это –поменяйте на то что будет использованатся у вас в качестве экспериментального приложения ::function GetClassName(hWnd: HWND; lpClassName: PChar; nMaxCount: Integer): Integer; служит для получения класса обьекта; hWnd – хэндл окна. lpClassName – получаем класс ::function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; служит для получегия текста обьекта hWnd – хэндл окна. lpString – текст хендла Опишу работу приложения. Запускается поток с процедурой поиска окна алерта, при нахождении оного – запускается цикл с перебором дочерних окон и выводом их типов и текста в консоль. Здесь сделаю маленькое отступление : в виндоусе каждая кнопка , надпись etc является окном – поэтому для получения списка используем функцию GetWindow. Для перебора заносим в массив первый хендл объекта с помощью GetWindow и параметрами : хендлом окна алерта и GW_CHILD. А потом в цикле используя ту же функцию GetWindow передавая параметры предыдущего хендла и GW_HWNDNEXT получаем все элементы окна. Потом увидев в консоле какой по счёту идут нужные нам кнопки (напомню нам нужны : “Разрешить этому прилжению выполнять любые действия” и “Ok”) . Расположение элементов можно видеть на скрине. Теперь мы можем нажать на них. Напомню что нажатие состоит из трёх этапов : установку фокуса-> нажатие->убивание фокуса. Все эти действия выполняем функцией SendMessage и PostMessage. http://sov1et.jino-net.ru/img/1.JPG Собственно код Код:
program prog;Да эта техника обхода имеет большой недостаток – для каждого фаера нужен свой подход. Но их не так много и поетому в принципе можно реализовать для всех самых распространенных. На этом позвольте расклинится. Всем пока и спс за внимание. |
1) Боян страшный
2) можно защититься на 100% от этого с помощью отказа от стандартных GUI функций и плавающих элементов окна. + если делать AnimateWindow, это палится. 3) с антивирями это катит не всеми. например, Касперский сильно ругается. Скорее всего, он замеряет время между показом окна и вводом и если оно маленькое, то начинает орать 4) Цитата:
|
А прога на Паскале чтоль? =\
|
Жжошь. Это дельфи у него.
|
А Delphi не паскаль по твоему? (только более старший собрат)
|
Тогда можно сказать, что С++ это Си, вб - барсик и так далее.
|
Статья для новичков...
Я и не говрорил что ето супер метод... Почему боян? - Это же работает в связке нод+оутпост. 2 _Great_ естественно для тебя здесь не будет ичего нового . ЗЫ. EnumWindows и EnumChildWindows да и впрямь удобнее... ЗЫЫ Язык обжьект паскаль среда делфи. |
Цитата:
к тому же этот метод дико кривой и ненадежный и я уже писал, почему |
2 _Great_ - ну твоя статья про Splicing тоже не рассказывает ничего нового. Етот метод тоже известен давно.
|
| Время: 02:21 |