ãªãHTTPSãèŠããïŒMITMãããã·ã®æ žå¿æè¡ãå®å šåè§£
HTTPSã¯ãæå·åãããŠå®å šããšèª°ããæã£ãŠããŸããããããç¹å®ã®æè¡ã䜿ãã°ããã®æå·åãããéä¿¡å 容ãäžžèŠãã«ã§ããŠããŸããŸãã
ããããMITMãããã·ïŒäžéè ãããã·ïŒããšåŒã°ããæè¡ã§ãããã®æè¡ã¯ãéçºè ãã¢ããªã®åäœã確èªããããã«äœ¿ãæ£åœãªãããŒã«ãã§ããäžæ¹ãæ»æè ãããªãã®ãã¹ã¯ãŒããã¯ã¬ãžããã«ãŒãæ å ±ãçãããã®ãæŠåšãã«ããªããŸãã
ç§ããã®èšäºã§äŒãããã®ã¯ããã®æè¡ã®äŸ¿å©ããšå±éºæ§ã¯è¡šè£äžäœã ãšããäºå®ã§ãããã®èšäºã§ã¯ããªãMITMãããã·ãHTTPSéä¿¡ããèŠããããšãã§ããã®ãããã®æ žå¿çãªæè¡çä»çµã¿ãããå ·äœçãªããŒã«ã®äœ¿ãæ¹ããããŠç§ãã¡ãã©ã身ãå®ãã°ããããŸã§ã培åºçã«åè§£ããŠè§£èª¬ããŸãã
MITMãããã·ãšã¯ïŒãã®ãäºã€ã®é¡ãã解説
MITMãããã·ã¯ãæåéããäžéè ïŒMan-in-the-MiddleïŒããšããŠãããªãã®ããã€ã¹ãšã€ã³ã¿ãŒãããäžã®ãµãŒããŒãšã®éã«å²ã蟌ãæè¡ã§ãããã®ãå²ã蟌ãããšããæ§è³ªããå šãç°ãªãäºã€ã®åŽé¢ãæã¡ãŸãã
éçºãå©ãããããŒã«ããšããŠã®åœ¹å²
ãã®æè¡ã¯ãå€ãã®éçºçŸå Žã§å¿ é ã®ããŒã«ãšããŠæŽ»èºããŸããWebãµã€ããã¹ããŒããã©ã³ã¢ããªãããµãŒããŒãšæ£ããéä¿¡ããŠãããã確èªããããã«äœ¿ãããŸãã
äŸãã°ãã¢ããªãéä¿¡ããããŒã¿ïŒãªã¯ãšã¹ãïŒãããµãŒããŒããè¿ã£ãŠããããŒã¿ïŒã¬ã¹ãã³ã¹ïŒãå¹³æã§ç¢ºèªã§ããŸããããã«ããããã°ã®çºèŠãããã©ãŒãã³ã¹æ¹åãã»ãã¥ãªãã£äžã®åŒ±ç¹ïŒè匱æ§ïŒããªããã®ãã¹ããå¹ççã«è¡ããŸãã
äŒæ¥ãããã¯ãŒã¯ã§ã¯ã瀟å¡ããã«ãŠã§ã¢ã«ææããããæ©å¯æ å ±ãå€éšã«æŒããããããã®ãé²ããããéä¿¡ãæ€æ»ããç®çã§ãã®æè¡ãå°å ¥ãããŠããããšããããŸãã
ããŒã¿ãçããæŠåšããšããŠã®è åš
ãã®æè¡ãæ»æè ã«ãã£ãŠæªçšããããšãéåžžã«å±éºãªè åšãšãªããŸããæ»æè ã¯ãæå·åãããŠãããšä¿¡ããŠãããŠãŒã¶ãŒã®éä¿¡ãååããè§£èªããŠããŸããŸãã
ããã«ããããã°ã€ã³IDããã¹ã¯ãŒããã¯ã¬ãžããã«ãŒãçªå·ãšãã£ãæãéèŠãªå人æ å ±ããªã¢ã«ã¿ã€ã ã§çãŸããŸããããã«æ·±å»ãªã®ã¯ãéä¿¡å 容ããã®å Žã§æžãæãããæ¹ããããè¡ãããããšã§ãã
äŸãã°ããªã³ã©ã€ã³ãã³ãã³ã°ã®æ¯èŸŒå å£åº§çªå·ãæ»æè ã®ãã®ã«ãã£ããå·®ãæ¿ããããæ£èŠã®ã¢ããããŒããã¡ã€ã«ããã«ãŠã§ã¢ã«ããæ¿ããŠææããããããæå£ãååšããŸãã
ãªãæå·åïŒHTTPSïŒãèŠããïŒSSL/TLSååã®æè¡çä»çµã¿
HTTPSãæå·åãããŠããŠãå 容ãèŠããŠããŸãã®ã¯ãSSL/TLSãšããæå·åã®ãä¿¡é Œãã®ä»çµã¿ãã®ãã®ããMITMãããã·ãå·§ã¿ã«æäœããŠããããã§ãããã®æäœã¯ãéä¿¡ã®ãåæããæžãæããè¡çºãšèšããŸãã
ç§ã泚ç®ããã®ã¯ããã®æè¡ããä¿¡é Œã®é£éããšåŒã°ããã»ãã¥ãªãã£ã®æ ¹å¹¹ã«å²ã蟌ãç¹ã§ããããã«ãããæå·åãç¶æãããŸãŸãäžèº«ã ããå¹³æã§ã®ããèŠããŸãã
HTTPSéä¿¡ã®ãä¿¡é Œãã®ä»çµã¿
æ¬æ¥ã®HTTPSéä¿¡ã¯ã匷åºãªä¿¡é Œé¢ä¿ã®äžã§æãç«ã£ãŠããŸãããã©ãŠã¶ãWebãµã€ãã«æ¥ç¶ãããšããµã€ãã¯ãå ¬ééµèšŒææžããšãã身åèšŒææžãæç€ºããŸãã
ãã©ãŠã¶ã¯ããã®èšŒææžããä¿¡é Œã§ãã第äžè æ©é¢ïŒã«ãŒãèªèšŒå±ïœCAïŒãã«ãã£ãŠçœ²åãããŠãããã峿 Œã«æ€èšŒããŸãããã®æ€èšŒã«åæ ŒããŠåããŠããã®çžæãæ¬ç©ã§ãããšç¢ºèªãããæå·åéä¿¡ãéå§ãããŸãã
ãã®ä»çµã¿ããããããããç§ãã¡ã¯éä¿¡çµè·¯ã®éäžã§èª°ãã«çã¿èŠããããããªãããŸããããããå¿é ãªããå®å šã«ã€ã³ã¿ãŒããããå©çšã§ããããã§ãã
ä¿¡é Œãæããåœã®èšŒææžãã®åççæããã»ã¹
MITMãããã·ã¯ããã®ä¿¡é Œã®ä»çµã¿ãæ ¹æ¬ããèŠããŸãããã®æäœãæåãããããããããã·ããŒã«ã¯èªèº«ã®ã俺æ§ã«ãŒãèšŒææžïŒãããã·CAïŒãããå©çšè ã®ããã€ã¹ïŒPCãã¹ããïŒã«ã€ã³ã¹ããŒã«ãããŸãã
ããã€ã¹ã¯ããã®ããããã·CAããOSã¬ãã«ã§ãä¿¡é Œã§ããçºè¡å ããšããŠèªèããŠããŸããŸãããããå šãŠã®å§ãŸãã§ãã
æ¥ç¶èŠæ±ã®æšªåã
åœã®èšŒææžã®å³æçºè¡
ãããã·ã¯ã暪åãããç¬éã«ãhttps://www.google.com/search?q=google.comããšããååãæžããããåœã®èšŒææžãããã®å Žã§åçã«çæããŸãããããŠããã®åœã®èšŒææžããå ã»ã©ããã€ã¹ã«ã€ã³ã¹ããŒã«ãããããããã·CAãã§çœ²åããŸãã
ãã©ãŠã¶ã¯ãæç€ºãããåœã®èšŒææžãæ€èšŒããŸããã眲åè ããä¿¡é Œæžã¿ãã®ãããã·CAã§ããããããããæ¬ç©ã®èšŒææžã ãšä¿¡ã蟌ã¿ãèŠåãåºããŸããã
äºéã®æå·åã»ãã·ã§ã³ã®ç¢ºç«
ãã®çµæãå©çšè ã®ãã©ãŠã¶ãšMITMãããã·ã®éã§ãäžã€ã®æå·åã»ãã·ã§ã³ã確ç«ãããŸãããããšåæã«ããããã·ã¯æ¬ç©ã®ãhttps://www.google.com/search?q=google.comããµãŒããŒãšããäžã€ã®æå·åã»ãã·ã§ã³ã確ç«ããŸãã
ç§ã¯ããã®ç¶æ ããäºéãã³ãã«ããšåŒãã§ããŸãããããã·ã¯äž¡æ¹ã®ãã³ãã«ã®äžéã«ç«ã¡ããã©ãŠã¶ããã®æå·åããŒã¿ãè§£èªïŒåŸ©å·ïŒããŠå¹³æã§å 容ãã®ããèŠãããããæ¬ç©ã®ãµãŒããŒã®éµã§åæå·åããŠè»¢éããŸããåž°ããåæ§ã®ããã»ã¹ãèžããããéä¿¡å 容ããã¹ãŠäžžèŠãã«ãªããŸãã
å®è·µïœäž»èŠMITMãããã·ããŒã«ã®äœ¿ãæ¹ãšç¹åŸŽ
MITMãããã·æè¡ã¯ãå ·äœçãªããŒã«ãšããŠå©çšãããŠããŸããããã§ã¯ãéçºè ãã»ãã¥ãªãã£å°éå®¶ã«æçšãããŠããäž»èŠãªããŒã«ãšããã®å®è·µçãªäœ¿ãæ¹ã玹ä»ããŸãã
å®çªããŒã«æ¯èŒïŒmitmproxy, Burp, Charles, FiddlerïŒ
åããŒã«ã«ã¯åŸæåéããããç®çã«å¿ããŠäœ¿ãåããããŸããç§ã泚ç®ãããã€ã³ãã衚ã«ãŸãšããŸããã
| ããŒã«å | UI | ã©ã€ã»ã³ã¹ | äž»ãªçšé |
| mitmproxy | CUI / Web | ãªãŒãã³ãœãŒã¹ | ã»ãã¥ãªãã£ãã¹ã, èªåå | | Burp Suite | GUI | åçš / äžéšç¡æ | è匱æ§èšºæ | | Charles | GUI | åçš (ææ) | Webã»ã¢ãã€ã«éçº | | Fiddler | GUI | åçš / (Classicã¯ç¡æ) | Webã»ã¢ãã€ã«éçº |
ã±ãŒã¹ã¹ã¿ãã£ïœPCãšã¹ããã®éä¿¡ãåæããæ¹æ³
ããã§ã¯ãPCãã¹ããŒããã©ã³ã®éä¿¡ãå®éã«ååããæé ã®æŠèŠã解説ããŸããä»åã¯Charles Proxyãmitmproxyã䜿ã£ãäžè¬çãªæµãã§ãã
PCãã©ãŠã¶ã®éä¿¡ãååãã
-
PCã«mitmproxyãªã©ã®ããŒã«ãã€ã³ã¹ããŒã«ãããããã·ãµãŒããŒãèµ·åããŸãïŒäŸïœããŒã8080ïŒã
-
PCã®OSãŸãã¯ãã©ãŠã¶ã®ãããã¯ãŒã¯èšå®ã§ããããã·ãã127.0.0.1ïŒèªåèªèº«ïŒãã®ããŒãã8080ãã«èšå®ããŸãã
-
ãã©ãŠã¶ã§ç¹å®ã®URLïŒäŸïœhttp://mitm.itïŒã«ã¢ã¯ã»ã¹ããããŒã«ã®ãã«ãŒãèšŒææž(CA)ããããŠã³ããŒãããŸãã
-
ããŠã³ããŒãããèšŒææžããOSã®ãä¿¡é Œãããã«ãŒãèšŒææ©é¢ãã¹ãã¢ã«ã€ã³ã¹ããŒã«ããŸãã
ããã§ãPCã®ãã©ãŠã¶ãçºä¿¡ããHTTPSéä¿¡ãããŒã«ã«è¡šç€ºãããå 容ã確èªã§ããããã«ãªããŸãã
ã¹ããŒããã©ã³ã¢ããªã®éä¿¡ãååãã
-
PCã§Charlesãªã©ã®ããŒã«ãèµ·åãããããã·ããŒãïŒäŸïœ8888ïŒãšSSLååèšå®ãæå¹ã«ããŸãã
-
PCã®ããŒã«ã«IPã¢ãã¬ã¹ïŒäŸïœ192.168.1.10ïŒã調ã¹ãŸãã
-
ã¹ããŒããã©ã³ãPCãšåãWi-Fiã«æ¥ç¶ããWi-Fièšå®ã®è©³çްãããããã·èšå®ãéããŸãã
-
ãããã·ããæåãã«èšå®ãããã¹ãåã«PCã®IPïŒ192.168.1.10ïŒãããŒãã«ã8888ããå ¥åããŸãã
-
ã¹ããŒããã©ã³ã®ãã©ãŠã¶ã§æå®ã®URLã«ã¢ã¯ã»ã¹ããèšŒææžãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸãã
ãã ããè¿å¹Žã®AndroidãiOSã¯ã»ãã¥ãªãã£ã匷åãããŠãããã¢ããªã«ãã£ãŠã¯ããã ãã§ã¯ååã§ããŸãããéçºäžã®ã¢ããªããããã°ããã«ã¯ãã¢ããªåŽã§ããŠãŒã¶ãŒã远å ããèšŒææžãä¿¡é Œããããšãã远å èšå®ãå¿ èŠã«ãªãã±ãŒã¹ãã»ãšãã©ã§ãã
ããªããçãããïŒæªæã®ããMITMæ»æã®æãããæå£
ãã®æè¡ãæ»æè ã®æã«æž¡ããšãç§ãã¡ã¯æ·±å»ãªè¢«å®³ã«éãå±éºããããŸããæ»æè ã¯ãç§ãã¡ãæ°ä»ããªããã¡ã«éä¿¡ã®ãäžéãã«å²ã蟌ãã§ããŸãã
æ»æçµè·¯ïœäžæ£Wi-FiãšDNSã¹ããŒãã£ã³ã°
æ»æè ãéä¿¡ã«å²ã蟌ãããã®ä»£è¡šçãªå ¥å£ããå ¬å ±ã®Wi-Fiã§ãã空枯ãã«ãã§ã«ãããFree_Airport_WiFiãã®ãããªãæ£èŠã®ååã«äŒŒãããäžæ£ãªWi-Fiã¢ã¯ã»ã¹ãã€ã³ãããèšçœ®ããŸãã
ããããªãããã®Wi-Fiã«æ¥ç¶ããŠããŸããšãããªãã®ããã€ã¹ããã®éä¿¡ã¯ãã¹ãŠæ»æè ã®ç®¡çãããããã·ãçµç±ããããšã«ãªããŸãã
ãããã¯ãŒã¯å éšã§è¡ããããARPã¹ããŒãã£ã³ã°ãããåœã®IPã¢ãã¬ã¹ãæãããDNSã¹ããŒãã£ã³ã°ããšãã£ãå€å žçãªæ»æããéä¿¡ãä¹ã£åãããã«äœ¿ãããŸãã
å®è¡æå£ïœSSLã¹ããªããã³ã°ãšã»ãã·ã§ã³ãã€ãžã£ãã¯
éä¿¡ã®çµè·¯äžã«å²ã蟌ãããšã«æåããæ»æè ã¯ãæå·åãç¡å¹åããããšããŸãããã®äžã€ããSSLã¹ããªããã³ã°ãã§ãã
ããã¯ããŠãŒã¶ãŒãHTTPïŒéæå·åïŒã§ã¢ã¯ã»ã¹ããéããµã€ãåŽãHTTPSïŒæå·åïŒãžèªå°ïŒãªãã€ã¬ã¯ãïŒããã®ã劚害ããæ»æã§ããæ»æè ã¯ããŠãŒã¶ãŒãšHTTPã®ãŸãŸéä¿¡ãç¶ããèªåã ãããµãŒããŒãšHTTPSã§éä¿¡ããŸãã
ãŠãŒã¶ãŒã¯ãã©ãŠã¶ã®ã¢ãã¬ã¹ããŒã«ãéµããŒã¯ãããªãããšã«æ°ä»ããããã¹ã¯ãŒããªã©ãå ¥åããŠããŸããå¹³æã®ãŸãŸçãŸããŸãã
éä¿¡å 容ãååã§ããç¶æ ã«ãªãã°ããã»ãã·ã§ã³ãã€ãžã£ãã¯ãã容æã§ãããã°ã€ã³åŸã«çºè¡ãããã»ãã·ã§ã³ããŒã¯ã³ïŒã¯ãããŒïŒãçã¿åºãããã®ããŒã¯ã³ãæ»æè ã䜿ãã ãã§ããã¹ã¯ãŒããªãã§ããªãã®ã¢ã«ãŠã³ãã«ãªãããŸããäžæ£ééãªã©ãè¡ããŸãã
ãå®å šé²åŸ¡ãMITMæ»æãã身ãå®ãããã®é«åºŠãªå¯Ÿç
MITMæ»æã¯å€å±€çã§ãããããé²åŸ¡çãè€æ°ã®å±€ã§èããå¿ èŠããããŸããå人ãŠãŒã¶ãŒãã§ãã察çããããµãŒãã¹æäŸåŽãå®è£ ãã¹ãé«åºŠãªæè¡ãŸã§ãç§ãéèŠãšèããé²åŸ¡æŠç¥ã解説ããŸãã
å人ã§ä»ããã§ããåºæ¬é²åŸ¡ïŒVPNãšèŠåã®éèŠæ§ïŒ
å人ãŠãŒã¶ãŒã«ãšã£ãŠæã广çã§ç°¡åãªé²åŸ¡çã¯ãä¿¡é Œã§ããªããããã¯ãŒã¯ïŒç¹ã«å ¬è¡Wi-FiïŒã§ã¯ãVPNïŒVirtual Private NetworkïŒãã䜿çšããããšã§ããVPNã¯ãããªãã®ããã€ã¹ãšVPNãµãŒããŒãšã®éã«æå·åããããã³ãã«ãäœããŸãã
ããšãäžæ£ãªWi-Fiã«æ¥ç¶ããŠããŸã£ãŠããéä¿¡å šäœãVPNãµãŒããŒãŸã§æå·åãããŠãããããããŒã«ã«ã®æ»æè ã«ã¯äžèº«ãèŠãããŸããã
ããäžã€éåžžã«éèŠãªã®ãããã©ãŠã¶ã®ãèšŒææžèŠåãã絶察ã«ç¡èŠããªãããšã§ããããã®æ¥ç¶ã§ã¯ãã©ã€ãã·ãŒãä¿è·ãããŸããããšãã£ãèŠåã衚瀺ãããå Žåãããã¯ãŸãã«MITMæ»æãè¡ãããŠããæäžã®ãµã€ã³ãããããŸããã
ç¹ã«éèæ©é¢ãªã©ã®ãµã€ãã§èŠåãåºãå Žåã¯ã決ããŠãå±éºæ§ãæ¿ç¥ã§ç¶è¡ããã¯ãªãã¯ãããããã«æ¥ç¶ãäžæããŠãã ããã
ãµã€ãã»ã¢ããªéçºè ãå®è£ ãã¹ã匷åãªé²åŸ¡çïŒHSTSãšèšŒææžããã³ã°ïŒ
Webãµã€ããã¢ããªã®éçºè åŽã«ã¯ããŠãŒã¶ãŒãå®ãããã®åŒ·åãªé²åŸ¡çãæ±ããããŸãã
HSTS (HTTP Strict Transport Security)
ããã¯ãSSLã¹ããªããã³ã°æ»æã«å¯Ÿããç¹å¹è¬ã§ããWebãµãŒããŒãããã®ãµã€ãã¯å¿ ãHTTPSã§æ¥ç¶ããããšãããã©ãŠã¶ã«åŒ·å¶ããèšå®ïŒã¬ã¹ãã³ã¹ããããŒïŒã§ãã
äžåºŠãã®èšå®ãåãåã£ããã©ãŠã¶ã¯ããŠãŒã¶ãŒã誀ã£ãŠHTTPã§ã¢ã¯ã»ã¹ããããšããŠããèªåçã«HTTPSã«æžãæããŠæ¥ç¶ããŸããããã«ãããæ»æè ãHTTPã«ããŠã³ã°ã¬ãŒãããéãäžããŸããã
èšŒææžããã³ã° (Certificate Pinning)
ããã¯äž»ã«ã¢ãã€ã«ã¢ããªã§äœ¿ããããããã«åŒ·åãªé²åŸ¡çã§ãããä¿¡é Œã§ããCAçºè¡ã®èšŒææžãã§ããã ãã§ã¯ä¿¡çšããããã¢ããªå ã«ãããããåã蟌ãã ãæ¬ç©ã®ãµãŒããŒèšŒææžã®ç¹å®æ å ±ïŒãã£ã³ã¬ãŒããªã³ãïŒããšäžèŽããããŸã§æ€èšŒããŸãã
ããã«ãããããšããŠãŒã¶ãŒãæ»æè ã®äžæ£ãªCAèšŒææžãããã€ã¹ã«ã€ã³ã¹ããŒã«ããŠããŸã£ãŠããã¢ããªã¯åœã®èšŒææžãå³åº§ã«æ€ç¥ããæ¥ç¶ãæåŠããŸããããã¯ãMITMãããã·ã«ããååãæ ¹æ¬çã«ãããã¯ããéåžžã«åŒ·åãªææ®µã§ãã
ãŸãšãïœMITMæè¡ãšã»ãã¥ãªãã£ã®æªæ¥
MITMãããã·æè¡ã¯ãHTTPSãšããä¿¡é Œã®ä»çµã¿ãæå³çã«æäœããããšã§éä¿¡ãå¯èŠåããã匷åãªã諞åã®å£ãã§ããéçºè ã«ãšã£ãŠã¯ãããã°ãã»ãã¥ãªãã£ãã¹ãã«æ¬ ãããªãããŒã«ã§ãããæ»æè ã«ãšã£ãŠã¯æ©å¯æ å ±ãçãããã®æãããæŠåšãšãªããŸãã
ç§ãã¡ã®é²åŸ¡æè¡ãé²åããŠãããHSTSãèšŒææžããã³ã°ã®ããã«ããã峿 Œãªä¿¡é Œã¢ãã«ãæ¡çšããã€ã€ãããŸããå人ãšããŠã¯VPNãèŠåãžã®æ³šæã培åºããéçºè ã¯ãããã®é«åºŠãªé²åŸ¡çãå®è£ ããããšããå®å šãªã€ã³ã¿ãŒãããç°å¢ã®ç¶æã«äžå¯æ¬ ã§ãã


