பவர்ஷெல்லில் ரிவர்ஸ் சாக்ஸ்5 ப்ராக்ஸியை எழுதுதல். பகுதி 1

3 பாகங்களில் ஆராய்ச்சி மற்றும் மேம்பாடு பற்றிய கதை. பகுதி 1 ஆய்வுக்குரியது.
பல பீச் மரங்கள் உள்ளன - இன்னும் அதிக நன்மைகள்.

பிரச்சனை அறிக்கை

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

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

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

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

இதேபோன்ற ஒன்றைக் கண்டுபிடிக்க அல்லது கண்டுபிடிக்க முயற்சிப்போம்.

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

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

  • Windows-7-10 OS இல் வேலை. பெரும்பாலான கார்ப்பரேட் நெட்வொர்க்குகள் விண்டோஸைப் பயன்படுத்துவதால்;
  • ips ஐப் பயன்படுத்தி முட்டாள்தனமாக கேட்பதைத் தவிர்க்க கிளையன்ட் SSL வழியாக சேவையகத்துடன் இணைக்கிறது;
  • இணைக்கும் போது, ​​கிளையன்ட் அங்கீகாரத்துடன் ப்ராக்ஸி சர்வர் மூலம் வேலையை ஆதரிக்க வேண்டும், ஏனெனில் பல நிறுவனங்களில், ப்ராக்ஸி மூலம் இணைய அணுகல் ஏற்படுகிறது. உண்மையில், கிளையன்ட் இயந்திரம் அதைப் பற்றி எதுவும் தெரியாது, மேலும் ப்ராக்ஸி ஒரு வெளிப்படையான பயன்முறையில் பயன்படுத்தப்படுகிறது. ஆனால் நாம் அத்தகைய செயல்பாட்டை வழங்க வேண்டும்;
  • கிளையன்ட் பகுதி சுருக்கமாகவும் சிறியதாகவும் இருக்க வேண்டும்;
    வாடிக்கையாளரின் நெட்வொர்க்கில் வேலை செய்ய, நீங்கள் கிளையன்ட் கணினியில் OpenVPN ஐ நிறுவலாம் மற்றும் உங்கள் சேவையகத்திற்கு ஒரு முழு அளவிலான சுரங்கப்பாதையை உருவாக்கலாம் (அதிர்ஷ்டவசமாக, openvpn கிளையன்ட்கள் ப்ராக்ஸி மூலம் வேலை செய்யலாம்). ஆனால், முதலாவதாக, இது எப்போதும் வேலை செய்யாது, ஏனென்றால் நாங்கள் அங்கு உள்ளூர் நிர்வாகிகளாக இருக்கக்கூடாது, இரண்டாவதாக, இது மிகவும் சத்தம் போடும், ஒரு கண்ணியமான SIEM அல்லது HIPS உடனடியாக நம்மை "திறந்துவிடும்". வெறுமனே, எங்கள் கிளையன்ட் இன்லைன் கட்டளை என்று அழைக்கப்பட வேண்டும், எடுத்துக்காட்டாக, பல பாஷ் ஷெல்கள் செயல்படுத்தப்பட்டு, கட்டளை வரி வழியாக தொடங்கப்படுகின்றன, எடுத்துக்காட்டாக, ஒரு வார்த்தை மேக்ரோவிலிருந்து கட்டளைகளை இயக்கும் போது.
  • எங்கள் சுரங்கப்பாதை பல-திரிக்கப்பட்டதாக இருக்க வேண்டும் மற்றும் ஒரே நேரத்தில் பல இணைப்புகளை ஆதரிக்க வேண்டும்;
  • கிளையன்ட்-சர்வர் இணைப்புக்கு சில வகையான அங்கீகாரம் இருக்க வேண்டும், இதனால் சுரங்கப்பாதை எங்கள் வாடிக்கையாளருக்காக மட்டுமே நிறுவப்பட்டது, மேலும் குறிப்பிட்ட முகவரி மற்றும் போர்ட்டில் எங்கள் சேவையகத்திற்கு வரும் அனைவருக்கும் அல்ல. வெறுமனே, பூனைகள் அல்லது அசல் டொமைனுடன் தொடர்புடைய தொழில்முறை தலைப்புகள் கொண்ட இறங்கும் பக்கம் "மூன்றாம் தரப்பு பயனர்களுக்காக" திறக்கப்பட வேண்டும்.
    எடுத்துக்காட்டாக, வாடிக்கையாளர் ஒரு மருத்துவ நிறுவனமாக இருந்தால், ஒரு கிளினிக் ஊழியர் அணுகிய ஆதாரத்தை சரிபார்க்க முடிவு செய்யும் தகவல் பாதுகாப்பு நிர்வாகிக்கு, மருந்து தயாரிப்புகளுடன் கூடிய பக்கம், நோயறிதலின் விளக்கத்துடன் கூடிய விக்கிபீடியா அல்லது டாக்டர் கோமரோவ்ஸ்கியின் வலைப்பதிவு போன்றவை. திறக்க வேண்டும்.

தற்போதுள்ள கருவிகளின் பகுப்பாய்வு

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

இணையத்தில் கூகிள் செய்வது (நாம் பொதுவாக கூகிள் செய்வது போல் தெரிகிறது), அதே போல் "ரிவர்ஸ் சாக்ஸ்" என்ற முக்கிய வார்த்தைகளைப் பயன்படுத்தி கிதுப்பில் தேடுவதும் பல முடிவுகளைத் தரவில்லை. அடிப்படையில், இது அனைத்தும் ரிவர்ஸ் போர்ட் ஃபார்வர்டிங் மற்றும் அதனுடன் இணைக்கப்பட்ட அனைத்தையும் கொண்டு ssh சுரங்கங்களை உருவாக்குகிறது. SSH சுரங்கங்களுக்கு கூடுதலாக, பல தீர்வுகள் உள்ளன:

github.com/klsecservices/rpivot
காஸ்பர்ஸ்கி ஆய்வகத்தில் உள்ள தோழர்களிடமிருந்து ஒரு தலைகீழ் சுரங்கப்பாதையின் நீண்டகால செயலாக்கம். இந்த ஸ்கிரிப்ட் எதற்காக வடிவமைக்கப்பட்டுள்ளது என்பதை இந்தப் பெயரே தெளிவாக்குகிறது. பைதான் 2.7 இல் செயல்படுத்தப்பட்டது, சுரங்கப்பாதை தெளிவான உரை பயன்முறையில் செயல்படுகிறது (இப்போது சொல்வது நாகரீகமாக உள்ளது - ஹலோ RKN)

github.com/tonyseek/rsocks
பைத்தானில் மற்றொரு செயல்படுத்தல், தெளிவான உரையிலும், ஆனால் அதிக சாத்தியக்கூறுகளுடன். இது ஒரு தொகுதியாக எழுதப்பட்டுள்ளது மற்றும் உங்கள் திட்டங்களில் தீர்வுகளை ஒருங்கிணைப்பதற்கான API உள்ளது.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
முதல் இணைப்பு கோலாங்கில் உள்ள ரிவர்ஸ் சாக்ஸ் செயல்படுத்தலின் அசல் பதிப்பாகும் (டெவலப்பரால் ஆதரிக்கப்படவில்லை).
இரண்டாவது இணைப்பு, கோலாங்கிலும் கூடுதல் அம்சங்களுடன் கூடிய எங்களின் திருத்தம் ஆகும். எங்கள் பதிப்பில், நாங்கள் SSL ஐச் செயல்படுத்தினோம், NTLM அங்கீகாரத்துடன் ப்ராக்ஸி மூலம் வேலை செய்தோம், கிளையண்டில் அங்கீகாரம், தவறான கடவுச்சொல் (அல்லது அதற்குப் பதிலாக, இறங்கும் பக்கத்திற்குத் திருப்பிவிடுதல்), பல-திரிக்கப்பட்ட பயன்முறையில் (அதாவது பல நபர்கள்) இறங்கும் பக்கம் ஒரே நேரத்தில் சுரங்கப்பாதையுடன் வேலை செய்ய முடியும்) , கிளையன்ட் உயிருடன் இருக்கிறாரா இல்லையா என்பதைத் தீர்மானிக்க பிங் செய்யும் அமைப்பு.

github.com/jun7th/tsocks
பைத்தானில் எங்கள் "சீன நண்பர்களிடமிருந்து" தலைகீழ் சாக்ஸை செயல்படுத்துதல். அங்கு, சோம்பேறி மற்றும் "அழியாத", ஒரு ஆயத்த பைனரி (exe) உள்ளது, சீனர்களால் சேகரிக்கப்பட்டு பயன்படுத்த தயாராக உள்ளது. இங்கே, இந்த பைனரியில் முக்கிய செயல்பாடு தவிர வேறு என்ன இருக்க வேண்டும் என்பது சீன கடவுளுக்கு மட்டுமே தெரியும், எனவே உங்கள் சொந்த ஆபத்து மற்றும் ஆபத்தில் பயன்படுத்தவும்.

github.com/securesocketfunneling/ssf
ரிவர்ஸ் சாக்ஸ் மற்றும் பலவற்றை செயல்படுத்துவதற்கு C++ இல் மிகவும் சுவாரஸ்யமான திட்டம். தலைகீழ் சுரங்கப்பாதைக்கு கூடுதலாக, இது போர்ட் பகிர்தல், கட்டளை ஷெல் உருவாக்குதல் போன்றவற்றைச் செய்யலாம்.

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

மேலே விவரிக்கப்பட்ட அனைத்து கருவிகளும் ஒரே மாதிரியான தொழில்நுட்பத்தைப் பயன்படுத்தி வேலை செய்கின்றன: நெட்வொர்க்கிற்குள் ஒரு கணினியில் முன் தயாரிக்கப்பட்ட இயங்கக்கூடிய பைனரி தொகுதி தொடங்கப்பட்டது, இது வெளிப்புற சேவையகத்துடன் இணைப்பை நிறுவுகிறது. சேவையகம் SOCKS4/5 சேவையகத்தை இயக்குகிறது, அது இணைப்புகளை ஏற்றுக்கொண்டு கிளையண்டிற்கு அனுப்புகிறது.

மேலே உள்ள அனைத்து கருவிகளின் தீமை என்னவென்றால், கிளையன்ட் கணினியில் பைதான் அல்லது கோலாங் நிறுவப்பட்டிருக்க வேண்டும் (உதாரணமாக, நிறுவன இயக்குநர் அல்லது அலுவலக ஊழியர்களின் இயந்திரங்களில் பைதான் நிறுவப்பட்டுள்ளதா?) அல்லது முன் கூட்டி பைனரி (உண்மையில் பைதான்) இந்த இயந்திரத்தின் மீது இழுக்கப்பட வேண்டும் மற்றும் ஒரு பாட்டில் ஸ்கிரிப்ட்) ஏற்கனவே இந்த பைனரியை இயக்க வேண்டும். ஒரு exe ஐப் பதிவிறக்கம் செய்து பின்னர் அதைத் தொடங்குவது உள்ளூர் வைரஸ் தடுப்பு அல்லது HIPSக்கான கையொப்பமாகும்.

பொதுவாக, முடிவு தன்னைத்தானே அறிவுறுத்துகிறது - நமக்கு ஒரு பவர்ஷெல் தீர்வு தேவை. இப்போது தக்காளி நம்மை நோக்கி பறக்கும் - அவர்கள் பவர்ஷெல் ஏற்கனவே ஹேக்னிட் என்று கூறுகிறார்கள், அது கண்காணிக்கப்படுகிறது, தடுக்கப்படுகிறது, முதலியன. மற்றும் பல. உண்மையில், எல்லா இடங்களிலும் இல்லை. நாங்கள் பொறுப்புடன் அறிவிக்கிறோம். மூலம், தடுப்பதைத் தவிர்ப்பதற்கு நிறைய வழிகள் உள்ளன (இங்கே மீண்டும் ஹலோ RKN பற்றி ஒரு நாகரீகமான சொற்றொடர் உள்ளது 🙂), powershell.exe -> cmdd.exe -> cmdd.exe இன் முட்டாள்தனமான மறுபெயரிலிருந்து தொடங்கி powerdll, முதலியன.

கண்டுபிடிக்க ஆரம்பிக்கலாம்

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

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

RSocksTun
எனவே rsockstun எப்படி வேலை செய்கிறது?

RsocksTun இன் செயல்பாடு (இனி rs என குறிப்பிடப்படுகிறது) இரண்டு மென்பொருள் கூறுகளை அடிப்படையாகக் கொண்டது - Yamux மற்றும் Socks5 சேவையகம். சாக்ஸ் 5 சேவையகம் வழக்கமான உள்ளூர் சாக்ஸ் 5 ஆகும், இது கிளையண்டில் இயங்குகிறது. அதனுடன் இணைப்புகளின் மல்டிபிளக்சிங் (மல்டித்ரெடிங் பற்றி நினைவில் இருக்கிறதா?) yamux ஐப் பயன்படுத்தி வழங்கப்படுகிறது (மற்றொரு மல்டிபிளெக்சர்) இந்தத் திட்டம் பல கிளையன்ட் சாக்ஸ் 5 சேவையகங்களைத் தொடங்கவும், அவற்றுக்கு வெளிப்புற இணைப்புகளை விநியோகிக்கவும் உங்களை அனுமதிக்கிறது, அவற்றை ஒரே டிசிபி இணைப்பு மூலம் (கிட்டத்தட்ட மீட்டர்ப்ரெட்டரில் உள்ளதைப் போல) கிளையண்டிலிருந்து சர்வருக்கு அனுப்புகிறது, இதன் மூலம் பல-த்ரெட் பயன்முறையை செயல்படுத்துகிறோம், இது இல்லாமல் நாங்கள் இருக்க மாட்டோம். உள் நெட்வொர்க்குகளில் முழுமையாக வேலை செய்ய முடியும்.

yamux எவ்வாறு இயங்குகிறது என்பதன் சாராம்சம் என்னவென்றால், ஸ்ட்ரீம்களின் கூடுதல் நெட்வொர்க் லேயரை அறிமுகப்படுத்துகிறது, ஒவ்வொரு பாக்கெட்டிற்கும் 12-பைட் தலைப்பு வடிவில் அதை செயல்படுத்துகிறது. (இங்கே நாங்கள் வேண்டுமென்றே நூலை விட “ஸ்ட்ரீம்” என்ற வார்த்தையைப் பயன்படுத்துகிறோம், எனவே வாசகரை நிரல் ஸ்ட்ரீம் “த்ரெட்” மூலம் குழப்பக்கூடாது - இந்த கருத்தையும் இந்த கட்டுரையில் பயன்படுத்துவோம்). yamux ஹெடரில் ஸ்ட்ரீம் எண், ஸ்ட்ரீமை நிறுவ/நிறுத்துவதற்கான கொடிகள், மாற்றப்பட்ட பைட்டுகளின் எண்ணிக்கை மற்றும் பரிமாற்ற சாளரத்தின் அளவு ஆகியவை உள்ளன.

பவர்ஷெல்லில் ரிவர்ஸ் சாக்ஸ்5 ப்ராக்ஸியை எழுதுதல். பகுதி 1

ஒரு ஸ்ட்ரீமை நிறுவுவது/நிறுத்துவதுடன், yamux நிறுவப்பட்ட தகவல்தொடர்பு சேனலின் செயல்திறனைக் கண்காணிக்க உங்களை அனுமதிக்கும் கீப்பலைவ் பொறிமுறையை செயல்படுத்துகிறது. யமக்ஸ் அமர்வை உருவாக்கும் போது கீப் லைவ் மெசேஜ் பொறிமுறையின் செயல்பாடு கட்டமைக்கப்படுகிறது. உண்மையில், அமைப்புகளில் இரண்டு அளவுருக்கள் மட்டுமே உள்ளன: இயக்கு/முடக்கு மற்றும் நொடிகளில் பாக்கெட்டுகளை அனுப்பும் அதிர்வெண். Keepalive செய்திகளை yamux சேவையகம் அல்லது yamux கிளையன்ட் மூலம் அனுப்பலாம். கீப்பிலைவ் செய்தியைப் பெறும்போது, ​​ரிமோட் பார்ட்டி அதற்குப் பதிலளிப்பதன் மூலம் தான் பெற்ற அதே செய்தி அடையாளங்காட்டியை (உண்மையில் ஒரு எண்) அனுப்ப வேண்டும். பொதுவாக, கீப்பாலைவ் என்பது யமுக்ஸுக்கு மட்டுமே ஒரே பிங் ஆகும்.

மல்டிபிளெக்சரின் முழு இயக்க நுட்பம்: பாக்கெட் வகைகள், இணைப்பு அமைவு மற்றும் முடிவுக் கொடிகள் மற்றும் தரவு பரிமாற்ற வழிமுறை ஆகியவை விரிவாக விவரிக்கப்பட்டுள்ளன. விவரக்குறிப்புகள் yamux க்கு.

முதல் பகுதியின் முடிவு

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

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

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