Powershell ичинде Reverse socks5 прокси жазуу. 1-бөлүк

3 бөлүктөн турган изилдөө жана өнүктүрүү жөнүндө окуя. 1-бөлүк чалгындоо болуп саналат.
Бук дарактары көп - пайдасы андан да көп.

Тапшырманын коюлушу

Пентесттерде жана RedTeam кампанияларында Кардардын VPN, RDP, Citrix ж.б. сыяктуу стандарттык куралдарын колдонуу дайыма эле мүмкүн боло бербейт. ички тармакка кирүү үчүн казык катары. Кээ бир жерлерде стандарттуу VPN ТИМдин жардамы менен иштейт жана экинчи фактор катары аппараттык белги колдонулат, башкаларында ал ырайымсыз көзөмөлдөнөт жана биздин VPN логинибиз дароо көрүнүп калат, алар айткандай, мунун бардыгы менен, бирок башкаларында бар жөн эле андай каражат жок.

Мындай учурларда, биз ар дайым "тескери туннелдерди" түзүшүбүз керек - ички тармактан тышкы ресурска же биз көзөмөлдөгөн серверге туташуу. Мындай туннелдин ичинде биз Кардарлардын ички ресурстары менен иштей алабыз.

Бул кайтуу туннелдеринин бир нече түрлөрү бар. Алардын эң белгилүүсү, албетте, Метерпретер. Тескери порт багыттоосу бар SSH туннелдери хакерлердин массасы арасында да чоң суроо-талапка ээ. Кайтарма туннелдерди ишке ашыруу үчүн көптөгөн каражаттар бар жана алардын көбү жакшы изилденген жана сүрөттөлгөн.
Албетте, өз кезегинде, коопсуздук чечимдерин иштеп чыгуучулар четте туруп, мындай аракеттерди активдүү аныкташпайт.
Мисалы, MSF сессиялары Cisco же Positive Tech заманбап IPS тарабынан ийгиликтүү аныкталат жана тескери SSH туннели дээрлик бардык кадимки брандмауэр тарабынан аныкталышы мүмкүн.

Ошондуктан, RedTeam жакшы кампаниясында байкалбай калуу үчүн стандарттуу эмес каражаттарды колдонуу менен тескери туннелди куруп, тармактын реалдуу иштөө режимине мүмкүн болушунча ыңгайлашышыбыз керек.

Келгиле, окшош нерсени табууга же ойлоп табууга аракет кылалы.

Бир нерсени ойлоп табуудан мурун биз кандай натыйжага жетүүнү каалайбыз, биздин өнүгүүбүз кандай функцияларды аткарышы керек экенин түшүнүшүбүз керек. Биз максималдуу жашыруун режимде иштей алышыбыз үчүн туннелге кандай талаптар коюлат?

Ар бир учурда мындай талаптар абдан айырмаланышы мүмкүн экени түшүнүктүү, бирок иш тажрыйбасынын негизинде негизгилери аныкталышы мүмкүн:

  • Windows-7-10 OS менен иштөө. Көпчүлүк корпоративдик тармактар ​​Windows колдонгондуктан;
  • ips аркылуу акылсыз угууну болтурбоо үчүн кардар серверге SSL аркылуу туташат;
  • Туташуу учурунда кардар авторизациясы бар прокси сервер аркылуу иштөөнү колдоого алышы керек, анткени Көптөгөн компанияларда Интернетке кирүү прокси аркылуу ишке ашат. Чынында, кардар машина ал жөнүндө эч нерсе билбеши мүмкүн, ал эми прокси ачык режимде колдонулат. Бирок биз мындай функцияны камсыз кылышыбыз керек;
  • кардар бөлүгү кыска жана көчмө болушу керек;
    Кардардын тармагында иштөө үчүн сиз OpenVPNти кардар машинасына орнотуп, сервериңизге толук кандуу туннелди түзө аласыз (бактыга жараша, openvpn кардарлары прокси аркылуу иштей алат) түшүнүктүү. Бирок, биринчиден, бул дайыма эле иштей бербейт, анткени биз ал жерде жергиликтүү администраторлор болбой калышыбыз мүмкүн, экинчиден, ал ушунчалык көп ызы-чуу жаратып, татыктуу SIEM же HIPS бизди дароо эле "чыгарып" салат. Идеалында, биздин кардар ички буйрук деп аталган нерсе болушу керек, мисалы, көптөгөн bash кабыктары ишке ашырылат жана буйрук сабы аркылуу ишке киргизилет, мисалы, макро сөздөн буйруктарды аткарууда.
  • биздин туннел көп жиптүү жана бир эле учурда көптөгөн байланыштарды колдоого тийиш;
  • кардар-сервер байланышы кандайдыр бир авторизацияга ээ болушу керек, ошондуктан туннель биздин кардар үчүн гана орнотулат, бирок көрсөтүлгөн дарек жана порт боюнча биздин серверге келгендердин бардыгы үчүн эмес. Идеалында, "үчүнчү тараптын колдонуучулары" үчүн баштапкы доменге байланыштуу мышыктар же профессионалдык темалар менен ачылуучу бет ачылат.
    Мисалы, эгерде Кардар медициналык уюм болсо, анда маалыматтык коопсуздуктун администратору үчүн клиниканын кызматкери кирген ресурсту, фармацевтикалык продуктыларды камтыган баракчаны, диагноздун сүрөттөлүшү менен Википедияны же доктор Комаровскийдин блогун ж.б.у.с. .ачылышы керек.

Бар болгон куралдарды талдоо

Өзүңүздүн велосипедиңизди кайра ойлоп табуудан мурун, сиз учурдагы велосипеддерге анализ жасап, анын бизге чындап эле керекпи же жокпу, түшүнүшүңүз керек жана, кыязы, мындай функционалдык велосипеддин зарылчылыгы жөнүндө биз гана ойлогон эмеспиз.

Интернетте Google издөө (биз адатта google сыяктуу көрүнөт), ошондой эле Githubда "тескери байпак" деген ачкыч сөздөрдү колдонуу көп натыйжа берген жок. Негизинен, мунун баары тескери порт багыттоосу менен ssh туннелдерин курууга жана аны менен байланышкан бардык нерсеге байланыштуу. SSH туннелдеринен тышкары, бир нече чечимдер бар:

github.com/klsecservices/rpivot
Касперский лабораториясындагы балдардан тескери туннелдин көптөн бери ишке ашырылышы. Аты бул скрипт эмне үчүн арналганын ачык көрсөтүп турат. Python 2.7де ишке ашырылган туннель ачык текст режиминде иштейт (азыр модалуу - салам RKN)

github.com/tonyseek/rsocks
Python дагы бир ишке ашыруу, ошондой эле ачык текстте, бирок көбүрөөк мүмкүнчүлүктөр менен. Бул модуль катары жазылган жана чечимдерди долбоорлоруңузга интеграциялоо үчүн API бар.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Биринчи шилтеме Голангдагы тескери сокстун оригиналдуу версиясы (иштеп чыгуучу тарабынан колдоого алынбайт).
Экинчи шилтеме - бул Голангда дагы кошумча функциялар менен кайра карап чыгуу. Биздин версияда биз SSLди, NTLM авторизациясы бар прокси аркылуу иштөөнү, кардардагы авторизацияны, туура эмес сырсөз (же болбосо, конуу бетине багыттоо), көп агымдуу режимди (б.а. бир нече адам) ишке ашырдык. туннель менен бир эле учурда иштей алат) , кардардын тирүү же тирүү эместигин аныктоо үчүн пинг жүргүзүү системасы.

github.com/jun7th/tsocks
Pythonдо биздин "кытайлык досторубуздан" тескери соксту ишке ашыруу. Ал жерде жалкоо жана “өлбөс” үчүн кытайлар чогултуп, колдонууга даяр бинардык (exe) бар. Бул жерде, бир гана кытай Кудайы билет, бул бинардык негизги функциядан тышкары дагы эмнелерди камтышы мүмкүн, андыктан өз коркунучу жана тобокелдиги менен колдонуңуз.

github.com/securesocketfunneling/ssf
C++ тилинде тескери соксту жана башкаларды ишке ашыруу үчүн абдан кызыктуу долбоор. Тескери туннелден тышкары, ал порт багыттоосун жасай алат, буйрук кабыгын түзө алат ж.б.

MSF өлчөөчү
Бул жерде, алар айткандай, комментарий жок. Бардык аздыр-көптүр билимдүү хакерлер бул нерсе менен абдан тааныш жана аны коопсуздук куралдары аркылуу оңой эле аныктоого болорун түшүнүшөт.

Жогоруда сүрөттөлгөн куралдардын бардыгы окшош технологияны колдонуу менен иштейт: тармактын ичиндеги машинада алдын ала даярдалган аткарылуучу экилик модулу ишке киргизилет, ал тышкы сервер менен байланышты түзөт. Сервер SOCKS4/5 серверин иштетет, ал байланыштарды кабыл алат жана аларды кардарга өткөрүп берет.

Жогорудагы куралдардын бардыгынын кемчилиги Python же Голанг же кардар машинасына орнотулушу керек (сиз Python, мисалы, компаниянын директорунун же кеңсе кызматкерлеринин машиналарында орнотулганын көп көрдүңүз беле?) же алдын ала чогултулган бинардык (чындыгында питон) бул машинага сүйрөлүп, бир бөтөлкөдөгү скрипт) жана бул бинардык файлды ошол жерде иштетиш керек. Ал эми exe файлын жүктөп алып, аны ишке киргизүү да жергиликтүү антивирустун же HIPSтин кол тамгасы болуп саналат.

Жалпысынан алганда, корутунду өзүн көрсөтүп турат - бизге Powershell чечим керек. Эми помидорлор бизге учуп кетишет - алар пауэршеллдин баары бузулган деп айтышат, ал көзөмөлдөнөт, бөгөттөлгөн ж.б.у.с. жана башка. Чынында, бардык жерде эмес. Жоопкерчилик менен билдиребиз. Баса, бөгөт коюуну айланып өтүүнүн көптөгөн жолдору бар (бул жерде дагы бир жолу салам RKN жөнүндө модалуу сөз айкашы бар 🙂), powershell.exe -> cmdd.exe атын акылсыз өзгөртүүдөн баштап, powerdll менен аяктаган ж.б.

Ойлоп баштайлы

Адегенде биз Google'ду карап чыгабыз жана... бул тема боюнча эч нерсе таба албайбыз (эгер кимдир бирөө аны таап алса, шилтемелерди комментарийге жазыңыз). Бар болгону ишке ашыруу Powershell боюнча Socks5, бирок бул кадимки "түз" сокс, анын бир катар кемчиликтери бар (алар жөнүндө кийинчерээк сүйлөшөбүз). Сиз, албетте, колуңуздун бир аз кыймылы менен аны тескерисине айланта аласыз, бирок бул бир жиптүү сокс гана болот, бул бизге такыр керек эмес.

Демек, биз даяр эч нерсе таба элекпиз, андыктан дөңгөлөктү кайра ойлоп табышыбыз керек. Велосипедибизге негиз кылып алабыз биздин өнүгүүбүз Голангдагы тескери сокс, жана биз ага кардарды powershellде ишке ашырабыз.

RSocksTun
Ошентип, rsockstun кантип иштейт?

RsocksTun (мындан ары rs) иштеши программалык камсыздоонун эки компонентине - Yamux жана Socks5 серверине негизделген. Socks5 сервери бул кадимки жергиликтүү байпак5, ал кардарда иштейт. Жана ага туташууларды мультиплекстештирүү (көп агым жөнүндө эсиңиздеби?) yamux (колдонуу менен камсыз кылынат)дагы бир мультиплексор). Бул схема бир нече кардар socks5 серверлерин ишке киргизүүгө жана аларга тышкы байланыштарды жайылтууга, аларды бир TCP туташуусу аркылуу (дээрлик meterpreterдегидей) кардардан серверге жөнөтүүгө мүмкүндүк берет, ошону менен көп агымдуу режимди ишке ашырат, ансыз биз жөн эле иштей албайбыз. ички тармактарда толук иштей алат.

Yamux кантип иштээринин маңызы, ал ар бир пакет үчүн 12 байттык аталыш түрүндө ишке ашырып, агымдардын кошумча тармактык катмарын киргизет. (Бул жерде биз окурманды программалык агым "жип" менен чаташтырбоо үчүн жип эмес, атайылап "агым" деген сөздү колдонобуз - биз ушул макалада бул түшүнүктү да колдонобуз). Yamux аталышы агымдын номерин, агымды орнотуу/токтотуунун желектерин, өткөрүлүп берилген байттардын санын жана өткөрүп берүү терезесинин өлчөмүн камтыйт.

Powershell ичинде Reverse socks5 прокси жазуу. 1-бөлүк

Агымды орнотуудан / токтотуудан тышкары, yamux белгиленген байланыш каналынын иштешин көзөмөлдөөгө мүмкүндүк берген сактап калуу механизмин ишке ашырат. Yamux сеансын түзүүдө сактагыч билдирүү механизминин иштеши конфигурацияланат. Чынында, жөндөөлөрдүн эки гана параметри бар: иштетүү/өчүрүү жана секунданын ичинде пакеттерди жөнөтүү жыштыгы. Keepalive билдирүүлөрүн yamux сервери же yamux кардары жөнөтсө болот. Сактоо билдирүүсүн алууда, алыскы тарап ага кабыл алган так эле билдирүү идентификаторун (чындыгында санды) жөнөтүү менен жооп бериши керек. Жалпысынан алганда, keepalive бир эле пинг, yamux үчүн гана.

Мультиплексордун бүт иштөө техникасы: пакеттердин түрлөрү, туташууну орнотуу жана токтотуу желектери жана маалыматтарды берүү механизми бул жерде кеңири сүрөттөлгөн. мүнөздөмөлөрү yamux үчүн.

Биринчи бөлүккө корутунду

Ошентип, макаланын биринчи бөлүгүндө биз тескери туннелдерди уюштуруу үчүн кээ бир инструменттер менен таанышып, алардын артыкчылыктарын жана кемчиликтерин карап чыктык, Yamux мультиплексорунун иштөө механизмин изилдеп, жаңы түзүлгөн powershell модулуна негизги талаптарды сүрөттөп бердик. Кийинки бөлүктө биз модулдун өзүн нөлдөн баштап иштеп чыгабыз. Уландысы бар. которулба :)

Source: www.habr.com

Комментарий кошуу