книги хакеры / журнал хакер / 148_Optimized
.pdf
|
|
|
|
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