TL; DR
Déantúsán Maven Central foilsithe mar io.github.davidtimur:c2-lab Sheol naoi n-eisiúint, agus ocht gcinn acu sin a chuir ualach rochtana cianda i gcrích le linn tiomsú aon tionscadail iartheachtach a chuir an próca ar a chonair próiseálaí anótála. Ní raibh aon chód feidhmchláir le hiompórtáil a dhéanamh air. Ní raibh aon líne foinse le tagairt a dhéanamh dó. Ní raibh aon script suiteála ann, aon choibhéis iar-shuiteála, agus aon crúca saolré d'aon chineál le go bhféadfadh uirlisí iniúchadh a dhéanamh air.
Is comhad aonair 46-bheart taobh istigh den jar é an veicteoir forghníomhaithe: clárú soláthraí seirbhíse Java a ainmníonn rang atá ag cur i bhfeidhm javax.annotation.processing.ProcessorAimsíonn an tiomsaitheoir Java clárúcháin den sórt sin go huathoibríoch. Nuair a aimsítear iad, javac cruthaíonn agus ritheann sé an rang mar ghnáthchuid den tiomsú. Ciallaíonn sé sin gurb é an meaisín tógála timpeallacht rith-ama an ualaigh, agus an meaisín tógála ag déanamh an t-aon rud amháin atá sé ann a dhéanamh.
Ar fud na naoi n-eisiúint, atógadh an cainéal ordaithe agus rialaithe trí huaire: URL glao-ar-ais arna sholáthar ag an oibreoir, ansin sliogán droim ar ais thar thollán TCP ngrok, ansin cainéal vótaíochta HTTP a raibh a chosáin athraithe faoi dhó eile. Suiteáladh bainisteoir muiníne TLS neamh-oibríochta mar an réamhshocrú JVM sa scaoileadh deiridh, glacadh le haon deimhniú ar feadh ré an tiomsaithe.
Bhí na focail "C2 Lab Payload" ar an déantán ina POM féin agus ceadúnas MIT. Bhí sé beo ar Maven Central ar feadh na tréimhse ar fad a bhreathnaíomar air agus bainte ó shin, mar aon lena chuid iomlán io.github.davidtimur ghrúpa.
Anatamaíocht: an tiomsaitheoir mar inneall forghníomhaithe
Tá creat próiseála anótála Java ann ionas gur féidir le leabharlanna cód a ghiniúint ag am tiomsaithe — an mheicníocht atá taobh thiar de Lombok, Dagger, agus liosta fada uirlisí ORM agus sraithithe. Fógraíonn próiseálaí é féin le comhad téacs simplí taobh istigh den phróca:
Próiseálaí META-INF/services/javax.annotation.processing.
Ábhar an chomhaid sin i ngach eisiúint lena mbaineann, focal ar fhocal agus go hiomlán:
io.github.davidtimur.c2lab.C2Processor
Tá an comhad comhionann ó thaobh beart de trasna scaoileadh 1.0.1 go 1.0.8, md5 7d2a08a5c8869a47eea9fa62487dfbe4. Níl sé in Eagrán 1.0.0.
Cathain Iávais Nuair a ritheann sé, scanann sé cosán an phróiseálaí anótála le haghaidh na n-iontrálacha seirbhíse seo agus lódálann sé a bhfuil aimsithe aige. Ní gá aon rud sa tionscadal atá á thiomsú an próiseálaí a lua, aon rud a anótáil, ná aon rud a chumrú. Is leor láithreacht ar an gcosán. Seo an airí a scarann JavacDoor ó na patrúin slabhra soláthair a bhfuil an chuid is mó d'uirlisí tógtha timpeall orthu:
| Patrún | Truicear | Infheicthe mar |
|---|---|---|
| crúca suiteála npm | npm install | scripts.postinstall sa léirmheastóireacht |
| Ualaigh ama allmhairithe Python | an chéad allmhairiú den mhodúl | ráiteas ar leibhéal an mhodúil sa fhoinse |
| JavacDoor | javac ar aon tionscadal iartheachtach | ainm comhaid clárúcháin seirbhíse |
Is dearbhú i manifíl é crúca suiteála, agus is é an manifíl an chéad rud a léann aon duine. Bíonn ualach ama allmhairithe suite i bhfoinse inléite ar a laghad. Ní ceachtar acu é clárú seirbhíse: is ainm comhaid móide líne amháin a ainmníonn rang é, agus maireann an t-iompar i gcód baite tiomsaithe eolaire ar shiúl.
Déanann an rang ualaigh féin taiscéalaíocht óstach trí scaoileadh amach. Tá i linnte tairiseacha na ranganna tiomsaithe / Bin / sh, whoami, uname -a, pwd ar an gcosán Unix agus tasklist ar an gcosán Windows, mar aon le atreorúSruthEarráide chun aschur earráide an phróisis linbh a chumasc leis an sruth gabhtha. Iompraíonn dhá theimpléad JSON torthaí ón óstach — rabhchán clárúcháin:
{"host":"%s","os":"%s","user":"%s","dir":"%s"}
daonra ón óstainm ordú agus an ainm.os, ainm.úsáideora, agus úsáideoir.dir airíonna córais, agus glao ar ais mar thoradh air sin:
{"version":"%s","host":"%s","time":"%s","output":"%s"}
Tá na marcóirí dul chun cinn atá fágtha in aschur an tiomsaitheora féin thar a bheith macánta: [C2] forghníomhú críochnaithe ag am tiomsaithe, [C2] glao ar ais seolta → HTTP , [C2] sliogán ceangailte le .
Naoi n-eisiúint, trí ghlúin de C2
Ní naoi gcóip d'ualach amháin atá sna heisiúintí. Is log athrá iad, agus nuair a léitear iad in ord feictear an cainéal á atógáil agus an veicteoir seachadta fós socraithe.
| Scaoileadh | Uathoibríoch-fhorghníomhú ag tiomsú | Channel |
|---|---|---|
1.0.0 | níl (gan comhad seirbhíse) | URL glao-ar-ais arna sholáthar ag an oibreoir amháin |
1.0.1 | tá (veicteoir tugtha isteach) | URL glao-ar-ais arna sholáthar ag an oibreoir |
1.0.2 | yes | Slige droim ar ais, tollán TCP ngrok |
1.0.3 | yes | Cainéal HTTP, /cláraigh /cmd /out |
1.0.4 | yes | Cainéal HTTP, /cláraigh /cmd /out |
1.0.5 | yes | Cainéal HTTP, /cláraigh /poll /amach |
1.0.6 | yes | Cainéal HTTP, /cláraigh /poll /amach |
1.0.7 | yes | Cainéal HTTP, /register /cmd |
1.0.8 | yes | Cainéal HTTP + bailíochtú TLS díchumasaithe |
Is fiú trí mhionsonra sa tábla sin a tharraingt amach, mar athraíonn gach ceann acu an chaoi ar cheart an tacar déantán a léamh.
Sroicheann an veicteoir 1.0.1, ní 1.0.2. Tá an loighic chéanna taiscéalaíochta agus glao ar ais ag Leagan 1.0.0 ach níl aon chomhad seirbhíse ná aon allmhairí próiseála anótála ann; ní ritheann sé ach amháin má ghlaonn rud éigin air. Ó 1.0.1 ar aghaidh, tá an comhad seirbhíse i láthair agus déantar na ranganna tiomsaithe a allmhairiú. javax.annotation.processing.TacaitheSourceLeaganAon mheasúnú a dhéanann comparáid idir an dá eisiúint ticéadaithe — 1.0.0 agus 1.0.2 — tagann ar an gconclúid cheart gur athraigh rud éigin, ach aithnítear go mícheart cá háit.
Tá an bhlaosc droim ar ais i scaoileadh amháin go díreach. Tá san eisiúint 1.0.2 0.tcp.ngrok[.]io, an líne loga Sliogán [C2] ceangailte le 0.tcp.ngrok[.]io:19823, meirge idirghníomhach c2-bhlaosc, agus críochnóir fráma __END__Níl aon cheann díobh sin in eisiúintí 1.0.3 ar aghaidh agus sroicheann siad óstach HTTPS ina ionad sin. Dá n-ainmneofaí na heisiúintí ticéadaithe amháin, bheadh críochphointe TCP marbh luaite agus an cainéal HTTP beo, atá i láthair i sé eisiúint níos déanaí, fágtha gan trácht.
Baintear fíorú iompair leis an scaoileadh deiridh. Cuireann Leagan 1.0.8 rang i bhfeidhm javax.net.ssl.X509TrustManager nach ndéanann a mhodhanna seiceála teastais aon rud, fíoraitheoir ainm óstach fíor i gcónaí atá cláraithe trí socraighFíoraitheoirAinmÓstachRéamhshocraithe, Agus muinínUile gnáthamh a shuiteálann an dá rud mar réamhshocruithe an JVM. Is é an éifeacht atá leis sin ná go nglacann an JVM le haon deimhniú ó aon óstach don chuid eile den tiomsú sin — ní hamháin do thrácht an ualaigh féin, ach d'aon rud eile a dhéanann an tógáil thar TLS ina dhiaidh sin.
Tá óstach aonair chun tosaigh ar an gcainéal HTTP, sna sé scaoileadh a úsáideann é: tableful-fervor-crazed.ngrok-free[.]devBíonn ceanntásc ag gabháil le gach iarratas rabhadh brabhsálaí ngrok-skip, rud a chuireann cosc ar an leathanach idirmheánach a sheirbheálann tolláin ngrok saor in aisce do bhrabhsálaithe. Athraíonn tacair chosáin trasna eisiúintí — /amach imíonn sé ag 1.0.7, agus /cmd malartaíonn le / vótaíocht — ach ní athraíonn an t-óstach choíche.
Insíonn an féin-eisiamh
Socraíonn gach POM ó 1.0.1 ar aghaidh argóint tiomsaitheora do thógáil an déantáin féin:
-próiseas:níl aon cheann
Díchumasaíonn an bratach sin próiseáil anótála. Tá a éifeacht anseo réamh-cise: nuair a dhéantar an tionscadal ina bhfuil an próiseálaí féin a thiomsú, ní ritheann an próiseálaí.
Tá úsáidí go hiomlán gnáth ag an mbratach seo. Is minic nach gá do thionscadal a sheolann próiseálaí anótála an próiseálaí sin a chur i bhfeidhm air féin le linn tosaithe, agus molann doiciméadacht an uirlis thógála é seo go díreach. Ní chruthaíonn sé aon rud ina aonar.
Mar sin féin, i dteannta leis an méid a dhéanann an próiseálaí, déantar cur síos ar neamhshiméadracht shonrach leis: déantar an cód a fhorghníomhú ar mheaisíní gach duine a dhéanann tiomsú i gcoinne an déantáin, agus ní ar an meaisín a thógann an déantán. Feictear an bhratach san eisiúint chéanna a thugann isteach an comhad seirbhíse — 1.0.1 — agus i ngach eisiúint ina dhiaidh sin. Is é an comhghaol idir “an eisiúint ina dtosaíonn forghníomhú ag am tiomsaithe” agus “an eisiúint ina múchtar forghníomhú ag am tiomsaithe go háitiúil” an comhartha anailíseach is úsáidí sa tacar déantán, agus tá sé le feiceáil i POM téacs simplí gan aon rud a dhí-thiomsú.
Tugaimid faoi deara an éifeacht agus stadfaimid ansin. Ní léiríonn aon rud sna déantáin cén fáth ar cuireadh an bhratach suas.
Is fiú píosa meiteashonraí eile a lua, den chuid is mó chun fáil réidh leis. Tugann an POM “C2 Lab Payload” ar an tionscadal, déanann sé cur síos air mar “artifact ualaigh saotharlainne C2”, agus tugann sé ceadúnas MIT dó. Uaireanta, cuirtear féinlipéadú den chineál seo ar fáil mar fhianaise gur cleachtadh taighde é pacáiste.cisseachas bagairt bheo, agus uaireanta bíonn an léamh sin ceart — is réad difriúil é canáraí dearbhaithe gan aon bhonneagar inrochtana ón gceann seo. Ní bhaineann sé seo anseo. Is cumas beo é ionchlannán feidhmiúil a fhoilsítear chuig stór poiblí, ar féidir le haon tomhaltóir rochtain a fháil air, le bonneagar amach a atógadh trí huaire thar naoi n-eisiúint, is cuma cad a thugann a mheiteashonraí air. Ní athraíonn an t-ainm sa POM aon rud faoi na rudaí a tharlaíonn ar mheaisín a thiomsaíonn ina choinne.
Táscairí le haghaidh meaisíní tógála
Má rinne óstach tógála tiomsú i gcoinne an déantáin seo, bíonn an fhianaise i logaí tógála agus i dteileamaitríocht líonra seachas in ionchlannán buan ar dhiosca — ritheann an t-ualach taobh istigh den phróiseas tiomsaitheora agus scoireann sé leis.
Sa taisce próca nó sa stórlann áitiúil
META-INF/services/javax.annotation.processing.Processorainmniúio.github.davidtimur.c2lab.C2Processor- Comhad seirbhíse md5
7d2a08a5c8869a47eea9fa62487dfbe4 - Ranganna faoi
io/github/davidtimur/c2lab/:C2Processor,C2Task,Task, agus i 1.0.8 an rang istighTask$1
Aschur sa thógáil
[C2] compile-time execution complete[C2] callback sent → HTTP[C2] callback failed:[C2] shell connected to- Meirge idirghníomhach
c2-shellcríochnóir fráma__END__
Teiliméadracht atá ar siúl
javacmar thuismitheoir/bin/sh -c(Unix) nó léirmhínitheoir orduithe Windows- Orduithe leanaí
whoami,uname -a,pwd(Unix) nótasklist(Windows) tuismithe ag céim tiomsaithe
I dteileiméadracht líonra
- TCP amach chuig
0.tcp.ngrok[.]io:19823(eisiúint 1.0.2) - HTTPS chuig
tableful-fervor-crazed.ngrok-free[.]dev, cosáin/register,/cmd,/poll,/out(eisiúintí 1.0.3 go 1.0.8) - Ceanntásc an iarratais
ngrok-skip-browser-warning: true - Iarratas ar chomhlachtaí a mheaitseálann
{"host":...,"os":...,"user":...,"dir":...}or{"version":...,"host":...,"time":...,"output":...}
I gcumraíocht
- Athróga comhshaoil
CALLBACK,CALLBACK_URLmaoin chóraiscallback.url
Meiteashonraí foilsitheora
- Grúpa
io.github.davidtimurseoladh an fhoilsitheoradavudboi999@gmail[.]comeochair shínitheE520C345EF94423D
Tá seiceáil bhreise amháin tuillte ag tógáil a rith leagan 1.0.8. Ós rud é go suiteálann an leagan sin bainisteoir iontaoibhe ceadaitheach mar réamhshocrú ar fud an JVM, leanadh ar aghaidh le haon nasc TLS a rinneadh níos déanaí sa JVM céanna — réiteach spleáchais, uaslódáil déantán, céim imscartha — gan bailíochtú deimhnithe. Níor cheart glacadh leis go bhfuil trácht ón bhfuinneog sin fíordheimhnithe.
Cén fáth a bhfuil gá le scanadh difriúil ar dhéantáin thiomsaithe
Is cás tástála úsáideach é JavacDoor mar go gcuireann sé isteach ar dhá thoimhde choitianta ag an am céanna, agus níl ceachtar teip sonrach do uirlisíocht aon díoltóra amháin.
Is é an chéad toimhde go bhfógraíonn cód contúirteach é féin i manuscript. Tá cuid mhór d'uirlisí slabhra soláthair eagraithe timpeall ar shaolré an tsoláthair. hooks, mar i gcás npm agus PyPI is ann a bhíonn an gníomh de ghnáth. Níl aon crúca ag JavacDoor. Is comhad clárúcháin seirbhíse a spreagthóir a bhfuil comhéadan Java mar ainm air agus ainm ranga mar ábhar air. Chun é sin a ghabháil go statach caithfidh tú déileáil leis Próiseálaí META-INF/services/javax.annotation.processing. mar phointe iontrála forghníomhaithe ina cheart féin, ar aon dul le iar-shuiteáil script — agus ansin lean an rang ainmnithe isteach sa chód beart. Tá a meicníochtaí uathfhionnachtana féin ag éiceachórais den chruth seo, agus is pointe iontrála gach ceann acu cibé acu a n-áiríonn uirlisí é mar cheann nó nach n-áiríonn.
Is é an dara toimhde go bhfuil teaghráin i gcomhaid foinse. I gcás jar, bíonn na críochphointí, na horduithe sliogáin, na teimpléid JSON, agus na marcóirí loga go léir i linnte tairiseacha de .rang comhaid. Ní fhaigheann uirlisí a úsáideann greps téacs aon rud — ní toisc go bhfuil na teaghráin doiléir, ach toisc go bhfuil siad i gcoimeádán dénártha struchtúrtha nach ndéanann scanadh téacs a pharsáil. Tháinig gach táscaire líonra sa phost seo as parsáil linne tairiseach. Ceann acu is ea táscaire lánfhoirmithe https:// URL le feiceáil go soiléir i gcomhad ranga; ní thabharfadh scanadh téacs ar ábhar inléite an phróca faoi deara é fós. Níl aon ionchódú le sárú anseo, ach formáid coimeádáin le léamh.
Tá an cruth céanna ar an dá bhearna: caitheadh le formáid déantáin mar mhála comhad seachas mar struchtúr le séimeantaic shainithe. Níl an ceartúchán galánta — déan an coimeádán a pharsáil, liostáil pointí iontrála uathfhionnachtana an éiceachórais féin, agus lean iad isteach sa chód tiomsaithe. I gcás veicteoirí am tógála go sonrach, tá an tríú seiceáil saor agus diagnóiseach go hiontach: déan comparáid idir an rud a dhéanann déantán do thomhaltóirí agus an rud a dhíolmhaíonn sé é féin uaidh. Tá déantán a chláraíonn próiseálaí am tiomsaithe agus a dhíchumasaíonn próiseáil am tiomsaithe dá thógáil féin ag an am céanna tar éis rud éigin a insint duit faoi féin i dhá líne de POM téacs simplí.
I gcás foirne a úsáideann déantáin Maven inniu, leanann trí bheart phraiticiúla:
- Déan an cosán anótála-próiseálaí a láimhseáil mar theorainn forghníomhaithe. Ritheann spleáchais a thuirlingíonn ann cód i do thógáil. I gcás nach bhfuil próiseáil anótála ag teastáil le haghaidh tógála, -próiseas:níl aon cheann chomh húsáideach go cosantach agus a bhí sé go háitiúil anseo, is cosúil; i gcás ina bhfuil, bioráiníonn sé an tacar próiseálaí go sainráite seachas é a oidhreacht ón gconair ranga tiomsaithe.
- Fochróisis tiomsaitheora loga. Is neamhghnách céim tiomsaithe a chruthaíonn blaosc i bhformhór na dtionscadal agus is beag foláireamh a thugtar ina leith.
- Ná húsáid meiteashonraí mar fhianaise. Ní teorainneacha raoin feidhme iad “Saotharlann”, “tástáil”, “ualach”, agus “PoC” in ainm nó i dtuairisc an phacáiste. Is teorainneacha raoin feidhme iad inrochtaineacht agus iompar.
Baineadh an déantán agus a ghrúpa ar fad as Maven Lárnach ag leanúint ár dtuarascála; tugann an cosán déantáin agus an cosán grúpa 404 ar ais anois, agus ní thuairiscíonn innéacs Lárnach aon chomhordanáidí meaitseála. Dúnann sé sin an déantán seo. Ní dhúnann sé an veicteoir, ar gné dhoiciméadaithe den tiomsaitheoir Java é agus atá ar fáil d'aon duine a fhoilsíonn jar.
tagairtí
Ní luaitear aon fhoinsí seachtracha sa phost seo. Is anailís statach dhíreach ar na naoi gcróca foilsithe na torthaí uile, a aisghabhadh ó Maven Central sular baineadh iad. Níor cuireadh aon chód ó na déantáin i gcrích ag aon phointe.







