Kuandika reverse soksi5 proksi katika powershell.Sehemu ya 1

Hadithi kuhusu utafiti na maendeleo katika sehemu 3. Sehemu ya 1 ni ya uchunguzi.
Kuna miti mingi ya beech - faida zaidi.

Taarifa ya tatizo

Wakati wa kampeni na kampeni za RedTeam, si mara zote inawezekana kutumia zana za kawaida za Mteja, kama vile VPN, RDP, Citrix, n.k. kama nanga ya kuingia mtandao wa ndani. Katika maeneo mengine, VPN ya kawaida hufanya kazi kwa kutumia MFA na ishara ya vifaa hutumiwa kama sababu ya pili, kwa wengine inafuatiliwa kikatili na kuingia kwetu kwa VPN mara moja kunaonekana, kama wanasema, na yote yanayojumuisha, lakini kwa wengine kuna. tu hakuna njia kama hiyo.

Katika hali kama hizi, mara kwa mara tunapaswa kutengeneza kinachojulikana kama "vichuguu vya kurudi nyuma" - miunganisho kutoka kwa mtandao wa ndani hadi kwa rasilimali ya nje au seva tunayodhibiti. Ndani ya handaki kama hilo, tunaweza tayari kufanya kazi na rasilimali za ndani za Wateja.

Kuna aina kadhaa za vichuguu hivi vya kurudi. Maarufu zaidi wao ni, bila shaka, Meterpreter. Vichuguu vya SSH vilivyo na usambazaji wa lango la kinyume pia vinahitajika sana miongoni mwa wadukuzi. Kuna njia nyingi za kutekeleza urekebishaji wa tunnel na nyingi zao zimesomwa vizuri na kuelezewa.
Bila shaka, kwa upande wao, watengenezaji wa ufumbuzi wa usalama hawasimama kando na kuchunguza kikamilifu vitendo hivyo.
Kwa mfano, vipindi vya MSF vinatambuliwa kwa mafanikio na IPS ya kisasa kutoka Cisco au Positive Tech, na njia ya nyuma ya SSH inaweza kutambuliwa kwa karibu ngome yoyote ya kawaida.

Kwa hivyo, ili kubaki bila kutambuliwa katika kampeni nzuri ya RedTeam, tunahitaji kujenga handaki la nyuma kwa kutumia njia zisizo za kawaida na kukabiliana kwa karibu iwezekanavyo na hali halisi ya uendeshaji wa mtandao.

Wacha tujaribu kutafuta au kuvumbua kitu kama hicho.

Kabla ya kubuni chochote, tunahitaji kuelewa ni matokeo gani tunataka kufikia, ni kazi gani maendeleo yetu inapaswa kufanya. Mahitaji ya handaki yatakuwa nini ili tuweze kufanya kazi katika hali ya juu zaidi ya siri?

Ni wazi kwamba kwa kila kesi mahitaji hayo yanaweza kutofautiana sana, lakini kulingana na uzoefu wa kazi, kuu zinaweza kutambuliwa:

  • fanya kazi kwenye Windows-7-10 OS. Kwa kuwa mitandao mingi ya ushirika hutumia Windows;
  • mteja huunganisha kwenye seva kupitia SSL ili kuepuka kusikiliza kijinga kwa kutumia ips;
  • Wakati wa kuunganisha, mteja lazima asaidie kazi kupitia seva ya wakala na idhini, kwa sababu Katika makampuni mengi, upatikanaji wa mtandao hutokea kupitia wakala. Kwa kweli, mashine ya mteja inaweza hata kujua chochote kuhusu hilo, na wakala hutumiwa katika hali ya uwazi. Lakini ni lazima tutoe utendaji huo;
  • sehemu ya mteja inapaswa kuwa mafupi na ya kubebeka;
    Ni wazi kuwa kufanya kazi ndani ya mtandao wa Wateja, unaweza kusakinisha OpenVPN kwenye mashine ya mteja na kuunda handaki kamili kwa seva yako (kwa bahati nzuri, wateja wa openvpn wanaweza kufanya kazi kupitia proksi). Lakini, kwanza, hii haitafanya kazi kila wakati, kwa kuwa hatuwezi kuwa wasimamizi wa ndani, na pili, itapiga kelele nyingi hivi kwamba SIEM au HIPS nzuri "itatupiga" mara moja. Kwa kweli, mteja wetu anapaswa kuwa kinachojulikana kama amri ya ndani, kama kwa mfano shells nyingi za bash zinatekelezwa, na kuzinduliwa kupitia mstari wa amri, kwa mfano, wakati wa kutekeleza amri kutoka kwa neno macro.
  • handaki yetu lazima iwe na nyuzi nyingi na isaidie miunganisho mingi kwa wakati mmoja;
  • muunganisho wa seva ya mteja lazima uwe na aina fulani ya idhini ili handaki ianzishwe kwa mteja wetu tu, na sio kwa kila mtu anayekuja kwenye seva yetu kwa anwani na bandari maalum. Kwa hakika, ukurasa wa kutua wenye paka au mada za kitaalamu zinazohusiana na kikoa asili unapaswa kufunguliwa kwa "watumiaji wengine."
    Kwa mfano, ikiwa Mteja ni shirika la matibabu, basi kwa msimamizi wa usalama wa habari ambaye anaamua kuangalia rasilimali ambayo mfanyakazi wa kliniki alipata, ukurasa na bidhaa za dawa, Wikipedia na maelezo ya uchunguzi, au blogu ya Dk Komarovsky, nk. inapaswa kufunguliwa.

Uchambuzi wa zana zilizopo

Kabla ya kuunda tena baiskeli yako mwenyewe, unahitaji kufanya uchambuzi wa baiskeli zilizopo na kuelewa ikiwa tunaihitaji kweli na, labda, sio sisi pekee ambao tumefikiria juu ya hitaji la baiskeli inayofanya kazi kama hii.

Googling kwenye Mtandao (tunaonekana google kawaida), pamoja na kutafuta kwenye Github kwa kutumia maneno "soksi za nyuma" hakutoa matokeo mengi. Kimsingi, yote yanakuja kwa kujenga vichuguu vya ssh na usambazaji wa bandari ya nyuma na kila kitu kilichounganishwa nayo. Mbali na vichuguu vya SSH, kuna suluhisho kadhaa:

github.com/klsecservices/rpivot
Utekelezaji wa muda mrefu wa handaki ya nyuma kutoka kwa wavulana kwenye Kaspersky Lab. Jina linaweka wazi ni nini hati hii inakusudiwa. Imetekelezwa katika Python 2.7, handaki inafanya kazi katika hali ya maandishi wazi (kama ni mtindo kusema sasa - hello RKN)

github.com/tonyseek/rsocks
Utekelezaji mwingine katika Python, pia kwa maandishi wazi, lakini kwa uwezekano zaidi. Imeandikwa kama moduli na ina API ya kuunganisha suluhisho katika miradi yako.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Kiungo cha kwanza ni toleo asili la utekelezaji wa reverse sox katika Golang (hautumiki na msanidi programu).
Kiungo cha pili ni marekebisho yetu yenye vipengele vya ziada, pia katika Golang. Katika toleo letu, tulitekeleza SSL, fanya kazi kupitia proksi iliyo na idhini ya NTLM, idhini kwa mteja, ukurasa wa kutua ikiwa kuna nenosiri lisilo sahihi (au tuseme, kuelekeza upya kwa ukurasa wa kutua), hali ya nyuzi nyingi (yaani watu kadhaa). inaweza kufanya kazi na handaki kwa wakati mmoja) , mfumo wa kumpiga mteja ili kuamua ikiwa yuko hai au la.

github.com/jun7th/tsocks
Utekelezaji wa soksi ya nyuma kutoka kwa "marafiki wetu wa China" katika Python. Huko, kwa wavivu na "kutokufa", kuna binary iliyopangwa tayari (exe), iliyokusanywa na Kichina na tayari kutumika. Hapa, ni Mungu wa Kichina pekee anayejua ni nini kingine jozi hii inaweza kuwa nayo kando na utendakazi mkuu, kwa hivyo tumia kwa hatari na hatari yako mwenyewe.

github.com/securesocketfunneling/ssf
Mradi wa kupendeza kabisa katika C++ wa kutekeleza reverse sox na zaidi. Mbali na handaki ya nyuma, inaweza kufanya usambazaji wa bandari, kuunda shell ya amri, nk.

kipima mita MSF
Hapa, kama wanasema, hakuna maoni. Wadukuzi wote hata zaidi au wasio na elimu wanafahamu sana jambo hili na wanaelewa jinsi linavyoweza kutambuliwa kwa urahisi na zana za usalama.

Zana zote zilizoelezwa hapo juu zinafanya kazi kwa kutumia teknolojia inayofanana: moduli ya binary inayoweza kutekelezwa iliyoandaliwa tayari imezinduliwa kwenye mashine ndani ya mtandao, ambayo huanzisha muunganisho na seva ya nje. Seva huendesha seva ya SOCKS4/5 ambayo inakubali miunganisho na kuipeleka kwa mteja.

Ubaya wa zana zote zilizo hapo juu ni kwamba Python au Golang lazima isakinishwe kwenye mashine ya mteja (je, mara nyingi umeona Python imewekwa kwenye mashine za, kwa mfano, mkurugenzi wa kampuni au wafanyikazi wa ofisi?), au iliyokusanywa mapema. binary (kwa kweli chatu) lazima iburuzwe kwenye mashine hii na hati kwenye chupa moja) na uendeshe binary hii tayari. Na kupakua exe na kisha kuizindua pia ni saini ya antivirus ya ndani au HIPS.

Kwa ujumla, hitimisho linaonyesha yenyewe - tunahitaji suluhisho la nguvu. Sasa nyanya zitaruka kwetu - wanasema powershell tayari imekatwa, inafuatiliwa, imezuiwa, nk. Nakadhalika. Kwa kweli, si kila mahali. Tunatangaza kwa kuwajibika. Kwa njia, kuna njia nyingi za kukwepa kuzuia (hapa tena kuna maneno ya mtindo kuhusu hello RKN πŸ™‚), kuanzia jina la kijinga la powershell.exe -> cmdd.exe na kuishia na powerdll, nk.

Hebu tuanze kuvumbua

Ni wazi kwamba kwanza tutaangalia Google na... hatutapata chochote kwenye mada hii (ikiwa mtu ameipata, chapisha viungo kwenye maoni). Kuna tu utekelezaji Soksi5 kwenye ganda la nguvu, lakini hii ni soksi ya kawaida ya "moja kwa moja", ambayo ina idadi ya hasara zake (tutazungumza juu yao baadaye). Unaweza, kwa kweli, kwa harakati kidogo ya mkono wako, kuigeuza kuwa ya nyuma, lakini hii itakuwa sox yenye nyuzi moja tu, ambayo sio tunayohitaji kwetu.

Kwa hivyo, hatujapata chochote kilichotengenezwa tayari, kwa hivyo bado tutalazimika kuunda tena gurudumu letu. Tutachukua kama msingi wa baiskeli yetu maendeleo yetu reverse sox katika Golang, na tunatekeleza mteja kwa hilo katika powershell.

RSocksTun
Kwa hivyo rsockstun inafanyaje kazi?

Uendeshaji wa RsocksTun (hapa inajulikana kama rs) unategemea vipengele viwili vya programu - seva ya Yamux na Socks5. Seva ya soksi5 ni soksi za kawaida za kawaida5, inaendesha mteja. Na kuzidisha miunganisho kwake (kumbuka juu ya usomaji mwingi?) hutolewa kwa kutumia yamux (mwingine multiplexer) Mpango huu hukuruhusu kuzindua seva kadhaa za soksi za mteja5 na kusambaza viunganisho vya nje kwao, ukizisambaza kupitia unganisho moja la TCP (karibu kama katika mita) kutoka kwa mteja hadi seva, na hivyo kutekeleza hali ya nyuzi nyingi, bila ambayo hatutakuwa. uwezo wa kufanya kazi kikamilifu katika mitandao ya ndani.

Kiini cha jinsi yamux inavyofanya kazi ni kwamba inaleta safu ya ziada ya mtandao ya mito, ikitekeleza kwa namna ya kichwa cha 12-byte kwa kila pakiti. (Hapa tunatumia kwa makusudi neno "mkondo" badala ya thread, ili tusichanganye msomaji na "thread" ya programu - tutatumia pia dhana hii katika makala hii). Kijajuu cha yamux kina nambari ya mtiririko, alamisho za kusakinisha/kukatisha mtiririko, idadi ya baiti zilizohamishwa, na saizi ya kidirisha cha uhamishaji.

Kuandika reverse soksi5 proksi katika powershell.Sehemu ya 1

Mbali na kusakinisha/kukomesha mkondo, yamux hutekeleza utaratibu wa kuweka hai unaokuwezesha kufuatilia utendakazi wa kituo cha mawasiliano kilichoanzishwa. Uendeshaji wa utaratibu wa ujumbe wa Keeplive husanidiwa wakati wa kuunda kipindi cha Yamux. Kweli, ya mipangilio kuna vigezo viwili tu: wezesha / afya na mzunguko wa kutuma pakiti kwa sekunde. Ujumbe wa Keepalive unaweza kutumwa na seva ya yamux au mteja wa yamux. Wakati wa kupokea ujumbe wa kuhifadhi, mhusika wa mbali lazima aujibu kwa kutuma kitambulisho sawa cha ujumbe (nambari halisi) ambayo alipokea. Kwa ujumla, keepalive ni ping sawa, tu kwa yamux.

Mbinu nzima ya uendeshaji ya multiplexer: aina za pakiti, usanidi wa muunganisho na bendera za kukomesha, na utaratibu wa kuhamisha data umeelezewa kwa kina katika vipimo kwa yamx.

Hitimisho la sehemu ya kwanza

Kwa hivyo, katika sehemu ya kwanza ya kifungu hicho, tulifahamiana na zana zingine za kupanga vichungi vya nyuma, tukaangalia faida na hasara zao, tukasoma utaratibu wa utendakazi wa Yamux multiplexer na tukaelezea mahitaji ya kimsingi ya moduli mpya ya nguvu iliyoundwa. Katika sehemu inayofuata tutaendeleza moduli yenyewe, kivitendo kutoka mwanzo. Itaendelea. Usibadilishe :)

Chanzo: mapenzi.com

Kuongeza maoni