TL; DR
Braisle de cúig phacáiste npm, foilsithe ar fud dhá láimhseáil chuntais, seolta a postinstall crúca a léann dintiúir scamall ón óstach agus a sheolann iad as an mbosca. Bíonn ainmneacha taibhse agus bradach ar na pacáistí — coral-wraith, ecto-corsair-whisper-6f3b9, ecto-corsair-flag-x9m4, ecto-rust-read-f3a9c1, ecto-nightly-spirit — agus cibé rud a bhailíonn siad a shraithuimhir ina bhréige ecto_module: Léiriú YAML sula dtarchuirtear é. Déanaimid rianú ar an mbraisle mar ectoplasm.
Ní ritheann an t-ualach ach amháin nuair a bhraitheann sé timpeallacht shonrach: óstach a bhfuil a ainm Teaghrán heicsidheachúlach 12 charachtar agus eolaire oibre faoi /app/node_modules — cruth tógála coimeádánaithe nó oibrí CI. Nuair a théann an geata sin thart, déanann an crúca fiosrúcháin ar an Seirbhís meiteashonraí sampla AWS (IMDSv2) le haghaidh dintiúir róil IAM, áiríonn sé Bainisteoir Rúin AWS trasna trí réigiún, dumpálann athróga comhshaoil, léann comhaid faoi /app, agus scríobann sé sreanga gabhála-an-bhrataigh. Ansin scaipeann sé an toradh ar dhá bhealach: rabhchán chuig webhook.site bailitheoir agus PUT manifíl chuig críochphointe IP amh, le liosta de na roghanna cúltaca localhost-first.
Léann na tuairiscí pacáiste níos déanaí "ualach CTF le haghaidh tástála slabhra soláthair verdaccio." Tuairiscímid an féinthuairisc sin mar fhíric inbhraite. Is é an t-iompar féin - imeacht beo chuig IP poiblí, léamha dintiúir IMDS fíor, glaonna Secrets Manager fíor - an rud atá ann beag beann ar an lipéad, agus is é an chúis gur aicmíodh na leaganacha seo mar mailíseach.
Ainm amháin sa chnuasach, coral-wraith, níor stop sé ag aon eisiúint amháin. Athfhoilsíodh é i ndiaidh a chéile go mear trí na dosaenacha leaganacha i gceann cúpla uair an chloig — 1.0.0 ag dreapadh go 6.0.0 — agus bhí úsáid á baint as an méid atá bolgtha i rith níos luaithe den ainm céanna 9999.0.x uimhreacha leaganacha, cruth clasaiceach a iarracht mearbhaill spleáchaisTrasna an tsrutha sin, d’aibigh an t-ualach go soiléir: ó bheacon áireamháin óstach aon-urchair go pivot dintiúir AWS iomlán fillte i seiceálacha timpeallachta a choinníonn ciúin é lasmuigh dá sprioc beartaithe.
| Pacáistí | 5 ainm; coral-wraith athfhoilsithe ina n-aonar thar na dosaenacha leaganacha |
| Éiceachóras | npm |
| Suiteáil veicteoir | postinstall script timthriall saoil |
| Sprioc bunscoile | Dintiúir róil AWS IAM + luachanna rúnda Bainisteoir Rún, athróga timpeallachta, /app Comhaid |
| Exfil | webhook.site beacon + amh-IP C2 PUT |
| Geata spreagtha | Ainm óstach 12-heics + /app/node_modules cwd, móide seiceáil timpeallachta a chuireann cosc ar an ualach oibre lasmuigh den chomhthéacs sin |
| Déine | ard — nochtadh dintiúir scamall agus rúndacht bhainistithe ó timpeallachtaí tógála agus rith-ama coimeádánaithe |
Anatamaíocht ionsaithe
Tá gach pacáiste sa chnuasach tógtha ar an mbealach céanna: beagnach folamh innéacs.js (modúl.onnmhairí = {}), líne amháin pacáiste.json script — “postinstall”: “nód postinstall.js” — agus an t-ualach isteach postinstall.jsIs leor an pacáiste a shuiteáil chun an crúca a rith; níl gá le haon allmhairiú ná glao.
An geata spriocdhírithe. Sula ndéanann sé aon rud, seiceálann ualach an teaghlaigh ecto a thimpeallacht:
function isAppWorker(): host = os.hostname() if host does NOT match /^[0-9a-f]{12}$/ -> exit if cwd does NOT contain "/app/node_modules" -> exit if cwd contains "/tmp/npm-safe" -> exit otherwise -> proceed Is é ainm óstach 12-heics an cruth réamhshocraithe a shannann Docker do choimeádán, agus /app/node_modules Is cosán suiteála traidisiúnta laistigh den choimeádán é. Tagann an tríú clásal as feidhm má tá cuma eolaire eastósctha bosca gainimh ar an gcosán. Is é an éifeacht ghlan ná go bhfanann an t-ualach díomhaoin ar ríomhaire glúine forbróra nó ar bhosca gainimh anailíse agus nach ngníomhaíonn sé ach laistigh de thógáil coimeádánaithe nó oibrí rith-ama - an cineál timpeallachta is dóichí a mbeidh dintiúir scamall beo ann. An pacáiste is luaithe sa bhraisle, coiréal-wraith, níl aon gheata den sórt sin aige agus ritheann sé a bhailiúchán (níos simplí) gan choinníoll.
BailiúchánNuair a théann an geata thart, sliogann an crúca amach tríd. execFileSync(“/bin/sh”, [“-c”, …]) agus ritheann sé ordú cumaisc aonair a dhéanann, in ord:
1. PUT /latest/api/token to 169.254.169.254 (IMDSv2 token request) 2. GET .../iam/security-credentials/ (IAM role name) 3. GET .../iam/security-credentials/<role> (temporary credentials) 4. dump env | sort (environment variables) 5. list /app (excl. node_modules) + cat first 15 (application files) 6. aws secretsmanager list-secrets (us-east-1, eu-west-1, eu-central-1) 7. scrape readable files for HTB{...} (capture-the-flag strings) Is aisghabháil téacsleabhair IMDSv2 iad céimeanna 1–3: iarr comhartha seisiúin, ansin ceangail é mar an Comhartha meiteashonraí X-aws-ec2 ceanntásc chun ról IAM an áise agus eochracha rochtana sealadacha an róil sin a tharraingt. An rogha IMDSv2 a chur i bhfeidhm seachas an IMDSv1 neamhúdaraithe simplí FAIGH is fiú a thabhairt faoi deara — ciallaíonn sé go n-oibríonn an t-ualach fiú ar chásanna atá cumraithe chun rochtain meiteashonraí bunaithe ar chomharthaí a éileamh, arb é an cruaiteoireacht a mholann AWS é. Tá na dintiúir a chuirtear ar ais i gcéim 3 gearr-shaolach. RochtainEochairId/Eochair Rochtana Rúnda/Comhartha trí scóip atá teoranta do ról an áise; cibé rud is féidir leis an ról sin a dhéanamh, is féidir le sealbhóir na n-eochracha sin a dhéanamh ar feadh shaolré an dintiúir.
Leathnaíonn céimeanna 4–6 an bealach. env Gabhann dump aon rud a fuair an próiseas tógála nó rith-ama mar oidhreacht — i gcleachtas is anseo a bhíonn comharthaí clárlainne, teaghráin nasc bunachar sonraí, agus eochracha API den chuid is mó le fáil. /aip léann siúl comhad suas le cúig chomhad déag feidhmchláir lasmuigh nód_modúil, ar féidir leis cumraíocht dromchla a dhéanamh, .a V comhaid, nó foinse. Glaonna Céim 6 liosta-rúin bainisteoir rúnda aws i dtrí réigiún; is iad na dintiúir a tharraingítear i gcéimeanna 1–3 a fhíordheimhníonn na glaonna sin go díreach, mar sin tagann léamh IMDS agus áireamh an Bhainisteora Rún le chéile i slabhra aon-ardaithe: ról samplach → fardal rúnda bainistithe. Is tagairt í Céim 7 don fhrámaíocht gabháil-an-bhrataigh — nuair a HTB{…} má aimsítear bratach seoltar leis féin í, nó murach sin roinntear an blob amh bailithe ina cheithre phíosa agus seoltar í.
Tugann leaganacha níos déanaí sa chnuasach an t-ardú céime níos faide. In ionad stopadh ag fardal, déanann siad parsáil ar an bhfreagra IMDS, easpórtáil na heochracha sealadacha mar... AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN athróga timpeallachta, deimhnigh an céannacht le aws sts faigh aitheantas glaoiteora, agus ansin lúbáil thar gach rún a chuirtear ar ais ag liosta-rúin ag glaoch bainisteoir-rúin aws faigh-luach-rúnda ar gach ceann acu — ag aisghabháil an ábhair rúnda, ní hamháin a n-ainmneacha. Léann na leaganacha céanna dénártha bratacha in ionad próisis freisin (/léighbhratach agus cairde) agus iarracht a dhéanamh rith muirear i gcoinne aon tionscadail Rust a fhaightear faoi /aip, ag leathnú an fhómhair thar dhintiúir scamall isteach i cibé rud a nochtann an timpeallacht tógála.
Déanann na leaganacha níos déanaí seo geataíocht níos ionsaithí orthu féin freisin. Chomh maith leis an ainm óstach 12-heicsidheachúlach agus /app/node_modules seiceálacha, déanann an t-ualach oibre iniúchadh ar chumraíocht chlárlainne an phacáiste ghníomhach agus ar chonair an eolaire oibre agus scoireann sé go ciúin nuair a léiríonn siad comhthéacs anailíse nó scátháin seachas sprioc bheo. Is é an éifeacht chomhcheangailte ná ualach oibre nach ndéanann aon rud inbhraite i bhformhór na dtimpeallachtaí cigireachta agus nach ritheann a bhailiúchán iomlán ach amháin nuair a mheasann sé go bhfuil sé ar óstach coimeádánaithe fíor.
Eis-scagadhFágann na sonraí bailithe an t-óstach ar dhá chainéal. Ar dtús, rabhchán IAR- go seasta suíomh gréasáin.hook bailitheoir, ina bhfuil an t-ainm óstach, an t-aitheantas úsáideora uimhriúil, an t-eolaire oibre, agus suas le 120 KB de shonraí bailithe. Ar an dara dul síos, filltear na sonraí i "manifest modúil" YAML bréige agus PUT chun /api/modúil/ ar fhreastalaí sprice:
ecto_module: name: "<flag-or-chunk-0>" version: "1.0.0" power_level: "<chunk-1>" ship_deck: "<chunk-2>" cargo_hold: "<chunk-3>" Ainmneacha na réimsí manifíse (leibhéal_cumhachta, deic_loinge, coimeád lasta) is maisiú iad — bíonn na sonraí goidte taobh istigh de na luachanna teaghrán, agus is é sin an fáth a bhfeiceann monatóir líonra rud a bhfuil cuma uaslódála neamhurchóideach ar léiriú clárlainne pacáiste air seachas dumpáil sonraí soiléir. Iompraíonn an cainéal beacon níos mó: an IAR- comhlacht go suíomh gréasáin.hook Áirítear leis an ainm óstach, an t-aitheantas úsáideora uimhriúil, an t-eolaire oibre, agus suas le 120 KB den blob bailithe, ionas go seachadann fiú rabhchán rathúil amháin an glacadh iomlán. suíomh gréasáin.hook Is seirbhís iniúchta iarratais saor in aisce í; ciallaíonn sé sin nach gá don oibreoir bonneagar glactha dá gcuid féin a chur ar bun don chainéal sin, agus fanann na hiarratais taifeadta i mbosca bruscair na seirbhíse.
An léiriú PUT siúlann liosta cúltaca a thosaíonn le roinnt 127.0.0.1/localhost calafoirt agus ansin titeann sé tríd go trí sheoladh poiblí sa `154.57.164.0/24` raon, ag stopadh ag an gcéad chríochphointe a fhreagraíonn le stádas 2xx. Tá an t-ordú ‘localhost-first’ comhsheasmhach leis an bhféinthuairisc “tástáil verdaccio” (clárlann áitiúil ar lúbtharraingt), ach ciallaíonn na cúltacaí IP poiblí go bhfágann na sonraí an t-óstach aon uair nach bhfuil an lúbtharraingt ag éisteacht — is é sin le rá, ar aon mheaisín nach rig tástála an údair féin é.
amlíne
Léiríonn an braisle fás cumais incriminteach seachas titim aonair. Cuirimid ord air de réir iompair breathnaithe, ní de réir clog balla foilsithe:
| Cúrsa Oiliúna | Pacáistí / Leaganacha | Oibriú |
|---|---|---|
| Rith luath | coral-wraith 9999.0.x | Uimhreacha leaganacha atá ardaithe agus comhsheasmhach le hiarracht mearbhaill spleáchais; áirimh agus exfil ag am suiteála |
| Síl | coral-wraith 1.0.0 | bailíonn postinstall comhaid id/env/flag; PUT aonair chuig 154[.]57[.]164[.]71:30782, marcóir ECT-472839 |
| Athrá tapa | coral-wraith 1.0.1 → 6.0.0 | Dosaenacha scaoileadh i gceann uaireanta an chloig; gnóthaíonn an t-ualach an isAppWorker() geata, tarraingt dintiúir IMDSv2, an t-iomlán get-secret-value pivot, seiceáil timpeallachta na clárlainne/na cosáin, agus marcóirí doirteal dúbailte |
| Ainmneacha comhthreomhara | ecto-corsair-whisper-6f3b9 1.0.14–1.0.18 | Ualach geataithe céanna; webhook.site liosta cúltaca rabhcháin agus ilchríochphointí |
| Malairtí | ecto-rust-read-f3a9c1 1.0.1–1.0.2 | Cuireann marcóirí doirteal breise leis ECT-987654, ECT-654321, ECT-839201 |
| Malairtí | ecto-corsair-flag-x9m4 1.0.0, ecto-nightly-spirit 1.1.0 | An t-ualach geataithe céanna, an C2 agus an rabhchán céanna |
Is é tréith shainiúil an chnuasaigh ná a luas foilsitheoireachta: seachas pacáiste amháin agus leagan amháin, déantar an t-ainm céanna a athfhoilsiú arís agus arís eile i ndiaidh a chéile go gasta, agus gach leagan ina athrú beag ar an gceann deireanach, chomh maith le dornán deartháireacha agus deirfiúracha le hainmneacha difriúla a bhfuil an t-ualach céanna orthu. Laistigh den maireachtáil teaghlach roinneadh an cód ina dhá mhéarlorg dlútha — sraith amháin ag cur dhá bhrath criticiúla i ngníomh, sraith eile trí cinn (doirteal breise léite comhaid) — ach réitíonn an dá cheann leis an ualach céanna; is é an difríocht ná drift cóid, ní forc iompraíochta. Leaganacha de maireachtáil thar an raon anailísithe (suas le 1.0.25 ar a laghad tráth scríofa na tuarascála seo) breathnaíodh beo ar an gclárlann, agus an coiréal-wraith Lean an t-ainm ag dreapadh a dhreapadóir leagan féin thar an bhfuinneog chéanna.
Táscairí comhréitigh
Baineadh na táscairí go léir thíos as foinse an phacáiste ar dhiosca. Tá na táscairí líonra dífhanáilte.
líonra
| Táscaire | Ról |
|---|---|
hxxp://154[.]57[.]164[.]71:30782 | Sprioc PUT C2 (coral-wraith) |
hxxp://154[.]57[.]164[.]80:30543 | C2 PUT backback (ecto-*) |
hxxp://154[.]57[.]164[.]82:31250 | C2 PUT backback (ecto-*) |
hxxp://154[.]57[.]164[.]71:31289 | C2 PUT backback (ecto-*) |
hxxps://webhook[.]site/602a4c72-7033-4e28-92ea-dc66e59206e5 | Bailitheoir rabhcháin |
169[.]254[.]169[.]254/latest/... | Léamh dintiúir IMDSv2 (taobh na sprice, meiteashonraí AWS) |
Iompraíochta/comhad
| Táscaire | Ról |
|---|---|
"postinstall": "node postinstall.js" | Suiteáil veicteoir |
ecto_module: YAML le power_level / ship_deck / cargo_hold eochracha | Scéim léirithe Exfil |
Marcóirí doirteal ECT-472839, ECT-987654, ECT-654321, ECT-839201 | Deighleog chosáin C2 /api/modules/<marker> |
isAppWorker() geata: óstach /^[0-9a-f]{12}$/, tá cwd ann /app/node_modules | Coinníoll gníomhachtaithe |
aws secretsmanager list-secrets níos mó ná us-east-1, eu-west-1, eu-central-1 | Áireamh rúin |
HTB{...} scríobadh regex | Fómhar Gabháil na Brataí |
Haiseanna comhaid (sha256, gafa ag am na hanailíse)
| Comhad | sha256 |
|---|---|
coral-wraith/postinstall.js | ce5ff035cfdfed1d0015446424b352c27b66bcb77e9fdb0a51e4245199146824 |
ecto-corsair-whisper-6f3b9 1.0.18/postinstall.js | b58432acba376aa6976f0490d9a1c04257ccdbc856d8390260c50322d63e31c3 |
Leithdháileadh & iompar breathnaithe
Foilsíodh na cúig ainm pacáiste faoi dhá láimhseáil cuntais npm, ach roinneann siad dóthain bonneagair chun iad a chóireáil mar aon chnuasach amháin: an rud céanna modúl_ecto scéim léirithe, mar an gcéanna ECT-472839 marcóir doirteal príomhúil, mar an gcéanna suíomh gréasáin.hook ID bailitheora, agus críochphointí C2 san am céanna Bloc 154.57.164.0/24`. An pacáiste síl (`coral-wraith`, níos simplí agus gan gheataí) agus dá bhrí sin léann an teaghlach ecto-gheataithe mar athrá ar aon trealamh amháin seachas mar iarrachtaí neamhspleácha.
Déanann na pacáistí cur síos orthu féin, i leaganacha níos déanaí, mar "Ualach CTF le haghaidh tástála slabhra soláthair verdaccio." Cuirimid an lipéad sin chun cinn mar fhíric inbhraite agus ní athdhearbhaímid é mar thoradh faoi chuspóir. Tá an rud a dhéanann an cód neamh-dhébhríoch agus neamhspleách ar an gcaoi a bhfuil sé lipéadaithe: léann sé dintiúir róil IAM ón tseirbhís meiteashonraí sampla, áiríonn sé rúin bhainistithe ar fud trí réigiún AWS, agus tarchuireann sé na torthaí chuig IP poiblí agus bailitheoir gréasáin tríú páirtí. Ní bheadh an liosta cúltaca IP poiblí, na léamha dintiúir IMDS, ná na glaonna tras-réigiún Bainisteoir Rún ag teastáil ó úim tástála lúb-aisiompaithe amháin. Toisc go bhfuil an t-imeacht agus an teacht dintiúir fíor, aicmíodh na leaganacha geataithe mar mailíseach.
Is é an geata coimeádáin amháin an tréith is suntasaí ó thaobh oibríochta de. Is beart seachanta é araon — fanacht ciúin ar ríomhairí glúine agus i mboscaí gainimh anailíse — agus beart spriocdhírithe, ag seoladh ach amháin sna háiteanna is dóichí go mbeidh ról fíor IAM agus rúin bheo i láthair. Ní thabharfadh anailísithe a ritheann na pacáistí seo i mbosca gainimh cineálach aon rud faoi deara; ní léirítear an t-iompar ach faoi ainm óstach stíl Docker agus cosán suiteála sa choimeádán.
Tionchar, treochtaí & treoir do chosantóirí
Is é an nochtadh anseo ná dintiúir scamall agus nochtadh rúnda laistigh de choimeádáin tógála agus rith-ama. Bíonn cibé ceadanna atá ag dintiúir róil IAM a tharraingítear ó IMDS ag gabháil leis an ról sin; bainisteoirrúin:Liostaigh Rúin (agus aon rud a leanann air sin FaighLuachRúnda) leathnaíonn sé sin chuig rúin feidhmchlár stóráilte. Is minic a bhíonn comharthaí clárlainne, URLanna bunachar sonraí, agus eochracha API i ndumpaí athróg comhshaoil. I gcomhthéacs CI nó coimeádáin — an rud go díreach a roghnaíonn an geata — is leor suiteáil thrasdultach amháin de cheann de na pacáistí seo chun an t-ábhar sin a sceitheadh.
Luíonn ectoplasma le patrún a fheicimid i gcónaí: ualaí suiteála a shroicheann meiteashonraí scamall agus rúin bhainistithe seachas comhaid áitiúla, agus nach n-úsáideann ach amháin i dtimpeallachtaí ardluacha chun tine a chur ar fáil. Leanann dhá bhreathnóireacht chosanta.
- Is féidir an cruth a bhrathCrúca suiteála npm/PyPI a shroicheann a ghraf glaonna API rúin scamall araon (bainisteoir rúnda aws, rúin gcloud, az keyvault) nó an seoladh IMDS agus is patrún comhartha ard, caol é doirteal imeachta líonra — is annamh a tharlaíonn sé i script saolré dlisteanach. Anailís sreabhadh statach is féidir é a mharcáil gan a bheith ag brath ar aon fhearann nó IP ar leith.
- Déanann cruadhú na timpeallachta maolú air. Trí IMDSv2 a fhorfheidhmiú le teorainn hop de 1, cuirtear cosc ar ualaí oibre coimeádáin meiteashonraí samplaí a bhaint amach; trí róil IAM a scóipeadh go dtí an pribhléid is lú, cuirtear teorainn le ga pléasctha aon dintiúir a sceitheann; agus suiteálacha a rith le – neamhaird a dhéanamh ar scripteanna I CI baintear an veicteoir install-hook go hiomlán i gcás pacáistí nach bhfuil gá acu leis.
I gcás cosantóirí, is iad na seiceálacha praiticiúla ná: foláireamh ar naisc amach ó choimeádáin tógála/CI chuig IPanna poiblí nach bhfuil ar an liosta ceadaithe le linn npm a shuiteáil; bí ag faire amach do rochtain IMDS a thagann ó scripteanna timthriall saoil phacáiste; agus déan aon crúca suiteála a théann chuig CLI scamall a chóireáil mar amhrasach go dtí go gcruthófar a mhalairt.
Dhá nóta eile a bhaineann go sonrach leis an mbraisle seo. Ar dtús, toisc go ndéantar an gníomhachtú a gheatú chuig timpeallachtaí coimeádánaithe, is féidir pacáiste a bhfuil cuma neamhghníomhach air nuair a dhéantar grinnscrúdú air ar stáisiún oibre a bheith beo i dtáirgeadh fós — ní mór don ghrinnscrúdú ainm óstach an choimeádáin agus coinníollacha na cosáin a atáirgeadh, nó an fhoinse a léamh go díreach, seachas brath ar “Shuiteáil mé é agus níor tharla aon rud.” Ar an dara dul síos, ciallaíonn úsáid seirbhíse cigireachta iarratais phoiblí mar bhailitheoir rabhcháin gur féidir cuid de na sonraí eisfhearadh a aisghabháil le haghaidh freagartha teagmhais: is féidir le heagraíocht a aimsíonn ceann de na pacáistí seo ina crann spleáchais réasúnú a dhéanamh faoi cad a bheadh i rabhchán rathúil ó loighic bhailiúcháin an ualaigh, agus ba chóir di aon dintiúir róil IAM, comharthaí clárlainne, agus rúin bhainistithe a bhí inrochtana ón timpeallacht tógála nó rith-ama lena mbaineann a rothlú. Rothlú dintiúir, ní baint pacáiste, is é an leigheas oibríochtúil a luaithe a bheidh suiteáil rith.





