හැඳින්වීම
පළමු කොටසේ අපි සංකේතාත්මක SNI (eSNI) යාන්ත්රණය පිළිබඳ කෙටි විස්තරයක් ලබා දී ඇත. ඔවුන් එය මත පදනම්ව නවීන ඩීපීඅයි පද්ධති (බීලයින් ඩීපීඅයි සහ තහනම් ආර්කේඑන් රූට් ට්රැකර් උදාහරණය භාවිතා කරමින්) හඳුනාගැනීමෙන් වැළකී සිටිය හැකි ආකාරය පෙන්වා දුන් අතර මෙම යාන්ත්රණය මත පදනම්ව වසම් ඉදිරිපස නව අනුවාදයක් ද ගවේෂණය කළහ.
ලිපියේ දෙවන කොටසේදී, RedTeam විශේෂඥයින්ට ඔවුන්ගේ දුෂ්කර කාර්යයේදී ප්රයෝජනවත් වන වඩාත් ප්රායෝගික දේවල් වෙත අපි ගමන් කරමු. අවසානයේදී, අපගේ ඉලක්කය අවහිර කළ සම්පත් වෙත ප්රවේශය ලබා ගැනීම නොවේ (එවැනි සුළු දේවල් සඳහා අපට හොඳ පැරණි VPN ඇත). වාසනාවකට මෙන්, සෑම රසයක්, වර්ණයක් සහ අයවැයක් සඳහාම ඔවුන් පවසන පරිදි VPN සපයන්නන් විශාල ප්රමාණයක් ඇත.
අපි නූතන RedTeam මෙවලම් සඳහා වසම් ඉදිරිපස යාන්ත්රණය යෙදීමට උත්සාහ කරන්නෙමු, උදාහරණයක් ලෙස, Cobalt Strike, Empire යනාදී, සහ නවීන අන්තර්ගත පෙරීමේ පද්ධති අනුකරණය කිරීමට සහ මග හැරීමට අමතර හැකියාවන් ලබා දෙන්නෙමු.
අවසන් වරට අපි eSNI යාන්ත්රණය OpenSSL පුස්තකාලයට ක්රියාත්මක කළ අතර එය හුරුපුරුදු curl utility තුළ සාර්ථකව භාවිතා කළෙමු. එහෙත්, ඔවුන් පවසන පරිදි, ඔබ එක් කුකුළෙකුගෙන් පමණක් සෑහීමකට පත් නොවනු ඇත. ඇත්ත වශයෙන්ම, මම උසස් මට්ටමේ භාෂාවලින් සමාන දෙයක් ක්රියාත්මක කිරීමට කැමතියි. එහෙත්, අවාසනාවකට මෙන්, අන්තර්ජාලය හරහා ඉක්මන් සෙවීමක් අපව කලකිරීමට පත් කරයි, මන්ද eSNI යාන්ත්රණය සඳහා සහය සම්පූර්ණයෙන්ම ක්රියාත්මක වන්නේ GOLANG හි පමණි. මේ අනුව, අපට බොහෝ තේරීමක් නොමැත: එක්කෝ අපි පිරිසිදු C හෝ C++ වලින් ලියන්නේ පැච් කරන ලද OpenSSL පුස්තකාලය භාවිතයෙන්, නැතහොත් අපි CloudFlare වෙතින් වෙනම GOLANG දෙබලක භාවිතා කර අපගේ මෙවලම් එහි ගෙනයාමට උත්සාහ කරමු. ප්රතිපත්තිමය වශයෙන්, තවත් විකල්පයක් ඇත, වඩා සම්භාව්ය, නමුත් ඒ සමඟම කාලය ගත කිරීම - පයිතන් සඳහා eSNI සහාය ක්රියාත්මක කිරීමට. සියල්ලට පසු, https හැසිරවීමට Python OpenSSL ද භාවිතා කරයි. නමුත් අපි මෙම විකල්පය වෙනත් කෙනෙකු විසින් සංවර්ධනය කිරීම සඳහා තබමු, විශේෂයෙන් අපගේ ආදරණීය කොබෝල්ට් ස්ට්රයික් තෙවන පාර්ශවීය මෙවලම් (බාහිර C2 නාලිකාව) විසින් ගොඩනගා ඇති සන්නිවේදන නාලිකාවක් සමඟ හොඳින් වැඩ කිරීමට හැකි බැවින් ගොලාන්ග් හි ක්රියාත්මක කිරීම ගැන අපි සෑහීමට පත් වෙමු. - අපි මේ ගැන ලිපියේ අවසානයේ කතා කරමු.
තවත් උත්සාහ කරන්න...
Go හි ක්රියාත්මක කරන ලද එක් මෙවලමක් වන්නේ ජාලයට හැරවීම සඳහා අපගේ සංවර්ධනයයි - උමං මාර්ගයක් , මාර්ගය වන විට, ගෝලීය ස්ථාවරත්වය කඩාකප්පල් කිරීම අරමුණු කරගත් ඉතා ද්වේෂසහගත මෘදුකාංගයක් ලෙස මයික්රොසොෆ්ට් සහ සිමැන්ටෙක් වෙතින් මෙවලම් මගින් දැන් හඳුනාගෙන ඇත.

මේ අවස්ථාවේ දී ද පෙර සංවර්ධනය භාවිතා කිරීම ඉතා හොඳයි. නමුත් මෙහිදී කුඩා ගැටලුවක් පැන නගී. කාරණය නම්, මුලින් rsockstun සේවාදායකය සමඟ සමමුහුර්ත SSL සන්නිවේදන නාලිකාවක් භාවිතා කිරීමයි. මෙයින් අදහස් කරන්නේ සම්බන්ධතාවය එක් වරක් ස්ථාපිත කර ඇති අතර උමගෙහි ක්රියාකාරිත්වයේ සම්පූර්ණ කාලය සඳහා පවතින බවයි. තවද, ඔබ තේරුම් ගත් පරිදි, https ප්රොටෝකෝලය මෙම මෙහෙයුම් ආකාරය සඳහා අදහස් නොකෙරේ - එය ඉල්ලීම්-ප්රතිචාර ආකාරයෙන් ක්රියා කරයි, එහිදී සෑම නව http ඉල්ලීමක්ම නව tcp සම්බන්ධතාවයක් තුළ පවතී.
මෙම යෝජනා ක්රමයේ ඇති ප්රධාන අවාසිය නම්, සේවාදායකයා නව http ඉල්ලීමක් යවන තෙක් සේවාදායකයාට දත්ත මාරු කිරීමට නොහැකි වීමයි. එහෙත්, වාසනාවකට මෙන්, මෙම ගැටළුව විසඳීම සඳහා බොහෝ විකල්ප තිබේ - http ප්රොටෝකෝලය හරහා දත්ත ප්රවාහය කිරීම (සියල්ලට පසු, අපි කෙසේ හෝ අපගේ ප්රියතම රූපවාහිනී වැඩසටහන් නැරඹීමට සහ https මත ධාවනය වන ද්වාර වලින් සංගීතයට සවන් දීමට කළමනාකරණය කරමු, නමුත් වීඩියෝ සහ ශ්රව්ය සම්ප්රේෂණය කිරීම අන් කිසිවක් නොවේ. ප්රවාහ දත්ත වලට වඩා). HTTP ප්රොටෝකෝලය හරහා පූර්ණ-පරිපූර්ණ TCP සම්බන්ධතාවයක ක්රියාකාරිත්වය අනුකරණය කිරීමේ එක් තාක්ෂණයක් වන්නේ WebSockets තාක්ෂණයයි, එහි ප්රධාන සාරය වන්නේ සේවාදායකයා සහ වෙබ් සේවාදායකය අතර පූර්ණ ජාල සම්බන්ධතාවයක් සංවිධානය කිරීමයි.
අපගේ වාසනාවට (හුරේ!!!), මෙම තාක්ෂණය සියලු CloudFlare ගාස්තු සැලසුම්වල පෙරනිමියෙන් ඇතුළත් කර ඇති අතර eSNI සමඟ ඒකාබද්ධව විශිෂ්ට ලෙස ක්රියා කරයි. ඩොමේන්-ඉදිරිපස භාවිතා කිරීමට සහ නවීන ඩීපීඅයි වලින් සැඟවීමට අපි අපගේ උමං යන්ත්රයට ඉගැන්වීමට භාවිතා කරන්නේ මෙයයි.
WebSockets ගැන ටිකක්
පළමුවෙන්ම, අපි වෙබ් සොකට් කෙටියෙන් සහ සරලව පැහැදිලි කරන්නෙමු, එවිට අපි වැඩ කරන්නේ කුමක් ද යන්න පිළිබඳව සෑම කෙනෙකුටම අදහසක් ඇත.
Websocket තාක්ෂණය මඟින් ඔබට http සම්බන්ධතාවයේ සිට සාමාන්ය ජාල සොකට් ප්රවාහයකට තාවකාලිකව මාරු වීමට ඉඩ සලසයි, ස්ථාපිත TCP සම්බන්ධතාවය බිඳ දැමීමකින් තොරව. සේවාලාභියෙකුට websocket එකකට මාරු වීමට අවශ්ය වූ විට, එය එහි http ඉල්ලීමෙහි http ශීර්ෂ කිහිපයක් සකසයි. අවශ්ය ශීර්ෂ දෙකක් - සම්බන්ධතාවය: උත්ශ්රේණි කිරීම и උත්ශ්රේණි කිරීම: වෙබ්සොකට්. ඔහුට වෙබ්සොකට් ප්රොටෝකෝල අනුවාදය බලහත්කාරයෙන් නියම කළ හැක (තත්පර-වෙබ්සොක්සෙට්-අනුවාදය: 13) සහ base64 websocket identifier වැනි දෙයක් (Sec-WebSocket-Key: DAGDJSiREI3+KjDfwxm1FA==) සේවාදායකය http කේතය 101 Switching Protocols සමඟ ඔහුට ප්රතිචාර දක්වන අතර ශීර්ෂයන් ද සකසයි. සම්බන්ධතාවය, උත්ශ්රේණි කිරීම и තත්පර-වෙබ්සොකට්-පිළිගන්න. මාරු කිරීමේ ක්රියාවලිය පහත තිර රුවෙහි පැහැදිලිව පෙන්වා ඇත:

මෙයින් පසු, WebSocket සම්බන්ධතාවය ස්ථාපනය කිරීම සම්පූර්ණ ලෙස සැලකිය හැකිය. සේවාලාභියා සහ සේවාදායකය යන දෙකෙන්ම ඕනෑම දත්තයක් දැන් සපයනු ලබන්නේ http සමඟ නොව, WebSocket ශීර්ෂයන් සමඟය (ඒවා ආරම්භ වන්නේ byte 0x82). දැන් සේවාදායකයා දත්ත මාරු කිරීම සඳහා සේවාදායකයාගෙන් ඉල්ලීමක් බලා සිටීමට අවශ්ය නොවේ, මන්ද tcp සම්බන්ධතාවය කැඩී නැත.
වෙබ්සොකට් සමඟ වැඩ කිරීම සඳහා Golang පුස්තකාල කිහිපයක් ඇත. ඒවායින් වඩාත් ජනප්රිය වන්නේ සහ සම්මත . අපි දෙවැන්න භාවිතා කරන්නෙමු, මන්ද ... එය සරල, කුඩා වන අතර, ඔවුන් පවසන පරිදි, ටිකක් වේගයෙන් ක්රියා කරයි.
rsockstun සේවාදායක කේතය තුළ, අපට net.dial හෝ tls.dial ඇමතුම් අදාළ WebSocket ඇමතුම් සමඟ ප්රතිස්ථාපනය කිරීමට අවශ්ය වේ:


අපගේ උමං මාර්ගයේ සේවාලාභියා විශ්වීය කිරීමට සහ සෘජු SSL සම්බන්ධතාවයක් හරහා සහ WebSockset ප්රොටෝකෝලය හරහා ක්රියා කිරීමේ හැකියාව ඇති කිරීමට අපට අවශ්යය. මේ සඳහා අපි වෙනම කාර්යයක් සාදන්නෙමු func connectForWsSocks(ලිපින string, proxy string) දෝෂය {…} සමග සාදෘශ්යයෙන් connectForSocks() සහ සේවාලාභියා ආරම්භ කිරීමේදී සඳහන් කර ඇති සේවාදායක ලිපිනය ws: හෝ wss: (Secure WebSocket නම්) වලින් ආරම්භ වන්නේ නම් අපි එය වෙබ් සොකට් සමඟ වැඩ කිරීමට භාවිතා කරන්නෙමු.
උමගෙහි සේවාදායක පැත්ත සඳහා, අපි වෙබ් සොකට් සමඟ වැඩ කිරීම සඳහා වෙනම කාර්යයක් ද කරන්නෙමු. එය http පන්තියේ උදාහරණයක් සාදා http සම්බන්ධතා හසුරුව (wsHandler ශ්රිතය) සකසනු ඇත:

තවද අපි WebSocket සම්බන්ධතා හසුරුවෙහි සියලු සම්බන්ධතා සැකසුම් තර්කය (මුරපදයක් භාවිතා කරමින් සේවාලාභී අවසරය, yamux සැසියක් පිහිටුවීම සහ අවසන් කිරීම) ස්ථානගත කරන්නෙමු:

අපි ව්යාපෘතිය සම්පාදනය කර සේවාදායක කොටස දියත් කරමු:
./rsockstun –listen ws:127.0.0.1:8080 –pass P@ssw0rdඉන්පසු සේවාදායකයා කොටස:
./rsockstun -connect ws:127.0.0.1:8080 –pass P@ssw0rdඅපි දේශීය සත්කාරකයේ වැඩ පරීක්ෂා කරමු:


අපි domain fronting වෙත යමු
අපි වෙබ් සොකට් හදුනාගෙන ඇති බව පෙනේ. දැන් අපි කෙලින්ම eSNI සහ domain fronting වෙත යමු. කලින් සඳහන් කළ පරිදි, 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 frontend servers වෙතින් වන පොදු eSNI යතුරු වේ. මෙය සිදු කිරීම සඳහා, අපි කාර්යයන් තුනක් සාදන්නෙමු:
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 සේවාදායකය වෙත ඉල්ලීමක් සමඟ ජාල පැකට්ටුවක් නිර්මාණය කරයි, දෙවැන්න විමසුම් ප්රතිඵල විග්රහ කර වසමේ පොදු යතුරු වල අගයන් ලබා ගනී, තෙවනුව a පළමු දෙක සඳහා බහාලුම්.
මීලඟට, අපි අපගේ අලුතින් සාදන ලද කාර්යයට වෙබ් සොකට් සම්බන්ධතාවයක් එක් කරන්නෙමු connectForWsSocks වසමක් සඳහා eSNI යතුරු ඉල්ලා සිටීමේ ක්රියාකාරීත්වය. සේවාදායක කොටස ක්රියාත්මක වන තැන, අපි TLS පරාමිති සකස් කර ව්යාජ “ආවරණ වසමේ” නම ද සකසමු:

මුලදී, tls-tris ශාඛාව වසම් ඉදිරිපස භාවිතය සඳහා නිර්මාණය කර නොමැති බව මෙහිදී සටහන් කළ යුතුය. එබැවින්, එය ව්යාජ සේවාදායකයේ නමට අවධානය යොමු නොකරයි (Client-hello packet හි කොටසක් ලෙස හිස් serverName ක්ෂේත්රයක් යවනු ලැබේ). මෙය නිවැරදි කිරීම සඳහා, අපට TlsConfig ව්යුහයට අනුරූප FakeServerName ක්ෂේත්රය එක් කිරීමට සිදුවේ. අපට ව්යුහයේ සම්මත 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 එකක්. PS: අපගේ නඩුවේදී, අපගේ සැපයුම්කරුගෙන් අපට ලැබුණු VPS IP ලිපිනය Roskomnadzor හි කළු ලැයිස්තුවට ඇතුළත් විය. එබැවින් ඔබට සමාන දෙයක් සිදුවුවහොත් පුදුම නොවන්න. මගේ VPS වෙත ප්රවේශ වීමට මට VPN එකක් භාවිතා කිරීමට සිදු විය.
අපි දැනටමත් සම්පාදනය කර ඇති rsockstun VPS වෙත පිටපත් කරන්නෙමු (මෙය Golang හි තවත් අලංකාරයකි - ඔබට ව්යාපෘතිය තනිවම සම්පාදනය කර එය ඕනෑම Linux මත ධාවනය කළ හැකිය, පද්ධතියේ බිට් ධාරිතාව පමණක් නිරීක්ෂණය කරමින්) සහ සේවාදායක කොටස දියත් කරන්න:

ඉන්පසු සේවාදායකයා කොටස:

අපට පෙනෙන පරිදි, සේවාදායකයා වෙබ් සොකට් එකක් භාවිතයෙන් CloudFlare ඉදිරිපස සේවාදායකය හරහා සේවාදායකයට සාර්ථකව සම්බන්ධ විය. උමග හරියටම උමගක් මෙන් ක්රියා කරන්නේ දැයි පරීක්ෂා කිරීමට, ඔබට දේශීය socks5 හරහා curl ඉල්ලීමක් කළ හැකිය, සේවාදායකයේ විවෘත කරන්න:

දැන් අපි බලමු සන්නිවේදන නාලිකාවේ DPI දකින දේ:

පළමුව, උමං යන්ත්රය, DoH යාන්ත්රණය භාවිතා කරමින්, ගමනාන්ත වසම සඳහා eSNI යතුරු සඳහා Cloudflare DNS සේවාදායකය සම්බන්ධ කරයි (පැකට් අංක 1-19), ඉන්පසු ඉදිරිපස සේවාදායකය හා සම්බන්ධ වී TLS සම්බන්ධතාවයක් ඇති කරයි, වසම පිටුපස සැඟවී සිටී. (මෙය සේවාලාභියා ආරම්භ වන විට ව්යාජ වසමක් නියම කර නොමැති විට පෙරනිමි අගයයි). ඔබේ ව්යාජ වසම සඳහන් කිරීමට, ඔබ -fronfDomain පරාමිතිය භාවිතා කළ යුතුය:
![]()

දැන් තව එක දෙයක්. පෙරනිමියෙන්, CloudFalre ගිණුම් සැකසීම් නම්යශීලී SSL ලෙස සකසා ඇත. මෙයින් අදහස් කරන්නේ සේවාදායකයින් වෙතින් Cloudflare ඉදිරිපස සේවාදායකයන් වෙත https ඉල්ලීම් සංකේතනය නොකළ (http) අපගේ සේවාදායකය වෙත යොමු කරන බවයි. අපි උමගෙහි සේවාදායක කොටස ssl නොවන ආකාරයෙන් දියත් කළේ එබැවිනි (-listen ws:0.0.0.0), සහ (-listen wss:0.0.0.0).

සම්පූර්ණ සංකේතාංකන මාදිලිය වෙත මාරු වීම සඳහා, ඔබ තෝරාගත යුතුය පූර්ණ, හෝ සම්පූර්ණ (දැඩි) සේවාදායකයේ සැබෑ සහතිකයක් තිබේ නම්. මාදිලිය මාරු කිරීමෙන් පසු, අපට https ප්රොටෝකෝලය භාවිතයෙන් CloudFlare වෙතින් සම්බන්ධතා පිළිගැනීමට හැකි වනු ඇත. උමගෙහි සේවාදායක පැත්ත සඳහා ස්වයං-අත්සන සහිත සහතිකයක් උත්පාදනය කිරීමට අමතක නොකරන්න.

විමසිලිමත් පාඨකයා අසනු ඇත: “සේවාදායකයා ගැන කුමක් කිව හැකිද? Windows"සියල්ලට පසු, උමං මාර්ගයක ප්රධාන භාවිතය බොහෝ විට ආයතනික යන්ත්ර සහ සේවාදායකයන්ගෙන් පසු-අන්ත සම්බන්ධතාවයක් ඇති කර ගැනීම විය හැකි අතර, ඒවා සාමාන්යයෙන් සැමවිටම වින්ඩෝස් වේ. විශේෂයෙන් නිශ්චිත TLS තොගයක් සමඟ වින්ඩෝස් සඳහා උමං මාර්ගයක් සම්පාදනය කරන්නේ කෙසේද?" දැන් අපි Golang කොතරම් පහසුද යන්න පෙන්නුම් කරන තවත් විශේෂාංගයක් හඳුන්වා දෙන්නෙමු. අපි GOOS=windows පරාමිතිය එකතු කිරීමෙන් Kali වෙතින් සෘජුවම Windows සඳහා සම්පාදනය කරමු:
GOARCH=amd64 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows go build -ldflags="-s -w"හෝ 32-bit අනුවාදය:
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 හරහා වැඩ කරන විට eSNI වසම්-ඉදිරිපස භාවිතා කිරීමට CobaltStrike Beacon බල කරන්න , Golang හි ක්රියාත්මක කර ඇත, හෝ අපි ලිපියේ අවසාන කොටසේ කතා කළ OpenSSL හි පැච් කරන ලද අනුවාදයක් භාවිතා කරමින් සම්මත C++ හි. පොදුවේ, පරිකල්පනය සඳහා සීමාවන් නොමැත.
ටනලර් සහ ක්ලවුඩ් ෆ්ලෙයාර් සමඟ උදාහරණය සංකල්පයක ස්වරූපයෙන් ඉදිරිපත් කර ඇති අතර මෙම වර්ගයේ ඩොමේන් ෆ්රෙන්ටින් වල දිගුකාලීන අපේක්ෂාවන් ගැන පැවසීම තවමත් අපහසුය. මේ මොහොතේ, CloudFlare පමණක් eSNI සඳහා සහය දක්වන අතර, න්යායාත්මකව, එවැනි ඉදිරිපස අක්රිය කිරීමෙන් කිසිවක් වළක්වන්නේ නැත, උදාහරණයක් ලෙස, SNI සහ eSNI නොගැලපේ නම් tls සම්බන්ධතා බිඳ දැමීම. පොදුවේ, අනාගතය පවසනු ඇත. නමුත් දැනට, "kremlin.ru ආවරණය" යටතේ වැඩ කිරීමේ අපේක්ෂාව තරමක් පෙළඹවීමක් පෙනේ. එය නොවේ ද?
යාවත්කාලීන කරන ලද උමං කේත, මෙන්ම සම්පාදනය කරන ලද ක්රියාත්මක කළ හැකි exe ගොනු, ව්යාපෘතියේ වෙනම ශාඛාවක පිහිටා ඇත. . GitHub හි ව්යාපෘති පිටුවේ ඇති විය හැකි සියලුම උමං මාර්ග ගැටළු පිළිබඳ ගැටළුවක් ලිවීම වඩා හොඳය.
මූලාශ්රය: www.habr.com
