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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рейтинги в новом Software Center

Новые вычисления

Вышлановаяверсияоснованногонаgentoo дистрибутиваCalculate Linux 11.0. Хотядистрибутивразрабатываетсянашими соотечественниками, вРоссиионнеоченьизвестен. Основныеизменения:

появиласьноваясборка— Calculate Scratch Server;

добавленыбинарныерепозиториидляCalculate Linux Desktop и Calculate Directory Server споддержкойrolling-release;

дляскачиваниясталидоступныеженедельныесборки дистрибутивов;

улучшенинтерфейспользователявCalculate Linux Desktop;

переходнаPortage 2.2;

улучшенаподдержканетбуковипринтеровCanon;

использованиеKMS длявидеокартIntel.

используетграфическуюбиблиотекуClutter (активноиспользующую OpenGL длярендеринга) иZeitgeist (механизмдляорганизации работысданныминаосновеметаданных— такихкаквремясоздания/ модификациииметки).

ЯчестнопыталсяпользоватьсяUnity довольнопродолжительное время— имхо, отличныйинтерфейс… длякаких-нибудьпланшетов. Наноутес15,6" — старыйдобрыйламповыйгном2.хдляменякуда удобнее. Хотявцеломинициативадостаточноинтересная, иейуже заинтересовалисьразработчикидругихдистрибутивов. Правда, начавшаясябылодеятельностьпопортированиюUnity наFedora и OpenSUSE быстросошлананет. Проблемавбольшомколичестве патчейнаCompiz, D-Bus ипрочего, необходимогодляработыUnity. Когдаэтипатчивойдутвапстрим, перенестиUnity надругиедистрибутивыстанетзначительнопроще.

Есликому-тоUnity ненравится, можновgdm выбратьпункт«Ubuntu Classic» склассическимGnome (такжениктонемешаетсамостоятельноустановитьGnome Shell).

Unity—основное,нонеединственноеизменение,естьещенесколь- кодовольновесомых:

1.Отнынередакциядлянетбуковбудеттолькодляархитектурыarmel (платформыOMAP3 иOMAP4). Дляx86 предлагаетсяиспользовать обычнуюдесктопнуюверсию. Вообще, поддержкеARM вновомрелизеуделенобольшоевнимание. Canonical рветсянапланшеты:)

2.АудиоплеерпоумолчаниютеперьBanshee. Несовсемпонятный шаг, таккаконнаписаннаmono, аотmono вродекакпыталисьизбавляться. Интереснаяисториявышлаисмагазиноммузыки. Дело

втом, чтоуBanshee естьсвоймагазин, вседоходыоткоторогоперечисляютсяGNOME Foundation. ИуCanonical тожеестьсвоймагазин, вседоходыоткоторогоперечисляютсяCanonical :). Вконцеконцов остановилисьнаварианте, чтотеперьвBanshee дляUbuntu будетдва магазина, 25% доходаоткоторыхперечисляетсяGNOME Foundation.

3.LibreOffice 3.3 заменилсобойOpenOffice.

Новый сайт Debian

4.ВSoftware Center добавленырейтингииобзорыПО.

5.Ubuntu One обзавелсяновыминтерфейсоминаучилсясинхронизироватьфотографиичерезShotwell.

6.СамShotwell обновилсядо0.8 иполучилподдержкувидео(свозможностьюимпортаскамерилимобильников, аплоаданаYouTube, Flickr, Facebook, PicasaWeb иЯндекс.Фотки).

7.Linux 2.6.38.

8.НовыеверсиисистемногоПО: GCC 4.5, X.Org 7.6.

9.НовыеверсииDE: KDE 4.6, Gnome 3, Xfce 4.8, LXDE 0.5.0.

10.И, наконец, длятехотчаянныхпарней, комуперечисленныхнововведениймало— врепозиториипоявилсяновыйграфическийсервер

Wayland.

Красные

ВстанеRPM-based дистрибутивовтожепраздник— вконцепрошлого годавышелRed Hat Enterprise Linux 6, которыйбудетподдерживаться до2020 года.

Ключевыеизменения:

1.Linux 2.6.32 снекоторымифишками, бэкпортированнымиизболее новыхверсий. Этоядробудетподдерживатьсявтечениевсего временижизниRHEL6, поддержкуновогооборудованияпланируется добавлять. ПриэтомABI-интерфейснеизменится. Поумолчанию теперьиспользуетсяболеепроизводительныйпланировщикзадач

CFS (Complete Fair Scheduler). Вообще, вновомрелизепроизводи-

тельностиуделеноособоевнимание(впервуюочередьнамногопроцессорных/многоядерныхсистемах). Маркетологихвастаются, что новаяверсиябыстреепредыдущейв2-5 раз.

2.ТрадиционныйSySV init замененнаupstart.

3.ВкачествесистемывиртуализациииспользуетсяKVM, которая

вновойверсиидолжнабытьбыстрееистабильнее. Поддержка

Xen Dom0 убрана, осталасьтолькоподдержкаXen DomU (работав качествегостя). ЗатодобавленаподдержкапротоколаSPICE (Simple Protocol for Independent Computing Environments), позволяющего удаленноработатьсвиртуальноймашинойвграфическомрежиме.

ОсновноеотличиеSPICE отVNC (Virtual Network Computing) илиRDP (Microsoft Remote Desktop Protocol) — обработкааудио-ивидеопото-

ков, атакжерендерингсодержимогоэкранапроисходитнастороне клиента. Этопозволяет, например, смотретьвидеонавиртуальной машинебезлишнейнагрузкинахост;

4.ПоявиласьвозможностьгорячегодобавленияОЗУиустройствв шинуPCI Express.

5.Теперьфайловаясистемапоумолчанию— ext4. Такжедобавлена поддержкаXFS, NFSv4 иконечножеэкспериментальнаяподдержка

Btrfs.

6.НоваяслужбаSystem Security Services Daemon (SSSD) представ-

ляетизсебячто-товродепрослойкидляаутентификациипользова- телей. ВкачествебэкэндамогутвыступатьLDAP, Kerberos идругие. Приятнаявозможность: кэшированиеавторизации(offline mode).

7.И, наконец, новыйрелизболее«зеленый», чемпредыдущий— это сейчасмодно. Уменьшениеэнергопотреблениядостигаетсязасчет

XÀÊÅÐ 05 /148/ 2011

099

 

 

 

 

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

 

 

 

 

UNIXOID

 

 

 

 

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

 

 

 

 

Так теперь выглядит интерфейс к Ubuntu One

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

8.НовыеверсиисистемногоПО: GCC 4.4, X.Org 7.5.

9.НовыеверсииDE: KDE 4.3.4, Gnome 2.28.6.

10.НовыеверсиисерверногоПО: Apache 2.2.15, MySQL 5.1.47, PostgreSQL 8.4.4, Samba 3.5.4.

11.Новыеверсииинтерпретаторов: PHP 5.3.2, Python 2.6.5.

RHEL имеетдовольнобольшоеколичестворазнообразныхклонов. Самыйизвестныйизних— CentOS. ТочнаядатавыходаCentOS 6 пока неизвестна, ноуже«вот-вот». Возможно, квыходужурналавпечать релизужесозреет. ЗатоменееизвестныйOSS-клонзарелизилсяеще вначалемарта— Scientific Linux 6 (scientificlinux.org). Какпонятноиз названия— линуксдляученых. РазрабатываетсясиламиCERN (Европейскаяорганизацияпоядернымисследованиям— те, ктосделали Большойадронныйколлайдер) идругихлабораторий.

ОтличияотRHEL 6:

оконныйменеджерIceWM;

OpenAFS — открытаяраспределеннаяФС;

утилитыrevisor, livecd-tools иliveusb-creator длясозданияперсонализированныхLiveCD/LiveUSB;

yum-autoupdate — механизмавтоматическихобновлений. Большоеколичестворазличныхнаучныхпрограмм, ранеедоступныхв репозиторииScientific Linux, теперьперенесенывовнешниерепозитории. КорпорацияOracle такжепредставилановуюверсиюсвоегодистрибутива, основанногонаRHEL 6, этоOracle Linux 6. ОтличийоторигинальногоRHEL нетакужимного. Одноизосновных— Unbreakable Enterprise Kernel (существующеетольков64-битномварианте), которое «быстрее, выше, сильнее» ивообщеединственноверныйспособзапускадругихпродуктовOracle, такихкакмалоизвестнаяСУБД:).

ДругоеизвестноедетищеRedHat — Fedora. Сейчасработанадно-

вымрелизомкипитвовсю— вмаедолжнавыйтиверсия15 (Lovelock). ИзплановнаFedora 15 можновыделитьследующие:

1.Использованиепоумолчаниюсистемногоменеджераsystemd (читайонемвстатье«Демоническаясила» вэтомженомере).

2.ИспользованиесжатияLZMA дляLiveCD.

3.Разделы/var/run и/var/lock будутсмонтированыввидеRAM-диска

(tmpfs).

4.ПолнаяподдержкаBtrfs винсталляторе.

5.Вместоsuid-битабудетиспользованмеханизмядраcapabilities.

6.ЗаменаOpenOffice.org наLibreOffice.

7.ОбновлениепакетногоменеджераRPM доверсии4.9.

8.ПоддержкатехнологииSpice вvirt-manager.

9.Поддержказагрузкисновыхдисковсразмеромсектора4 Кб.

10.ВозможностьуправленияправиламифайерволачерезD-Bus, без необходимостирестарта.

11.ПоумолчаниюдляDNS-клиентовиспользуетсяDNSSEC.

12.Самаяспорнаяноваяфича: теперьсетевыеинтерфейсыбудут именоватьсявзависимостиоттипаподключениякарты:

em{port} — встроеннаявматплатукарточка;

pci{slot}#{port} — PCI-карточки. ДляVLAN’овиalias’овбудутисполь-

зоватьсяспециальныесуффиксы: .{vlan} и:{alias}.

13.НовыеверсиисистемногоПО: GCC 4.6, X.Org 7.6.

14.НовыеверсииDE: KDE 4.6, Gnome 3.0, Xfce 4.8.

Демонывесны

Веснойнетольколинуксырелизятся, ноидемоныпробуждаютсяот зимнейспячки. Вконцезимы(спустясемьмесяцевотрелиза8.1) вышлиFreeBSD 8.2 и7.4. Релиз7.4 непринесчего-токардинально

100

XÀÊÅÐ 05 /148/ 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

 

 

 

 

Был eth0, стал em1

нового: тольколатаниедырок, фиксыбаговиподдержкановогооборудования(восновномгигабитныхсетевыхкарточек: Atheros AR8151/ AR8152, Broadcom BCM5718, SiS190/191 идругих). Обновлениядля седьмойветкибудутвыходитьещедвагода.

FreeBSD8.2кудаинтереснее:

1.РеализацияZFS обновленадо15 версии, изOpenSolaris перенесеныпатчи, увеличивающиепроизводительностьистабильностьZFS.

2.Криптографическаяподсистемаgeli теперьумеетработатьсразус несколькимиключами, используякаждыйизнихдлясвоегонабора секторовнадиске. ПоумолчаниютеперьиспользуетсярежимAES-XTS,

асамаутилитаgeli научиласьизменятьразделышифрованныхФС.

3.Добавленновыйnetgraph-узел, позволяющийизменятьпроизвольныеполявзаголовкахпакетов.

4.Появилсяновыйдрайвер, поддерживающийUSB 3.0 (xhci).

5.Появиласьподдержкааппаратныхакселераторовшифрованияв новыхCPU Intel.

6.Добавленаподдержкановыхпроводных(Atheros AR8151/AR8152 PCIe Gigabit/Fast Ethernet, Intel 10Gb Ethernet 82599 иBroadcom BCM5718) ибеспроводных(Intel Wireless WiFi Link 6000, Broadcom BCM430* иBCM431*) сетевыхкарт.

7.ВDTrace появиласьвозможностьдинамическойтрассировкипользовательскихприложений, анетолькопроцессоввядре.

8.Вутилитуtar добавленаподдержкаLZMA.

9.УстраненыпроблемывработеFreeBSD x86-64 вкачествегостевой системыXen врежимеHVM.

XÀÊÅÐ 05 /148/ 2011

10.Вpxeboot поумолчаниюотнынеиспользуетсяNFSv3 (вместо

NFSv2).

11.Теперьинсталляторпоумолчаниюиспользуетследующиеразмерыразделов: 1 Гбдлякорневогораздела, 4 Гбдля/var и1 Гбдля/tmp.

12.GNOME 2.32.1, KDE 4.5.5.

Тенденции

Извсехэтихchangelog’овможновыделитьнесколькообщихтенденций:

1.ДостаточномноговниманиясталоуделятьсявременизагрузкиОС, практическивседистрибутивыужевнедриликакой-нибудьсистем- ныйменеджер, поддерживающийпараллельнуюзагрузку(например, upstart илиsystemd).

2.Параллельносвнедрениемновыхтехнологийидетпроцессизбавленияотстарых, вродеHAL.

3.ВсебольшееколичествосервисовзавязанонаD-Bus (см. статью «Хозяинцифровоймагистрали» всентябрьскомномере][ за2010 год, xakep.ru/post/54722/default.asp).

4.Многиеразработчикидистрибутивовпривыбореофисного пакетаостановилисвойвыборнаLibreOffice. Думаю, Debian сего политикоймаксимальнойсвободытожеперейдетнанегокследующемурелизу.

5.СамаяраспространеннаяФСдляновыхдистрибутивов— ext4. Черезгод-дваее, скореевсего, сменитbtrfs.

6.Возможно, внедалекомбудущемWayland займетместоXOrg. z

101

 

 

 

 

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

 

 

 

 

UNIXOID

iv (ivinside.blogspot.com)

 

 

 

 

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 через флешку и защита от них

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

расслаблять булки: и в линуксах существует не меньше косяков по этому поводу.

Autorun.infмертв,даздравствует

.autorun!

Полагаю, всевкурсе, чтовсистемахWindows существуетвозможность автоматическизапускатьпрограммыпослевтыканияusb-флешкии прочихвнешнихнакопителей. Заэтуфункциональностьответственен файлautorun.inf, спомощьюкоторогоюныевирусописателиналомали немалодров, преждечеммелкомягкиеотключилиавтоматический запуск. Теперь, начинаясWindows 7, этотфункционалотключенпоумолчанию. Нохитрыехакерынеунывалиинаходилиновыеспособынатягиватьпользователей. Обэтомсвидетельствуютнашумевшиеуязвимости

приобработкеярлыков(этубрешьэксплуатировалчервьStuxnet) иразнообразныхбиблиотексозданияэскизов, которыевступаютвдействие припростомпросмотресодержимогофлешкив«Проводнике». Былобы наивнопредполагать, чтовЛинуксеподобнойфункциональностинет. Спецификацииfreedesktop.org, которымследуюттакиеокружения рабочегостола, какGNOME иKDE, предполагаютналичиеспециальныхфайловавтозапусканасъемномнакопителе: .autorun, autorun или autorun.sh. Еслинафлешкеприсутствуютдваиливсетриизперечисленныхтиповфайлов, тообрабатыватьсябудеттолькоодин. Приоритет будетотданфайлу.autorun, адалее— впорядке, перечисленномвыше.

102

XÀÊÅÐ 05 /148/ 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

 

 

 

 

После 40 960 запусков evince-thumbnailer получился такой график распределения адресов загрузки libc

Краткий ликбез по средствам безопасности

в Ubuntu

1.AppArmor — модульдляядраLinux, который реализуетпринудительныйконтрольдоступадля приложений. Скаждымприложениемможетбыть ассоциированспециальныйпрофиль, который ограничиваетеготелодвижения. ВUbuntu некоторые программыприинсталляциитакжеустанавливают свойпрофильдляAppArmor. Дополнительныепрофили содержатсявпакетеapparmor-profiles. Частьизних устанавливаетсяпопути/usr/share/doc/apparmor-pro- files/extras, поэтомуможетпотребоватьсяпереносв

/etc/apparmor.d.

2.ASLR (Address Space Layout Randomization) —

технологиярандомизацииадресногопространства. Сее помощьюзагрузчикELF длякаждогоновогопроцесса будетзадаватьразныеадресастека, кучи, подгружаемых библиотекитакдалее. Значение/proc/sys/kernel/ randomize_va_space соответствуетвключенности(1 или2) иливыключенности(0) ASLR. С2005 года(ядро 2.6.12) Linux включаетвсебяпростуюреализацию ASLR. Различныепатчибезопасности(PaX, ExecShield идругие) реализуютболеесложныеиполныеварианты ASLR. Вдистрибутивах, содержащихвназвании«Hardened», атакжевсовременныхверсияхUbuntu сильные вариантывключеныпоумолчанию.

3.PIE (Position Independent Executables) — специальные флагисборкиприложений«-fPIE –pie». Собранныес такимифлагамиприложениямогутиспользоватьвсе преимуществаASLR ибудуткаждыйраззагружаться поразнымадресам. Нерекомендуетсяиспользовать на32-битныхсистемах, таккакнаблюдаетсявесьма заметноеснижениепроизводительности(до10%).

4.NX бит(No eXecute Bit) — одинбитвпроцессорном регистре, которыйобозначает, чтонаходящимся вотдельныхзонахпамятиданнымисполняться

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

• используетсяпроцессор, поддерживающий технологиюнааппаратномуровне(начинаясIntel Pentium 4 серии6xx ивсехмодификацийAMD Athlon 64);

• используетсяPAE илиархитектураx86-64 (вэтих режимахдоступенбитзапретаисполнениявтаблице страниц).

Посути, этонекийаналогautorun.inf вWindows, только несколькоурезанныйввозможностях. Здесьможнотолько прописатьпутькисполняемомуфайлу, нонельзя— сразук нескольким, атакженельзявыходитьзапределыфайловойсистемыфлешкиспомощьюссылкинавышестоящий каталог. Крометого, длянеисполняемыхфайлов(например,

Количество опубликованных уязвимостей в Evince заставляет задуматься

документаpdf) тожесуществуетвозможностьавтооткрытия. Нужносоздатьфайл.autoopen илиautoopen вкорневой директориисъемногоустройстваипрописатьтудапутьдо нужногофайла, причемкорнемявляетсянекореньсистемы, акореньсъемногоустройства. Правда, втомжеNautilus этафункциональностьпока(намеренно?) нереализована. Единственнаяомрачающаякартинуавтозапускавещь— пользователюнеобходимоподтвердитьэтодействие. Но такойлиэтоминус? Слепаяуверенностьлинуксоидавсвоей безопасностиотмалвариможетсыгратьснимзлуюшутку.

Копаемглубже

Надопризнать, чтофокусамисавтозапускомнынчемало когоудивишь, поэтомувзглянемнапредметнуюобластьнесколькошире. Послевтыканияфлешки(илилюбогодругого устройства) исполняетсябольшоеколичествокода:

модули подсистем USB, eSATA, FireWire, PCMCIA;

модули файловой системы режима ядра (ext3, ext4

идругие);

модули файловой системы пользовательского режима

(ntfs-3g);

библиотеки создания эскизов (через файловый менеджер).

Ошибкимогутсуществоватьналюбомизэтихуровней. Например, в2009 годубылнайденбагвдрайвереVoIP

телефонаAuerswald (CVE-2009-4067). Онзаключалсяв неправильнойобработкеUSB-дескрипторовиприво- дилкклассическомупереполнениюбуфера. Врезультате эксплуатацииэтойбрешиатакующиймогвыполнить произвольныйкоднауровнеядра. Дляболееудобного поискаошибоквUSB-драйверахТобиасМюллерсоздал фаззер, основанныйнаQEMU ипозволяющийэмулировать USB-устройства. Вконце2009 былаисправленасерьезная уязвимостьвмодулефайловойсистемыext4, вфункции ext4_decode_error(), котораяприводилакразыменованию NULL-указателяивыполнениюпроизвольногокодапри монтированииспециальноскомпонованногообразаФС. Уязвимостивдрайверахфайловыхсистемиспользуются припомощиспециальносформированногообразаэтой файловойсистемы, залитогонафлешку. Успешнопроэксплуатированнаяуязвимостьдаетатакующемуполный рутовыйдоступксистеме, таккакдрайверыфайловых системисполняютсяврежимеядра. Эксплуатацияуязвимостейвдрайверахфайловойсистемыпользовательского режима(черезFUSE) даетнамвозможностьисполнятькод спривилегиямитогопользователя, отчьегоименибылподмонтированраздел.

HTTP://WWW

links

Спецификации, в которых кто-то додумался описать

автозапуск с флешек: goo.gl/2wIIA;

база уязвимостей, на которую чаще всего ссылаются экс-

перты: cve.mitre.org/ cve/cve.html;

видеозапись выступления Джона Ларимера: youtube. com/watch?v= ovfYBa1EHm4;

полный список средств защиты, используемых в Ubuntu: wiki.ubuntu.com/ Security/Features.

DVD

dvd

На прилагаемом к журналу DVD ты

найдешь видеозапись

ислайды с выступления Джона Ларимера на конференции

ShmooCon 2011,

которое, собственно,

иподняло всю эту панику.

XÀÊÅÐ 05 /148/ 2011

103

 

 

 

 

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

 

 

 

 

UNIXOID

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nautilus как бы говорит, что ответственности за наши действия не несет

Отключаем автоматический просмотр содержимого свежеподключенных разделов

Какискатьуязвимостивсистемныхдрайверах? Здесьсуществуетнесколькопутей:

1.Ручнойанализкода. Особоевниманиеследуетуделятьтому, какпарсятсяструктурыфайловойсистемы.

2.Автоматическийанализкодаприпомощиспециализированногосо-

фта(lint, clang static analyzer идругие).

3.Фаззинг. ВЛинукселюбоеблочноеустройство(втомчислефайл) можетбытьсмонтированокакраздел. Такимобразом, можнолегконаписатьпрограмму, модифицирующуюфайл, смонтироватьего, провести некоторыеоперации, апотомразмонтироватьиповторитьпроцедуру заново. Модифицируяфайлнеабыкак, асучетомструктурфайловойсистемы, можнобыстрееприйтикуспеху(такназываемыйsmart fuzzing).

НаследникAdobeAcrobatReader

Evince — весьмараспространенныйпросмотрщикPDF-документов. Такжеподдерживаеттакиеформаты, какPostScript, TIFF, DVI, DjVu. Он являетсястандартнымкомпонентомрабочейсредыGNOME. Зайдя насайтCommon Vulnerabilities and Exposures, можноувидеть, чтодля

Evince открытодевятьуязвимостей, причемчетыреизних— достаточно новыеидатируютсяиюлем2010 года. Однаизэтихуязвимостей(CVE- 2010-2640) былапродемонстрированаДжономЛаримером, имжебыл описанпроцесссозданияэксплойтаподнее, которыйисполнялпроизвольныйкодвсистеме. Вданномслучаебылапродемонстрирована возможность«отпирания» залоченнойскринсейверомсистемыUbuntu 10.10 послепростоговтыканияфлешки(безведомапользователяи системыисполнялсянаходившийсянафлешкепростойскриптkill.sh с командой«killall gnome-screensaver»). Самауязвимостьзаключается внеправильнойобработкешрифтоввDVI-файлах. Вэтихфайлахмогут подключатьсявнешниешрифты, путьдокоторыхзадаетсявабсолютном виде(/media/NNN). Вообщеговоря, этауязвимостьникоимобразомне связанасфлешкамииможетиспользоватьсясамапосебе, простодурнаяпривычкаNautilus открыватьокнасновымиподмонтированными системамипришласьоченькстати.

Nautilusподмикроскопом

GNOME Nautilus — файловыйменеджер, которыйиспользуетсяпоумолчаниювдистрибутивахUbuntu, атакжевсредерабочегостолаGNOME. Онподдерживаетбольшинствоспецификацийfreedesktop.org иавто- матическимонтируетизвестныеемуфайловыесистемынаUSB-дисках поумолчанию. Чтобыполучатьинформациюоновыхподключенных съемныхнакопителях, Nautilus используетGVFS — виртуальнуюфайловуюсистему, котораядаетвозможностьмонтироватьразделыбезрутовыхпривилегий. Смонтированныйразделнаходитсяпопути/media/ NNN, гдеNNN — названиераздела. ТакжеNautilus автоматически открываетокноссодержимымсмонтированногоразделаигенериру-

етэскизыдлякаждогофайла, находящегосявкорневойдиректории раздела. Причемэтопроисходитдажеприработающемскринсейвере изаблокированнойсистеме! Nautilus умеетгенерироватьэскизыдля изображений, видеофайлов, текстовыхдокументовинекоторыхдругих файлов. ИконкидляизображенийгенерируютсяспомощьюстандартнойгномьейбиблиотекиGdkPixBuf, котораявсвоейработевызывает функциииздругихбиблиотекдляразличныхизображений, такихкак libpng, libtiff, libjpeg. Вовсехтрехбиблиотекахсуществуютобщеизвестныеуязвимости. Вначале2011 годабылаопубликованауязвимостьв библиотекеlibpng версии< 1.5.0 (CVE-2011-0408), котораяприсутствуетв функцияхpng_do_expand_palette() иpng_do_rgb_to_gray(). Ихреали-

зациюможнонайтивисходномфайлеpngrtran.c. Спомощьюспеци- альносформированныхPNG-, MNG- илиJNG-файловможноаварийно завершитьработуиспользующегоэтубиблиотекуприложенияипри некоторыхусловияхвыполнитьпроизвольныйкоднацелевойсистеме, чтоибылопродемонстрированоДжономЛаримеромнаконференции ShmooCon. Ксожалению, PoC-эксплойтпоканепредставленширокой общественности, затодавнодоступензакрывающийэтотбагапдейт библиотекидоверсии1.5.1. Летом2010 годабылообнаруженопереполнениебуферавбиблиотекеLibTIFF 3.x, котороеприводитквыпол- нениюпроизвольногокодаприпопыткеобработкиTIFF-изображения соспециальнооформленнымблокомтэговSubjectDistance. Проблема устраненавверсии3.9.4. ВноябрепрошлогогодабыланайденауязвимостьвбиблиотекедлярендерингашрифтовFreeType версии< 2.4.3, позволяющаявыполнитьпроизвольныйкодвсистемеприобработке специальносформированногошрифтаTrueType GX. Багввидепереполнениябуферасуществовалвфункцииft_var_readpackedpoints().

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

Дляформированияэскизовдругихфайловиспользуютсясторонние утилиты:

evince-thumbnailer — длядокументовpdf;

totem-video-thumbnailer — длявидеоиаудиофайлов;

gnome-thumbnail-font — дляфайловсошрифтами.

Увсехэтихутилитсхожийсинтаксис— например, вызовevincethumbnailer выглядиттак:

$ evince-thumbnailer -s 100 /home/user/doc.pdf \

/home/user/thumb.png

Здесьаргумент'-s' задаетразмерминиатюрывпикселяхпогоризонтали, следующийпараметр— исходныйPDF-документ, последний параметр— файлсполучившейсяминиатюрой. ТакимобразомNautilus запускаетсоответствующуюутилитудлякаждогофайлавпросматри-

104

XÀÊÅÐ 05 /148/ 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отключаем создание эскизов при просмотре содержимого файловой системы

ваемойдиректории. Посмотретьсписокиспользуемыхпостроителей эскизовиассоциированныхснимитиповфайловможнотак:

$ gconftool -R /desktop/gnome/thumbnailers

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

AppArmor вUbuntu 10.10, срединезащищенных— totem-video- thumbnailer иgnome-thumbnail-font. Будемнадеяться, вбудущих релизахUbuntu этоисправят. Темнеменее, вышеописанныеутилиты раноилипозднопопадутподразносхакеров, что, судяпопоследним событиям, уженачинается. НовтойжеUbuntu существуетмножество встроенныхсредствзащиты, призванныхобезопаситьпользователейот всехнапастей. Посмотрим, везделионисмогутпомочь.

Обходвстроенных средствзащиты

ДистрибутивUbuntu поправупризнаноднимизсамыхзащищенных: тут тебеиAppArmor, иASLR, иPIE, ииспользованиеNX-бита. Последний ужесчитаетсянеэффективнымввидупоявлениятакихтехникатак, как возвратвбиблиотеку(ret2lib) ивозвратно-ориентированноепрограм- мирование(ROP). Всвоемвыступлениинапоследнейконференции ShmooCon 2011 ДжонЛаримерпоказалслабостимеханизмаASLR/PIE в 32-битномLinux. Онпроанализироваладреса, покоторымзагружается библиотекаlibc (ноэтосправедливоидлялюбойдругой), ипришелквыводу, чтовозможновсегооколо3 000 вариантов, авопределенныхусловиях— ещеменьше. Причемвероятностинахождениябиблиотекипо одномуизэтихадресовнеравны, графикраспределениявероятностей можешьпосмотретьнакартинке(погоризонтальнойшкалеразместилисьадреса, аповертикальной— количествопопаданийвконкретный адрес). Такимобразом, можнопростоподобратьадреснужнойбиблиотеки— например, спомощьюсозданиямножестваpdf-документов, эксплуатирующихбагвevince-thumbnailer. Этостановитсявозможным, таккакNautilus запускаетдлякаждогофайлаотдельныйпроцессevincethumbnailer. Другойинтересныйиужепочтистандартныймеханизм защиты— AppArmor — насамомделезащищаетлишьнастолько, насколькоспособныегопрофили, расположенныев/etc/apparmor.d.

Например, вUbuntu 10.10 профильдляevince-thumbnailer позволяет записьв~/.config/autostart — место, котороеможетбытьиспользовано вирусописателямидляавтоматическойзагрузкиихтворений(илидаже произвольныхскриптов) привходепользователявсистему. ОтнекоторыхвещейAppArmor неспособензащититьвпринципе, поскольку

XÀÊÅÐ 05 /148/ 2011

Создание эскизов в Nautilus включено по умолчанию

такаязащитаможетнарушитьстабильностьработысистемы:

вызовыбиблиотекиX11 (можетбытьнарушендоступксети);

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

Принимаеммеры

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

1.Своевременноставьобновлениясистемы. ВLinux патчивыходят гораздооперативней, чемвWindows, гдепубличныебагимогутсуществоватьмесяцами. Этимтыобезопасишьсебяхотябыотизвестных уязвимостей.

2.Отключиавтомонтированиесъемныхнакопителейили(болеепростой вариант) открытиеокнаNautilus приавтомонтировании. Дляэтогов

Nautilus необходимозайтивменю«Edit -> Preferences -> Media» иснять галкусопции«Browse media when inserted».

3.Отключигенерациюэскизоввсвоемфайловомменеджере. Этоне обязательнодолженбытьNautilus, всеграфическиефайловыеменеджерыиспользуютдляэтогосходныекомпоненты. ВNautilus создание эскизовотключаетсявменю«Edit ÆPreferences ÆPreview».

4.ИспользуйAppArmor срасширеннымнаборомпрофилей, которые можнонайтивинтернете. Особоевниманиеследуетуделятьвсяким проприетарнымприложениямтипаSkype, посколькупатчиктакимприложениямобычновыходятнетакбыстро, какхотелосьбы.

5.ПоставьпатчкядруPaX, которыйнепозволяеткодуисполнятьсяв стеке, атакженедопускаетвозможностизаписивобластькодапрограммы— такимобразомпредотвращаетсяэксплуатацияуязвимостей переполнениябуфера. КтомужеPaX увеличиваетколичествобитэнтропиидляASLR, делаяпереборадресовзагрузкибиблиотекпрактически невозможным.

6.Используй64-битноеядро, внемASLR лишенслабостей, описанных выше. Крометого, переходна64 разрядадасттвоейсистемеприрост производительности, вовсехсовременныхпроцессорахподдержка наборакомандx86-64 имеется.

7.СосторожностьюиспользуйдистрибутивUbuntu (алучшевообще

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

Заключение

Каквидишь, наделеLinux оказалсянетакимбезопасным, каконемпривыклидумать, особенноэтокасаетсянастольныхиориентированных напользователядистрибутивовтипаUbuntu. Другоедело, чтоимипока неособоинтересуютсявирусописатели: извлечьматериальнуювыгоду достаточнозатруднительноиз-занебольшогораспространенияLinux посравнениюсWindows. z

105

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

w Click

to

 

 

 

 

 

 

CODING

 

 

 

 

 

 

 

 

Александр Эккерт (stannic.man@gmail.com)

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.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

 

 

 

 

Введение

Стандартная консоль Windows (да-да, та самая, которая появляется, скажем, при вызове cmd.exe, вечный объект издевательств линуксоидов) — казалось бы, что может быть скучнее? Но поспешу тебя уверить: консоль в Windows — крайне занимательная и интересная штука, покопаться в ее внутренностях будет не лишним. Определимся сразу (а то некоторые могут и не понять, о чем речь)

— нас в данной статье будет интересовать не доступ к MS-DOS или хитрости командной строки в Windows. Речь пойдет о том, как вообще существует то самое черное окно.

Консоль — целиком и полностью детище CSRSS, а ][ уже неоднократно писал об этой хитрой подсистеме Windows.

Некоторым читателям может показаться, что все это хоть и по-

знавательно, но довольно скучно с точки зрения хака. Однако советую дочитать статью до конца, там определенно есть над чем задуматься.

Взаимодействиемежду процессами

ОС Windows предоставляет разработчику богатый набор инструментов для обеспечения взаимодействия между процессами

— это клавиатура, файлы, пайпы (именованные каналы), разделяемая память, LPC/RPC, COM, сокеты и еще кое-что. Все они более-менее хорошо документированы, останавливаться на них смысла нет (для общего развития — ru.wikipedia.org/wiki/Межпроцессное_взаимодействие). Тем не менее, мало кто задумывался,

106

XÀÊÅÐ 05 /148/ 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

 

 

 

 

что консоль обладает таким волшебным свойством,

 

 

как обеспечение взаимодействия между процесса-

 

 

ми. И это свойство досталось консоли от подсистемы

 

 

CSRSS.

 

 

Как именно консоль может оказаться в буфере между

 

 

двумя процессами? Оказывается, очень легко. Напри-

 

 

мер, некая программа создает новую консоль вызовом

 

 

API-функции AllocConsole. А вторая программа (читай

 

 

— процесс) вызывает AttachConsole и таким образом

 

 

присоединяется к «текстовому интерфейсу» консоли.

 

 

Что получается: два объекта-процесса владеют тре-

 

 

тьим объектом, принадлежащим внешнему процессу

 

 

csrss.exe. Далее, получив доступ к консоли, первые

 

 

два «посторонних» процесса могут легко менять пара-

 

 

метры консоли — например, позицию курсора, размер

 

 

окна консоли или его (окна) название. Все это проде-

 

 

лывается вызовом хорошо документированных функ-

 

 

ций SetConsoleCursorInfo, SetConsoleCursorPosition,

 

 

SetConsoleTitle (или их Get-эквивалентами).

 

 

Из вышесказанного наблюдательный читатель может

Консоль может быть даже такой

 

сделать вывод, что через csrss.exe можно устроить

 

обмен информацией для двух или нескольких про-

 

 

цессов. Каким образом? Да через титл (название окна)

AllocConsole. Вызовэтойфункциифорвардомприво-

 

консоли — он за один раз может вместить 65535 байт,

дитквызовуwinsrv!SrvAllocConsole. Этойфункции,

 

приэтомпотенциальнаяскоростьпередачиданныхв

всвоюочередь, передаетсявкачествепараметров

HTTP://WWW

такомслучаебудетвесьмаивесьмавысока. Правда,

двауказателянафункцииkernel32!CtrlRoutine и

 

приэтомпридетсяиметьввиду, чтоединственныйтип

kernel32!PropRoutine (послечегоследуетвызов

links

данных, которыйподходитдляобменаинформацией

CsrClientCallServer свнутреннимкодомоперации

междудвумяпроцессамипосредствомCSRSS — это

0x20224). Апотомпроисходитсамоеинтересное—

Неплохо написано о

текстовыестроки. Поэтомуразработчикупридетсяис-

приполучениикакого-либоCTRL-сигналаCSRSS

межпроцессном взаи-

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

создаетновый(!) потоквконтекстеприаттаченного

модействии в MSDN:

такимобразомбинарныеданные.

кконсолипроцесса: winsrv!ProcessCtrlEvents Æ

http://goo.gl/bTwhz.

CTRL+C—знакомая

winsrv!CreateCtrlThread Æwinsrv!InternalCreateCallba

И вообще, почаще за-

ckThread Ækernel32!CreateRemoteThread.

глядывай в MSDN!

ситуация?

Новыйпотокбудетиметьточкойвходатотсамыйуказа-

 

Тыникогданезадумывался, какконсольреагирует

тельнаCtrlRoutine.

 

накомбинациюCTRL+C, котораяотменяеттекущее

Хакерскиевкусности

 

исполнениепотока? Вообщеконсольреагируетна

INFO

пятьCTRL+… событий. Первое— этоCTRL_C_EVENT,

Описанныймеханизм, когдаCSRSS рулитобработчи-

 

сигнализирующееонажатииклавишCTRL+C. Второе—

камиконсоли, можноиспользоватьвоченьпопулярной

 

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

средиразработчиковмалваризадаче— каксоздать,

 

ми. Третье— CTRL_CLOSE_EVENT, сообщаетвсемпро-

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

info

цессам, совместноиспользующимконсоль, чтолавочка

дляпроактивокилиаверов. Вчестныхпрограммах

Хочешь стать

прикрылась. CTRL_LOGOFF_EVENT посылаетсявсем

длясозданияновыхпотоковобычноиспользуют

сильным системным

процессам, еслипользовательвыходитизсистемы. Ну

известныефункцииCreateThread(Ex). Ноеслиты

кодером? Без умения

инаконец, CTRL_SHUTDOWN_EVENT, котороеговорит,

хочешьскрытьэтотфакт, можнопоступитьследующим

пользоваться IDA

чтосистемавыключается. Первыедвасигналамогут

образом: создаемновуюконсоль, регистрируемодин

Pro и WinDbg твои

бытьполученыпринажатииизвестныхклавишнакла-

илинесколькообработчиковсигналов, послечегопро-

способности будут

виатуреилипрограммнымспособом— путемвызова

граммногенерируемсигналыCtrl+C илиCtrl+Break,

оцениваться в два

API GenerateConsoleCtrlEvent.

чтобысоздатьновыйпоток. БлагодаряAPI-интерфейсу

раза дешевле!

Крайнеинтересенмеханизм, которыйобеспечивает

любаяпрограммалегкоможетрегистрироватьили

 

обработкувсехэтихCTRL-событий, ноотзнанияосу-

удалятьобработчикисигналов. Такимобразомлюбой

 

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

процессполучаетнедокументированнуювозможность

 

невсостояниикак-тоэтисамыесигналыобрабаты-

подсистемыCSRSS, равнуюпосилепрямомувызову

 

вать. Итутнапомощьприходитфункцияkernel32.

CreateThread(Ex).

 

dll!SetConsoleCtrlHandler, вызовомкоторойможно

Схематичносозданиепотокаописаннымметодомбудет

 

установитьобработчикCTRL-сигналов. Нотамневсе

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

 

такпросто.

 

 

Дляполногопрояснениякартинынамнужнопонять

AllocConsole();

 

следующее. Вконтекстекакогопотокапроисходит

SetConsoleCtrlHandler( threadHandler1,TRUE );

 

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

SetConsoleCtrlHandler( threadHandler2,TRUE );

 

Возможно, этопервоначальныйпотокпроцесса, или

GenerateConsoleCtrlEvent( CTRL_C_EVENT,

 

вновьсозданный, иливообщепоявившийсяфигзнает

GetCurrentProcessId() );

 

откуда? Длятого, чтобыответитьнавозникающие

// Здесь будет выполнен код

 

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

threadHandler2(CTRL_C_EVENT)

 

консоли, ипосмотрим, чтопроисходитпривызове

// Здесь будет выполнен код

 

XÀÊÅÐ 05 /148/ 2011

107

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w Click

to

 

 

 

 

CODING

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

threadHandler1(CTRL_C_EVENT) SetConsoleCtrlHandler( threadHandler1, FALSE ); SetConsoleCtrlHandler( threadHandler3, TRUE ); GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT,

GetCurrentProcessId());

//Здесь будет выполнен код

//threadHandler3(CTRL_BREAK_EVENT)

//Здесь будет выполнен код

//threadHandler2(CTRL_BREAK_EVENT) FreeConsole();

Здорово, правда? Иниодинавернеузнаетосозданииновыхпотоков.

Ноэтотольконачало:).

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

тернативойCreateRemoteThread!

Смотрим, какэтоделается:

запускаем процесс А;

запускаем процесс Б;

процесс А вызывает AllocConsole();

процесс Б вызывает AttachConsole();

процесс Б устанавливает обработчик событий

SetConsoleCtrlHandler( threadHandler, TRUE );

процесс А генерирует событие

GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, GetCurrentProcessId());

в адресном пространстве процесса «Б» в новом потоке запускается threadHandler.

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

Внимательныйчитательможетвспомнить, чтопривызове основнойфункциисозданияконсолиwinsrv!SrvAllocConsole ей передаютсядвауказателянафункцииCtrlRoutine иPropRoutine. СCtrlRoutine мывродебыразобрались, нопричемздесь PropRoutine? Всепросто— PropRoutine отвечаетзаобработку свойствокна. Когдаюзерпытаетсяизменитьсвойстваокнаконсоли, онвыбираетсоответствующееменю, устанавливаетвыбранную опциюиподтверждаетвыбранныеизменения. Вродебы, ничего сложного, однаковнедрахсистемысноваразворачиваютсяочень занимательныесобытия.

Втотсамыймомент, когдапользователькликаетнаменю«Свойства» консольногоокна, однаизфункцийуправленияокна(а именноwinsrv!ConsoleWindowProc) получаетоконноесообщениес такимипараметрами:

uMsg = WM_SYSCOMMAND

wParam = 0xFFF7

lParam = undefined

Чтопроисходитдальше? Запускаетсямеханизмпроецирования файлавпамять: вызываютсяфункцииNtCreateSection,

108

 

 

 

 

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

 

 

 

 

затемNtMapViewOfSection, затемпроекциязаполняется текущимиустановкамиокнаконсоли. Далееследуетвызов

NtUnmapViewOfSection, послечеговызываетсяNtDuplicateObject,

которыйсоздаетдубликатхэндласекции(вконтексте процессавладельцаконсоли!) илишьзатемвызывается

CreateRemoteThread спереданнымипараметрамиустановленной PropRoutine идубликатомхэндласекции.

Замечу, чтоPropertiesDlgShow неожидаетокончанияработыпотока, онапосредствомwinsrv!ConsoleWindowProc простосоздает потокивозвращаетуправлениядиспетчеруоконныхсообщений. Удивительныйфакт— этосовсемнеозначает, чтообновленные свойстваокнаустанавливаютсякаким-тодругимспособом, нежели простофункциейPropertiesDlgShow.

Чтожепроисходитнасамомделе? Итак, смотрим: самапосебе функциянеделаеткаких-либозанимательныхвещей, затоона подгружаетоднубиблиотекувадресноепространствопроцесса, приэтомзагрузкаDLL проходиттривиально, вызовом LoadLibraryW, котораяне(!) проверяет, чтоименноонагрузит, а лишьподгружаетбиблиотекупозахардкоденному(нуисловечко тыизобрел! – прим. Лозовского) пути. Загружаемаябиблиотека console.dll иосуществляетвсетеоперации, которыемывидимна экранепривызовеменю«Настройки» консоли.

Мастер-классдляначинающих

Такимобразомполучается, чтоправильнореализовавсвоюфункциювместозахардкоденнойkernel32!PropRoutine, мыслегкостью сможемреализоватьфункционалAPI-функцииCreateThread(Ex). Этоможносделатьпутемперехватаимодификациифункций

AllocConsole/AttachConsole илиже, длясовсембезбашенных,

путемсобственнойреализациифункцииAllocConsole().

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

SendMessage (hConsole, WM_SYSCOMMAND, 0xFFF7, 0)

ЗдесьhConsole являетсяобычнымHWND, полученнымвызовом

GetConsoleHandle().

Что получим в итоге? Чтобы создать новый поток в случае вызова kernel32!CtrlRoutine путем множества сложных телодвижений, можно просто подсуетиться, подменив kernel32!PropRoutine своей, не совсем честной функцией. Это, как правило, приведет

ксозданию нового, «невидимого» для глаз аверов и проактивок потока.

Инапоследокпоговоримовышеупомянутойconsole.dll, аточнее— отом, какееможноиспользоватьвнашихгрязныхцелях. В Windows XP загрузкаconsole.dll осуществляласьсжуткойошибкой

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

кэтойбиблиотеке. Сучетомтогоалгоритма, которыйдосихпор используетсявWindows дляпоискабиблиотек, опять-такисуще- ствуетхорошаявозможностьееподмены. Передтемкакзагрузить console.dll из\system32\, еесначалабудутискатьвпапкеустановкипрограммы. Ноиэтоещеневсе. Весьописанныймеханизм можнозаюзатьдлясокрытияинжектасвоегокодавудаленном процессе! Ноужэтояоставлютебевкачествеинформациикразмышлению, темболее, чтовсенеобходимыедляэтогоингредиенты встатьепоказаны.

Заключение

Казалосьбы— чтоможетбытьскучнееконсоли? Ноитам, еслихорошенькопокопатьсядебаггером, найдетсякучаинтересного— тем более, чтовсенайденноеможноиспользоватьдлясвоихгрязных делишек! Толиещебудет... Читайсвойлюбимыйжурнал][ — обещаюновыеизахватывающиетемы! Удачногокомпилирования, ида пребудетстобойСила! z

XÀÊÅÐ 05 /148/ 2011

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