å°å ¥
æåã®éšåã§ æå·åããã SNI (eSNI) ã¡ã«ããºã ã«ã€ããŠç°¡åã«èª¬æããŸããã 圌ãã¯ãããã«åºã¥ããŠãææ°ã® DPI ã·ã¹ãã ã«ããæ€åºãåé¿ããããšãã©ã®ããã«å¯èœã§ãããã瀺ã (Beeline DPI ãšçŠæ¢ãããŠãã RKN ã«ãŒã ãã©ãã«ãŒã®äŸã䜿çšããŠ)ããŸãããã®ã¡ã«ããºã ã«åºã¥ããæ°ããããŒãžã§ã³ã®ãã¡ã€ã³ ããã³ãåŠçã«ã€ããŠãæ€èšããŸããã
èšäºã®åŸåã§ã¯ãRedTeam ã¹ãã·ã£ãªã¹ãã®é£ããäœæ¥ã«åœ¹ç«ã€ãããå®è·µçãªå 容ã«é²ã¿ãŸãã çµå±ã®ãšãããç§ãã¡ã®ç®æšã¯ããããã¯ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããšã§ã¯ãããŸãã (ãã®ãããªäºçްãªããšã®ããã«ãå€ãè¯ã VPN ã䜿çšããŸã)ã 幞ããªããšã«ããããã奜ã¿ãè²ãäºç®ã«åãããŠãããŸããŸãª VPN ãããã€ããŒãååšããŸãã
ç§ãã¡ã¯ããã¡ã€ã³ ããã³ã ã¡ã«ããºã ãææ°ã® RedTeam ããŒã« (ããšãã°ãCobalt StrikeãEmpire ãªã©) ã«é©çšããææ°ã®ã³ã³ãã³ã ãã£ã«ã¿ãªã³ã° ã·ã¹ãã ãæš¡å£ããã³åé¿ããè¿œå æ©èœãæäŸããããšã詊ã¿ãŸãã
ååã¯ãeSNI ã¡ã«ããºã ã OpenSSL ã©ã€ãã©ãªã«å®è£
ãã䜿ãæ
£ããcurl ãŠãŒãã£ãªãã£ã§ããã䜿çšããããšã«æåããŸããã ããããããèšãããããã«ãé¶äžçŸœã ãã§ã¯æºè¶³ã§ããŸããã ãã¡ãããåæ§ã®ãã®ãé«çŽèšèªã§ãå®è£
ããããšèããŠããŸãã ããããæ®å¿µãªãããeSNI ã¡ã«ããºã ã®ãµããŒããå®å
šã«å®è£
ãããŠããã®ã¯ GOLANG ã®ã¿ã§ãããããã€ã³ã¿ãŒãããã§ç°¡åã«æ€çŽ¢ããŠã¿ããšãã£ããããŠããŸããŸãã ãããã£ãŠãç§ãã¡ã«ã¯éžæè¢ãããŸããããŸãããããããé©çšãã OpenSSL ã©ã€ãã©ãªã䜿çšããŠçŽç²ãª C ãŸã㯠C++ ã§èšè¿°ããããCloudFlare ããã®å¥ã® GOLANG ãã©ãŒã¯ã䜿çšããŠããã«ããŒã«ãç§»æ€ããŠã¿ããã®ã©ã¡ããã§ãã åççã«ã¯ãPython ã® eSNI ãµããŒããå®è£
ãããšãããããå€å
žçã§ã¯ãããŸãããåæã«æéããããå¥ã®ãªãã·ã§ã³ããããŸãã çµå±ã®ãšãããPython 㯠https ãåŠçããããã« OpenSSL ã䜿çšããŸãã ãããããã®ãªãã·ã§ã³ã¯ä»ã®äººã«ããéçºã«æ®ããç§ãã¡èªèº«ã¯ Golang ã§ã®å®è£
ã«æºè¶³ããŸããç¹ã«ãç§ãã¡ã®ææã® Cobalt Strike ã¯ããµãŒãããŒã㣠ããŒã«ã«ãã£ãŠæ§ç¯ãããéä¿¡ãã£ãã« (å€éš C2 ãã£ãã«) ãšå®å
šã«é£æºã§ããããã§ãã - ããã«ã€ããŠã¯èšäºã®æåŸã§èª¬æããŸãã
ãã£ãšé 匵ã£ãŠ...
Go ã«å®è£ ãããããŒã«ã® XNUMX ã€ã¯ããããã¯ãŒã¯ã«ããããããããã®éçºã§ãããã³ãã©ãŒã§ãã ã¡ãªã¿ã«ãããã¯çŸåšãMicrosoft ãš Symantec ã®ããŒã«ã«ãã£ãŠãäžççãªå®å®æ§ãç Žå£ããããšãç®çãšããéåžžã«æªæã®ãããœãããŠã§ã¢ãšããŠæ€åºãããŠããŸã...

ãã®å Žåã«ã以åã®éçºã䜿çšããã®ã¯çŽ æŽãããããšã§ãã ããããããã§å°ããªåé¡ãçºçããŸãã å®éã®ãšãããrsockstun ã¯æåã¯ãµãŒããŒãšã®åæ SSL éä¿¡ãã£ãã«ã®äœ¿çšãæé»çã«ç€ºããŠããŸãã ããã¯ãæ¥ç¶ãäžåºŠç¢ºç«ããããšããã³ãã«ã®åäœäžãã£ãšååšããããšãæå³ããŸãã ãããŠããåç¥ã®ãšãããhttps ãããã³ã«ã¯ãã®åäœã¢ãŒãã察象ãšãããã®ã§ã¯ãããŸãããHTTP ãããã³ã«ã¯ãæ°ãã http ãªã¯ãšã¹ããããããæ°ãã tcp æ¥ç¶å
ã«ååšããããªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ ã¢ãŒãã§åäœããŸãã
ãã®æ¹åŒã®äž»ãªæ¬ ç¹ã¯ãã¯ã©ã€ã¢ã³ããæ°ãã http ãªã¯ãšã¹ããéä¿¡ãããŸã§ããµãŒããŒãã¯ã©ã€ã¢ã³ãã«ããŒã¿ã転éã§ããªãããšã§ãã ãããã幞ããªããšã«ããã®åé¡ã解決ããããã®ãªãã·ã§ã³ã¯æ°å€ããããŸããããã¯ãhttp ãããã³ã«ãä»ããããŒã¿ã®ã¹ããªãŒãã³ã°ã§ã (çµå±ã®ãšãããç§ãã¡ã¯ãæ°ã«å ¥ãã®ãã¬ãçªçµãèŠãããhttps ã§å®è¡ãããŠããããŒã¿ã«ãã鳿¥œãèŽãããããããšãã§ããŸããããããªãšãªãŒãã£ãªãéä¿¡ããããšã¯ä»ã®ããšã§ã¯ãããŸãã)ã¹ããªãŒãã³ã°ããŒã¿ããïŒã HTTP ãããã³ã«ãä»ããŠæ¬æ Œç㪠TCP æ¥ç¶ã®åäœããšãã¥ã¬ãŒããããã¯ãããžã® XNUMX ã€ã¯ WebSocket ãã¯ãããžã§ãããã®äž»ãªæ¬è³ªã¯ãã¯ã©ã€ã¢ã³ããš Web ãµãŒããŒéã®æ¬æ Œçãªãããã¯ãŒã¯æ¥ç¶ãçµç¹ããããšã§ãã
ç§ãã¡ã«ãšã£ãŠå¹žéãªããšã« (äžæ³!!!)ããã®ãã¯ãããžãŒã¯ãã¹ãŠã® CloudFlare æéãã©ã³ã«ããã©ã«ãã§å«ãŸããŠãããeSNI ãšçµã¿åãããŠããŸãæ©èœããŸãã ããã¯ãŸãã«ããã³ãã©ãŒã«ãã¡ã€ã³ ããã³ãã䜿çšããææ°ã® DPI ããé ãããã«æããããã«äœ¿çšãããã®ã§ãã
WebSocket ã«ã€ããŠå°ã
ãŸãæåã«ãWebSocket ã«ã€ããŠç°¡åãã€ç°¡åãªèšèã§èª¬æãã誰ããäœãæ±ãã®ããçè§£ã§ããããã«ããŸãã
Websocket ãã¯ãããžãŒã䜿çšãããšã確ç«ããã TCP æ¥ç¶ãäžæããããšãªããhttp æ¥ç¶ããæšæºãããã¯ãŒã¯ ãœã±ãã ã¹ããªãŒãã³ã°ã«äžæçã«åãæ¿ããããšãã§ããŸãã ã¯ã©ã€ã¢ã³ãã WebSocket ã«åãæ¿ããå Žåãhttp ãªã¯ãšã¹ãã«ããã€ãã® http ããããŒãèšå®ããŸãã XNUMX ã€ã®å¿ é ããã㌠- æ¥ç¶: ã¢ããã°ã¬ãŒã О ã¢ããã°ã¬ãŒã: WebSocketã WebSocket ãããã³ã«ã®ããŒãžã§ã³ã匷å¶çã«æå®ããããšãã§ããŸã (Sec-Websockset-ããŒãžã§ã³: 13) ããã³ Base64 WebSocket èå¥åã®ãããªãã® (Sec-WebSocket-Key: DAGDJSiREI3+KjDfwxm1FA==ïŒã ãµãŒããŒã¯ http ã³ãŒã 101 ã¹ã€ããã³ã° ãããã³ã«ã§å¿çããããããŒãèšå®ããŸãã æ¥ç¶ãã¢ããã°ã¬ãŒã О Sec-WebSocket-Acceptã åãæ¿ãããã»ã¹ã¯ã以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã§æç¢ºã«ç€ºãããŠããŸãã

ãã®åŸãWebSocket æ¥ç¶ã®ã€ã³ã¹ããŒã«ã¯å®äºãããšèŠãªãããŸãã ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ããã®ããŒã¿ã¯ãhttp ã§ã¯ãªã WebSocket ããã㌠(ãã€ã 0x82 ã§å§ãŸã) ã§æäŸãããããã«ãªããŸãã ããã§ããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãããã®ããŒã¿è»¢éèŠæ±ãåŸ
ã€å¿
èŠããªããªããŸããã TCP æ¥ç¶ã¯åæãããŠããŸããã
Golang ã«ã¯ãWebSocket ãæäœããããã®ã©ã€ãã©ãªãããã€ããããŸãã ãã®äžã§æã人æ°ã®ããã®ã¯ã ãããŠæšæºç㪠ã ããã§ã¯åŸè ã䜿çšããŸãããªããªã... ããã¯ããã·ã³ãã«ã§å°ããããããŠåœŒããèšãããã«ãå°ãéãåäœããŸãã
rsockstun ã¯ã©ã€ã¢ã³ã ã³ãŒãã§ã¯ãnet.dial ãŸã㯠tls.dial åŒã³åºãã察å¿ãã WebSocket åŒã³åºãã«çœ®ãæããå¿ èŠããããŸãã


ãã³ãã«ã®ã¯ã©ã€ã¢ã³ãéšåããŠãããŒãµã«ã«ããçŽæ¥ SSL æ¥ç¶ãš WebSockset ãããã³ã«ã®äž¡æ¹ã§åäœã§ããããã«ããããšèããŠããŸãã ãã®ããã«å¥ã®é¢æ°ãäœæããŸã func connectForWsSocks(ã¢ãã¬ã¹æåå, ãããã·æåå) ãšã©ãŒ {âŠ} ãšã®é¡æšã«ãã£ãŠ connectForSocks() ãŸããã¯ã©ã€ã¢ã³ãã®èµ·åæã«æå®ããããµãŒã㌠ã¢ãã¬ã¹ã ws: ãŸã㯠wss: (Secure WebSocket ã®å Žå) ã§å§ãŸãå ŽåãWeb ãœã±ãããæäœããããã«ããã䜿çšããŸãã
ãã³ãã«ã®ãµãŒããŒåŽã«ã€ããŠã¯ãWeb ãœã±ãããæäœããããã®å¥ã®é¢æ°ãäœæããŸãã http ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããhttp æ¥ç¶ãã³ãã©ãŒ (wsHandler 颿°) ãèšå®ããŸãã

ãããŠããã¹ãŠã®æ¥ç¶åŠçããžã㯠(ãã¹ã¯ãŒãã䜿çšããã¯ã©ã€ã¢ã³ãèªèšŒãyamux ã»ãã·ã§ã³ã®ã»ããã¢ãããšçµäº) ã WebSocket æ¥ç¶ãã³ãã©ãŒã«é
眮ããŸãã

ãããžã§ã¯ããã³ã³ãã€ã«ãããµãŒããŒéšåãèµ·åããŸãã
./rsockstun âlisten ws:127.0.0.1:8080 âpass P@ssw0rdãããŠã¯ã©ã€ã¢ã³ãéšåã¯æ¬¡ã®ããã«ãªããŸãã
./rsockstun -connect ws:127.0.0.1:8080 âpass P@ssw0rdãããŠãããŒã«ã«ãã¹ãã§ã®åäœã確èªããŸãã


ãã¡ã€ã³ã®ããã³ãã£ã³ã°ã«ç§»ããŸããã
WebSocket ãçè§£ããããã§ãã ããã§ãeSNI ãšãã¡ã€ã³ ããã³ãã«çŽæ¥ç§»ããŸãããã åè¿°ããããã«ãDoH ããã³ eSNI ãšé£æºããã«ã¯ãäŒç€Ÿããç¹å¥ãª golang ãã©ã³ããååŸããå¿ èŠããããŸãã ã eSNI ããµããŒããããã©ã³ã (pwu/esni) ãå¿ èŠã§ãã
ããŒã«ã«ã«ã¯ããŒã³ãäœæãããã察å¿ãã zip ãããŠã³ããŒãããŠè§£åããŸãã
git clone -b pwu/esni https://github.com/cloudflare/tls-tris.git次ã«ãGOROOT ãã£ã¬ã¯ããªãã³ããŒããã¯ããŒã³ããããã©ã³ããã察å¿ãããã¡ã€ã«ã眮ãæããŠãããããã¹ã¿ãŒãšããŠèšå®ããå¿ èŠããããŸãã éçºè ããã®é çã®çš®ããæãããã«ãCloudFlare ã®ã¹ã¿ããã¯ç¹å¥ãªã¹ã¯ãªãã - _dev/go.sh ãçšæããŸããã ãã èµ·åããã ãã§ãã ã¹ã¯ãªãããšã¡ã€ã¯ãã¡ã€ã«ã¯ããã¹ãŠãèªåçã«å®è¡ããŸãã æ¥œãã¿ã®ããã«ãMakefile å ã§è©³çްã確èªããŠãã ããã
ã¹ã¯ãªãããå®è¡ããåŸããããžã§ã¯ããã³ã³ãã€ã«ãããšãã«ãã¹ã¯ãªããã«ãã£ãŠæºåãããããŒã«ã« ãã£ã¬ã¯ããªã GOROOT ãšããŠæå®ããå¿ èŠããããŸãã ç§ãã¡ã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" go build âŠ.次ã«ãç®çã®ãã¡ã€ã³ã®å ¬é eSNI ããŒãèŠæ±ããŠè§£æããæ©èœããã³ãã«ã«å®è£ ããå¿ èŠããããŸãã ç§ãã¡ã®å Žåãããã㯠CloudFlare ããã³ããšã³ã ãµãŒããŒããã®å ¬é eSNI ããŒã«ãªããŸãã ãããè¡ãããã«ã次㮠XNUMX ã€ã®é¢æ°ãäœæããŸãã
func makeDoTQuery(dnsName string) ([]byte, error)
func parseTXTResponse(buf []byte, wantName string) (string, error)
func QueryESNIKeysForHost(hostname string) ([]byte, error)ååãšããŠã颿°ã®ååèªäœããããç©èªã£ãŠããŸãã tls-tris ã®äžéšã§ãã esni_query.go ãã¡ã€ã«ããã³ã³ãã³ããååŸããŸãã æåã®é¢æ°ã¯ãDoH (DNS-over-HTTPS) ãããã³ã«ã䜿çšã㊠CloudFlare DNS ãµãŒããŒãžã®ãªã¯ãšã¹ããå«ããããã¯ãŒã¯ ãã±ãããäœæããXNUMX çªç®ã®é¢æ°ã¯ã¯ãšãªçµæãè§£æããŠãã¡ã€ã³ã®å ¬éããŒã®å€ãååŸããŸããXNUMX çªç®ã®é¢æ°ã¯ãæåã® XNUMX ã€ã®ã³ã³ããã
次ã«ãæ°ããäœæãã颿°ã« Web ãœã±ããæ¥ç¶ã远å ããŸãã ConnectForWsãœãã¯ã¹ ãã¡ã€ã³ã® eSNI ããŒãèŠæ±ããæ©èœã ãµãŒããŒéšåãåäœãããšããã§ã¯ãTLS ãã©ã¡ãŒã¿ãŒãèšå®ããåœã®ãã«ã㌠ãã¡ã€ã³ãã®ååãèšå®ããŸãã

ããã§ãåœåãtls-tris ãã©ã³ãã¯ãã¡ã€ã³ ããã³ãã䜿çšããããã«èšèšãããŠããªãã£ãããšã«æ³šæããŠãã ããã ãããã£ãŠãåœã®ãµãŒããŒåã«ã¯æ³šæãæããŸãã (空ã®ãµãŒããŒåãã£ãŒã«ãã client-hello ãã±ããã®äžéšãšããŠéä¿¡ãããŸã)ã ãããä¿®æ£ããã«ã¯ã察å¿ãã FakeServerName ãã£ãŒã«ãã TlsConfig æ§é ã«è¿œå ããå¿
èŠããããŸãã æ§é äœã®æšæºã® ServerName ãã£ãŒã«ãã¯äœ¿çšã§ããŸããã ããã¯å
éš TLS ã¡ã«ããºã ã«ãã£ãŠäœ¿çšãããå
ã®ã¡ã«ããºã ãšç°ãªãå ŽåãTLS ãã³ãã·ã§ã€ã¯ã¯ãšã©ãŒã§çµäºããŸãã TlsConfig æ§é ã®èª¬æã¯ãã¡ã€ã«ã«å«ãŸããŠããŸã tls/common.go - ãããä¿®æ£ããªããã°ãªããŸãã:


ããã«ããã¡ã€ã«ã«å€æŽãå ããå¿
èŠããããŸã tls/handshake_client.goTLS ãã³ãã·ã§ã€ã¯ã圢æãããšãã« FakeServerName ãã£ãŒã«ãã䜿çšããã«ã¯ã次ã®ããã«ããŸãã

ããã ãã§ãïŒ ãããžã§ã¯ããã³ã³ãã€ã«ããŠåäœã確èªã§ããŸãã ãã ããã¹ãã£ã³ãå®è¡ããåã«ãCloudFlare ã¢ã«ãŠã³ããèšå®ããå¿
èŠããããŸãã ããã§ãããã»ããã¢ãããäœãšèšããŸãããcloudflare ã§ã¢ã«ãŠã³ããäœæãããã¡ã€ã³ãããã«ãªã³ã¯ããã ãã§ãã DoHãWebSocketãESNI ã«é¢é£ãããã¹ãŠã®æ©èœã¯ãããã©ã«ãã§ CloudFlare ã«å«ãŸããŠããŸãã DNS ã¬ã³ãŒããæŽæ°ãããåŸãeSNI ããŒãã¯ãšãªããŠãã¡ã€ã³ã®åäœã確èªã§ããŸãã
dig +short txt _esni.df13tester.info 
ãã¡ã€ã³ã«åæ§ã®ãã®ã衚瀺ãããå Žåã¯ããã¹ãŠãããŸãæ©èœããŠããããšãæå³ãããã¹ãã«é²ãããšãã§ããŸãã
æã¡äžã Ubuntu äŸãã°ãDigitalOceanã®VPSãªã©ã§ãã远èšïŒç§ãã¡ã®å Žåã¯ããããã€ããŒããåãåã£ãã°ããã®VPSã®IPã¢ãã¬ã¹ãRoskomnadzorã®ãã©ãã¯ãªã¹ãã«èŒã£ãŠããŸããŸãããã§ããããããªãã«ãåããããªããšãèµ·ãã£ãŠãé©ããªãã§ãã ãããç§ã¯VPNã䜿ã£ãŠVPSã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸããã
ã³ã³ãã€ã«æžã¿ã® rsockstun ã VPS ã«ã³ããŒã (ã¡ãªã¿ã«ããã㯠Golang ã®ãã XNUMX ã€ã®å©ç¹ã§ãããããžã§ã¯ããèªåã§ã³ã³ãã€ã«ããã·ã¹ãã ã®ããã容éã®ã¿ã芳å¯ããŠä»»æã® Linux äžã§å®è¡ã§ããŸã)ããµãŒããŒéšåãèµ·åããŸãã

ãããŠã¯ã©ã€ã¢ã³ãéšåã¯æ¬¡ã®ããã«ãªããŸãã

ã芧ã®ãšãããã¯ã©ã€ã¢ã³ã㯠WebSocket ã䜿çšã㊠CloudFlare ããã³ããšã³ã ãµãŒããŒçµç±ã§ãµãŒããŒã«æ£åžžã«æ¥ç¶ããŸããã ãã³ãã«ããã³ãã«ãšãŸã£ããåãããã«æ©èœããããšã確èªããã«ã¯ããµãŒããŒäžã§éããŠããããŒã«ã«ã® Socks5 ãéããŠã«ãŒã« ãªã¯ãšã¹ããäœæããŸãã

次ã«ãDPI ãéä¿¡ãã£ãã«ã§äœãèªèããããèŠãŠã¿ãŸãããã

ãŸãããã³ãã©ãŒã¯ DoH ã¡ã«ããºã ã䜿çšã㊠Cloudflare DNS ãµãŒããŒã«æ¥ç¶ããŠå®å
ãã¡ã€ã³ã® eSNI ã㌠(ãã±ããçªå· 1 ïœ 19) ãååŸããæ¬¡ã«ããã³ããšã³ã ãµãŒããŒã«æ¥ç¶ã㊠TLS æ¥ç¶ã確ç«ãããã¡ã€ã³ã®èåŸã«é ããŸãã (ããã¯ãã¯ã©ã€ã¢ã³ãã®èµ·åæã«åœã®ãã¡ã€ã³ãæå®ãããŠããªãå Žåã®ããã©ã«ãå€ã§ã)ã åœã®ãã¡ã€ã³ãæå®ããã«ã¯ã-fronfDomain ãã©ã¡ãŒã¿ãŒã䜿çšããå¿
èŠããããŸãã
![]()

ããŠãããäžã€ã ããã©ã«ãã§ã¯ãCloudFalre ã¢ã«ãŠã³ãèšå®ã¯ãã¬ãã·ãã« SSL ã«èšå®ãããŠããŸãã ããã¯ãã¯ã©ã€ã¢ã³ãããCloudflareããã³ããšã³ããµãŒããŒãžã®httpsãªã¯ãšã¹ããæå·åãããã«ïŒhttpïŒãµãŒããŒã«è»¢éãããããšãæå³ããŸãã ãã®ããããã³ãã«ã®ãµãŒããŒéšåã ( -listen wss:0.0.0.0) ã§ã¯ãªããé SSL ã¢ãŒã ( -listen ws:0.0.0.0) ã§èµ·åããŸããã

å®å
šæå·åã¢ãŒãã«åãæ¿ããã«ã¯ã次ã®é
ç®ãéžæããå¿
èŠããããŸãã ãã«ãŸã㯠ãã«ïŒå³å¯ïŒ ãµãŒããŒäžã«å®éã®èšŒææžãããå Žåã ã¢ãŒããåãæ¿ãããšãhttps ãããã³ã«ã䜿çšã㊠CloudFlare ããã®æ¥ç¶ãåãå
¥ããããšãã§ããããã«ãªããŸãã ãã³ãã«ã®ãµãŒããŒåŽã®èªå·±çœ²åèšŒææžãçæããããšãå¿ããªãã§ãã ããã

奜å¥å¿æºçãªèªè
ã¯ããå°ããã ããããã¯ã©ã€ã¢ã³ãã¯ã©ããªãã®ãïŒã Windowsãçµå±ã®ãšããããã³ãã©ãŒã®äž»ãªçšéã¯ããããäŒæ¥ã®ãã·ã³ããµãŒããŒããããã¯ãšã³ãæ¥ç¶ã確ç«ããããšã§ããããããã¯éåžžåžžã«Windowsã§ããWindowsãç¹ã«ç¹å®ã®TLSã¹ã¿ãã¯ã§ãã³ãã©ãŒãã³ã³ãã€ã«ããã«ã¯ã©ãããã°ããã§ããããïŒãããã§ãGolangãããã«äŸ¿å©ã§ãããã瀺ããã1ã€ã®æ©èœã玹ä»ããŸããKaliããGOOS=windowsãã©ã¡ãŒã¿ã远å ããã ãã§ãWindowsåãã«çŽæ¥ã³ã³ãã€ã«ã§ããŸãã
GOARCH=amd64 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows go build -ldflags="-s -w"ãŸã㯠32 ããã ããŒãžã§ã³:
GOARCH=386 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows go build -ldflags="-s -w"å šãŠïŒ ãããŠããã以äžã®é¢åãªããšã¯å¿ èŠãããŸããã ããã¯å®éã«åäœããŸãïŒ

âw ããã³ âs ã³ã³ãã€ã© ãã©ã°ã¯ãå®è¡å¯èœãã¡ã€ã«ããäžèŠãªã¬ããŒãžãåé€ããŠãã¡ã€ã«ãæ°ã¡ã¬ãã€ãå°ããããããã«å¿
èŠã§ãã ããã«ãUPX ã䜿çšããŠããã±ãŒãžåããŠãµã€ãºãããã«çž®å°ããããšãã§ããŸãã
代ããã«ãçµè«ã®
ãã®èšäºã§ã¯ãGolang ã§æžããããã³ãã«ã®äŸã䜿çšããŠãTLS 1.3 ãããã³ã«ã®è峿·±ãæ©èœã«å®è£ ãããæ°ãããã¡ã€ã³ ããã³ã ãã¯ãããžã®äœ¿çšãæç¢ºã«ç€ºããŸããã åæ§ã®æ¹æ³ã§ãGolang ã§æžãããæ¢åã®ããŒã«ã CloudFlare ãµãŒããŒçµç±ã§åäœããããã«é©å¿ãããããšãã§ããŸãã - æå㪠C2ããŸã㯠Teamserver çµç±ã§äœæ¥ãããšãã« CobaltStrike Beacon ã« eSNI ãã¡ã€ã³ ããã³ãã䜿çšããã ãGolangããŸãã¯èšäºã®æåŸã®éšåã§èª¬æãã OpenSSL ã®ãããé©çšæžã¿ããŒãžã§ã³ã䜿çšããæšæº C++ ã§å®è£ ãããŸãã äžè¬ã«ãæ³ååã«ã¯å¶éããããŸããã
ãã³ãã©ãŒãš CloudFlare ã®äŸã¯æŠå¿µã®åœ¢ã§ç€ºãããŠããŸããããã®ã¿ã€ãã®ãã¡ã€ã³ ããã³ãã®é·æçãªèŠéãã«ã€ããŠèšãã®ã¯ãŸã å°é£ã§ãã çŸæç¹ã§ã¯ãCloudFlare ã®ã¿ã eSNI ããµããŒãããŠãããçè«äžããã®çš®ã®ããã³ãã£ã³ã°ãç¡å¹ã«ããããšããããšãã° SNI ãš eSNI ãäžèŽããªãå Žåã« TLS æ¥ç¶ãåæããããšã劚ãããã®ã¯ãããŸããã äžè¬çã«ã¯ãå°æ¥ãæããŠãããŸãã ãããä»ã®ãšããããkremlin.ruã®é ãèãã®äžã§åããšããèŠéãã¯éåžžã«é åçã«èŠããã ããã§ã¯ãããŸãããïŒ
æŽæ°ããããã³ãã©ãŒ ã³ãŒããšã³ã³ãã€ã«ãããå®è¡å¯èœ exe ãã¡ã€ã«ã¯ã次ã®ãããžã§ã¯ãã®å¥ã®ãã©ã³ãã«ãããŸãã ã GitHub ã®ãããžã§ã¯ã ããŒãžã«ãèãããããã¹ãŠã®ãã³ãã©ãŒã®åé¡ã«é¢ããåé¡ãæžãããšããå§ãããŸãã
åºæïŒ habr.com
