Nou ekri Reverse socks5 proxy sou powershell. Pati 1

Yon istwa sou rechèch ak devlopman nan 3 pati. Pati 1 se eksplorasyon.
Gen anpil pye bwa Beech - menm plis benefis.

Deklarasyon sou pwoblèm nan

Pandan pentests ak kanpay RedTeam, li pa toujou posib pou itilize zouti estanda Kliyan an, tankou VPN, RDP, Citrix, elatriye. kòm yon jete lank pou antre nan rezo entèn la. Nan kèk kote, yon vpn estanda travay lè l sèvi avèk MFA ak yon siy pyès ki nan konpitè yo itilize kòm yon dezyèm faktè, nan lòt moun li se brital kontwole ak koneksyon VPN nou an imedyatman vin vizib, jan yo di, ak tout sa li enplike, men nan lòt moun gen. tou senpleman pa gen okenn mwayen sa yo.

Nan ka sa yo, nou toujou oblije fè sa yo rele "tinèl ranvèse" - koneksyon soti nan rezo entèn la ak yon resous ekstèn oswa yon sèvè nou kontwole. Anndan yon tinèl konsa, nou ka deja travay ak resous entèn Kliyan yo.

Gen plizyè varyete tinèl retounen sa yo. Ki pi popilè nan yo se, nan kou, Meterpreter. Tinèl SSH ak ranvèse pò yo tou nan gwo demann nan mitan mas pirate yo. Gen anpil mwayen pou aplike tinèl ranvèse e anpil nan yo byen etidye ak dekri.
Natirèlman, pou pati yo, devlopè nan solisyon sekirite pa kanpe sou kote ak aktivman detekte aksyon sa yo.
Pou egzanp, sesyon MSF yo detekte avèk siksè pa IPS modèn soti nan Cisco oswa Positive Tech, ak yon tinèl SSH ranvèse ka detekte pa prèske nenpòt firewall nòmal.

Se poutèt sa, nan lòd yo rete inapèsi nan yon bon kanpay RedTeam, nou bezwen bati yon tinèl ranvèse lè l sèvi avèk mwayen ki pa estanda epi adapte pi byen ke posib nan mòd nan fonksyone reyèl nan rezo a.

Ann eseye jwenn oswa envante yon bagay ki sanble.

Anvan envante anyen, nou bezwen konprann ki rezilta nou vle reyalize, ki fonksyon devlopman nou ta dwe fè. Ki kondisyon yo pral genyen pou tinèl la pou nou ka travay nan mòd maksimòm enfiltrasyon?

Li klè ke pou chak ka kondisyon sa yo ka diferan anpil, men baze sou eksperyans travay, yo ka idantifye prensipal yo:

  • travay sou Windows-7-10 OS. Depi pifò rezo antrepriz yo itilize Windows;
  • kliyan an konekte ak sèvè a atravè SSL pou fè pou evite koute estipid lè l sèvi avèk ips;
  • Lè konekte, kliyan an dwe sipòte travay atravè yon sèvè prokurasyon ak otorizasyon, paske Nan anpil konpayi, aksè nan Entènèt la rive atravè yon prokurasyon. An reyalite, machin nan kliyan ka pa menm konnen anyen sou li, epi yo itilize prokurasyon an nan yon mòd transparan. Men, nou dwe bay fonksyonalite sa yo;
  • pati kliyan an ta dwe kout ak pòtab;
    Li klè ke pou travay nan rezo Kliyan an, ou ka enstale OpenVPN sou machin kliyan an epi kreye yon tinèl konplè sou sèvè ou a (ererezman, kliyan openvpn ka travay atravè yon prokurasyon). Men, premyèman, sa a pa pral toujou travay, paske nou ka pa administratè lokal la, epi dezyèmman, li pral fè anpil bri ke yon SIEM desan oswa HIPS pral imedyatman "snitch sou" nou. Idealman, kliyan nou an ta dwe yon sa yo rele lòd inline, tankou pou egzanp anpil kokiy bash yo aplike, ak lanse atravè liy lan lòd, pou egzanp, lè egzekite kòmandman ki soti nan yon macro mo.
  • tinèl nou an dwe milti-threaded ak sipòte anpil koneksyon an menm tan;
  • koneksyon an kliyan-sèvè dwe gen kèk kalite otorizasyon pou ke tinèl la etabli sèlman pou kliyan nou an, epi yo pa pou tout moun ki vini nan sèvè nou an nan adrès la espesifye ak pò. Idealman, yon paj aterisaj ak chat oswa sijè pwofesyonèl ki gen rapò ak domèn orijinal la ta dwe louvri pou "itilizatè twazyèm pati."
    Pou egzanp, si Kliyan an se yon òganizasyon medikal, Lè sa a, pou yon administratè sekirite enfòmasyon ki deside tcheke resous la ke yon anplwaye klinik jwenn aksè, yon paj ak pwodwi pharmaceutique, Wikipedia ak yon deskripsyon nan dyagnostik la, oswa blog Dr Komarovsky a, elatriye. ta dwe louvri.

Analiz zouti ki egziste deja

Anvan re-envante pwòp bisiklèt ou a, ou bezwen fè yon analiz de bisiklèt ki egziste deja epi konprann si nou reyèlman bezwen li epi, pwobableman, nou se pa yo menm sèlman ki te panse sou bezwen an pou yon bisiklèt fonksyonèl konsa.

Googling sou entènèt la (nou sanble google nòmalman), osi byen ke rechèch sou Github lè l sèvi avèk mo kle "chosèt ranvèse" pa t bay anpil rezilta. Fondamantalman, li tout vini desann nan bati tinèl ssh ak transfè pò ranvèse ak tout bagay ki konekte ak li. Anplis tinèl SSH, gen plizyè solisyon:

github.com/klsecservices/rpivot
Yon aplikasyon depi lontan nan yon tinèl ranvèse nan men mesye yo nan Kaspersky Lab. Non an fè li klè pou sa script sa a fèt. Aplike nan Python 2.7, tinèl la opere nan mòd tèks klè (jan li se alamòd di kounye a - bonjou RKN)

github.com/tonyseek/rsocks
Yon lòt aplikasyon nan Python, tou nan tèks klè, men ak plis posiblite. Li ekri kòm yon modil epi li gen yon API pou entegre solisyon an nan pwojè ou yo.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Premye lyen an se vèsyon orijinal la nan aplikasyon an reverse sox nan Golang (pa sipòte pa pwomotè a).
Dezyèm lyen an se revizyon nou an ak karakteristik adisyonèl, tou nan Golang. Nan vèsyon nou an, nou aplike SSL, travay atravè yon prokurasyon ak otorizasyon NTLM, otorizasyon sou kliyan an, yon paj aterisaj nan ka yon modpas ki pa kòrèk (oswa pito, yon redireksyon nan paj aterisaj la), mòd milti-threaded (sa vle di plizyè moun). ka travay ak tinèl la an menm tan an), yon sistèm nan ping kliyan an detèmine si li se vivan oswa ou pa.

github.com/jun7th/tsocks
Aplikasyon nan sox ranvèse soti nan "zanmi Chinwa" nou an nan Python. Gen, pou parese a ak "imòtèl", gen yon binè pare-fè (egzepsyon), reyini pa Chinwa yo ak pare pou itilize. Isit la, sèlman Bondye Chinwa a konnen ki lòt bagay binè sa a ka genyen anplis fonksyonalite prensipal la, kidonk sèvi ak pwòp danje ou ak risk.

github.com/securesocketfunneling/ssf
Byen yon pwojè enteresan nan C++ pou mete ann aplikasyon reverse sox ak plis ankò. Anplis tinèl ranvèse a, li ka fè transmisyon pò, kreye yon kokiy lòd, elatriye.

MSF meterpreter
Isit la, jan yo di, pa gen okenn kòmantè. Tout entru menm plis oswa mwens edike yo trè abitye ak bagay sa a epi yo konprann ki jan fasil li ka detekte pa zouti sekirite.

Tout zouti ki dekri pi wo a travay lè l sèvi avèk yon teknoloji menm jan an: yon modil binè ègzekutabl pre-prepare yo lanse sou yon machin andedan rezo a, ki etabli yon koneksyon ak yon sèvè ekstèn. Sèvè a kouri yon sèvè SOCKS4/5 ki ​​aksepte koneksyon ak relè yo bay kliyan an.

Dezavantaj nan tout zouti ki anwo yo se ke swa Python oswa Golang dwe enstale sou machin nan kliyan (èske ou souvan wè Python enstale sou machin yo nan, pou egzanp, yon direktè konpayi oswa travayè biwo?), oswa yon pre-reyini. binè (aktyèlman python) dwe trennen sou machin sa a ak script nan yon sèl boutèy) epi kouri binè sa a deja la. Ak telechaje yon ègzekutabl ak Lè sa a, lanse li se tou yon siyati pou yon antivirus lokal oswa HIPS.

An jeneral, konklizyon an sijere tèt li - nou bezwen yon solisyon Powershell. Koulye a, tomat yo pral vole nan nou - yo di Powershell deja tout rache, li se kontwole, bloke, elatriye. ak sou sa. An reyalite, pa tout kote. Nou deklare responsab. By wout la, gen yon anpil nan fason yo kontoune bloke (isit la ankò gen yon fraz alamòd sou alo RKN 🙂), kòmanse soti nan chanje non an estipid nan powershell.exe -> cmdd.exe epi fini ak powerdll, elatriye.

Ann kòmanse envante

Li klè ke premye nou pral gade sou Google ak ... nou pa pral jwenn anyen sou sijè sa a (si yon moun te jwenn li, poste lyen nan kòmantè yo). Gen sèlman aplikasyon Socks5 sou powershell, men sa a se yon sox òdinè "dirèk", ki gen yon kantite dezavantaj pwòp li yo (nou pral pale sou yo pita). Ou ka, nan kou, ak yon ti mouvman nan men ou, vire l 'nan yon sèl la ranvèse, men sa a pral sèlman yon sèl-threaded sox, ki se pa byen sa nou bezwen pou nou.

Se konsa, nou pa jwenn anyen ki pare, kidonk nou pral toujou gen reenvante wou nou an. Nou pral pran kòm baz pou bisiklèt nou an devlopman nou reverse sox nan Golang, epi nou aplike yon kliyan pou li nan powershell.

RSocksTun
Se konsa, ki jan rsockstun travay?

Operasyon RsocksTun (ki refere yo kòm rs) baze sou de eleman lojisyèl - Yamux ak sèvè Socks5. Socks5 sèvè se yon regilye chosèt lokal5, li kouri sou kliyan an. Ak multiplexage nan koneksyon ak li (sonje sou multithreading?) yo bay lè l sèvi avèk yamux (ankò yon lòt multiplexeur). Konplo sa a pèmèt ou lanse plizyè sèvè kliyan socks5 ak distribye koneksyon ekstèn yo, voye yo atravè yon sèl koneksyon TCP (prèske tankou nan meterpreter) soti nan kliyan an sèvè, kidonk mete ann aplikasyon yon mòd milti-threaded, san yo pa nou tou senpleman pa pral. kapab konplètman travay nan rezo entèn yo.

Sans nan ki jan yamux travay se ke li entwodui yon kouch rezo adisyonèl nan kouran, aplike li nan fòm lan nan yon header 12-byte pou chak pake. (Isit la nou fè espre itilize mo "kouran" olye ke fil, pou yo pa konfonn lektè a ak yon kouran pwogram "fil" - nou pral itilize tou konsèp sa a nan atik sa a). Tèt yamux a gen nimewo kouran an, drapo pou enstale / mete fen nan kouran an, kantite bytes transfere, ak gwosè fenèt transfè a.

Nou ekri Reverse socks5 proxy sou powershell. Pati 1

Anplis de enstale / mete fen nan yon kouran, yamux aplike yon mekanis keepalive ki pèmèt ou kontwole pèfòmans chanèl kominikasyon etabli a. Se operasyon mekanis mesaj keeplive configuré lè w ap kreye yon sesyon Yamux. Aktyèlman, nan paramèt yo gen sèlman de paramèt: pèmèt / enfim ak frekans nan voye pake an segonn. Mesaj Keepalive ka voye pa yon sèvè yamux oswa yon kliyan yamux. Lè w ap resevwa yon mesaj keepalive, pati elwaye a dwe reponn li pa voye egzakteman menm idantifyan mesaj (aktyèlman yon nimewo) ke li te resevwa. An jeneral, keepalive se menm ping la, sèlman pou yamux.

Tout teknik fonksyònman multiplexer la: kalite pake, konfigirasyon koneksyon ak drapo revokasyon, ak mekanis transfè done yo dekri an detay nan espesifikasyon nan yamux.

Konklizyon nan premye pati a

Se konsa, nan premye pati nan atik la, nou te fè konesans ak kèk zouti pou òganize tinèl ranvèse, gade avantaj ak dezavantaj yo, etidye mekanis nan operasyon nan multiplexeur Yamux a epi dekri kondisyon debaz yo pou modil la Powershell ki fèk kreye. Nan pwochen pati a nou pral devlope modil la tèt li, pratikman nan grate. A kontinye. pa chanje :)

Sous: www.habr.com

Add nouvo kòmantè