சேவையகத்தை அழிக்கும் ஹேக்கர் கேமின் பின்தளம் எப்படி உருவாக்கப்பட்டது

சேவையகத்தை அழிக்கும் ஹேக்கர் கேமின் பின்தளம் எப்படி உருவாக்கப்பட்டது
சேவையகத்தின் அழிவுடன் எங்கள் லேசர் தேடல் எவ்வாறு ஏற்பாடு செய்யப்பட்டது என்பதை நாங்கள் தொடர்ந்து உங்களுக்குச் சொல்கிறோம். முந்தையதைத் தொடங்குங்கள் தேடலைத் தீர்ப்பது பற்றிய கட்டுரை.

மொத்தத்தில், விளையாட்டின் பின்தளத்தில் 6 கட்டடக்கலை அலகுகள் இருந்தன, இந்த கட்டுரையில் நாம் பகுப்பாய்வு செய்வோம்:

  1. கேம் பொறிமுறைகளுக்குப் பொறுப்பான கேம் நிறுவனங்களின் பின்தளம்
  2. VPS இல் பின்தளம் மற்றும் தள தரவு பரிமாற்ற பேருந்து
  3. பின்தளத்தில் கோரிக்கைகள் (விளையாட்டு கூறுகள்) இருந்து Arduino மற்றும் தளத்தில் வன்பொருள் மொழிபெயர்ப்பாளர்
  4. ரிலேக்களைக் கட்டுப்படுத்துவதற்குப் பொறுப்பான அர்டுயினோ, மொழிபெயர்ப்பாளரிடமிருந்து கட்டளைகளைப் பெற்று உண்மையான வேலையைச் செய்தார்.
  5. உண்மையான சாதனங்கள்: விசிறி, மாலைகள், தரை விளக்குகள் போன்றவை.
  6. Frontend - ஃபால்கன் இணையதளம், இதில் இருந்து வீரர்கள் சாதனங்களைக் கட்டுப்படுத்தினர்

அவை ஒவ்வொன்றையும் கடந்து செல்லலாம்.

விளையாட்டு நிறுவனங்களின் பின்தளம்

பின்தளமானது ஸ்பிரிங் பூட் பயன்பாடாக செயல்படுத்தப்பட்டது: இது பல ஓய்வுக் கட்டுப்படுத்திகள், ஒரு வெப்சாக்கெட் எண்ட்பாயிண்ட் மற்றும் கேம் லாஜிக் கொண்ட சேவைகளைக் கொண்டிருந்தது.

மூன்று கட்டுப்படுத்திகள் மட்டுமே இருந்தன:

  • மெகாட்ரான். தற்போதைய மெகாட்ரான் பக்கம் GET கோரிக்கைகள் மூலம் அனுப்பப்பட்டது: சக்தியை இயக்குவதற்கு முன்னும் பின்னும். POST கோரிக்கையின் மூலம் லேசர் சுடப்பட்டது.
  • டில்டே பக்கங்களை மேப்பிங் செய்வதன் மூலம் அவை பக்கத்தின் பெயரால் வழங்கப்படுகின்றன. டில்டே ஏற்றுமதிக்கான பக்கங்களை அசல் பெயர்களுடன் அல்ல, அக ஐடி மற்றும் இணக்கத் தகவலுடன் உருவாக்குகிறது.
  • போலி-உயர்-சுமை சர்வர் கேப்ட்சாவை வழங்க கேப்ட்சா கட்டுப்படுத்தி.

கேஜெட்களைக் கட்டுப்படுத்த Websocket எண்ட்பாயிண்ட் பயன்படுத்தப்பட்டது: விளக்குகள், மாலை மற்றும் கடிதங்கள். சாதனத்தின் தற்போதைய நிலையை அனைத்து வீரர்களுக்கும் ஒத்திசைவாகக் காண்பிக்க இது தேர்ந்தெடுக்கப்பட்டது: அது ஆன் அல்லது ஆஃப், ஆக்டிவ் அல்லது இல்லாவிட்டாலும், தற்போது சுவரில் எந்த எழுத்தின் நிறம் எரிகிறது. லேசரை ஆன் செய்யும் பணியை இன்னும் கொஞ்சம் கடினமாக்கும் வகையில், மாலை மற்றும் லேசருக்கு ஒரே உள்நுழைவு மற்றும் கடவுச்சொல் நிர்வாகி/நிர்வாகியுடன் அங்கீகாரத்தைச் சேர்த்துள்ளோம்.

வீரர்கள் மாலையை ஆன் செய்வதன் மூலம் அதை சோதித்து லேசர் மூலம் அதையே மீண்டும் செய்யலாம்.

தேவையற்ற தேர்வு மூலம் வீரர்களைத் துன்புறுத்தக்கூடாது என்பதற்காக இதுபோன்ற அற்பமான உள்நுழைவு-கடவுச்சொல் ஜோடியைத் தேர்ந்தெடுத்தோம்.

பணியை இன்னும் கொஞ்சம் சுவாரஸ்யமாக்க, mongodb இன் பொருள் ஐடிகள் அறையில் சாதன அடையாளங்காட்டிகளாகப் பயன்படுத்தப்பட்டன.

ObjectId ஒரு நேர முத்திரையைக் கொண்டுள்ளது: இரண்டு சீரற்ற மதிப்புகள், அவற்றில் ஒன்று சாதன அடையாளங்காட்டியின் அடிப்படையில் எடுக்கப்பட்டது, இரண்டாவது அதை உருவாக்கும் செயல்முறையின் pid மற்றும் எதிர் மதிப்பின் அடிப்படையில் எடுக்கப்பட்டது. லேசர் சாதன அடையாளங்காட்டியின் தேர்வு மிகவும் சுவாரஸ்யமாக இருக்கும் வகையில், அடையாளங்காட்டிகளை வழக்கமான இடைவெளியில் மற்றும் வெவ்வேறு பிட் செயல்முறைகளுடன் உருவாக்க விரும்பினேன், ஆனால் பொதுவான கவுண்டருடன். இருப்பினும், இறுதியில், ஒவ்வொருவரும் எதிர் மதிப்பில் மட்டுமே வேறுபடும் அடையாளங்காட்டிகளுடன் தொடங்கினார்கள். இது படிநிலையை மிகவும் எளிமையாக்கியிருக்கலாம் மற்றும் objectId கட்டமைப்பின் பகுப்பாய்வு தேவையில்லை.

பின்தளத்தில் கோரிக்கைகளிலிருந்து மொழிபெயர்ப்பாளர்

பைதான் ஸ்கிரிப்ட், டைமர்களில் பணியாற்றி, கேமிங் சுருக்கங்களிலிருந்து அவற்றை இயற்பியல் மாதிரியாக மொழிபெயர்த்தவர். எடுத்துக்காட்டாக, "தரை விளக்கை இயக்கவும்" → "ரிலே N2 ஐ இயக்கவும்."

ஸ்கிரிப்ட் RabbitMQ வரிசையில் இணைக்கப்பட்டு, வரிசையில் இருந்து Arduino க்கு கோரிக்கைகளை மாற்றியது. இது இணையான ஒளி மாறுதலின் தர்க்கத்தையும் செயல்படுத்தியது: சில சாதனங்களுடன் சேர்ந்து, அவற்றில் உள்ள ஒளி இயக்கப்பட்டது, எடுத்துக்காட்டாக, ஆரம்பத்தில் மெகாட்ரானுக்கு மின்சாரம் வழங்கப்பட்டபோது, ​​​​அது மேடை ஒளியால் ஒளிரப்பட்டது. முழு காட்சியின் ஒளிப்பதிவுக்கான லைட்டிங் வடிவமைப்பு எங்கள் திட்ட இணை தயாரிப்பாளரும் தயாரிப்பு வடிவமைப்பாளருமான இலியா செரோவின் சிறந்த வேலையைப் பற்றிய ஒரு தனி கதையாகும், மேலும் அதைப் பற்றி ஒரு தனி இடுகையில் கூறுவோம்.

டைமரைப் பயன்படுத்தி ஷ்ரெடரைத் துவக்கி, படத்தை டிவிக்கு அனுப்புவதற்கான தர்க்கத்திற்கும் மொழிபெயர்ப்பாளர் பொறுப்பு: ஷ்ரெடரைத் தொடங்குவதற்கான டைமர், ஒரு கத்தி கேபிபரா, விளையாட்டின் முடிவில் ஒரு விளம்பரம்.

மெகாட்ரான் டோக்கனை உருவாக்குவதற்கான தர்க்கம் எவ்வாறு கட்டமைக்கப்பட்டது

டெஸ்ட் ஷாட்

ஒவ்வொரு 25 வினாடிகளுக்கும் ஒரு புதிய டோக்கன் உருவாக்கப்படுகிறது மற்றும் 10/10 சக்தியில் 255 வினாடிகளுக்கு லேசரை இயக்க பயன்படுத்தலாம். இணைப்பு மெகாட்ரான் குறியீட்டுடன் கிதுப்.

லேசர் பின்னர் 1 நிமிடம் குளிர்ந்தது - இந்த நேரத்தில் அது கிடைக்கவில்லை மற்றும் புதிய ஷாட் கோரிக்கைகளை ஏற்கவில்லை.

இந்த சக்தி கயிற்றின் மூலம் எரிக்க போதுமானதாக இல்லை, ஆனால் எந்த வீரரும் மெகாட்ரானை சுடலாம் மற்றும் லேசர் கற்றை செயலில் இருப்பதைக் காணலாம்.

டோக்கனை உருவாக்க MD5 ஹாஷிங் அல்காரிதம் பயன்படுத்தப்பட்டது. மற்றும் திட்டம் செயல்பட்டது MD5 + கவுண்டர் + ரகசியத்திலிருந்து MD5 ஒரு போர் டோக்கனுக்கு மற்றும் ஒரு சோதனை டோக்கனுக்கான ரகசியம் இல்லாமல்.

MD5 என்பது எங்கள் ஆதரவாளரான பாவெல் செய்த வணிகத் திட்டத்திற்கான குறிப்பு. சில ஆண்டுகளுக்கு முன்பு, இந்த திட்டம் MD5 ஐப் பயன்படுத்தியது, மேலும் இது ஒரு காலாவதியான குறியாக்க வழிமுறை என்று அவர் திட்ட வடிவமைப்பாளரிடம் கூறியபோது, ​​அவர்கள் MD5 இலிருந்து MD5 ஐப் பயன்படுத்தத் தொடங்கினர். நாங்கள் மிகவும் நோப் திட்டத்தை சாத்தியமாக்க முடிவு செய்ததால், அவர் எல்லாவற்றையும் நினைவில் வைத்துக் கொண்டு ஒரு சிறிய குறிப்பு செய்ய முடிவு செய்தார்.

போர் ஷாட்

மெகாட்ரானின் போர் முறை 100 வாட்களில் 3% லேசர் சக்தியாகும். எடையைத் தாங்கிய கயிற்றை எரிக்கவும், மீன்வளத்தை உடைக்கவும், சர்வரில் தண்ணீர் ஊற்றவும் இது 2 நிமிடங்களுக்கு போதுமானது.

திட்டத்தின் கிதுப்பில் சில குறிப்புகளை நாங்கள் விட்டுவிட்டோம்: அதாவது, டோக்கன் தலைமுறை குறியீடு, சோதனை மற்றும் போர் டோக்கன்கள் ஒரே கவுண்டர் காட்டி அடிப்படையில் உருவாக்கப்படுகின்றன என்பதை ஒருவர் புரிந்து கொள்ள முடியும். ஒரு போர் டோக்கனின் விஷயத்தில், எதிர் மதிப்புக்கு கூடுதலாக, ஒரு உப்பும் பயன்படுத்தப்படுகிறது, இது கடைசி இரண்டு எழுத்துக்களைத் தவிர்த்து, இந்த சுருக்கத்தை மாற்றியமைக்கும் வரலாற்றில் கிட்டத்தட்ட முழுமையாக உள்ளது.

இந்தத் தரவை அறிந்தால், உப்பின் கடைசி 2 சின்னங்களை வரிசைப்படுத்த முடிந்தது மற்றும் உண்மையில் லாஸ்டிலிருந்து எண்கள் ஹெக்ஸாடெசிமல் அமைப்பிற்கு மாற்றப்பட்டதைக் கண்டறிய முடிந்தது.

பின்னர் வீரர்கள் கவுண்டர் மதிப்பைப் பிடிக்க வேண்டும் (சோதனை டோக்கனை பகுப்பாய்வு செய்வதன் மூலம்) மற்றும் அடுத்த கவுண்டர் மதிப்பு மற்றும் முந்தைய கட்டத்தில் தேர்ந்தெடுக்கப்பட்ட உப்பைப் பயன்படுத்தி போர் டோக்கனை உருவாக்க வேண்டும்.

ஒவ்வொரு சோதனை ஷாட் மற்றும் ஒவ்வொரு 25 வினாடிகளிலும் கவுண்டர் வெறுமனே அதிகரிக்கப்பட்டது. இதைப் பற்றி நாங்கள் எங்கும் எழுதவில்லை, இது ஒரு சிறிய விளையாட்டு ஆச்சரியமாக இருக்க வேண்டும்.

கேப்ட்சா தொடர்பு சேவை

கேமிங் உலகில், மின்விசிறியை இயக்கவும், குறிப்புடன் ஃபிளிப்சார்ட்டைத் திறக்கவும் ஏற்றப்பட வேண்டிய அதே கேப்ட்சா இதுதான். கேமராவுக்கு அடுத்ததாக சுமை கண்காணிப்புடன் கூடிய லேப்டாப் இருந்தது.

சேவையகத்தை அழிக்கும் ஹேக்கர் கேமின் பின்தளம் எப்படி உருவாக்கப்பட்டது

சேவை தற்போதைய சுமையாக கண்காணிப்பில் எதைக் காட்ட வேண்டும் என்பதைக் கணக்கிட்டேன்: வெப்பநிலை மற்றும் CPU மின்விசிறி. அளவீடுகள் டைம்பேஸ் தரவுத்தளத்திற்கு மாற்றப்பட்டு கிராஃபானாவால் வரையப்பட்டது.

கடந்த 5 வினாடிகளில் கேப்ட்சாவைக் காண்பிக்க 50 க்கும் மேற்பட்ட கோரிக்கைகள் இருந்தால், சுமை நிலையான + சீரற்ற எண்ணிக்கையிலான படிகளால் அதிகரித்தது. இரண்டு நிமிடங்களில் 100% சுமை அடையலாம் என்பது கணக்கீடு.

உண்மையில், இறுதி ஆட்டத்தில் காட்டப்பட்டதை விட, சேவையில் அதிக தர்க்கம் இருந்தது: CPU ஃபேனின் சுழற்சி மட்டுமே தெரியும் வகையில் மானிட்டரை வைத்தோம்.

தேடலின் தொடக்கத்தில் அவர்கள் கிராஃபானை பால்கன் இணையதளத்தில் இருந்து அணுகும்படி விட்டுவிட விரும்பினர். ஆனால் அது பின்தளத்தில் பயன்பாட்டு அறிக்கையிலிருந்து ஸ்பிரிங்பூட் அளவீடுகளையும் கொண்டுள்ளது, அதை அழிக்க எங்களுக்கு நேரம் இல்லை, எனவே அதற்கான அணுகலைத் தடுக்க முடிவு செய்தோம். சரியாக - தேடலின் தொடக்கத்தில் கூட, சில வீரர்கள் பயன்பாடு ஸ்பிரிங்பூட் கட்டமைப்பில் எழுதப்பட்டதாக யூகித்தனர் மற்றும் சில சேவைகளின் பெயர்களை கூட தோண்டி எடுத்தனர்.

ஹோஸ்டிங் மற்றும் டேட்டா பஸ்

RabbitMQ இயங்கும் VPS சேவையகமான பின்தளத்தில் இருந்து தளத்திற்கு தகவலை மாற்றுவதற்கான ஒரு கருவி.

பின்தளம் மற்றும் தரவு பேருந்து இயக்கத்தில் வைக்கப்பட்டது எங்கள் VPS. அதன் சக்தி நீங்கள் திரையில் பார்த்த கணினியுடன் ஒப்பிடத்தக்கது: இரண்டு ஜிகாபைட் ரேம் கொண்ட 2-கோர் VPS. உச்ச சுமை சில நாட்களுக்கு மட்டுமே திட்டமிடப்பட்டதால், ஆதாரங்களுக்காக கட்டணம் வசூலிக்கப்பட்டது - குறுகிய காலத்திற்கு VPS ஐ ஏற்ற திட்டமிட்டுள்ள எங்கள் வாடிக்கையாளர்கள் இதைத்தான் செய்கிறார்கள். நாங்கள் எதிர்பார்த்ததை விட சுமை அதிகமாக இருந்தது, மேலும் நிலையான கட்டணம் அதிக லாபம் தரும். நீங்கள் தேடலைச் செய்தால், வரி கட்டணங்களைத் தேர்ந்தெடுக்கவும் டர்போ.

DDoSa இலிருந்து சேவையகத்தைப் பாதுகாக்க, நாங்கள் Cloudflare ஐப் பயன்படுத்தினோம்.

வி.பி.எஸ் எல்லாவற்றையும் மரியாதையுடன் தாங்கியது என்று சொல்வது மதிப்பு.

ரிலேக்களைக் கட்டுப்படுத்துவதற்குப் பொறுப்பான அர்டுயினோ, மொழிபெயர்ப்பாளரிடமிருந்து கட்டளைகளைப் பெற்று உண்மையான வேலையைச் செய்தார்.

திட்டத்தின் வன்பொருள் பகுதியைப் பற்றிய அடுத்த கட்டுரையின் தலைப்பு இதுவாகும்: பின்தளம் ஒரு குறிப்பிட்ட ரிலேவை இயக்குவதற்கான கோரிக்கைகளை அனுப்பியது. பின்தளத்தில் கிட்டத்தட்ட அனைத்து நிறுவனங்களும் தெரியும் மற்றும் அதிலிருந்து வரும் கோரிக்கைகள் "இந்த உட்பொருளை இயக்கு" போல் தெரிகிறது. தளத்தின் ஆரம்ப சோதனைக்காக நாங்கள் இதைச் செய்தோம் (நாங்கள் இன்னும் அனைத்து Arduino மற்றும் ரிலேக்களையும் சேகரிக்கவில்லை), இறுதியில் எல்லாவற்றையும் அப்படியே விட்டுவிட்டோம்.

முன்பக்கம்

நாங்கள் விரைவாக டில்டில் தளத்தை உருவாக்கினோம், அது ஒரு வேலை நாள் எடுத்து எங்கள் பட்ஜெட்டில் 30 ஆயிரத்தை சேமித்தோம்.

ஆரம்பத்தில், தளத்தை வெறுமனே ஏற்றுமதி செய்து, நாங்கள் தவறவிட்ட தர்க்கத்தைச் சேர்க்க நினைத்தோம், ஆனால் இதைச் செய்வதிலிருந்து எங்களைத் தடைசெய்யும் பயன்பாட்டு விதிமுறைகளுக்குள் நுழைந்தோம்.

உரிமத்தை மீற நாங்கள் தயாராக இல்லை, எனவே இரண்டு விருப்பங்கள் இருந்தன: எல்லாவற்றையும் நாமே செயல்படுத்த அல்லது டில்டாவை நேரடியாக தொடர்பு கொள்ளவும், திட்டத்தைப் பற்றி பேசவும் மற்றும் குறியீட்டை மாற்ற அனுமதி கேட்கவும்.

நாங்கள் இரண்டாவது விருப்பத்தைத் தேர்ந்தெடுத்தோம், அவர்கள் எங்களை பாதியிலேயே சந்தித்தது மட்டுமல்லாமல், ஒரு வருட இலவச வணிகக் கணக்கையும் எங்களுக்கு வழங்கினர், அதற்காக நாங்கள் அவர்களுக்கு மிகவும் நன்றியுள்ளவர்களாக இருக்கிறோம். சோகோலின் இணையதள வடிவமைப்பை அவர்களிடம் காண்பிப்பது மிகவும் அருவருப்பாக இருந்தது.

இதன் விளைவாக, அடிப்படை சாதனங்களுக்கு கோரிக்கைகளை அனுப்புவதற்கான முன்பகுதியில் js லாஜிக்கை இணைத்துள்ளோம், மேலும் கேம் கூறுகளை ஆன் மற்றும் ஆஃப் செய்வதற்கான பொத்தான்களின் பாணியை சிறிது மாற்றினோம்.

வலைத்தள வடிவமைப்பு

தேடல்களின் வரலாறு, இது ஒரு தனி அத்தியாயத்திற்கு மதிப்புள்ளது.

நாங்கள் பழைய பாணியிலான தளத்தை உருவாக்க விரும்புகிறோம், ஆனால் வடிவமைப்பின் அனைத்து அடிப்படை விதிகளையும் மீறும் முற்றிலும் அருவருப்பான ஒன்றை உருவாக்க விரும்புகிறோம். அதே நேரத்தில், நம்பகத்தன்மையை பராமரிப்பது முக்கியம்: இது ENT கதையை உடைக்கக்கூடாது, ஆசிரியரின் பாசாங்குத்தனத்தை நிரூபிக்க வேண்டும், மேலும் அத்தகைய தளம் இருக்கக்கூடும் என்று வீரர்கள் நம்ப வேண்டும் மற்றும் வாடிக்கையாளர்களைக் கூட கொண்டு வர வேண்டும். அவர் கொண்டு வந்தார்! கேம் நடந்து கொண்டிருந்த போது, ​​இணையதளங்களை உருவாக்க இருமுறை தொடர்பு கொண்டோம்.

முதலில் நான் வடிவமைப்பை நானே செய்தேன், மேலும் gif களையும் பளபளப்பான கூறுகளையும் சேர்க்க முயற்சித்தேன். ஆனால் எனது 10 வருட டிசைனர் கணவர் தோளுக்கு மேல் பார்த்து "மிகவும் நல்லது" என்று நிராகரித்தார். வடிவமைப்பு விதிகளை மீற, நீங்கள் அவற்றை அறிந்து கொள்ள வேண்டும்.

சேவையகத்தை அழிக்கும் ஹேக்கர் கேமின் பின்தளம் எப்படி உருவாக்கப்பட்டது

வெறுப்பின் நீடித்த உணர்வைத் தூண்டும் பல வண்ண கலவைகள் உள்ளன: பச்சை மற்றும் சிவப்பு சம செழுமை, சாம்பல் மற்றும் இளஞ்சிவப்பு, நீலம் மற்றும் பழுப்பு. இறுதியில், நாங்கள் சிவப்பு மற்றும் பச்சை நிறங்களின் அடிப்படை வண்ணங்களைத் தேர்ந்தெடுத்து, பூனையுடன் ஜிஃப்களைச் சேர்த்து, ஒரு பங்கு புகைப்படத்திலிருந்து சோகோலோவின் 3-4 புகைப்படங்களைத் தேர்ந்தெடுத்தோம். எனக்கு சில தேவைகள் மட்டுமே இருந்தன: ஒரு நடுத்தர வயது மனிதன், இரண்டு அளவுகளில் மிகவும் பெரிய பொருத்தமற்ற சூட் அணிந்து "தொழில்முறை ஸ்டுடியோ போட்டோ ஷூட்" போஸில். சோதனைக்காக, அவர்கள் அதை நண்பர்களிடம் காட்டி, "உங்களுக்கு எப்படி பிடிக்கும்?"

வடிவமைப்பு மேம்பாட்டின் போது, ​​என் கணவர் ஒவ்வொரு அரை மணி நேரத்திற்கும் ஒருமுறை படுத்துக் கொள்ள வேண்டும்; ஹெலிகாப்டர் பறக்கத் தொடங்கியது. பாஷா தனது கண்களைப் பாதுகாக்க, முகப்புப் பகுதியை முடிக்கும் போது பெரும்பாலான திரையில் டெவலப்பர் கன்சோலைத் திறக்க முயன்றார்.

உண்மையான சாதனங்கள்

மின்விசிறிகள் மற்றும் விளக்குகள் திட-நிலை ரிலேக்கள் மூலம் ஏற்றப்பட்டன, இதனால் அவை உடனடியாக முழு சக்தியில் இயங்காது - இதனால் கண்காணிப்புக்கு இணையாக சக்தி அதிகரிக்கும்.

ஆனால் விளையாட்டின் வன்பொருள் பகுதி மற்றும் தளத்தின் உண்மையான கட்டுமானம் பற்றி அடுத்த இடுகையில் இதைப் பற்றி பேசுவோம்.

காத்திருங்கள்!

சேவையகத்தை அழிக்கும் தேடலைப் பற்றிய பிற கட்டுரைகள்

சேவையகத்தை அழிக்கும் ஹேக்கர் கேமின் பின்தளம் எப்படி உருவாக்கப்பட்டது

ஆதாரம்: www.habr.com

கருத்தைச் சேர்