మేము పవర్‌షెల్‌లో రివర్స్ సాక్స్5 ప్రాక్సీని వ్రాస్తాము. పార్ట్ 1

3 భాగాలలో పరిశోధన మరియు అభివృద్ధి గురించిన కథ. పార్ట్ 1 అన్వేషణాత్మకమైనది.
చాలా బీచ్ చెట్లు ఉన్నాయి - ఇంకా ఎక్కువ ప్రయోజనాలు.

సమస్య యొక్క ప్రకటన

పెంటెస్ట్‌లు మరియు రెడ్‌టీమ్ ప్రచారాల సమయంలో, VPN, RDP, Citrix మొదలైన కస్టమర్ యొక్క ప్రామాణిక సాధనాలను ఉపయోగించడం ఎల్లప్పుడూ సాధ్యం కాదు. అంతర్గత నెట్‌వర్క్‌లోకి ప్రవేశించడానికి యాంకర్‌గా. కొన్ని చోట్ల, ఒక ప్రామాణిక VPN MFAని ఉపయోగించి పని చేస్తుంది మరియు హార్డ్‌వేర్ టోకెన్ రెండవ అంశంగా ఉపయోగించబడుతుంది, మరికొన్నింటిలో ఇది క్రూరంగా పర్యవేక్షించబడుతుంది మరియు మా VPN లాగిన్ వెంటనే కనిపిస్తుంది, వారు చెప్పినట్లు, దానిలోని అన్నింటితో, కానీ మరికొన్నింటిలో ఉన్నాయి అటువంటి మార్గాలేవీ లేవు.

అటువంటి సందర్భాలలో, మేము నిరంతరం "రివర్స్ టన్నెల్స్" అని పిలవబడే వాటిని తయారు చేయాలి - అంతర్గత నెట్‌వర్క్ నుండి బాహ్య వనరు లేదా మేము నియంత్రించే సర్వర్‌కు కనెక్షన్‌లు. అటువంటి సొరంగం లోపల, మేము ఇప్పటికే కస్టమర్ల అంతర్గత వనరులతో పని చేయవచ్చు.

ఈ రిటర్న్ టన్నెల్స్‌లో అనేక రకాలు ఉన్నాయి. వాటిలో అత్యంత ప్రసిద్ధమైనది, వాస్తవానికి, మీటర్‌ప్రెటర్. రివర్స్ పోర్ట్ ఫార్వార్డింగ్‌తో కూడిన SSH టన్నెల్స్‌కు కూడా హ్యాకర్ మాస్‌లో చాలా డిమాండ్ ఉంది. రివర్స్ టన్నెలింగ్ అమలు చేయడానికి చాలా మార్గాలు ఉన్నాయి మరియు వాటిలో చాలా బాగా అధ్యయనం చేయబడ్డాయి మరియు వివరించబడ్డాయి.
వాస్తవానికి, వారి వంతుగా, భద్రతా పరిష్కారాల డెవలపర్లు పక్కన నిలబడరు మరియు అటువంటి చర్యలను చురుకుగా గుర్తించరు.
ఉదాహరణకు, సిస్కో లేదా పాజిటివ్ టెక్ నుండి ఆధునిక IPS ద్వారా 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 యొక్క తెలివితక్కువ పేరు మార్చడం నుండి ప్రారంభించి మరియు powerdll తో ముగుస్తుంది, మొదలైనవి.

కనిపెట్టడం ప్రారంభిద్దాం

మేము ముందుగా Googleలో చూస్తాము మరియు... ఈ అంశంపై మేము ఏమీ కనుగొనలేము (ఎవరైనా దీన్ని కనుగొన్నట్లయితే, వ్యాఖ్యలలో లింక్‌లను పోస్ట్ చేయండి) అని స్పష్టంగా ఉంది. మాత్రమే ఉంది సాక్షాత్కారము పవర్‌షెల్‌లో సాక్స్ 5, కానీ ఇది సాధారణ “డైరెక్ట్” సాక్స్, దాని స్వంత ప్రతికూలతలు ఉన్నాయి (మేము వాటి గురించి తరువాత మాట్లాడుతాము). మీరు, వాస్తవానికి, మీ చేతి యొక్క స్వల్ప కదలికతో, దానిని రివర్స్ వన్‌గా మార్చవచ్చు, కానీ ఇది సింగిల్-థ్రెడ్ సాక్స్ మాత్రమే అవుతుంది, ఇది మనకు అవసరమైనది కాదు.

కాబట్టి, మేము రెడీమేడ్ ఏదీ కనుగొనలేదు, కాబట్టి మేము ఇంకా మా చక్రాన్ని తిరిగి ఆవిష్కరించవలసి ఉంటుంది. మేము మా సైకిల్‌కు ఆధారంగా తీసుకుంటాము మా అభివృద్ధి గోలాంగ్‌లో రివర్స్ సాక్స్, మరియు మేము పవర్‌షెల్‌లో దాని కోసం క్లయింట్‌ను అమలు చేస్తాము.

RSocksTun
కాబట్టి rsockstun ఎలా పని చేస్తుంది?

RsocksTun (ఇకపై rs గా సూచిస్తారు) యొక్క ఆపరేషన్ Yamux మరియు Socks5 సర్వర్ అనే రెండు సాఫ్ట్‌వేర్ భాగాలపై ఆధారపడి ఉంటుంది. Socks5 సర్వర్ సాధారణ స్థానిక సాక్స్5, ఇది క్లయింట్‌పై నడుస్తుంది. మరియు దానికి కనెక్షన్ల మల్టీప్లెక్సింగ్ (మల్టీథ్రెడింగ్ గురించి గుర్తుంచుకోవాలా?) yamux ఉపయోగించి అందించబడుతుంది (మరో మల్టీప్లెక్సర్) ఈ స్కీమ్ మిమ్మల్ని అనేక క్లయింట్ సాక్స్5 సర్వర్‌లను లాంచ్ చేయడానికి మరియు వాటికి బాహ్య కనెక్షన్‌లను పంపిణీ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, వాటిని ఒకే TCP కనెక్షన్ ద్వారా (దాదాపు మీటర్‌ప్రెటర్‌లో వలె) క్లయింట్ నుండి సర్వర్‌కు ఫార్వార్డ్ చేస్తుంది, తద్వారా మల్టీ-థ్రెడ్ మోడ్‌ను అమలు చేస్తుంది, అది లేకుండా మేము ఉండము. అంతర్గత నెట్‌వర్క్‌లలో పూర్తిగా పని చేయగలదు.

yamux ఎలా పని చేస్తుందనే దాని సారాంశం ఏమిటంటే, ఇది స్ట్రీమ్‌ల యొక్క అదనపు నెట్‌వర్క్ లేయర్‌ను పరిచయం చేస్తుంది, ప్రతి ప్యాకెట్‌కు 12-బైట్ హెడర్ రూపంలో దీన్ని అమలు చేస్తుంది. (ఇక్కడ మేము ఉద్దేశపూర్వకంగా థ్రెడ్ కంటే “స్ట్రీమ్” అనే పదాన్ని ఉపయోగిస్తాము, కాబట్టి ప్రోగ్రామ్ స్ట్రీమ్ “థ్రెడ్”తో రీడర్‌ను గందరగోళానికి గురిచేయకుండా - మేము ఈ కథనంలో కూడా ఈ భావనను ఉపయోగిస్తాము). yamux హెడర్‌లో స్ట్రీమ్ నంబర్, స్ట్రీమ్‌ను ఇన్‌స్టాల్ చేయడానికి/ముగింపు కోసం ఫ్లాగ్‌లు, బదిలీ చేయబడిన బైట్‌ల సంఖ్య మరియు బదిలీ విండో పరిమాణం ఉంటాయి.

మేము పవర్‌షెల్‌లో రివర్స్ సాక్స్5 ప్రాక్సీని వ్రాస్తాము. పార్ట్ 1

స్ట్రీమ్‌ను ఇన్‌స్టాల్ చేయడం/ముగించడంతో పాటు, yamux మీరు ఏర్పాటు చేసిన కమ్యూనికేషన్ ఛానెల్ పనితీరును పర్యవేక్షించడానికి అనుమతించే కీపాలివ్ మెకానిజంను అమలు చేస్తుంది. Yamux సెషన్‌ను సృష్టించేటప్పుడు కీప్‌లైవ్ మెసేజ్ మెకానిజం యొక్క ఆపరేషన్ కాన్ఫిగర్ చేయబడుతుంది. వాస్తవానికి, సెట్టింగులలో కేవలం రెండు పారామితులు మాత్రమే ఉన్నాయి: ఎనేబుల్/డిసేబుల్ మరియు ప్యాకెట్లను సెకన్లలో పంపే ఫ్రీక్వెన్సీ. Keepalive సందేశాలను yamux సర్వర్ లేదా yamux క్లయింట్ ద్వారా పంపవచ్చు. కీపలైవ్ సందేశాన్ని స్వీకరించినప్పుడు, రిమోట్ పార్టీ అందుకు ప్రతిస్పందించాలి. సాధారణంగా, కీపలైవ్ అనేది యమక్స్ కోసం మాత్రమే పింగ్.

మల్టీప్లెక్సర్ యొక్క మొత్తం ఆపరేటింగ్ టెక్నిక్: ప్యాకెట్ రకాలు, కనెక్షన్ సెటప్ మరియు టెర్మినేషన్ ఫ్లాగ్‌లు మరియు డేటా ట్రాన్స్‌ఫర్ మెకానిజం వివరాలు ఇందులో వివరించబడ్డాయి లక్షణాలు yamux కు.

మొదటి భాగానికి ముగింపు

కాబట్టి, వ్యాసం యొక్క మొదటి భాగంలో, మేము రివర్స్ టన్నెల్స్ నిర్వహించడానికి కొన్ని సాధనాలతో పరిచయం పొందాము, వాటి ప్రయోజనాలు మరియు అప్రయోజనాలను పరిశీలించాము, Yamux మల్టీప్లెక్సర్ యొక్క ఆపరేషన్ యొక్క మెకానిజంను అధ్యయనం చేసాము మరియు కొత్తగా సృష్టించిన పవర్‌షెల్ మాడ్యూల్ కోసం ప్రాథమిక అవసరాలను వివరించాము. తదుపరి భాగంలో మేము మాడ్యూల్‌ను అభివృద్ధి చేస్తాము, ఆచరణాత్మకంగా మొదటి నుండి. కొనసాగుతుంది. మారవద్దు :)

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి