Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
19.94 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

>>

ХАКЕР

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.PROBUY

 

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

-

 

n

e

 

 

 

 

 

x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Внешний вид неперехваченной функции

уразработчиковмалваринетникакогожеланияотслеживатьвыходновых версий,ониограничиваютсяатакойтипаWM_X,сводящейсякманипуляцииэлементамипользовательскогоинтерфейсапутемпосылкисоответствующихсообщений(WindowMessages),удаляющихобнаруженныеруткитыизсписка,отображаемогоRootkitRevealer’ом,чтоработаетсовсеми версиями.Новлог-файлобнаруженныеруткитывсе-такипопадают.

КтомужеRootkitRevealerнаходиттолькотеруткиты,которые:а)модифицируютреестри/илифайловуюсистему;б)скрываютследысвоегоприсутствия.Еслихотябыодноизэтихусловийневыполняется,руткитнебудетобнаружен.Анализкоданекоторыхруткитовпоказывает,чтоониотслеживают появлениеокнаRootkitRevealer’аипрекращаютсвоюмаскировкунавремя егоработы.Разработчикамзащитныхутилитужедавнопоравзятьполи- морфизмнавооружение—покаонибудутобнаруживатьсяруткитами,нио какойзащитеиречибытьнеможет!Антивируснедолжениметьпостоянной сигнатуры(равнокакиоконсзаранееизвестнымизаголовками)!

Мирруткитовнеисчерпываетсятемидемонстрационнымиэкземплярами, чтовыложенынаwww.rootkits.com.Судисам:разработкакачественного руткита—сложнаяинженернаязадача,изаодинвечертакиеруткиты непишутся.Торговатьруткитами(всилуихполулегальногоположения)

отваживаютсятолькосамыенуждающиеся(илиотчаявшиеся).Таккакойже резонвыкладыватьруткитвобщественныйдоступ?Развечтодлятого,чтобы заявитьосебеипосостязатьсявкрутостисдругимихакерами.Но!Профессиональныепрограммистыужедавноминовалистадиюсамоутвержденияи, вместотогочтобыработатьзаидею,предпочитаюткодитьзаденьгипоиндивидуальнымзаказам(покрайнеймере,будетначтонаниматьадвоката). Реюз(тоестьповторноеиспользованиекода)втакихруткитахпрактическиневстречается,ивантивирусныебазыпопадаютлишьнемногие.Как ужеговорилосьвыше,правильноспланированнаяатакапредполагает самоуничтожениеруткитапоистечениинекотороговремени.Даикакего ловить,еслионсуществуеттольковоперативнойпамяти?!Можно,конечно,передаватьантивируснымкомпаниямдампядраоперационнойсис- темы,нотутестьтрино.Во-первых,какаяантивируснаякомпаниябудетв немковыряться?Во-вторых,этожесколькотрафикапотратит!В-третьих, вдампекромеруткитаможетнаходитьсятьмасекретнойинформации, которуюразглашатькрайненежелательно,напримерпароли.

Важнопонять,что,вотличиеотвирусовичервей,распространяющихся откомпьютераккомпьютеруираноилипозднопопадающихвантивирусныекапканы,настоящиеруткитысуществуютвединичныхэкземплярах,ипотомуобнаружитьихмогутлишьпроактивныетехнологии, напримерэвристическийанализ.Однако,еслизаказчикруткитахоть немногодружитсголовой,онобязательнопроверит,палитсялируткит последнимиверсиямиантивирусовприсамомстрогомрежимеэвристики (прикоторомантивирусругаетсядаженачестныепрограммы),и,еслида, возвратитегоназаднадоработку.

Поэтомувкачестверабочеготезисанеобходимопринять,чторуткиты антивирусаминеобнаруживаются,какбынамнипромывалимозгисоздателиантивирусов.

Удаленное сканирование портов

Вэпохурасцветаbackdoor’овудаленноесканированиепортовсчиталось абсолютнонадежнымметодомобнаруженияруткитов.Действительно, какбыруткитнимаскировалсетевыесоединенияикакиебысистемныевызовыниперехватывал,всеэтовоздействуетлишьналокальную

Внешний вид перехваченной функции

машину.Да,конечно,можнообманутьиtcpdump,иnetstat,но…только локально.Всякаяжепопыткасканированиязараженногокомпьютерас соседнеймашинынемедленновыявитоткрытыепорты,еслиони,разумеется,таместь.Ируткитникакнеможетэтомупротивостоять.

Однакозачеммаскироватьфактоткрытияпортов,еслиникакиепорты можновообщенеоткрывать,аиспользоватьужеоткрытые?Мыщъхисследовалнесколькоруткитов,которыепутемперехватасистемныхфункций мониторилиHTTP-трафикипередавалинахакерскийузелчерез80 йпорт информациюотекущемномерепоследовательностиTCP/IP-соединения, чтобыхакермогпослатьлевыйпакет(скомандамидляруткита),который бывоспринималсясистемойкакправильный.Ачтобысоединениес текущимweb-узломнеразрывалось,хакерпосылалемуещеодинпакет, предотвращающийсрывсинхронизацииномерапоследовательности. Другимисловами,руткитпередавал/принималданныевконтекстесущес- твующегоTCP/IP-соединения,инициированногокомпьютером-жертвой,

ипотомусканированиепортовничегоподозрительногоневыявляло,авот внимательныйанализTCP/IP-пакетовпоказал,чтопакеты,переданные руткитомхакеру,имелиIP-адрес,отличныйотIP-адресацелевогоузла,с которымибылоустановленосоединение.

Однаконестоитобольщаться—невсеруткитытакиепростые,иприже- ланиитрафикможноспрятатьтак,чтоегониктоиникогданенайдет.На сайтеЖанныРутковской(www.invisiblethings.org/tools.html)выложены готовыеутилиты,прячущиесамфактприсутствияпостороннеготрафика

ивдобавокшифрующиеегоалгоритмомRSA,благодарякоторомуразбор логовtcpdump’астановитсяпустойтратойвремени.

Выдвигаемследующийтезис:руткитынеоткрываютновыхпортов,а генерируемыйимитрафикнилокальными,ниудаленнымисниферамине обнаруживается.

Свет в конце тоннеля или встречный?

Извечныйвопрос:какбыть,чтоделать?!Поборотьновыеруткитыстарымисредствамиуженеудается,ановыхсредств,ксожалению,нет.Поэтому приходитсявозвращатьсякскомпрометированноймашинеиискатьруткитнепосредственнонаней.Весьвопросвтом,какнайтипроизвольный руткит,еслионемзаранееничегонеизвестно?Нисигнатур,нидругих опознавательныхпризнаковунаснет.

Ксчастью,существуетнетакужмногометодовперехватасистемных функций,ивсеониоставляютзасобойвполнеосязаемыеследы,обнаружитькоторыеможнодажебезглубокихзнанийособенностейреализации операционнойсистемыиассемблера.Естественно,никакихгарантийу наснет,новсе-такиручнойпоискнамногонадежнееавтоматизированно- го,пускайонитребуетопределеннойквалификации.Запуститьантивирусможетидомохозяйка,чтонивелируетразницумеждунейиопытным хакером,поэтомулучшеразвиватьсвоисобственныеспособности,тренировать«нюх»,чемдоверятьбезопасностькомпьютерачужимдядям. Руткитыпринятоклассифицироватьподвумосновнымкритериям:по местуобитания(ядроилиприкладнойуровень)испособувнедрения(например,перехватфункцийпутембитхака).Такаяклассификацияочень условна,ивреальнойжизнисплошьирядомвстречаютсягибридныеварианты,одновременноработающиекакнауровнеядра,такинаприкладномуровне.Забавно,норуткиты,полностьюработающиенаприкладном уровне,обнаружитьсложнеевсего,посколькуимдоступноогромное количествометодиквнедрениявчужиепроцессы,адляманипуляцийс

xàêåð 12 /108/ 07

159

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

w Click

to BUY

 

>> ХАКЕР.PRO

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

Таблица системных вызовов

трафикомникакихфункцийвообщеперехватыватьненужно—достаточ- новоспользоватьсясырымисокетами.Норуткитыприкладногоуровня

—это«некруто»ивообще«непопонятиям».Взорхакеровустремленв ядро,вкоторомможноделатьвсечтоугодно.Воттолькометодикперехва- тасистемныхфункцийтам—раз,дваиобчелся,апотомуобнаружение ядерныхруткитовпредставляетсобойдовольнопростуюзадачу.

Мыбудемговоритьименнооруткитахуровняядра,семействокоторых делитсянадваподтипа:однивнедряютсяпутемправкимашинногокода, вставляявначало(редко—всередину)функциикомандуJMPилиCALL дляпереходанасвоетело;адругиемодифицируютструктурыданных, напримертаблицусистемныхвызовов,хранящуюуказателинафункции.

ВNTобаподтипаруткитоввстречаютсяприблизительносодинаковой частотой.АвLinux/xBSDвосновномпреобладаетвторойподтип,что связаностемфактом,чтоядроNTэкспортируетNativeAPI-функциикак обычнаядинамическаябиблиотека(DLL),ачтобынайтиNativeAPI-фун- кциивLinux/BSD,следуеточеньпостараться.Датолькозачемстараться, еслитаблицасистемныхвызововунасподрукой?!

Существуетмножествоутилит,проверяющихцелостностьтаблицысистемныхвызововивосстанавливающихеевслучаенеобходимости,номне неизвестнаниоднаутилита,проверяющаяцелостностьсамихсистемных функций,внедрениевкоторыесущественноусиливаетжизнестойкость руткита(механизмPatchGuard,реализованныйвx86-64версияхNT,мыне рассматриваем,посколькуегооченьлегкообойти).

Собственноговоря,привсемразличииNTиLinux/BSDтехникапоискаруткитоводнаитаже.Первымделомнамнеобходимозаполучитьдампядраили запуститьядерныйотладчик.Теоретическируткитымогутперехватывать любыеоперации,втомчислеипопыткусохранениядампа.ВNTдляэтого имдостаточноперехватитьNativeAPI-функциюKeBugCheckExи,преждечем возвратитьейуправление,вычиститьвсеследысвоегопребываниявоперативнойпамяти.Техническиреализоватьэтонесложно.Понадобитсяне большепарысотенстрокассемблерногокода,но…мненеизвестенниодин руткит,реальноделающийэто.Такжеможнообхитритьиядерныйотладчик. Устанавливаемвсемхакнутымстраницаматрибуттольконаисполнение (еслиЦПподдерживаетбитNX/XD)илиставимстраницувNO_ACCESS,а привозникновенииисключениясмотрим,пытаютсялинаспрочестьили исполнить.Иеслинасчитают,тоэтоявноотладчик,дляобманакоторого временноснимаемперехват.Ноэтовсеголишьтеория.Напрактикеонаеще никемнереализована,икогдабудетреализована—неизвестно.

Увы,абсолютнонадежныхспособовдетекциируткитовнесуществует,ина любуюмеруестьсвояконтрмера.Нонебудемтеоретизировать,вернемся креальносуществующимруткитам,аточнее,кполучениюдампапамяти.

ВNTв«Свойствахсистемы»(<Win-Pause>)необходимовыбрать«Полный дамп»,затемзапустить«Редакторреестра»,открытьветвьHKLM\System\ CurrentControlSet\Services\i8042prt\Parametersиустановитьпараметр CrashOnCtrlScroll(типаREG_DWORD)влюбоененулевоезначение,

послечегонажатие<Ctrl>споследующимдвойнымнажатием<Pause>

вызоветголубойэкранскодомE2h(MANUALLY_INITIATED_CRASH).К

сожалению,чтобыизмененияреестравступиливсилу,необходимоперезагрузитьмашину,прибивприэтомруткит,которыймыпытаемсянайти, такчтоэтуоперациюследуетосуществлятьзаблаговременно.

Кстати говоря, последовательность <Ctrl-Scroll Lock-Scroll Lock>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

срабатывает, даже если машина ушла в нирвану и уже не реагирует на

<Ctrl-Alt-Del>. Причем, в отличие от RESET, комбинация <Ctrl-Scroll Lock-Scroll Lock> выполняет сброс дисковых буферов, что уменьшает риск потери данных, поэтому CrashOnCtrlScroll стоит настроить и в том случае, когда мы не собираемся охотиться на руткиты.

Втехслучаях,когдаCrashOnCtrlScrollненастроен,аперезагрузкане приемлема,можновзятьлюбойдрайверизNTDDKивставитьвначало DriverEntryкакую-нибудьнедопустимуюоперацию:делениенаноль, обращениекпамятипонулевомууказателюит.д.Тогдапризагрузке драйверанемедленновспыхнетголубойэкран,анадискбудетсброшен полныйдамппамятиядрасовсеймалварью,внемсодержащейся.

ВLinuxручнойсбросдампаосуществляетсяпринажатии<Alt-SysRq-C> (приэтомядродолжнобытьоткомпилированоспараметромCONFIG_ MAGIC_SYSRQ,равным«yes»,илидолжнабытьвыполненакоманда«echo1 >/proc/sys/kernel/sysrq»).

ВxBSD-системахкомбинация<Ctrl-Alt-Esc>(кстатиговоря,изменен-

наявнекоторыхраскладкахклавиатуры)вызываетвсплытиеядерного отладчика(аналог<Ctrl-D>дляSoftICEвNT),который,ксожалению,по умолчаниюневходитвядро,ипотомуегонеобходимопредварительно перекомпилировать,добавивстроки«optionsDDB»и«optionsBREAK_ TO_DEBUGGER»вфайлконфигурацииядра.Еслижепоследняяопцияне обозначена(онейчастозабывают),товотладчикможновойтиизконсоли командой«sysctldebug.enter_debugger=ddb». Полученныйдампядра можноанализироватьлюбойсподручнойутилитой,благонедостаткавних ощущатьнеприходится.Например,вNTдляэтойцелиобычноиспользуетсяWinDbg,номыщъхпредпочитаетисследоватьсистемувживуюспомощьюSoftICE,ближайшиманалогомкотороговмиреLinuxявляетсяLinICE.

Значит,нажимаеммы<Ctrl-D>(SoftICE),<Ctrl-Q>(LinICE)или<Ctrl- Alt-Esc>(xBSD)иоказываемсявядре.Далеепишем«uимя_функции»и последовательноперебираемименавсехфункций(нуилиневсех,асамых соблазнительныхдляперехвата),списоккоторыхподNTможнополучить командой«dumpbin.exentoskrnl.exe/export>output.txt»(гдеdumpbin.exe

—утилита,входящаявсоставMicrosoftVisualStudioиPlatformSDK).Апод

Linux/xBSDэтужезадачуможнорешить,изучивсимвольнуюинформациюнесжатогоинестрипнутогоядра.

Вначаленормальных,неперехваченныхфункцийдолженнаходитьсястандартныйпрологвида«PUSHEBP/MOVEBP,ESP»илитипатого.Еслижетуда воткнутJMPилиCALL,тосвероятностью,близкойкединице,даннаяфунк- циякем-топерехвачена.Авоткем—этовопрос.Кромеруткитовперехва- томзанимаютсяантивирусы,брандмауэрыидругиепрограммы,поэтому, преждечемотправлятьсянапоискмалвари,необходимохорошоизучить особенностисвоейсистемысовсемиустановленнымиприложениями. ПродвинутыеруткитывнедряютJMP/CALLневначалофункции,авее середину,чтобыневызыватьподозрений.Насамомделе,проанализировавкодхакнутойфункции,легкоубедитьсявнекоторойегоненормальности.ЛевыйJMP/CALLпростоневписываетсявалгоритм!Однако,чтобы прийтикподобномузаключению,необходимонетолькознатьассемблер, ноииметьопытдизассемблирования.Ксчастью,продвинутыеруткиты встречаютсядостаточноредко,иподавляющеебольшинствоизнихвнедряетсявсамоеначало.

Просмотрев все функции и убедившись в отсутствии следов явного перехвата, приступаем к изучению таблицы системных функций, которая под SoftICE вызывается командой NTCALL, а под LinIce — командой D sys_call_table. Поскольку функции, перечисленные в таблице, не экспортируются ядром NT, то в отсутствие символьной информации (которую можно получить с сервераMicrosoftспомощьюутилиты SymbolRetriverотNuMega)SoftICEотображаетимяближайшейэкспортируемойфункцииплюссмещение.Апотомумынеможембыстросказать: перехваченаданнаяфункцияилинет,инампридетсянабиратькоманду«u адрес_функции»,чтобыпосмотреть,чтотамнаходится:нормальный,неперехваченныйпрологилиJMP/CALL.Вниксахинформацияосимволах присутствуетпоумолчаниюиподобныхпроблемневозникает. Естественно, помимо описанных существуют и другие методики перехвата, используемые руткитами, однако они довольно сложны для понимания и требуют предварительной подготовки, а потому здесь не рассматриваются.z

160

xàêåð 12 /108/ 07

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

07)ДЕКАБРЬ12( x

WE ARE TOGETHER

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

108

Соседние файлы в папке журнал хакер