TL; DR
Dvadeset npm paketa objavljenih tokom dva dana krajem jula i početkom augusta 2026. godine predstavljaju se kao interne biblioteke UI komponenti i dijeljeni backend uslužni programi. Nijedan od njih ne implementira funkcionalnost koju reklamira. Svaki isporučuje stub klasu, README datoteku koja opisuje paket kao interni i datoteku pod nazivom _polyfill.js.
Zanimljivo je odakle se ta datoteka poziva. To nije instalacijski hook — manifesti ne deklariraju nikakvu preinstalaciju, instalaciju ili postinstalaciju. Umjesto toga, posljednji red index.js glasi: try { require("./_polyfill"); } catch (_) {}Korisni teret se pokreće prvi put kada aplikacijski kod uvozi paket. Instaliranje sa --ignore-scripts, u standard savjeti za smanjenje izloženosti lancu snabdijevanja tokom instalacije, ne sprečava to.
Šta _polyfill.js Ono što Cloudflare Workers radi jeste da preuzme izvršnu datoteku specifičnu za platformu s jednog od tri Cloudflare Workers hosta, zapiše je u privremeni direktorij pod nasumično odabranim imenom, označi je kao izvršnu i pokrene je odvojeno od roditeljskog procesa. Ta izvršna datoteka je sama po sebi program za učitavanje: nabraja proizvode za sigurnost krajnjih tačaka prema imenu procesa, provjerava trenutno korisničko ime u odnosu na poznate račune analitičkog okruženja, zakrpa AMSI i ETW telemetrijske interfejse u memoriji, instalira persistence pod imenom Windows audio komponente i preuzima treću binarnu datoteku veličine nekoliko megabajta. Treća faza stiže šifrirana i... dešifrirano i izvršeno u memoriji umjesto zapisano na disk.
Prvog augusta, otprilike četiri sata nakon što je ručnom provjerom potvrđeno da su paketi zlonamjerni, devetnaest od dvadeset imena je uklonjeno sa npm-a od strane njihovog vlastitog izdavača u nizu od dvadeset pet sekundi. Drugog augusta jedno od tih imena je ponovo registrovano - od strane drugog računa, koji je nosio isti kod. Infrastruktura za isporuku je opsluživala sve tri faze u vrijeme pisanja ovog teksta.
| paketi | 20 npm imena, ~74 objavljene verzije |
| Imenovanje tema | beaver-ui-* (13), accounts-* (3), plus afisha-storybook-default, bcore-bravo-eslint-config, arbocrate-sla-prober-arbocrate-sla-prober-core, a.poltoradnev-package-c |
| okidač | Uvoz modula (require), nije npm skripta za životni ciklus |
| Stage 1 | _polyfill.js — preuzimanje i lansiranje |
| Stage 2 | Statički povezani program za učitavanje, UPX-pakovan na Linuxu; nabrajanje sigurnosti krajnjih tačaka, AMSI/ETW krpljenje, perzistentnost |
| Stage 3 | beacon_linux.bin / beacon_mac.bin / update_win.exe, 4–13 MB; isporučuje se šifrirano, izvršava se u memoriji |
| platforme | Linux x64 i arm64, univerzalni macOS, Windows x64 |
| Publishers | Dva računa, jedna kodna baza |
| Status | 19 od 20 imena nije objavljeno od strane operatera; 1 ponovo objavljeno i uživo; infrastruktura za dostavu uživo |
Anatomija napada
Faza 1 — paket
Svaki član šalje isti oblik s tri datoteke. index.js izvozi klasu sa u tome() koji postavlja logičku vrijednost, verzija(), A konfiguriraj() koji spaja objekt opcija. Ništa drugo. README.md daje liniju za instalaciju, a zahtijevati red i rečenica „Interni paket. Pogledajte CONTRIBUTING.md za smjernice“ — DOPRINOS.md nije u tarballu.
_polyfill.js je nešto manje od 5 KB i čita se kao običan infrastrukturni kod. Otvara se s tri provjere okruženja:
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return;Te varijable su konvencionalne kontrole privatnosti. Ovdje one kontroliraju da li se binarna datoteka preuzima i izvršava. Mašina koja postavlja NE_PRATI se u potpunosti preskače.
Sljedeći je pečat za jednokratno izvršavanje: datoteka na /tmp/.analytics_state, ili stanje_analitike pod % TEMP% na Windowsu, čije se vrijeme modifikacije poredi s prozorom od 20,357 sekundi. Unutar tog prozora modul se odmah vraća, tako da ponovljeni uvozi tokom izgradnje rezultiraju jednim pokušajem preuzimanja, a ne desetinama.
Odredišni hostovi nisu prisutni kao literali. Oni se sastavljaju tokom izvođenja programa iz fragmenata:
["oob-worker.cf102-","baf.workers.d","ev"].join("")
Tri hosta su izgrađena na ovaj način i promiješana prije upotrebe, tako da se redoslijed mijenja u zavisnosti od izvršenja. Dohvaćanje je HTTPS GET naredba zakačena za IPv4 sa Korisnički agent of dohvaćanje-čvora/2.6 — vjerodostojna vrijednost koju Node proces treba emitirati. Odgovor manji od 1,000 bajtova se odbacuje i pokušava se sa sljedećim hostom.
Ako sva tri ne uspiju, modul se vraća na DNS. Izdaje TXT upit za oko da bi se dobio broj dijelova, a zatim se zahtjeva 0. kroz br. U serijama od deset, spaja odgovore i dekodira rezultat pomoću base64 algoritma. Ova putanja prenosi istu izvršnu datoteku preko DNS TXT zapisa, koja opstaje u okruženjima gdje se odlazni HTTP filtrira, ali DNS razrješenje nije.
Preuzeti bajtovi se upisuju u /var/tmp/.cache_<8-hex> na Unixu, ili %TEMP%\dotnet_diag_<8-hex>.exe na Windowsu — naziv datoteke koji se čita kao .NET dijagnostički artefakt. Na Unixu datoteci je dodijeljen način rada 0755. Pokretanje je mrijesti se sa odvojen: tačno, stdio: "ignoriši", I unref(), tako da podređeni proces nadživi Node proces koji ga je pokrenuo; na Windowsu poziv dodaje prozoriSakrij: tačno.
Dva detalja upotpunjuju sliku. Pomagač definisan kao const _l = (…a) => process.stderr.write(“”) se poziva u svakom koraku preuzimanja — zapisuje prazan niz i odbacuje njegove argumente, zauzimajući poziciju gdje bi se nalazilo evidentiranje. I svaki paket isporučuje datoteku od 81 KB na lib/telemetry.js čiji komentar zaglavlja opisuje „Analytics SDK“ sa „HTTPS transportom sa rotacijom krajnjih tačaka i ponovnim pokušajem“ i „DNS-baziranim otkrivanjem servisa za prebacivanje u slučaju kvara“. U trenutnoj verziji to nije potrebno.
Faza 2 — utovarivač
Linux x64 binarni fajl je statički povezan ELF komprimovan sa UPX 3.96. macOS build je univerzalni binarni fajl koji pokriva x86_64 i arm64; Windows build je ogoljena PE32+ konzolna izvršna datoteka. Sve četiri su preuzete i statički pregledane; nijedan nije izvršen.
Uvoz i tabela stringova Windows verzije jasno opisuju njegovo ponašanje. Rješava Je liDebuggerPrisutan, Provjeri prisutnost udaljenog debagera, I NtQueryInformationProcess, i čita SISTEM\TrenutniSetKontrola\Servisi\Disk\Nabrajanje — putanja registra čije vrijednosti identificiraju kontrolere virtualnih diskova. Poziva GetDiskFreeSpaceExW i GlobalMemoryStatusEx, u skladu s provjerom da li resursi hosta odgovaraju kratkotrajnoj instanci analize.
Sadrži listu korisničkih imena: Trenutni korisnik, IT administrator, Hong Lee, TESTNA KUTIJA, hapubws, milozs, Timmy, admin, malware, uzorak, virus, ambijentNekoliko njih su artefakti javno dokumentiranih analitičkih okruženja.
Također sadrži popis proizvoda za sigurnost krajnjih tačaka i naziva njihovih procesa, nabrojanih putem CreateToolhelp32Snapshot i Process32FirstW/Process32NextW:
- CrowdStrike Falcon (
csfalconservice,CSFalconContainer) - Carbon Black (
cb.exe) - Cylance (
cylancesvc.exe) - Bitdefender (
bdagent.exe) - kaspersky (
avp.exe,kavfs.exe) - Trend Micro i Deep Security (
coreServiceShell,ds_agent.exe) - FireEye/Trellix (
xagt.exe) - Tanijum (
taniumclient.exe) - Hitmanpro (
hmpalert.exe) - Elastičan (
elastic-agent.exe,elastic-endpoint,filebeat.exe,winlogbeat.exe) - Wazuh i OSSEC (
wazuh-agent.exe,ossec-agent.exe) - Check Point
- Windows Defender
Prisutna su još dva simbola: AmsiScanBuffer, ulazna tačka koju Windows izlaže za skeniranje sadržaja u memoriji i EtwEventWrite, funkcija putem koje Praćenje događaja za Windows bilježi događaje. Obje su uobičajene mete za modifikaciju unutar procesa koja potiskuje telemetriju koju bi ti interfejsi inače proizveli.
Perzistencija se pojavljuje dva puta na Windowsu. Binarna datoteka se kopira u %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe, i dva mehanizma na njega upućuju: vrijednost pod SOFTVER\Microsoft\Windows\Trenutna verzija\Pokrenii planirani zadatak registrovan kao
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHESTPutanja zadatka, naziv zadatka i naziv izvršne datoteke odražavaju originalnu Windows audio komponentu. /RL NAJVIŠI zahtijeva najviši dostupni nivo privilegija.
macOS verzija prati isti obrazac s imenima prilagođenim platformi: zapisuje listu svojstava u ~/Biblioteka/LaunchAgents/com.apple.windowserver.helper.plist i postavlja svoj izvršni fajl na ~/.local/share/runtime/com.apple.runtimeProvjerava /Aplikacije/VMware Fusion.app i /Biblioteka/Podrška za aplikacije/VMware alati.
Mrežni kapacitet obuhvata tri transportna sistema: WININET.dll za HTTPS sa https://%s:%d%s formatni niz, WS2_32.dll utičnice i DNSAPI.dll sa DnsQuery_A uz a c.%s.%s format stringa — isti oblik upita za brojanje dijelova koji koristi prva faza.
Gornji opis prikazuje ono što binarna datoteka uvozi, stringovi i putanje registra pokazuju prilikom pregleda. Javna višeanalizna analiza istog Windows uzorka dodaje detalje koje statičko čitanje tabele uvoza ne može samo utvrditi, te se ovdje pripisuje, a ne ponavlja kao zapažanje iz prve ruke. Ta analiza izvještava da AMSI i ETW reference nisu samo riješene, već su i zakrpe — AmsiScanBuffer in amsi.dll i EtwEventWrite in ntdll.dll — što potiskuje skeniranje sadržaja u memoriji i praćenje događaja za proces. Izvještava o provjerama anti-analize kao vremenski zasnovanim, pored Provjeri prisutnost udaljenog debagerai identificira GetThreadContext poziv kao provjera hardverske tačke prekida čitajući registre za otklanjanje grešaka. Također prijavljuje mutex jedne instance, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}i imena Usluga sistemskih zvukova kao vrijednost Run-key. Ta mutex vrijednost nije bila među ovdje oporavljenim stringovima — filter za ekstrakciju je isključio tokene u velikim heksadecimalnim zagradama — i zabilježena je u tabeli indikatora na osnovu te javne analize, a ne direktnog posmatranja.
Stage 3
Učitavač referencira dodatni skup putanja na istim hostovima. Sve su bile dostupne tokom analize: beacon_linux.bin na 5.3 MB, beacon_mac.bin na 13.3 MB, update_win.exe sa 10.3 MB i arm.bin sa 4.3 MB. Ove datoteke nisu preuzete i njihovo ponašanje je nepoznato.
Za Windows putanju, javna analiza programa za učitavanje opisuje kako se obrađuje ta treća faza: dohvaća se preko WinINet-a, stiže šifrirano, dešifrira se u memoriji i izvršava reflektivno - memorija se alocira, uvozi se rješavaju, relokacije se obrađuju i kontrola se prenosi na novu nit putem... KreirajThreadZbog toga se treća faza nikada ne zapisuje u datotečni sistem, tako da detekcija na osnovu datoteka i forenzika diska nakon incidenta nemaju šta da oporave iz nje. To također znači da bi preuzimanje bajtova sa hosta za isporuku dalo šifrirani tekst, a ne analiziranu izvršnu datoteku.
Timeline
Sve vremenske oznake su UTC i potiču iz metapodataka registra npm-a, koji bilježi kreiranje i neobjavljivanje paketa nezavisno od bilo kojeg posmatrača.
| Kada | Šta |
|---|---|
| 2026-07-31 09:25:05 → 09:29:56 | Kreirano je deset imena, svako počevši od verzije 0.0.1, s razmakom od otprilike trinaest sekundi. |
| 2026-08-01 09:38 → 11:29 | Postojeća imena se penju kroz naduvane brojeve verzija, 6.1.9 kroz 6.1.12, 9.9.9 kroz 9.9.12, 8.9.3 kroz 8.9.6, 5.4.6 kroz 5.4.9. |
| 2026-08-01 13:04:14 → 13:04:18 | Devet dalje beaver-ui-* imena kreirana u nizu od četiri sekunde, svako objavljeno direktno u verziji 12.x bez prethodne historije. |
| 2026-08-01 ~13:00–14:30 | Verzije klasificirane kao zlonamjerne nakon ručnog pregleda. |
| 2026-08-01 17:39:49 → 17:40:14 | Devetnaest od dvadeset imena nije objavljeno u dvadeset pet sekundi, uzastopno, s razmakom od oko 1.2 sekunde. |
| 2026-08-02 18:58:41 | a.poltoradnev-package-c ponovo kreirano pod drugim računom za održavanje, verzija 0.0.2. |
| 2026-08-02 19:20:28 | verzija 33.9.5 objavljeno pod istim imenom. |
| 2026-08-02 20:14 | Sva tri hosta za dostavu podataka koji opslužuju drugu i treću fazu; DNS rezervni odgovor s brojem dijelova. |
Dva od ovih unosa vrijedi razmotriti.
Burst od 13:04 je za četiri sekunde stavio devet paketa u registar, svaki sa po jednom verzijom u dvanaest i nijednom 0.0.1 ispod toga. Brojevi verzija na ovoj skali, s imenima starim jedan dan, ne opisuju historiju izdanja.
Slijed neobjavljivanja je podjednako mehanički: devetnaest imena, dvadeset pet sekundi, ravnomjerni razmaci. npm ih bilježi kao obične događaje neobjavljivanja, a ne kao rezervirano mjesto koje ostavlja uklanjanje inicirano od strane registra, što radnju smješta na račun za objavljivanje, a ne u registar.
Indikatori kompromisa
Hostovi i putanje su defaultirani. Nemojte ih rješavati ili preuzimati iz produkcijskog sistema.
| tip | vrijednost |
|---|---|
| Domaćin za dostavu | oob-worker[.]cf99-9b3[.]workers[.]dev |
| Domaćin za dostavu | oob-worker[.]cf102-baf[.]workers[.]dev |
| Domaćin za dostavu | oob-worker[.]cf103-070[.]workers[.]dev |
| DNS transport | tin[.]dl[.]well1[.]site (Linux x64), tina[.] (arm64), ldr[.] (macOS), win[.] (Windows) — brojanje dijelova na c.<domain>, podaci na <n>.<domain> |
| Putevi 2. faze | /pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe |
| Putevi 3. faze | /pkg/beacon_linux.bin, /pkg/beacon_mac.bin, /pkg/update_win.exe, /pkg/arm.bin |
| Putanja za ispuštanje (Unix) | /var/tmp/.cache_<8-hex> |
| Putanja za ispuštanje (Windows) | %TEMP%\dotnet_diag_<8-hex>.exe |
| Perzistentnost (Windows) | %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exezadatak \Microsoft\Windows\Multimedia\SystemSoundsServiceVrijednost ključa za izvršavanje SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SystemSoundsService |
| Mutex (Windows) | Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9} |
| Perzistentnost (macOS) | ~/Library/LaunchAgents/com.apple.windowserver.helper.plistbinarni kod na ~/.local/share/runtime/com.apple.runtime |
| Marka za jednokratno pokretanje | /tmp/.analytics_state, %TEMP%\analytics_state (Prozor od 20,357 s) |
| Zahtjev za potpis | HTTPS GET, IPv4-pinned, korisnički agent: node-fetch/2.6 |
| Datoteka faze 1 | _polyfill.js, SHA-256 392dc9ec85042ce1796bfa9b8c7bf6e05c7710579aab8b7b1eb73788683883af |
| Nereferencirana datoteka | lib/telemetry.js, SHA-256 2266c9b8e199daebe31a9afcb61d9b0d76706b63c92312fc8223d22de42e63c7 |
| Faza 2 (Linux x64) | SHA-256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| Faza 2 (Linux arm64) | SHA-256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| Faza 2 (macOS) | SHA-256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| Faza 2 (Windows) | SHA-256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
Nazivi paketa
Atribucija i uočeno ponašanje
Uključena su dva npm računa. Devetnaest neobjavljenih imena objavio je jedan račun; a.poltoradnev-paket-c je ponovo registrovan 2. avgusta pod drugim imenom računa i drugom domenom e-pošte. Kod je iste loze u oba, a druga registracija nosi iste hostove za isporuku, iste DNS rezervne domene, istu konstrukciju putanje drop-a i isti pečat za jednokratno izvršavanje.
Ponovno objavljeni par također pokazuje kako je sastavljen. Verzije 0.0.2 i 33.9.5 su bajtno identični, osim stringa verzije u package.json, A index.js isporučeno kao 0.0.2 deklariše konstantna VERZIJA = "33.9.5"Oba artefakta su izrezana iz jednog izvornog stabla i naknadno numerisana. Ne postoji 0.0.2 historija razvoja za 0.0.2 puštanje da predstavlja.
Numerisanje verzija u cijelom skupu slijedi istu logiku. Nazivi paketa u ovoj kampanji čitaju se kao stvari koje bi postojale unutar organizacije, a ne u javnom registru: skup UI komponenti, ESLint konfiguracija, SLA ispitivač, paket nazvan po osobi. Kada izgradnja razrješava zavisnost po imenu i konsultuje javni registar pored privatnog, pobjeđuje verzija sa višim brojem. Naziv kreiran na 0.0.1 u ponedjeljak i noseći 12.9.6 u utorak je u poziciji za to poređenje.
Dva talasa objavljivanja se također razlikuju na način koji sugerira iteraciju. Raniji kod je nazvao svoju datoteku korisnog tereta setup.js i naveo pet hostova za isporuku; trenutna datoteka se zove _polyfill.js i navodi tri. Ranija verzija je uklanjala odbačenu datoteku pet sekundi nakon pokretanja, ostavljajući proces da se izvršava sa izbrisanog inoda; trenutna verzija to ne radi. Nereferencirani lib/telemetry.js ostaje u tarballu na oba, još uvijek isporučen, više nije povezan.
Vrijedi spomenuti jednu primjedbu o prekidačima za gašenje.cisely, jer je u suprotnosti s uobičajenim tumačenjem. DISABLE_TELEMETRY, ISKLJUČIVANJE_IZ_ANALIZE, I NE_PRATI se poštuju i provjeravaju se prije nego što se bilo šta drugo dogodi. Istraživač čije analitičko okruženje postavlja bilo koji od njih primjećuje paket koji ne radi apsolutno ništa.
Uticaj i šta branioci mogu učiniti
Praktična posljedica okidača u vremenu uvoza je uska i vrijedi je navesti zasebno. npm instalacija –ignore-scripts sprečava pokretanje skripti životnog ciklusa, i to je dobar savjet. Ovdje nema efekta, jer ovaj kod ne koristi skriptu životnog ciklusa. Korisni teret se pokreće kada kod aplikacije, testno pokretanje, bundler ili linter prvo uveze modul. Na CI runneru koji instalira, a zatim odmah izgradi, to dvoje je udaljeno nekoliko sekundi.
Za lov, trajni signali su strukturni, a ne doslovni. Hostovi, naziv datoteke i putanje preusmjeravanja će se promijeniti; ove oblike je teže mijenjati:
- Ulazna tačka modula čija je posljednja izjava try { require(“./x”); } catch (_) {} oko datoteke koja nije dio izvezenog API-ja. Paket sa originalnim polyfill-om ga uvozi na vrhu i koristi njegov rezultat. Prihvatanje svake greške iz uvoza na dnu datoteke nije rukovanje greškama.
- Host stringovi sastavljeni od strane .pridruži("") iz niza fragmenata. Legitiman kod nema razloga da dijeli ime hosta na više elemenata niza.
- Paket čije su deklarirane zavisnosti prazne, ali koji poseže za HTTPS, DNS, I podređeni_proces u trenutku uvoza. Preuzimanje plus izvršavanje u paketu koji oglašava UI komponentu je cijelo otkriće.
- Brojevi verzija nisu u skladu sa starošću paketa. Ime koje je prvi put objavljeno prije nekoliko dana s dvocifrenim brojem prodanih verzija, bez ikakvih međuizdanja, opisuje nešto drugo osim njegovog razvoja.
- Piše / var / tmp or % TEMP% a zatim a chmod do 07:55 i odvojenog jata. Niz je kratak, uređen i rijetko benigni zajedno.
Na Windows hostovima postoje dvije jeftine provjere visoke pouzdanosti. Artefakti perzistencije su fiksni nizovi znakova i nijedan od njih ne pripada čistom sistemu: planirani zadatak na \Microsoft\Windows\Multimedija\Servis sistemskih zvukova, vrijednost Run-key-a pod nazivom Usluga sistemskih zvukovai izvršnu datoteku tog imena pod %APPDATA%\Microsoft\Windows\Teme\Originalna Windows audio usluga se ne nalazi ni na jednom od tih mjesta. Drugo, program za učitavanje koristi fiksni mutex s jednom instancom, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}; njegovo prisustvo na hostu je indikator, a budući da program za učitavanje tretira postojeći mutex kao "već pokrenut", njegovo prethodno kreiranje je održiva kratkoročna vakcinacija dok je planirana sanacija.
Detekcija u trećoj fazi je teži problem i vrijedi ga razjasniti. Prema javnoj analizi, podaci se dešifriraju i mapiraju u memoriju, a ne zapisuju na disk, tako da skeniranje datoteka i forenzika diska neće to vidjeti. Ono što ostaje vidljivo je vlastiti otisak učitavača - unosi perzistencije, mutex i odlazni zahtjevi prema hostovima za isporuku ili DNS-TXT domenama.
Za okruženja koja razrješavaju zavisnosti i iz privatnog i iz javnog registra, ublažavanje se ne mijenja ni od čega ovdje navedenog: internim imenima opsega tako da ih javno ime ne može zadovoljiti i pričvršćivanjem razrješenja na interni registar za te opsege. Ponašanje inflacije verzija opisano iznad funkcioniše samo tamo gdje viša javna verzija može osvojiti ime.
Konačno, neobjavljivanje vrijedi pročitati pažljivo, a ne kao kraj. Devetnaest imena je napustilo registar za dvadeset pet sekundi, a jedno se vratilo dan kasnije pod novim računom, s netaknutom infrastrukturom isporuke tijekom cijelog teksta. Uklanjanje paketa nije uklanjanje operacije; hostovi su nastavili opsluživati svaku fazu dok se ovo pisalo. Svako stablo zavisnosti koje je riješilo jedno od ovih imena između 31. jula i 1. augusta treba tretirati kao da je imalo priliku izvršiti prvu fazu, bez obzira na to postoji li ime još uvijek ili ne.
reference
- Više-motorna analiza Windows loadera — izvor za AMSI/ETW patching, reflektivno izvršavanje u memoriji i detalje o mutexu navedene iznad.
- Dokumentacija za npm skripte — događaji životnog ciklusa koje ova kampanja ne koristi.
- Dokumentacija za instalaciju npm-a — pokriva –ignor-skripte i njegov opseg.







