ESET araştırmacıları, Webworm APT grubunun son zamanlarda cephaneliğine eklediği yeni araç ve teknikleri anlatıyor
ESET araştırmacıları, başlangıçta Asya’daki kuruluşları hedef alan ancak son zamanlarda odağını Avrupa’ya kaydıran, Çin ile bağlantılı bir APT grubu olan Webworm’un 2025 yılındaki faaliyetlerini analiz etti. Bu, grup hakkında yayımladığımız ilk blog yazısı olsa da Symantec’in 2022 yılında bu tehdit aktörünü ilk kez rapor etmesinden bu yana Webworm’un faaliyetlerini takip ediyoruz. Yıllar boyunca, bu tehdit aktörünün taktik, teknik ve prosedürlerini (TTP’ler) sürekli olarak değiştirdiğini gördük.
Webworm, SixLittleMonkeys ve FishMonger gibi Çin bağlantılı diğer APT gruplarıyla bağlantılıdır. Geçmişte McRat (diğer adıyla 9002 RAT) ve Trochilus gibi iyi bilinen kötü amaçlı yazılım ailelerini kullanıyordu ancak son yıllarda tam teşekküllü arka kapılardan daha gizli olan hem mevcut hem de özel proxy araçlarına yönelmeye başladı. 2025 yılında Webworm, araç setine iki yeni arka kapı daha ekledi: C&C iletişimi için Discord kullanan EchoCreep ve aynı amaçla Microsoft Graph API’yi kullanan GraphWorm. Grup, kötü amaçlı yazılımlarını ve araçlarını GitHub depolarında barındırarak, kötü amaçlı yazılımların kurbanın makinesine doğrudan indirilebilmesini sağlamasıyla da bilinir.
Blog yazısının anahtar noktaları:
- 2022’de keşfedilmesinden bu yana, Webworm APT grubu araç setini ve hedeflerini aktif olarak güncellemektedir.
- 2025 yılında grup, C&C iletişimi için Discord ve Microsoft Graph API’yi kullanan arka kapılar kullanmaya başladı.
- ESET araştırmacıları, bir operatör sunucusunda keşfedilen 400’den fazla Discord mesajını ve bir bash geçmiş dosyasını deşifre etti; bu dosyalarda 50’den fazla benzersiz hedefe karşı kullanılan keşif komutları bulunmaktaydı.
- Arka kapılara ek olarak, Webworm mevcut ve özel olarak geliştirilmiş birçok proxy aracını kullanıyor.
- Grup, kötü amaçlı yazılımlarını yaymak için GitHub’ı kullanıyor.
EchoCreep arka kapısının C&C iletişimi için kullandığı Discord mesajlarının şifresini çözdükten sonra elde ettiğimiz bilgilere dayanarak, 2025 kampanyasını Webworm’a atfediyoruz. Bu bilgiler bizi saldırganların GitHub deposuna yönlendirdi; bu depoda SoftEther VPN uygulaması gibi sahneye yerleştirilmiş kalıntılar bulunuyordu. SoftEther yapılandırma dosyası içinde, bilinen bir Webworm IP adresiyle eşleşen bir IP adresi tespit ettik.
Bu blog yazısında daha sonra bahsedilecek ülkelerden Webworm’dan etkilenen kurbanlar uygun şekilde bilgilendirildi. Ayrıca GitHub deposu ve S3 bucket gibi tespit ettiğimiz hizmetler kaldırıldı.
Gelişen yaklaşım
2022’de Webworm’un temel özelliklerinden biri, McRat ve Trochilus gibi yerleşik arka kapılar ve uzaktan erişim truva atlarının (RAT) kullanılmasıydı. Symantec blog yazısında açıklandığı gibi, grup başlangıçta ağırlıklı olarak Asya’daki ülkeleri hedef almıştı.
2024 yılında, grubun geleneksel arka kapılardan uzaklaşarak SOCKS proxy’leri (SoftEther VPN) ve diğer ağ çözümleri gibi meşru veya yarı meşru araçları tercih etmeye başladığını gözlemledik. Bunlar Webworm’un tespit edilmesini önlemeye yardımcı olsa da arka kapılarda genellikle bulunan komut setinin tamamına sahip olmadıkları için operatörler cmd.exe veya powershell.exe gibi komut yorumlayıcılara güvenmek zorunda kalıyor.
O dönemde, grubun Asya’daki faaliyetlerini yavaşlatmaya ve odağını Avrupa ülkelerine kaydırmaya başladığını da gördük. Bu eğilim 2025 yılında da devam etti ve gözlemlediğimiz saldırılar Belçika, İtalya, Sırbistan ve Polonya’daki devlet kurumlarını hedef aldı. Aynı zamanda Webworm, Güney Afrika’ya da girerek yerel bir üniversiteyi ele geçirdi.
Bu son kampanyalarda Webworm, araç setini genişletmeye devam ederken Trochilus ve McRat’ı tamamen terk etmiş görünüyor. Yeni araçların başında iki yeni arka kapı geliyor: Discord tabanlı EchoCreep ve Microsoft Graph tabanlı GraphWorm. Grup, mevcut proxy çözümlerini, özellikle Go ile yazılmış iox (port yönlendirme ve intranet proxy aracı) ve frp (hızlı ters proxy) kullanmaya devam ederken WormFrp, ChainWorm, SmuxProxy ve WormSocket gibi özel proxy çözümlerini de ekledi.
Bu özel proxy araçları, yalnızca iletişimi şifrelemekle kalmaz, aynı zamanda bir ağın hem iç hem de dışındaki birden fazla ana bilgisayar arasında zincirlemeyi de destekler. Operatörlerin, izlerini daha iyi gizlemek ve faaliyetlerinin gizliliğini artırmak için bu araçları SoftEther VPN ile birlikte kullandıklarına inanıyoruz. Tüm Webworm proxy’leri ve VPN hizmetleri, Vultr ve IT7 Networkstarafından kontrol edilen ağ altyapısına ait bulut sunucularıdır. Proxy araçlarının sayısı ve karmaşıklığına bakıldığında, Webworm kurbanları proxy’lerini çalıştırmaya ikna ederek çok daha büyük bir gizli ağ oluşturuyor olabilir.
Discord ve Microsoft Graph API C&C iletişimi
2025 yılında Webworm, C&C iletişimi için Discord ve Microsoft Graph API’yi kötüye kullanmaya başladı. EchoCreep arka kapısını analiz ederken 400’den fazla Discord mesajını ortaya çıkarmayı başardık. Ayrıca her biri farklı bir kurbana ait olan dört benzersiz kanal bulduk. EchoCreep, dosya yüklemek, çalışma zamanı raporları göndermek ve komut almak için Discord’u kullanır. Arka kapının ağ iletişimi, özel olarak hazırlanmış HTTP istekleri kullanılarak Discord API’lerinden geçer.
C&C iletişimi için Microsoft Graph API’yi kullanan GraphWorm örneğinde, bu yazılımın özellikle yeni görevleri almak ve kurban bilgilerini yüklemek amacıyla yalnızca OneDrive uç noktalarını kullandığını tespit ettik. Her bir kurban için ayrı bir OneDrive dizini oluşturulmaktadır. GraphWorm tarafından kullanılan OneDrive örneği bulutta çalıştığı için bu arka kapı, büyük ve parçalara bölünmüş dosyaları yüklemek üzere Microsoft Graph API’nin /createUploadSession uç noktasını kullanabilmektedir.
Amazon S3 bucket
2025 kampanyalarını araştırırken Webworm’un wamanharipethe.s3.ap-south-1. amazonaws[.]com adresinde bulunan, güvenliği ihlal edilmiş bir Amazon S3 bucket’tan yapılandırmaları almak için özel proxy çözümü WormFrp’yi kullanmaya başladığını keşfettik. Amazon S3 bucket, Amazon Web Services’te bulunan genel bir bulut depolama çözümüdür; burada S3, basit depolama hizmeti anlamına gelir. Güvenliği ihlal edilen depolama alanının, whpjewellers.s3.amazonaws[.]com adresinin herkese açık – hatta muhtemelen politika yapılandırması hatalı – bir versiyonu olduğunu düşünüyoruz.
Bucket’ta depolanan dosyalara yaptığımız ilk inceleme, sanal makine ana bilgisayarlarından alınan birkaç anlık görüntüyü ortaya çıkardı; bunlardan biri, İtalya’daki bir devlet kurumuna ait bir makinenin mevcut yapılandırmasını ve aktif durumunu içeriyordu. Bu, operatörlerin kurbanın sanal makinelerini yönetmekten sorumlu ortama başarıyla sızabildikleri anlamına gelebilir. Ancak anlık görüntülerin depolandığı tek bir ana bilgisayara erişim sağlamış olmaları da mümkündür. Her iki durumda da Webworm’un bu S3 depolama alanı aracılığıyla hiçbir şeyden haberi olmayan kurbanın hizmet bedelini ödemesi karşılığında verileri sızdırabildiği açıktır.
2025 yılının Ekim ayı sonlarında, siber suçlular S3 depolama alanına SharpSecretsdump adlı başka bir yürütülebilir dosya yüklediler. Bu araç, belgelerinde de belirtildiği üzere, Impacket paketindeki kötü şöhretli secretsdump.py dosyasının işleyişini taklit ederek, kurulduğu etkilenen Windows ana bilgisayarından kimlik bilgilerini topluyor. Webworm operatörlerinin bu aracı kurbanlarına karşı kullanmak üzere S3 depolama alanına yüklediklerini varsayıyoruz.
Aralık 2025 ile Ocak 2026 arasında operatörler, servise 20 yeni dosya yükledi; bunlardan ikisi İspanya’daki bir devlet kurumundan sızdırılmıştı. Bu iki dosyadan ilki, bir XML dosyası olup, açık kaynaklı bir uzaktan bağlantı yöneticisi olan mRemoteNG tarafından kullanılan sanal ana bilgisayarların kaydedilmiş yapılandırmalarını içeriyor. İkinci dosya ise bu devlet kurumunun kullandığı bir etki alanının arkasındaki altyapıyı detaylandıran bir Microsoft Visio diyagramı.
GitHub deposu
EchoCreep’in Discord C&C altyapısını incelerken kullanıcılar, kanallar ve guildlerle ilgili Discord’un benzersiz tanımlayıcılarını elde etmeyi başardık. Ne yazık ki botun token’ına sınırlı erişimimiz olduğundan sunucunun sahipleri veya botun kendisiyle ilgili bilgileri listelemek için kullanılabilecek hiçbir API çağrısı yoktu.
Ancak Discord mesajları, Webworm tarafından kullanılan diğer araçlar ve kötü amaçlı yazılımlar için dosya depolama alanı görevi gören https://github[.]com/anjsdgasdf/WordPress GitHub deposunu ortaya çıkardı (bu araçlardan biri, yukarıda bahsedilen ele geçirilmiş Amazon S3 bucket kullanıyordu). Meşru WordPress deposunun doğrudan bir çatalı olarak, bu depo herkesin gözü önünde gizlenebilirdi. Şekil 1 , wp-admin dizinine yerleştirilmiş hazır dosyalarla birlikte bu deponun genel bir görünümünü göstermektedir.

Şekil1 . Çatallanmış WordPress deposu
İçeri sızma
Webworm’un kurbanlarını ele geçirmek için kullandığı giriş noktasını tespit edememiş olsak da grubun kurbanların web sunucularındaki dosya ve dizinleri taramak ve içlerinde güvenlik açıkları aramak için açık kaynaklı yardımcı programlar kullandığını ortaya çıkardık.
Bunu, bir kurban makinesinin 64.176.85[.]158 adresinde barındırılan bir proxy sunucusuyla iletişim kurduğunu fark ettikten sonra tespit ettik. IP adresinin incelenmesi, söz konusu açık kaynaklı yardımcı programları içeren açık bir dizinin daha önce bu adreste 80 numaralı bağlantı noktasında barındırıldığını gösterdi. Şekil 2 bu açık dizin listesine genel bir bakış sunmaktadır.

Şekil2 . Açık dizin listesi
Blog yazımızla ilgili ana dizinler nuclei/, .dirsearch/ ve .bash geçmiş dosyasıdır. Şekil 3 ‘te görüldüğü gibi, Webworm operatörleri, belirli durum kodlarını filtreleme özelliğine sahip bir web yolu tarayıcı yardımcı programı olan dirsearch ve belirli hedeflere karşı olası güvenlik açıklarını tespit etmek için kullanılan açık kaynaklı bir güvenlik açığı tarayıcısı olan nuclei’yi kullanarak web sunucularındaki dizin ve dosyalara brute force saldırısı gerçekleştirebildiler.

Şekil3 . Nuclei ve dirsearch geçmişi
Dirsearch’ün çalıştırılmasının sonuçları .dirsearch dizininde depolandı; bu sonuçlar, aracın İspanya, Macaristan, Belçika, Nijerya, Çekya ve Sırbistan gibi çeşitli ülkelerden 56 hedef üzerinde çalıştırıldığını ortaya çıkardı.
nuclei dizininde, _1.sh adlı LegalHackers komut dosyası bulundu. Bu, SquirrelMail web posta istemcisinde kimlik doğrulama sonrası uzaktan kod yürütülmesine olanak tanıyan CVE-2017-7692 güvenlik açığına yönelik bir kavram kanıtı saldırısıdır. .bash_history dizinine baktığımızda, benzer bir isimde bir komut dosyasının Sırp bir web posta hedefine karşı çalıştırıldığını keşfettik. Bu durum, grubun Sırp kurbanın kimlik bilgilerini ele geçirdiği ve bu güvenlik açığını ilk erişim aşamasında kullanmış olabileceği varsayımına yol açıyor.
Araç seti
Bu blog yazısında, Webworm’un cephaneliğine eklenen yeni unsurları ayrıntılı olarak inceleyeceğiz. Öncelikle, iki özel arka kapı programı olan EchoCreep ve GraphWorm’a bakacağız. Ardından, grubun 2025 kampanyalarında kullandığı özel proxy çözümleri olan WormFrp, ChainWorm, SmuxProxy ve WormSocket’i ele alacağız.
EchoCreep
EchoCreep, Go dilinde yazılmış, Discord’u C&C sunucusu olarak kullanan yeni bir arka kapıdır ve mesajlar 21 Mart 2024’ten itibaren başlamıştır. Tablo 1 ‘de gösterilen komutları yürütebilir.
Tablo1 . EchoCreep komutları
| Command | Arguments | Description |
| upload | File path | Uploads a file, as an attachment, to Discord from the specified file system path. |
| download | Source (URL) and destination (path) | Downloads a file from the provided source URL to the file system path destination. |
| shell | String | Executes the string within a cmd.exe shell. |
| sleep | Integer (seconds) | Sleeps for the specified number of seconds before providing a success report back to the Discord server. |
Arka kapının kurbanın makinesine nasıl girdiğini doğrulayamadık ancak kalıcılık sadece saldırı sonrası C&C komutları yoluyla elde edilmiş gibi görünüyor.
EchoCreep’in tüm ağ iletişimi, özel olarak hazırlanmış HTTP istekleri kullanılarak Discord API uç noktalarından geçirilir. Komutları ayrıştırmak için arka kapının önce bunları base64 kullanarak kodunu çözmesi, ardından AES-CBC-128 kullanarak şifresini çözmesi gerekir. Şekil 4, her ikisi de şifresi çözüldükten sonra bir komut ve yanıt örneğini göstermektedir.
| {“guild”: “lol”, “channel_id”: 1220298277849796651, “channel”: “fire”, “content”: “shell whoami”, “time”: “2025-04-14T08:35:41.751000+00:00”, “author_id”: 1219910976007045171, “author”: “jonson889912”} |
Şekil4 . EchoCreep komutu ve yanıtı
Şifresini çözdüğümüz 433 Discord mesajının hiçbirinde, bu kişiler ESET müşterisi olmadıkları için tam olarak kimlerin etkilendiği belli değildi. Ancak en azından kanal adlarına dayanarak EchoCreep tarafından ele geçirilen kurbanların sayısını belirleyebildik. Bu adların ya kurbanın IP adresi ya da IP adresi ile kurban makinesinin ana bilgisayar adının birleşimi olduğunu keşfettik. Bu adlandırma kuralını kullanan dört benzersiz kanal bulduğumuzdan dört kurban olduğunu düşünüyoruz.
EchoCreep ilk çalıştırıldığında yeni bir kanal oluşturmaya çalışmaz ancak halihazırda var olan bir kanala “Up Success” (Başarılı) mesajı gönderir (bkz. Şekil 5 ve Şekil 6 ). Bu, kanalların arka kapının çalıştırılmasından önce oluşturulduğunu gösterir ve operatörlerin ya hedefleri önceden bildiklerini ya da ilk erişimin ardından gerekli bilgileri sızdırdıklarını düşündürür.

Şekil5 . EchoCreep Discord Başarılı mesajı

Şekil6 . EchoCreep arka kapısı Up Success mesajı
21 Mart 2024 ile 31 Mart 2025 tarihleri arasında gönderilen ilk mesajlar, operatör test komutları gibi görünüyor. Şekil 7, tehdit aktörlerinin burada yerel IP yapılandırmalarıyla ilgili bazı bilgiler bıraktığını gösteriyor.
| Ethernet adapter Ethernet0: Connection-specific DNS Suffix . : lan Link-local IPv6 Address . . . . . : fe80::2111:d79b:b1ba:1f4a%10 IPv4 Address. . . . . . . . . . . : 192.168.8.174 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.8.1 |
Şekil7 . Windows ipconfig çıktısı
Şekil 8‘de görüldüğü gibi, önceki mesajların çoğunda, muhtemelen doğru iletişimi belirlemek için bir test olarak kullanılan geçersiz değerler yer alıyordu.

Şekil8 . Gereksiz komutlar
Kısa bir süre sonra, Şekil 9‘da görüldüğü gibi, gelişmiş komutların geliştirildiğini gösteren download işlemlerinin gerçekleştiğini görmeye başladık.

Şekil9 . frp indirme
Ayrıca Şekil 10‘da, Webworm’un daha sonra kurbanlara karşı kullanacağı kalıcılık mekanizmasının erken uyarlamaları olabilecek test faaliyetleri görüyoruz. İlginç olan bir diğer nokta da sonunda kullanılan shell komutu yerine run komutunu çalıştırmasıdır; bu da bunların erken testler olduğu yönündeki tespitimizi desteklemektedir.

Şekil10 . Test VBScript
İlk gerçek saldırı, 9 Nisan 2025’te, yeni bir kanal adıyla ilişkili günlüklerde yeni “Up Success” mesajlarının görünmesiyle gerçekleşti. İlk saldırının hemen ardından, tehdit aktörü shell komutlarını kullanarak curl’ü çalıştırıp dosyaları indirdi.
GraphWorm
GraphWorm, Webworm tarafından kullanılan bir başka yeni arka kapıdır. Kurban makineye her giriş yaptığında kendini çalıştırır. GraphWorm, komuta ve kontrol (C&C) iletişimi için Microsoft Graph API’sini kullanır; bu da Webworm’un kurbanları ele geçirmek için Microsoft Graph kiracısı içinde bilgi depolayan yeni bir altyapıya sahip olduğunu göstermektedir. Gözlemlerimize göre, bu arka kapı komutları almak ve kurban verilerini göndermek için yalnızca OneDrive’ı kullanmaktadır. Bu iletişimlerde yer alan veriler, önce OpenSSL EVP kütüphane çağrıları kullanılarak AES-256-CBC ile şifrelenir, ardından base64 ile kodlanır. GraphWorm ayrıca proxy ayarlarının yapılandırılmasına da izin verir, böylece tüm trafiği belirtilen proxy üzerinden tüneller.
İlk çalıştırıldığında, arka kapı, WMI çerçevesini kullanarak ağ bağdaştırıcısının IP adresini, işlemci kimliğini ve fiziksel cihazın seri numarasını birleştirerek benzersiz bir kurban kimliği oluşturur.
Benzersiz kimlik, kiracı içinde yeni bir OneDrive klasörü oluşturmak veya mevcut bir klasörü yeniden adlandırmak için kullanılır. Her klasör, bir saldırıya özgüdür ve her kurbanın altında belirli alt klasörler içerir. /files, /result ve /job adlı üç alt klasör, sırasıyla dosyaları, kurban makinesinde yürütülen komutların sonuçlarını ve operatörler tarafından yürütülmek üzere kuyruğa alınan işleri depolamak için kullanılır.
Klasör başarıyla oluşturulduktan sonra, arka kapı kurban makine hakkında bilgi toplar ve bu, Şekil 11 adresinde görülen JSON nesnesiyle sonuçlanır.
| { “Host Name”: “<computer_name>”, “IP Address”: “<ip>”, “MAC Address”: “<mac>”, “Operating System”: “<os>”, “Privilege”: “<Admin|Regular User>”, “Time Zone”: “<UTC-XXXX>”, “User Name”: “<username>”, “Workgroup”: “<workgroup”, “publicKey”: “<key>”} |
Şekil11 . Toplanan bilgiler
GraphWorm’un OneDrive aracılığıyla aldığı komutlar, keşfedildikleri sırayla Tablo 2‘de açıklanmaktadır.
Tablo2 . GraphWorm komutları
| Command | Arguments | Description |
| keyExchange | String <adminPublicKey> | This value is set in memory and unfortunately its purpose is not easily identifiable. It could be used to set a public key within the application to gain reverse shell access. |
| sessionKey | String <sessionKey>String <keyId> | Another set of values set within memory and not evident how they are used. Believed to be an RSA private key and AES key to be updated in memory and used for cryptographic functions. |
| kill | N/A | Stops the execution of the backdoor. |
| shell | N/A | Spawns a new instance of cmd.exe. |
| exec | File path | Executes a new process using CreateProcessW. |
| upload | String <onedrive_path>String <agent_path> | Downloads a file based on the OneDrive and agent path. The <onedrive_path> is believed to be the full path as it appears in OneDrive, resulting in the format of /me/drive/root:/<onedrive_path>.The <agent_path> is the full file path as it appears on disk. |
| sleep | Integer | Updates sleep duration. |
| poll | Integer | Updates sleep duration for an undetermined reason. Possibly because the development of commands is still ongoing. |
| rest | Integer | Sleep for a duration of time. |
| upgrade | JSON text | The JSON text contains configuration settings to update fields in memory, followed by writing of these changes to the config.dat file on disk. |
| download | String <onedrive_path>String <file_path> | Uploads the file from the provided <file_path> to the path desired in OneDrive. <onedrive_path> is believed to be in the format of /me/drive/root:/<uniqueid>/<filename>/:content. |
| heartbeat | Integer <min> Integer <max> | Used to create a random delay period between the min and max of how long to wait to update alive.txt. |
Araştırmamız sırasında, shell komutunun tamamlanmasının ardından sonuçların beacon_shell_output.txt dosyasına yazıldığını ve geçici bir dizine kaydedildiğini fark ettik. Bu büyük kabuk komutu çıktılarını yüklemek için operatörler, arka kapı OneDrive’ın bir bulut örneğiyle çalıştığı için büyük olasılıkla Microsoft Graph API uç noktası /createUploadSession’ıkullanmıştır.
WormFrp
WormFrp, Webworm’un da kullandığı mevcut hızlı ters proxy (frp) yardımcı programından esinlenerek geliştirilmiş bir proxy tünel açma aracıdır. Saldırganlar, aracın yapılandırma değerlerini ele geçirilmiş bir Amazon S3 bucket olan wamanharipethe.s3.ap-south-1.amazonaws[.]com’dan alabilmesi için frp’yi özel işlevlerle genişletmiştir.
Ele geçirilmiş S3 bucket, ECB modu kullanılarak AES şifrelenmiş .txt uzantılı birkaç dosya içerir. Her WormFrp örneği, benzersiz bir AES anahtarıyla sabit kodlanmıştır ve S3 bucket’tan benzersiz bir dosya alır. Yapılandırma dosyası, tünelin nereden bağlandığını belirlemek için operatöre bilgi göndermek üzere WormFrp’nin çalışması sırasında güncellenir.
WormFrp’nin çalışması için bir komut satırı argümanı gerekir. S3 bucket yapılandırmasını aldıktan sonra, WormFrp bir frp sunucusuna giriş yapmaya çalışır ve bir ters proxy ile TCP SOCKS5 proxy’si açar. Gözlemlenen örnekler temelinde, kullanıcı adı ve parola her zaman rastgele oluşturulur.
WormFrp’nin her bir örneği, bir frp sunucusuna genel IP adresi üzerinden bağlanır. Ters proxy yapılandırıldıktan sonra, kurbanın makinesinde ek ağ etkinliği görülebilir.
ChainWorm
ChainWorm, Webworm operatörleri tarafından kullanılan bir başka özel proxy aracıdır. ChainWorm’un ana işlevi, dağıtıldığı makinede bir bağlantı noktası açarak Webworm’un proxy ağ altyapısını genişletmeye yardımcı olmak gibi görünmektedir. Webworm, bu aracı kullanarak, özel olarak hazırlanmış verilerin başka bir uzak sisteme bağlanan bağlantı noktası üzerinden gönderildiği ve trafiğin belirsiz sayıda atlama ile bir sonraki hedefe iletildiği bir proxy zinciri oluşturabilir.
Genellikle, etkilenen ana bilgisayarda açılan bağlantı noktası, araçta sabit olarak kodlanmıştır. Ardından, sabit olarak kodlanan bağlantı noktasında TCP bağlantıları açılır ve doğrudan bir IP adresi veya ana bilgisayar adı ile bağlantı noktası içeren ek giden bağlantılara yol açacak tüm iletileri alır.
Ana bilgisayar adı ve bağlantı noktasının birleşimi kullanılarak, zincirdeki bir sonraki atlamaya bağlantı kurulur. Kaynak ve hedef arasında bağlantılar kurulduğunda, geçen tüm veriler artık zincirdeki bir sonraki yukarı akış atlamasına iletilir. Herhangi bir noktada bir istisna olursa yeniden bağlanmaya çalışmadan önce kaynağa 0x05 01 00 01 00 00 00 00 00 00 bayt dizisiyle bildirimde bulunulur.
SmuxProxy
SmuxProxy, bir bağlantı noktası yönlendirme ve intranet proxy aracı olan iox’a dayalı bir yardımcı programdır. Mevcut iox işlevselliğinin yanı sıra SmuxProxy, sabit kodlanmış bir sunucu IP adresi ve bağlantı noktasına izin veren küçük özelleştirmeler içerir, bu da operatörlerin programı çalıştırmasını ve yürütmesini kolaylaştırır. Ayrıca şifreli iletişimler için rastgele bir anahtar ve başlatma vektörü oluşturabilir.
WormSocket
Webworm’un yeni özel proxy’lerinden sonuncusu, web istekleri için bir proxy kurmak üzere socket.io çalıştıran yapılandırılmış sunucuları kullanan bir araç olan WormSocket’tir. WormSocket, son derece yapılandırılabilir ve ölçeklenebilir bir proxy ağı sağlar ve belirli düğümlerle herhangi bir zamanda etkileşim kurulmasına olanak tanır.
Yapılandırması hem sabit kodlanmış değerlere hem de komut satırı argümanlarına dayanır. WormSocket, WebProxy nesnesi oluşturmak için yapılandırma olarak kullanılan ve temel kimlik doğrulama içeren bir URI’nin ardından gelen isteğe bağlı –proxykomut satırı argümanını kabul eder. Proxy daha sonra bir web soketi bağlantısı üzerinde kullanılır. Bu web soketinin yapılandırmaları WormSocket’ta sabit kodlanmıştır.
WormSocket başlatıldığında, önce ws, wss, http ve https şemalarını kullanarak bağlantı denemeleri yaparak yapılandırılmış IP adresine ve bağlantı noktasına bağlanır. Başarılı bir bağlantı kurulduğunda, yeni mesajları almak ve göndermek için eş zamansız bir görev başlatılır. Dört olası mesaj türü vardır; bunlar Tablo 3 adresinde ayrıntılı olarak açıklanmıştır.
Tablo3 . WormSocket mesaj türleri
| Type | Message class | Values | Description |
| 1 | InitiateForwarderClientReq | String <ForwardedClientId> | Uses the IpAddress field to perform a DNS lookup to obtain the host address of a possible domain passed through, the result of which is used to create a new TCP client with the Port. Once the client establishes connectivity, it is stored within a dictionary of ForwardedClientId and TcpClient pairs.In addition, a new InitiateForwarderClientRepmessage object is created with the same information used to build the TCP client, and sent with the messages read through the client and stored in a ConcurrentQueuefor later use. |
| String <IpAddress> | |||
| Integer <Port> | |||
| 2 | InitiateForwarderClientRep | String <ForwarderClientId> | ForwarderClientId is used to look up an already configured TCP client created by InitiateForwarderClientReqin the client dictionary, all other values appear to not be in use. Once the TCP client is retrieved, new messages are read and stored in a ConcurrentQueue for later use. |
| String <BindAddress> | |||
| Integer <BindPort> | |||
| Integer <AddressType> | |||
| Integer <Reason> | |||
| 3 | SendDataMessage | String <ForwarderClientId> | Sends the Data through base64 encoding followed by the TCP client associated with ForwarderClientId. |
| Bytes[] <Data> | |||
| 4 | CheckInMessage | String <MessengerId> | Assigns MessengerId to the internal MessengerId, which does not appear to be used for anything. |
Sonuç
Webworm, en azından 2022 yılından beri faaliyet gösteren ve Çin ile bağlantılı bir APT grubudur. Grup, ağırlıklı olarak arka kapılar ile açık kaynaklı ve özel proxy yardımcı programlarının birleşiminden oluşan, sürekli gelişen bir araç seti kullanmaktadır. Gözlemlediğimiz 2025 kampanyalarında Webworm, Discord tabanlı (EchoCreep) ve Microsoft Graph API tabanlı (GraphWorm) arka kapıları kullanmaya başlamıştır. Grup ayrıca GitHub depolarında dosya barındırmaya devam etmektedir ve gelecekte de bunu sürdüreceğini varsayabiliriz.
Analizimiz sayesinde, açık kaynaklı bir güvenlik açığı tarayıcısı kullanarak grubun potansiyel ilk erişim tekniklerine ilişkin bir fikir veren bir sunucudan yürütülen komutları kurtarmayı başardık ve bazı hedeflerini de tespit ettik.
Webworm’un ister ilk erişim noktası ister saldırı sonrası olsun, kurbanlarını ele geçirmek için yeni araçlar kullanmaya devam edecek çok aktif bir APT grubu olduğu açıktır.
IOC’LER
Kapsamlı bir tehlike göstergeleri (IoC) listesi ve örnekler GitHub depomuzda bulunabilir.
Dosyalar
| SHA-1 | Filename | Detection | Description |
| CB4E50433336707381429707F59C3CBE8D497D98 | SearchApp.exe | WinGo/Agent.ZK | EchoCreep backdoor using Discord for C&C. |
| 1DF40A4A31B30B62EC33DC6FECC2C4408302ADC7 | ssh.exe | WinGo/HackTool.Proxy.AE | WormFrp proxy tool. |
| 7DCFE9EE25841DFD58D3D6871BF867FE32141DFB | svc.exe | MSIL/HackTool.Proxy.H | ChainWorm proxy tool. |
| 77F1970D620216C5FFF4E14A6CCC13FCCC267217 | C2OverOneDrive_v0316.exe | Win32/Agent.VWD | GraphWorm backdoor using the Microsoft Graph API for C&C. |
| 948159A7FC2E688386864BEA59FD40DFFC4B24D6 | MessengerClient.exe | MSIL/HackTool.Proxy.I | WormSocket proxy tool. |
| A3C077BDF8898E612CCD65BC82E7960834ADB2A9 | dsocks.exe | WinGo/Riskware.Iox.L | SmuxProxy, a custom iox with hardcoded IP. |
Network
| IP | Domain | Hosting provider | First seen | Details |
| N/A | wamanharipethe.s3.ap-south-1.amazonaws[.]com | N/A | 2025-04-14 | Compromised S3 for frp configurations and data exfiltration. |
| 45.77.13[.]67 | N/A | Vultr Holdings, LLC | 2025-04-07 | WormSocket web socket server. |
| 64.176.85[.]158 | N/A | The Constant Company, LLC | 2025-06-28 | SmuxProxy server. |
| 104.243.23[.]43 | N/A | IT7 Networks Inc | 2025-04-09 | SmuxProxy server. |
| 108.61.200[.]151 | N/A | Vultr Holdings, LLC | 2025-04-10 | WormFrp proxy server. |
| 144.168.60[.]233 | N/A | IT7 Networks Inc | 2025-06-30 | Reverse shell IP discovered on SmuxProxy server. |
MITRE ATT&CK teknikleri
Bu tablo, MITRE ATT&CK çerçevesinin 19. sürümü kullanılarak oluşturulmuştur.
| Tactic | ID | Name | Description |
| Reconnaissance | T1595.002 | Active Scanning: Vulnerability Scanning | Webworm utilized the open-source vulnerability scanner nuclei against targets. |
| T1595.003 | Active Scanning: Wordlist Scanning | Webworm used dirsearch, which leverages wordlists, to perform web directory scanning on targets. | |
| Resource Development | T1588.006 | Obtain Capabilities: Vulnerabilities | Webworm used publicly available exploit code for post-authentication remote code execution. |
| T1583.004 | Acquire Infrastructure: Server | Servers for WormFrp, SmuxProxy, and WormSocket are hosted on cloud services operated on Vultr and IT7 Network ASNs. | |
| T1583.003 | Acquire Infrastructure: Virtual Private Server | Webworm makes use of SoftEther VPN servers that have been seen hosted on Vultr cloud services. | |
| T1584.006 | Compromise Infrastructure: Web Services | Webworm has been seen compromising S3 buckets as well as using tools like nuclei to find footholds. | |
| T1608.002 | Stage Capabilities: Upload Tool | Webworm staged tools in its GitHub repo for direct download onto compromised systems. | |
| Execution | T1059.003 | Command and Scripting Interpreter: Windows Command Shell | EchoCreep and GraphWorm both use the Windows command line to execute operator commands. |
| T1053.005 | Scheduled Task/Job: Scheduled Task | EchoCreep is executed under the custom-created MicrosoftSSHUpdate scheduled task. | |
| Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | GraphWorm persists by making updates to registry Run keys. |
| Defense Impairment | T1070.004 | Indicator Removal: File Deletion | GraphWorm cleans up a created beacon file after successful upload. |
| T1112 | Modify Registry | GraphWorm makes modifications to registry Run keys for persistence. | |
| T1027.013 | Obfuscated Files or Information: Encrypted/Encoded File | GraphWorm and EchoCreep use encryption and encoding techniques to obfuscate data. | |
| T1550.001 | Use Alternate Authentication Material: Application Access Token | GraphWorm and EchoCreep use API keys to communicate with the C&C infrastructure. | |
| T1078.004 | Valid Accounts: Cloud Accounts | GraphWorm uses a valid cloud account to access Microsoft Graph APIs. | |
| T1070.006 | Indicator Removal: Timestomp | EchoCreep contains a modified timestamp attribute. | |
| Lateral Movement | T1021.007 | Remote Services: Cloud Services | Webworm makes use of a compromised S3 bucket to use as a file staging zone. |
| Collection | T1005 | Data from Local System | Both EchoCreep and GraphWorm can collect data from the local system. |
| T1074.001 | Data Staged: Local Data Staging | GraphWorm stages a beacon file locally before uploading to the C&C. | |
| T1074.002 | Data Staged: Remote Data Staging | GraphWorm stages files and tasks within OneDrive via the Microsoft Graph API. | |
| Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | EchoCreep, GraphWorm, and WormSocket make use of HTTP and the WebSocket protocol. |
| T1132.001 | Data Encoding: Standard Encoding | EchoCreep, GraphWorm, and WormSocket make use of base64 encoding. | |
| T1573.002 | Encrypted Channel: Asymmetric Cryptography | EchoCreep, GraphWorm, WormSocket, and WormFrp use AES in some capacity. | |
| T1090.003 | Proxy: Multi-hop Proxy | WormSocket and ChainWorm create multiple proxy hops. | |
| T1090.002 | Proxy: External Proxy | WormFrp, ChainWorm, WormSocket, SmuxProxy, and GraphWorm have the capability to connect to external proxies. | |
| T1090.001 | Proxy: Internal Proxy | ChainWorm and WormSocket can create internal proxies. | |
| T1102.002 | Web Service: Bidirectional Communication | EchoCreep and GraphWorm use Discord and the Microsoft Graph API for C&C infrastructure. | |
| Exfiltration | T1041 | Exfiltration Over C2 Channel | EchoCreep and GraphWorm exfiltrate data to their respective C&C infrastructure. |
| T1567.002 | Exfiltration Over Web Service: Exfiltration to Cloud Storage | GraphWorm exfiltrates data to OneDrive via the Microsoft Graph API. |