книги хакеры / журнал хакер / 124_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
||
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
P |
|
|
|
|
|
NOW! |
o |
||
|
Click |
|
BUY |
>>m |
|||||
w |
to |
|
|
|
|||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
o |
|
w |
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
||
|
|
|
|
-xcha |
|
|
|
а.
unixoid
б. в.
|
50 |
|
|
|
|
|
|
|
50 |
|
|
|
|
|
|
|
|
94 |
|
|
RAM |
Flash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
40 |
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
64 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
30 |
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
20 |
|
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
32 |
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
AXFS |
|
JFFS2 |
|
CRAMFS SQUASHFS |
|
AXFS |
|
SQUASHFS XIP AXFS XIP CRAMFS |
|
JFFS2 |
|
SQUASHFS |
AXFS |
|
|
|
|
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 |
|
|
|
|
БЕНЧМАРКИAXFS: СКОРОСТЬЗАПУСКАПРИЛОЖЕНИЯ(А), РАЗМЕРОБРАЗАФС(Б), ОБЩИЙУРОВЕНЬПОТРЕБЛЕНИЯПАМЯТИ(СООТНОШЕНИЕRAM/FLASH) (В)
ЕВГЕНИЙ «J1M» ЗОБНИН
/ ZOBNIN@GMAIL.COM/
Обреченные на успех
Обзор самых интересных проектов, представленных на UNIX-конференциях
Ежегодно по всему миру проходит множество конференций, так или иначе связанных с UNIX и FOSS. Участие IT-специалиста в программе одной из них
— отличный способ выделиться, продемонстрировать неординарность своего мышления и умение излагать мысли. Мы ознакомимся с пятью наиболее креативными проектами, представленными на конференциях USENIX и Linux Symposium за последние два года.
>> unixoid
KORSET—HIDSБЕЗЛОЖНЫХСРАБАТЫВАНИЙ
ФеноменальнаяпопулярностьнебезопасныхязыковпрограммированияC иC++ оказаласьфатальнойспоявлениеминтернетаисетевых технологий. Проблемесрывастекаужесвыше25 лет, ноэффективного еерешениядосихпорнепридумано. Производителижелезаснабжают процессорыNX-битом, который, какоказалось, способеностановить толькоучителейинформатики. Воперационныесистемывстраиваютразнообразныерандомизаторыадресов, — онихотьиусложняют процессвнедренияshell-кода, нотакжелегкообходятся. Создатели
компиляторовнеотстаютипридумываютпрополисыипрочиерасширения. Идеалистыпостояннокричатотипо-безопасныхязыкахивиртуаль- ныхмашинах. Каждыйгодисследователипредставляютновыесистемы защиты, ноявногопрогрессанетикажется, чтоэффективноерешениене будетнайденоникогда.
Нескольковсторонеотвсейэтойкутерьмыстоятразработчикихостовых системобнаружениявторжений(HIDS). Онипредлагаютискатьлекарство неотсамойболезни, аотеесимптомов: разужотсрывастекаисмежных методовпроникновениязащититьсянельзя, топочемубынепресечьих последствия, запретивпрограммеделатьто, чегоонаделатьнедолжна.
СуществуетдватипаHIDS: обучаемыеиоснованныенаправилах. Слабость первых в необходимости предварительного «прогона» приложения, — обучаемойHIDS нужновремянаанализтого, чтообычно делаетприложение, чтобыужепотомнаосновеэтихданныхограничить софтинуввозможностях. ВтожевремятакаяHIDS простотехническине способнаузнатьобовсем, чтоможетприложение, идовольночастодает ложныесрабатывания.
HIDS, основанныенаправилах, действуютпо-другому. Онипредлагают пользователюсамомусоставитьсписоктого, чтодозволеноприложению (какиесистемныевызовыразрешены, ккакимфайламиустройствамоно можетобращатьсяит.д.), авсеостальныедействиябудутпресекаться.
Недостаток: чтобыточносоставитьправила, нужносерьезнопопотеть (попробуйкак-нибудьнадосугенаписатьсписокправилSELinux для Apache ивсехегомодулейснуля).
РазработчикиконцептуальнойHIDS Korset (www.korset.org), анонсированнойнаLinux Symposium 2008, предложилиобъединитьобатипа системобнаружениявторженийдлясозданиясверхнадежнойHIDS, работающейбезвмешательствапользователяинетребующейобучения илинаписанияправил. Korset базируетсянаидееControl Flow Graph
080 |
XÀÊÅÐ 04 /124/ 09 |
|
|
|
|
|
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 |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ПРИНЦИПРАБОТЫKORSET
User Space |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
System Calls |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
example c |
|
|
|
|
|
|
|
|
example |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i=read(fd, buf, n); |
|
|
|
|
gcc, ld, ... |
|
|
|
|
ELF |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
if (i==n) { |
|
|
|
|
|
|
|
|
|
executable |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
write(fd, buf, n); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
close(fd); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Korset Static Analyzer
ГРАФИЧЕСКОЕПРЕДСТАВЛЕНИЕ ГРАФАФУНКЦИИFWRITE()
|
|
|
|
|
|
Kernel Space |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Korset |
|
|
|
|
Kernel |
|
|
|
Monitoring |
|
|
|
|
System Call |
|
|
|
|
|
|
|
|
|||
|
Agent |
|
|
|
|
Handler |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
read |
write |
close |
example. korset
1)syscall90
2)fwrite()
3)ryscall140
4)syscall91
5)syscall125
6)syscall+5
7)syscall4
8)syscall197
9)syscall10S
10)syscall54
АДРЕСНОЕПРОСТРАНСТВОПРОЦЕССА, РАБОТАЮЩЕГОПОДКОНТРОЛЕМVX32
Host Operating System
Kernel Address Space
(x86-32 or x86-64)
Host Application
Address Space
(x86-32 or x86-64)
(quest address space expands as heap grows)
Flat Model
Code, Data quest heap Segments
quest code, data, bss
default quest stack
Guest Address Space
(always x86-32)
quest execution state, code tragment cache
vx32 sandbox library
Host Application code, data, bss, heap (x86-32 or x86-64)
0
1 |
8 |
10 |
|
||
|
6 |
9 |
|
|
|
3 |
7 |
|
|
|
|
|
5 |
|
2
4
ДИСКОВЫЙФОРМАТAXFS
SUPERBLOCK
Guest
Data Region Descriptor
Segment
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Region Descriptor |
|
||||
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Region Descriptor |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|||||
|
Guest |
|
|
|
|
|
|
|
|
|
|
|
|
|
Control |
|
|
Region Descriptor |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||||
|
Segment |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
Region - file names
Region - node offsets
Region - compressed nodes
Region - xip nodes
XÀÊÅÐ 04 /124/ 09 |
081 |
|