Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第一フラグメント便乗攻撃 (IP フラグメンテーションアタック) / aikora attack

koyane
September 07, 2019

第一フラグメント便乗攻撃 (IP フラグメンテーションアタック) / aikora attack

koyane

September 07, 2019
Tweet

More Decks by koyane

Other Decks in Technology

Transcript

  1. ୈҰϑϥάϝϯτศ৐߈ܸ w*1ϑϥάϝϯςʔγϣϯͷϦΞηϯϒϧॲཧΛѱ༻ͨ͠߈ܸ w൪໨Ҏ߱ͷϑϥάϝϯτʹؚ·ΕΔԠ౴Λॻ͖׵ِ͑ͯ૷Ԡ౴Λੜ੒ w")FS[CFSH )4IVMNBO͕೥ʹࢦఠ ‣ 'SBHNFOUBUJPO$POTJEFSFE1PJTPOPVT<> 4 <>IUUQTBSYJWPSHBCT <>IUUQTVDTCJVBDJMdIFS[CFBTFDVSJUZGSBHQEG

    <>IUUQTXXXSFTFBSDIHBUFOFUQSPpMF"NJS@)FS[CFSHQVCMJDBUJPO@'SBHNFOUBUJPO@$POTJEFSFE@1PJTPOPVT@PS@0OFEPNBJOUPSVMFUIFNBMMPSHMJOLT CCBFECBGFC'SBHNFOUBUJPO$POTJEFSFE1PJTPOPVTPS0OFEPNBJOUPSVMFUIFNBMMPSHQEG
  2. Πϝʔδ 6 +————————————+ | DNS Header Section | +————————————+ |

    DNS Question Section | +————————————+ | DNS Answer Section | +————————————+ | DNS Authority Section | +————————————+ | DNS Additional Section | +————————————+ 正規の応答 +————————————+ | DNS Header Section | +————————————+ | DNS Question Section | +————————————+ | DNS Answer Section | +————————————+ | DNS Authority Section | +————————————+ | DNS Additional Section | +————————————+ 偽装した応答 第1フラグメント 第2フラグメント 別の内容に差し替え
  3. ͜Ε·ͰͷܦҢ w ೥")FS[CFSH )4IVMNBO͕߈ܸͷ֓ཁΛൃද w೥݄5)MBWBDFL͕*$.1UZQF DPEF EFTUVOSFBDI  GSBHOFFEFE Λ༻͍ͨ߈ܸྫΛൃද

    ‣ *1GSBHNFOUBUJPOBUUBDLPO%/4<> w೥݄.#SBOEUΒ͕ϑϥάϝϯτΞλοΫΛ༻͍ͯ%7ূ໌ ॻΛෆਖ਼ʹൃߦͤ͞Δख๏Λൃද ‣ %PNBJO7BMJEBUJPO 'PS.JU.3FTJMJFOU1,*<> 8 <>IUUQTSJQFSJQFOFUQSFTFOUBUJPOTJQGSBHBUUBDLQEG <>IUUQTQLJDBETJUGSBVOIPGFSEFNFEJBEPD$$4QEG
  4. ೥ͷಈ͖ w౻ݪ͕߈ܸͷରࡦʹ͍ͭͯ·ͱΊͨ *OUFSOFU%SBGUΛൃද<>  wଠా͕%/4Թઘ൪֎ฤͰൃද<>  wଠా͕৘ใॲཧֶձશࠃେձͰൃද<>  w/4%͕ϦϦʔε w%/40"3$

    ‣ ౻ݪ͕ൃද<> ‣ ϕϯμͱΦϖϨʔλ͕%/4qBHEBZʹ͍ͭͯ ύωϧσΟεΧογϣϯ<> w3*1&Ͱ%/4qBHEBZΛΞ φ΢ϯε< >  w,OPU%/4͕ϦϦʔε w1PXFS%/43FDVSTPS͕ϦϦʔε w౦͕ݖҖαʔόଆͷରࡦΛ·ͱΊͨϖʔ δΛެ։<>  w1PXFS%/4͕ϦϦʔε w(JU)VCͰ%/4qBHEBZͰਪ঑͢ ΔόοϑΝαΠζͷٞ࿦։࢝<> 9 <>IUUQTJOEJDPEOTPBSDOFUFWFOUDPOUSJCVUJPOT <>IUUQTSJQFSJQFOFUBSDIJWFTWJEFP <>IUUQTEOTqBHEBZOFU <>IUUQTHJTUHJUIVCDPNIEBJTFEGCBDFDFG <>IUUQTHJUIVCDPNEOTWJPMBUJPOTEOTqBHEBZJTTVFT <>IUUQTUPPMTJFUGPSHIUNMESBGUGVKJXBSBEOTPQGSBHNFOUBUUBDL <>IUUQXXXDPOWJWJBMOFKQEOTFYUSBBJLPSBQEG <>IUUQTJQTKJYTROJJBDKQFK BDUJPOSFQPTJUPSZ@VSJJUFN@JE <>IUUQTJOEJDPEOTPBSDOFUFWFOUDPOUSJCVUJPOT
  5. %0Ϗοτ w%0 %/44&$0, Ϗοτ ‣ 015ٖࣅ33ʹؚ·ΕΔ ‣ ΦϯͰ%/44&$ؔ࿈ϨίʔυΛཁٻ ‣ σϑΥϧτͰΦϯʹͳ͍ͬͯΔϑϧϦκϧό͕ଟ͍

    wॺ໊ݕূΛ͠ͳ͍৔߹%/44&$ؔ࿈Ϩίʔυ͸ෆཁ ‣ Φϑʹ͢Δ͜ͱͰϝοηʔδαΠζΛ࡟ݮͰ͖Δ 15
  6. %0Ϗοτͱ3'$ w6OCPVOEͷΑ͏ʹ%0ϏοτΛΦϑʹ͢ΔΦϓγϣϯ͕ଘࡏ͠ͳ͍࣮૷ ΋ଘࡏ wࠜڌ͸ ͓ͦΒ͘ 3'$TFDUJPO ‣ "The resolver side

    of a security-aware recursive name server MUST set the DO bit when sending requests, regardless of the state of the DO bit in the initiating request received by the name server side." 16
  7. 1.56%Πϝʔδ 19 MTU: 1454 MTU: 768 MTU: 1500 MTU: 1500

    ①1280バイトのパケットを送信 ②ICMP type3, code4メッセージ (Next-Hop MTU: 768 バイト) ③1280バイトのパケットを 768バイトで分割して送信
  8. 1.56࠮শ߈ܸΠϝʔδ 21 リゾルバ 権威サーバ 攻撃者 ①送信元をリゾルバとする ICMP echo リクエスト (1280

    バイト, DF ビットをセット) ②ICMP echo リプライ (1280バイト) ③送信元をリゾルバとする ICMP type3, code4 メッセージ  (MTU を偽装) ③のパケットを受け⼊れた場合 リゾリバとの通信は攻撃者が 設定したMTUに変更される
  9. ߈ܸखॱ 23 リゾルバ 権威サーバ 攻撃者 ①偽装した 第2フラグメントを送信 ②名前解決要求 ③⾮再帰問い合わせ ④第1フラグメントを送信

    ⑤第2フラグメントを送信 攻撃成功の場合、⑤は リアセンブルされない ①のパケットとIP-IDが⼀致 する場合は攻撃成功 (①と④がリアセンブル)
  10. %/4ͱ*1ϑϥάϝϯτ w6%1ϔομ΍%/4)FBEFSηΫγϣϯ͸࠷ॳͷϑϥάϝϯτʹؚ·ΕΔՄ ೳੑ͕ߴ͍ ‣ *1ϔομ   6%1ϔομ  

    %/4)FBEFSηΫγϣϯ  όΠτ w൪໨Ҏ߱ͷϑϥάϝϯτΛࠩ͠ସ͑ΔͨΊҎԼͷରࡦ͕ແޮ ‣ 6%1ιʔεϙʔτϥϯμϚΠθʔγϣϯ ‣ τϥϯβΫγϣϯ*%ϥϯμϚΠθʔγϣϯ wϦΞηϯϒϧ࣌ʹ͸*1ϔομɾ6%1ϔομͷ৘ใ͕ख͕͔Γ 24
  11. ϑϥάϝϯτࠩ͠ସ͑ͷ৚݅ w*1ϔομͷϑΟʔϧυ͕Ұக͢Δ͜ͱ ‣ TSD ETU*1ΞυϨε ‣ *1*EFOUJpDBUJPO *1*%  ‣

    ϑϥάϝϯτΦϑηοτ ‣ ϓϩτίϧφϯόʔ wϦΞηϯϒϧޙʹ6%1νΣοΫαϜɾαΠζ͕Ұக͢Δ͜ͱ w%/4ϝοηʔδͷ֤ηΫγϣϯͷϨίʔυ਺͕Ұக͢Δ͜ͱ 25
  12. ϑϥάϝϯτࠩ͠ସ͑ͷ৚݅ w*1ϔομͷϑΟʔϧυ͕Ұக͢Δ͜ͱ 㾎TSD ETU*1ΞυϨε ‣ *1*EFOUJpDBUJPO *1*%  ‣ ϑϥάϝϯτΦϑηοτ

    㾎ϓϩτίϧφϯόʔ wϦΞηϯϒϧޙʹ6%1νΣοΫαϜɾαΠζ͕Ұக͢Δ͜ͱ 㾎%/4ϝοηʔδͷ֤ηΫγϣϯͷϨίʔυ਺͕Ұக͢Δ͜ͱ 26
  13. 6%1νΣοΫαϜ w6%1ٙࣅϔομͱ6%1ϔομɾϖΠϩʔυ͔Βܭࢉ wόΠτͣͭՃࢉͯ͠ͷิ਺࿨ͷͷิ਺ΛٻΊΔ ‣ ح਺όΠτͷ৔߹͸ͰύσΟϯά 27 0 7 8 15

    16 23 24 31 +--------+--------+--------+--------+ | source address | +--------+--------+--------+--------+ | destination address | +--------+--------+--------+--------+ | zero |protocol| UDP length | +--------+--------+--------+--------+ UDP ٙࣅϔομ
  14. νΣοΫαϜܭࢉͷྫ 29 2 όΠτͣͭՃࢉͨ͠߹ܭ஋: 0x22F5F3 2 όΠτͣͭՃࢉͨ͠߹ܭ஋: 0x3F612 1 ͷิ਺࿨:

    0xF615 1 ͷิ਺࿨: 0xF615 ਖ਼نԠ౴ͷྫ ِ૷Ԡ౴ͷྫ νΣοΫαϜ: 0x09EA νΣοΫαϜ: 0x09EA
  15. ϑϥάϝϯτࠩ͠ସ͑ͷ৚݅ w*1ϔομͷϑΟʔϧυ͕Ұக͢Δ͜ͱ 㾎TSD ETU*1ΞυϨε ‣ *1*EFOUJpDBUJPO *1*%  ‣ ϑϥάϝϯτΦϑηοτ

    㾎ϓϩτίϧφϯόʔ 㾎ϦΞηϯϒϧޙʹ6%1νΣοΫαϜɾαΠζ͕Ұக͢Δ͜ͱ 㾎%/4ϝοηʔδͷ֤ηΫγϣϯͷϨίʔυ਺͕Ұக͢Δ͜ͱ 31
  16. ϑϥάϝϯτҐஔͷௐ੔ w1.56%ʹΑΓ౎߹ͷ͍͍ҐஔͰϑϥάϝϯτ ‣ Ϩίʔυ΍ηΫγϣϯͷڥքͳͲ w/FYU)PQ.56͸ *1ϔομ  ͷഒ਺ ϖΠϩʔυ Ͱઃఆ

    ‣ ྫ6%1ϔομ͔ΒόΠτͷҐஔͰϑϥάϝϯτ͍ͤͨ͞৔߹ɺ/FYU)PQ.56͸ όΠτʹઃఆ wROBNFͰ͞Βʹඍௐ੔ ‣ ࠷େΦΫςοτ wௐ੔ͨ͠ϑϥάϝϯτҐஔʹج͍ͮͯ*1ϔομͷϑϥάϝϯτΦϑηοτͱϑϥάΛઃఆ 32
  17. ϑϥάϝϯτࠩ͠ସ͑ͷ৚݅ w*1ϔομͷϑΟʔϧυ͕Ұக͢Δ͜ͱ 㾎TSD ETU*1ΞυϨε ‣ *1*EFOUJpDBUJPO *1*%  㾎ϑϥάϝϯτΦϑηοτ 㾎ϓϩτίϧφϯόʔ

    6%1  㾎ϦΞηϯϒϧޙʹ6%1νΣοΫαϜɾαΠζ͕Ұக͢Δ͜ͱ 㾎%/4ϝοηʔδͷ֤ηΫγϣϯͷϨίʔυ਺͕Ұக͢Δ͜ͱ 33
  18. ΞλοΫϕΫλͷྫ w൱ఆԠ౴ ‣ /4&$  334*(ϨίʔυΛஔ׵ wҕৡԠ౴ ‣ /4Ϩίʔυ΍""""" HMVF

    ϨίʔυΛஔ׵ wϫΠϧυΧʔυ͕ઃఆ͞Εͨκʔϯ ‣ /4Ϩίʔυ΍""""" HMVF ϨίʔυΛஔ׵ 40
  19. TJCMJOHυϝΠϯʹΑΔ߈ܸ w߈ܸऀ͕߈ܸ༻ͷυϝΠϯ໊Λ༻ҙ 49 $ dig +norec +nocookie cname.small-is-beautiful.jp @a.dns.jp (snip)

    ;; AUTHORITY SECTION: small-is-beautiful.jp. 86400 IN NS d01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS g01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS a01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS ns.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS c01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS e01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS f01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. small-is-beautiful.jp. 86400 IN NS nsa.dns.jp. small-is-beautiful.jp. 86400 IN NS b01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. ;; ADDITIONAL SECTION: ns.small-is-beautiful.jp. 86400 IN A 150.42.6.4 nsa.dns.jp. 86400 IN A 203.119.1.4 a01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 b01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 c01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 d01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 e01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 f01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 g01234567890123456789012345678901234567890123456789012345678901.small-is-beautiful.jp. 86400 IN A 150.42.6.4 nsa.dns.jp. 86400 IN AAAA 2001:dc4::4 ;; Query time: 17 msec ;; SERVER: 203.119.1.1#53(203.119.1.1) ;; WHEN: 火 9 03 22:37:49 JST 2019 ;; MSG SIZE rcvd: 813 dns.jp. の権威サーバ Linux ならフラグメントさせられる メッセージサイズ
  20. ࠜຊతͳରࡦ Ϧκϧόଆ w&%/4όοϑΝαΠζΛখ͘͢͞Δ ‣ େ͖͍Ԡ౴͸5$ϏοτΛཱͯͯ5$1ϑΥʔϧόοΫͤ͞Δ ‣ όΠτͩͱैདྷͷ%/4ͱಉ͡ڍಈʹ  ਪ঑஋͸ٞ࿦͋Γ ޙड़

     ‣ -FUT&ODSZQU $MPVEqBSFͰ΋ରࡦࡁΈ wϑϥάϝϯτύέοτΛϑΝΠΞ΢ΥʔϧͰυϩοϓ wॺ໊ݕূ͠ͳ͍৔߹͸%0ϏοτΛΦϑʹ 54 ஫ *1Wͷ࠷খ.56͸όΠτͰ͋Γɺ&%/4όοϑΝαΠζͷมߋͱ %0ϏοτΦϑͰ͸๷͛ͳ͍έʔε΋͋ΔͨΊగਖ਼͠·͢ɻ
  21. ࠜຊతͳରࡦ ݖҖଆ w&%/4όοϑΝαΠζΛখ͘͢͞Δ w1.56Λແࢹ͢Δ ‣ -JOVYͷ৔߹͸,FSOFMҎ্ͰIP_PMTUDISC_OMITιέοτΦϓγϣϯΛ༻ ͍Δ ‣ 'SFF#4%ͷ৔߹͸Өڹͳ͠ ‣

    ϝδϟʔͳ࣮૷Ͱ͸ରࡦࡁΈ  IUUQTHJTUHJUIVCDPNIEBJTFEGCBDFDFG 55 ஫ *1Wͷ࠷খ.56͸όΠτͰ͋Γɺ&%/4όοϑΝαΠζͷมߋͱ IP_PMTUDISC_OMIT Ͱ͸๷͛ͳ͍έʔε΋͋ΔͨΊగਖ਼͠·͢ɻ
  22. 2/".&NJOJNJTBUJPO w3'$ wඞཁ࠷খݶͷROBNFʹ୹ॖͯ͠ݖҖαʔόʹ໰͍߹Θͤ 57 . (root) a.dns.jp. ns.example.jp. Q: jp.

    IN NS A: jp. IN NS a.dns.jp. Q: example.jp. IN NS A: example.jp. IN NS ns.example.jp. Q: www.example.jp. IN A A: www.example.jp. IN A 192.0.2.1 Q: www.example.jp. IN A A: www.example.jp. IN A 192.0.2.1
  23. &%/4CV⒎FSTJ[F͋Ε͜Ε w ‣ ैདྷͱಉ͡αΠζ ‣ චऀΒͷਪ঑஋ w ‣ ܭࢉํ๏͸ෆ໌ ͔Β੾Γࣺͯ

     ‣ %/44&$Ͱ.645TVQQPSUͱ͞ΕΔ ࠷খ஋ 3'$TFDUJPO   w ‣  *1W)FBEFS  6%1 )FBEFS  *1W"UPNJD 'SBHNFOU  w ‣  w ‣ ଟ͘ͷ࣮૷ͷσϑΥϧτ஋ 61