محققای Palo Alto Networks یه بدافزاری رو کشف کردن که در زبان Golang توسعه داده شده و سرورهای وب ، بخصوص اونایی که سرویس های phpMyAdmin و MySQL و FTP و Postgres روشون در حال اجراست ، آلوده میکنه.
زبان برنامه نویسی Go ، یه زبان برنامه نویسی جدیدی هستش که در بین بدافزار نویسها محبوب شده. این زبان برای توسعه بدافزارهای مختلف از جمله باج افزارها ، stealerها ، RATها قابلیت های جالبی رو ارائه میده. همچنین بات نت های مبتنی بر این زبان مورد توجه بازیگران تهدید قرار گرفته.
بدافزار GoBruteforcer یه بلاک CIDR رو برای حمله انتخاب میکنه و تمام IP های موجود در اون رو اسکن میکنه. توسعه دهنده با این ترفند امکان اسکن طیف وسیعی از IPها رو در یه شبکه داره.
وقتی یه میزبان پیدا شد، بدافزار از طریق brute force ، سعی میکنه به سرور دسترسی پیدا کنه. اگه دسترسی موفقیت آمیز باشه یه IRC bot یا وب شل PHP روش نصب میکنه.
شکل زیر نمای کلی این بات نت رو مشخص میکنه :
شکل زیر هم نشون دهنده فایل cache_init هستش که همون بدافزار GoBruteforcer هستش :
با توجه به اینکه سرورهای *nix برای میزبانی محبوب هستن، این بدافزار هم عمدتا این سرورهارو هدف قرار میده و روی معماریهای x86 و x64 و ARM قابل اجراست.
بدافزار با upx پک شده و بعد از اینکه اونو آنپک کردن به یه ماژول مولتی اسکن رسیدن:
همونطور که قبلا گفته شد، روی هر IP برای سرویس های phpMyAdmin و MySQL و FTP و Postgres شروع به اسکن میکنه که شکل زیر نشون دهنده این موضوع هستش:
در داخل هر ماژول هم اول چک میکنه که آیا پورت مربوط به هر سرویس بازه یا نه. برای این منظور هم از ماژول اسکن پورت استفاده میکنه :
سرویس PhpMyadmin
برای سرویس PhpMyadmin ابتدا بررسی میکنه که پورت 80 بازه یا نه، اگه باز بود بدافزار از طریق brute force اقدام به لاگین و دسترسی به سرور میکنه. این کار رو هم از طریق یسری اعتبارنامه هاردکد شده داخل خودش انجام میده.
اگه ورود موفقیت آمیز باشه، بدافزار یه IRC bot رو در سرور مستقر و اجرا میکنه. در شکل زیر فایلهای fb5 و ab5 همون IRC bot هستن که برای معماری x86_64 و ARM کامپایل شدن.
اگه همه چیز اوکی باشه، بدافزار از طریق IRC bot اقدام به ارتباط با C2 میکنه :
IRC bot همچنین برای پرسیست خودش در corn ثبت میکنه :
سرویس های MySQL و Postgres
برای سرویس های MySQL و Postgres ، در ابتدا بررسی میکنه که پورتهای 3306 و 5432 بازه یا نه. اگه موردی پیدا کرد که پورتش باز بود، با نام کاربری و پسورد خاصی دیتابیس هاست رو پینگ میکنه و بعدش ماژول PostResult رو اجرا میکنه.
سرویس FTP :
برای سرویس FTP هم ابدا بررسی میکنه که پورت 21 بازه یا نه و اگه موردی رو پیدا کنه ،با استفاده از کتابخونه goftp که یه پکیج کلاینت FTP برای Go هستش، اقدام به احراز هویت میکنه.
اگه موردی اوکی بشه، ماژول PostResult رو اجرا میکنه.
ماژول PostResult و وب شل:
این ماژول PostResult که بعد از هربار اسکن سرویس فراخوانی میشه، داخلش یه لینک هست :
محققا در سرورهای قربانی ها یه وب شل با نام x هم مشاهده کردن (http[:]//victim-ip/x) که شبیه فایل pst.php در http[:]//5.253.[.]84[.]159 هستش. این وب شل قابلیت reverse shell و bind shell داره.
همچنین وب شل قابلیت ایجاد Packet crafting رو داره که به مهاجم این امکان رو میده تا شناخت خوبی از شبکه بدست بیاره :
محققا یه نمونه قدیمی از این بدافزار رو هم پیدا کردن که فقط phpMyAdmin رو هدف قرار میداده. نمونه چند ماه پیش در VT آپلود شده که همونطور که در شکل زیر میبینید ، هیچ آنتی ویروسی اونو شناسایی نمیکنه. این موارد نشون دهنده اینه که احتمالا بدافزار همچنان در حال توسعه و رشد هستش.
نمونه بدافزار :
نسخه قدیمی این بدافزار میتونید از اینجا دانلود کنید.
IoCهای گزارش :
Hashes
de7994277a81cf48f575f7245ec782c82452bb928a55c7fae11c2702cc308b8b | Web shell |
602129f00bb002f07db07affa78d46f67bd0b2c8fb0867ea2da5fc3e73dd2665 | Web shell |
acc705210814ff5156957c028a8d6544deaca0555156504087fdc61f015d6834 | Older version of GoBruteforcer |
426b573363277554c7c8a04da524ddbf57c5ff570ea23017bdc25d0c7fd80218 | IRC bot(x86) |
726ccd223a1cfb60fc6c3b48ea3dbf057da918efac5acf620cd026ee38fb0044 | IRC bot(ARM) |
526767fbb26c911601371745d603885b75deabcc18261ed2d5a509d58f95d28e | GoBruteforcer (x86_64) |
dd3555025957cd51cd048d920027a0ff2d5501bc85792529217d54086e9351c2 | GoBruteforcer (x86_64) |
df7dc0fe7e90a2414ac188c55d06ad3882cfc7394869c9ffa549fb1ddb304919 | GoBruteforcer (x86_64) |
ebe11121aafdac5d8f2eecba710ba85efa31617a5eb825ba2e89e23379b26b84 | GoBruteforcer (x86_64) |
5548935e7c6cf3b38240a0579cac36906e9883a1ec5e85335609e9e2062588c5 | GoBruteforcer ARM(64-bit) |
5627b138bc857081d2251edd7eb3b68cbd58dfff2f51b7cd34c893fffff2cfab | GoBruteforcer ARM(64-bit) |
5c1d3fb43e9e35b835e62e05a7b97ed66ab132eab35bfc18ce543e8f58ccf5e2 | GoBruteforcer ARM(32-bit) |
7c27ac0daba19de227fcc467abfcdefa99426c768a3601b1b181e9741717665b | GoBruteforcer (x86) |
URL and IP
- 5.253[.]84[.]159/x
- fi[.]warmachine[.]su