ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه

پدې پوسټ کې به موږ تاسو ته ووایو چې څنګه سایبر ګروپ OceanLotus (APT32 او APT-C-00) پدې وروستیو کې په عامه توګه شتون لرونکي کارونې کارولې. CVE-2017-11882، په مایکروسافټ دفتر کې د حافظې فساد زیانونه ، او څنګه د ډلې مالویر د کومې نښې پریښودو پرته په جوړ شوي سیسټمونو کې دوام ترلاسه کوي. بیا، موږ به تشریح کړو چې څنګه، د 2019 له پیل راهیسې، ډله د کوډ چلولو لپاره د ځان استخراج کولو آرشیف کاروي.

OceanLotus په سایبر جاسوسۍ کې تخصص لري، د لومړیتوب هدفونه په سویل ختیځ آسیا کې هیوادونه دي. برید کوونکي جعلي اسناد جوړوي چې د احتمالي قربانیانو پام ځانته راجلبوي ترڅو دوی قانع کړي چې د کور دننه اعدام کړي، او همدارنګه د وسایلو په پراختیا کار کوي. د شاتو د جوړولو لپاره کارول شوي میتودونه په بریدونو کې توپیر لري، د "دوه ځله توسیع" فایلونو، د ځان استخراج کولو آرشیفونو، د میکرو سره اسناد، پیژندل شوي کارونې پورې.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه

د مایکروسافټ مساواتو مدیر کې د استحصال کارول

د 2018 په مینځ کې، OceanLotus د CVE-2017-11882 زیانونو څخه ګټه پورته کولو کمپاین ترسره کړ. د سایبر ګروپ یو له ناوړه اسنادو څخه د 360 ګواښ استخباراتو مرکز متخصصینو لخوا تحلیل شوی.په چینایي کې څیړنه)، د استحصال تفصیلي توضیح په شمول. لاندې پوسټ د داسې ناوړه سند یوه عمومي کتنه لري.

لومړی پړاو

سند FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) هغه ته ورته دی چې پورته مطالعه کې یادونه شوې. دا په زړه پوري ده ځکه چې دا د کمبوډیا سیاست سره علاقه لرونکي کاروونکو ته هدف دی (CNRP - د کمبوډیا ملي ریسکیو ګوند ، د 2017 په پای کې منحل شوی). د .doc توسیع سره سره، سند د RTF بڼه کې دی (لاندې انځور وګورئ)، د کثافاتو کوډ لري، او هم تحریف شوی.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 1. "کثافات" په RTF کې

که څه هم دلته خراب شوي عناصر شتون لري، Word دا RTF فایل په بریالیتوب سره خلاصوي. لکه څنګه چې تاسو په 2 شکل کې لیدلی شئ، په آفسیټ 0xC00 کې د EQNOLEFILEHDR جوړښت شتون لري، وروسته د MTEF سرلیک، او بیا د فونټ لپاره د MTEF ننوتل (شکل 3).

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 2. د FONT د ننوتلو ارزښتونه

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
انځور 3. د FONT ثبتولو بڼه

په ساحه کې احتمالي جریان نوم، ځکه چې د کاپي کولو دمخه د هغې اندازه نه چک کیږي. یو نوم چې ډیر اوږد وي د زیان مننې لامل کیږي. لکه څنګه چې تاسو د RTF فایل له مینځپانګو څخه لیدلی شئ (په 0 شکل کې 26xC2 آفسیټ) ، بفر د شیل کوډ سره ډک شوی او د ډمي کمانډ لخوا تعقیب شوی (0x90) او د راستنیدو پته 0x402114. پته د ډیالوګ عنصر دی EQNEDT32.exe، لارښوونې په ګوته کوي RET. دا د EIP لامل کیږي چې د ساحې پیل ته اشاره وکړي نومشیل کوډ لري.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 4. د شیل کوډ د کارولو پیل

پته 0x45BD3C یو متغیر ذخیره کوي چې تر هغه وخته پورې چې دا اوسني بار شوي جوړښت ته اشاره کوي تر هغه وخته پورې بې برخې کیږي MTEFData. د شیل کوډ پاتې برخه دلته ده.

د شیل کوډ هدف په خلاص سند کې د شیل کوډ دوهمه برخه پلي کول دي. اصلي شیل کوډ لومړی هڅه کوي چې د خلاص سند فایل توضیحات ومومي د سیسټم ټولو توضیحاتو په تکرارولو سره (NtQuerySystemInformation د استدلال سره SystemExtendedHandleInformation) او ګوري چې ایا دوی سره سمون لري PID تشریح کونکی او PID پروسه WinWord او ایا سند د لاسرسي ماسک سره خلاص شوی و - 0x12019F.

د دې تصدیق کولو لپاره چې سم لاسوند موندل شوی (او هینډل بل خلاص سند ته نه دی) ، د فایل مینځپانګه د فنکشن په کارولو سره ښودل کیږي CreateFileMapping، او شیل کوډ ګوري چې ایا د سند وروستي څلور بایټونه سره سمون لري "yyyy"(د هګۍ د ښکار طریقه). یوځل چې میچ وموندل شي ، سند یو لنډمهاله فولډر ته کاپي کیږي (GetTempPath) هغه څنګه ole.dll. بیا د سند وروستي 12 بایټ لوستل کیږي.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 5. د سند مارکر پای

د مارکرانو ترمنځ د 32-bit ارزښت AABBCCDD и yyyy د راتلونکي شیل کوډ آف سیٹ دی. دا د فنکشن په کارولو سره ویل کیږي CreateThread. ورته شیل کوډ استخراج کړی چې دمخه د OceanLotus ډلې لخوا کارول شوی و. د Python ایمولیشن سکریپټ، کوم چې موږ د مارچ په 2018 کې خپور کړ ، لاهم د دوهم مرحلې ډمپ لپاره کار کوي.

دوهم پړاو

د اجزاو لرې کول

د فایل او لارښود نومونه په متحرک ډول غوره شوي. کوډ په تصادفي ډول د اجرا وړ یا DLL فایل نوم غوره کوي C:Windowssystem32. دا بیا خپلو سرچینو ته غوښتنه کوي او ساحه بیرته ترلاسه کوي FileDescription د فولډر نوم په توګه کارولو لپاره. که دا کار ونکړي، کوډ په تصادفي ډول د لارښودونو څخه د فولډر نوم غوره کوي %ProgramFiles% او یا C:Windows (د GetWindowsDirectoryW څخه). دا د داسې نوم کارولو څخه ډډه کوي چې ممکن د موجوده فایلونو سره ټکر وکړي او ډاډ ترلاسه کړي چې دا لاندې ټکي نلري: windows, Microsoft, desktop, system, system32 او یا syswow64. که چیرې لارښود مخکې له مخکې شتون ولري، "NLS_{6 حروف}" د نوم سره ضمیمه کیږي.

د منابعو د 0x102 تحلیل کیږي او فایلونه ډمپ کیږي %ProgramFiles% او یا %AppData%، په تصادفي ډول ټاکل شوي فولډر ته. د جوړولو وخت بدل شوی ترڅو ورته ارزښتونه ولري kernel32.dll.

د مثال په توګه، دلته د فایلونو فولډر او لیست دی چې د اجرا وړ انتخاب په واسطه رامینځته شوی C:Windowssystem32TCPSVCS.exe د معلوماتو سرچینې په توګه.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 6. د مختلفو برخو استخراج

د سرچینو جوړښت 0x102 په ډراپر کې خورا پیچلی دی. په لنډه توګه، دا لري:
- د دوتنې نومونه
- د فایل اندازه او مینځپانګه
- د کمپریشن بڼه (COMPRESSION_FORMAT_LZNT1، د فنکشن لخوا کارول کیږي RtlDecompressBuffer)

لومړی فایل د دې په څیر بیا تنظیم شوی TCPSVCS.exe، کوم چې مشروع دی AcroTranscoder.exe (په وینا د FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

تاسو شاید لیدلي وي چې ځینې DLL فایلونه د 11 MB څخه لوی دي. دا ځکه چې د تصادفي معلوماتو لوی متضاد بفر د اجرا وړ فایل دننه ځای په ځای شوی. دا ممکنه ده چې دا د ځینې امنیتي محصولاتو لخوا د کشف څخه مخنیوي لپاره یوه لاره وي.

د دوام ډاډ

د منابعو د 0x101 په ډراپر کې دوه 32-bit انټیجرونه شامل دي چې مشخص کوي چې څنګه دوام باید چمتو شي. د لومړي ارزښت مشخص کوي چې څنګه مالویر به د مدیر حقونو پرته دوام وکړي.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
جدول 1. د اداری میکانیزم پرته د مدیر حقونه

د دوهم عدد ارزښت مشخص کوي چې څنګه مالویر باید دوام ومومي کله چې د مدیر حقونو سره چلیږي.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
جدول 2. د دوام میکانیزم د مدیر حقونو سره

د خدمت نوم د فایل نوم دی چې د توسیع پرته؛ د ښودلو نوم د فولډر نوم دی، مګر که دا دمخه شتون ولري، تار "د هغې سره ضمیمه کیږيRevision 1" ( شمیره تر هغه وخته زیاتیږي چې یو غیر استعمال شوی نوم وموندل شي). آپریټرانو ډاډ ترلاسه کړ چې د خدماتو له لارې دوام قوي و - د ناکامۍ په صورت کې، خدمت باید د 1 ثانیې وروسته بیا پیل شي. بیا ارزښت WOW64 د نوي خدمت راجسټری کیلي 4 ته ټاکل شوې ، دا په ګوته کوي چې دا د 32-bit خدمت دی.

ټاکل شوې دنده د څو COM انٹرفیسونو له لارې رامینځته کیږي: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. په لازمي ډول ، مالویر یو پټ کار رامینځته کوي ، د اوسني کارونکي یا مدیر معلوماتو سره د حساب معلومات تنظیموي ، او بیا محرک ټاکي.

دا یو ورځنی کار دی چې د 24 ساعتونو مودې او د 10 دقیقو دوه اعدامونو ترمینځ وقفې سره ، پدې معنی چې دا به په دوامداره توګه پرمخ ځي.

ناوړه بټ

زموږ په مثال کې، د اجرا وړ فایل TCPSVCS.exe (AcroTranscoder.exe) مشروع سافټویر دی چې DLLs باروي چې د هغې سره بیا تنظیم شوي. په دې حالت کې، دا په زړه پورې ده Flash Video Extension.dll.

فعالیت یې DLLMain یوازې بل فنکشن ته زنګ وهي. ځینې ​​مبهم وړاندوینې شتون لري:

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 7. فجی وړاندوینه

د دې ګمراه کونکي چکونو وروسته، کوډ یوه برخه ترلاسه کوي .text دوتنه TCPSVCS.exe، خپل دفاع ته بدلوي PAGE_EXECUTE_READWRITE او د ډمي لارښوونو په اضافه کولو سره یې بیا لیکي:

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 8. د لارښوونو ترتیب

په پای کې د فعالیت پته ته FLVCore::Uninitialize(void)صادر شوی Flash Video Extension.dll, لارښوونې اضافه شوې CALL. دا پدې مانا ده چې وروسته له دې چې ناوړه DLL بار شي، کله چې د رن ټایم زنګ وهي WinMain в TCPSVCS.exe، د لارښوونې نښه به NOP ته اشاره وکړي، لامل کیږي FLVCore::Uninitialize(void)، بل پړاو.

فنکشن په ساده ډول یو میوټیک رامینځته کوي چې پیل کیږي {181C8480-A975-411C-AB0A-630DB8B0A221}د اوسني کارن نوم لخوا تعقیب شوی. دا بیا د ډمپ شوي *.db3 فایل لوستل کیږي، کوم چې د موقعیت خپلواک کوډ لري، او کاروي CreateThread د منځپانګې د اجرا کولو لپاره.

د *.db3 فایل منځپانګې هغه شیل کوډ دی چې د OceanLotus ګروپ معمولا کاروي. موږ بیا په بریالیتوب سره د ایمولیټر سکریپټ په کارولو سره د هغې تادیه پاکه کړه چې موږ خپره کړې په GitHub کې.

سکریپټ وروستی مرحله استخراجوي. دا برخه یو شاته دروازه ده، کوم چې موږ دمخه تحلیل کړی دی پخوانۍ OceanLotus مطالعه. دا د GUID لخوا ټاکل کیدی شي {A96B020F-0000-466F-A96D-A91BBF8EAC96} بائنری فایل. د مالویر ترتیب لاهم د PE سرچینې کې کوډ شوی دی. دا تقریبا ورته ترتیب لري، مګر د C&C سرورونه د پخوانیو څخه توپیر لري:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

د OceanLotus ټیم بیا د کشف څخه مخنیوي لپاره د مختلف تخنیکونو ترکیب ښیې. دوی د انفیکشن پروسې د "بدل شوي" ډیاګرام سره راستانه شوي. د تصادفي نومونو په غوره کولو او د تصادفي معلوماتو سره د اجرا کونکو ډکولو سره ، دوی د باور وړ IoCs شمیر کموي (د هشونو او فایل نومونو پراساس). سربیره پردې ، د دریمې ډلې DLL بار کولو کارولو څخه مننه ، برید کونکي یوازې د قانوني بائنری لرې کولو ته اړتیا لري AcroTranscoder.

د ځان استخراج آرشیف

د RTF فایلونو وروسته، ګروپ د عام اسنادو شبیانو سره د ځان استخراج (SFX) آرشیفونو ته لاړ ترڅو کاروونکي نور مغشوش کړي. ګواښ کتاب په دې اړه لیکلي (لینک په چینایي ژبه). په پیل کولو سره، د ځان استخراج RAR فایلونه غورځول کیږي او DLLs د .ocx توسیع سره اجرا کیږي، چې وروستی تادیه یې مخکې مستند شوې وه. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. د 2019 د جنوري له نیمایي راهیسې، OceanLotus دا تخنیک بیا کاروي، مګر د وخت په تیریدو سره ځینې ترتیبات بدلوي. په دې برخه کې به د تخنیک او بدلونونو په اړه خبرې وکړو.

د لالچ جوړول

سند THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) لومړی په 2018 کې وموندل شو. دا SFX فایل په هوښیارۍ سره رامینځته شوی - په تفصیل کې (نسخه معلومات) دا وايي چې دا د JPEG انځور دی. د SFX سکریپټ داسې ښکاري:

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 9. د SFX کمانډونه

مالویر بیا تنظیمیږي {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC)، همدارنګه یو انځور 2018 thich thong lac.jpg.

د کثافاتو عکس داسې ښکاري:

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
10 شکل. د کوډ انځور

تاسو شاید لیدلي وي چې په SFX سکریپټ کې لومړۍ دوه کرښې د OCX فایل دوه ځله زنګ وهي، مګر دا کومه تېروتنه نده.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

د OCX فایل کنټرول جریان د نورو OceanLotus اجزاو سره ورته دی - ډیری کمانډ ترتیبونه JZ/JNZ и PUSH/RET، د کثافاتو کوډ سره بدیل.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 11. مبهم کوډ

د جنک کوډ فلټر کولو وروسته، صادر کړئ DllRegisterServer، نومول شوی regsvr32.exe، ددې په تعقیب:

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 12. بنسټیز انسټالر کوډ

اساسا، په لومړي کال کې DllRegisterServer صادرات د راجستر ارزښت ټاکي HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model په DLL کې د کوډ شوي آفسیټ لپاره (0x10001DE0).

کله چې فنکشن دوهم ځل ویل کیږي، دا ورته ارزښت لوستل کیږي او په دې پته کې اجرا کوي. له دې ځایه سرچینه او په RAM کې ډیری کړنې لوستل کیږي او اجرا کیږي.

شیل کوډ ورته PE لوډر دی چې په تیرو OceanLotus کمپاینونو کې کارول شوی. په کارولو سره یې تقلید کیدی شي زموږ سکریپټ. په پای کې هغه بیا تنظیموي db293b825dcc419ba7dc2c49fa2757ee.dll، دا په حافظه کې باروي او اجرا کوي DllEntry.

DLL د خپلو سرچینو مینځپانګه استخراجوي ، ډیکریپټ کوي (AES-256-CBC) او ډیکوپریس (LZMA) کوي. سرچینه یو ځانګړی بڼه لري چې د ویجاړولو لپاره اسانه ده.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 13. د نصب کونکي ترتیب جوړښت (KaitaiStruct Visualizer)

ترتیب په واضح ډول مشخص شوی - د امتیاز کچې پورې اړه لري، بائنری ډاټا به لیکل کیږي %appdata%IntellogsBackgroundUploadTask.cpl او یا %windir%System32BackgroundUploadTask.cpl (يا SysWOW64 د 64-bit سیسټمونو لپاره).

نور دوام د نوم سره د دندې رامینځته کولو سره تضمین کیږي BackgroundUploadTask[junk].jobچیرته [junk] د بایټونو یوه سیټ استازیتوب کوي 0x9D и 0xA0.

د کاري غوښتنلیک نوم %windir%System32control.exe، او د پیرامیټر ارزښت د ډاونلوډ شوي بائنری فایل ته لاره ده. پټ کار هره ورځ پرمخ ځي.

په جوړښت کې، د CPL فایل د داخلي نوم سره DLL دی ac8e06de0a6c4483af9837d96504127e.dll، کوم چې یو فعالیت صادروي CPlApplet. دا فایل د هغې یوازینۍ سرچینې بې برخې کوي {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll، بیا دا DLL باروي او خپل یوازینی صادرات بولي DllEntry.

د شاته دروازې ترتیب کولو فایل

د شاته دروازې ترتیب کوډ شوی او په خپلو سرچینو کې ځای پرځای شوی. د تشکیلاتو فایل جوړښت د تیر سره ورته دی.

ESET: د OceanLotus سایبر ګروپ لپاره د شاته دروازې تحویلي سکیمونه
شکل 14. د شاته دروازې ترتیب جوړښت (KaitaiStruct Visualizer)

که څه هم جوړښت ورته دی، ډیری ساحې ارزښتونه د هغو څخه تازه شوي چې په کې ښودل شوي زموږ پخوانی راپور.

د بائنری صف لومړی عنصر یو DLL لري (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), د Tencent لخوا پیژندل شوی. مګر له هغه وخته چې د صادراتو نوم د بائنری څخه لیرې شوی و، هشونه سره سمون نه لري.

اضافي څیړنه

د نمونو راټولولو پرمهال، موږ ځینې ځانګړتیاوې ولیدلې. تشریح شوې نمونه یوازې د جولای 2018 په شاوخوا کې راڅرګنده شوه، او د دې په څیر نور د جنوري له نیمایي څخه د فبروري 2019 په پیل کې په دې وروستیو کې څرګند شوي. د SFX آرشیف د انفیکشن ویکتور په توګه کارول شوی و، د مشروع ډیکوی سند او ناوړه OSX فایل یې پریښود.

که څه هم OceanLotus جعلي ټایم سټمپونه کاروي، موږ ولیدل چې د SFX او OCX فایلونو ټایم سټیمپونه تل یو شان وي (0x57B0C36A (08/14/2016 @ 7:15pm UTC) او 0x498BE80F (02/06/2009 @ 7:34am UTC) په ترتیب سره). دا شاید په ګوته کړي چې لیکوالان یو ډول "ډیزاینر" لري چې ورته ټیمپلیټونه کاروي او په ساده ډول ځینې ځانګړتیاوې بدلوي.

د هغو اسنادو په منځ کې چې موږ د 2018 له پیل راهیسې مطالعه کړې، مختلف نومونه شتون لري چې برید کونکو ته د ګټو هیوادونو په ګوته کوي:

- د کمبوډیا میډیا نوي اړیکې معلومات (New).xls.exe
— 李建香 (个人简历).exe (د CV جعلي pdf سند)
— فیډبیک، ریلی په متحده ایالاتو کې د جولای له 28 څخه تر 29 پورې، 2018.exe

له هغه وخته چې شاته دروازه کشف شوه {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll او د څو څیړونکو لخوا د دې تحلیل خپرول، موږ د مالویر ترتیب ډاټا کې ځینې بدلونونه ولیدل.

لومړی، لیکوالانو د مرستندویه DLLs څخه نومونه لرې کول پیل کړل (DNSprov.dll او دوه نسخې HttpProv.dll). آپریټرانو بیا د دریم DLL بسته بندي بنده کړه (دوهم نسخه HttpProv.dll)، یوازې یو ځای پرځای کول غوره کول.

دوهم، د شاته د دروازې ترتیب کولو ډیری ساحې بدلې شوې، احتمال لري چې د کشف څخه ډډه وکړي ځکه چې ډیری IoCs شتون لري. د لیکوالانو لخوا تعدیل شوي مهم ساحې عبارت دي له:

  • د AppX راجسټری کیلي بدله شوې (IoCs وګورئ)
  • د mutex کوډ کولو تار ("def"، "abc"، "ghi")
  • د پورټ شمیره

په نهایت کې، ټول نوي تحلیل شوي نسخې نوي C&Cs لري چې د IoCs برخه کې لیست شوي.

موندنو

OceanLotus پراختیا ته دوام ورکوي. سایبر ګروپ د وسیلو او ډیکوز په پاکولو او پراخولو تمرکز کوي. لیکوالان د پام وړ اسنادو په کارولو سره ناوړه تادیات پټوي چې موضوع یې د قربانیانو سره تړاو لري. دوی نوي سکیمونه رامینځته کوي او په عامه توګه موجود وسیلې هم کاروي ، لکه د مساوات مدیر استحصال. سربیره پردې ، دوی د قربانیانو په ماشینونو کې د پاتې آثارو شمیر کمولو لپاره وسیلې ښه کوي ، په دې توګه د انټي ویروس سافټویر لخوا د کشف چانس کموي.

د جوړجاړي شاخصونه

د جوړجاړي شاخصونه او همدارنګه د MITER ATT&CK ځانګړتیاوې شتون لري د ژوند خوندیتوب په اړه и په GitHub کې.

سرچینه: www.habr.com

Add a comment