PhantomBot Nga Vjedhja e Kredencialeve në Botnet

PhantomBot: Një fushatë Typosquat që kaloi nga vjedhja e kredencialeve në një komplet botneti të gatshëm për përdorim

TL; DR

Një botues i vetëm i npm, deadcode09284814, ka zhvilluar një fushatë shtypi kundër të ligjshmes axios chalk-template paketa që nga mesi i majit 2026.

Fushata filloi si një vjedhje konvencionale e kredencialeve dhe portofolit, duke nxjerrë të dhëna në një Tuneli Serveo HTTPS.

On 2026-05-17, Me axois-utils:1.0.9, operatori e ndërroi tërësisht ngarkesën: e njëjta skelë me tre grepa instalimi, i njëjti botues, i njëjti emër pakete.

Por skripti i instalimit tani është një rekrutues botnet DDoS për platforma të ndryshme.

Ngarkesa flet për një localhost.run tunel dhe pranon komanda përmbytjeje, duke i shndërruar mjediset e infektuara në pjesë të një botneti të aftë për DDoS.

Operatori madje e dërgoi Binar i serverit C2 brenda tarball-it, duke treguar një përshkallëzim të qartë nga vjedhja e kredencialeve në infrastrukturën aktive të botnet-it.

Dy paketa, katër versione ende aktive në regjistër dhe një operator që tani i ekzekuton të dy modulet paralelisht.

Ashpërsia: e lartë.

Kryefjala e IOC-së Çdo version i axois-utils ose chalk-tempalte nga botuesi deadcode09284814

Sulmi: Si funksionon

Fushata është ndërtuar mbi një skemë shpërndarjeje qëllimisht të mërzitshme: dy emra paketash të gabuar, një shkronjë larg paketave me qindra miliona shkarkime javore (AXIOS, shabllon shkumësi), dhe instalim i trefishtë hooks që garantojnë ekzekutimin. Ajo që është interesante është se çfarë skeleti mbart — dhe fakti që operatori e ndryshoi ngarkesën pa ndryshuar asgjë tjetër.

Skela e përbashkët

Çdo version i publikuar i të dy paketave deklaron të njëjtat tre cikle jetësore hooks in package.json:

Renditja e ngarkesës nën të treja hooks është e tepërt — post-instalim vetëm do të funksiononte në një parazgjedhje instaloni npmZgjedhja ka rëndësi: instalimi i npm –injorimi i skripteve anashkalon skriptet, por disa rrjedha pune të zakonshme (rivendosjet e memorjes së përkohshme CI që riekzekutojnë ciklin jetësor) hooks në mënyrë selektive, ose zhvillues që vetëm auditojnë post-instalim) bëjnë një deklaratë me trefish të tepërt si bastin më të sigurt për sulmuesin.

shabllon me shkumës shton një mekanizëm të dytë: deklaron axois-utils:^1.0.7 si një kohë ekzekutimi varësiInstalimi i typosquatted shabllon shkumësi prandaj tërheq edhe single typosquat, dhe të dy ngarkesat funksionojnë. Të dy paketat janë një çift i koordinuar, jo lista të pavarura.

Faza A — kredenciale / vjedhës portofoli (2026-05-15 → deri më tani)

Faza A është ngarkesa origjinale. Ngarkuesi është një i shkurtër postinstall.js që tregon në një tunel të kundërt Serveo HTTPS:

Nën-domeni Serveo kodon IP-në e destinacionit (80.200.28.28) direkt në emrin e hostit — një konventë e dallueshme për atë shërbim. Operatori rrotullon prefiksin e rastësishëm të nën-domenit midis versioneve për të shmangur listat e bllokimit të domenit naiv, por IP-ja themelore nuk lëviz kurrë. (shabllone shkumësi: 1.0.14 përdorur 8a3e818ea8f11186-80-200-28-28…; përdorimi 1.0.16 / 1.0.19 / 1.0.20 f04a273bd84c0622-….)

postinstall.js duart larg phantom.js, një modul “kolektor” i paketuar me 7,667 rreshta. phantom.js ecën mikpritësin për:

Çelësat privatë SSH (~/.ssh/*)
.npmrc përmbajtje dhe çdo npm_* tokenët e env-së
Skedarët e kredencialeve AWS, GCP dhe Azure
Rregulli i shenjës së aksesit personal të GitHub (ghp_*, gho_*, ghu_*, ghs_*)
Artefakte të portofolit të kriptovalutave për Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash
Një rekursiv .env* ec nëpër ~/projects, ~/dev, ~/code, ~/workspace, dhe install cwd
Historitë e Shell dhe të plota process.env

Pakoja dërgohet me POST në tunelin Serveo në / mbledhNuk ka asnjë lloj turbullimi, asnjë logjikë anti-VM, asnjë lloj konfigurimi — operatori vendos për volumin dhe shpejtësinë.

Faza B — Rekrutim i PhantomBot DDoS (2026-05-17, vetëm axois-utils:1.0.9)

Faza B zëvendëson phantom.js + postinstall.js me një skedar të vetëm të quajtur distrube.js (gabimi drejtshkrimor është i operatorit). Skela me tre grepa në package.json është e pandryshuar; paketa mban të njëjtin emër, fushëveprim dhe model version-bump. Nga jashtë, axois-utils:1.0.9 duket si një vazhdim i vogël i 1.0.6. Brenda, është një familje e ndryshme malware-esh.

distrube.js hapet me një bllok konfigurimi që emërton markën e vetë operatorit:

// axois-utils-1.0.9/distrube.js:11-15
// Use your localhost.run HTTPS URL (the tunnel handles HTTP internally)
const C2_HOST = 'b94b6bcfa27554.lhr.life'; // Your localhost.run tunnel
const C2_PORT = 443; // HTTPS port - tunnel handles SSL
const BOT_ID = `${os.hostname()}_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;

Komentet i drejtohen një operatori të ardhshëm që do të ekzekutojë paketën ("Përdorni URL-në tuaj HTTPS localhost.run"). Kjo, plus ajo që shfaqet pranë klientit bot, është treguesi se kjo nuk është vetëm një ngarkesë viktime - është vetë paketa.

Rrjedha:

  1. Këmbëngulje ekzekutohet i pari. Skripti instalohet vetë në tre mënyra të ndryshme për çdo sistem operativ (regjistër run + Dosja e nisjes + schtasks në Windows; crontab + phantom-bot.service njësia e sistemit + .Bashrc/.zshrc shto + /etc/rc.local në Linux; LaunchAgent com.phantom.bot.plist në macOS). Emri i shërbimit të persistencës dhe etiketa LaunchAgent janë të dyja robot fantazmë / com.phantom.bot, nga e cila vjen edhe emri i fushatës.
  2. Informacioni i sistemit exfil ekzekutohet një herë — një POST me një gjurmë gishtash në b94b6bcfa27554.lhr.life:443/collect që përmban emrin e hostit, platformën, arch-un, emrin e përdoruesit, CPU-në/RAM-in, ndërfaqet e rrjetit, process.env, cwd, homedir, versionin e node-it dhe IP-në publike. Kjo është shumë më pak agresive se Faza A: pa SSH, pa portofolë, pa rekursion .env. Puna e robotit është të regjistrohet, jo të vjedhë.
  3. Cikli i rrahjeve të zemrës hap një HTTPS POST çdo 30 sekonda në b94b6bcfa27554.lhr.life:443/. Agjenti i përdoruesit është PhantomBot/1.0. Verifikimi TLS është çaktivizuar në mënyrë të qartë (rejectUnauthorized: false). Përgjigja C2 analizohet si JSON i formës {type, target, port, duration, threads, method} dhe dërgohet.
  4. Arsenali i përmbytjeve është i lidhur me gjashtë komanda:
Lloji i komandës Modulet Shënimet
ping Përgjigje e Liveness Boti identifikon veten
http Përmbytje HTTP Përmbytja e kërkesës së shtresës 7
https Përmbytje HTTPS Njësoj si http, i mbështjellë me TLS
tcp Përmbytje TCP 65 KB spam me ngarkesë të rastësishme
pudre Përmbytje UDP Paketa UDP prej 65,507 bajtësh
i shpejtë DoS me rivendosje të shpejtë HTTP/2 Teknika 2023 CVE-2023-44487

Të pesë modulet e përmbytjes marrin një objektiv, port, kohëzgjatjedhe temat argument — boti është një program i përgjithshëm për rrëmbim të të dhënave me pagesë, që nuk synon ndonjë viktimë të caktuar. Lista e viktimave të operatorit ndodhet në C2, jo në paketë.

Çfarë ka të re këtu — binar C2 i dërguar

Faza A është një formë e njohur: vjedhje kredencialesh, grep instalimi, tunel i shitësit C2. Faza B është Edhe një formë e njohur — botnet-et DDoS kanë qenë një pjesë e pandashme e paketave dashakeqe npm për vite me radhë. Ajo që është e pazakontë është se operatori e dërgoi ana e serverit e kitit brenda tarball-it npm:

  • c2 — një skedar binar Go ELF i kompiluar prej 4 megabajtësh
  • c2.go — burimi Go me 426 rreshta për atë skedar binar

Asnjë skedar nuk thirret nga ndonjë grep instalimi. Ato nuk janë pjesë e ngarkesës së viktimës. Ato ndodhen në direktorinë e paketave në të njëjtën mënyrë siç do të ndodhte me një skedar dokumentimi. Leximi më i besueshëm është se operatori e ka transferuar pemën e tij të punës së zhvillimit në npm pa kuruar listën e skedarëve - një fletë e vërtetë OpSec - dhe ajo që ka dërguar është kompleti i plotë dypalësh: klienti që ekzekuton një viktimë dhe serveri që ekzekuton operatori.

Kjo është pjesa e historisë që justifikon përshkrimin e "kitit të botnetit me çelës në dorë". Kushdo që e ka shkarkuar axois-utils:1.0.9 para se të rrëzohet sistemi nuk ka vetëm një mostër viktime — ata kanë një server C2 që funksionon.

Pika kryesore, me një fjali

I njëjti botues, të njëjtat emra paketash, e njëjta strukturë me tre grepa, e njëjta markë "fantazmë" — por Ngarkesa ndryshoi modelin e monetizimit brenda natësnga "sekretet e korrjes që mund t'i rishes" te "kapaciteti i përmbytjes me qira që mund ta marr me qira". TTP-të e kohës së instalimit që mbrojtësit duhet të vëzhgojnë janë pothuajse identike në të dyja fazat; mbrojtjet e bazuara në nënshkrime të lidhura me vargjet e shtegut të portofolit të Fazës A ose me phantom.jsKolektori me 7,667 rreshta do ta kishte humbur plotësisht Fazën B.

Data (UTC) ngjarje
2026-05-15 Publikimi i parë: axois-utils:1.0.4 (Ndërtimi i testit të LAN-it, platforma e zhvillimit në 192.168.129.19)
2026-05-15 axois-utils:1.0.6 botuar — Faza A C2 u zëvendësua me 80.200.28.28 nëpërmjet tunelit Serveo; komenti i burimit // Change to '80.200.28.28' for public konfirmon ndërrimin e zhvilluesve → produkteve
2026-05-16 chalk-tempalte:1.0.14 1.0.16 publikuar — ngarkues me zinxhir që deklaron axois-utils:^1.0.7 si një varësi në kohën e ekzekutimit; Nën-domeni Serveo u rrotullua
2026-05-16 Fushata e Fazës A u zbulua gjatë skanimit rutinë të npm; u aplikuan vendime të konfirmuara keqdashëse
2026-05-17 axois-utils:1.0.9 publikuar — pivot i ngarkesës: Rekrutimi i PhantomBot DDoS nëpërmjet tunelit localhost.run; nga ana e operatorit c2 binar dhe c2.go burimi u dërgua në tarball
2026-05-17 chalk-tempalte:1.0.19 1.0.20 publikuar — ende Faza A (vjedhës); operatori tani i ekzekuton të dy modulet paralelisht
2026-05-17 Zbulimi i Fazës B gjatë skanimit rutinë; vendimet u aplikuan në të gjitha 2026-05-17 Versione
(në vazhdim) Raportet e heqjes në pritje; të katër paketat e publikuara mbeten të disponueshme në regjistër në kohën e shkrimit të këtij dokumenti.

Treguesit e Kompromisit

Paketat

ekosistemit paketë Versione
NPM axois-utils (tiposquat i axios) 1.0.4, 1.0.6, 1.0.9
NPM chalk-tempalte (typosquat i shabllonit të shkumësit) 1.0.14, 1.0.16, 1.0.19, 1.0.20

Identiteti i autorit

Fushë vlerë
botuesi i npm deadcode09284814
Email-i i botuesit phantomdeadcode@tutamail.com
SCM verifikim asnje

Komanda dhe kontrolli

Fazë Pika e fundit transport
A f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect Tuneli Serveo HTTPS
A 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect Tuneli Serveo HTTPS (versioni më i hershëm)
A 80.200.28.28:443/collect Pika fundore themelore e VPS-së
B b94b6bcfa27554.lhr.life:443/ localhost.run HTTPS reverse-tunnel

Përmbledhjet e skedarëve (SHA-256)

Skedar SHA-256 Shënimet
c2 (Shko ELF, 4 MB) 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 Serveri C2 nga ana e operatorit, i dërguar brenda axois-utils:1.0.9
c2.go (426 rreshta) 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 Shko burimin për binarin C2
distrube.js 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 Klienti i robotit të Fazës B
phantom.js (chalk-tempalte:1.0.19) 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 Kredenciali i Fazës A / mbledhësi i portofolit
phantom.js (chalk-tempalte:1.0.20) d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 Kolektori i Fazës A (varianti 1.0.20)
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 Ngarkuesi i Fazës A, identik me bajt në të dy versionet

Atribuimi dhe Motivimi

Ne e ndjekim këtë fushatë si PhantomBot, duke marrë markën e vetë operatorit nga Agjent përdoruesi: PhantomBot/1.0 kokë e rrahjeve të zemrës, e phantom-bot.service njësia e sistemuar, com.phantom.bot Etiketa LaunchAgent dhe phantomdeadcode@ adresa e email-it. Operatori është konsistent në lidhje me këtë emër në të paktën katër objekte.

Katalogu i sinjaleve

  • Botues - kod i vdekur09284814 në npm. Llogari me një përdorues të vetëm, email i disponueshëm Tutamail, jo SCM verifikim. Nuk ka historik të mëparshëm publikimi përtej kësaj fushate.
  • Ripërdorimi i markës — “phantom” shfaqet në emailin e botuesit, në emrin e skedarit të koleksionistit të Fazës A (phantom.js), në emrin e shërbimit të qëndrueshmërisë së Fazës B (phantom-bot.service), në etiketën LaunchAgent (com.phantom.bot), dhe në bot User-Agent (PhantomBot/1.0).
  • Infrastrukturë — Një VPS i vetëm në 80.200.28.28 Faza A përballet nëpërmjet rrotullimit të nën-domenit Serveo; Faza B lëviz në një localhost.run tunel i kundërt (b94b6bcfa27554.lhr.lifeTë dy shërbimet e shitësve janë falas dhe kërkojnë vetëm SSH dalëse nga ana e operatorit, në përputhje me konfigurimet me buxhet të ulët dhe OpSec të ulët.
  • Stili i kodit — JavaScript i thjeshtë në të gjithë tekstin; pa turbullim, pa kodim vargjesh, pa kontrolle anti-VM. Emrat e variablave janë përshkrues (vjedhni Informacionin e Sistemit, ekzekutoKomand, httpFlood). Komentet në distrube.js i drejtohen drejtpërdrejt një operatori të ardhshëm (“Përdorni URL-në tuaj HTTPS localhost.run”), duke sugjeruar që skedari ishte menduar të rishpërndahej si një komplet, jo të përdorej nga një sulmues i vetëm.
  • Fletëpalosje OpSec — Tarball i Fazës B ofron si klientin bot ashtu edhe serverin C2 nga ana e operatorit (c2 ELF + c2.go burim). Kjo është në përputhje me një operator që e transferoi pemën e tij të punës në npm pa audituar listën e skedarëve. Ose operatori është i papërvojë, ose kompleti është do të thoshte që do të shpërndahet publikisht dhe binarja C2 është pjesë e produktit.
  • Vetë-konfirmim - axois-utils:1.0.4 përmban komentin burimor // Ndrysho në '80.200.28.28' për publikun në rreshtin 12, duke konfirmuar përparimin e zhvillimit / fazës së vendosjes / prodhimit që operatorët zakonisht e mohojnë.

motivimi

Ngarkesa e Fazës A është vjedhje e drejtpërdrejtë financiare: kredencialet, çelësat cloud, tokenët GitHub dhe portofolet kripto kanë të gjitha tregje likuide rishitjeje. Faza B është gjithashtu financiare, por indirekte: shërbimet DDoS me qira ("booter") marrin me qira kapacitet përmbytjeje çdo minutë, dhe botët si ai i dërguar këtu janë inventari mbi të cilin funksionojnë këto shërbime. Ritmi i zemrës 30-sekondëshe, gjenerik objektiv/port/kohëzgjatje skema e komandës dhe arsenali i përmbytjes me pesë protokolle janë standard produkt i një operatori nisës.

Duke ekzekutuar të dy modulet paralelisht — shabllone shkumësi: 1.0.19 1.0.20 vazhdoni të transportoni vjedhësin ndërsa axois-utils:1.0.9 dërgon botin — sugjeron që operatori po mbron rrjedhat e të ardhurave në vend që të braktisë Fazën A. Ndryshimi është një shtim, jo një zëvendësim.

Çfarë nuk pretendojmë

Ne nuk kemi qenë në gjendje të konfirmojmë një identitet të botës reale pas kod i vdekur09284814 handle, dhe ne nuk ia atribuojmë këtë fushatë asnjë aktori, grupi apo vendi kërcënimi të emërtuar. Marka "fantom" është mjaft konsistente në të gjitha objektet për të sugjeruar një operator të vetëm, por transportimi në stilin e kit-it të binarit C2 lë të hapur mundësinë që paketat e ardhshme nga handle të palidhura do të ripërdorin të njëjtin kod.

Ndikimi, Trendet dhe Çfarë duhet të bëjnë mbrojtësit

ndikim

Objektivat legjitime të uzurpimit AXIOS shabllon shkumësi mbështeten gjerësisht në ekosistemin JavaScript; AXIOS vetëm renditet midis tridhjetë paketave npm më të shkarkuara. Emrat e typosquat janë një shtypje tastiere larg atyre të vërtetë (aksoisAXIOS, shabllonshabllon), dhe të dyja janë gabime drejtshkrimore të besueshme nga ana gjuhësore.

Ne nuk ishim në gjendje të merrnim statistika të besueshme të shkarkimit për versionet keqdashëse para heqjes — npm nuk ruan numërimin e shkarkimeve për version pasi një paketë është e pabotuar, dhe npms.ioproxy-t e stilit -janë të zhurmshëm në këtë shkallë. Çdo organizatë, skedari i kyçjes së së cilës zgjidhet në një paketë të quajtur axois-utils or shabllon me shkumës nga botuesi kod i vdekur09284814 duhet të trajtohet si i kompromentuar: rrotulloni çdo kredencial të pranishëm në process.env në hostin e prekur, auditoni vektorët e persistencës për çdo sistem operativ (shihni "Çfarë duhet të bëjnë mbrojtësit" më poshtë) dhe hiqni varësinë.

Modele në zhvillim

Kjo fushatë ilustron një ndryshim që kemi parë në disa incidente të fundit të npm-së: Skela me grep instalimi është aseti i qëndrueshëm; ngarkesa është e ndërrueshmeI njëjti botues, e njëjta paketë, e njëjta parainstalimi / instaloj / post-instalim trefishtë, dhe madje e njëjta version - ritëm i shpejtë - e vetmja gjë që ndryshoi midis axois-utils:1.0.6 axois-utils:1.0.9 ishte dosja hooks ekzekuto. Zbulimi i bazuar në nënshkrim i lidhur me ngarkesën e Fazës A (vargjet e shtegut të portofolit, phantom.jsKolektori me 7,667 rreshta, hosti Serveo C2) do t'i kishte sinjalizuar tre versionet e para dhe do ta kishte humbur tërësisht Fazën B.

I njëjti model është i dukshëm në fushatat e tjera të vitit 2026 që kemi ndjekur: një operator i vetëm me një strukturë të qëndrueshme, që ndërron midis vjedhjes së kredencialeve, klientëve që kopjojnë provimet, exfil-it të bot-eve të Telegramit dhe tani rekrutimit DDoS. Mbrojtësit që mbështeten në nënshkrimet e ngarkesës së payload do të vazhdojnë të humbasin raundin e dytë të çdo fushate.

Konkluzion është se TTP-të në kohën e instalimit janë sinjali më i mirëDeklarata të trefishta install-hook, skripte instalimi që importojnë https or proces_fëmijë, instaloni skripte që shkruajnë në dosjet e nisjes së përdoruesit dhe instaloni skripte që zgjidhin emrat e hosteve në shërbimet falas të tunelit të kundërt (Serveo, localhost.run, ngrok, cloudflared) janë të gjitha të rralla në paketat legjitime dhe të zakonshme në paketat keqdashëse.

Çfarë duhet të bëjnë mbrojtësit

  • Auditimi i skedarit Lockfile. Kërko çdo paketë-kyç.json / fije.kyç / pnpm-lock.yaml në organizatën tuaj për vargjet e sakta axois-utils shabllon me shkumësTrajtojeni çdo përputhje si një kompromis.
  • Rrotulloni sekretet në hostet e prekura. Kredencialet e Fazës A të mbledhura me shumicë për SSH, cloud, GitHub, npm dhe portofol. Merrni përsipër çdo kredencial të pranishëm ndonjëherë në process.env, ~ / .ssh, ~/.aws, ~/.npmrc, f / .konfiguro, apo ndonjë .env* Skedari në hostin e prekur është i ekspozuar.
  • Hiqni këmbënguljen (Faza B). Në Windows, fshij HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, hiqni %APPDATA%\Microsoft\Windows\Menyja Start\Programs\Startup\system-update.batdhe schtasks /delete /tn SystemUpdate /fNë Linux, crontab -e dhe hiqni @rinisje nyja …, systemctl – përdoruesi çaktivizohet – tani phantom-bot.service pastaj fshini ~/.config/systemd/user/phantom-bot.service, pastrim .Bashrc / .zshrc / /etc/rc.localNë macOS, launchctl shkarko ~/Library/LaunchAgents/com.phantom.bot.plist pastaj fshini listën e plistuar.
  • Blloko hostet C2. Shtoni katër pikat fundore C2 në tabelën IOC në listën tuaj të bllokimit të daljes. *.serveousercontent.com *.lhr.life mund të bllokohet me shumicë nëse mjedisi juaj nuk ka përdorim të ligjshëm për shërbimet e tunelit të kundërt.
  • Gjueti sipas TTP-së në kohën e instalimit, jo ngarkesë e dobishme. Regjistrimet e skedarit të kyçjes së inventarit të të cilave package.json i deklaruar parainstalimi, instalojdhe post-instalim të gjitha tregojnë të njëjtin skript. Kontrolloni me moshën e paketës dhe statusin e verifikimit të botuesit. Ky model është i rrallë në paketat legjitime dhe është sinjali më i besueshëm që PhantomBot ripërdor.
  • Auditim për binarin C2. Kushdo që e ka shkarkuar axois-utils:1.0.9 ka serverin C2 të operatorit (c2 ELF, sha256 165fa92d…) në disk. Skano memorjet e përkohshme dhe depot e objekteve CI. Skedari binar është në gjumë më vete, por prania e tij në një stacion pune është provë e qartë se paketa është instaluar.

Linja mbyllëse

I njëjti operator, e njëjta paketë dhe e njëjta grep instalimi mund të paraqesin kërcënime krejtësisht të ndryshme brenda 48 orëve. Kushtojini vëmendje skeletit, jo ngarkesës.

mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite