2. Bináris protokollok www.balabit.hu
• RDP, VNC, X11, IP, TCP, …
Vagy saját fájlformátum
• Saját nyelvtanjuk van
• Egyszerűbb feldolgozni, mint a szövegeseket
Ha tudod, hogyan kell… :)
GUARDING YOUR BUSINESS 2
3. Probléma: repetitív kód www.balabit.hu
• Parserek hasonlóan néznek ki
Olvass be 2 byte-ot a 'len' mezőbe
Olvass be 'len' byte-ot a 'data' mezőbe
stb.
• Akárcsak az író, loggoló, stb. függvények
GUARDING YOUR BUSINESS 3
4. Probléma: hiba-intolerancia www.balabit.hu
• Minimális tévedés a teljes feldolgozást elronthatja
• A hibák később jönnek elő
• Irreleváns problémák
• Nehéz debugolhatóság
GUARDING YOUR BUSINESS 4
5. Probléma: gyenge formátum-leírás www.balabit.hu
• Bináris protokollok formátumok dokumentációja
sokszor ritkás
• Az elemző kódok bonyolult felépítésűek
• Nem mindig elérhető
GUARDING YOUR BUSINESS 5
6. Megoldás? www.balabit.hu
• Generáljuk a kódot a struktúrák leírása alapján.
Sőt, akár a dokumentációt is!
• Mi kell ehhez?
Adatcsomagok felépítése
Byte-szintű felolvasó/író/stb.
GUARDING YOUR BUSINESS 6
7. Hogyan? www.balabit.hu
• Definiáljuk az adatok
struktúráját
• Adjunk meg a
feldolgozáshoz
metainformációkat (pl.
endianness)
• Generált kód egységes
→ könnyebben
tesztelhető
GUARDING YOUR BUSINESS 7
8. Megoldás www.balabit.hu
• ALP (codega része) fel tudja dolgozni ezeket a
DSL-eket
• Kapott AST validálása (ID duplikáció, típusosság,
stb.)
• Codega-val (akár több nyelvre) tudjuk generálni a
kódot
• Megfelelő absztrakciókkal a byte-szintű felolvasó
“bármi lehet”
• Alacsony teljesítmény overhead
GUARDING YOUR BUSINESS 8
9. Hol használjuk? www.balabit.hu
• Kliens/szerver app.okban
• Proxy egy protokollra
• PCAP adatok elemzése
• Protokol auditálás
GUARDING YOUR BUSINESS 9
10. Protokol-tervezés www.balabit.hu
• Felolvasó/író egyszerű, csak a struktúrák kezelését
kell megoldani!
• Könnyebbé teszi a bináris protokollok tervezését
GUARDING YOUR BUSINESS 10
11. Hogy áll a megvalósítás? www.balabit.hu
• Részlegesen kész
• Terv szerint elérhető lesz OpenSource alapokon
Példa bináris kliens-szerver alkalmazással
GUARDING YOUR BUSINESS 11
Hinweis der Redaktion
2. pont: Említés, hogy ezeknél nem a bonyolultság a fő probléma 3. pont: Szövegesekkel a problémalehetőségek megemlítése
1. pont: határozott említés arról, hogy mennyire is unalmas kézzel protokolt készíteni az unalmas itt nem egy kibúvó a munka alól, hanem az ember kevésbé megbízható, ha a munka repetitív (hibalehetőségek esetén egyéni hiba vs. szériális hiba) 2. pont: megadni a “sémát” az ilyen függvények specifikálására
1. pont: említés az előző pontra példa: - 4 byte helyett két bájt beolvasása a csomag elején → rossz csomag - little-endian olvasás BE helyett → valótlan csomaghossz (4 helyett -2mill.) 2. pont: hibák nem mindig a felolvasásnál jönnek elő, hanem pl. a feldolgozásnál RLE kódolt képek esetén érdekes eredmények 3. pont: Nem elég a hiba helyét megtalálni, a hibás input visszakeresése sem triviális
2. pont: generátor hiánya miatt a kód egyszerűsítéséért hülye megoldások gyorsítási absztrakciók ált.: RDP doksija sokáig propietary volt, kiadva is túl bonyolult, nagyon hosszú, stb.
1. pont: doksi generálása a leíróban elhelyezett doc-string-ek alapján, kb. mint a Python-ban