TL; DR
Ib qho khoom siv Maven Central luam tawm ua io.github.davidtimur:c2-lab xa cuaj qhov kev tso tawm, yim ntawm cov uas tau ua tiav qhov payload nkag mus rau thaj chaw deb thaum lub sijhawm sau ua ke ntawm txhua qhov project downstream uas tso lub thawv rau ntawm nws txoj kev annotation-processor. Tsis muaj daim ntawv thov code yuav tsum tau import nws. Tsis muaj kab ntawm qhov chaw yuav tsum tau xa mus rau nws. Tsis muaj tsab ntawv sau rau kev teeb tsa, tsis muaj qhov sib npaug tom qab kev teeb tsa, thiab tsis muaj lub voj voog ntawm txhua yam rau cov cuab yeej los tshuaj xyuas.
Tus vector ua haujlwm yog ib daim ntawv 46-byte hauv lub thawv: ib qho kev sau npe rau tus neeg muab kev pabcuam Java uas muab lub npe rau ib chav kawm uas siv javax.annotation.processing.ProcessorTus Java compiler nrhiav pom cov kev sau npe no tau. Thaum pom lawm, javac instantiates thiab khiav cov chav kawm ua ib feem ntawm kev sib sau ua ke. Qhov ntawd txhais tau hais tias qhov chaw khiav ntawm lub payload yog lub tshuab tsim, thaum lub sijhawm ntawd lub tshuab tsim ua ib yam uas nws muaj los ua.
Thoob plaws cuaj qhov kev tso tawm, cov channel hais kom ua thiab tswj tau rov tsim dua peb zaug: ib qho URL hu rov qab uas tus neeg teb xov tooj muab, tom qab ntawd lub plhaub rov qab hla lub qhov av TCP ngrok, tom qab ntawd ib qho channel xaiv HTTP uas nws txoj kev hloov pauv ob zaug ntxiv. Qhov kev tso tawm zaum kawg tau teeb tsa tus thawj tswj hwm TLS tsis muaj kev xaiv ua lub neej ntawd JVM, txais txhua daim ntawv pov thawj rau lub sijhawm ntawm kev sau ua ke.
Cov khoom siv tes ua tau nqa cov lus "C2 Lab Payload" hauv nws tus kheej POM thiab daim ntawv tso cai MIT. Nws tau nyob ntawm Maven Central rau tag nrho lub sijhawm peb tau saib nws thiab txij li thaum ntawd los tau raug tshem tawm, nrog rau nws tag nrho io.github.davidtimur pab pawg neeg.
Anatomy: lub compiler ua lub cav ua tiav
Java lub annotation processing framework muaj nyob rau hauv kom cov tsev qiv ntawv tuaj yeem tsim cov code thaum lub sijhawm compile - lub mechanism tom qab Lombok, Dagger, thiab cov npe ntev ntawm ORM thiab serialisation cov cuab yeej. Ib tug processor tshaj tawm nws tus kheej nrog ib tug plain-text cov ntaub ntawv hauv lub hub:
META-INF/kev pabcuam/javax.annotation.processing.Processor
Cov ntsiab lus ntawm cov ntaub ntawv ntawd hauv txhua qhov kev tso tawm cuam tshuam, verbatim thiab tiav:
io.github.davidtimur.c2lab.C2Processor
Cov ntaub ntawv no zoo ib yam li byte thoob plaws cov ntawv tso tawm 1.0.1 txog 1.0.8, md5 7d2a08a5c8869a47eea9fa62487dfbe4. Tso tawm 1.0.0 tsis muaj nws.
thaum javac khiav, nws luam theej txoj kev annotation-processor rau cov kev pabcuam no thiab thauj khoom qhov nws pom. Tsis muaj dab tsi hauv qhov project uas tau compile yuav tsum hais txog lub processor, annotate dab tsi, lossis configure dab tsi. Muaj nyob rau ntawm txoj kev txaus. Qhov no yog qhov khoom uas cais JavacDoor ntawm cov qauv khoom xa tuaj uas feem ntau cov cuab yeej tau tsim nyob ib puag ncig:
| Txawv | Txhais | Pom tau li |
|---|---|---|
| npm install hook | npm install | scripts.postinstall nyob rau hauv daim ntawv qhia |
| Python import-time payload | thawj zaug import ntawm lub module | cov lus qhia txog qib module hauv qhov chaw |
| JavacDoor | javac rau txhua qhov project downstream | lub npe ntawm cov ntaub ntawv sau npe rau kev pabcuam |
Ib qho install hook yog ib qho kev tshaj tawm hauv ib daim ntawv qhia, thiab daim ntawv qhia yog thawj qhov uas leej twg nyeem. Ib qho import-time payload tsawg kawg yog nyob hauv qhov chaw nyeem tau. Ib qho kev sau npe kev pabcuam tsis yog ib qho: nws yog ib lub npe ntaub ntawv ntxiv rau ib kab uas hu ua chav kawm, thiab tus cwj pwm nyob hauv compiled bytecode ib daim nplaub tshev deb.
Lub chav kawm payload nws tus kheej ua qhov kev tshuaj xyuas tus tswv tsev los ntawm kev siv phom tua. Cov pas dej tas li ntawm cov chav kawm sib sau ua ke muaj /bin/sh, leej twg, uname -a, pwd pw ntawm txoj kev Unix thiab daim ntawv teev haujlwm ntawm txoj kev Windows, ua ke nrog redirectErrorStream los sib koom ua ke cov txheej txheem me me qhov yuam kev tso zis rau hauv cov kwj deg ntes tau. Ob lub qauv JSON nqa cov txiaj ntsig tawm ntawm tus tswv tsev - lub teeb liab sau npe:
{"host":"%s","os":"%s","user":"%s","dir":"%s"}
cov neeg nyob los ntawm hostname kev txib thiab os.lub npe, lub npe neeg siv, Thiab tus neeg siv.dir cov khoom ntawm lub system, thiab qhov tshwm sim rov qab los:
{"version":"%s","host":"%s","time":"%s","output":"%s"}
Cov cim qhia kev nce qib uas tshuav nyob rau hauv lub compiler tus kheej cov zis yog qhov tsis tshua muaj neeg pom tseeb: [C2] kev ua tiav ntawm lub sijhawm sau ua tiav, [C2] xa rov qab mus rau HTTP , [C2] lub plhaub txuas nrog .
Cuaj qhov kev tso tawm, peb tiam C2
Cov kev tso tawm tsis yog cuaj daim ntawv theej ntawm ib qho payload. Lawv yog cov ntaub ntawv teev cia rov ua dua, thiab kev nyeem lawv raws li kev txiav txim qhia tau hais tias cov channel tau rov tsim dua thaum lub vector xa khoom tseem kho.
| tso tawm | Auto-executes thaum compile | Channel |
|---|---|---|
1.0.0 | tsis muaj (tsis muaj cov ntaub ntawv kev pabcuam) | Tsuas yog URL hu rov qab uas tus neeg teb xov tooj muab xwb |
1.0.1 | yog (vector tau qhia) | URL hu rov qab uas tus neeg teb xov tooj muab |
1.0.2 | yog | Rov qab plhaub, ngrok TCP tunnel |
1.0.3 | yog | HTTP channel, /register /cmd /out |
1.0.4 | yog | HTTP channel, /register /cmd /out |
1.0.5 | yog | HTTP channel, /register /poll /out |
1.0.6 | yog | HTTP channel, /register /poll /out |
1.0.7 | yog | HTTP channel, /register /cmd |
1.0.8 | yog | HTTP channel + TLS validation raug kaw |
Peb cov ntsiab lus hauv lub rooj ntawd tsim nyog kos tawm, vim txhua tus hloov pauv seb yuav tsum nyeem cov khoom siv li cas.
Tus vector tuaj txog ntawm 1.0.1, tsis yog 1.0.2. Tso Tawm 1.0.0 nqa tib lub reconnaissance thiab callback logic tab sis tsis muaj cov ntaub ntawv kev pabcuam thiab tsis muaj annotation-processing imports; nws khiav tsuas yog tias muaj qee yam hu nws. Los ntawm 1.0.1 cov ntaub ntawv kev pabcuam muaj nyob thiab cov chav kawm compiled import javax.annotation.processing.SupportedSourceVersionTxhua qhov kev ntsuam xyuas uas piv ob daim ntawv tso tawm uas tau muab daim pib - 1.0.0 thiab 1.0.2 - xaus lus kom raug tias muaj qee yam hloov pauv, tab sis qhia tsis raug qhov twg.
Lub plhaub rov qab muaj nyob rau hauv ib qho kev tso tawm. Tso tawm 1.0.2 muaj 0.tcp.ngrok[.]io, kab ntawv cav [C2] plhaub txuas nrog 0.tcp.ngrok[.]io:19823, ib daim ntawv tshaj tawm sib tham c2-plhaub, thiab tus frame terminator __END__Cov Tso Tawm 1.0.3 mus tom ntej tsis muaj ib qho ntawm cov no thiab hloov chaw mus txog HTTPS tus tswv tsev. Kev thov kom tshem tawm tsuas yog lub npe ntawm cov ntawv tso tawm uas tau muab daim pib yuav tau hais txog qhov kawg TCP tuag thaum tawm hauv qhov channel HTTP nyob, uas muaj nyob rau hauv rau qhov kev tso tawm tom qab, tsis tau hais txog.
Qhov kev tso tawm zaum kawg tshem tawm qhov kev txheeb xyuas kev thauj mus los. Tso Tawm 1.0.8 ntxiv ib chav kawm siv javax.net.ssl.X509Tus Thawj Saib Xyuas Kev Ntseeg Siab uas cov txheej txheem kuaj xyuas daim ntawv pov thawj tsis ua dab tsi, tus neeg txheeb xyuas lub npe hostname uas ib txwm muaj tseeb tau sau npe los ntawm teeb tsaDefaultHostnameVerifier, Thiab ib tug ntseeg siab rau txhua tus kev cai uas nruab ob qho tib si ua JVM lub neej ntawd. Qhov cuam tshuam yog tias rau qhov seem ntawm qhov kev sib sau ua ke ntawd, JVM lees txais txhua daim ntawv pov thawj los ntawm txhua tus tswv tsev - tsis yog rau qhov payload tus kheej tsheb khiav, tab sis rau lwm yam uas lub tsev ua dhau TLS tom qab.
Lub HTTP channel, hauv tag nrho rau qhov kev tso tawm uas siv nws, yog nyob rau pem hauv ntej ntawm ib tus tswv tsev: tableful-fervor-crazed.ngrok-free[.]devTxhua qhov kev thov nqa lub header ngrok-skip-browser-warning, uas txwv tsis pub nplooj ntawv interstitial uas cov qhov av ngrok pub dawb ua haujlwm rau cov browsers. Cov txheej txheem kev hloov pauv thoob plaws cov kev tso tawm - /tawm ploj ntawm 1.0.7, thiab /cmd hloov pauv nrog /kev xaiv tsa - tab sis tus tswv tsev yeej tsis hloov pauv.
Kev zam tus kheej qhia tias
Txhua POM txij li 1.0.1 mus tom ntej teeb tsa ib qho kev sib cav compiler rau qhov khoom siv tus kheej tsim:
-proc: tsis muaj
Tus chij ntawd ua rau tsis ua haujlwm ntawm cov lus piav qhia. Nws cov nyhuv ntawm no yog ua ntejcise: thaum qhov project uas muaj lub processor yog nws tus kheej compiled, lub processor tsis khiav.
Tus chij no muaj kev siv ib txwm muaj. Ib qhov project uas xa ib lub annotation processor feem ntau yuav tsum tsis txhob siv lub processor ntawd rau nws tus kheej thaum lub sijhawm bootstrap, thiab cov ntaub ntawv build-tool pom zoo qhov no. Yog tias muab nws ib leeg xwb ces tsis muaj pov thawj dab tsi li.
Txawm li cas los xij, thaum muab coj los ua ke nrog qhov uas lub processor ua, nws piav qhia txog qhov tsis sib xws tshwj xeeb: cov lej ua haujlwm ntawm cov tshuab ntawm txhua tus neeg uas sau ua ke tawm tsam cov khoom cuav, thiab tsis yog ntawm lub tshuab uas tsim cov khoom cuav. Tus chij tshwm sim hauv tib qho kev tso tawm uas qhia txog cov ntaub ntawv kev pabcuam - 1.0.1 - thiab hauv txhua qhov kev tso tawm tom qab nws. Kev sib raug zoo ntawm "kev tso tawm qhov twg kev ua tiav lub sijhawm sau ua ke pib" thiab "kev tso tawm qhov twg kev ua tiav lub sijhawm sau ua ke raug kaw hauv zos" yog qhov teeb meem analytic tseem ceeb tshaj plaws hauv cov khoom cuav, thiab nws pom tau hauv cov ntawv nyeem POM yam tsis muaj decompiling dab tsi.
Peb pom qhov cuam tshuam thiab xaus rau ntawd. Tsis muaj dab tsi hauv cov khoom siv uas hais txog vim li cas tus chij thiaj li raug teeb tsa.
Muaj ib daim metadata ntxiv uas tsim nyog hais txog, feem ntau yog pov tseg. POM hu lub project no ua "C2 Lab Payload", piav qhia nws ua "C2 lab payload artifact", thiab tso cai rau nws MIT. Kev sau npe tus kheej ntawm hom no qee zaum muab ua pov thawj tias pob khoom yog kev tshawb fawb.cise es tsis yog kev hem thawj nyob, thiab qee zaum qhov kev nyeem ntawv ntawd yog qhov tseeb - tus canary tshaj tawm uas tsis muaj cov khoom siv tau yog ib yam khoom sib txawv ntawm qhov no. Nws tsis siv rau ntawm no. Ib qho kev cog lus ua haujlwm tau tshaj tawm rau hauv lub chaw khaws ntaub ntawv pej xeem, uas txhua tus neeg siv khoom tuaj yeem ncav cuag tau, nrog rau cov khoom siv sab nraud uas tau rov tsim dua peb zaug thoob plaws cuaj qhov kev tso tawm, yog lub peev xwm nyob tsis hais nws cov metadata hu nws li cas. Lub npe hauv POM tsis hloov dab tsi txog qhov tshwm sim ntawm lub tshuab uas sib sau ua ke tawm tsam nws.
Cov cim qhia rau cov tshuab tsim kho
Yog tias tus tswv tsev tsim kho tau muab tso ua ke tawm tsam qhov khoom cuav no, cov pov thawj nyob hauv cov cav tsim kho thiab kev sib txuas lus hauv network es tsis yog nyob rau hauv qhov chaw cog rau ntawm disk - qhov payload khiav hauv cov txheej txheem compiler thiab tawm nrog nws.
Hauv lub thawv lossis lub chaw khaws ntaub ntawv hauv zos
META-INF/services/javax.annotation.processing.Processornpeio.github.davidtimur.c2lab.C2Processor- Cov ntaub ntawv pabcuam md5
7d2a08a5c8869a47eea9fa62487dfbe4 - Cov chav kawm nyob rau hauv
io/github/davidtimur/c2lab/:C2Processor,C2Task,Task, thiab hauv 1.0.8 chav kawm sab hauvTask$1
Hauv kev tsim cov zis
[C2] compile-time execution complete[C2] callback sent → HTTP[C2] callback failed:[C2] shell connected to- Cov ntawv tshaj tawm sib tham
c2-shell; tus xaus rau ntawm tus ncej__END__
Kev ntsuas telemetry hauv cov txheej txheem
javacua tus niam txiv ntawm/bin/sh -c(Unix) los yog tus txhais lus txib Windows- Cov lus txib me nyuam
whoami,uname -a,pwd(Unix) los yogtasklist(Windows) niam txiv los ntawm kauj ruam compile
Hauv kev sib txuas lus hauv network
- TCP tawm mus rau
0.tcp.ngrok[.]io:19823(tso tawm 1.0.2) - HTTPS rau
tableful-fervor-crazed.ngrok-free[.]dev, txoj kev/register,/cmd,/poll,/out(tso tawm 1.0.3 txog 1.0.8) - Thov lub taub hau
ngrok-skip-browser-warning: true - Thov kom cov cev sib phim
{"host":...,"os":...,"user":...,"dir":...}or{"version":...,"host":...,"time":...,"output":...}
Nyob rau hauv kev teeb tsa
- Cov kev hloov pauv ib puag ncig
CALLBACK,CALLBACK_URLcov khoom ntawm lub kaw luscallback.url
Cov ntaub ntawv metadata ntawm tus tshaj tawm
- Group
io.github.davidtimurchaw nyob ntawm tus tshaj tawmdavudboi999@gmail[.]com; tus yuam sij kos npeE520C345EF94423D
Ib qho kev tsim uas khiav qhov kev tso tawm 1.0.8 yuav tsum tau kuaj xyuas ntxiv ib zaug. Vim tias qhov kev tso tawm ntawd nruab ib tus thawj tswj kev ntseeg siab raws li JVM-dav dav, txhua qhov kev sib txuas TLS ua tom qab hauv tib JVM - kev daws teeb meem kev vam khom, kev xa khoom cuav, kauj ruam xa tawm - ua mus yam tsis muaj daim ntawv pov thawj lees paub. Tsheb khiav los ntawm lub qhov rais ntawd yuav tsum tsis txhob xav tias tau lees paub.
Vim li cas cov khoom siv uas tau muab tso ua ke xav tau kev luam theej sib txawv
JavacDoor yog ib qho kev sim uas muaj txiaj ntsig vim nws kov yeej ob qho kev xav ib zaug, thiab tsis muaj qhov ua tsis tiav yog tshwj xeeb rau ib tus neeg muag khoom cov cuab yeej.
Qhov kev xav thawj zaug yog tias cov lej txaus ntshai tshaj tawm nws tus kheej hauv daim ntawv qhia. Muaj ntau yam cuab yeej siv rau kev xa khoom raws li lub voj voog ntawm lub neej. hooks, vim rau npm thiab PyPI qhov ntawd yog qhov uas feem ntau yog qhov kev nqis tes ua. JavacDoor tsis muaj qhov txuas. Nws qhov ua rau yog cov ntaub ntawv sau npe kev pabcuam uas nws lub npe yog Java interface thiab nws cov ntsiab lus yog lub npe chav kawm. Txhawm rau ntes qhov ntawd statically koj yuav tsum kho META-INF/kev pabcuam/javax.annotation.processing.Processor ua ib qho chaw nkag mus rau hauv nws tus kheej txoj cai, sib npaug nrog ib qho tom qab kev teeb tsa tsab ntawv — thiab tom qab ntawd ua raws li chav kawm uas muaj npe rau hauv bytecode. Ecosystems muaj lawv tus kheej txoj kev tshawb pom tus kheej ntawm cov duab no, thiab txhua tus yog qhov nkag mus seb cov cuab yeej suav nws li ib qho.
Qhov kev xav thib ob yog tias cov hlua nyob hauv cov ntaub ntawv qhov chaw. Rau ib lub thawv, cov endpoints, cov lus txib ntawm lub plhaub, cov qauv JSON, thiab cov cim cav yog txhua yam nyob rau hauv cov pas dej tas li ntawm .chav kawm cov ntaub ntawv. Cov cuab yeej uas greps ntawv tsis pom dab tsi - tsis yog vim cov hlua khi tsis meej, tab sis vim lawv nyob hauv lub thawv binary uas muaj cov qauv uas kev luam theej ntawv tsis txheeb xyuas. Txhua lub cim qhia network hauv tsab ntawv no tau tawm ntawm kev txheeb xyuas tas mus li. Ib qho ntawm lawv yog ib qho uas tau tsim tag nrho https:// URL zaum hauv qhov pom tseeb hauv cov ntaub ntawv kawm; kev luam theej cov ntawv nyeem tau ntawm lub thawv tseem yuav tsis pom nws. Tsis muaj encoding kom kov yeej ntawm no, tsuas yog hom ntawv thawv kom nyeem.
Ob qho chaw sib txawv muaj tib lub duab: ib hom ntawv artifact raug kho zoo li ib lub hnab ntawm cov ntaub ntawv es tsis yog ib qho qauv nrog cov lus txhais. Qhov kho kom raug yog unglamorous - parse lub thawv, suav cov ecosystem tus kheej qhov nkag mus rau qhov pib-nrhiav pom, thiab ua raws li lawv mus rau hauv cov lej sib sau ua ke. Rau cov vectors tsim-lub sijhawm tshwj xeeb, qhov kev kuaj xyuas thib peb yog pheej yig thiab xav tsis thoob kuaj mob: piv rau qhov artifact ua rau cov neeg siv khoom tawm tsam qhov nws zam nws tus kheej los ntawm. Ib qho artifact uas sau npe rau lub sijhawm compile-time processor thiab tib lub sijhawm disables compile-time processing rau nws tus kheej tsim tau qhia koj ib yam dab tsi txog nws tus kheej hauv ob kab ntawm cov ntawv POM yooj yim.
Rau cov pab pawg uas siv Maven artifacts niaj hnub no, peb txoj kev ntsuas ua tau raws li nram no:
- Kho txoj kev annotation-processor ua tus ciam teb ua tiav. Cov kev vam khom uas tsaws rau ntawd khiav cov lej hauv koj lub tsev. Qhov twg lub tsev tsis xav tau kev ua cov lus piav qhia, -proc: tsis muaj muaj txiaj ntsig zoo rau kev tiv thaiv ib yam li nws pom tseeb hauv zos no; qhov twg nws ua, pin lub processor teeb tsa meej meej es tsis txhob txais nws los ntawm compile classpath.
- Cov txheej txheem subprocess ntawm cov compiler log. Ib kauj ruam sau ua ke uas tsim lub plhaub yog qhov txawv txav hauv feem ntau cov haujlwm thiab yog qhov ceeb toom me ntsis.
- Tsis txhob siv cov metadata ua pov thawj. "Lab", "test", "payload", thiab "PoC" hauv lub npe pob khoom lossis cov lus piav qhia tsis yog qhov txwv ntawm qhov dav. Kev ncav cuag thiab tus cwj pwm yog.
Cov khoom qub thiab nws pawg tag nrho tau raug tshem tawm ntawm Maven Central ua raws li peb daim ntawv qhia; ob qho tib si txoj kev artifact thiab txoj kev pab pawg tam sim no rov qab 404, thiab Central index qhia tsis muaj kev sib phim. Qhov ntawd kaw qhov artifact no. Nws tsis kaw lub vector, uas yog ib qho feature sau tseg ntawm Java compiler thiab muaj rau txhua tus neeg uas luam tawm lub jar.
References
Tsab ntawv no tsis hais txog cov chaw sab nraud. Tag nrho cov kev tshawb pom yog thawj qhov kev tshuaj xyuas ntawm cuaj lub thawv luam tawm, tau txais los ntawm Maven Central ua ntej tshem tawm. Tsis muaj cov lej los ntawm cov khoom cuav tau ua tiav txhua lub sijhawm.







