SlideShare ist ein Scribd-Unternehmen logo
1 von 11
 www.balabit.hu




Protokoll feldolgozás generált kóddal
                          – Hercinger Viktor




 GUARDING YOUR BUSINESS                              1
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
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
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Ähnlich wie Protokoll feldolgozás generált kóddal (6)

Syslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknekSyslog-NG (nem csak) fejlesztőknek
Syslog-NG (nem csak) fejlesztőknek
 
Ci
CiCi
Ci
 
Linux alapok
Linux alapokLinux alapok
Linux alapok
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
 
Forráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analíziseForráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analízise
 
A Redis lehetőségei
A Redis lehetőségeiA Redis lehetőségei
A Redis lehetőségei
 

Protokoll feldolgozás generált kóddal

  • 1.  www.balabit.hu Protokoll feldolgozás generált kóddal – Hercinger Viktor GUARDING YOUR BUSINESS 1
  • 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

  1. 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
  2. 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
  3. 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
  4. 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.
  5. 1. pont: doksi generálása a leíróban elhelyezett doc-string-ek alapján, kb. mint a Python-ban